@cat-factory/app 0.273.2 → 0.275.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 (42) hide show
  1. package/README.md +69 -2
  2. package/app/components/board/nodes/BlockNode.vue +7 -1
  3. package/app/components/layout/CommandBar.vue +8 -1
  4. package/app/components/layout/NotificationsInbox.vue +4 -0
  5. package/app/components/layout/RolePrompt.vue +75 -0
  6. package/app/components/layout/SideBar.vue +22 -13
  7. package/app/components/layout/UiRoleSwitcher.vue +73 -0
  8. package/app/components/slack/SlackPanel.vue +2 -0
  9. package/app/composables/useNavContributions.ts +3 -0
  10. package/app/docs/consumer-extensions.md +20 -6
  11. package/app/modular/external-tools.spec.ts +0 -45
  12. package/app/modular/external-tools.ts +12 -23
  13. package/app/modular/nav-contributions.spec.ts +176 -17
  14. package/app/modular/nav-contributions.ts +106 -23
  15. package/app/modular/nav-gates.ts +11 -2
  16. package/app/modular/registry.spec.ts +1 -0
  17. package/app/modular/tutorial-tours.spec.ts +5 -3
  18. package/app/modular/tutorial-tours.ts +53 -8
  19. package/app/pages/index.vue +36 -7
  20. package/app/stores/launchPrompt.ts +63 -0
  21. package/app/stores/tutorial.ts +4 -4
  22. package/app/stores/uiMode.spec.ts +11 -0
  23. package/app/stores/uiMode.ts +14 -2
  24. package/app/stores/uiRole.spec.ts +185 -0
  25. package/app/stores/uiRole.ts +86 -0
  26. package/app/utils/catalog.spec.ts +5 -10
  27. package/app/utils/catalog.ts +13 -0
  28. package/app/utils/uiMode.spec.ts +12 -0
  29. package/app/utils/uiMode.ts +24 -6
  30. package/app/utils/uiRole.ts +123 -0
  31. package/i18n/locales/de.json +29 -0
  32. package/i18n/locales/en.json +35 -0
  33. package/i18n/locales/es.json +29 -0
  34. package/i18n/locales/fr.json +29 -0
  35. package/i18n/locales/he.json +29 -0
  36. package/i18n/locales/it.json +29 -0
  37. package/i18n/locales/ja.json +29 -0
  38. package/i18n/locales/pl.json +29 -0
  39. package/i18n/locales/tr.json +29 -0
  40. package/i18n/locales/uk.json +29 -0
  41. package/package.json +2 -2
  42. package/app/stores/tutorial.prompt.ts +0 -59
@@ -32,6 +32,25 @@
32
32
  "switchTo": "{mode}に切り替える",
33
33
  "pinned": "このデプロイで設定されています"
34
34
  },
35
+ "uiRole": {
36
+ "switcher": "あなたの役割",
37
+ "roles": {
38
+ "engineer": "エンジニア",
39
+ "productManager": "プロダクトマネージャー",
40
+ "designer": "デザイナー"
41
+ },
42
+ "hints": {
43
+ "engineer": "すべて。作業の計画、実行、レビューとマージ、そして実行基盤の設定まで。",
44
+ "productManager": "エンジニアと同じ画面です。作業を計画し、実行し、マージまで見届けます。",
45
+ "designer": "よりシンプルなボード。すでにあるサービス、進行中の作業、そしてデザインや課題から作る新しいタスクだけ。"
46
+ },
47
+ "prompt": {
48
+ "title": "どのような仕事をしていますか?",
49
+ "intro": "最も近いものを選ぶと、その仕事に必要な画面でアプリが開きます。変わるのは表示される内容だけで、権限は変わりません。",
50
+ "change": "サイドバー上部からいつでも変更できます。",
51
+ "later": "後にする"
52
+ }
53
+ },
35
54
  "common": {
36
55
  "loading": "読み込み中…",
37
56
  "save": "保存",
@@ -2204,6 +2223,7 @@
2204
2223
  "pipeline_complete": "確認してマージ",
2205
2224
  "ci_failed": "実行を再試行",
2206
2225
  "test_failed": "実行を再試行",
2226
+ "deploy_blocked": "実行を再試行",
2207
2227
  "requirement_review": "既読にする",
2208
2228
  "clarity_review": "既読にする",
2209
2229
  "release_regression": "確認",
@@ -2386,6 +2406,7 @@
2386
2406
  "shortcuts": "キーボードショートカット",
2387
2407
  "bugHunt": "バグハント",
2388
2408
  "toggleUiMode": "インターフェースモードを切り替え",
2409
+ "chooseRole": "役割を変更",
2389
2410
  "foundationalServices": "基盤サービス",
2390
2411
  "notificationSettings": "通知ルーティングを管理"
2391
2412
  },
@@ -2410,6 +2431,7 @@
2410
2431
  "shortcuts": "キーボード ショートカット キー ヘルプ",
2411
2432
  "bugHunt": "bug バグ ハント トリアージ バックログ 課題 未割り当て",
2412
2433
  "toggleUiMode": "インターフェース モード 基本 詳細 表示 非表示",
2434
+ "chooseRole": "役割 ロール エンジニア プロダクトマネージャー デザイナー 簡易表示",
2413
2435
  "tutorial": "チュートリアル ツアー ガイド ヘルプ 使い方 オンボーディング",
2414
2436
  "foundationalServices": "共通機能 プラットフォーム サービス api コントラクト openapi カタログ",
2415
2437
  "notificationSettings": "通知 メール ルーティング チャネル 受信箱"
@@ -4389,6 +4411,7 @@
4389
4411
  "pipeline_complete": "パイプライン完了",
4390
4412
  "ci_failed": "CI失敗",
4391
4413
  "test_failed": "テスト失敗",
4414
+ "deploy_blocked": "デプロイがブロックされました",
4392
4415
  "requirement_review": "要件レビュー",
4393
4416
  "clarity_review": "明確性レビュー",
4394
4417
  "release_regression": "リリースリグレッション",
@@ -4452,6 +4475,7 @@
4452
4475
  "pipeline_complete": "パイプライン完了",
4453
4476
  "ci_failed": "CI失敗",
4454
4477
  "test_failed": "テスト失敗",
4478
+ "deploy_blocked": "デプロイがブロックされました",
4455
4479
  "requirement_review": "要件レビュー",
4456
4480
  "clarity_review": "明確性レビュー",
4457
4481
  "release_regression": "リリースリグレッション",
@@ -7450,6 +7474,7 @@
7450
7474
  "failedRun": "失敗した実行",
7451
7475
  "infrastructure": "このワークスペースに接続された実行バックエンド",
7452
7476
  "advancedTier": "詳細インターフェースモード",
7477
+ "fullSurface": "エンジニアまたはプロダクトマネージャーの役割",
7453
7478
  "designSource": "接続済みのデザインソース"
7454
7479
  },
7455
7480
  "overlay": {
@@ -7491,6 +7516,10 @@
7491
7516
  "title": "ボードの操作",
7492
7517
  "body": "これらのコントロールでズームイン・ズームアウトしたり、ボード全体を表示に収めたりできます。"
7493
7518
  },
7519
+ "role": {
7520
+ "title": "あなたの役割",
7521
+ "body": "ボードは仕事に合わせて調整されます。エンジニアとプロダクトマネージャーはすべての画面を、デザイナーは作業を取り込んで追いかけるためのシンプルな画面を使います。ここでいつでも変更できます。"
7522
+ },
7494
7523
  "interfaceTier": {
7495
7524
  "title": "ベーシックとアドバンスト",
7496
7525
  "body": "画面は日々の作業に必要なものだけを表示するベーシックモードで始まります。実験用、リポジトリ立ち上げ用、運用向けの画面も使いたくなったら、ここでアドバンストに切り替えてください。"
@@ -32,6 +32,25 @@
32
32
  "switchTo": "Przełącz na {mode}",
33
33
  "pinned": "Ustawione przez to wdrożenie"
34
34
  },
35
+ "uiRole": {
36
+ "switcher": "Twoja rola",
37
+ "roles": {
38
+ "engineer": "Inżynier",
39
+ "productManager": "Menedżer produktu",
40
+ "designer": "Projektant"
41
+ },
42
+ "hints": {
43
+ "engineer": "Wszystko: planowanie pracy, uruchamianie, przegląd i scalanie oraz konfiguracja platformy, na której to działa.",
44
+ "productManager": "Te same powierzchnie co u inżyniera: planowanie pracy, uruchamianie i prowadzenie jej aż do scalenia.",
45
+ "designer": "Prostsza tablica: usługi, które już na niej są, praca w toku i nowe zadania z projektu lub zgłoszenia."
46
+ },
47
+ "prompt": {
48
+ "title": "Nad czym pracujesz?",
49
+ "intro": "Wybierz najbliższą opcję, a aplikacja otworzy się na powierzchniach potrzebnych do tej pracy. To zmienia to, co WIDZISZ, a nie to, co możesz zrobić.",
50
+ "change": "Możesz to zmienić w dowolnym momencie u góry panelu bocznego.",
51
+ "later": "Nie teraz"
52
+ }
53
+ },
35
54
  "common": {
36
55
  "loading": "Ładowanie…",
37
56
  "save": "Zapisz",
@@ -2204,6 +2223,7 @@
2204
2223
  "pipeline_complete": "Potwierdź i scal",
2205
2224
  "ci_failed": "Ponów przebieg",
2206
2225
  "test_failed": "Ponów przebieg",
2226
+ "deploy_blocked": "Ponów przebieg",
2207
2227
  "requirement_review": "Oznacz jako przeczytane",
2208
2228
  "clarity_review": "Oznacz jako przeczytane",
2209
2229
  "release_regression": "Potwierdź",
@@ -2386,6 +2406,7 @@
2386
2406
  "shortcuts": "Skróty klawiszowe",
2387
2407
  "bugHunt": "Polowanie na błędy",
2388
2408
  "toggleUiMode": "Zmień tryb interfejsu",
2409
+ "chooseRole": "Zmień swoją rolę",
2389
2410
  "foundationalServices": "Usługi fundamentalne",
2390
2411
  "notificationSettings": "Zarządzaj routingiem powiadomień"
2391
2412
  },
@@ -2410,6 +2431,7 @@
2410
2431
  "shortcuts": "skróty klawiatura klawisze pomoc",
2411
2432
  "bugHunt": "błąd bug polowanie triage zaległości zgłoszenia nieprzypisane",
2412
2433
  "toggleUiMode": "interfejs tryb podstawowy zaawansowany pokaż ukryj",
2434
+ "chooseRole": "rola inżynier menedżer produktu projektant persona prostszy widok",
2413
2435
  "tutorial": "samouczek przewodnik pomoc nauka wprowadzenie",
2414
2436
  "foundationalServices": "wspólna możliwość platforma usługa api kontrakt openapi katalog",
2415
2437
  "notificationSettings": "powiadomienia e-mail routing kanały skrzynka"
@@ -4389,6 +4411,7 @@
4389
4411
  "pipeline_complete": "Pipeline ukonczony",
4390
4412
  "ci_failed": "Niepowodzenie CI",
4391
4413
  "test_failed": "Niepowodzenie testow",
4414
+ "deploy_blocked": "Wdrożenie zablokowane",
4392
4415
  "requirement_review": "Przeglad wymagan",
4393
4416
  "clarity_review": "Przeglad klarownosci",
4394
4417
  "release_regression": "Regresja wydania",
@@ -4452,6 +4475,7 @@
4452
4475
  "pipeline_complete": "Pipeline ukonczony",
4453
4476
  "ci_failed": "Niepowodzenie CI",
4454
4477
  "test_failed": "Niepowodzenie testow",
4478
+ "deploy_blocked": "Wdrożenie zablokowane",
4455
4479
  "requirement_review": "Przeglad wymagan",
4456
4480
  "clarity_review": "Przeglad klarownosci",
4457
4481
  "release_regression": "Regresja wydania",
@@ -7450,6 +7474,7 @@
7450
7474
  "failedRun": "Nieudane uruchomienie",
7451
7475
  "infrastructure": "Backend wykonawczy podłączony do tego workspace’u",
7452
7476
  "advancedTier": "Zaawansowany tryb interfejsu",
7477
+ "fullSurface": "Rola inżyniera lub menedżera produktu",
7453
7478
  "designSource": "Podłączone źródło projektów"
7454
7479
  },
7455
7480
  "overlay": {
@@ -7491,6 +7516,10 @@
7491
7516
  "title": "Sterowanie tablicą",
7492
7517
  "body": "Tymi przyciskami przybliżasz, oddalasz lub dopasowujesz całą tablicę do widoku."
7493
7518
  },
7519
+ "role": {
7520
+ "title": "Twoja rola",
7521
+ "body": "Tablica dostosowuje się do twojej pracy: inżynierowie i menedżerowie produktu widzą wszystkie powierzchnie, projektanci prostszą, która wprowadza pracę i ją śledzi. Możesz to zmienić tutaj w każdej chwili."
7522
+ },
7494
7523
  "interfaceTier": {
7495
7524
  "title": "Tryb podstawowy i zaawansowany",
7496
7525
  "body": "Interfejs startuje w trybie podstawowym, który pokazuje codzienne powierzchnie pracy. Przełącz się tutaj na zaawansowany, gdy potrzebujesz także powierzchni do eksperymentów, zakładania repozytoriów i pracy operacyjnej."
@@ -32,6 +32,25 @@
32
32
  "switchTo": "{mode} moduna geç",
33
33
  "pinned": "Bu dağıtım tarafından belirlendi"
34
34
  },
35
+ "uiRole": {
36
+ "switcher": "Rolünüz",
37
+ "roles": {
38
+ "engineer": "Mühendis",
39
+ "productManager": "Ürün yöneticisi",
40
+ "designer": "Tasarımcı"
41
+ },
42
+ "hints": {
43
+ "engineer": "Her şey: işi planlama, çalıştırma, inceleyip birleştirme ve işin üzerinde koştuğu platformu kurma.",
44
+ "productManager": "Mühendisle aynı yüzeyler: işi planlama, çalıştırma ve birleştirmeye kadar takip etme.",
45
+ "designer": "Daha yalın bir pano: panoda hâlihazırda bulunan servisler, süren işler ve bir tasarımdan ya da sorundan açılan yeni görevler."
46
+ },
47
+ "prompt": {
48
+ "title": "Ne üzerinde çalışıyorsunuz?",
49
+ "intro": "En yakın seçeneği seçin; uygulama o işin ihtiyaç duyduğu yüzeylerle açılır. Bu, NE GÖRDÜĞÜNÜZÜ değiştirir, ne yapabileceğinizi değil.",
50
+ "change": "Bunu kenar çubuğunun üstünden dilediğiniz zaman değiştirebilirsiniz.",
51
+ "later": "Şimdi değil"
52
+ }
53
+ },
35
54
  "common": {
36
55
  "loading": "Yükleniyor…",
37
56
  "save": "Kaydet",
@@ -2204,6 +2223,7 @@
2204
2223
  "pipeline_complete": "Onayla ve birleştir",
2205
2224
  "ci_failed": "Çalıştırmayı yeniden dene",
2206
2225
  "test_failed": "Çalıştırmayı yeniden dene",
2226
+ "deploy_blocked": "Çalıştırmayı yeniden dene",
2207
2227
  "requirement_review": "Okundu olarak işaretle",
2208
2228
  "clarity_review": "Okundu olarak işaretle",
2209
2229
  "release_regression": "Onayla",
@@ -2386,6 +2406,7 @@
2386
2406
  "shortcuts": "Klavye kısayolları",
2387
2407
  "bugHunt": "Hata avı",
2388
2408
  "toggleUiMode": "Arayüz modunu değiştir",
2409
+ "chooseRole": "Rolünüzü değiştirin",
2389
2410
  "foundationalServices": "Temel hizmetler",
2390
2411
  "notificationSettings": "Bildirim yönlendirmesini yönet"
2391
2412
  },
@@ -2410,6 +2431,7 @@
2410
2431
  "shortcuts": "kısayollar klavye tuşlar yardım",
2411
2432
  "bugHunt": "hata bug av önceliklendirme birikmiş kayıt atanmamış",
2412
2433
  "toggleUiMode": "arayüz mod temel gelişmiş göster gizle",
2434
+ "chooseRole": "rol mühendis ürün yöneticisi tasarımcı persona daha yalın görünüm",
2413
2435
  "tutorial": "eğitim tur rehber yardım öğren tanıtım",
2414
2436
  "foundationalServices": "ortak yetenek platform hizmet api sözleşme openapi katalog",
2415
2437
  "notificationSettings": "bildirimler e-posta yönlendirme kanallar gelen kutusu"
@@ -4389,6 +4411,7 @@
4389
4411
  "pipeline_complete": "Pipeline tamamlandı",
4390
4412
  "ci_failed": "CI başarısız",
4391
4413
  "test_failed": "Testler başarısız",
4414
+ "deploy_blocked": "Dağıtım engellendi",
4392
4415
  "requirement_review": "Gereksinim incelemesi",
4393
4416
  "clarity_review": "Netlik incelemesi",
4394
4417
  "release_regression": "Sürüm gerilemesi",
@@ -4452,6 +4475,7 @@
4452
4475
  "pipeline_complete": "Pipeline tamamlandı",
4453
4476
  "ci_failed": "CI başarısız",
4454
4477
  "test_failed": "Testler başarısız",
4478
+ "deploy_blocked": "Dağıtım engellendi",
4455
4479
  "requirement_review": "Gereksinim incelemesi",
4456
4480
  "clarity_review": "Netlik incelemesi",
4457
4481
  "release_regression": "Sürüm gerilemesi",
@@ -7450,6 +7474,7 @@
7450
7474
  "failedRun": "Başarısız olmuş bir çalıştırma",
7451
7475
  "infrastructure": "Bu çalışma alanına bağlı bir yürütme arka ucu",
7452
7476
  "advancedTier": "Gelişmiş arayüz modu",
7477
+ "fullSurface": "Mühendis veya Ürün yöneticisi rolü",
7453
7478
  "designSource": "Bağlı bir tasarım kaynağı"
7454
7479
  },
7455
7480
  "overlay": {
@@ -7491,6 +7516,10 @@
7491
7516
  "title": "Pano denetimleri",
7492
7517
  "body": "Bu denetimlerle yakınlaşır, uzaklaşır veya tüm panoyu görünüme sığdırırsınız."
7493
7518
  },
7519
+ "role": {
7520
+ "title": "Rolünüz",
7521
+ "body": "Pano yaptığınız işe göre ayarlanır: mühendisler ve ürün yöneticileri tüm yüzeyleri görür, tasarımcılar ise işi içeri alıp takip eden daha yalın bir pano kullanır. Bunu buradan dilediğiniz zaman değiştirebilirsiniz."
7522
+ },
7494
7523
  "interfaceTier": {
7495
7524
  "title": "Temel ve gelişmiş",
7496
7525
  "body": "Arayüz, günlük çalışma yüzeylerini gösteren temel modda başlar. Deneme, depo kurma ve işletme yüzeylerini de istediğinizde buradan gelişmiş moda geçin."
@@ -32,6 +32,25 @@
32
32
  "switchTo": "Перейти на {mode}",
33
33
  "pinned": "Визначено цим розгортанням"
34
34
  },
35
+ "uiRole": {
36
+ "switcher": "Ваша роль",
37
+ "roles": {
38
+ "engineer": "Інженер",
39
+ "productManager": "Продукт-менеджер",
40
+ "designer": "Дизайнер"
41
+ },
42
+ "hints": {
43
+ "engineer": "Усе: планувати роботу, запускати її, перевіряти та зливати, а також налаштовувати платформу, на якій це працює.",
44
+ "productManager": "Ті самі поверхні, що й у інженера: планувати роботу, запускати її та супроводжувати до злиття.",
45
+ "designer": "Простіша дошка: сервіси, які вже на ній, робота в процесі та нові завдання з дизайну або звернення."
46
+ },
47
+ "prompt": {
48
+ "title": "Над чим ви працюєте?",
49
+ "intro": "Виберіть найближчий варіант, і застосунок відкриється на поверхнях, потрібних для цієї роботи. Це змінює те, що ви БАЧИТЕ, а не те, що вам дозволено.",
50
+ "change": "Це можна змінити будь-коли вгорі бічної панелі.",
51
+ "later": "Не зараз"
52
+ }
53
+ },
35
54
  "common": {
36
55
  "loading": "Завантаження…",
37
56
  "save": "Зберегти",
@@ -2204,6 +2223,7 @@
2204
2223
  "pipeline_complete": "Підтвердити та злити",
2205
2224
  "ci_failed": "Повторити запуск",
2206
2225
  "test_failed": "Повторити запуск",
2226
+ "deploy_blocked": "Повторити запуск",
2207
2227
  "requirement_review": "Позначити прочитаним",
2208
2228
  "clarity_review": "Позначити прочитаним",
2209
2229
  "release_regression": "Підтвердити отримання",
@@ -2386,6 +2406,7 @@
2386
2406
  "shortcuts": "Комбінації клавіш",
2387
2407
  "bugHunt": "Полювання на помилки",
2388
2408
  "toggleUiMode": "Змінити режим інтерфейсу",
2409
+ "chooseRole": "Змінити роль",
2389
2410
  "foundationalServices": "Базові сервіси",
2390
2411
  "notificationSettings": "Керувати маршрутизацією сповіщень"
2391
2412
  },
@@ -2410,6 +2431,7 @@
2410
2431
  "shortcuts": "комбінації клавіатура клавіші довідка",
2411
2432
  "bugHunt": "помилка баг полювання сортування беклог запити не призначені",
2412
2433
  "toggleUiMode": "інтерфейс режим базовий розширений показати сховати",
2434
+ "chooseRole": "роль інженер продукт-менеджер дизайнер персона простіший вигляд",
2413
2435
  "tutorial": "навчання тур посібник довідка допомога знайомство",
2414
2436
  "foundationalServices": "спільна можливість платформа сервіс api контракт openapi каталог",
2415
2437
  "notificationSettings": "сповіщення пошта маршрутизація канали скринька"
@@ -4389,6 +4411,7 @@
4389
4411
  "pipeline_complete": "Конвеєр завершено",
4390
4412
  "ci_failed": "Збій CI",
4391
4413
  "test_failed": "Збій тестів",
4414
+ "deploy_blocked": "Розгортання заблоковано",
4392
4415
  "requirement_review": "Перевірка вимог",
4393
4416
  "clarity_review": "Перевірка ясності",
4394
4417
  "release_regression": "Регресія випуску",
@@ -4452,6 +4475,7 @@
4452
4475
  "pipeline_complete": "Конвеєр завершено",
4453
4476
  "ci_failed": "Збій CI",
4454
4477
  "test_failed": "Збій тестів",
4478
+ "deploy_blocked": "Розгортання заблоковано",
4455
4479
  "requirement_review": "Перевірка вимог",
4456
4480
  "clarity_review": "Перевірка ясності",
4457
4481
  "release_regression": "Регресія випуску",
@@ -7450,6 +7474,7 @@
7450
7474
  "failedRun": "Запуск, що завершився помилкою",
7451
7475
  "infrastructure": "Бекенд виконання, підключений до цього робочого простору",
7452
7476
  "advancedTier": "Розширений режим інтерфейсу",
7477
+ "fullSurface": "Роль інженера або продукт-менеджера",
7453
7478
  "designSource": "Підключене джерело дизайну"
7454
7479
  },
7455
7480
  "overlay": {
@@ -7491,6 +7516,10 @@
7491
7516
  "title": "Керування дошкою",
7492
7517
  "body": "Цими елементами ви наближаєте, віддаляєте або вміщуєте всю дошку у видиму область."
7493
7518
  },
7519
+ "role": {
7520
+ "title": "Ваша роль",
7521
+ "body": "Дошка налаштовується під вашу роботу: інженери та продукт-менеджери бачать усі поверхні, а дизайнери бачать простішу, яка приносить роботу й супроводжує її. Це можна змінити тут будь-коли."
7522
+ },
7494
7523
  "interfaceTier": {
7495
7524
  "title": "Базовий і розширений режим",
7496
7525
  "body": "Інтерфейс стартує в базовому режимі, який показує щоденні робочі поверхні. Перемкніться тут на розширений, коли потрібні також поверхні для експериментів, створення репозиторіїв і операційної роботи."
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/app",
3
- "version": "0.273.2",
3
+ "version": "0.275.0",
4
4
  "description": "Reusable Nuxt layer for the Agent Architecture Board SPA (components, stores, composables, pages). Consume it from a thin deployment app via `extends: ['@cat-factory/app']` and point it at your backend with NUXT_PUBLIC_API_BASE. See deploy/frontend for an example.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -40,7 +40,7 @@
40
40
  "valibot": "^1.4.2",
41
41
  "vue": "3.5.41",
42
42
  "wretch": "^3.0.9",
43
- "@cat-factory/contracts": "0.313.0"
43
+ "@cat-factory/contracts": "0.314.0"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@toad-contracts/testing": "0.3.2",
@@ -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
- }