@jchat/create-addon 1.0.0-alpha.30 → 1.0.0-alpha.32
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 +20 -0
- package/README.md +1 -2
- package/dist/generator.mjs +9 -9
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @jchat/create-addon
|
|
2
2
|
|
|
3
|
+
## 1.0.0-alpha.32
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Bumped `@jchat/*` dependencies:
|
|
8
|
+
- [`addon-sdk@1.0.0-alpha.32`](https://github.com/jchatcloud/jchat/releases/tag/addon-sdk@v1.0.0-alpha.32)
|
|
9
|
+
|
|
10
|
+
## 1.0.0-alpha.31
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- Update addon test template for mandatory English and optional host translations
|
|
15
|
+
|
|
16
|
+
- Update addon scaffolding templates to import UI and icons from @jchat/addon-sdk/ui
|
|
17
|
+
|
|
18
|
+
- Upgrade package type-checking to native bun check for faster validation
|
|
19
|
+
|
|
20
|
+
- Bumped `@jchat/*` dependencies:
|
|
21
|
+
- [`addon-sdk@1.0.0-alpha.31`](https://github.com/jchatcloud/jchat/releases/tag/addon-sdk@v1.0.0-alpha.31)
|
|
22
|
+
|
|
3
23
|
## 1.0.0-alpha.30
|
|
4
24
|
|
|
5
25
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -183,8 +183,7 @@ Addons mount into specific extension slots across the host application:
|
|
|
183
183
|
Generated addons import exclusively from `@jchat/addon-sdk` subpaths:
|
|
184
184
|
|
|
185
185
|
- **`@jchat/addon-sdk`**: Manifest definitions, backend Elysia server utilities, permissions, contracts, and lifecycle types.
|
|
186
|
-
- **`@jchat/addon-sdk/ui`**: Base UI component library, design tokens,
|
|
187
|
-
- **`@jchat/addon-sdk/icon`**: Centralized icon pack with direct TypeScript definitions (`import Icons from "@jchat/addon-sdk/icon"`).
|
|
186
|
+
- **`@jchat/addon-sdk/ui`**: Base UI component library, design tokens, unified `toast` notifications, and icons (`import { Button, Icons, toast } from "@jchat/addon-sdk/ui"`).
|
|
188
187
|
- **`@jchat/addon-sdk/state`**: Shared atomic state powered by Jotai (`import { atom, useAtom } from "@jchat/addon-sdk/state"`).
|
|
189
188
|
|
|
190
189
|
---
|
package/dist/generator.mjs
CHANGED
|
@@ -100,7 +100,7 @@ export default (
|
|
|
100
100
|
}
|
|
101
101
|
`}function c(e,t,n){return n?`import type { AddonProps } from "@jchat/addon-sdk"
|
|
102
102
|
import { useAddonMutation, useAddonQuery, useAddonSDK, useTranslation } from "@jchat/addon-sdk"
|
|
103
|
-
import Icons from "@jchat/addon-sdk/
|
|
103
|
+
import { Icons } from "@jchat/addon-sdk/ui"
|
|
104
104
|
import { useState } from "react"
|
|
105
105
|
import locales from "./locales"
|
|
106
106
|
import "./tailwind.css"
|
|
@@ -209,7 +209,7 @@ export default function Addon({ mountPoint, roomId }: AddonProps) {
|
|
|
209
209
|
}
|
|
210
210
|
`:`import type { AddonProps } from "@jchat/addon-sdk"
|
|
211
211
|
import { useAddonSDK, useTranslation } from "@jchat/addon-sdk"
|
|
212
|
-
import Icons from "@jchat/addon-sdk/
|
|
212
|
+
import { Icons } from "@jchat/addon-sdk/ui"
|
|
213
213
|
import locales from "./locales"
|
|
214
214
|
import "./tailwind.css"
|
|
215
215
|
|
|
@@ -435,7 +435,7 @@ import { validateAddonLocales } from "@jchat/addon-sdk/i18n-validator"
|
|
|
435
435
|
import * as path from "node:path"
|
|
436
436
|
|
|
437
437
|
describe("addon locales", () => {
|
|
438
|
-
test("
|
|
438
|
+
test("validates mandatory English locale and host translations", () => {
|
|
439
439
|
const localesDir = path.join(import.meta.dir, "locales")
|
|
440
440
|
const result = validateAddonLocales(localesDir)
|
|
441
441
|
if (!result.valid) {
|
|
@@ -460,7 +460,7 @@ describe("addon locales", () => {
|
|
|
460
460
|
const manifest: AddonManifest = ${JSON.stringify(e,null,2)}
|
|
461
461
|
|
|
462
462
|
export default manifest
|
|
463
|
-
`}function y(){return`@import "@jchat/addon-sdk/ui
|
|
463
|
+
`}function y(){return`@import "@jchat/addon-sdk/ui";`}var b={name:`jchat`,version:`0.0.0`,private:!0,author:{name:`Jchat Cloud`,email:`support@jchatcloud.com`,url:`https://github.com/jchatcloud`},workspaces:[`apps/*`,`!apps/android`,`packages/*`,`addons/*`],scripts:{dev:`bun run --parallel chat:dev addons:dev`,"chat:dev":`bun --watch apps/chat/server.ts`,build:`bun run --filter @jchat/chat build`,start:`bun apps/chat/server.ts`,"db:generate":`bun --env-file=.env --filter="@jchat/db" run db:generate`,"db:migrate":`bun --env-file=.env --filter="@jchat/db" run db:migrate`,"db:seed":`bun --env-file=.env --filter="@jchat/db" run db:seed`,"db:studio":`bun --env-file=.env --filter="@jchat/db" run db:studio`,"db:push":`bun --env-file=.env --filter="@jchat/db" run db:push`,"db:pull":`bun --env-file=.env --filter="@jchat/db" run db:pull`,"ui:build":`bun run --filter @jchat/ui build`,"addon-sdk:build":`bun run ui:build; bun run --filter @jchat/addon-sdk build`,"create-addon:build":`bun run --filter @jchat/create-addon build`,"create-addon:test":`bun run --filter @jchat/create-addon test`,"create-addon":`bun run ./packages/create-addon/src/cli.ts`,"runtime:build":`bun run --filter @jchat/runtime build`,"addons:dev":`bun --filter='./addons/*' --parallel run dev`,"addons:init":`bun run ./packages/create-addon/src/cli.ts --workspace`,"addons:sync":`bun run ./scripts/sync-local-addons.ts`,"addons:sandbox":`bun run ./scripts/developer-sandbox.ts run`,"addons:sandbox:init":`bun run ./scripts/developer-sandbox.ts init`,"addons:sandbox:test":`bun run ./scripts/developer-sandbox.ts test`,"addons:sandbox:reset":`bun run ./scripts/developer-sandbox.ts reset`,"addons:sandbox:package":`bun run ./scripts/developer-sandbox.ts package`,"addons:sandbox:cleanup":`bun run ./scripts/developer-sandbox.ts cleanup`,"addons:package":`bun run ./scripts/package-addons.ts`,"addon:release":`bun run ./scripts/release-addon.ts`,"addons:devkit:init":`bun run ./scripts/create-addon-development-kit.ts`,"addons:devkit:artifacts:check":`bun run addon-sdk:build && bun run create-addon:build && bun run ./scripts/validate-addon-development-artifacts.ts`,openspec:`openspec`,"store:build":`bun run --filter @jchat/store build`,"store:dev":`bun --watch apps/store/server.ts`,"store:db:generate":`bun --filter @jchat/store db:generate`,"store:db:migrate":`bun --env-file=apps/store/.env --filter @jchat/store db:migrate`,"store:db:seed":`bun --env-file=apps/store/.env --filter @jchat/store db:seed`,"store:test":`bun run --filter @jchat/store test`,"store:contracts:test":`bun run --filter @jchat/store-contracts test`,"license:build":`bun run --filter @jchat/license build`,"license:dev":`bun --watch apps/license/server.ts`,"license:start":`bun run --filter @jchat/license start`,"license:db:generate":`bun --filter @jchat/license db:generate`,"license:db:push":`bun --filter @jchat/license db:push`,"license:test":`bun --env-file=apps/license/.env.test test apps/license`,prepare:`git config core.hooksPath .githooks`,release:`bun run ./scripts/release.ts`,"version:addon-sdk":`bun run ./scripts/set-addon-artifact-version.ts sdk`,"version:create-addon":`bun run ./scripts/set-addon-artifact-version.ts creator`,"check:translations":`bun ./scripts/check-translations.ts`,"audit:changes":`bun ./scripts/audit-changes.ts`,"update:geoip":`bun ./scripts/update-geoip.ts`,test:`bun --filter="@jchat/chat" run test:api`,"test:api":`bun --env-file=.env.test --filter="@jchat/chat" run test:api`,"test:unit":`bun --filter="@jchat/chat" run test:unit`,"test:packages":`bun test packages/`,"test:store":`bun run --filter @jchat/store test`,"test:license":`bun --env-file=apps/license/.env.test test apps/license`,"test:watch":`bun --filter="@jchat/chat" run test:api:watch`,"test:coverage":`bun --filter="@jchat/chat" run test:api:coverage`,"test:e2e":`playwright test`,"test:e2e:ui":`playwright test --ui`,"benchmark:chat":`bun run ./scripts/benchmark-chat.ts`,typecheck:`bun --filter="*" run typecheck`,lint:`bun --filter="*" run lint`,format:`bun --filter="*" run format`,change:`bun run ./scripts/release-engine/cli.ts`,"version-packages":`bun run ./scripts/release-engine/version.ts`,"release-packages":`bun run ./scripts/release-engine/publish.ts`,"sync-changelogs":`bun run ./scripts/release-engine/sync-changelog.ts`},devDependencies:{"@clack/prompts":`catalog:`,"@fission-ai/openspec":`^1.14.1`,"@playwright/test":`^1.63.0`,"@types/bun":`catalog:`,elysia:`catalog:`,oxfmt:`catalog:`,oxlint:`catalog:`,typescript:`catalog:`},engines:{node:`>=22.22.0`},packageManager:`bun@1.4.3`,catalog:{"@better-auth/api-key":`^1.7.7`,"@better-auth/passkey":`^1.7.7`,"@casl/ability":`^7.0.1`,"@casl/react":`^7.0.1`,"@clack/prompts":`^1.8.1`,"@daypicker/react":`^10.0.2`,"@elysiajs/cors":`^1.4.1`,"@elysiajs/cron":`^1.4.2`,"@elysiajs/eden":`^1.4.9`,"@elysiajs/static":`^1.4.10`,"@react-router/dev":`^8.4.0`,"@react-router/node":`^8.4.0`,"@react-router/serve":`^8.4.0`,"@tailwindcss/vite":`^4.3.3`,"@tanstack/react-query":`^5.104.0`,"@tanstack/react-virtual":`^3.14.13`,"@types/bun":`^1.4.2`,"@types/nodemailer":`^8.0.2`,"@types/react":`^19.3.0`,"@types/react-dom":`^19.3.0`,"better-auth":`^1.7.7`,cn:`^0.4.0`,"date-fns":`4.4.0`,"drizzle-orm":`^1.0.0-rc.4`,"drizzle-kit":`^1.0.0-rc.4`,elysia:`^1.4.30`,"elysia-ip":`^1.1.1`,"elysia-rate-limit":`^4.6.3`,motion:`^13.5.0`,nodemailer:`^10.0.13`,i18next:`^26.4.2`,"i18next-browser-languagedetector":`^8.2.1`,isbot:`^5.2.2`,jotai:`^3.0.1`,kysely:`^0.29.6`,"lucide-react":`1.49.0`,oxfmt:`^0.71.0`,oxlint:`^1.86.0`,react:`^19.3.0`,"react-dom":`^19.3.0`,"react-hot-toast":`^2.6.1`,"react-i18next":`^17.0.15`,"react-router":`^8.4.0`,"tailwind-scrollbar":`^4.0.2`,tailwindcss:`^4.3.3`,tsdown:`0.23.0`,typescript:`^7.0.2`,vite:`^8.3.2`,zod:`^4.6.5`},trustedDependencies:[`@tailwindcss/oxide`,`esbuild`,`unrs-resolver`]};function x(){return b&&`catalog`in b&&typeof b.catalog==`object`&&b.catalog!==null?b.catalog:{}}function S(e){return{name:`${e}-development-kit`,private:!0,type:`module`,workspaces:[`addon`],scripts:{sandbox:`bun run ./scripts/devkit.ts run`,"sandbox:test":`bun run ./scripts/devkit.ts test`,"sandbox:reset":`bun run ./scripts/devkit.ts reset`,"sandbox:package":`bun run ./scripts/devkit.ts package`,"sandbox:cleanup":`bun run ./scripts/devkit.ts cleanup`},devDependencies:{"@types/bun":`^1.4.0`},engines:{bun:`>=1.4.0`}}}function C(e,t){return{name:`@jchat/${e}`,version:`1.0.0-alpha.0`,private:!0,description:`${t} addon for JChat`,repository:{type:`git`,url:`git+https://github.com/jchatcloud/jchat.git`,directory:`addons/${e}`},type:`module`,scripts:{dev:`jchat-addon dev`,build:`tsc --noEmit && jchat-addon build`,test:`bun test`,lint:`oxlint .`,format:`oxfmt . --write`,typecheck:`tsc --noEmit`},dependencies:{},devDependencies:{"@tailwindcss/vite":`catalog:`,"@types/bun":`catalog:`,"@types/react":`catalog:`,"@types/react-dom":`catalog:`,elysia:`catalog:`,vite:`catalog:`},peerDependencies:{"@jchat/addon-sdk":`workspace:*`,"@tanstack/react-query":`catalog:`,react:`catalog:`,"react-dom":`catalog:`}}}function w(e,t){let n=x();return{name:`@jchat/${e}`,version:`1.0.0`,private:!0,type:`module`,scripts:{dev:`jchat-addon dev`,build:`tsc --noEmit && jchat-addon build`,test:`bun test`,typecheck:`tsc --noEmit`},dependencies:{},devDependencies:{"@tailwindcss/vite":n[`@tailwindcss/vite`]??`^4.3.3`,"@types/bun":n[`@types/bun`]??`^1.4.0`,"@types/react":n[`@types/react`]??`^19.2.18`,"@types/react-dom":n[`@types/react-dom`]??`^19.2.4`,elysia:n.elysia??`^1.4.29`,tailwindcss:n.tailwindcss??`^4.3.3`,vite:n.vite??`^8.2.1`},peerDependencies:{"@jchat/addon-sdk":`^${t}`,"@tanstack/react-query":n[`@tanstack/react-query`]??`^5.101.4`,react:n.react??`^19.2.8`,"react-dom":n[`react-dom`]??`^19.2.8`}}}function T(){return{extends:`@jchat/addon-sdk/tsconfig.json`,include:[`src/**/*`]}}function E(){return{extends:`@jchat/addon-sdk/tsconfig.json`,include:[`src/**/*.ts`,`src/**/*.tsx`]}}function D(){return`---
|
|
464
464
|
name: jchat-addon-development
|
|
465
465
|
description: Comprehensive guide for developing JChat addons using @jchat/addon-sdk, including manifests, UI widgets, direct icon imports, Elysia backend, isolated DB schemas, and i18n.
|
|
466
466
|
---
|
|
@@ -474,11 +474,11 @@ Use this skill when developing, updating, or debugging JChat addons using \`@jch
|
|
|
474
474
|
## 1. Architectural Guardrails (Non-Negotiable)
|
|
475
475
|
|
|
476
476
|
1. **Import Boundaries**:
|
|
477
|
-
- Addons MUST ONLY import \`@jchat/addon-sdk\`, \`@jchat/addon-sdk/ui\` (components & toast), \`@jchat/addon-sdk/state\` (atomic state),
|
|
478
|
-
- NEVER import private internal monorepo packages (\`@jchat/
|
|
477
|
+
- Addons MUST ONLY import \`@jchat/addon-sdk\`, \`@jchat/addon-sdk/ui\` (components, icons & toast), \`@jchat/addon-sdk/state\` (atomic state), and \`@jchat/addon-sdk/server\`.
|
|
478
|
+
- NEVER import private internal monorepo packages (\`@jchat/ui\`, \`@jchat/db\`, \`@jchat/shared\`, etc.).
|
|
479
479
|
- Host externals (\`react\`, \`react-dom\`, \`@tanstack/react-query\`) are provided at runtime by the JChat host.
|
|
480
480
|
2. **Icons**:
|
|
481
|
-
- Use direct imports: \`import Icons from "@jchat/addon-sdk/
|
|
481
|
+
- Use direct imports: \`import { Icons } from "@jchat/addon-sdk/ui"\`.
|
|
482
482
|
- Never call \`useIcons()\` or install \`lucide-react\` / \`react-icons\` directly in the addon.
|
|
483
483
|
3. **Database Isolation**:
|
|
484
484
|
- All addon tables MUST reside in the isolated \`addons\` PostgreSQL schema (e.g. \`addons.GlimpseStories\`).
|
|
@@ -542,7 +542,7 @@ import {
|
|
|
542
542
|
useAddonMutation,
|
|
543
543
|
useAddonTranslation
|
|
544
544
|
} from "@jchat/addon-sdk"
|
|
545
|
-
import Icons from "@jchat/addon-sdk/
|
|
545
|
+
import { Icons } from "@jchat/addon-sdk/ui"
|
|
546
546
|
|
|
547
547
|
export default function PollwiseAddon({ mountPoint, roomId }: AddonProps) {
|
|
548
548
|
const sdk = useAddonSDK()
|
|
@@ -596,7 +596,7 @@ export default function PollwiseAddon({ mountPoint, roomId }: AddonProps) {
|
|
|
596
596
|
### Direct Icon Usage
|
|
597
597
|
Icons are rendered directly:
|
|
598
598
|
\`\`\`tsx
|
|
599
|
-
import Icons,
|
|
599
|
+
import { Icons, resolveIcon } from "@jchat/addon-sdk/ui"
|
|
600
600
|
|
|
601
601
|
// Direct JSX:
|
|
602
602
|
<Icons.Sparkles className="size-4 text-primary" />
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jchat/create-addon",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.32",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Command line tool for jchat addon creation.",
|
|
6
6
|
"keywords": [
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"test": "bun test",
|
|
50
50
|
"lint": "oxlint .",
|
|
51
51
|
"format": "oxfmt . --write",
|
|
52
|
-
"typecheck": "
|
|
52
|
+
"typecheck": "bun check"
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
55
|
"@clack/prompts": "catalog:"
|