feature: rework navigation as a desktop-style open-document workspace #21

Merged
Gilles merged 1 commit from feature/open-document-workspace into main 2026-10-31 10:01:05 +00:00
Owner

Nothing loads at startup anymore: Fichier > Ouvrir opens an organization or a project, and every action (create, close, export) now operates on whatever is currently open instead of being resolved ad hoc from route params by each view.

  • New src/stores/workspace.ts holds openOrganization/openProject, derived from the URL by a single router.beforeEach guard instead of each project-scoped view resolving them itself. Fixes a pre-existing double-fetch: SpecNavShell's embedded SpecDetailPanel used to re-resolve the project a second time on top of the parent tree view's own resolution.
  • Organization and project form a two-level stack: opening a project keeps its organization open too, and an organization can be open alone with zero projects.
  • / is now a blank desktop screen; the former eager organization list moves to Fichier > Ouvrir une organisation. ExportPdfLauncherView is renamed to OpenProjectView and repurposed as Fichier > Ouvrir un projet.
  • MenuBar gains Nouvelle organisation/Nouveau projet (gated on staff / write access to the open organization), a dynamic Fermer that steps back up the stack, and Exporter en PDF now acts directly on the open project instead of opening a picker.
  • Two new dialogs reuse AdminOrganizationsTab/AdminProjectsTab's own create-form idiom.

Stacked on #19 (branched before it was merged) -- this diff will shrink to just this feature's own commit once #19 lands.

Closes #20.

🤖 Generated with Claude Code

https://claude.ai/code/session_013EeueXTWCT4Y6EbeideZcm

Nothing loads at startup anymore: Fichier > Ouvrir opens an organization or a project, and every action (create, close, export) now operates on whatever is currently open instead of being resolved ad hoc from route params by each view. - New `src/stores/workspace.ts` holds `openOrganization`/`openProject`, derived from the URL by a single `router.beforeEach` guard instead of each project-scoped view resolving them itself. Fixes a pre-existing double-fetch: `SpecNavShell`'s embedded `SpecDetailPanel` used to re-resolve the project a second time on top of the parent tree view's own resolution. - Organization and project form a two-level stack: opening a project keeps its organization open too, and an organization can be open alone with zero projects. - `/` is now a blank desktop screen; the former eager organization list moves to Fichier > Ouvrir une organisation. `ExportPdfLauncherView` is renamed to `OpenProjectView` and repurposed as Fichier > Ouvrir un projet. - MenuBar gains Nouvelle organisation/Nouveau projet (gated on staff / write access to the open organization), a dynamic Fermer that steps back up the stack, and Exporter en PDF now acts directly on the open project instead of opening a picker. - Two new dialogs reuse `AdminOrganizationsTab`/`AdminProjectsTab`'s own create-form idiom. Stacked on #19 (branched before it was merged) -- this diff will shrink to just this feature's own commit once #19 lands. Closes #20. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_013EeueXTWCT4Y6EbeideZcm
Export the project's current (draft) state as a PDF (backend#21)
All checks were successful
ci / unit (pull_request) Successful in 1m12s
ci / publish (pull_request) Has been skipped
cdb5a68a2b
Adds a standalone "État actuel (brouillon)" row to the Versions page,
above the validated-version list, with its own export/poll/download
cycle -- doesn't require validating a version first, and includes
specs still in draft. Mirrors backend!22's API: PdfExportJob.project
is now a real field, project_version is nullable, and creating a job
accepts either one.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013EeueXTWCT4Y6EbeideZcm
feature: rework navigation as a desktop-style open-document workspace (#20)
All checks were successful
ci / unit (pull_request) Successful in 1m12s
ci / publish (pull_request) Has been skipped
bf26ead1f0
Nothing loads at startup anymore: Fichier > Ouvrir opens an organization
or a project, and every action (create, close, export) now operates on
whatever is currently open instead of being resolved ad hoc from route
params by each view.

- New src/stores/workspace.ts holds openOrganization/openProject,
  derived from the URL by a single router.beforeEach guard
  (syncWorkspaceWithRoute) instead of each project-scoped view calling
  resolveOrganization/resolveProject itself. Fixes a pre-existing
  double-fetch: SpecNavShell's embedded SpecDetailPanel used to
  re-resolve the project a second time on top of the parent tree
  view's own resolution.
- Organization and project form a two-level stack: opening a project
  keeps its organization open too, and an organization can be open
  alone with zero projects.
- "/" is now a blank desktop screen; the former eager organization
  list moves to Fichier > Ouvrir une organisation (/ouvrir-organisation).
  ExportPdfLauncherView is renamed to OpenProjectView and repurposed as
  Fichier > Ouvrir un projet (/ouvrir-projet), since a project is no
  longer picked through a PDF-specific launcher.
- MenuBar gains Nouvelle organisation/Nouveau projet (gated on staff /
  write access to the open organization), a dynamic Fermer that steps
  back up the stack, and Exporter en PDF now acts directly on the open
  project instead of opening a picker.
- Two new dialogs (CreateOrganizationDialog, CreateProjectDialog)
  reuse AdminOrganizationsTab/AdminProjectsTab's own create-form idiom.

Closes #20.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013EeueXTWCT4Y6EbeideZcm
Author
Owner
<!-- argus-link-bot:thierryade/frontend --> 📊 [Rapports Argus pour cette PR](https://reports.stationmyr.net/thierryade/frontend/pr/21)
Gilles force-pushed feature/open-document-workspace from bf26ead1f0
All checks were successful
ci / unit (pull_request) Successful in 1m12s
ci / publish (pull_request) Has been skipped
to e1384ea89e
All checks were successful
ci / unit (pull_request) Successful in 1m9s
ci / publish (pull_request) Has been skipped
2026-10-31 09:59:52 +00:00
Compare
Gilles scheduled this pull request to auto merge when all checks succeed 2026-10-31 10:00:10 +00:00
Gilles merged commit d6ae957ac0 into main 2026-10-31 10:01:05 +00:00
Gilles deleted branch feature/open-document-workspace 2026-10-31 10:01:05 +00:00
Sign in to join this conversation.
No description provided.