Architecture-alignment PR 8 of 9: replace duplicated Cash/Investment dialog mechanics with one small Bits UI shell, following the approved reference patterns. Includes the requested Woodpecker image correction in the same commit and Changeset.
Changes
Pin Bits UI 2.18.1, matching When and Directory.
Share portal, overlay, positioning, close control, focus trapping, scroll lock and return-focus behavior through DetailDialog.svelte. Styled DOM stays owned through child snippets.
Preserve stable accessible labels, Escape/close-button dismissal and non-dismissive backdrop clicks. Return focus to a connected enabled opener, otherwise main content.
Keep financial markup, native values and payload-bound selection in each register. Navigation/replacement data invalidates selection; register buttons remain disabled before hydration and normal report tables remain readable without JavaScript.
No unrelated Bits controls, generic dialog framework, transitions or forced SSR portal content.
Change Woodpecker E2E to git.eleith.com/eleith.private/playwright:1.61.1-node26. Docker/GitHub image choices are unchanged.
Validation
Code and readability reviews clear on tree 6922cc54a5d2aebeba595f985ae455908dec87be.
Web typecheck, lint, targeted register financial-rendering tests and web build passed.
Both existing register browser journeys passed with focused Escape, close, backdrop, focus-return and navigation assertions. No new browser matrix.
Woodpecker YAML image declaration matches the private registry and pinned Playwright version. Changeset recognized; no version bump run.
Optional runed Kit 2 peer metadata remains unsuppressed. The unused runed/kit entry is not used; the actual dialog path passed Kit 3.1.1/Svelte 5.57.3 type/build/browser checks.
Unchanged backend/deployment gates were not rerun. Docker engine, private-image pulling and hosted Woodpecker were not exercised locally.
Operator configuration, journals and personal tooling remained unchanged.
## Goal
Architecture-alignment PR 8 of 9: replace duplicated Cash/Investment dialog mechanics with one small Bits UI shell, following the approved reference patterns. Includes the requested Woodpecker image correction in the same commit and Changeset.
## Changes
- Pin Bits UI 2.18.1, matching When and Directory.
- Share portal, overlay, positioning, close control, focus trapping, scroll lock and return-focus behavior through `DetailDialog.svelte`. Styled DOM stays owned through child snippets.
- Preserve stable accessible labels, Escape/close-button dismissal and non-dismissive backdrop clicks. Return focus to a connected enabled opener, otherwise main content.
- Keep financial markup, native values and payload-bound selection in each register. Navigation/replacement data invalidates selection; register buttons remain disabled before hydration and normal report tables remain readable without JavaScript.
- No unrelated Bits controls, generic dialog framework, transitions or forced SSR portal content.
- Change Woodpecker E2E to **`git.eleith.com/eleith.private/playwright:1.61.1-node26`**. Docker/GitHub image choices are unchanged.
## Validation
- Code and readability reviews clear on tree `6922cc54a5d2aebeba595f985ae455908dec87be`.
- Web typecheck, lint, targeted register financial-rendering tests and web build passed.
- Both existing register browser journeys passed with focused Escape, close, backdrop, focus-return and navigation assertions. No new browser matrix.
- Focused owned-browser inspection verified portal placement, inherited typography, desktop/narrow light/dark layouts, focus trapping, missing-opener fallback and background scroll lock; no browser errors.
- Woodpecker YAML image declaration matches the private registry and pinned Playwright version. Changeset recognized; no version bump run.
- Optional `runed` Kit 2 peer metadata remains unsuppressed. The unused `runed/kit` entry is not used; the actual dialog path passed Kit 3.1.1/Svelte 5.57.3 type/build/browser checks.
- Unchanged backend/deployment gates were not rerun. Docker engine, private-image pulling and hosted Woodpecker were not exercised locally.
Operator configuration, journals and personal tooling remained unchanged.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Goal
Architecture-alignment PR 8 of 9: replace duplicated Cash/Investment dialog mechanics with one small Bits UI shell, following the approved reference patterns. Includes the requested Woodpecker image correction in the same commit and Changeset.
Changes
DetailDialog.svelte. Styled DOM stays owned through child snippets.git.eleith.com/eleith.private/playwright:1.61.1-node26. Docker/GitHub image choices are unchanged.Validation
6922cc54a5d2aebeba595f985ae455908dec87be.runedKit 2 peer metadata remains unsuppressed. The unusedruned/kitentry is not used; the actual dialog path passed Kit 3.1.1/Svelte 5.57.3 type/build/browser checks.Operator configuration, journals and personal tooling remained unchanged.