Skip to content

Phase 12c: Dual-UI integration#1061

Open
Tim020 wants to merge 1 commit into
feature/vue3-migrationfrom
feature/vue3-migration-phase-12c
Open

Phase 12c: Dual-UI integration#1061
Tim020 wants to merge 1 commit into
feature/vue3-migrationfrom
feature/vue3-migration-phase-12c

Conversation

@Tim020
Copy link
Copy Markdown
Contributor

@Tim020 Tim020 commented May 19, 2026

Summary

Wires the V2 and V3 UIs together so they behave as one coherent system.

  • Docker: Dockerfile split into two independent named build stages (build_v2, build_v3). Docker BuildKit runs them concurrently; the Python stage layers the assets together via two COPY --from directives. Server Python code is now copied directly from the build context instead of via the Node stage.
  • CI: build-server.yml extended to install and build client-v3/ after the V2 build. Both outputs land under server/static/, so the artifact upload step is unchanged.
  • System setting: New default_ui setting (choices: old / new, default old). When set to new, hitting the bare / root issues a 302 redirect to /ui-new/. Surfaced automatically in both V2 and V3 admin settings pages (dynamic rendering from /api/v1/settings/raw).
  • User setting: New preferred_ui column on user_settings (nullable — null means inherit system default). Alembic migration 11311df29aa4 adds the column + CHECK constraint. After login, each UI checks the setting and redirects to the other if the preference differs.
  • Navbar toggle: Both UIs gain a simple link in the right navbar — "Switch to Classic UI" in V3 (href /), "Switch to New UI" in V2 (href /ui-new/). Tab-level only; no API call.
  • User settings form: Both V2 and V3 settings pages gain a "Preferred UI Version" dropdown (Use system default / Classic UI / New UI).

Test plan

  • docker build . — both server/static/index.html and server/static/ui-new/index.html present in final image
  • cd server && alembic upgrade head — migration applies cleanly
  • cd server && python3 main.py — server starts without errors
  • Hit / with default_ui = "old" → V2 loads normally
  • Set default_ui = "new" via admin settings → hit / → 302 to /ui-new/
  • V3 navbar: "Switch to Classic UI" navigates to /
  • V2 navbar: "Switch to New UI" navigates to /ui-new/
  • Set user preferred_ui = "new", log in on V2 → redirected to V3
  • Set user preferred_ui = "old", log in on V3 → redirected to V2
  • Set user preferred_ui = null → inherits system default
  • cd client && npm run typecheck && npm run ci-lint — clean
  • cd client-v3 && npm run typecheck && npm run ci-lint — clean
  • cd server && pytest — 603 tests pass

🤖 Generated with Claude Code

…navbar toggle)

- Dockerfile: split into parallel build_v2/build_v3 stages (BuildKit builds them
  concurrently); Python stage copies assets from both via --from directives
- CI: add V3 install + build steps to build-server.yml frontend job
- Backend: add default_ui system setting (choice: old/new, default old); when set
  to "new" the root "/" redirects to "/ui-new/"
- Backend: add preferred_ui field to UserSettings model + CheckConstraint;
  Alembic migration 11311df29aa4
- V2 App.vue: "Switch to New UI" navbar link; post-login redirect to /ui-new/ when
  preferred_ui == "new"
- V3 App.vue: "Switch to Classic UI" navbar link; post-login redirect to / when
  preferred_ui == "old"
- V2 + V3 user settings pages: preferred_ui dropdown (system default / Classic / New)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@Tim020 Tim020 added the claude Issues created by Claude label May 19, 2026
@github-actions github-actions Bot added github GitHub actions related issue or pull request client Pull requests changing front end code server Pull requests changing back end code medium-diff labels May 19, 2026
@github-actions
Copy link
Copy Markdown

Client V3 Test Results

23 tests  ±0   23 ✅ ±0   0s ⏱️ ±0s
 2 suites ±0    0 💤 ±0 
 1 files   ±0    0 ❌ ±0 

Results for commit 8ba7321. ± Comparison against base commit 2a89e5b.

@github-actions
Copy link
Copy Markdown

Client Test Results

128 tests  ±0   128 ✅ ±0   0s ⏱️ ±0s
  6 suites ±0     0 💤 ±0 
  1 files   ±0     0 ❌ ±0 

Results for commit 8ba7321. ± Comparison against base commit 2a89e5b.

@sonarqubecloud
Copy link
Copy Markdown

@github-actions
Copy link
Copy Markdown

Python Test Results

  1 files  ±0    1 suites  ±0   1m 29s ⏱️ -7s
603 tests ±0  603 ✅ ±0  0 💤 ±0  0 ❌ ±0 
608 runs  ±0  608 ✅ ±0  0 💤 ±0  0 ❌ ±0 

Results for commit 8ba7321. ± Comparison against base commit 2a89e5b.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

claude Issues created by Claude client Pull requests changing front end code github GitHub actions related issue or pull request medium-diff server Pull requests changing back end code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant