includio-cms 0.1.0 → 0.1.2
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/CHANGELOG.md +52 -0
- package/ROADMAP.md +17 -15
- package/dist/admin/auth-client.d.ts +1165 -5
- package/dist/admin/auth-client.js +4 -1
- package/dist/admin/client/account/sessions-section.svelte +1 -21
- package/dist/admin/client/index.d.ts +1 -0
- package/dist/admin/client/index.js +1 -0
- package/dist/admin/client/users/accept-invite-page.svelte +118 -0
- package/dist/admin/client/users/accept-invite-page.svelte.d.ts +4 -0
- package/dist/admin/client/users/create-user-dialog.svelte +157 -0
- package/dist/admin/client/users/create-user-dialog.svelte.d.ts +8 -0
- package/dist/admin/client/users/delete-user-dialog.svelte +53 -0
- package/dist/admin/client/users/delete-user-dialog.svelte.d.ts +10 -0
- package/dist/admin/client/users/edit-user-dialog.svelte +127 -0
- package/dist/admin/client/users/edit-user-dialog.svelte.d.ts +16 -0
- package/dist/admin/client/users/invite-user-dialog.svelte +107 -0
- package/dist/admin/client/users/invite-user-dialog.svelte.d.ts +8 -0
- package/dist/admin/client/users/lang.d.ts +57 -0
- package/dist/admin/client/users/lang.js +114 -0
- package/dist/admin/client/users/pending-invitations.svelte +145 -0
- package/dist/admin/client/users/pending-invitations.svelte.d.ts +6 -0
- package/dist/admin/client/users/user-sessions-sheet.svelte +141 -0
- package/dist/admin/client/users/user-sessions-sheet.svelte.d.ts +8 -0
- package/dist/admin/client/users/users-page.svelte +262 -0
- package/dist/admin/client/users/users-page.svelte.d.ts +6 -0
- package/dist/admin/components/fields/array-field.svelte +68 -22
- package/dist/admin/components/fields/field-renderer.svelte +25 -2
- package/dist/admin/components/fields/number-field.svelte +1 -1
- package/dist/admin/components/fields/text-field-wrapper.svelte +56 -1
- package/dist/admin/components/fields/text-field.svelte +2 -2
- package/dist/admin/components/layout/lang.d.ts +1 -0
- package/dist/admin/components/layout/lang.js +4 -2
- package/dist/admin/components/layout/nav-main.svelte +15 -1
- package/dist/admin/remote/invite.d.ts +44 -0
- package/dist/admin/remote/invite.js +44 -0
- package/dist/admin/remote/middleware/auth.d.ts +5 -0
- package/dist/admin/remote/middleware/auth.js +7 -0
- package/dist/admin/utils/parseUserAgent.d.ts +5 -0
- package/dist/admin/utils/parseUserAgent.js +26 -0
- package/dist/components/ui/input-group/input-group-input.svelte.d.ts +1 -1
- package/dist/components/ui/sidebar/sidebar-input.svelte.d.ts +1 -1
- package/dist/core/cms.d.ts +1 -1
- package/dist/core/cms.js +1 -1
- package/dist/core/fields/fieldSchemaToTs.js +18 -4
- package/dist/core/server/forms/submissions/operations/create.js +1 -1
- package/dist/email-nodemailer/index.d.ts +1 -0
- package/dist/server/auth.d.ts +8 -8
- package/dist/server/db/schema/auth-schema.d.ts +143 -0
- package/dist/server/db/schema/auth-schema.js +12 -0
- package/dist/sveltekit/server/handle.js +13 -0
- package/dist/types/cms.d.ts +2 -2
- package/dist/types/roles.d.ts +1 -0
- package/dist/types/roles.js +1 -0
- package/dist/updates/0.1.1/index.d.ts +2 -0
- package/dist/updates/0.1.1/index.js +17 -0
- package/dist/updates/0.1.2/index.d.ts +2 -0
- package/dist/updates/0.1.2/index.js +36 -0
- package/dist/updates/index.js +3 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,58 @@
|
|
|
3
3
|
All notable changes to includio-cms are documented here.
|
|
4
4
|
Generated from `src/lib/updates/` — do not edit manually.
|
|
5
5
|
|
|
6
|
+
## 0.1.2 — 2026-02-18
|
|
7
|
+
|
|
8
|
+
User management & RBAC
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- Role type system (admin/user) with UserRole type
|
|
12
|
+
- RBAC middleware: requireRole() for server-side role checks
|
|
13
|
+
- Admin users page: list, search, pagination via authClient.admin.listUsers
|
|
14
|
+
- Create user dialog: email, password, name, role via authClient.admin.createUser
|
|
15
|
+
- Edit user dialog: name, email, role with self-demotion protection
|
|
16
|
+
- Delete user dialog with self-deletion protection
|
|
17
|
+
- Route gating: /admin/users restricted to admin role
|
|
18
|
+
- Sidebar gating: Users nav item visible only for admins
|
|
19
|
+
- Auth client: adminClient() plugin added
|
|
20
|
+
- CLI: addUser rewritten to use better-auth API with role prompt
|
|
21
|
+
- Admin session management: view/revoke other users' sessions
|
|
22
|
+
- Email invitation system: invite users by email with role assignment
|
|
23
|
+
- Accept invite page: public registration via invite token
|
|
24
|
+
- Pending invitations list with cancel and resend support
|
|
25
|
+
- Email adapter now optional in CMS config
|
|
26
|
+
|
|
27
|
+
### Migration
|
|
28
|
+
|
|
29
|
+
```sql
|
|
30
|
+
CREATE TABLE IF NOT EXISTS invitation (
|
|
31
|
+
id TEXT PRIMARY KEY,
|
|
32
|
+
email TEXT NOT NULL,
|
|
33
|
+
role TEXT NOT NULL DEFAULT 'user',
|
|
34
|
+
token TEXT NOT NULL UNIQUE,
|
|
35
|
+
expires_at TIMESTAMP NOT NULL,
|
|
36
|
+
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
37
|
+
created_by TEXT NOT NULL REFERENCES "user"(id) ON DELETE CASCADE,
|
|
38
|
+
used_at TIMESTAMP
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
CREATE INDEX IF NOT EXISTS invitation_token_idx ON invitation (token);
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## 0.1.1 — 2026-02-18
|
|
45
|
+
|
|
46
|
+
Field constraint UI — visible limits, counters, and hints
|
|
47
|
+
|
|
48
|
+
### Added
|
|
49
|
+
- Text fields: character counter (X / Y) with aria-live, destructive color at limit
|
|
50
|
+
- Text fields: constraint hints (min/max chars, pattern format) in description
|
|
51
|
+
- Text fields: native minlength/maxlength HTML attributes on input/textarea
|
|
52
|
+
- Number fields: native min/max/step HTML attributes on input
|
|
53
|
+
- Number fields: range and step hints in description
|
|
54
|
+
- Array fields: items counter (X / Y) next to label when maxItems defined
|
|
55
|
+
- Array fields: Add/Duplicate buttons disabled at maxItems limit
|
|
56
|
+
- Array fields: fixed-length mode (minItems === maxItems) — pre-populated, reorder only
|
|
57
|
+
|
|
6
58
|
## 0.1.0 — 2026-02-17
|
|
7
59
|
|
|
8
60
|
Stabilization — pagination, language switcher, and more
|
package/ROADMAP.md
CHANGED
|
@@ -22,29 +22,27 @@
|
|
|
22
22
|
|
|
23
23
|
## 0.1.1 — Input integrity
|
|
24
24
|
|
|
25
|
-
- [
|
|
26
|
-
- [
|
|
27
|
-
- [
|
|
28
|
-
- [
|
|
25
|
+
- [x] `[fix]` `[P1]` Input constraints UI — HTML maxlength, character counter, pattern feedback <!-- files: src/lib/admin/components/fields/text-field.svelte, src/lib/admin/components/fields/text-field-wrapper.svelte -->
|
|
26
|
+
- [x] `[fix]` `[P1]` Array field maxItems — disable Add button when max reached <!-- files: src/lib/admin/components/fields/array-field.svelte -->
|
|
27
|
+
- [x] `[feature]` `[P1]` Array field fixed length — fixed item count, no add/remove, reorder only
|
|
28
|
+
- [x] `[feature]` `[P1]` Field constraint info display — show constraints before validation error (WCAG/ATAG) <!-- files: src/lib/admin/components/fields/text-field-wrapper.svelte, src/lib/admin/components/fields/field-renderer.svelte -->
|
|
29
29
|
|
|
30
30
|
## 0.1.2 — User management & RBAC
|
|
31
31
|
|
|
32
32
|
### Phase 1 — Core
|
|
33
33
|
|
|
34
|
-
- [
|
|
35
|
-
- [
|
|
36
|
-
- [
|
|
37
|
-
- [
|
|
38
|
-
- [
|
|
39
|
-
- [
|
|
40
|
-
- [
|
|
34
|
+
- [x] `[feature]` `[P0]` RBAC middleware — `requireRole()`, role check w `requireAuth()` <!-- files: src/lib/admin/remote/middleware/auth.ts -->
|
|
35
|
+
- [x] `[feature]` `[P0]` Admin users page — list, search, pagination via `authClient.admin.listUsers` <!-- files: src/lib/admin/client/users/ -->
|
|
36
|
+
- [x] `[feature]` `[P0]` Create user — dialog z email/password/name/role via `authClient.admin.createUser` <!-- files: src/lib/admin/client/users/create-user-dialog.svelte -->
|
|
37
|
+
- [x] `[feature]` `[P0]` Edit user — name, email, role via `adminUpdateUser` + `setRole` <!-- files: src/lib/admin/client/users/edit-user-dialog.svelte -->
|
|
38
|
+
- [x] `[feature]` `[P0]` Delete user — confirmation dialog via `removeUser` <!-- files: src/lib/admin/client/users/ -->
|
|
39
|
+
- [x] `[feature]` `[P0]` Route/sidebar gating — ukryj Users nav + chroń `/admin/users` dla non-admin <!-- files: src/lib/admin/components/layout/nav-main.svelte, src/lib/sveltekit/server/handle.ts -->
|
|
40
|
+
- [x] `[feature]` `[P0]` First user bootstrap — pierwszy utworzony user auto-gets role `admin` <!-- files: src/lib/server/auth.ts -->
|
|
41
41
|
|
|
42
42
|
### Phase 2 — Extended
|
|
43
43
|
|
|
44
|
-
- [
|
|
45
|
-
- [
|
|
46
|
-
- [ ] `[feature]` `[P1]` Impersonation UI — impersonate/stop bar <!-- files: src/lib/admin/client/users/impersonation-bar.svelte -->
|
|
47
|
-
- [ ] `[feature]` `[P2]` Email invitation system — invite link generation (custom, nie w better-auth) <!-- files: src/lib/core/server/auth/invite.ts -->
|
|
44
|
+
- [x] `[feature]` `[P1]` Admin session mgmt — list/revoke sesji innych userów <!-- files: src/lib/admin/client/users/user-sessions-sheet.svelte -->
|
|
45
|
+
- [x] `[feature]` `[P2]` Email invitation system — invite link generation (custom, nie w better-auth) <!-- files: src/lib/admin/remote/invite.ts -->
|
|
48
46
|
|
|
49
47
|
## 0.2.0 — Plugin system
|
|
50
48
|
|
|
@@ -57,6 +55,8 @@
|
|
|
57
55
|
- [ ] `[feature]` `[P1]` Server-side pagination API (formalize 0.1.0 fix)
|
|
58
56
|
- [ ] `[feature]` `[P1]` Improved type generation <!-- files: src/lib/core/server/generator/ -->
|
|
59
57
|
- [ ] `[feature]` `[P1]` Proper filtering API (SQL-level, not JS post-query)
|
|
58
|
+
- [ ] `[feature]` `[breaking]` `[P1]` Simple array field — `type: 'array'` with `of: 'text' | 'number' | ...` for flat lists (tags, categories) <!-- files: src/lib/types/fields.ts, src/lib/admin/components/fields/array-field.svelte, src/lib/core/fields/fieldSchemaToTs.ts -->
|
|
59
|
+
- [ ] `[feature]` `[breaking]` `[P1]` Rename array → blocks — current array becomes `type: 'blocks'`, keeps `of: ObjectField[]` and accordion/DnD UI <!-- files: src/lib/types/fields.ts, src/lib/admin/components/fields/array-field.svelte, src/lib/admin/components/fields/field-renderer.svelte, src/lib/core/server/fields/resolve*.ts -->
|
|
60
60
|
|
|
61
61
|
## 0.3.0 — Admin experience
|
|
62
62
|
|
|
@@ -87,6 +87,8 @@
|
|
|
87
87
|
|
|
88
88
|
## Backlog
|
|
89
89
|
|
|
90
|
+
- [ ] `[feature]` `[P1]` Ban/unban UI — reason + expiry, `banUser`/`unbanUser` <!-- files: src/lib/admin/client/users/ban-user-dialog.svelte -->
|
|
91
|
+
- [ ] `[feature]` `[P1]` Impersonation UI — impersonate/stop bar <!-- files: src/lib/admin/client/users/impersonation-bar.svelte -->
|
|
90
92
|
- [ ] `[feature]` `[P2]` Alternative richtext editor — Word-like mode, single richtext field instead of blocks
|
|
91
93
|
- [ ] `[chore]` `[P2]` Caching/performance layer (scope TBD)
|
|
92
94
|
- [ ] `[feature]` `[P2]` API/CLI for configuration (setup DX for less technical users)
|