@cat-factory/app 0.274.0 → 0.276.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/README.md +158 -4
  2. package/app/components/board/LaneViewControl.vue +87 -0
  3. package/app/components/board/nodes/BlockNode.vue +31 -11
  4. package/app/components/board/nodes/FrameSwimlanes.vue +139 -0
  5. package/app/components/board/nodes/InitiativeCard.vue +9 -28
  6. package/app/components/board/nodes/LaneGroup.vue +93 -0
  7. package/app/components/board/nodes/LaneTask.vue +66 -0
  8. package/app/components/board/nodes/TaskCard.vue +16 -2
  9. package/app/components/board/nodes/TaskLane.vue +82 -0
  10. package/app/components/layout/BoardToolbar.vue +4 -0
  11. package/app/components/layout/CommandBar.vue +8 -1
  12. package/app/components/layout/RolePrompt.vue +75 -0
  13. package/app/components/layout/SideBar.vue +22 -13
  14. package/app/components/layout/UiRoleSwitcher.vue +73 -0
  15. package/app/components/panels/InspectorPanel.vue +15 -2
  16. package/app/components/panels/inspector/TaskStructure.vue +70 -3
  17. package/app/components/settings/WorkspaceSettingsPanel.vue +59 -0
  18. package/app/composables/useBlockDrag.ts +47 -17
  19. package/app/composables/useBlockQueries.ts +27 -24
  20. package/app/composables/useFrameLanes.ts +177 -0
  21. package/app/composables/useNavContributions.ts +3 -0
  22. package/app/composables/useTaskExpansion.ts +1 -1
  23. package/app/docs/consumer-extensions.md +20 -6
  24. package/app/modular/external-tools.spec.ts +0 -45
  25. package/app/modular/external-tools.ts +12 -23
  26. package/app/modular/nav-contributions.spec.ts +176 -17
  27. package/app/modular/nav-contributions.ts +106 -23
  28. package/app/modular/nav-gates.ts +11 -2
  29. package/app/modular/registry.spec.ts +1 -0
  30. package/app/modular/tutorial-tours.spec.ts +5 -3
  31. package/app/modular/tutorial-tours.ts +53 -8
  32. package/app/pages/index.vue +36 -7
  33. package/app/stores/board/placement.ts +7 -0
  34. package/app/stores/board.spec.ts +119 -14
  35. package/app/stores/laneView.spec.ts +61 -0
  36. package/app/stores/laneView.ts +85 -0
  37. package/app/stores/launchPrompt.ts +63 -0
  38. package/app/stores/taskExpansion.spec.ts +1 -1
  39. package/app/stores/taskExpansion.ts +1 -1
  40. package/app/stores/tutorial.ts +4 -4
  41. package/app/stores/uiMode.spec.ts +11 -0
  42. package/app/stores/uiMode.ts +14 -2
  43. package/app/stores/uiRole.spec.ts +185 -0
  44. package/app/stores/uiRole.ts +86 -0
  45. package/app/stores/workspaceSettings.ts +4 -0
  46. package/app/utils/framePlacement.ts +9 -4
  47. package/app/utils/laneGeometry.spec.ts +69 -0
  48. package/app/utils/laneGeometry.ts +104 -0
  49. package/app/utils/laneSort.spec.ts +236 -0
  50. package/app/utils/laneSort.ts +306 -0
  51. package/app/utils/swimlanes.spec.ts +259 -0
  52. package/app/utils/swimlanes.ts +355 -0
  53. package/app/utils/uiMode.spec.ts +12 -0
  54. package/app/utils/uiMode.ts +24 -6
  55. package/app/utils/uiRole.ts +123 -0
  56. package/i18n/locales/de.json +104 -3
  57. package/i18n/locales/en.json +110 -3
  58. package/i18n/locales/es.json +104 -3
  59. package/i18n/locales/fr.json +104 -3
  60. package/i18n/locales/he.json +104 -3
  61. package/i18n/locales/it.json +104 -3
  62. package/i18n/locales/ja.json +104 -3
  63. package/i18n/locales/pl.json +104 -3
  64. package/i18n/locales/tr.json +104 -3
  65. package/i18n/locales/uk.json +104 -3
  66. package/package.json +2 -2
  67. package/app/components/board/nodes/DraggableTask.vue +0 -58
  68. package/app/components/board/nodes/ModuleFrame.vue +0 -73
  69. package/app/stores/tutorial.prompt.ts +0 -59
@@ -1,59 +0,0 @@
1
- import { ref } from 'vue'
2
-
3
- /**
4
- * The LAUNCH PROMPT's own state machine, extracted from `stores/tutorial.ts`.
5
- *
6
- * It is a small machine with four distinguishable exits and no other consumer, which is what makes
7
- * it a seam worth having rather than four refs among twenty: closing without answering, an explicit
8
- * decline, a DEFERRAL (something the user must actually answer opened on top), and the
9
- * once-per-session auto-open are four different things, and only two of them write anything down.
10
- * The subtlety they share is the ONE-OFFER-PER-SESSION guard, which is why they belong together:
11
- * `promptAutoOpened` must be spent by an offer the user saw and NOT by one that was withdrawn.
12
- *
13
- * `hasDecision` is a bound getter over the persisted record rather than the record itself, so this
14
- * module never learns what a decision IS — only whether one exists, which is the whole of what the
15
- * offer needs.
16
- */
17
- export function createTutorialPrompt(deps: { hasDecision: () => boolean }) {
18
- const promptOpen = ref(false)
19
- /** Once-per-session guard for the launch auto-open; later opens are user-driven. */
20
- const promptAutoOpened = ref(false)
21
-
22
- /**
23
- * Auto-open the launch prompt, at most once per session and only while the user has never
24
- * answered it. Callers gate on the rest of the launch context (board ready, no other startup
25
- * advisory open) — see `pages/index.vue`.
26
- */
27
- function maybeOfferOnLaunch() {
28
- if (deps.hasDecision() || promptAutoOpened.value) return
29
- promptAutoOpened.value = true
30
- promptOpen.value = true
31
- }
32
-
33
- /** User-driven open (command palette), regardless of any saved decision. */
34
- function openPrompt() {
35
- promptOpen.value = true
36
- }
37
-
38
- /**
39
- * Withdraw an offer this store made, because something the user actually has to answer (a startup
40
- * advisory, the GitHub onboarding gate) opened on top of it — and re-arm, so the offer returns
41
- * once that surface is gone. Distinct from {@link closePrompt}: no decision is written EITHER way,
42
- * but a deferral was not the user's doing, so it must not consume this session's one offer.
43
- *
44
- * Only ever withdraws the AUTO-opened prompt; a prompt the user opened themselves from the palette
45
- * is theirs to close.
46
- */
47
- function deferPrompt() {
48
- if (!promptAutoOpened.value) return
49
- promptOpen.value = false
50
- promptAutoOpened.value = false
51
- }
52
-
53
- /** Close without answering: no decision is written, so the next launch asks again. */
54
- function closePrompt() {
55
- promptOpen.value = false
56
- }
57
-
58
- return { promptOpen, promptAutoOpened, maybeOfferOnLaunch, openPrompt, deferPrompt, closePrompt }
59
- }