@portaki/module-sections 1.0.1 → 1.2.1

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/package.json CHANGED
@@ -1,15 +1,12 @@
1
1
  {
2
2
  "name": "@portaki/module-sections",
3
- "version": "1.0.1",
3
+ "version": "1.2.1",
4
4
  "description": "Portaki module — editorial sections (TipTap)",
5
5
  "license": "AGPL-3.0",
6
6
  "type": "module",
7
7
  "main": "./src/index.tsx",
8
- "scripts": {
9
- "lint": "echo \"no lint yet\""
10
- },
11
8
  "dependencies": {
12
- "@portaki/module-sdk": "0.5.0",
9
+ "@portaki/module-sdk": "^1.0.0",
13
10
  "@portaki/sdk": "^0.5.0",
14
11
  "@tiptap/core": "^3.0.0",
15
12
  "@tiptap/html": "^3.0.0",
@@ -19,7 +16,11 @@
19
16
  },
20
17
  "devDependencies": {
21
18
  "@types/react": "^19",
22
- "typescript": "^5"
19
+ "typescript": "^5",
20
+ "vitest": "^3.0.5",
21
+ "@testing-library/react": "^16.3.0",
22
+ "@testing-library/jest-dom": "^6.6.3",
23
+ "jsdom": "^26.0.0"
23
24
  },
24
25
  "repository": {
25
26
  "type": "git",
@@ -28,5 +29,10 @@
28
29
  },
29
30
  "publishConfig": {
30
31
  "access": "public"
32
+ },
33
+ "scripts": {
34
+ "lint": "echo \"no lint yet\"",
35
+ "test": "vitest run",
36
+ "test:watch": "vitest"
31
37
  }
32
- }
38
+ }
@@ -9,7 +9,26 @@
9
9
  "fr": "Blocs de contenu riches (TipTap) pour le carnet d’accueil invité.",
10
10
  "en": "Rich content blocks (TipTap) for the guest welcome book."
11
11
  },
12
- "version": "1.0.0",
12
+ "version": "1.2.1",
13
+ "releaseNotesUrl": "https://github.com/PortakiApp/portaki-modules/releases",
14
+ "changelog": [
15
+ {
16
+ "version": "1.2.0",
17
+ "date": "2026-05-18",
18
+ "notes": {
19
+ "fr": "Release catalogue modules 1.2.0.",
20
+ "en": "Module catalog release 1.2.0."
21
+ }
22
+ },
23
+ {
24
+ "version": "1.0.0",
25
+ "date": "2026-05-16",
26
+ "notes": {
27
+ "fr": "Première version : sections TipTap, gateway hôte et invité.",
28
+ "en": "Initial release: TipTap sections, host and guest gateway."
29
+ }
30
+ }
31
+ ],
13
32
  "author": {
14
33
  "name": "Portaki",
15
34
  "url": "https://portaki.app",
@@ -17,9 +36,16 @@
17
36
  },
18
37
  "icon": "file-text",
19
38
  "type": "official",
20
- "tags": ["editorial", "content", "sections"],
39
+ "tags": [
40
+ "editorial",
41
+ "content",
42
+ "sections"
43
+ ],
21
44
  "portakiVersionMin": "1.0.0",
22
- "requiresHostSdk": "0.6.0",
45
+ "requiresHostSdk": "1.1.0",
46
+ "database": {
47
+ "schemaVersion": "1.0.0"
48
+ },
23
49
  "license": "AGPL-3.0",
24
50
  "repository": "https://github.com/PortakiApp/portaki-modules",
25
51
  "scopes": [
@@ -68,7 +94,10 @@
68
94
  {
69
95
  "type": "property-workspace-tab",
70
96
  "pathSegment": "sections",
71
- "label": { "fr": "Sections", "en": "Sections" },
97
+ "label": {
98
+ "fr": "Sections",
99
+ "en": "Sections"
100
+ },
72
101
  "icon": "file-text"
73
102
  }
74
103
  ],
@@ -83,6 +112,15 @@
83
112
  },
84
113
  "npmPackage": "@portaki/module-sections",
85
114
  "npmUrl": "https://www.npmjs.com/package/@portaki/module-sections",
86
- "javaArtifact": "app.portaki.module:sections-backend:0.1.0"
115
+ "javaArtifact": "app.portaki.module:sections-backend"
116
+ },
117
+ "runtime": {
118
+ "backend": "wasm",
119
+ "guest": "remote-esm"
120
+ },
121
+ "artifacts": {
122
+ "wasmUrl": "oci://ghcr.io/portakiapp/portaki-module-sections:1.2.0",
123
+ "jarMaven": "app.portaki.module:sections-backend:1.2.0",
124
+ "guestEsmUrl": "https://esm.sh/@portaki/module-sections@1.2.0"
87
125
  }
88
126
  }
package/src/index.tsx CHANGED
@@ -10,7 +10,7 @@ export default definePortakiModule({
10
10
  fr: 'Contenus éditoriaux du carnet d’accueil.',
11
11
  en: 'Welcome book editorial content.',
12
12
  },
13
- version: '1.0.0',
13
+ version: '1.2.0',
14
14
  icon: 'file-text',
15
15
  navSlot: 'section',
16
16
  render: ({ lang }: ModuleContext) => <SectionsGuestView lang={lang} />,
@@ -0,0 +1,8 @@
1
+ import { describe, it } from 'vitest'
2
+ import { validateSiblingManifest } from '@portaki/module-test-support'
3
+
4
+ describe('portaki.module.json', () => {
5
+ it('matches module.v1 schema', () => {
6
+ validateSiblingManifest(import.meta.url)
7
+ })
8
+ })
@@ -0,0 +1,20 @@
1
+ import { describe, expect, it } from 'vitest'
2
+ import { waitFor } from '@testing-library/react'
3
+ import { assertGuestSurface, renderGuestModule } from '@portaki/module-test-support'
4
+
5
+ import moduleDef from './index'
6
+
7
+ describe('@portaki/module-sections', () => {
8
+ it('exposes a valid guest module definition', () => {
9
+ assertGuestSurface(moduleDef)
10
+ })
11
+
12
+ it('renders without crashing', async () => {
13
+ const view =
14
+ moduleDef.surface === 'host' ? renderHostModule(moduleDef) : renderGuestModule(moduleDef)
15
+ await waitFor(() => {
16
+ expect(view.container).toBeTruthy()
17
+ })
18
+ view.unmount()
19
+ })
20
+ })
@@ -0,0 +1,3 @@
1
+ import { portakiModuleVitestConfig } from '@portaki/module-test-support/vitest'
2
+
3
+ export default portakiModuleVitestConfig(import.meta.url)