@live-change/frontend-template 0.9.201 → 0.9.204

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 (54) hide show
  1. package/.claude/rules/live-change-backend-actions-views-triggers.md +49 -1
  2. package/.claude/rules/live-change-backend-architecture.md +5 -5
  3. package/.claude/rules/live-change-backend-event-sourcing.md +2 -2
  4. package/.claude/rules/live-change-backend-models-and-relations.md +65 -8
  5. package/.claude/rules/live-change-frontend-e2e-lifecycle.md +42 -0
  6. package/.claude/rules/live-change-frontend-i18n-locales.md +25 -0
  7. package/.claude/rules/live-change-frontend-vue-primevue.md +100 -4
  8. package/.claude/rules/live-change-node-toolchain-fnm.md +39 -0
  9. package/.claude/rules/live-change-service-structure.md +2 -2
  10. package/.claude/settings.json +3 -1
  11. package/.claude/skills/create-skills-and-rules/SKILL.md +23 -0
  12. package/.claude/skills/live-change-backend-change-triggers/SKILL.md +15 -0
  13. package/.claude/skills/live-change-dao-protocol/SKILL.md +46 -0
  14. package/.claude/skills/live-change-design-actions-views-triggers/SKILL.md +116 -0
  15. package/.claude/skills/live-change-design-models-relations/SKILL.md +63 -5
  16. package/.claude/skills/live-change-frontend-command-forms/SKILL.md +6 -5
  17. package/.claude/skills/live-change-frontend-data-views/SKILL.md +75 -4
  18. package/.claude/skills/live-change-frontend-e2e-lifecycle/SKILL.md +82 -0
  19. package/.claude/skills/live-change-frontend-range-list/SKILL.md +90 -0
  20. package/.claude/skills/live-change-frontend-synchronized/SKILL.md +101 -0
  21. package/.claude/skills/live-change-node-toolchain-fnm/SKILL.md +44 -0
  22. package/.cursor/rules/live-change-backend-actions-views-triggers.mdc +58 -4
  23. package/.cursor/rules/live-change-backend-architecture.mdc +1 -1
  24. package/.cursor/rules/live-change-backend-event-sourcing.mdc +1 -1
  25. package/.cursor/rules/live-change-backend-models-and-relations.mdc +69 -7
  26. package/.cursor/rules/live-change-backend-views-vs-triggers-for-reads-writes.mdc +28 -0
  27. package/.cursor/rules/live-change-dao-protocol.mdc +47 -0
  28. package/.cursor/rules/live-change-frontend-e2e-lifecycle.mdc +15 -0
  29. package/.cursor/rules/live-change-frontend-i18n-locales.mdc +26 -0
  30. package/.cursor/rules/live-change-frontend-views-not-commands-for-reads.mdc +30 -0
  31. package/.cursor/rules/live-change-frontend-vue-primevue.mdc +91 -0
  32. package/.cursor/rules/live-change-node-toolchain-fnm.mdc +40 -0
  33. package/.cursor/rules/live-change-service-structure.mdc +1 -1
  34. package/.cursor/skills/create-skills-and-rules.md +23 -0
  35. package/.cursor/skills/live-change-backend-change-triggers.md +15 -0
  36. package/.cursor/skills/live-change-design-actions-views-triggers.md +57 -0
  37. package/.cursor/skills/live-change-design-models-relations.md +23 -5
  38. package/.cursor/skills/live-change-frontend-command-forms.md +6 -5
  39. package/.cursor/skills/live-change-frontend-data-views.md +17 -0
  40. package/.cursor/skills/live-change-frontend-e2e-lifecycle.md +82 -0
  41. package/.cursor/skills/live-change-frontend-range-list.md +45 -0
  42. package/.cursor/skills/live-change-frontend-synchronized.md +101 -0
  43. package/.cursor/skills/live-change-node-toolchain-fnm.md +44 -0
  44. package/.node-version +1 -0
  45. package/.nvmrc +1 -0
  46. package/README.md +18 -0
  47. package/e2e/client-session.test.ts +17 -0
  48. package/e2e/e2eSuite.ts +12 -0
  49. package/e2e/env.ts +130 -0
  50. package/e2e/homepage.test.ts +17 -0
  51. package/e2e/steps.ts +3 -0
  52. package/e2e/withBrowser.ts +18 -0
  53. package/opencode.json +4 -1
  54. package/package.json +55 -53
@@ -0,0 +1,17 @@
1
+ import test from 'node:test'
2
+ import assert from 'node:assert'
3
+ import { withBrowser } from './withBrowser.js'
4
+ import { e2eSuite } from './e2eSuite.js'
5
+
6
+ e2eSuite('homepage', () => {
7
+ test('homepage responds and renders html', async () => {
8
+ await withBrowser(async (page, env) => {
9
+ const response = await page.goto(env.url + '/', { waitUntil: 'networkidle' })
10
+ assert.ok(response, 'navigation returned response')
11
+ assert.ok(response!.ok(), 'homepage responds with success status')
12
+
13
+ const html = await page.content()
14
+ assert.ok(html.includes('<html'), 'page content contains html tag')
15
+ })
16
+ })
17
+ })
package/e2e/steps.ts ADDED
@@ -0,0 +1,3 @@
1
+ export async function sleep(ms: number): Promise<unknown> {
2
+ return new Promise((resolve) => setTimeout(resolve, ms))
3
+ }
@@ -0,0 +1,18 @@
1
+ import { chromium } from 'playwright'
2
+ import type { Page } from 'playwright'
3
+ import { getTestEnv, type TestEnv } from './env.js'
4
+
5
+ export async function withBrowser(
6
+ fn: (page: Page, env: TestEnv) => Promise<void>
7
+ ): Promise<void> {
8
+ const env = await getTestEnv()
9
+ const browser = await chromium.launch({ headless: process.env.SHOW_BROWSER ? false : true })
10
+ const context = await browser.newContext()
11
+ const page = await context.newPage()
12
+ try {
13
+ await fn(page, env)
14
+ } finally {
15
+ await context.close()
16
+ await browser.close()
17
+ }
18
+ }
package/opencode.json CHANGED
@@ -1,10 +1,13 @@
1
1
  {
2
2
  "$schema": "https://opencode.ai/config.json",
3
3
  "instructions": [
4
+ ".claude/rules/live-change-node-toolchain-fnm.md",
4
5
  ".claude/rules/live-change-backend-architecture.md",
5
6
  ".claude/rules/live-change-backend-actions-views-triggers.md",
6
7
  ".claude/rules/live-change-backend-models-and-relations.md",
7
8
  ".claude/rules/live-change-service-structure.md",
8
- ".claude/rules/live-change-frontend-vue-primevue.md"
9
+ ".claude/rules/live-change-frontend-vue-primevue.md",
10
+ ".claude/rules/live-change-frontend-i18n-locales.md",
11
+ ".claude/rules/live-change-frontend-e2e-lifecycle.md"
9
12
  ]
10
13
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@live-change/frontend-template",
3
- "version": "0.9.201",
3
+ "version": "0.9.204",
4
4
  "scripts": {
5
5
  "memDev": "tsx --inspect --expose-gc server/start.js memDev --enableSessions --initScript ./init.js --dbAccess",
6
6
  "localDevInit": "tsx server/start.js localDev --enableSessions --initScript ./init.js --dbAccess",
@@ -38,63 +38,65 @@
38
38
  "prerenderLocal": "cross-env NODE_ENV=production node dist/server/start.js prerender --enableSessions --withDb --createDb --withApi --withServices --updateServices",
39
39
  "prerenderTsx": "cross-env NODE_ENV=production tsx server/start.js prerender --enableSessions",
40
40
  "prerenderMemTsx": "cross-env NODE_ENV=production tsx server/start.js prerender --enableSessions --withDb --dbBackend mem --createDb --withApi --withServices --updateServices",
41
- "prerenderLocalTsx": "cross-env NODE_ENV=production tsx server/start.js prerender --enableSessions --withDb --createDb --withApi --withServices --updateServices"
41
+ "prerenderLocalTsx": "cross-env NODE_ENV=production tsx server/start.js prerender --enableSessions --withDb --createDb --withApi --withServices --updateServices",
42
+ "e2e": "tsx --test e2e/*.test.ts",
43
+ "e2e:headed": "SHOW_BROWSER=1 tsx --test e2e/*.test.ts"
42
44
  },
43
45
  "type": "module",
44
46
  "dependencies": {
45
47
  "@codemirror/language": "6.10.1",
46
48
  "@dotenvx/dotenvx": "0.27.0",
47
49
  "@fortawesome/fontawesome-free": "^6.7.2",
48
- "@live-change/access-control-frontend": "^0.9.201",
49
- "@live-change/access-control-service": "^0.9.201",
50
- "@live-change/agreement-service": "^0.9.201",
51
- "@live-change/backup-service": "^0.9.201",
52
- "@live-change/blog-frontend": "^0.9.201",
53
- "@live-change/blog-service": "^0.9.201",
54
- "@live-change/cli": "^0.9.201",
55
- "@live-change/content-frontend": "^0.9.201",
56
- "@live-change/content-service": "^0.9.201",
57
- "@live-change/cron-service": "^0.9.201",
58
- "@live-change/dao": "^0.9.201",
59
- "@live-change/dao-vue3": "^0.9.201",
60
- "@live-change/dao-websocket": "^0.9.201",
61
- "@live-change/db-client": "^0.9.201",
62
- "@live-change/draft-service": "^0.9.201",
63
- "@live-change/email-service": "^0.9.201",
64
- "@live-change/framework": "^0.9.201",
65
- "@live-change/frontend-auto-form": "^0.9.201",
66
- "@live-change/frontend-base": "^0.9.201",
67
- "@live-change/geoip-service": "^0.9.201",
68
- "@live-change/google-authentication-service": "^0.9.201",
69
- "@live-change/image-frontend": "^0.9.201",
70
- "@live-change/linkedin-authentication-service": "^0.9.201",
71
- "@live-change/locale-settings-service": "^0.9.201",
72
- "@live-change/notification-service": "^0.9.201",
73
- "@live-change/password-authentication-service": "^0.9.201",
74
- "@live-change/peer-connection-frontend": "^0.9.201",
75
- "@live-change/peer-connection-service": "^0.9.201",
76
- "@live-change/prosemirror-service": "^0.9.201",
77
- "@live-change/scope-service": "^0.9.201",
78
- "@live-change/secret-code-service": "^0.9.201",
79
- "@live-change/secret-link-service": "^0.9.201",
80
- "@live-change/security-service": "^0.9.201",
81
- "@live-change/session-service": "^0.9.201",
82
- "@live-change/task-frontend": "^0.9.201",
83
- "@live-change/task-service": "^0.9.201",
84
- "@live-change/timer-service": "^0.9.201",
85
- "@live-change/upload-frontend": "^0.9.201",
86
- "@live-change/upload-service": "^0.9.201",
87
- "@live-change/url-frontend": "^0.9.201",
88
- "@live-change/url-service": "^0.9.201",
89
- "@live-change/user-frontend": "^0.9.201",
90
- "@live-change/user-identification-service": "^0.9.201",
91
- "@live-change/user-service": "^0.9.201",
92
- "@live-change/video-call-frontend": "^0.9.201",
93
- "@live-change/video-call-service": "^0.9.201",
94
- "@live-change/vote-service": "^0.9.201",
95
- "@live-change/vue3-components": "^0.9.201",
96
- "@live-change/vue3-ssr": "^0.9.201",
97
- "@live-change/wysiwyg-frontend": "^0.9.201",
50
+ "@live-change/access-control-frontend": "^0.9.204",
51
+ "@live-change/access-control-service": "^0.9.204",
52
+ "@live-change/agreement-service": "^0.9.204",
53
+ "@live-change/backup-service": "^0.9.204",
54
+ "@live-change/blog-frontend": "^0.9.204",
55
+ "@live-change/blog-service": "^0.9.204",
56
+ "@live-change/cli": "^0.9.204",
57
+ "@live-change/content-frontend": "^0.9.204",
58
+ "@live-change/content-service": "^0.9.204",
59
+ "@live-change/cron-service": "^0.9.204",
60
+ "@live-change/dao": "^0.9.204",
61
+ "@live-change/dao-vue3": "^0.9.204",
62
+ "@live-change/dao-websocket": "^0.9.204",
63
+ "@live-change/db-client": "^0.9.204",
64
+ "@live-change/draft-service": "^0.9.204",
65
+ "@live-change/email-service": "^0.9.204",
66
+ "@live-change/framework": "^0.9.204",
67
+ "@live-change/frontend-auto-form": "^0.9.204",
68
+ "@live-change/frontend-base": "^0.9.204",
69
+ "@live-change/geoip-service": "^0.9.204",
70
+ "@live-change/google-authentication-service": "^0.9.204",
71
+ "@live-change/image-frontend": "^0.9.204",
72
+ "@live-change/linkedin-authentication-service": "^0.9.204",
73
+ "@live-change/locale-settings-service": "^0.9.204",
74
+ "@live-change/notification-service": "^0.9.204",
75
+ "@live-change/password-authentication-service": "^0.9.204",
76
+ "@live-change/peer-connection-frontend": "^0.9.204",
77
+ "@live-change/peer-connection-service": "^0.9.204",
78
+ "@live-change/prosemirror-service": "^0.9.204",
79
+ "@live-change/scope-service": "^0.9.204",
80
+ "@live-change/secret-code-service": "^0.9.204",
81
+ "@live-change/secret-link-service": "^0.9.204",
82
+ "@live-change/security-service": "^0.9.204",
83
+ "@live-change/session-service": "^0.9.204",
84
+ "@live-change/task-frontend": "^0.9.204",
85
+ "@live-change/task-service": "^0.9.204",
86
+ "@live-change/timer-service": "^0.9.204",
87
+ "@live-change/upload-frontend": "^0.9.204",
88
+ "@live-change/upload-service": "^0.9.204",
89
+ "@live-change/url-frontend": "^0.9.204",
90
+ "@live-change/url-service": "^0.9.204",
91
+ "@live-change/user-frontend": "^0.9.204",
92
+ "@live-change/user-identification-service": "^0.9.204",
93
+ "@live-change/user-service": "^0.9.204",
94
+ "@live-change/video-call-frontend": "^0.9.204",
95
+ "@live-change/video-call-service": "^0.9.204",
96
+ "@live-change/vote-service": "^0.9.204",
97
+ "@live-change/vue3-components": "^0.9.204",
98
+ "@live-change/vue3-ssr": "^0.9.204",
99
+ "@live-change/wysiwyg-frontend": "^0.9.204",
98
100
  "@vueuse/core": "^12.3.0",
99
101
  "codeceptjs-assert": "^0.0.5",
100
102
  "compression": "^1.7.5",
@@ -127,5 +129,5 @@
127
129
  "author": "Michał Łaszczewski <michal@laszczewski.pl>",
128
130
  "license": "ISC",
129
131
  "description": "",
130
- "gitHead": "c9d7d6987de61d4f4cfa04e583b94150ade7c7bf"
132
+ "gitHead": "6ac17ccf3c184ca4d7ef920f63827dbfd8749f96"
131
133
  }