@cat-factory/app 0.274.0 → 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.
- package/README.md +69 -2
- package/app/components/board/nodes/BlockNode.vue +7 -1
- 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/composables/useNavContributions.ts +3 -0
- 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/launchPrompt.ts +63 -0
- 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/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 +26 -0
- package/i18n/locales/en.json +32 -0
- package/i18n/locales/es.json +26 -0
- package/i18n/locales/fr.json +26 -0
- package/i18n/locales/he.json +26 -0
- package/i18n/locales/it.json +26 -0
- package/i18n/locales/ja.json +26 -0
- package/i18n/locales/pl.json +26 -0
- package/i18n/locales/tr.json +26 -0
- package/i18n/locales/uk.json +26 -0
- package/package.json +1 -1
- package/app/stores/tutorial.prompt.ts +0 -59
package/i18n/locales/tr.json
CHANGED
|
@@ -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",
|
|
@@ -2387,6 +2406,7 @@
|
|
|
2387
2406
|
"shortcuts": "Klavye kısayolları",
|
|
2388
2407
|
"bugHunt": "Hata avı",
|
|
2389
2408
|
"toggleUiMode": "Arayüz modunu değiştir",
|
|
2409
|
+
"chooseRole": "Rolünüzü değiştirin",
|
|
2390
2410
|
"foundationalServices": "Temel hizmetler",
|
|
2391
2411
|
"notificationSettings": "Bildirim yönlendirmesini yönet"
|
|
2392
2412
|
},
|
|
@@ -2411,6 +2431,7 @@
|
|
|
2411
2431
|
"shortcuts": "kısayollar klavye tuşlar yardım",
|
|
2412
2432
|
"bugHunt": "hata bug av önceliklendirme birikmiş kayıt atanmamış",
|
|
2413
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",
|
|
2414
2435
|
"tutorial": "eğitim tur rehber yardım öğren tanıtım",
|
|
2415
2436
|
"foundationalServices": "ortak yetenek platform hizmet api sözleşme openapi katalog",
|
|
2416
2437
|
"notificationSettings": "bildirimler e-posta yönlendirme kanallar gelen kutusu"
|
|
@@ -7453,6 +7474,7 @@
|
|
|
7453
7474
|
"failedRun": "Başarısız olmuş bir çalıştırma",
|
|
7454
7475
|
"infrastructure": "Bu çalışma alanına bağlı bir yürütme arka ucu",
|
|
7455
7476
|
"advancedTier": "Gelişmiş arayüz modu",
|
|
7477
|
+
"fullSurface": "Mühendis veya Ürün yöneticisi rolü",
|
|
7456
7478
|
"designSource": "Bağlı bir tasarım kaynağı"
|
|
7457
7479
|
},
|
|
7458
7480
|
"overlay": {
|
|
@@ -7494,6 +7516,10 @@
|
|
|
7494
7516
|
"title": "Pano denetimleri",
|
|
7495
7517
|
"body": "Bu denetimlerle yakınlaşır, uzaklaşır veya tüm panoyu görünüme sığdırırsınız."
|
|
7496
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
|
+
},
|
|
7497
7523
|
"interfaceTier": {
|
|
7498
7524
|
"title": "Temel ve gelişmiş",
|
|
7499
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."
|
package/i18n/locales/uk.json
CHANGED
|
@@ -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": "Зберегти",
|
|
@@ -2387,6 +2406,7 @@
|
|
|
2387
2406
|
"shortcuts": "Комбінації клавіш",
|
|
2388
2407
|
"bugHunt": "Полювання на помилки",
|
|
2389
2408
|
"toggleUiMode": "Змінити режим інтерфейсу",
|
|
2409
|
+
"chooseRole": "Змінити роль",
|
|
2390
2410
|
"foundationalServices": "Базові сервіси",
|
|
2391
2411
|
"notificationSettings": "Керувати маршрутизацією сповіщень"
|
|
2392
2412
|
},
|
|
@@ -2411,6 +2431,7 @@
|
|
|
2411
2431
|
"shortcuts": "комбінації клавіатура клавіші довідка",
|
|
2412
2432
|
"bugHunt": "помилка баг полювання сортування беклог запити не призначені",
|
|
2413
2433
|
"toggleUiMode": "інтерфейс режим базовий розширений показати сховати",
|
|
2434
|
+
"chooseRole": "роль інженер продукт-менеджер дизайнер персона простіший вигляд",
|
|
2414
2435
|
"tutorial": "навчання тур посібник довідка допомога знайомство",
|
|
2415
2436
|
"foundationalServices": "спільна можливість платформа сервіс api контракт openapi каталог",
|
|
2416
2437
|
"notificationSettings": "сповіщення пошта маршрутизація канали скринька"
|
|
@@ -7453,6 +7474,7 @@
|
|
|
7453
7474
|
"failedRun": "Запуск, що завершився помилкою",
|
|
7454
7475
|
"infrastructure": "Бекенд виконання, підключений до цього робочого простору",
|
|
7455
7476
|
"advancedTier": "Розширений режим інтерфейсу",
|
|
7477
|
+
"fullSurface": "Роль інженера або продукт-менеджера",
|
|
7456
7478
|
"designSource": "Підключене джерело дизайну"
|
|
7457
7479
|
},
|
|
7458
7480
|
"overlay": {
|
|
@@ -7494,6 +7516,10 @@
|
|
|
7494
7516
|
"title": "Керування дошкою",
|
|
7495
7517
|
"body": "Цими елементами ви наближаєте, віддаляєте або вміщуєте всю дошку у видиму область."
|
|
7496
7518
|
},
|
|
7519
|
+
"role": {
|
|
7520
|
+
"title": "Ваша роль",
|
|
7521
|
+
"body": "Дошка налаштовується під вашу роботу: інженери та продукт-менеджери бачать усі поверхні, а дизайнери бачать простішу, яка приносить роботу й супроводжує її. Це можна змінити тут будь-коли."
|
|
7522
|
+
},
|
|
7497
7523
|
"interfaceTier": {
|
|
7498
7524
|
"title": "Базовий і розширений режим",
|
|
7499
7525
|
"body": "Інтерфейс стартує в базовому режимі, який показує щоденні робочі поверхні. Перемкніться тут на розширений, коли потрібні також поверхні для експериментів, створення репозиторіїв і операційної роботи."
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cat-factory/app",
|
|
3
|
-
"version": "0.
|
|
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",
|
|
@@ -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
|
-
}
|