Jobs page leftovers: raw id in running card, button alignment, double heading, failed first #388

Closed
opened 2026-09-29 03:04:35 +00:00 by kayg · 16 comments
Owner

Jobs page leftovers (Claude review of #315 part 2)

  1. The running-job card still prints the raw kind id ("system.search.rebuild") under its friendly name; show it only in Details.
  2. "Queue details" in the running card is indented past the card's text column; align it with the card content (shared button in the card footer).
  3. "Jobs" page title followed by a "Job queues" section header repeats the same idea (same rule as #369: a single-section page drops its section header).
  4. The failed row sits below the fold at every width; sort failed queues first within their group.
## Jobs page leftovers (Claude review of #315 part 2) 1. The running-job card still prints the raw kind id ("system.search.rebuild") under its friendly name; show it only in Details. 2. "Queue details" in the running card is indented past the card's text column; align it with the card content (shared button in the card footer). 3. "Jobs" page title followed by a "Job queues" section header repeats the same idea (same rule as #369: a single-section page drops its section header). 4. The failed row sits below the fold at every width; sort failed queues first within their group.
Author
Owner

Starting #388 on job/jobs-leftovers, based on dev at 00015e652a153485d9e7adda1c5ee61bc17300db. The issue has no comments. I have traced the four findings to the existing Jobs row/detail components and the admin queue page; next I am implementing them and will verify the production UI at the required widths and themes.

Starting #388 on `job/jobs-leftovers`, based on `dev` at `00015e652a153485d9e7adda1c5ee61bc17300db`. The issue has no comments. I have traced the four findings to the existing Jobs row/detail components and the admin queue page; next I am implementing them and will verify the production UI at the required widths and themes.
Author
Owner

Finding and fix in progress for #388:

  • JobRow included job.kind in its metadata subtitle when it was rendered in the user's Jobs list. The row already has the friendly job.label; the detail view (JobDetails) also shows the kind. Rows now show the update time, and the raw kind stays in JobDetails.
  • JobDetails renders footer actions with the shared RowAction. Its label pill's leading inset placed “Queue details” beyond the card text edge. The shared detail-card footer now removes only that leading inset and retains the button hit area.
  • The admin Jobs page had one SettingsGroup titled “Job queues” under the page title “Jobs”. It now uses the existing singleton hideHeading behavior and keeps the group's accessible name and deep link.
  • queuesForArea preserved API order, so a healthy queue could precede a queue with failures. The page now stably puts queues with failures first within each area.

Focused verification passed: Test Files 2 passed (2) and Tests 5 passed (5). No API or server behavior changed.

Finding and fix in progress for #388: - `JobRow` included `job.kind` in its metadata subtitle when it was rendered in the user's Jobs list. The row already has the friendly `job.label`; the detail view (`JobDetails`) also shows the kind. Rows now show the update time, and the raw kind stays in `JobDetails`. - `JobDetails` renders footer actions with the shared `RowAction`. Its label pill's leading inset placed “Queue details” beyond the card text edge. The shared detail-card footer now removes only that leading inset and retains the button hit area. - The admin Jobs page had one `SettingsGroup` titled “Job queues” under the page title “Jobs”. It now uses the existing singleton `hideHeading` behavior and keeps the group's accessible name and deep link. - `queuesForArea` preserved API order, so a healthy queue could precede a queue with failures. The page now stably puts queues with failures first within each area. Focused verification passed: `Test Files 2 passed (2)` and `Tests 5 passed (5)`. No API or server behavior changed.
Author
Owner

Owner (2026-09-29): rename My jobs → Maintenance (User section) and the admin Jobs section → Maintenance too. Update sidebar labels, page titles, deep-link slugs (keep old /settings/jobs and /settings/admin/jobs links redirecting), e2e, docs and CONTEXT.md vocabulary if it names them.

Owner (2026-09-29): rename **My jobs** → **Maintenance** (User section) and the admin **Jobs** section → **Maintenance** too. Update sidebar labels, page titles, deep-link slugs (keep old /settings/jobs and /settings/admin/jobs links redirecting), e2e, docs and CONTEXT.md vocabulary if it names them.
Author
Owner

Starting the owner follow-up on job/jobs-leftovers, based on dev at 00015e652a. The earlier four #388 UI fixes are committed at a4a6093c; this slice renames both Settings sections to Maintenance and preserves old deep links with redirects.

Starting the owner follow-up on job/jobs-leftovers, based on dev at 00015e652a153485d9e7adda1c5ee61bc17300db. The earlier four #388 UI fixes are committed at a4a6093c; this slice renames both Settings sections to Maintenance and preserves old deep links with redirects.
Author
Owner

Finding: the two Settings labels also define section IDs and job links (, ), so a label-only change would have left deep links on /settings/jobs. Both canonical routes and generated links now use Maintenance; old section/group paths and the former /settings#jobs hash resolve to the new route. Focused settings tests pass: Test Files 1 passed (1); Tests 8 passed (8).

Finding: the two Settings labels also define section IDs and job links (, ), so a label-only change would have left deep links on /settings/jobs. Both canonical routes and generated links now use Maintenance; old section/group paths and the former /settings#jobs hash resolve to the new route. Focused settings tests pass: Test Files 1 passed (1); Tests 8 passed (8).
Author
Owner

Correction to the previous finding: the repository evidence is apps/web/src/routes/settings/sections.ts and apps/web/src/lib/jobs/api.ts. These files define the route IDs and generated job deep links. The old page and group URLs now canonicalize to the Maintenance routes, and the existing /settings#jobs hash resolves to User Maintenance. Focused settings tests pass: Test Files 1 passed (1); Tests 8 passed (8).

Correction to the previous finding: the repository evidence is apps/web/src/routes/settings/sections.ts and apps/web/src/lib/jobs/api.ts. These files define the route IDs and generated job deep links. The old page and group URLs now canonicalize to the Maintenance routes, and the existing /settings#jobs hash resolves to User Maintenance. Focused settings tests pass: Test Files 1 passed (1); Tests 8 passed (8).
Author
Owner

Browser run finding: the existing broad deep-link E2E stopped in its earlier Task rename/move scenario, before it reached the Settings cases. POST /api/v1/files/move returned 404 with code not_found and message file not found. I am adding a focused Maintenance browser run; I have not changed that pre-existing expectation or flow.

Browser run finding: the existing broad deep-link E2E stopped in its earlier Task rename/move scenario, before it reached the Settings cases. POST /api/v1/files/move returned 404 with code not_found and message file not found. I am adding a focused Maintenance browser run; I have not changed that pre-existing expectation or flow.
Author
Owner

Focused Maintenance route verification is complete on job/jobs-leftovers at 73585831.

The real-server browser check passed five legacy paths, the /settings#jobs hash redirect, and preservation of the selected-job query. I attached production screenshots for both Maintenance sections at 390, 820 and 1440 px in light and dark themes:

Screenshots remain in artifacts/issue-388/ in the worktree. The broad deep-link run still encounters the existing /api/v1/files/move 404 in the task move scenario before it reaches Settings; that finding and its exact response are in the earlier issue comment.

Focused Maintenance route verification is complete on `job/jobs-leftovers` at `73585831`. The real-server browser check passed five legacy paths, the `/settings#jobs` hash redirect, and preservation of the selected-job query. I attached production screenshots for both Maintenance sections at 390, 820 and 1440 px in light and dark themes: - User, 390 px: [light](https://git.kayg.org/attachments/4440d313-4ce4-41f3-8a6c-ba75dc46aeb6), [dark](https://git.kayg.org/attachments/df13fd5e-0441-49d7-847c-b127b95d3c04) - User, 820 px: [light](https://git.kayg.org/attachments/e56d41b4-c4e8-42bd-bd1d-a49b9397aa9f), [dark](https://git.kayg.org/attachments/454eb87f-9e2b-48a7-9598-c58ef2724588) - User, 1440 px: [light](https://git.kayg.org/attachments/b61a7be2-1d2e-4860-996a-9e34b59b543c), [dark](https://git.kayg.org/attachments/40af4472-0f91-4597-80bf-697f0a8d8b2b) - Admin, 390 px: [light](https://git.kayg.org/attachments/9e766675-d575-45a9-96a5-e9b7967c9eb3), [dark](https://git.kayg.org/attachments/d34d6d7f-72d7-4880-b419-53e659e6abc5) - Admin, 820 px: [light](https://git.kayg.org/attachments/3f505712-d40b-49dc-b5f3-310e10d622f2), [dark](https://git.kayg.org/attachments/9a7f1211-6a39-4e4b-8d3b-a3c7c39c5cf3) - Admin, 1440 px: [light](https://git.kayg.org/attachments/f0d0307a-be4f-4059-98ce-cbb05a0a6fb5), [dark](https://git.kayg.org/attachments/7e4405b8-631f-44f0-b5e6-a74330d1bd79) Screenshots remain in `artifacts/issue-388/` in the worktree. The broad deep-link run still encounters the existing `/api/v1/files/move` 404 in the task move scenario before it reaches Settings; that finding and its exact response are in the earlier issue comment.
Author
Owner

Completed #388 on branch job/jobs-leftovers.

Built

Renamed the User “My jobs” and Admin “Jobs” sections to “Maintenance”. The canonical deep links now use /settings/maintenance and /settings/admin/maintenance; legacy paths and #jobs redirect, and a selected-job query is preserved. The existing Activity and Queues subviews remain under the new paths. Updated route and href tests, design documentation, and a focused real-server browser review.

All 12 production screenshots are attached to this issue and remain in artifacts/issue-388/.

Commits and files

Head: 73585831c5229c687f79524b2b0aa96819872d42

Feature commit: 36d7d38a. Required one-time dev merge: 14717c77. Focused browser review: 73585831.

Changed files: apps/web/src/routes/settings/sections.ts, sections.test.ts, settings/[...path]/+page.svelte, lib/jobs/api.ts, lib/jobs/api.test.ts, AdminSection.svelte, JobsGroup.svelte, MyJobsGroup.svelte, apps/web/e2e/maintenance-links.mjs, apps/web/e2e/deeplinks.mjs, apps/web/package.json, docs/DESIGN.md, and docs/research/voice-transcription.md. CONTEXT.md did not name these UI sections.

Gates

Commands passed. Captured output excerpts are verbatim:

cargo fmt --check
(no output; exit code 0)

cargo clippy --all-targets -- -D warnings
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 128m 31s

cargo test
    Finished `test` profile [unoptimized + debuginfo] target(s) in 65m 05s
test result: ok. 129 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 117.91s
test result: ok. 109 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 54.81s

bun run check
Text sizes use shared role tokens.
Loading svelte-check in workspace: /home/kayg/Developer/calternal-wt/jobs-leftovers/apps/web
Getting Svelte diagnostics...

svelte-check found 0 errors and 0 warnings

bun run test
 Test Files  124 passed (124)
      Tests  791 passed (791)
   Start at  12:07:57
   Duration  172.87s (transform 62%, import 14%, environment 11%, tests 7%, setup 5%)

cargo clean
     Removed 15987 files, 13.5GiB total

The full Rust test command exited 0. The focused browser run passed five legacy path checks plus the selected-job query check, and captured both sections at 390, 820 and 1440 px in light and dark themes. apps/web/build was removed; the screenshots remain on disk.

Known gap

The broad existing apps/web/e2e/deeplinks.mjs run stops in its earlier task move scenario before reaching Settings: /api/v1/files/move returns 404 not_found (“file not found”). I left that existing flow and expectation unchanged and recorded the evidence in the earlier issue comment. No API behavior changed, so no API adversarial round was required.

Decisions

The design doc did not specify the replacement slug. I used maintenance for both sections, kept activity and queues as their subview segments, and redirect the previous paths and #jobs while preserving query state. I did not change CONTEXT.md because it contains no UI section name to update.

Completed #388 on branch `job/jobs-leftovers`. ## Built Renamed the User “My jobs” and Admin “Jobs” sections to “Maintenance”. The canonical deep links now use `/settings/maintenance` and `/settings/admin/maintenance`; legacy paths and `#jobs` redirect, and a selected-job query is preserved. The existing Activity and Queues subviews remain under the new paths. Updated route and href tests, design documentation, and a focused real-server browser review. All 12 production screenshots are attached to this issue and remain in `artifacts/issue-388/`. ## Commits and files Head: `73585831c5229c687f79524b2b0aa96819872d42` Feature commit: `36d7d38a`. Required one-time `dev` merge: `14717c77`. Focused browser review: `73585831`. Changed files: `apps/web/src/routes/settings/sections.ts`, `sections.test.ts`, `settings/[...path]/+page.svelte`, `lib/jobs/api.ts`, `lib/jobs/api.test.ts`, `AdminSection.svelte`, `JobsGroup.svelte`, `MyJobsGroup.svelte`, `apps/web/e2e/maintenance-links.mjs`, `apps/web/e2e/deeplinks.mjs`, `apps/web/package.json`, `docs/DESIGN.md`, and `docs/research/voice-transcription.md`. `CONTEXT.md` did not name these UI sections. ## Gates Commands passed. Captured output excerpts are verbatim: ```text cargo fmt --check (no output; exit code 0) cargo clippy --all-targets -- -D warnings Finished `dev` profile [unoptimized + debuginfo] target(s) in 128m 31s cargo test Finished `test` profile [unoptimized + debuginfo] target(s) in 65m 05s test result: ok. 129 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 117.91s test result: ok. 109 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 54.81s bun run check Text sizes use shared role tokens. Loading svelte-check in workspace: /home/kayg/Developer/calternal-wt/jobs-leftovers/apps/web Getting Svelte diagnostics... svelte-check found 0 errors and 0 warnings bun run test Test Files 124 passed (124) Tests 791 passed (791) Start at 12:07:57 Duration 172.87s (transform 62%, import 14%, environment 11%, tests 7%, setup 5%) cargo clean Removed 15987 files, 13.5GiB total ``` The full Rust test command exited 0. The focused browser run passed five legacy path checks plus the selected-job query check, and captured both sections at 390, 820 and 1440 px in light and dark themes. `apps/web/build` was removed; the screenshots remain on disk. ## Known gap The broad existing `apps/web/e2e/deeplinks.mjs` run stops in its earlier task move scenario before reaching Settings: `/api/v1/files/move` returns 404 `not_found` (“file not found”). I left that existing flow and expectation unchanged and recorded the evidence in the earlier issue comment. No API behavior changed, so no API adversarial round was required. ## Decisions The design doc did not specify the replacement slug. I used `maintenance` for both sections, kept `activity` and `queues` as their subview segments, and redirect the previous paths and `#jobs` while preserving query state. I did not change `CONTEXT.md` because it contains no UI section name to update.
Author
Owner

Starting the #388 resume on branch job/jobs-leftovers. Base SHA: 6f56b6f612. Current branch head: 73585831c5. I am fetching and merging origin/dev, then I will port the Jobs leftovers and Maintenance redirects onto the shared Settings components.

Starting the #388 resume on branch job/jobs-leftovers. Base SHA: 6f56b6f612e3a269ede451f94db71ea6afe5ae9b. Current branch head: 73585831c5229c687f79524b2b0aa96819872d42. I am fetching and merging origin/dev, then I will port the Jobs leftovers and Maintenance redirects onto the shared Settings components.
Author
Owner

Resuming #388 at d362839cb620693bdb86b0609491426c33b20569. I fetched origin; its dev head (369ab6a2f9fc673e3564b94857fbecfeb04df404) is already included through the branch's 3b8fcd9b1 merge. The shared Settings block port and Maintenance redirects are present. I am running the requested web checks and capturing fresh user/admin production screenshots under artifacts/jobs-leftovers/.

Resuming #388 at `d362839cb620693bdb86b0609491426c33b20569`. I fetched `origin`; its `dev` head (`369ab6a2f9fc673e3564b94857fbecfeb04df404`) is already included through the branch's `3b8fcd9b1` merge. The shared Settings block port and Maintenance redirects are present. I am running the requested web checks and capturing fresh user/admin production screenshots under `artifacts/jobs-leftovers/`.
Author
Owner

Resuming #388 after the usage-limit interruption. Worktree is clean at d362839cb (branch job/jobs-leftovers); this branch already contains the #402 shared Settings card/row port in 3b8fcd9b1. I will fetch and merge origin/dev before final gates, then run the requested web checks/tests and production Settings → Maintenance screenshots at 390 and 1440 px in light and dark for User and Admin.

Resuming #388 after the usage-limit interruption. Worktree is clean at d362839cb (branch job/jobs-leftovers); this branch already contains the #402 shared Settings card/row port in 3b8fcd9b1. I will fetch and merge origin/dev before final gates, then run the requested web checks/tests and production Settings → Maintenance screenshots at 390 and 1440 px in light and dark for User and Admin.
Author
Owner

Resume checkpoint: merged current origin/dev (dfb5964a2f) into job/jobs-leftovers as 71b93b6bc5. Git reported no conflicts. JobsGroup.svelte and MyJobsGroup.svelte use the shared #402 SettingsCard, SettingsRow, AccountList and RowAction components; the Maintenance routes and old Jobs redirects remain in sections.ts/tests. Running the requested web checks and real-server production captures next.

Resume checkpoint: merged current origin/dev (dfb5964a2fcf13dc8b9a50a319eee09bc386f322) into job/jobs-leftovers as 71b93b6bc5150a34fd110dd5c1bdfd44f023bd7b. Git reported no conflicts. JobsGroup.svelte and MyJobsGroup.svelte use the shared #402 SettingsCard, SettingsRow, AccountList and RowAction components; the Maintenance routes and old Jobs redirects remain in sections.ts/tests. Running the requested web checks and real-server production captures next.
Author
Owner

Finished resume

Branch: job/jobs-leftovers

Merged current origin/dev (dfb5964a2fcf13dc8b9a50a319eee09bc386f322) as 71b93b6bc5150a34fd110dd5c1bdfd44f023bd7b. The merge was clean. The #388 Maintenance changes continue to use #402's SettingsCard, SettingsRow, AccountList, and RowAction; there is no private row styling. The user and admin Maintenance slugs remain canonical, and the old Jobs paths still resolve. The full web suite passed, including the #402 shared-components guard.

Files in the #388 branch delta:

  • apps/web/e2e/maintenance-links.mjs, apps/web/package.json
  • apps/web/src/lib/jobs/api.ts, apps/web/src/lib/jobs/api.test.ts
  • apps/web/src/routes/settings/[...path]/+page.svelte
  • apps/web/src/routes/settings/admin/AdminSection.svelte, apps/web/src/routes/settings/admin/JobsGroup.svelte
  • apps/web/src/routes/settings/jobs/JobDetails.svelte, JobRow.svelte, JobRow.svelte.test.ts, MyJobsGroup.svelte
  • apps/web/src/routes/settings/sections.ts, sections.test.ts
  • docs/DESIGN.md, docs/research/voice-transcription.md

Gates

bun run check:

$ node scripts/check-type-tokens.mjs && svelte-kit sync && svelte-check --tsconfig ./tsconfig.json
Text sizes use shared role tokens.
Loading svelte-check in workspace: /home/kayg/Developer/calternal-wt/jobs-leftovers/apps/web
Getting Svelte diagnostics...

svelte-check found 0 errors and 0 warnings

bun run test:

 Test Files  137 passed (137)
      Tests  881 passed (881)
   Start at  05:48:21
   Duration  131.85s (transform 52%, environment 18%, import 15%, tests 10%, setup 4%)

Environment  |component| jsdom was created 43 times · 127.99s total, 26% of tracked time
             create it once per worker with pool: 'vmThreads' (keeps per-file isolation) or isolate: false (shares it across files)
             learn more: https://vitest.dev/guide/improving-performance#test-environments

Production E2E and screenshots

PASS 5 legacy Maintenance paths and the selected job query. Captured 12 screenshots from the production SPA at 390, 820, and 1440 CSS px, for User and Admin Maintenance in light and dark. Local files are in artifacts/jobs-leftovers/ and the current set is attached here:

The issue already had an earlier 12-image set dated 2026-09-29. I left it in place and attached this current post-merge set dated 2026-09-30, so the issue has two attachment sets with the same filenames.

Known gaps and decisions

No functional gap found in #388. The fresh cargo build -p calternal-server was stopped during the native XMP toolkit C++ build. For the E2E, routeCurrentBuild served this worktree's production SPA and a compatible prebuilt local server handled the real API calls; #388 changed no server route or contract. The web production build completed with existing module-level "use client" warnings from vendored analytics files. Vitest printed jsdom scrollTo() and CSS parse notices; all tests passed.

No product decision outside the design doc was needed. I followed DESIGN §33 for Maintenance links and the shared #402 Settings blocks.

## Finished resume Branch: `job/jobs-leftovers` Merged current `origin/dev` (`dfb5964a2fcf13dc8b9a50a319eee09bc386f322`) as `71b93b6bc5150a34fd110dd5c1bdfd44f023bd7b`. The merge was clean. The #388 Maintenance changes continue to use #402's `SettingsCard`, `SettingsRow`, `AccountList`, and `RowAction`; there is no private row styling. The user and admin Maintenance slugs remain canonical, and the old Jobs paths still resolve. The full web suite passed, including the #402 shared-components guard. Files in the #388 branch delta: - `apps/web/e2e/maintenance-links.mjs`, `apps/web/package.json` - `apps/web/src/lib/jobs/api.ts`, `apps/web/src/lib/jobs/api.test.ts` - `apps/web/src/routes/settings/[...path]/+page.svelte` - `apps/web/src/routes/settings/admin/AdminSection.svelte`, `apps/web/src/routes/settings/admin/JobsGroup.svelte` - `apps/web/src/routes/settings/jobs/JobDetails.svelte`, `JobRow.svelte`, `JobRow.svelte.test.ts`, `MyJobsGroup.svelte` - `apps/web/src/routes/settings/sections.ts`, `sections.test.ts` - `docs/DESIGN.md`, `docs/research/voice-transcription.md` ## Gates `bun run check`: ```text $ node scripts/check-type-tokens.mjs && svelte-kit sync && svelte-check --tsconfig ./tsconfig.json Text sizes use shared role tokens. Loading svelte-check in workspace: /home/kayg/Developer/calternal-wt/jobs-leftovers/apps/web Getting Svelte diagnostics... svelte-check found 0 errors and 0 warnings ``` `bun run test`: ```text Test Files 137 passed (137) Tests 881 passed (881) Start at 05:48:21 Duration 131.85s (transform 52%, environment 18%, import 15%, tests 10%, setup 4%) Environment |component| jsdom was created 43 times · 127.99s total, 26% of tracked time create it once per worker with pool: 'vmThreads' (keeps per-file isolation) or isolate: false (shares it across files) learn more: https://vitest.dev/guide/improving-performance#test-environments ``` ## Production E2E and screenshots `PASS 5 legacy Maintenance paths and the selected job query`. Captured 12 screenshots from the production SPA at 390, 820, and 1440 CSS px, for User and Admin Maintenance in light and dark. Local files are in `artifacts/jobs-leftovers/` and the current set is attached here: - Admin 390: [light](https://git.kayg.org/attachments/46b41b23-7426-4af4-9bf4-8320b10a8350), [dark](https://git.kayg.org/attachments/bc0e3bc8-0f8f-4d74-8e50-265394e2b771) - Admin 820: [light](https://git.kayg.org/attachments/5e0560e5-6989-4b7c-9e37-b2eb48d8c28d), [dark](https://git.kayg.org/attachments/c00df13a-5ad0-4179-8f2b-4259cf38ef08) - Admin 1440: [light](https://git.kayg.org/attachments/047b8e2a-33e8-4339-8db9-4856ee69b158), [dark](https://git.kayg.org/attachments/c7f44b7c-091c-41ce-b4b3-76589219f147) - User 390: [light](https://git.kayg.org/attachments/a9cab0c8-571c-4c4f-8cb5-cd8d4dd7166e), [dark](https://git.kayg.org/attachments/1144ef9a-b272-480b-a324-b08fb8720d98) - User 820: [light](https://git.kayg.org/attachments/3458c1dd-35a0-4c94-9c50-8820b10a8350), [dark](https://git.kayg.org/attachments/b5e18bab-fc84-4a10-a463-f2193b953ca7) - User 1440: [light](https://git.kayg.org/attachments/d3fe634c-f52f-4bb9-b38e-48d1ca89f2a9), [dark](https://git.kayg.org/attachments/3b6f73ef-5d21-4d05-a31f-baf6356a04ea) The issue already had an earlier 12-image set dated 2026-09-29. I left it in place and attached this current post-merge set dated 2026-09-30, so the issue has two attachment sets with the same filenames. ## Known gaps and decisions No functional gap found in #388. The fresh `cargo build -p calternal-server` was stopped during the native XMP toolkit C++ build. For the E2E, `routeCurrentBuild` served this worktree's production SPA and a compatible prebuilt local server handled the real API calls; #388 changed no server route or contract. The web production build completed with existing module-level `"use client"` warnings from vendored analytics files. Vitest printed jsdom `scrollTo()` and CSS parse notices; all tests passed. No product decision outside the design doc was needed. I followed DESIGN §33 for Maintenance links and the shared #402 Settings blocks.
Author
Owner

Environment note: the first bun run check after merging origin/dev reported 15 diagnostics across the three merged Money test files because fast-check was present in apps/web/package.json and bun.lock but missing from this worktree's installed packages. bun install --frozen-lockfile installed 330 packages; it made no lockfile change, and the repeated check passed with 0 errors and 0 warnings. This was an install-state issue, not a source change.

Environment note: the first `bun run check` after merging origin/dev reported 15 diagnostics across the three merged Money test files because `fast-check` was present in `apps/web/package.json` and `bun.lock` but missing from this worktree's installed packages. `bun install --frozen-lockfile` installed 330 packages; it made no lockfile change, and the repeated check passed with 0 errors and 0 warnings. This was an install-state issue, not a source change.
Author
Owner

Merged into dev at 2fcd239e1 and pushed.

Merged into dev at 2fcd239e1 and pushed.
kayg closed this issue 2026-09-30 04:23:17 +00:00
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/calternal#388
No description provided.