← Commit history
nat-vs-mirrored/README.md+2−2
@@ -1,8 +1,8 @@ # NAT vs mirrored networking -<video controls preload="metadata" width="1080" poster="nat-vs-mirrored/nat-vs-mirrored-poster.jpg" src="nat-vs-mirrored/nat-vs-mirrored.mp4" style="max-width:100%;height:auto"></video>+::adom-video{src="/adom/hydrogen/render/nat-vs-mirrored/nat-vs-mirrored.video.json"} -*Four minutes, narrated. Claude Code, Codex, Antigravity and Kimi Code each sign out and back in on mirrored networking, then again on NAT. An app dashboard runs on NAT, and you see the setup step that switches modes on its own. Recorded on a test PC running Hydrogen 1.0.701. The waiting is sped up (the corner shows how much), and email addresses are blurred. [Download the video](nat-vs-mirrored/nat-vs-mirrored.mp4).*+*Four minutes, narrated. Claude Code, Codex, Antigravity and Kimi Code each sign out and back in on mirrored networking, then again on NAT. An app dashboard runs on NAT, and you see the setup step that switches modes on its own. Recorded on a test PC running Hydrogen 1.0.701. The waiting is sped up (the corner shows how much), and email addresses are blurred. [Download the video](nat-vs-mirrored/nat-vs-mirrored.mp4) (captions: [VTT](nat-vs-mirrored/nat-vs-mirrored.vtt), [SRT](nat-vs-mirrored/nat-vs-mirrored.srt)).*  Hydrogen runs your Linux workspace in WSL on your own Windows PC. WSL can connect that workspace to Windows in two ways, and which one works depends on the PC. This page covers both modes, the install problem the difference caused, and how Hydrogen handles each mode now. 
nat-vs-mirrored/nat-vs-mirrored.chapters.jsonadded+34
@@ -0,0 +1,34 @@+[+ {+  "t": 0,+  "title": "Two ways WSL can network"+ },+ {+  "t": 24.8,+  "title": "Mirrored: all four AIs sign in"+ },+ {+  "t": 77.0,+  "title": "Why mirrored broke installs"+ },+ {+  "t": 102.2,+  "title": "Switching to NAT"+ },+ {+  "t": 112.2,+  "title": "Sign-ins on NAT"+ },+ {+  "t": 161.8,+  "title": "App dashboards on NAT"+ },+ {+  "t": 184.0,+  "title": "How install handles it"+ },+ {+  "t": 211.9,+  "title": "The balance"+ }+]\ No newline at end of file
nat-vs-mirrored/nat-vs-mirrored.srtadded+264
@@ -0,0 +1,264 @@+1+00:00:00,300 --> 00:00:06,003+Hydrogen runs your Linux workspace inside+WSL, on your own Windows PC.++2+00:00:06,269 --> 00:00:09,740+WSL can network that workspace in two+ways.++3+00:00:10,045 --> 00:00:14,802+Mirrored shares Windows' own network, so+localhost on Windows and localhost in++4+00:00:14,802 --> 00:00:16,327+Linux are the same place.++5+00:00:16,626 --> 00:00:20,346+NAT gives Linux its own small network,+tucked behind Windows.++6+00:00:20,678 --> 00:00:23,636+Here's how Hydrogen handles both, and why+it matters.++7+00:00:24,844 --> 00:00:27,704+We start in Settings, under Workspace+networking.++8+00:00:28,024 --> 00:00:30,285+This PC is on mirrored, the default.++9+00:00:31,484 --> 00:00:34,637+In Your AIs, we sign Claude out, and back+in.++10+00:00:34,911 --> 00:00:39,459+Its browser sign-in ends by calling a+localhost port inside the workspace.++11+00:00:39,758 --> 00:00:43,828+On mirrored, that's the same localhost as+Windows, so it just works.++12+00:00:45,036 --> 00:00:49,682+Codex works the same way, with its+callback on port 1455.++13+00:00:50,884 --> 00:00:55,807+Antigravity signs in with Google, then+hands the result back to the workspace.++14+00:01:06,754 --> 00:01:10,599+Kimi isn't in the image, so Hydrogen+installs it with one click.++15+00:01:10,892 --> 00:01:14,615+Kimi signs in with a device code, so+nothing has to call back at all.++16+00:01:14,893 --> 00:01:15,794+All four are signed in.++17+00:01:17,018 --> 00:01:18,793+So why not use mirrored everywhere?++18+00:01:19,089 --> 00:01:21,599+Because on some PCs, mirrored is broken.++19+00:01:21,890 --> 00:01:26,553+A security tool or a firewall policy stops+Windows from reaching the workspace.++20+00:01:26,862 --> 00:01:30,822+During install, that looked like the+editor never loading, or the workspace++21+00:01:30,822 --> 00:01:32,036+image failing to build.++22+00:01:32,337 --> 00:01:36,224+Setup stopped right there, and people gave+up before they ever used Hydrogen.++23+00:01:36,590 --> 00:01:40,444+Two of them reported it on our wiki, and+that's how we traced it to mirrored++24+00:01:40,444 --> 00:01:41,002+networking.++25+00:01:42,234 --> 00:01:43,497+NAT is the way around it.++26+00:01:43,879 --> 00:01:45,959+Here we switch to NAT in Settings.++27+00:01:46,264 --> 00:01:50,383+WSL restarts, and the editor reconnects on+its own.++28+00:01:52,204 --> 00:01:57,755+Hydrogen used to warn, on every NAT+workspace, that AI sign-ins couldn't work.++29+00:01:58,051 --> 00:02:03,310+That was wrong, because WSL forwards+Windows' localhost into the workspace.++30+00:02:03,624 --> 00:02:08,129+So now Hydrogen tests the real trip, and+warns only when it actually fails.++31+00:02:08,445 --> 00:02:11,920+Here, no warning, and every AI is still+signed in.++32+00:02:13,100 --> 00:02:14,905+Claude signs in on NAT.++33+00:02:15,174 --> 00:02:19,256+Before you even click, Hydrogen has+checked that Claude's callback port is++34+00:02:19,256 --> 00:02:23,339+reachable from Windows, so the sign-in+finishes exactly the way it does on++35+00:02:23,339 --> 00:02:23,835+mirrored.++36+00:02:25,044 --> 00:02:29,170+Codex, Antigravity, and Kimi sign in on+NAT too.++37+00:02:29,450 --> 00:02:31,140+Same buttons, same result.++38+00:02:41,774 --> 00:02:47,075+App dashboards work in both modes, because+Hydrogen opens them at the same localhost++39+00:02:47,075 --> 00:02:48,274+address either way.++40+00:02:48,552 --> 00:02:53,700+Here's Parts Search, served from inside+the workspace, pricing a part across three++41+00:02:53,700 --> 00:02:55,019+distributors, on NAT.++42+00:02:55,283 --> 00:02:59,758+And if a Windows program already owns an+app's port, the tab now says which++43+00:02:59,758 --> 00:03:02,800+program, instead of quietly showing the+wrong page.++44+00:03:03,990 --> 00:03:07,514+During install, setup now handles all of+this for you.++45+00:03:07,787 --> 00:03:11,334+Step 6 signs you in, and checks that the+editor really loaded.++46+00:03:11,630 --> 00:03:15,587+If it won't load on mirrored, or Windows+can't reach the workspace, setup switches++47+00:03:15,587 --> 00:03:19,304+this PC to NAT once, remembers your+original setting, and carries on, instead++48+00:03:19,304 --> 00:03:21,041+of stopping with a misleading error.++49+00:03:21,299 --> 00:03:23,372+It never loops.++50+00:03:23,667 --> 00:03:24,547+A second failure stops, and says why.++51+00:03:24,896 --> 00:03:30,718+That's in Hydrogen 1.0.701, public today.++52+00:03:31,894 --> 00:03:33,094+So that's the balance.++53+00:03:33,397 --> 00:03:37,295+Mirrored by default, because it's the+simplest, and everything connects++54+00:03:37,295 --> 00:03:37,789+directly.++55+00:03:38,059 --> 00:03:39,130+NAT automatically, only on the PCs where+mirrored is broken.++56+00:03:39,398 --> 00:03:41,662+And a one-click switch in Settings, either+way.++57+00:03:41,957 --> 00:03:48,024+We switch back to mirrored, and all four+AIs are still signed in.
nat-vs-mirrored/nat-vs-mirrored.video.jsonadded+40
@@ -0,0 +1,40 @@+{+ "video": "/adom/hydrogen/render/nat-vs-mirrored/nat-vs-mirrored.mp4",+ "title": "NAT vs mirrored networking",+ "poster": "/adom/hydrogen/render/nat-vs-mirrored/nat-vs-mirrored-poster.jpg",+ "chapters": [+  {+   "t": 0,+   "title": "Two ways WSL can network"+  },+  {+   "t": 24.8,+   "title": "Mirrored: all four AIs sign in"+  },+  {+   "t": 77.0,+   "title": "Why mirrored broke installs"+  },+  {+   "t": 102.2,+   "title": "Switching to NAT"+  },+  {+   "t": 112.2,+   "title": "Sign-ins on NAT"+  },+  {+   "t": 161.8,+   "title": "App dashboards on NAT"+  },+  {+   "t": 184.0,+   "title": "How install handles it"+  },+  {+   "t": 211.9,+   "title": "The balance"+  }+ ],+ "captions": "WEBVTT\n\n00:00:00.300 --> 00:00:06.003\nHydrogen runs your Linux workspace inside\nWSL, on your own Windows PC.\n\n00:00:06.269 --> 00:00:09.740\nWSL can network that workspace in two\nways.\n\n00:00:10.045 --> 00:00:14.802\nMirrored shares Windows' own network, so\nlocalhost on Windows and localhost in\n\n00:00:14.802 --> 00:00:16.327\nLinux are the same place.\n\n00:00:16.626 --> 00:00:20.346\nNAT gives Linux its own small network,\ntucked behind Windows.\n\n00:00:20.678 --> 00:00:23.636\nHere's how Hydrogen handles both, and why\nit matters.\n\n00:00:24.844 --> 00:00:27.704\nWe start in Settings, under Workspace\nnetworking.\n\n00:00:28.024 --> 00:00:30.285\nThis PC is on mirrored, the default.\n\n00:00:31.484 --> 00:00:34.637\nIn Your AIs, we sign Claude out, and back\nin.\n\n00:00:34.911 --> 00:00:39.459\nIts browser sign-in ends by calling a\nlocalhost port inside the workspace.\n\n00:00:39.758 --> 00:00:43.828\nOn mirrored, that's the same localhost as\nWindows, so it just works.\n\n00:00:45.036 --> 00:00:49.682\nCodex works the same way, with its\ncallback on port 1455.\n\n00:00:50.884 --> 00:00:55.807\nAntigravity signs in with Google, then\nhands the result back to the workspace.\n\n00:01:06.754 --> 00:01:10.599\nKimi isn't in the image, so Hydrogen\ninstalls it with one click.\n\n00:01:10.892 --> 00:01:14.615\nKimi signs in with a device code, so\nnothing has to call back at all.\n\n00:01:14.893 --> 00:01:15.794\nAll four are signed in.\n\n00:01:17.018 --> 00:01:18.793\nSo why not use mirrored everywhere?\n\n00:01:19.089 --> 00:01:21.599\nBecause on some PCs, mirrored is broken.\n\n00:01:21.890 --> 00:01:26.553\nA security tool or a firewall policy stops\nWindows from reaching the workspace.\n\n00:01:26.862 --> 00:01:30.822\nDuring install, that looked like the\neditor never loading, or the workspace\n\n00:01:30.822 --> 00:01:32.036\nimage failing to build.\n\n00:01:32.337 --> 00:01:36.224\nSetup stopped right there, and people gave\nup before they ever used Hydrogen.\n\n00:01:36.590 --> 00:01:40.444\nTwo of them reported it on our wiki, and\nthat's how we traced it to mirrored\n\n00:01:40.444 --> 00:01:41.002\nnetworking.\n\n00:01:42.234 --> 00:01:43.497\nNAT is the way around it.\n\n00:01:43.879 --> 00:01:45.959\nHere we switch to NAT in Settings.\n\n00:01:46.264 --> 00:01:50.383\nWSL restarts, and the editor reconnects on\nits own.\n\n00:01:52.204 --> 00:01:57.755\nHydrogen used to warn, on every NAT\nworkspace, that AI sign-ins couldn't work.\n\n00:01:58.051 --> 00:02:03.310\nThat was wrong, because WSL forwards\nWindows' localhost into the workspace.\n\n00:02:03.624 --> 00:02:08.129\nSo now Hydrogen tests the real trip, and\nwarns only when it actually fails.\n\n00:02:08.445 --> 00:02:11.920\nHere, no warning, and every AI is still\nsigned in.\n\n00:02:13.100 --> 00:02:14.905\nClaude signs in on NAT.\n\n00:02:15.174 --> 00:02:19.256\nBefore you even click, Hydrogen has\nchecked that Claude's callback port is\n\n00:02:19.256 --> 00:02:23.339\nreachable from Windows, so the sign-in\nfinishes exactly the way it does on\n\n00:02:23.339 --> 00:02:23.835\nmirrored.\n\n00:02:25.044 --> 00:02:29.170\nCodex, Antigravity, and Kimi sign in on\nNAT too.\n\n00:02:29.450 --> 00:02:31.140\nSame buttons, same result.\n\n00:02:41.774 --> 00:02:47.075\nApp dashboards work in both modes, because\nHydrogen opens them at the same localhost\n\n00:02:47.075 --> 00:02:48.274\naddress either way.\n\n00:02:48.552 --> 00:02:53.700\nHere's Parts Search, served from inside\nthe workspace, pricing a part across three\n\n00:02:53.700 --> 00:02:55.019\ndistributors, on NAT.\n\n00:02:55.283 --> 00:02:59.758\nAnd if a Windows program already owns an\napp's port, the tab now says which\n\n00:02:59.758 --> 00:03:02.800\nprogram, instead of quietly showing the\nwrong page.\n\n00:03:03.990 --> 00:03:07.514\nDuring install, setup now handles all of\nthis for you.\n\n00:03:07.787 --> 00:03:11.334\nStep 6 signs you in, and checks that the\neditor really loaded.\n\n00:03:11.630 --> 00:03:15.587\nIf it won't load on mirrored, or Windows\ncan't reach the workspace, setup switches\n\n00:03:15.587 --> 00:03:19.304\nthis PC to NAT once, remembers your\noriginal setting, and carries on, instead\n\n00:03:19.304 --> 00:03:21.041\nof stopping with a misleading error.\n\n00:03:21.299 --> 00:03:23.372\nIt never loops.\n\n00:03:23.667 --> 00:03:24.547\nA second failure stops, and says why.\n\n00:03:24.896 --> 00:03:30.718\nThat's in Hydrogen 1.0.701, public today.\n\n00:03:31.894 --> 00:03:33.094\nSo that's the balance.\n\n00:03:33.397 --> 00:03:37.295\nMirrored by default, because it's the\nsimplest, and everything connects\n\n00:03:37.295 --> 00:03:37.789\ndirectly.\n\n00:03:38.059 --> 00:03:39.130\nNAT automatically, only on the PCs where\nmirrored is broken.\n\n00:03:39.398 --> 00:03:41.662\nAnd a one-click switch in Settings, either\nway.\n\n00:03:41.957 --> 00:03:48.024\nWe switch back to mirrored, and all four\nAIs are still signed in.\n"+}\ No newline at end of file
nat-vs-mirrored/nat-vs-mirrored.vttadded+209
@@ -0,0 +1,209 @@+WEBVTT++00:00:00.300 --> 00:00:06.003+Hydrogen runs your Linux workspace inside+WSL, on your own Windows PC.++00:00:06.269 --> 00:00:09.740+WSL can network that workspace in two+ways.++00:00:10.045 --> 00:00:14.802+Mirrored shares Windows' own network, so+localhost on Windows and localhost in++00:00:14.802 --> 00:00:16.327+Linux are the same place.++00:00:16.626 --> 00:00:20.346+NAT gives Linux its own small network,+tucked behind Windows.++00:00:20.678 --> 00:00:23.636+Here's how Hydrogen handles both, and why+it matters.++00:00:24.844 --> 00:00:27.704+We start in Settings, under Workspace+networking.++00:00:28.024 --> 00:00:30.285+This PC is on mirrored, the default.++00:00:31.484 --> 00:00:34.637+In Your AIs, we sign Claude out, and back+in.++00:00:34.911 --> 00:00:39.459+Its browser sign-in ends by calling a+localhost port inside the workspace.++00:00:39.758 --> 00:00:43.828+On mirrored, that's the same localhost as+Windows, so it just works.++00:00:45.036 --> 00:00:49.682+Codex works the same way, with its+callback on port 1455.++00:00:50.884 --> 00:00:55.807+Antigravity signs in with Google, then+hands the result back to the workspace.++00:01:06.754 --> 00:01:10.599+Kimi isn't in the image, so Hydrogen+installs it with one click.++00:01:10.892 --> 00:01:14.615+Kimi signs in with a device code, so+nothing has to call back at all.++00:01:14.893 --> 00:01:15.794+All four are signed in.++00:01:17.018 --> 00:01:18.793+So why not use mirrored everywhere?++00:01:19.089 --> 00:01:21.599+Because on some PCs, mirrored is broken.++00:01:21.890 --> 00:01:26.553+A security tool or a firewall policy stops+Windows from reaching the workspace.++00:01:26.862 --> 00:01:30.822+During install, that looked like the+editor never loading, or the workspace++00:01:30.822 --> 00:01:32.036+image failing to build.++00:01:32.337 --> 00:01:36.224+Setup stopped right there, and people gave+up before they ever used Hydrogen.++00:01:36.590 --> 00:01:40.444+Two of them reported it on our wiki, and+that's how we traced it to mirrored++00:01:40.444 --> 00:01:41.002+networking.++00:01:42.234 --> 00:01:43.497+NAT is the way around it.++00:01:43.879 --> 00:01:45.959+Here we switch to NAT in Settings.++00:01:46.264 --> 00:01:50.383+WSL restarts, and the editor reconnects on+its own.++00:01:52.204 --> 00:01:57.755+Hydrogen used to warn, on every NAT+workspace, that AI sign-ins couldn't work.++00:01:58.051 --> 00:02:03.310+That was wrong, because WSL forwards+Windows' localhost into the workspace.++00:02:03.624 --> 00:02:08.129+So now Hydrogen tests the real trip, and+warns only when it actually fails.++00:02:08.445 --> 00:02:11.920+Here, no warning, and every AI is still+signed in.++00:02:13.100 --> 00:02:14.905+Claude signs in on NAT.++00:02:15.174 --> 00:02:19.256+Before you even click, Hydrogen has+checked that Claude's callback port is++00:02:19.256 --> 00:02:23.339+reachable from Windows, so the sign-in+finishes exactly the way it does on++00:02:23.339 --> 00:02:23.835+mirrored.++00:02:25.044 --> 00:02:29.170+Codex, Antigravity, and Kimi sign in on+NAT too.++00:02:29.450 --> 00:02:31.140+Same buttons, same result.++00:02:41.774 --> 00:02:47.075+App dashboards work in both modes, because+Hydrogen opens them at the same localhost++00:02:47.075 --> 00:02:48.274+address either way.++00:02:48.552 --> 00:02:53.700+Here's Parts Search, served from inside+the workspace, pricing a part across three++00:02:53.700 --> 00:02:55.019+distributors, on NAT.++00:02:55.283 --> 00:02:59.758+And if a Windows program already owns an+app's port, the tab now says which++00:02:59.758 --> 00:03:02.800+program, instead of quietly showing the+wrong page.++00:03:03.990 --> 00:03:07.514+During install, setup now handles all of+this for you.++00:03:07.787 --> 00:03:11.334+Step 6 signs you in, and checks that the+editor really loaded.++00:03:11.630 --> 00:03:15.587+If it won't load on mirrored, or Windows+can't reach the workspace, setup switches++00:03:15.587 --> 00:03:19.304+this PC to NAT once, remembers your+original setting, and carries on, instead++00:03:19.304 --> 00:03:21.041+of stopping with a misleading error.++00:03:21.299 --> 00:03:23.372+It never loops.++00:03:23.667 --> 00:03:24.547+A second failure stops, and says why.++00:03:24.896 --> 00:03:30.718+That's in Hydrogen 1.0.701, public today.++00:03:31.894 --> 00:03:33.094+So that's the balance.++00:03:33.397 --> 00:03:37.295+Mirrored by default, because it's the+simplest, and everything connects++00:03:37.295 --> 00:03:37.789+directly.++00:03:38.059 --> 00:03:39.130+NAT automatically, only on the PCs where+mirrored is broken.++00:03:39.398 --> 00:03:41.662+And a one-click switch in Settings, either+way.++00:03:41.957 --> 00:03:48.024+We switch back to mirrored, and all four+AIs are still signed in.
project-workspaces/README.md+1−1
@@ -2,7 +2,7 @@  A project can ship its Hydrogen layout. The file is `hydrogen/workspace.json` in the project's page repo: which panes, which tabs, which apps, arranged how. The platform side is shared with Hydrogen Cloud (the wiki validates the file, adom-cli applies and exports it, the cloud lists it). This page is about the Hydrogen Desktop side: the **Project workspaces** menu next to the Adom logo, what Apply, Unload and Save do on your machine, and how an AI drives all of it without a mouse. -<video controls preload="metadata" width="1080" poster="project-workspaces/project-workspaces-poster.png" src="project-workspaces/project-workspaces.mp4" style="max-width:100%;height:auto"></video>+::adom-video{video="/adom/hydrogen/render/project-workspaces/project-workspaces.mp4" title="Project workspaces in 72 seconds" poster="/adom/hydrogen/render/project-workspaces/project-workspaces-poster.png"}  *The whole loop in 72 seconds: build a layout, save it as a project workspace, see the file, push it to the project's wiki page, then load it back three ways: from the menu, from an AI through the control API, and from a hydrogen:// link. Every step was driven through Hydrogen's API on a test box. [Download the video](project-workspaces/project-workspaces.mp4).* 
setup-steps-pitfalls/README.md+14−14
@@ -29,59 +29,59 @@ Each video was recorded on a test PC with the build named in its caption, sped u | Sign-in window closed, or its link expired | Hydrogen brings the sign-in back, and after expiry opens a fresh link (1.0.565) | [video](signin-window.mp4) | `scripts/test-scenarios/signin-window.sh` | | Workspace deleted after setup finished | Before 1.0.565 the editor waited forever; now Hydrogen notices at launch and rebuilds it | [video](workspace-gone.mp4) | `scripts/test-scenarios/state-recovery.sh gone` | -<video controls preload="metadata" width="1080" src="setup-steps-pitfalls/wsl2-from-scratch.mp4" style="max-width:100%;height:auto"></video>+::adom-video{video="/adom/hydrogen/render/setup-steps-pitfalls/wsl2-from-scratch.mp4" title="WSL2 from scratch"}  *WSL2 from scratch, recorded on 1.0.554 on a clean Windows 11 PC with no WSL2. About 10 minutes of setup work: the installer, turning on WSL2 (about 30 seconds), one restart that waits for the user's click, then Hydrogen resumes by itself, builds the workspace and asks for the Adom sign-in. The frames where the tester typed their account details are replaced by a card.* -<video controls preload="metadata" width="1080" src="setup-steps-pitfalls/no-virtualization.mp4" style="max-width:100%;height:auto"></video>+::adom-video{video="/adom/hydrogen/render/setup-steps-pitfalls/no-virtualization.mp4" title="A PC that cannot run WSL2"}  *A PC that cannot run WSL2 (an Azure VM with the Windows hypervisor turned off), on 1.0.554. Captions say what 1.0.555 changes.* -<video controls preload="metadata" width="1080" src="setup-steps-pitfalls/disk-almost-full.mp4" style="max-width:100%;height:auto"></video>+::adom-video{video="/adom/hydrogen/render/setup-steps-pitfalls/disk-almost-full.mp4" title="Not enough disk space"}  *Not enough disk space (0.8 GB free on C:), on 1.0.554. Fixed in 1.0.556.* -<video controls preload="metadata" width="1080" src="setup-steps-pitfalls/windows10.mp4" style="max-width:100%;height:auto"></video>+::adom-video{video="/adom/hydrogen/render/setup-steps-pitfalls/windows10.mp4" title="Windows 10 22H2"}  *Windows 10 22H2: the installer stops before installing anything.* -<video controls preload="metadata" width="1080" src="setup-steps-pitfalls/mirrored-networking.mp4" style="max-width:100%;height:auto"></video>+::adom-video{video="/adom/hydrogen/render/setup-steps-pitfalls/mirrored-networking.mp4" title="Mirrored networking (1.0.552)"}  *Mirrored networking, recorded on 1.0.552: first install turns it on with no question, the original setting is saved for uninstall, a user who sets NAT is respected, and the Your AIs dialog warns about AI sign-in. (On 1.0.554 and later the setup card no longer shows a warning at all; the Your AIs dialog is the only place it appears.)* -<video controls preload="metadata" width="1080" src="setup-steps-pitfalls/network-blocked.mp4" style="max-width:100%;height:auto"></video>+::adom-video{video="/adom/hydrogen/render/setup-steps-pitfalls/network-blocked.mp4" title="Network blocked"}  *WSL's firewall blocks the workspace, recorded on 1.0.554: Hydrogen finds outbound and loopback blocked, allows exactly those two with one admin prompt (this test PC has UAC off, so the prompt does not show), and setup finishes on its own.* -<video controls preload="metadata" width="1080" src="setup-steps-pitfalls/dead-session.mp4" style="max-width:100%;height:auto"></video>+::adom-video{video="/adom/hydrogen/render/setup-steps-pitfalls/dead-session.mp4" title="Dead session"}  *Expired Adom sign-in, recorded on 1.0.559: Hydrogen clears the dead session and opens a fresh sign-in; setup carries on.* -<video controls preload="metadata" width="1080" src="setup-steps-pitfalls/other-distro-running.mp4" style="max-width:100%;height:auto"></video>+::adom-video{video="/adom/hydrogen/render/setup-steps-pitfalls/other-distro-running.mp4" title="Another Linux distribution running"}  *Another WSL distro running, 1.0.556 then 1.0.560: Hydrogen never stops it on its own; it explains the one restart it needs, lets you choose, and the button finishes setup (pressed and verified on 1.0.560).* -<video controls preload="metadata" width="1080" src="setup-steps-pitfalls/image-download-blocked.mp4" style="max-width:100%;height:auto"></video>+::adom-video{video="/adom/hydrogen/render/setup-steps-pitfalls/image-download-blocked.mp4" title="Image download blocked"}  *Workspace download blocked, 1.0.556 then 1.0.559: from the wrong advice to a plain explanation.* -<video controls preload="metadata" width="1080" src="setup-steps-pitfalls/port-7380-taken.mp4" style="max-width:100%;height:auto"></video>+::adom-video{video="/adom/hydrogen/render/setup-steps-pitfalls/port-7380-taken.mp4" title="Another app holding the editor's port"}  *Another app on the editor's port, 1.0.556, 1.0.559 and 1.0.560: Hydrogen now asks Windows who is listening and names the app.* -<video controls preload="metadata" width="1080" src="setup-steps-pitfalls/download-corrupt.mp4" style="max-width:100%;height:auto"></video>+::adom-video{video="/adom/hydrogen/render/setup-steps-pitfalls/download-corrupt.mp4" title="Damaged workspace image"}  *A damaged workspace image, recorded on 1.0.562: the fingerprint check catches it and setup quietly downloads a fresh copy.* -<video controls preload="metadata" width="1080" src="setup-steps-pitfalls/download-resume.mp4" style="max-width:100%;height:auto"></video>+::adom-video{video="/adom/hydrogen/render/setup-steps-pitfalls/download-resume.mp4" title="Download cut short"}  *A download cut short, recorded on 1.0.562: setup resumes from 250 MB instead of starting over.* -<video controls preload="metadata" width="1080" src="setup-steps-pitfalls/signin-window.mp4" style="max-width:100%;height:auto"></video>+::adom-video{video="/adom/hydrogen/render/setup-steps-pitfalls/signin-window.mp4" title="Sign-in window closed or expired"}  *The Adom sign-in closed and then expired, recorded on 1.0.565: Hydrogen brings it back, and after the link expires it opens a fresh one.* -<video controls preload="metadata" width="1080" src="setup-steps-pitfalls/workspace-gone.mp4" style="max-width:100%;height:auto"></video>+::adom-video{video="/adom/hydrogen/render/setup-steps-pitfalls/workspace-gone.mp4" title="Workspace deleted after setup"}  *The workspace deleted after setup finished, 1.0.564 then 1.0.565: from stuck forever to a rebuild in about a minute and a half.*