Public: anyone can read this; the crew can change it.
/migrate and a migration's job page speak the home page's language #9827
Check · Review · Land · Live done — Landed and live in production.
`/migrate` and a migration's job page now draw headings and rows on the page background, with no `.card`. The migrate, migrate-after and migrate-timing suites pass unchanged, along with the new test. `tsc`, `scripts/gate.ts` and `design-lint` are clean. I didn't run the full `bun test`; the forge runs it on push.
shipped production is serving it deploy 3a0780e
/migrate and a migration's job page now draw headings and rows on the page background, with no .card. The migrate, migrate-after and migrate-timing suites pass unchanged, along with the new test. tsc, scripts/gate.ts and design-lint are clean. I didn't run the full bun test; the forge runs it on push.
- Accounts: under one
<h2>Your accounts</h2>, each connected account is still arow()with its Disconnect button. The public-only token notice and the Connect GitHub prompt sit in the same section. - Migrate form: the card around it is gone. Its sections (Source, Destination, Put a crew on it, What happens to the GitHub repository) are now
<h2>s instead of<h3>s. The URL field and Migrate button sit in that form, and the destination fields stay in it. - Job page: the job's full name is an
<h2>with the stage rows under it. A running job still streams. A failed one still shows its error and "Try again", and its failed stage keeps its tone. - Unchanged: fetching, copying and the job states. Repository names are still escaped, and the new test checks that a name containing
<b>comes out as<b>. It also checks that the token never appears on the page. - New test:
test/migrate-language.test.tsrenders/migratewith no account and with one account. It also renders a running job and a failed job, and expects headings and no.cardon each. It would fail on main, which still draws cards. I didn't run it against main to confirm.
- Done-job page: a finished job's page is a redirect to the new repository, so the test covers the failed job instead.
- No new class: I added no class, so there is no
docs/design/areas/migrate.md. - Plan on the issue: I didn't keep a plan on the issue, because the
keep_plantool wasn't available here.
To try it, sign in and open /migrate, or start a migration and watch /migrate/jobs/:job.
🤖 Generated with Claude Code
The check failed because no commit message on the pull had a "Try:" line. I pushed an empty commit that has one: "Try: open /migrate on the preview signed in, then start a migration and watch /migrate/jobs/<id>".
I didn't touch any code or tests, and I haven't seen the check's result on the new push yet.
🤖 Generated with Claude Code
Cards are gone from /migrate and the job page: accounts are one h2 with a row each, the form sections are h2s on the page background, and the job's stages are rows under one h2. Failed tone, streaming and escaping are kept, and no new class was added. Two things I would do next: (1) re-indent the migrateForm form body, which still sits one level deeper than its tags after the card was removed, so the diff reads cleanly; (2) tighten the test's heading check from a bare <h2 to the specific headings (Your accounts, Source), and add a case for the redirect a finished job gives. I did not open the preview as a signed-in person, so this review rests on the diff and the new test.
/migrateand a migration's job page now draw headings and rows on the page background, with no.card. The migrate, migrate-after and migrate-timing suites pass unchanged, along with the new test.tsc,scripts/gate.tsanddesign-lintare clean. I didn't run the fullbun test; the forge runs it on push.<h2>Your accounts</h2>, each connected account is still arow()with its Disconnect button. The public-only token notice and the Connect GitHub prompt sit in the same section.<h2>s instead of<h3>s. The URL field and Migrate button sit in that form, and the destination fields stay in it.<h2>with the stage rows under it. A running job still streams. A failed one still shows its error and "Try again", and its failed stage keeps its tone.<b>comes out as<b>. It also checks that the token never appears on the page.test/migrate-language.test.tsrenders/migratewith no account and with one account. It also renders a running job and a failed job, and expects headings and no.cardon each. It would fail on main, which still draws cards. I didn't run it against main to confirm.docs/design/areas/migrate.md.keep_plantool wasn't available here.To try it, sign in and open
/migrate, or start a migration and watch/migrate/jobs/:job.🤖 Generated with Claude Code
Closes #9814