WIP: refactor: rewrite frontend in svelte with @immich/ui #7

Draft
exe-dev-bot wants to merge 102 commits from exe-dev-bot/loam:feat/sveltekit-tailwind4-immich-ui-migration into main
Contributor

Rewrite frontend to SvelteKit + Tailwind CSS v4 with an @immich/ui-first component policy.

Migrate in phases (foundation, app shell/routing, route-by-route features, parity hardening, cutover) while keeping lint, typecheck, build, and E2E green throughout.

Rewrite frontend to SvelteKit + Tailwind CSS v4 with an @immich/ui-first component policy. Migrate in phases (foundation, app shell/routing, route-by-route features, parity hardening, cutover) while keeping lint, typecheck, build, and E2E green throughout.
docs(migration): add svelte rewrite plan
All checks were successful
CI / lint (pull_request) Successful in 16m4s
CI / build (pull_request) Successful in 16m14s
CI / test-e2e (pull_request) Successful in 21m59s
cb037a3924
docs(migration): define e2e parity and ready gates
Some checks failed
CI / build (pull_request) Failing after 12m3s
CI / test-e2e (pull_request) Failing after 12m8s
CI / lint (pull_request) Failing after 12m13s
d8cb9de68d
docs(migration): track phase 2 shell slice
Some checks failed
CI / build (pull_request) Failing after 12m35s
CI / test-e2e (pull_request) Failing after 12m35s
CI / lint (pull_request) Failing after 12m45s
d0ebde59ad
docs(migration): log budget navigation slice
Some checks failed
CI / build (pull_request) Failing after 13m44s
CI / test-e2e (pull_request) Failing after 13m49s
CI / lint (pull_request) Failing after 13m53s
8197e2d392
feat(svelte): validate budget params in page load
Some checks failed
CI / build (pull_request) Failing after 13m41s
CI / lint (pull_request) Failing after 13m49s
CI / test-e2e (pull_request) Successful in 26m17s
44cc7eb220
refactor(svelte): derive shell navigation in layout load
Some checks failed
CI / build (pull_request) Failing after 10m17s
CI / lint (pull_request) Successful in 18m50s
CI / test-e2e (pull_request) Successful in 25m17s
062006ab1b
feat(svelte): redirect /budget to current period
Some checks failed
CI / build (pull_request) Failing after 10m2s
CI / test-e2e (pull_request) Failing after 10m7s
CI / lint (pull_request) Failing after 10m12s
d7ef4e7861
feat(svelte): add migration dashboard home page
All checks were successful
CI / lint (pull_request) Successful in 17m52s
CI / build (pull_request) Successful in 14m0s
CI / test-e2e (pull_request) Successful in 24m4s
048f0da978
feat(svelte): enrich categories and settings stubs
Some checks failed
CI / build (pull_request) Failing after 12m40s
CI / test-e2e (pull_request) Failing after 12m45s
CI / lint (pull_request) Failing after 12m50s
818f1630f8
docs(migration): capture latest phase 2 route slices
Some checks failed
CI / build (pull_request) Failing after 12m25s
CI / test-e2e (pull_request) Failing after 12m30s
CI / lint (pull_request) Failing after 12m36s
0205cc3758
test(svelte): add stable selectors for shell routes
Some checks failed
CI / build (pull_request) Failing after 12m9s
CI / test-e2e (pull_request) Failing after 12m16s
CI / lint (pull_request) Failing after 12m20s
54901c3654
refactor(svelte): route save shortcut through db service
Some checks failed
CI / build (pull_request) Failing after 11m55s
CI / test-e2e (pull_request) Failing after 12m0s
CI / lint (pull_request) Failing after 12m5s
b39f253440
feat(svelte): expand budget page migration skeleton
Some checks failed
CI / test-e2e (pull_request) Failing after 11m45s
CI / lint (pull_request) Failing after 11m50s
CI / build (pull_request) Successful in 15m38s
b687244c3a
feat(svelte): wire settings actions to db service
Some checks failed
CI / lint (pull_request) Successful in 15m13s
CI / build (pull_request) Successful in 15m39s
CI / test-e2e (pull_request) Failing after 19m45s
4619b4f893
feat(svelte): add home db scaffold quick actions
Some checks failed
CI / lint (pull_request) Successful in 15m38s
CI / build (pull_request) Failing after 10m55s
CI / test-e2e (pull_request) Successful in 20m29s
c99f451667
docs(migration): track phase 2 service and routing slices
Some checks failed
CI / build (pull_request) Failing after 11m25s
CI / lint (pull_request) Successful in 21m47s
CI / test-e2e (pull_request) Successful in 26m26s
21d4a523e5
feat(svelte): show db migration status banner
Some checks failed
CI / build (pull_request) Failing after 11m12s
CI / test-e2e (pull_request) Failing after 11m17s
CI / lint (pull_request) Failing after 11m20s
5047ed7203
refactor(svelte): centralize db action toast feedback
Some checks failed
CI / build (pull_request) Failing after 10m55s
CI / test-e2e (pull_request) Failing after 11m1s
CI / lint (pull_request) Failing after 11m6s
90f0009067
feat(svelte): add interactive categories scaffold
Some checks failed
CI / test-e2e (pull_request) Failing after 10m46s
CI / lint (pull_request) Failing after 10m50s
CI / build (pull_request) Successful in 19m1s
6bf07b3428
feat(svelte): add shell db status store and panel
Some checks failed
CI / test-e2e (pull_request) Failing after 10m31s
CI / lint (pull_request) Failing after 10m37s
CI / build (pull_request) Successful in 18m43s
0a6de4ee94
feat(svelte): add shell loading and welcome states
Some checks failed
CI / test-e2e (pull_request) Failing after 13m59s
CI / lint (pull_request) Failing after 14m4s
CI / build (pull_request) Successful in 17m40s
027928a8f2
feat(svelte): add pending and retry shell state controls
Some checks failed
CI / lint (pull_request) Failing after 14m11s
CI / test-e2e (pull_request) Successful in 17m17s
CI / build (pull_request) Successful in 12m45s
08e318afcd
docs(migration): track shell state parity slices
All checks were successful
CI / lint (pull_request) Successful in 12m53s
CI / build (pull_request) Successful in 12m33s
CI / test-e2e (pull_request) Successful in 16m50s
529651af3e
feat(svelte): share scaffold categories across routes
All checks were successful
CI / lint (pull_request) Successful in 12m23s
CI / test-e2e (pull_request) Successful in 16m3s
CI / build (pull_request) Successful in 12m2s
727d8543ae
feat(svelte): add settings action to reset scaffold categories
All checks were successful
CI / lint (pull_request) Successful in 13m5s
CI / build (pull_request) Successful in 12m16s
CI / test-e2e (pull_request) Successful in 17m5s
abc6bfc063
feat(svelte): wire categories default import action
All checks were successful
CI / lint (pull_request) Successful in 12m16s
CI / build (pull_request) Successful in 13m56s
CI / test-e2e (pull_request) Successful in 19m26s
dcfffc7e35
feat(svelte): add scaffold transactions to budget page
All checks were successful
CI / lint (pull_request) Successful in 11m25s
CI / build (pull_request) Successful in 11m20s
CI / test-e2e (pull_request) Successful in 15m57s
544467e13c
feat(svelte): add settings action to reset transactions
All checks were successful
CI / lint (pull_request) Successful in 11m25s
CI / build (pull_request) Successful in 12m10s
CI / test-e2e (pull_request) Successful in 16m57s
40eba3b4a6
docs(migration): record shared scaffold state slices
All checks were successful
CI / lint (pull_request) Successful in 12m24s
CI / build (pull_request) Successful in 12m7s
CI / test-e2e (pull_request) Successful in 17m55s
4ef362eed6
feat(svelte): add scaffold income summary flow
All checks were successful
CI / lint (pull_request) Successful in 13m30s
CI / build (pull_request) Successful in 12m3s
CI / test-e2e (pull_request) Successful in 17m1s
e866499cec
feat(svelte): add settings action to reset income
All checks were successful
CI / lint (pull_request) Successful in 12m51s
CI / build (pull_request) Successful in 13m44s
CI / test-e2e (pull_request) Successful in 17m19s
dfafcb93c3
feat(svelte): add settings reset-all scaffold action
All checks were successful
CI / lint (pull_request) Successful in 13m41s
CI / build (pull_request) Successful in 12m19s
CI / test-e2e (pull_request) Successful in 17m33s
ea1afbf6f5
feat(svelte): add scaffold diagnostics in settings
Some checks failed
CI / lint (pull_request) Failing after 14m7s
CI / build (pull_request) Successful in 12m13s
CI / test-e2e (pull_request) Successful in 17m12s
b75a94e9b0
feat(svelte): add scaffold category budget flow
All checks were successful
CI / lint (pull_request) Successful in 10m50s
CI / build (pull_request) Successful in 10m59s
CI / test-e2e (pull_request) Successful in 14m58s
e643b736cf
feat(svelte): add dedicated transactions route
All checks were successful
CI / lint (pull_request) Successful in 11m1s
CI / build (pull_request) Successful in 11m5s
CI / test-e2e (pull_request) Successful in 14m32s
6df47a464d
feat(svelte): add derived scaffold budget summaries
All checks were successful
CI / lint (pull_request) Successful in 10m37s
CI / build (pull_request) Successful in 10m47s
CI / test-e2e (pull_request) Successful in 14m29s
6298f13b40
docs(migration): log transactions and budget summary slices
All checks were successful
CI / lint (pull_request) Successful in 10m41s
CI / build (pull_request) Successful in 10m41s
CI / test-e2e (pull_request) Successful in 14m14s
43cfdbe1e1
feat(svelte): filter budget transactions by route period
All checks were successful
CI / lint (pull_request) Successful in 10m55s
CI / build (pull_request) Successful in 10m50s
CI / test-e2e (pull_request) Successful in 14m10s
4a8663e027
feat(svelte): add settings action to seed demo data
Some checks failed
CI / lint (pull_request) Failing after 16s
CI / build (pull_request) Successful in 11m1s
CI / test-e2e (pull_request) Successful in 14m24s
192f2ba466
feat(svelte): add live scaffold summary to home
All checks were successful
CI / lint (pull_request) Successful in 10m41s
CI / build (pull_request) Successful in 10m45s
CI / test-e2e (pull_request) Successful in 14m25s
57b1662858
docs(migration): log latest scaffold parity slices
All checks were successful
CI / lint (pull_request) Successful in 10m37s
CI / build (pull_request) Successful in 10m53s
CI / test-e2e (pull_request) Successful in 14m23s
bc8eb47a3d
feat(svelte): add settings controls for category budgets
All checks were successful
CI / lint (pull_request) Successful in 10m49s
CI / build (pull_request) Successful in 10m52s
CI / test-e2e (pull_request) Successful in 14m4s
2d8935a9ac
feat(svelte): group transactions by period with budget links
All checks were successful
CI / lint (pull_request) Successful in 10m43s
CI / build (pull_request) Successful in 10m38s
CI / test-e2e (pull_request) Successful in 14m7s
8d68aaf170
docs(migration): track budget and transactions parity slices
All checks were successful
CI / lint (pull_request) Successful in 10m45s
CI / build (pull_request) Successful in 10m46s
CI / test-e2e (pull_request) Successful in 14m21s
5cb19a6e86
feat(svelte): show category budget allocations in categories
All checks were successful
CI / lint (pull_request) Successful in 10m40s
CI / build (pull_request) Successful in 10m46s
CI / test-e2e (pull_request) Successful in 14m14s
5112107f81
feat(svelte): add period filter on transactions route
All checks were successful
CI / lint (pull_request) Successful in 10m52s
CI / build (pull_request) Successful in 10m41s
CI / test-e2e (pull_request) Successful in 14m14s
e12c525012
refactor(svelte): centralize scaffold data actions
All checks were successful
CI / lint (pull_request) Successful in 10m42s
CI / build (pull_request) Successful in 10m49s
CI / test-e2e (pull_request) Successful in 14m18s
be44ab75d1
feat(svelte): add home actions for scaffold seed/reset
All checks were successful
CI / lint (pull_request) Successful in 11m6s
CI / build (pull_request) Successful in 10m45s
CI / test-e2e (pull_request) Successful in 14m34s
595311fd2a
docs(migration): record latest scaffold action slices
All checks were successful
CI / lint (pull_request) Successful in 10m41s
CI / build (pull_request) Successful in 11m1s
CI / test-e2e (pull_request) Successful in 13m59s
b112369943
feat(svelte): add category search and filtered counts
All checks were successful
CI / lint (pull_request) Successful in 10m49s
CI / build (pull_request) Successful in 10m54s
CI / test-e2e (pull_request) Successful in 14m13s
ac3b0770c8
feat(svelte): add search filter on transactions route
All checks were successful
CI / lint (pull_request) Successful in 10m41s
CI / build (pull_request) Successful in 10m38s
CI / test-e2e (pull_request) Successful in 14m3s
6d115f679c
feat(svelte): add sort controls on categories route
All checks were successful
CI / lint (pull_request) Successful in 10m52s
CI / build (pull_request) Successful in 10m36s
CI / test-e2e (pull_request) Successful in 14m7s
8cd1151e41
feat(svelte): add sort controls on transactions route
All checks were successful
CI / lint (pull_request) Successful in 10m46s
CI / build (pull_request) Successful in 11m2s
CI / test-e2e (pull_request) Successful in 14m26s
018756391d
feat(svelte): support transactions period query deep link
All checks were successful
CI / lint (pull_request) Successful in 10m43s
CI / build (pull_request) Successful in 10m41s
CI / test-e2e (pull_request) Successful in 14m42s
62dbcb3dea
feat(svelte): add settings e2e parity sections
All checks were successful
CI / lint (pull_request) Successful in 10m41s
CI / build (pull_request) Successful in 10m41s
CI / test-e2e (pull_request) Successful in 14m14s
33375377c8
feat(svelte): add typed confirm dialog for category deletion
All checks were successful
CI / lint (pull_request) Successful in 10m50s
CI / build (pull_request) Successful in 11m5s
CI / test-e2e (pull_request) Successful in 14m34s
49a602c2b7
feat(svelte): add transaction form parity hooks
All checks were successful
CI / lint (pull_request) Successful in 10m42s
CI / build (pull_request) Successful in 10m4s
CI / test-e2e (pull_request) Successful in 14m56s
11d8226a3b
feat(svelte): add budget selector parity hooks
All checks were successful
CI / lint (pull_request) Successful in 11m15s
CI / build (pull_request) Successful in 10m54s
CI / test-e2e (pull_request) Successful in 14m55s
50c537d0f6
feat(svelte): add category rename parity controls
All checks were successful
CI / lint (pull_request) Successful in 10m51s
CI / build (pull_request) Successful in 11m9s
CI / test-e2e (pull_request) Successful in 15m42s
45726fd603
docs(migration): record parity slices and next priorities
All checks were successful
CI / lint (pull_request) Successful in 10m35s
CI / build (pull_request) Successful in 11m0s
CI / test-e2e (pull_request) Successful in 14m26s
5681336586
feat(svelte): add settings export and storage hooks
All checks were successful
CI / lint (pull_request) Successful in 10m49s
CI / build (pull_request) Successful in 10m46s
CI / test-e2e (pull_request) Successful in 14m4s
260192e78b
feat(svelte): add nav and settings selector parity classes
All checks were successful
CI / lint (pull_request) Successful in 10m46s
CI / build (pull_request) Successful in 11m13s
CI / test-e2e (pull_request) Successful in 14m14s
8b58409def
feat(svelte): add budget month-nav and summary wrapper hooks
All checks were successful
CI / lint (pull_request) Successful in 11m9s
CI / build (pull_request) Successful in 10m44s
CI / test-e2e (pull_request) Successful in 14m14s
46705c7ea4
feat(svelte): add toast and progressbar parity hooks
All checks were successful
CI / lint (pull_request) Successful in 10m41s
CI / build (pull_request) Successful in 11m9s
CI / test-e2e (pull_request) Successful in 14m34s
c78b959c8d
feat(svelte): add category reassign and confirm dialog parity
All checks were successful
CI / lint (pull_request) Successful in 10m37s
CI / build (pull_request) Successful in 10m57s
CI / test-e2e (pull_request) Successful in 14m56s
3e64899420
feat(svelte): add budget expense and income sheet scaffolds
All checks were successful
CI / lint (pull_request) Successful in 10m47s
CI / build (pull_request) Successful in 10m53s
CI / test-e2e (pull_request) Successful in 14m19s
9c7b5e933a
feat(svelte): align budget summary labels and toast strings
All checks were successful
CI / lint (pull_request) Successful in 9m56s
CI / build (pull_request) Successful in 10m48s
CI / test-e2e (pull_request) Successful in 14m33s
cc324b80bd
chore(node): require node 22 for sveltekit e2e stack
All checks were successful
CI / lint (pull_request) Successful in 10m36s
CI / build (pull_request) Successful in 10m57s
CI / test-e2e (pull_request) Successful in 14m39s
994fedb184
docs(migration): record full e2e green checkpoint
All checks were successful
CI / lint (pull_request) Successful in 11m5s
CI / build (pull_request) Successful in 10m58s
CI / test-e2e (pull_request) Successful in 14m17s
d197a6c3b2
test(e2e): target playwright web server to sveltekit app
Some checks failed
CI / test-e2e (pull_request) Failing after 7m37s
CI / lint (pull_request) Successful in 10m40s
CI / build (pull_request) Successful in 10m48s
448c800304
refactor(svelte): move budget sheet styling to tailwind utilities
Some checks failed
CI / lint (pull_request) Successful in 10m48s
CI / test-e2e (pull_request) Failing after 7m53s
CI / build (pull_request) Successful in 10m53s
bbef424e59
test(svelte): add welcome reset and db shim compatibility
Some checks failed
CI / test-e2e (pull_request) Failing after 7m33s
CI / lint (pull_request) Successful in 10m48s
CI / build (pull_request) Successful in 10m41s
9229c5b3e1
test(svelte): align settings and budget helper parity hooks
Some checks failed
CI / test-e2e (pull_request) Failing after 7m40s
CI / lint (pull_request) Successful in 10m37s
CI / build (pull_request) Successful in 10m40s
0f6f1f5799
test(svelte): improve overlay focus and toast parity for accessibility
Some checks failed
CI / test-e2e (pull_request) Failing after 7m30s
CI / lint (pull_request) Successful in 10m4s
CI / build (pull_request) Successful in 10m39s
13f5b4288a
test(svelte): add income confirm dialog and category progressbar parity
Some checks failed
CI / test-e2e (pull_request) Failing after 7m27s
CI / lint (pull_request) Successful in 10m42s
CI / build (pull_request) Successful in 10m52s
473230e327
test(svelte): add budget categories route and form validation parity
Some checks failed
CI / test-e2e (pull_request) Failing after 7m36s
CI / lint (pull_request) Successful in 10m42s
CI / build (pull_request) Successful in 10m47s
6fa55da2d2
feat(svelte): add month-scoped budget inheritance and budget nav parity
Some checks failed
CI / test-e2e (pull_request) Failing after 7m44s
CI / lint (pull_request) Successful in 10m34s
CI / build (pull_request) Successful in 10m39s
ad9f09eefc
test(visual): refresh playwright baselines for svelte migration
Some checks failed
CI / test-e2e (pull_request) Failing after 7m27s
CI / lint (pull_request) Successful in 10m36s
CI / build (pull_request) Successful in 10m32s
75c0632b3b
test(visual): restore baseline snapshots from upstream main
Some checks failed
CI / test-e2e (pull_request) Failing after 6m48s
CI / lint (pull_request) Successful in 10m9s
CI / build (pull_request) Successful in 10m8s
68b400d83e
fix(sveltekit): gate scaffold shell to pre-connect state
Some checks failed
CI / test-e2e (pull_request) Failing after 6m43s
CI / lint (pull_request) Successful in 10m8s
CI / build (pull_request) Successful in 10m7s
d1bc7e69d6
fix(budget): remove scaffold detail sections from month page
Some checks failed
CI / test-e2e (pull_request) Failing after 6m48s
CI / lint (pull_request) Successful in 10m1s
CI / build (pull_request) Successful in 10m5s
2bbb738cf0
feat(budget): align month shell summary and fab actions
Some checks failed
CI / test-e2e (pull_request) Failing after 6m53s
CI / lint (pull_request) Successful in 10m11s
CI / build (pull_request) Successful in 10m15s
04ac3f3e4e
fix(settings): recover settings page baseline composition
Some checks failed
CI / test-e2e (pull_request) Failing after 7m27s
CI / lint (pull_request) Successful in 10m7s
CI / build (pull_request) Successful in 10m7s
6854b0f4b6
feat(sveltekit): align category manager layout with legacy visual style
Some checks failed
CI / test-e2e (pull_request) Failing after 6m47s
CI / lint (pull_request) Successful in 10m7s
CI / build (pull_request) Successful in 10m15s
f73f11ab80
fix(sveltekit): recover modal visual ratios after token port
Some checks failed
CI / test-e2e (pull_request) Failing after 7m2s
CI / lint (pull_request) Successful in 10m25s
CI / build (pull_request) Successful in 10m25s
d070be0c80
Some checks failed
CI / test-e2e (pull_request) Failing after 7m2s
CI / lint (pull_request) Successful in 10m25s
CI / build (pull_request) Successful in 10m25s
This pull request is marked as a work in progress.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u feat/sveltekit-tailwind4-immich-ui-migration:exe-dev-bot-feat/sveltekit-tailwind4-immich-ui-migration
git switch exe-dev-bot-feat/sveltekit-tailwind4-immich-ui-migration

Merge

Merge the changes and update on Forgejo.
git switch main
git merge --no-ff exe-dev-bot-feat/sveltekit-tailwind4-immich-ui-migration
git switch exe-dev-bot-feat/sveltekit-tailwind4-immich-ui-migration
git rebase main
git switch main
git merge --ff-only exe-dev-bot-feat/sveltekit-tailwind4-immich-ui-migration
git switch exe-dev-bot-feat/sveltekit-tailwind4-immich-ui-migration
git rebase main
git switch main
git merge --no-ff exe-dev-bot-feat/sveltekit-tailwind4-immich-ui-migration
git switch main
git merge --squash exe-dev-bot-feat/sveltekit-tailwind4-immich-ui-migration
git switch main
git merge --ff-only exe-dev-bot-feat/sveltekit-tailwind4-immich-ui-migration
git switch main
git merge exe-dev-bot-feat/sveltekit-tailwind4-immich-ui-migration
git push origin main
Sign in to join this conversation.
No reviewers
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
kwila/loam!7
No description provided.