@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.
- package/README.md +158 -4
- package/app/components/board/LaneViewControl.vue +87 -0
- package/app/components/board/nodes/BlockNode.vue +31 -11
- package/app/components/board/nodes/FrameSwimlanes.vue +139 -0
- package/app/components/board/nodes/InitiativeCard.vue +9 -28
- package/app/components/board/nodes/LaneGroup.vue +93 -0
- package/app/components/board/nodes/LaneTask.vue +66 -0
- package/app/components/board/nodes/TaskCard.vue +16 -2
- package/app/components/board/nodes/TaskLane.vue +82 -0
- package/app/components/layout/BoardToolbar.vue +4 -0
- package/app/components/layout/CommandBar.vue +8 -1
- package/app/components/layout/RolePrompt.vue +75 -0
- package/app/components/layout/SideBar.vue +22 -13
- package/app/components/layout/UiRoleSwitcher.vue +73 -0
- package/app/components/panels/InspectorPanel.vue +15 -2
- package/app/components/panels/inspector/TaskStructure.vue +70 -3
- package/app/components/settings/WorkspaceSettingsPanel.vue +59 -0
- package/app/composables/useBlockDrag.ts +47 -17
- package/app/composables/useBlockQueries.ts +27 -24
- package/app/composables/useFrameLanes.ts +177 -0
- package/app/composables/useNavContributions.ts +3 -0
- package/app/composables/useTaskExpansion.ts +1 -1
- package/app/docs/consumer-extensions.md +20 -6
- package/app/modular/external-tools.spec.ts +0 -45
- package/app/modular/external-tools.ts +12 -23
- package/app/modular/nav-contributions.spec.ts +176 -17
- package/app/modular/nav-contributions.ts +106 -23
- package/app/modular/nav-gates.ts +11 -2
- package/app/modular/registry.spec.ts +1 -0
- package/app/modular/tutorial-tours.spec.ts +5 -3
- package/app/modular/tutorial-tours.ts +53 -8
- package/app/pages/index.vue +36 -7
- package/app/stores/board/placement.ts +7 -0
- package/app/stores/board.spec.ts +119 -14
- package/app/stores/laneView.spec.ts +61 -0
- package/app/stores/laneView.ts +85 -0
- package/app/stores/launchPrompt.ts +63 -0
- package/app/stores/taskExpansion.spec.ts +1 -1
- package/app/stores/taskExpansion.ts +1 -1
- package/app/stores/tutorial.ts +4 -4
- package/app/stores/uiMode.spec.ts +11 -0
- package/app/stores/uiMode.ts +14 -2
- package/app/stores/uiRole.spec.ts +185 -0
- package/app/stores/uiRole.ts +86 -0
- package/app/stores/workspaceSettings.ts +4 -0
- package/app/utils/framePlacement.ts +9 -4
- package/app/utils/laneGeometry.spec.ts +69 -0
- package/app/utils/laneGeometry.ts +104 -0
- package/app/utils/laneSort.spec.ts +236 -0
- package/app/utils/laneSort.ts +306 -0
- package/app/utils/swimlanes.spec.ts +259 -0
- package/app/utils/swimlanes.ts +355 -0
- package/app/utils/uiMode.spec.ts +12 -0
- package/app/utils/uiMode.ts +24 -6
- package/app/utils/uiRole.ts +123 -0
- package/i18n/locales/de.json +104 -3
- package/i18n/locales/en.json +110 -3
- package/i18n/locales/es.json +104 -3
- package/i18n/locales/fr.json +104 -3
- package/i18n/locales/he.json +104 -3
- package/i18n/locales/it.json +104 -3
- package/i18n/locales/ja.json +104 -3
- package/i18n/locales/pl.json +104 -3
- package/i18n/locales/tr.json +104 -3
- package/i18n/locales/uk.json +104 -3
- package/package.json +2 -2
- package/app/components/board/nodes/DraggableTask.vue +0 -58
- package/app/components/board/nodes/ModuleFrame.vue +0 -73
- 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
|
-
}
|