@jskit-ai/agent-docs 0.1.150 → 0.1.151
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/guide/agent/framework/material-3.md +3 -2
- package/guide/agent/framework/ui-operations.md +2 -1
- package/package.json +1 -1
- package/patterns/feature-package/example/booking-engine/package.json +1 -1
- package/patterns/minimal-foundation/PATTERN.md +2 -0
- package/patterns/minimal-foundation/example/AGENTS.md +4 -0
- package/patterns/minimal-foundation/example/Procfile +0 -1
- package/patterns/minimal-foundation/example/package.json +4 -4
- package/patterns/minimal-foundation/example/src/pages/home/index.vue +0 -27
- package/patterns/minimal-foundation/example/tests/e2e/base-shell.spec.ts +1 -1
- package/patterns/page-scaffolding.md +5 -3
- package/patterns/shell-foundation/PATTERN.md +2 -0
- package/patterns/shell-foundation/example/AGENTS.md +4 -0
- package/patterns/shell-foundation/example/Procfile +0 -1
- package/patterns/shell-foundation/example/package.json +5 -5
- package/patterns/shell-foundation/example/packages/main/package.json +1 -1
- package/patterns/shell-foundation/example/src/pages/home/index.vue +5 -31
- package/patterns/shell-foundation/example/src/pages/home/settings/general/index.vue +3 -6
- package/patterns/shell-foundation/example/src/pages/home/settings.vue +0 -19
- package/patterns/shell-foundation/example/tests/e2e/base-shell.spec.ts +1 -1
- package/patterns/ui-contract.md +2 -0
- package/patterns/ui-testing.md +1 -1
- package/reference/autogen/PATTERN_INDEX.md +20 -20
- package/skills/jskit/references/material-3.md +3 -2
- package/skills/jskit/references/pattern-index.md +20 -20
- package/skills/jskit/references/patterns/app/minimal-foundation/PATTERN.md +2 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/AGENTS.md +4 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/Procfile +0 -1
- package/skills/jskit/references/patterns/app/minimal-foundation/example/package.json +4 -4
- package/skills/jskit/references/patterns/app/minimal-foundation/example/src/pages/home/index.vue +0 -27
- package/skills/jskit/references/patterns/app/minimal-foundation/example/tests/e2e/base-shell.spec.ts +1 -1
- package/skills/jskit/references/patterns/app/shell-foundation/PATTERN.md +2 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/AGENTS.md +4 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/Procfile +0 -1
- package/skills/jskit/references/patterns/app/shell-foundation/example/package.json +5 -5
- package/skills/jskit/references/patterns/app/shell-foundation/example/packages/main/package.json +1 -1
- package/skills/jskit/references/patterns/app/shell-foundation/example/src/pages/home/index.vue +5 -31
- package/skills/jskit/references/patterns/app/shell-foundation/example/src/pages/home/settings/general/index.vue +3 -6
- package/skills/jskit/references/patterns/app/shell-foundation/example/src/pages/home/settings.vue +0 -19
- package/skills/jskit/references/patterns/app/shell-foundation/example/tests/e2e/base-shell.spec.ts +1 -1
- package/skills/jskit/references/patterns/auth/supabase-auth/example/package.json +1 -1
- package/skills/jskit/references/patterns/console/console-surface/PATTERN.md +1 -0
- package/skills/jskit/references/patterns/console/console-surface/example/src/pages/console/index.vue +5 -24
- package/skills/jskit/references/patterns/console/console-surface/example/src/pages/console/settings/index.vue +0 -1
- package/skills/jskit/references/patterns/console/console-surface/example/src/pages/console/settings.vue +0 -14
- package/skills/jskit/references/patterns/crud/crud-screen-set/PATTERN.md +1 -0
- package/skills/jskit/references/patterns/crud/crud-screen-set/example/books/BookEditPage.vue +0 -2
- package/skills/jskit/references/patterns/crud/crud-screen-set/example/books/BookListPage.vue +0 -4
- package/skills/jskit/references/patterns/crud/crud-screen-set/example/books/BookNewPage.vue +0 -2
- package/skills/jskit/references/patterns/crud/crud-screen-set/example/books/BookViewPage.vue +0 -1
- package/skills/jskit/references/patterns/crud/json-api-resource-package/example/packages/books/package.json +2 -2
- package/skills/jskit/references/patterns/database/mysql-application/example/package.json +1 -1
- package/skills/jskit/references/patterns/database/postgres-application/example/package.json +1 -1
- package/skills/jskit/references/patterns/realtime/realtime-application/example/package.json +2 -2
- package/skills/jskit/references/patterns/server/feature-package/example/booking-engine/package.json +1 -1
- package/skills/jskit/references/patterns/shell/application-shell/PATTERN.md +1 -0
- package/skills/jskit/references/patterns/shell/application-shell/example/expected-existing/src/pages/home/index.vue +0 -27
- package/skills/jskit/references/patterns/shell/application-shell/example/src/pages/home/index.vue +5 -31
- package/skills/jskit/references/patterns/shell/application-shell/example/src/pages/home/settings/general/index.vue +3 -6
- package/skills/jskit/references/patterns/shell/application-shell/example/src/pages/home/settings.vue +0 -19
- package/skills/jskit/references/patterns/ui/page-and-placement/PATTERN.md +1 -0
- package/skills/jskit/references/patterns/ui/page-and-placement/example/src/pages/home/reports/activity.vue +1 -2
- package/skills/jskit/references/patterns/ui/page-and-placement/example/src/pages/home/reports/overview.vue +1 -2
- package/skills/jskit/references/patterns/ui/page-and-placement/example/src/pages/home/reports.vue +0 -8
- package/skills/jskit/references/patterns/users/account-settings/PATTERN.md +2 -0
- package/skills/jskit/references/patterns/users/account-settings/example/src/components/account/settings/AccountSettingsNotificationsSection.vue +0 -14
- package/skills/jskit/references/patterns/users/account-settings/example/src/components/account/settings/AccountSettingsPreferencesSection.vue +0 -14
- package/skills/jskit/references/patterns/users/account-settings/example/src/components/account/settings/AccountSettingsProfileSection.vue +0 -14
- package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users/package.json +2 -2
- package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users-workspace/package.json +3 -3
- package/skills/jskit/references/patterns/workspaces/workspace-surfaces/PATTERN.md +2 -0
- package/skills/jskit/references/patterns/workspaces/workspace-surfaces/example/src/components/WorkspaceNotFoundCard.vue +3 -14
- package/skills/jskit/references/patterns/workspaces/workspace-surfaces/example/src/pages/admin/workspace/settings/index.vue +0 -8
- package/skills/jskit/references/patterns/workspaces/workspace-surfaces/example/src/pages/admin/workspace/settings.vue +0 -14
- package/skills/jskit/references/patterns/workspaces/workspace-surfaces/example/src/surfaces/admin/index.vue +4 -31
- package/skills/jskit/references/patterns/workspaces/workspace-surfaces/example/src/surfaces/app/index.vue +0 -15
- package/skills/jskit/references/ui-operations.md +2 -1
- package/templates/app/AGENTS.md +4 -0
|
@@ -15,7 +15,7 @@ A concrete Fastify, Vue, and JSKIT application foundation for products that do n
|
|
|
15
15
|
|
|
16
16
|
- Id: `app/minimal-foundation`
|
|
17
17
|
- Keywords: `app`, `fastify`, `foundation`, `minimal`, `server`, `vite`, `vue`
|
|
18
|
-
- Owner: `@jskit-ai/agent-docs@0.1.
|
|
18
|
+
- Owner: `@jskit-ai/agent-docs@0.1.151`
|
|
19
19
|
- Read: [PATTERN.md](patterns/app/minimal-foundation/PATTERN.md)
|
|
20
20
|
- Examples: [example/](patterns/app/minimal-foundation/example/)
|
|
21
21
|
- Requires: `@jskit-ai/http-runtime`, `@jskit-ai/kernel`
|
|
@@ -26,7 +26,7 @@ A concrete JSKIT web application foundation with responsive shell navigation, se
|
|
|
26
26
|
|
|
27
27
|
- Id: `app/shell-foundation`
|
|
28
28
|
- Keywords: `app`, `foundation`, `material`, `navigation`, `placements`, `shell`, `vite`, `vue`
|
|
29
|
-
- Owner: `@jskit-ai/agent-docs@0.1.
|
|
29
|
+
- Owner: `@jskit-ai/agent-docs@0.1.151`
|
|
30
30
|
- Read: [PATTERN.md](patterns/app/shell-foundation/PATTERN.md)
|
|
31
31
|
- Examples: [example/](patterns/app/shell-foundation/example/)
|
|
32
32
|
- Requires: `@jskit-ai/http-runtime`, `@jskit-ai/kernel`, `@jskit-ai/shell-web`
|
|
@@ -37,7 +37,7 @@ Configure an assistant runtime for one application surface and expose its chat a
|
|
|
37
37
|
|
|
38
38
|
- Id: `assistant/assistant-surface`
|
|
39
39
|
- Keywords: `ai`, `assistant`, `chat`, `config`, `environment`, `page`, `placement`, `settings`, `surface`
|
|
40
|
-
- Owner: `@jskit-ai/assistant-runtime@0.1.
|
|
40
|
+
- Owner: `@jskit-ai/assistant-runtime@0.1.150`
|
|
41
41
|
- Read: [PATTERN.md](patterns/assistant/assistant-surface/PATTERN.md)
|
|
42
42
|
- Examples: [example/](patterns/assistant/assistant-surface/example/)
|
|
43
43
|
- Requires: `@jskit-ai/assistant-runtime`, `@jskit-ai/shell-web`
|
|
@@ -48,7 +48,7 @@ Compose JSKIT authentication routes, views, profile controls, and public surface
|
|
|
48
48
|
|
|
49
49
|
- Id: `auth/auth-surface`
|
|
50
50
|
- Keywords: `account`, `auth`, `login`, `logout`, `password`, `placement`, `profile`, `reset`, `surface`
|
|
51
|
-
- Owner: `@jskit-ai/auth-web@0.1.
|
|
51
|
+
- Owner: `@jskit-ai/auth-web@0.1.179`
|
|
52
52
|
- Read: [PATTERN.md](patterns/auth/auth-surface/PATTERN.md)
|
|
53
53
|
- Examples: [example/](patterns/auth/auth-surface/example/)
|
|
54
54
|
- Requires: `@jskit-ai/auth-core`, `@jskit-ai/auth-web`, `@jskit-ai/shell-web`
|
|
@@ -59,7 +59,7 @@ Add Supabase authentication through normal npm composition, explicit environment
|
|
|
59
59
|
|
|
60
60
|
- Id: `auth/supabase-auth`
|
|
61
61
|
- Keywords: `auth`, `authentication`, `oauth`, `sessions`, `supabase`
|
|
62
|
-
- Owner: `@jskit-ai/auth-provider-supabase-core@0.1.
|
|
62
|
+
- Owner: `@jskit-ai/auth-provider-supabase-core@0.1.176`
|
|
63
63
|
- Read: [PATTERN.md](patterns/auth/supabase-auth/PATTERN.md)
|
|
64
64
|
- Examples: [example/](patterns/auth/supabase-auth/example/)
|
|
65
65
|
- Requires: `@jskit-ai/auth-provider-supabase-core`
|
|
@@ -70,7 +70,7 @@ Add a protected administration surface, settings shell, and semantic navigation
|
|
|
70
70
|
|
|
71
71
|
- Id: `console/console-surface`
|
|
72
72
|
- Keywords: `admin`, `console`, `navigation`, `owner`, `placement`, `settings`, `surface`
|
|
73
|
-
- Owner: `@jskit-ai/console-web@0.1.
|
|
73
|
+
- Owner: `@jskit-ai/console-web@0.1.147`
|
|
74
74
|
- Read: [PATTERN.md](patterns/console/console-surface/PATTERN.md)
|
|
75
75
|
- Examples: [example/](patterns/console/console-surface/example/)
|
|
76
76
|
- Requires: `@jskit-ai/console-core`, `@jskit-ai/console-web`, `@jskit-ai/shell-web`
|
|
@@ -81,7 +81,7 @@ Build a routed CRUD user interface as thin application pages over JSKIT's shared
|
|
|
81
81
|
|
|
82
82
|
- Id: `crud/crud-screen-set`
|
|
83
83
|
- Keywords: `actions`, `add`, `crud`, `delete`, `edit`, `filters`, `list`, `material`, `routes`, `view`, `vue`
|
|
84
|
-
- Owner: `@jskit-ai/http-web@0.1.
|
|
84
|
+
- Owner: `@jskit-ai/http-web@0.1.24`
|
|
85
85
|
- Read: [PATTERN.md](patterns/crud/crud-screen-set/PATTERN.md)
|
|
86
86
|
- Examples: [example/](patterns/crud/crud-screen-set/example/)
|
|
87
87
|
- Requires: `@jskit-ai/http-web`, `@jskit-ai/resource-crud-core`
|
|
@@ -92,7 +92,7 @@ Build a complete application-owned CRUD server package from a migration, resourc
|
|
|
92
92
|
|
|
93
93
|
- Id: `crud/json-api-resource-package`
|
|
94
94
|
- Keywords: `actions`, `crud`, `database`, `json-api`, `migration`, `permissions`, `provider`, `repository`, `routes`, `service`
|
|
95
|
-
- Owner: `@jskit-ai/crud-core@0.1.
|
|
95
|
+
- Owner: `@jskit-ai/crud-core@0.1.190`
|
|
96
96
|
- Read: [PATTERN.md](patterns/crud/json-api-resource-package/PATTERN.md)
|
|
97
97
|
- Examples: [example/](patterns/crud/json-api-resource-package/example/)
|
|
98
98
|
- Requires: `@jskit-ai/crud-core`, `@jskit-ai/resource-crud-core`
|
|
@@ -103,7 +103,7 @@ Define an authenticated application resource whose records belong to the current
|
|
|
103
103
|
|
|
104
104
|
- Id: `crud/resource-contract`
|
|
105
105
|
- Keywords: `authenticated`, `crud`, `database`, `owner-scoped`, `resource`, `user`
|
|
106
|
-
- Owner: `@jskit-ai/resource-crud-core@0.1.
|
|
106
|
+
- Owner: `@jskit-ai/resource-crud-core@0.1.121`
|
|
107
107
|
- Read: [PATTERN.md](patterns/crud/resource-contract/PATTERN.md)
|
|
108
108
|
- Examples: [example/](patterns/crud/resource-contract/example/)
|
|
109
109
|
- Requires: `@jskit-ai/resource-crud-core`
|
|
@@ -114,7 +114,7 @@ Configure a JSKIT application for MySQL with a fixed driver, ordinary environmen
|
|
|
114
114
|
|
|
115
115
|
- Id: `database/mysql-application`
|
|
116
116
|
- Keywords: `database`, `knex`, `mariadb`, `migrations`, `mysql`, `mysql2`
|
|
117
|
-
- Owner: `@jskit-ai/database-runtime-mysql@0.1.
|
|
117
|
+
- Owner: `@jskit-ai/database-runtime-mysql@0.1.177`
|
|
118
118
|
- Read: [PATTERN.md](patterns/database/mysql-application/PATTERN.md)
|
|
119
119
|
- Examples: [example/](patterns/database/mysql-application/example/)
|
|
120
120
|
- Requires: `@jskit-ai/database-runtime-mysql`
|
|
@@ -125,7 +125,7 @@ Configure a JSKIT application for PostgreSQL with a fixed driver, ordinary envir
|
|
|
125
125
|
|
|
126
126
|
- Id: `database/postgres-application`
|
|
127
127
|
- Keywords: `database`, `knex`, `migrations`, `pg`, `postgres`, `postgresql`
|
|
128
|
-
- Owner: `@jskit-ai/database-runtime-postgres@0.1.
|
|
128
|
+
- Owner: `@jskit-ai/database-runtime-postgres@0.1.176`
|
|
129
129
|
- Read: [PATTERN.md](patterns/database/postgres-application/PATTERN.md)
|
|
130
130
|
- Examples: [example/](patterns/database/postgres-application/example/)
|
|
131
131
|
- Requires: `@jskit-ai/database-runtime-postgres`
|
|
@@ -136,7 +136,7 @@ Wrap a JSKIT web application in a Capacitor Android shell using native Capacitor
|
|
|
136
136
|
|
|
137
137
|
- Id: `mobile/android-application`
|
|
138
138
|
- Keywords: `android`, `capacitor`, `device`, `mobile`, `native`, `shell`, `webview`
|
|
139
|
-
- Owner: `@jskit-ai/mobile-capacitor@0.1.
|
|
139
|
+
- Owner: `@jskit-ai/mobile-capacitor@0.1.114`
|
|
140
140
|
- Read: [PATTERN.md](patterns/mobile/android-application/PATTERN.md)
|
|
141
141
|
- Examples: [example/](patterns/mobile/android-application/example/)
|
|
142
142
|
- Requires: `@capacitor/android`, `@capacitor/app`, `@capacitor/cli`, `@jskit-ai/mobile-capacitor`
|
|
@@ -147,7 +147,7 @@ Add JSKIT realtime events with an optional Redis backplane and an explicit shell
|
|
|
147
147
|
|
|
148
148
|
- Id: `realtime/realtime-application`
|
|
149
149
|
- Keywords: `realtime`, `redis`, `socket.io`, `sockets`, `status`, `websocket`
|
|
150
|
-
- Owner: `@jskit-ai/realtime@0.1.
|
|
150
|
+
- Owner: `@jskit-ai/realtime@0.1.176`
|
|
151
151
|
- Read: [PATTERN.md](patterns/realtime/realtime-application/PATTERN.md)
|
|
152
152
|
- Examples: [example/](patterns/realtime/realtime-application/example/)
|
|
153
153
|
- Requires: `@jskit-ai/realtime`, `@jskit-ai/shell-web`
|
|
@@ -158,7 +158,7 @@ Define a server feature through explicit capabilities and first-class actions, a
|
|
|
158
158
|
|
|
159
159
|
- Id: `server/feature-package`
|
|
160
160
|
- Keywords: `actions`, `feature`, `json-rest`, `knex`, `orchestration`, `package`, `provider`, `repository`, `routes`, `server`
|
|
161
|
-
- Owner: `@jskit-ai/agent-docs@0.1.
|
|
161
|
+
- Owner: `@jskit-ai/agent-docs@0.1.151`
|
|
162
162
|
- Read: [PATTERN.md](patterns/server/feature-package/PATTERN.md)
|
|
163
163
|
- Examples: [example/](patterns/server/feature-package/example/)
|
|
164
164
|
- Requires: `@jskit-ai/kernel`
|
|
@@ -169,7 +169,7 @@ Compose the JSKIT responsive shell, semantic placements, settings navigation, an
|
|
|
169
169
|
|
|
170
170
|
- Id: `shell/application-shell`
|
|
171
171
|
- Keywords: `adaptive`, `app`, `layout`, `navigation`, `placement`, `responsive`, `settings`, `shell`
|
|
172
|
-
- Owner: `@jskit-ai/shell-web@0.1.
|
|
172
|
+
- Owner: `@jskit-ai/shell-web@0.1.183`
|
|
173
173
|
- Read: [PATTERN.md](patterns/shell/application-shell/PATTERN.md)
|
|
174
174
|
- Examples: [example/](patterns/shell/application-shell/example/)
|
|
175
175
|
- Requires: `@jskit-ai/kernel`, `@jskit-ai/shell-web`
|
|
@@ -180,7 +180,7 @@ Add product routes and shell extensions through file routing, semantic placement
|
|
|
180
180
|
|
|
181
181
|
- Id: `ui/page-and-placement`
|
|
182
182
|
- Keywords: `component`, `navigation`, `outlet`, `page`, `placement`, `routes`, `section`, `shell`, `subpages`, `vue`
|
|
183
|
-
- Owner: `@jskit-ai/shell-web@0.1.
|
|
183
|
+
- Owner: `@jskit-ai/shell-web@0.1.183`
|
|
184
184
|
- Read: [PATTERN.md](patterns/ui/page-and-placement/PATTERN.md)
|
|
185
185
|
- Examples: [example/](patterns/ui/page-and-placement/example/)
|
|
186
186
|
- Requires: `@jskit-ai/kernel`, `@jskit-ai/shell-web`
|
|
@@ -191,7 +191,7 @@ Compose an account settings route and profile, preference, and notification sect
|
|
|
191
191
|
|
|
192
192
|
- Id: `users/account-settings`
|
|
193
193
|
- Keywords: `account`, `notifications`, `preferences`, `profile`, `settings`, `user`, `vue`
|
|
194
|
-
- Owner: `@jskit-ai/users-web@0.1.
|
|
194
|
+
- Owner: `@jskit-ai/users-web@0.1.197`
|
|
195
195
|
- Read: [PATTERN.md](patterns/users/account-settings/PATTERN.md)
|
|
196
196
|
- Examples: [example/](patterns/users/account-settings/example/)
|
|
197
197
|
- Requires: `@jskit-ai/shell-web`, `@jskit-ai/users-core`, `@jskit-ai/users-web`
|
|
@@ -202,7 +202,7 @@ Expose user administration and workspace-scoped member operations through app-ow
|
|
|
202
202
|
|
|
203
203
|
- Id: `users/user-administration-server`
|
|
204
204
|
- Keywords: `account`, `admin`, `member`, `repository`, `resource`, `routes`, `service`, `user`, `workspace`
|
|
205
|
-
- Owner: `@jskit-ai/users-core@0.1.
|
|
205
|
+
- Owner: `@jskit-ai/users-core@0.1.192`
|
|
206
206
|
- Read: [PATTERN.md](patterns/users/user-administration-server/PATTERN.md)
|
|
207
207
|
- Examples: [example/](patterns/users/user-administration-server/example/)
|
|
208
208
|
- Requires: `@jskit-ai/crud-core`, `@jskit-ai/users-core`
|
|
@@ -213,7 +213,7 @@ Configure roles, workspace access policy, invitations, and app-owned invitation
|
|
|
213
213
|
|
|
214
214
|
- Id: `workspaces/workspace-server`
|
|
215
215
|
- Keywords: `access`, `invite`, `membership`, `multitenancy`, `policy`, `role`, `tenancy`, `workspace`
|
|
216
|
-
- Owner: `@jskit-ai/workspaces-core@0.1.
|
|
216
|
+
- Owner: `@jskit-ai/workspaces-core@0.1.157`
|
|
217
217
|
- Read: [PATTERN.md](patterns/workspaces/workspace-server/PATTERN.md)
|
|
218
218
|
- Examples: [example/](patterns/workspaces/workspace-server/example/)
|
|
219
219
|
- Requires: `@jskit-ai/users-core`, `@jskit-ai/workspaces-core`
|
|
@@ -224,7 +224,7 @@ Compose workspace selection, invitation, member administration, settings, and re
|
|
|
224
224
|
|
|
225
225
|
- Id: `workspaces/workspace-surfaces`
|
|
226
226
|
- Keywords: `admin`, `invite`, `member`, `navigation`, `settings`, `surface`, `switcher`, `workspace`
|
|
227
|
-
- Owner: `@jskit-ai/workspaces-web@0.1.
|
|
227
|
+
- Owner: `@jskit-ai/workspaces-web@0.1.158`
|
|
228
228
|
- Read: [PATTERN.md](patterns/workspaces/workspace-surfaces/PATTERN.md)
|
|
229
229
|
- Examples: [example/](patterns/workspaces/workspace-surfaces/example/)
|
|
230
230
|
- Requires: `@jskit-ai/shell-web`, `@jskit-ai/workspaces-core`, `@jskit-ai/workspaces-web`
|
|
@@ -38,6 +38,8 @@ questionnaire or infer tenancy, authentication, or database requirements.
|
|
|
38
38
|
## Invariants
|
|
39
39
|
|
|
40
40
|
- Preserve `.git` and all unrelated project and agent context.
|
|
41
|
+
- Pages start with useful content and actions, never a default page header or
|
|
42
|
+
standalone heading.
|
|
41
43
|
- Refuse or resolve real destination-file collisions before copying.
|
|
42
44
|
- Keep `packages/main` limited to app composition and lightweight glue.
|
|
43
45
|
- Declare `packages/*` as an npm workspace and depend on app-local packages by
|
|
@@ -12,6 +12,10 @@ Before implementation, read the narrow relevant source pattern completely. If
|
|
|
12
12
|
its owner package is installed, prefer that version-matched package-owned copy.
|
|
13
13
|
Do not install an unrelated runtime package only to read documentation.
|
|
14
14
|
|
|
15
|
+
Pages never start with a page header, title block, welcome heading, or other
|
|
16
|
+
standalone heading copy. Start with the useful content and actions. If the user
|
|
17
|
+
wants a heading, they will ask for or add one.
|
|
18
|
+
|
|
15
19
|
Copied pattern source is ordinary application source. Do not add generator
|
|
16
20
|
provenance, receipts, completion ledgers, or tooling-operation history. Keep
|
|
17
21
|
changes scoped to the user request and verify runtime behavior directly.
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"@local/main": "0.1.0",
|
|
36
36
|
"@fastify/static": "^10.1.3",
|
|
37
|
-
"@jskit-ai/kernel": "0.1.
|
|
37
|
+
"@jskit-ai/kernel": "0.1.179",
|
|
38
38
|
"@tanstack/vue-query": "^5.101.0",
|
|
39
39
|
"fastify": "^5.8.5",
|
|
40
40
|
"json-rest-schema": "^1.0.17",
|
|
@@ -42,11 +42,11 @@
|
|
|
42
42
|
"vue": "^3.5.38",
|
|
43
43
|
"vue-router": "^5.1.0",
|
|
44
44
|
"vuetify": "^4.1.2",
|
|
45
|
-
"@jskit-ai/http-runtime": "0.1.
|
|
45
|
+
"@jskit-ai/http-runtime": "0.1.177"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@jskit-ai/config-eslint": "0.1.
|
|
49
|
-
"@jskit-ai/jskit-catalog": "0.1.
|
|
48
|
+
"@jskit-ai/config-eslint": "0.1.176",
|
|
49
|
+
"@jskit-ai/jskit-catalog": "0.1.204",
|
|
50
50
|
"@playwright/test": "1.61.1",
|
|
51
51
|
"@vitejs/plugin-vue": "^6.0.7",
|
|
52
52
|
"eslint": "^10.8.0",
|
package/skills/jskit/references/patterns/app/minimal-foundation/example/src/pages/home/index.vue
CHANGED
|
@@ -1,15 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<section class="home-start-screen d-flex flex-column ga-4">
|
|
3
|
-
<header>
|
|
4
|
-
<p class="text-overline text-medium-emphasis mb-1">Home</p>
|
|
5
|
-
<h1 class="home-start-screen__title">Home base</h1>
|
|
6
|
-
<p class="text-body-2 text-medium-emphasis mb-0">
|
|
7
|
-
The app runtime is online and ready for the first real workflow.
|
|
8
|
-
</p>
|
|
9
|
-
</header>
|
|
10
|
-
|
|
11
3
|
<v-sheet rounded="lg" border class="home-start-screen__panel">
|
|
12
|
-
<h2 class="text-h6 mb-2">No activity yet</h2>
|
|
13
4
|
<p class="text-body-2 text-medium-emphasis mb-0">
|
|
14
5
|
Recent work, saved records, and next actions will appear here once this app has data.
|
|
15
6
|
</p>
|
|
@@ -19,30 +10,12 @@
|
|
|
19
10
|
|
|
20
11
|
<style scoped>
|
|
21
12
|
.home-start-screen {
|
|
22
|
-
--home-start-title-size: 2rem;
|
|
23
13
|
--home-start-panel-padding: 1rem;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
.home-start-screen {
|
|
27
14
|
margin-inline: auto;
|
|
28
15
|
max-width: 48rem;
|
|
29
16
|
}
|
|
30
17
|
|
|
31
|
-
.home-start-screen__title {
|
|
32
|
-
font-size: var(--home-start-title-size);
|
|
33
|
-
font-weight: 700;
|
|
34
|
-
letter-spacing: 0;
|
|
35
|
-
line-height: 1.08;
|
|
36
|
-
margin: 0 0 0.45rem;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
18
|
.home-start-screen__panel {
|
|
40
19
|
padding: var(--home-start-panel-padding);
|
|
41
20
|
}
|
|
42
|
-
|
|
43
|
-
@media (max-width: 640px) {
|
|
44
|
-
.home-start-screen {
|
|
45
|
-
--home-start-title-size: 1.5rem;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
21
|
</style>
|
package/skills/jskit/references/patterns/app/minimal-foundation/example/tests/e2e/base-shell.spec.ts
CHANGED
|
@@ -11,7 +11,7 @@ test.describe("application responsive smoke", () => {
|
|
|
11
11
|
test(`${viewport.name} home route renders without horizontal overflow`, async ({ page }) => {
|
|
12
12
|
await page.setViewportSize(viewport);
|
|
13
13
|
await page.goto("/home");
|
|
14
|
-
await expect(page.
|
|
14
|
+
await expect(page.getByText("Recent work, saved records, and next actions will appear here once this app has data.")).toBeVisible();
|
|
15
15
|
|
|
16
16
|
const dimensions = await page.evaluate(() => ({
|
|
17
17
|
clientWidth: document.documentElement.clientWidth,
|
|
@@ -37,6 +37,8 @@ not convert those choices into a generator questionnaire.
|
|
|
37
37
|
|
|
38
38
|
- Materialize source inside the existing project without disturbing `.git` or
|
|
39
39
|
any existing project/agent context.
|
|
40
|
+
- Pages start with useful content and actions, never a default page header or
|
|
41
|
+
standalone heading.
|
|
40
42
|
- Inspect and resolve file collisions; never force-overwrite product source.
|
|
41
43
|
- Keep placements and topology explicit and use shell public components.
|
|
42
44
|
- Keep one app-owned `npm run develop` entry that runs the API on loopback and
|
|
@@ -12,6 +12,10 @@ Before implementation, read the narrow relevant source pattern completely. If
|
|
|
12
12
|
its owner package is installed, prefer that version-matched package-owned copy.
|
|
13
13
|
Do not install an unrelated runtime package only to read documentation.
|
|
14
14
|
|
|
15
|
+
Pages never start with a page header, title block, welcome heading, or other
|
|
16
|
+
standalone heading copy. Start with the useful content and actions. If the user
|
|
17
|
+
wants a heading, they will ask for or add one.
|
|
18
|
+
|
|
15
19
|
Copied pattern source is ordinary application source. Do not add generator
|
|
16
20
|
provenance, receipts, completion ledgers, or tooling-operation history. Keep
|
|
17
21
|
changes scoped to the user request and verify runtime behavior directly.
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"@local/main": "0.1.0",
|
|
36
36
|
"@fastify/static": "^10.1.3",
|
|
37
|
-
"@jskit-ai/kernel": "0.1.
|
|
37
|
+
"@jskit-ai/kernel": "0.1.179",
|
|
38
38
|
"@tanstack/vue-query": "^5.101.0",
|
|
39
39
|
"fastify": "^5.8.5",
|
|
40
40
|
"json-rest-schema": "^1.0.17",
|
|
@@ -42,13 +42,13 @@
|
|
|
42
42
|
"vue": "^3.5.38",
|
|
43
43
|
"vue-router": "^5.1.0",
|
|
44
44
|
"vuetify": "^4.1.2",
|
|
45
|
-
"@jskit-ai/http-runtime": "0.1.
|
|
45
|
+
"@jskit-ai/http-runtime": "0.1.177",
|
|
46
46
|
"@mdi/js": "^7.4.47",
|
|
47
|
-
"@jskit-ai/shell-web": "0.1.
|
|
47
|
+
"@jskit-ai/shell-web": "0.1.183"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
|
-
"@jskit-ai/config-eslint": "0.1.
|
|
51
|
-
"@jskit-ai/jskit-catalog": "0.1.
|
|
50
|
+
"@jskit-ai/config-eslint": "0.1.176",
|
|
51
|
+
"@jskit-ai/jskit-catalog": "0.1.204",
|
|
52
52
|
"@playwright/test": "1.61.1",
|
|
53
53
|
"@vitejs/plugin-vue": "^6.0.7",
|
|
54
54
|
"eslint": "^10.8.0",
|
package/skills/jskit/references/patterns/app/shell-foundation/example/src/pages/home/index.vue
CHANGED
|
@@ -29,16 +29,9 @@ const healthPending = computed(
|
|
|
29
29
|
|
|
30
30
|
<template>
|
|
31
31
|
<section class="home-surface-screen d-flex flex-column ga-4">
|
|
32
|
-
<
|
|
33
|
-
<div>
|
|
34
|
-
<p class="text-overline text-medium-emphasis mb-1">Home</p>
|
|
35
|
-
<h1 class="home-surface-screen__title">Ready</h1>
|
|
36
|
-
<p class="text-body-2 text-medium-emphasis mb-0">
|
|
37
|
-
Core services are available.
|
|
38
|
-
</p>
|
|
39
|
-
</div>
|
|
32
|
+
<div class="home-surface-screen__actions">
|
|
40
33
|
<v-btn color="primary" variant="flat" to="/home/settings/general">Settings</v-btn>
|
|
41
|
-
</
|
|
34
|
+
</div>
|
|
42
35
|
|
|
43
36
|
<v-sheet rounded="lg" border class="home-surface-screen__panel">
|
|
44
37
|
<div class="home-surface-screen__status">
|
|
@@ -62,23 +55,12 @@ const healthPending = computed(
|
|
|
62
55
|
|
|
63
56
|
<style scoped>
|
|
64
57
|
.home-surface-screen {
|
|
65
|
-
--home-surface-title-size: 2rem;
|
|
66
58
|
--home-surface-panel-padding: 1rem;
|
|
67
59
|
}
|
|
68
60
|
|
|
69
|
-
.home-surface-
|
|
70
|
-
align-items: flex-start;
|
|
61
|
+
.home-surface-screen__actions {
|
|
71
62
|
display: flex;
|
|
72
|
-
|
|
73
|
-
justify-content: space-between;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
.home-surface-screen__title {
|
|
77
|
-
font-size: var(--home-surface-title-size);
|
|
78
|
-
font-weight: 700;
|
|
79
|
-
letter-spacing: 0;
|
|
80
|
-
line-height: 1.1;
|
|
81
|
-
margin: 0 0 0.4rem;
|
|
63
|
+
justify-content: flex-end;
|
|
82
64
|
}
|
|
83
65
|
|
|
84
66
|
.home-surface-screen__panel {
|
|
@@ -100,15 +82,7 @@ const healthPending = computed(
|
|
|
100
82
|
}
|
|
101
83
|
|
|
102
84
|
@media (max-width: 640px) {
|
|
103
|
-
.home-surface-
|
|
104
|
-
--home-surface-title-size: 1.5rem;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
.home-surface-screen__header {
|
|
108
|
-
flex-direction: column;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
.home-surface-screen__header :deep(.v-btn) {
|
|
85
|
+
.home-surface-screen__actions :deep(.v-btn) {
|
|
112
86
|
min-height: 48px;
|
|
113
87
|
width: 100%;
|
|
114
88
|
}
|
|
@@ -16,12 +16,9 @@ const drawerDefaultOpenModel = computed({
|
|
|
16
16
|
|
|
17
17
|
<template>
|
|
18
18
|
<section class="settings-general-screen d-flex flex-column ga-4">
|
|
19
|
-
<
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
On wider screens, collapsed navigation remains available as a rail. Phone layouts close the drawer and keep primary navigation in the bottom bar.
|
|
23
|
-
</p>
|
|
24
|
-
</div>
|
|
19
|
+
<p class="text-body-2 text-medium-emphasis mb-0">
|
|
20
|
+
On wider screens, collapsed navigation remains available as a rail. Phone layouts close the drawer and keep primary navigation in the bottom bar.
|
|
21
|
+
</p>
|
|
25
22
|
|
|
26
23
|
<v-switch
|
|
27
24
|
v-model="drawerDefaultOpenModel"
|
package/skills/jskit/references/patterns/app/shell-foundation/example/src/pages/home/settings.vue
CHANGED
|
@@ -5,12 +5,6 @@ import { RouterView } from "vue-router";
|
|
|
5
5
|
|
|
6
6
|
<template>
|
|
7
7
|
<section class="settings-shell d-flex flex-column ga-4">
|
|
8
|
-
<header>
|
|
9
|
-
<p class="text-overline text-medium-emphasis mb-1">Settings</p>
|
|
10
|
-
<h1 class="settings-shell__title">Home settings</h1>
|
|
11
|
-
<p class="text-body-2 text-medium-emphasis mb-0">Configure shell behavior for this surface.</p>
|
|
12
|
-
</header>
|
|
13
|
-
|
|
14
8
|
<v-sheet rounded="lg" border class="settings-shell__panel">
|
|
15
9
|
<div class="settings-shell__body">
|
|
16
10
|
<nav class="settings-shell__nav" aria-label="Home settings sections">
|
|
@@ -29,18 +23,9 @@ import { RouterView } from "vue-router";
|
|
|
29
23
|
|
|
30
24
|
<style scoped>
|
|
31
25
|
.settings-shell {
|
|
32
|
-
--settings-title-size: 1.85rem;
|
|
33
26
|
--settings-panel-padding: 1rem;
|
|
34
27
|
}
|
|
35
28
|
|
|
36
|
-
.settings-shell__title {
|
|
37
|
-
font-size: var(--settings-title-size);
|
|
38
|
-
font-weight: 650;
|
|
39
|
-
letter-spacing: 0;
|
|
40
|
-
line-height: 1.15;
|
|
41
|
-
margin: 0 0 0.35rem;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
29
|
.settings-shell__panel {
|
|
45
30
|
overflow: hidden;
|
|
46
31
|
}
|
|
@@ -81,10 +66,6 @@ import { RouterView } from "vue-router";
|
|
|
81
66
|
}
|
|
82
67
|
|
|
83
68
|
@media (max-width: 960px) {
|
|
84
|
-
.settings-shell {
|
|
85
|
-
--settings-title-size: 1.35rem;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
69
|
.settings-shell__body {
|
|
89
70
|
grid-template-columns: 1fr;
|
|
90
71
|
}
|
package/skills/jskit/references/patterns/app/shell-foundation/example/tests/e2e/base-shell.spec.ts
CHANGED
|
@@ -11,7 +11,7 @@ test.describe("application responsive smoke", () => {
|
|
|
11
11
|
test(`${viewport.name} home route renders without horizontal overflow`, async ({ page }) => {
|
|
12
12
|
await page.setViewportSize(viewport);
|
|
13
13
|
await page.goto("/home");
|
|
14
|
-
await expect(page.
|
|
14
|
+
await expect(page.getByText("Service health")).toBeVisible();
|
|
15
15
|
|
|
16
16
|
const dimensions = await page.evaluate(() => ({
|
|
17
17
|
clientWidth: document.documentElement.clientWidth,
|
|
@@ -31,6 +31,7 @@ placement, and topology APIs for application composition.
|
|
|
31
31
|
## Invariants
|
|
32
32
|
|
|
33
33
|
- Server policy enforces console access before application actions run.
|
|
34
|
+
- Route pages do not add a page header or standalone heading by default.
|
|
34
35
|
- The surface definition and route pages use the same surface id.
|
|
35
36
|
- The profile switch is visible only to authorized authenticated users.
|
|
36
37
|
- Settings navigation uses semantic placements and responsive topology.
|
package/skills/jskit/references/patterns/console/console-surface/example/src/pages/console/index.vue
CHANGED
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<section class="console-home-screen d-flex flex-column ga-4">
|
|
3
|
-
<
|
|
4
|
-
<div>
|
|
5
|
-
<p class="text-overline text-medium-emphasis mb-1">Console</p>
|
|
6
|
-
<h1 class="console-home-screen__title">Operations Console</h1>
|
|
7
|
-
<p class="text-body-2 text-medium-emphasis mb-0">Operator tools, scripts, and diagnostics.</p>
|
|
8
|
-
</div>
|
|
3
|
+
<div class="console-home-screen__actions">
|
|
9
4
|
<v-btn color="primary" variant="flat" to="/home">Back to home</v-btn>
|
|
10
|
-
</
|
|
5
|
+
</div>
|
|
11
6
|
|
|
12
7
|
<v-sheet rounded="lg" border class="console-home-screen__panel">
|
|
13
8
|
<div class="console-home-screen__status-row">
|
|
@@ -22,19 +17,9 @@
|
|
|
22
17
|
</template>
|
|
23
18
|
|
|
24
19
|
<style scoped>
|
|
25
|
-
.console-home-
|
|
26
|
-
align-items: flex-start;
|
|
20
|
+
.console-home-screen__actions {
|
|
27
21
|
display: flex;
|
|
28
|
-
|
|
29
|
-
justify-content: space-between;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
.console-home-screen__title {
|
|
33
|
-
font-size: clamp(1.5rem, 2.5vw, 2.25rem);
|
|
34
|
-
font-weight: 700;
|
|
35
|
-
letter-spacing: -0.03em;
|
|
36
|
-
line-height: 1.1;
|
|
37
|
-
margin: 0 0 0.4rem;
|
|
22
|
+
justify-content: flex-end;
|
|
38
23
|
}
|
|
39
24
|
|
|
40
25
|
.console-home-screen__panel {
|
|
@@ -50,11 +35,7 @@
|
|
|
50
35
|
}
|
|
51
36
|
|
|
52
37
|
@media (max-width: 640px) {
|
|
53
|
-
.console-home-
|
|
54
|
-
flex-direction: column;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
.console-home-screen__header :deep(.v-btn) {
|
|
38
|
+
.console-home-screen__actions :deep(.v-btn) {
|
|
58
39
|
min-height: 48px;
|
|
59
40
|
width: 100%;
|
|
60
41
|
}
|
|
@@ -5,12 +5,6 @@ import { RouterView } from "vue-router";
|
|
|
5
5
|
|
|
6
6
|
<template>
|
|
7
7
|
<section class="settings-shell d-flex flex-column ga-4">
|
|
8
|
-
<header>
|
|
9
|
-
<p class="text-overline text-medium-emphasis mb-1">Console</p>
|
|
10
|
-
<h1 class="settings-shell__title">Console settings</h1>
|
|
11
|
-
<p class="text-body-2 text-medium-emphasis mb-0">Global configuration and reference data for the whole app.</p>
|
|
12
|
-
</header>
|
|
13
|
-
|
|
14
8
|
<v-sheet rounded="lg" border class="settings-shell__panel">
|
|
15
9
|
<nav class="settings-shell__nav" aria-label="Console settings sections">
|
|
16
10
|
<v-list nav density="compact" class="settings-shell__nav-list">
|
|
@@ -25,14 +19,6 @@ import { RouterView } from "vue-router";
|
|
|
25
19
|
</template>
|
|
26
20
|
|
|
27
21
|
<style scoped>
|
|
28
|
-
.settings-shell__title {
|
|
29
|
-
font-size: clamp(1.35rem, 2vw, 1.85rem);
|
|
30
|
-
font-weight: 650;
|
|
31
|
-
letter-spacing: -0.02em;
|
|
32
|
-
line-height: 1.15;
|
|
33
|
-
margin: 0 0 0.35rem;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
22
|
.settings-shell__panel {
|
|
37
23
|
display: grid;
|
|
38
24
|
gap: 1rem;
|
|
@@ -35,6 +35,7 @@ questionnaire.
|
|
|
35
35
|
|
|
36
36
|
- Route pages stay thin and use `useCrudListScreen()`, `useCrudViewScreen()`,
|
|
37
37
|
or `useCrudAddEditScreen()`.
|
|
38
|
+
- Route pages do not add a page header or standalone heading by default.
|
|
38
39
|
- Transport and validators come from the shared resource contract.
|
|
39
40
|
- Initial visible loading uses structure-matching skeletons; pending buttons use
|
|
40
41
|
stable disabled labels, never spinners.
|
package/skills/jskit/references/patterns/crud/crud-screen-set/example/books/BookEditPage.vue
CHANGED
|
@@ -12,8 +12,6 @@ const routeRecordId = computed(() => String(route.params.bookId || "").trim());
|
|
|
12
12
|
|
|
13
13
|
const screen = useCrudAddEditScreen({
|
|
14
14
|
mode: "edit",
|
|
15
|
-
title: "Edit book",
|
|
16
|
-
subtitle: "Update this catalogue entry.",
|
|
17
15
|
saveLabel: "Save changes",
|
|
18
16
|
cancelTo: "/books/:bookId",
|
|
19
17
|
preserveCancelQuery: true,
|
package/skills/jskit/references/patterns/crud/crud-screen-set/example/books/BookListPage.vue
CHANGED
|
@@ -25,11 +25,7 @@ const screen = useCrudListScreen({
|
|
|
25
25
|
<template>
|
|
26
26
|
<CrudListScreen
|
|
27
27
|
:screen="screen"
|
|
28
|
-
title-label="Books"
|
|
29
|
-
heading-title="My books"
|
|
30
|
-
subtitle="Search and maintain your catalogue."
|
|
31
28
|
create-label="Add book"
|
|
32
|
-
empty-title="No books yet"
|
|
33
29
|
empty-body="Add your first book to begin the catalogue."
|
|
34
30
|
>
|
|
35
31
|
<template #card-fields="{ record, formatListCardValue }">
|
package/skills/jskit/references/patterns/crud/crud-screen-set/example/books/BookViewPage.vue
CHANGED
|
@@ -30,7 +30,6 @@ const deleteAction = useCrudDeleteAction({
|
|
|
30
30
|
:screen="screen"
|
|
31
31
|
resource-singular-title="Book"
|
|
32
32
|
resource-plural-title="Books"
|
|
33
|
-
description="Review this catalogue entry."
|
|
34
33
|
>
|
|
35
34
|
<template #actions>
|
|
36
35
|
<CrudDeleteAction :action="deleteAction" resource-singular-title="Book" />
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
"./shared": "./src/shared/index.js"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@jskit-ai/crud-core": "0.1.
|
|
12
|
-
"@jskit-ai/resource-crud-core": "0.1.
|
|
11
|
+
"@jskit-ai/crud-core": "0.1.190",
|
|
12
|
+
"@jskit-ai/resource-crud-core": "0.1.121"
|
|
13
13
|
},
|
|
14
14
|
"jskit": {
|
|
15
15
|
"kind": "runtime",
|