@pylonsync/create-pylon 0.5.0 → 0.5.3
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/bin/create-pylon.js +27 -5
- package/package.json +1 -1
- package/templates/_root/AGENTS.md +1 -1
- package/templates/agency/AGENTS.md +1 -1
- package/templates/agency/app.ts +3 -0
- package/templates/ai-chat/AGENTS.md +1 -1
- package/templates/ai-chat/app.ts +3 -0
- package/templates/ai-studio/AGENTS.md +1 -1
- package/templates/ai-studio/app.ts +3 -0
- package/templates/backend/b2b/apps/api/schema.ts +3 -0
- package/templates/backend/barebones/apps/api/schema.ts +3 -0
- package/templates/backend/chat/apps/api/schema.ts +3 -0
- package/templates/backend/consumer/apps/api/schema.ts +3 -0
- package/templates/backend/todo/apps/api/schema.ts +3 -0
- package/templates/barebones/AGENTS.md +1 -1
- package/templates/barebones/app.ts +3 -0
- package/templates/chat/AGENTS.md +1 -1
- package/templates/chat/app.ts +3 -0
- package/templates/consumer/AGENTS.md +1 -1
- package/templates/consumer/app.ts +3 -0
- package/templates/creator/AGENTS.md +1 -1
- package/templates/creator/app.ts +3 -0
- package/templates/crm/AGENTS.md +1 -1
- package/templates/crm/app.ts +3 -0
- package/templates/directory/AGENTS.md +1 -1
- package/templates/directory/app.ts +3 -0
- package/templates/helpdesk/AGENTS.md +1 -1
- package/templates/helpdesk/app.ts +3 -0
- package/templates/inventory/AGENTS.md +1 -1
- package/templates/inventory/app.ts +3 -0
- package/templates/invoices/AGENTS.md +1 -1
- package/templates/invoices/app.ts +3 -0
- package/templates/local-service/AGENTS.md +1 -1
- package/templates/local-service/app.ts +3 -0
- package/templates/marketplace/AGENTS.md +1 -1
- package/templates/marketplace/app.ts +3 -0
- package/templates/marketplace/client/market.ts +4 -1
- package/templates/projects/AGENTS.md +1 -1
- package/templates/projects/app.ts +3 -0
- package/templates/restaurant/AGENTS.md +1 -1
- package/templates/restaurant/app.ts +3 -0
- package/templates/saas/AGENTS.md +1 -1
- package/templates/saas/app.ts +3 -0
- package/templates/shop/AGENTS.md +1 -1
- package/templates/shop/app.ts +3 -0
- package/templates/todo/AGENTS.md +1 -1
- package/templates/todo/app.ts +3 -0
- package/templates/waitlist/AGENTS.md +1 -1
- package/templates/waitlist/app.ts +3 -0
package/bin/create-pylon.js
CHANGED
|
@@ -311,6 +311,28 @@ Examples:
|
|
|
311
311
|
}
|
|
312
312
|
|
|
313
313
|
const rl = createInterface({ input: stdin, output: stdout });
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
* Prompt, treating Ctrl+D / Ctrl+C as a deliberate cancel.
|
|
317
|
+
*
|
|
318
|
+
* readline rejects the pending question with an AbortError, which at top
|
|
319
|
+
* level in an ESM script surfaces as an unhandled rejection — so someone who
|
|
320
|
+
* changes their mind at the template picker gets a Node stack trace instead
|
|
321
|
+
* of "cancelled". Nothing has been written to disk at this point, so say so
|
|
322
|
+
* and leave quietly.
|
|
323
|
+
*/
|
|
324
|
+
async function ask(question) {
|
|
325
|
+
try {
|
|
326
|
+
return await rl.question(question);
|
|
327
|
+
} catch (err) {
|
|
328
|
+
if (err?.code === "ABORT_ERR") {
|
|
329
|
+
stdout.write("\nCancelled — nothing was created.\n");
|
|
330
|
+
rl.close();
|
|
331
|
+
exit(0);
|
|
332
|
+
}
|
|
333
|
+
throw err;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
314
336
|
// Non-interactive stdin (CI, piped, `| npm create …`): never block on a prompt.
|
|
315
337
|
// Fall back to the same defaults the interactive path uses. The skill-install
|
|
316
338
|
// below already gates on `stdin.isTTY`; the INPUT prompts must too — without
|
|
@@ -319,7 +341,7 @@ const rl = createInterface({ input: stdin, output: stdout });
|
|
|
319
341
|
const isInteractive = !!stdin.isTTY;
|
|
320
342
|
if (!projectName) {
|
|
321
343
|
projectName =
|
|
322
|
-
(isInteractive ? (await
|
|
344
|
+
(isInteractive ? (await ask("Project name: ")).trim() : "") ||
|
|
323
345
|
"my-pylon-app";
|
|
324
346
|
}
|
|
325
347
|
if (!flags.template) {
|
|
@@ -329,7 +351,7 @@ if (!flags.template) {
|
|
|
329
351
|
.join("\n");
|
|
330
352
|
process.stdout.write(`\n${lines}\n`);
|
|
331
353
|
const ans = (
|
|
332
|
-
await
|
|
354
|
+
await ask(
|
|
333
355
|
`Template (${TEMPLATES_AVAILABLE.join(", ")}) [${DEFAULT_TEMPLATE}]: `,
|
|
334
356
|
)
|
|
335
357
|
)
|
|
@@ -352,7 +374,7 @@ if (!isUnified && !flags.platforms) {
|
|
|
352
374
|
const supported = TEMPLATE_REGISTRY[flags.template].platforms.join(", ");
|
|
353
375
|
const ans = isInteractive
|
|
354
376
|
? (
|
|
355
|
-
await
|
|
377
|
+
await ask(
|
|
356
378
|
`Platforms for ${flags.template} (${supported}, comma-separated) [web]: `,
|
|
357
379
|
)
|
|
358
380
|
).trim()
|
|
@@ -364,7 +386,7 @@ if (!flags.pm) {
|
|
|
364
386
|
const def = detected ?? "bun";
|
|
365
387
|
if (isInteractive) {
|
|
366
388
|
const choice = (
|
|
367
|
-
await
|
|
389
|
+
await ask(`Package manager (bun, pnpm, yarn, npm) [${def}]: `)
|
|
368
390
|
)
|
|
369
391
|
.trim()
|
|
370
392
|
.toLowerCase();
|
|
@@ -376,7 +398,7 @@ if (!flags.pm) {
|
|
|
376
398
|
if (flags.skill === undefined) {
|
|
377
399
|
if (isInteractive) {
|
|
378
400
|
const ans = (
|
|
379
|
-
await
|
|
401
|
+
await ask(
|
|
380
402
|
"Add the Pylon skill to your coding agent (Claude Code / Codex / Cursor)? [Y/n]: ",
|
|
381
403
|
)
|
|
382
404
|
)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pylonsync/create-pylon",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.3",
|
|
4
4
|
"description": "Scaffold a new Pylon app — realtime backend + web/mobile/expo frontends in one command. Run via `npm create @pylonsync/pylon@latest`.",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -5,7 +5,7 @@ Pylon serves the API, auth, sync, WebSocket, SSE, and native React 19 SSR from o
|
|
|
5
5
|
## Directory conventions
|
|
6
6
|
|
|
7
7
|
**Unified SSR app:**
|
|
8
|
-
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))
|
|
8
|
+
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))` — that line is the manifest handoff (the CLI parses this file's stdout), not debug output. Never remove it.
|
|
9
9
|
- `app/`: file-based SSR routes. `app/page.tsx` → `/`, `app/about/page.tsx` → `/about`, `app/blog/[slug]/page.tsx` → `/blog/:slug`. A `(group)` directory is stripped from the URL — `app/(marketing)/about/page.tsx` still serves `/about` — so a group's `layout.tsx` gives one section its own chrome (nav, footer) without changing any path; routes outside the group render without it. `app/layout.tsx` is the document shell; `app/error.tsx` / `app/not-found.tsx` are boundaries.
|
|
10
10
|
- `app/globals.css`: Tailwind v4 entrypoint (auto-compiled and injected).
|
|
11
11
|
- `functions/`: server functions, one per file, `default`-exported.
|
|
@@ -5,7 +5,7 @@ Pylon serves the API, auth, sync, WebSocket, SSE, and native React 19 SSR from o
|
|
|
5
5
|
## Directory conventions
|
|
6
6
|
|
|
7
7
|
**Unified SSR app:**
|
|
8
|
-
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))
|
|
8
|
+
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))` — that line is the manifest handoff (the CLI parses this file's stdout), not debug output. Never remove it.
|
|
9
9
|
- `app/`: file-based SSR routes. `app/page.tsx` → `/`, `app/about/page.tsx` → `/about`, `app/blog/[slug]/page.tsx` → `/blog/:slug`. A `(group)` directory is stripped from the URL — `app/(marketing)/about/page.tsx` still serves `/about` — so a group's `layout.tsx` gives one section its own chrome (nav, footer) without changing any path; routes outside the group render without it. `app/layout.tsx` is the document shell; `app/error.tsx` / `app/not-found.tsx` are boundaries.
|
|
10
10
|
- `app/globals.css`: Tailwind v4 entrypoint (auto-compiled and injected).
|
|
11
11
|
- `functions/`: server functions, one per file, `default`-exported.
|
package/templates/agency/app.ts
CHANGED
|
@@ -300,6 +300,9 @@ const manifest = buildManifest({
|
|
|
300
300
|
routes: await discoverAppRoutes(),
|
|
301
301
|
});
|
|
302
302
|
|
|
303
|
+
// Not a debug leftover: the CLI runs `bun run app.ts` and parses stdout as
|
|
304
|
+
// your manifest (see crates/cli/src/bun.rs). Deleting this line breaks every
|
|
305
|
+
// pylon command that reads your schema.
|
|
303
306
|
console.log(JSON.stringify(manifest, null, 2));
|
|
304
307
|
|
|
305
308
|
export default manifest;
|
|
@@ -5,7 +5,7 @@ Pylon serves the API, auth, sync, WebSocket, SSE, and native React 19 SSR from o
|
|
|
5
5
|
## Directory conventions
|
|
6
6
|
|
|
7
7
|
**Unified SSR app:**
|
|
8
|
-
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))
|
|
8
|
+
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))` — that line is the manifest handoff (the CLI parses this file's stdout), not debug output. Never remove it.
|
|
9
9
|
- `app/`: file-based SSR routes. `app/page.tsx` → `/`, `app/about/page.tsx` → `/about`, `app/blog/[slug]/page.tsx` → `/blog/:slug`. A `(group)` directory is stripped from the URL — `app/(marketing)/about/page.tsx` still serves `/about` — so a group's `layout.tsx` gives one section its own chrome (nav, footer) without changing any path; routes outside the group render without it. `app/layout.tsx` is the document shell; `app/error.tsx` / `app/not-found.tsx` are boundaries.
|
|
10
10
|
- `app/globals.css`: Tailwind v4 entrypoint (auto-compiled and injected).
|
|
11
11
|
- `functions/`: server functions, one per file, `default`-exported.
|
package/templates/ai-chat/app.ts
CHANGED
|
@@ -135,6 +135,9 @@ const manifest = buildManifest({
|
|
|
135
135
|
routes: await discoverAppRoutes(),
|
|
136
136
|
});
|
|
137
137
|
|
|
138
|
+
// Not a debug leftover: the CLI runs `bun run app.ts` and parses stdout as
|
|
139
|
+
// your manifest (see crates/cli/src/bun.rs). Deleting this line breaks every
|
|
140
|
+
// pylon command that reads your schema.
|
|
138
141
|
console.log(JSON.stringify(manifest, null, 2));
|
|
139
142
|
|
|
140
143
|
export default manifest;
|
|
@@ -5,7 +5,7 @@ Pylon serves the API, auth, sync, WebSocket, SSE, and native React 19 SSR from o
|
|
|
5
5
|
## Directory conventions
|
|
6
6
|
|
|
7
7
|
**Unified SSR app:**
|
|
8
|
-
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))
|
|
8
|
+
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))` — that line is the manifest handoff (the CLI parses this file's stdout), not debug output. Never remove it.
|
|
9
9
|
- `app/`: file-based SSR routes. `app/page.tsx` → `/`, `app/about/page.tsx` → `/about`, `app/blog/[slug]/page.tsx` → `/blog/:slug`. A `(group)` directory is stripped from the URL — `app/(marketing)/about/page.tsx` still serves `/about` — so a group's `layout.tsx` gives one section its own chrome (nav, footer) without changing any path; routes outside the group render without it. `app/layout.tsx` is the document shell; `app/error.tsx` / `app/not-found.tsx` are boundaries.
|
|
10
10
|
- `app/globals.css`: Tailwind v4 entrypoint (auto-compiled and injected).
|
|
11
11
|
- `functions/`: server functions, one per file, `default`-exported.
|
|
@@ -122,6 +122,9 @@ const manifest = buildManifest({
|
|
|
122
122
|
routes: await discoverAppRoutes(),
|
|
123
123
|
});
|
|
124
124
|
|
|
125
|
+
// Not a debug leftover: the CLI runs `bun run app.ts` and parses stdout as
|
|
126
|
+
// your manifest (see crates/cli/src/bun.rs). Deleting this line breaks every
|
|
127
|
+
// pylon command that reads your schema.
|
|
125
128
|
console.log(JSON.stringify(manifest, null, 2));
|
|
126
129
|
|
|
127
130
|
export default manifest;
|
|
@@ -176,4 +176,7 @@ const manifest = buildManifest({
|
|
|
176
176
|
routes: [],
|
|
177
177
|
});
|
|
178
178
|
|
|
179
|
+
// Not a debug leftover: the CLI runs `bun run` on this file and parses stdout
|
|
180
|
+
// as your manifest (see crates/cli/src/bun.rs). Deleting this line breaks every
|
|
181
|
+
// pylon command that reads your schema.
|
|
179
182
|
console.log(JSON.stringify(manifest));
|
|
@@ -58,4 +58,7 @@ const manifest = buildManifest({
|
|
|
58
58
|
routes: [],
|
|
59
59
|
});
|
|
60
60
|
|
|
61
|
+
// Not a debug leftover: the CLI runs `bun run` on this file and parses stdout
|
|
62
|
+
// as your manifest (see crates/cli/src/bun.rs). Deleting this line breaks every
|
|
63
|
+
// pylon command that reads your schema.
|
|
61
64
|
console.log(JSON.stringify(manifest));
|
|
@@ -93,4 +93,7 @@ const manifest = buildManifest({
|
|
|
93
93
|
routes: [],
|
|
94
94
|
});
|
|
95
95
|
|
|
96
|
+
// Not a debug leftover: the CLI runs `bun run` on this file and parses stdout
|
|
97
|
+
// as your manifest (see crates/cli/src/bun.rs). Deleting this line breaks every
|
|
98
|
+
// pylon command that reads your schema.
|
|
96
99
|
console.log(JSON.stringify(manifest));
|
|
@@ -137,4 +137,7 @@ const manifest = buildManifest({
|
|
|
137
137
|
routes: [],
|
|
138
138
|
});
|
|
139
139
|
|
|
140
|
+
// Not a debug leftover: the CLI runs `bun run` on this file and parses stdout
|
|
141
|
+
// as your manifest (see crates/cli/src/bun.rs). Deleting this line breaks every
|
|
142
|
+
// pylon command that reads your schema.
|
|
140
143
|
console.log(JSON.stringify(manifest));
|
|
@@ -82,4 +82,7 @@ const manifest = buildManifest({
|
|
|
82
82
|
routes: [],
|
|
83
83
|
});
|
|
84
84
|
|
|
85
|
+
// Not a debug leftover: the CLI runs `bun run` on this file and parses stdout
|
|
86
|
+
// as your manifest (see crates/cli/src/bun.rs). Deleting this line breaks every
|
|
87
|
+
// pylon command that reads your schema.
|
|
85
88
|
console.log(JSON.stringify(manifest));
|
|
@@ -5,7 +5,7 @@ Pylon serves the API, auth, sync, WebSocket, SSE, and native React 19 SSR from o
|
|
|
5
5
|
## Directory conventions
|
|
6
6
|
|
|
7
7
|
**Unified SSR app:**
|
|
8
|
-
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))
|
|
8
|
+
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))` — that line is the manifest handoff (the CLI parses this file's stdout), not debug output. Never remove it.
|
|
9
9
|
- `app/`: file-based SSR routes. `app/page.tsx` → `/`, `app/about/page.tsx` → `/about`, `app/blog/[slug]/page.tsx` → `/blog/:slug`. A `(group)` directory is stripped from the URL — `app/(marketing)/about/page.tsx` still serves `/about` — so a group's `layout.tsx` gives one section its own chrome (nav, footer) without changing any path; routes outside the group render without it. `app/layout.tsx` is the document shell; `app/error.tsx` / `app/not-found.tsx` are boundaries.
|
|
10
10
|
- `app/globals.css`: Tailwind v4 entrypoint (auto-compiled and injected).
|
|
11
11
|
- `functions/`: server functions, one per file, `default`-exported.
|
|
@@ -55,6 +55,9 @@ const manifest = buildManifest({
|
|
|
55
55
|
routes: await discoverAppRoutes(),
|
|
56
56
|
});
|
|
57
57
|
|
|
58
|
+
// Not a debug leftover: the CLI runs `bun run app.ts` and parses stdout as
|
|
59
|
+
// your manifest (see crates/cli/src/bun.rs). Deleting this line breaks every
|
|
60
|
+
// pylon command that reads your schema.
|
|
58
61
|
console.log(JSON.stringify(manifest, null, 2));
|
|
59
62
|
|
|
60
63
|
export default manifest;
|
package/templates/chat/AGENTS.md
CHANGED
|
@@ -5,7 +5,7 @@ Pylon serves the API, auth, sync, WebSocket, SSE, and native React 19 SSR from o
|
|
|
5
5
|
## Directory conventions
|
|
6
6
|
|
|
7
7
|
**Unified SSR app:**
|
|
8
|
-
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))
|
|
8
|
+
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))` — that line is the manifest handoff (the CLI parses this file's stdout), not debug output. Never remove it.
|
|
9
9
|
- `app/`: file-based SSR routes. `app/page.tsx` → `/`, `app/about/page.tsx` → `/about`, `app/blog/[slug]/page.tsx` → `/blog/:slug`. A `(group)` directory is stripped from the URL — `app/(marketing)/about/page.tsx` still serves `/about` — so a group's `layout.tsx` gives one section its own chrome (nav, footer) without changing any path; routes outside the group render without it. `app/layout.tsx` is the document shell; `app/error.tsx` / `app/not-found.tsx` are boundaries.
|
|
10
10
|
- `app/globals.css`: Tailwind v4 entrypoint (auto-compiled and injected).
|
|
11
11
|
- `functions/`: server functions, one per file, `default`-exported.
|
package/templates/chat/app.ts
CHANGED
|
@@ -54,6 +54,9 @@ const manifest = buildManifest({
|
|
|
54
54
|
routes: await discoverAppRoutes(),
|
|
55
55
|
});
|
|
56
56
|
|
|
57
|
+
// Not a debug leftover: the CLI runs `bun run app.ts` and parses stdout as
|
|
58
|
+
// your manifest (see crates/cli/src/bun.rs). Deleting this line breaks every
|
|
59
|
+
// pylon command that reads your schema.
|
|
57
60
|
console.log(JSON.stringify(manifest, null, 2));
|
|
58
61
|
|
|
59
62
|
export default manifest;
|
|
@@ -5,7 +5,7 @@ Pylon serves the API, auth, sync, WebSocket, SSE, and native React 19 SSR from o
|
|
|
5
5
|
## Directory conventions
|
|
6
6
|
|
|
7
7
|
**Unified SSR app:**
|
|
8
|
-
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))
|
|
8
|
+
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))` — that line is the manifest handoff (the CLI parses this file's stdout), not debug output. Never remove it.
|
|
9
9
|
- `app/`: file-based SSR routes. `app/page.tsx` → `/`, `app/about/page.tsx` → `/about`, `app/blog/[slug]/page.tsx` → `/blog/:slug`. A `(group)` directory is stripped from the URL — `app/(marketing)/about/page.tsx` still serves `/about` — so a group's `layout.tsx` gives one section its own chrome (nav, footer) without changing any path; routes outside the group render without it. `app/layout.tsx` is the document shell; `app/error.tsx` / `app/not-found.tsx` are boundaries.
|
|
10
10
|
- `app/globals.css`: Tailwind v4 entrypoint (auto-compiled and injected).
|
|
11
11
|
- `functions/`: server functions, one per file, `default`-exported.
|
|
@@ -89,6 +89,9 @@ const manifest = buildManifest({
|
|
|
89
89
|
routes: await discoverAppRoutes(),
|
|
90
90
|
});
|
|
91
91
|
|
|
92
|
+
// Not a debug leftover: the CLI runs `bun run app.ts` and parses stdout as
|
|
93
|
+
// your manifest (see crates/cli/src/bun.rs). Deleting this line breaks every
|
|
94
|
+
// pylon command that reads your schema.
|
|
92
95
|
console.log(JSON.stringify(manifest, null, 2));
|
|
93
96
|
|
|
94
97
|
export default manifest;
|
|
@@ -5,7 +5,7 @@ Pylon serves the API, auth, sync, WebSocket, SSE, and native React 19 SSR from o
|
|
|
5
5
|
## Directory conventions
|
|
6
6
|
|
|
7
7
|
**Unified SSR app:**
|
|
8
|
-
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))
|
|
8
|
+
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))` — that line is the manifest handoff (the CLI parses this file's stdout), not debug output. Never remove it.
|
|
9
9
|
- `app/`: file-based SSR routes. `app/page.tsx` → `/`, `app/about/page.tsx` → `/about`, `app/blog/[slug]/page.tsx` → `/blog/:slug`. A `(group)` directory is stripped from the URL — `app/(marketing)/about/page.tsx` still serves `/about` — so a group's `layout.tsx` gives one section its own chrome (nav, footer) without changing any path; routes outside the group render without it. `app/layout.tsx` is the document shell; `app/error.tsx` / `app/not-found.tsx` are boundaries.
|
|
10
10
|
- `app/globals.css`: Tailwind v4 entrypoint (auto-compiled and injected).
|
|
11
11
|
- `functions/`: server functions, one per file, `default`-exported.
|
package/templates/creator/app.ts
CHANGED
|
@@ -148,6 +148,9 @@ const manifest = buildManifest({
|
|
|
148
148
|
});
|
|
149
149
|
|
|
150
150
|
// Emit the canonical manifest JSON to stdout — `pylon dev` captures this.
|
|
151
|
+
// Not a debug leftover: the CLI runs `bun run app.ts` and parses stdout as
|
|
152
|
+
// your manifest (see crates/cli/src/bun.rs). Deleting this line breaks every
|
|
153
|
+
// pylon command that reads your schema.
|
|
151
154
|
console.log(JSON.stringify(manifest, null, 2));
|
|
152
155
|
|
|
153
156
|
export default manifest;
|
package/templates/crm/AGENTS.md
CHANGED
|
@@ -5,7 +5,7 @@ Pylon serves the API, auth, sync, WebSocket, SSE, and native React 19 SSR from o
|
|
|
5
5
|
## Directory conventions
|
|
6
6
|
|
|
7
7
|
**Unified SSR app:**
|
|
8
|
-
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))
|
|
8
|
+
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))` — that line is the manifest handoff (the CLI parses this file's stdout), not debug output. Never remove it.
|
|
9
9
|
- `app/`: file-based SSR routes. `app/page.tsx` → `/`, `app/about/page.tsx` → `/about`, `app/blog/[slug]/page.tsx` → `/blog/:slug`. A `(group)` directory is stripped from the URL — `app/(marketing)/about/page.tsx` still serves `/about` — so a group's `layout.tsx` gives one section its own chrome (nav, footer) without changing any path; routes outside the group render without it. `app/layout.tsx` is the document shell; `app/error.tsx` / `app/not-found.tsx` are boundaries.
|
|
10
10
|
- `app/globals.css`: Tailwind v4 entrypoint (auto-compiled and injected).
|
|
11
11
|
- `functions/`: server functions, one per file, `default`-exported.
|
package/templates/crm/app.ts
CHANGED
|
@@ -172,6 +172,9 @@ const manifest = buildManifest({
|
|
|
172
172
|
routes: await discoverAppRoutes(),
|
|
173
173
|
});
|
|
174
174
|
|
|
175
|
+
// Not a debug leftover: the CLI runs `bun run app.ts` and parses stdout as
|
|
176
|
+
// your manifest (see crates/cli/src/bun.rs). Deleting this line breaks every
|
|
177
|
+
// pylon command that reads your schema.
|
|
175
178
|
console.log(JSON.stringify(manifest, null, 2));
|
|
176
179
|
|
|
177
180
|
export default manifest;
|
|
@@ -5,7 +5,7 @@ Pylon serves the API, auth, sync, WebSocket, SSE, and native React 19 SSR from o
|
|
|
5
5
|
## Directory conventions
|
|
6
6
|
|
|
7
7
|
**Unified SSR app:**
|
|
8
|
-
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))
|
|
8
|
+
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))` — that line is the manifest handoff (the CLI parses this file's stdout), not debug output. Never remove it.
|
|
9
9
|
- `app/`: file-based SSR routes. `app/page.tsx` → `/`, `app/about/page.tsx` → `/about`, `app/blog/[slug]/page.tsx` → `/blog/:slug`. A `(group)` directory is stripped from the URL — `app/(marketing)/about/page.tsx` still serves `/about` — so a group's `layout.tsx` gives one section its own chrome (nav, footer) without changing any path; routes outside the group render without it. `app/layout.tsx` is the document shell; `app/error.tsx` / `app/not-found.tsx` are boundaries.
|
|
10
10
|
- `app/globals.css`: Tailwind v4 entrypoint (auto-compiled and injected).
|
|
11
11
|
- `functions/`: server functions, one per file, `default`-exported.
|
|
@@ -162,6 +162,9 @@ const manifest = buildManifest({
|
|
|
162
162
|
routes: await discoverAppRoutes(),
|
|
163
163
|
});
|
|
164
164
|
|
|
165
|
+
// Not a debug leftover: the CLI runs `bun run app.ts` and parses stdout as
|
|
166
|
+
// your manifest (see crates/cli/src/bun.rs). Deleting this line breaks every
|
|
167
|
+
// pylon command that reads your schema.
|
|
165
168
|
console.log(JSON.stringify(manifest, null, 2));
|
|
166
169
|
|
|
167
170
|
export default manifest;
|
|
@@ -5,7 +5,7 @@ Pylon serves the API, auth, sync, WebSocket, SSE, and native React 19 SSR from o
|
|
|
5
5
|
## Directory conventions
|
|
6
6
|
|
|
7
7
|
**Unified SSR app:**
|
|
8
|
-
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))
|
|
8
|
+
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))` — that line is the manifest handoff (the CLI parses this file's stdout), not debug output. Never remove it.
|
|
9
9
|
- `app/`: file-based SSR routes. `app/page.tsx` → `/`, `app/about/page.tsx` → `/about`, `app/blog/[slug]/page.tsx` → `/blog/:slug`. A `(group)` directory is stripped from the URL — `app/(marketing)/about/page.tsx` still serves `/about` — so a group's `layout.tsx` gives one section its own chrome (nav, footer) without changing any path; routes outside the group render without it. `app/layout.tsx` is the document shell; `app/error.tsx` / `app/not-found.tsx` are boundaries.
|
|
10
10
|
- `app/globals.css`: Tailwind v4 entrypoint (auto-compiled and injected).
|
|
11
11
|
- `functions/`: server functions, one per file, `default`-exported.
|
|
@@ -143,6 +143,9 @@ const manifest = buildManifest({
|
|
|
143
143
|
routes: await discoverAppRoutes(),
|
|
144
144
|
});
|
|
145
145
|
|
|
146
|
+
// Not a debug leftover: the CLI runs `bun run app.ts` and parses stdout as
|
|
147
|
+
// your manifest (see crates/cli/src/bun.rs). Deleting this line breaks every
|
|
148
|
+
// pylon command that reads your schema.
|
|
146
149
|
console.log(JSON.stringify(manifest, null, 2));
|
|
147
150
|
|
|
148
151
|
export default manifest;
|
|
@@ -5,7 +5,7 @@ Pylon serves the API, auth, sync, WebSocket, SSE, and native React 19 SSR from o
|
|
|
5
5
|
## Directory conventions
|
|
6
6
|
|
|
7
7
|
**Unified SSR app:**
|
|
8
|
-
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))
|
|
8
|
+
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))` — that line is the manifest handoff (the CLI parses this file's stdout), not debug output. Never remove it.
|
|
9
9
|
- `app/`: file-based SSR routes. `app/page.tsx` → `/`, `app/about/page.tsx` → `/about`, `app/blog/[slug]/page.tsx` → `/blog/:slug`. A `(group)` directory is stripped from the URL — `app/(marketing)/about/page.tsx` still serves `/about` — so a group's `layout.tsx` gives one section its own chrome (nav, footer) without changing any path; routes outside the group render without it. `app/layout.tsx` is the document shell; `app/error.tsx` / `app/not-found.tsx` are boundaries.
|
|
10
10
|
- `app/globals.css`: Tailwind v4 entrypoint (auto-compiled and injected).
|
|
11
11
|
- `functions/`: server functions, one per file, `default`-exported.
|
|
@@ -155,6 +155,9 @@ const manifest = buildManifest({
|
|
|
155
155
|
routes: await discoverAppRoutes(),
|
|
156
156
|
});
|
|
157
157
|
|
|
158
|
+
// Not a debug leftover: the CLI runs `bun run app.ts` and parses stdout as
|
|
159
|
+
// your manifest (see crates/cli/src/bun.rs). Deleting this line breaks every
|
|
160
|
+
// pylon command that reads your schema.
|
|
158
161
|
console.log(JSON.stringify(manifest, null, 2));
|
|
159
162
|
|
|
160
163
|
export default manifest;
|
|
@@ -5,7 +5,7 @@ Pylon serves the API, auth, sync, WebSocket, SSE, and native React 19 SSR from o
|
|
|
5
5
|
## Directory conventions
|
|
6
6
|
|
|
7
7
|
**Unified SSR app:**
|
|
8
|
-
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))
|
|
8
|
+
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))` — that line is the manifest handoff (the CLI parses this file's stdout), not debug output. Never remove it.
|
|
9
9
|
- `app/`: file-based SSR routes. `app/page.tsx` → `/`, `app/about/page.tsx` → `/about`, `app/blog/[slug]/page.tsx` → `/blog/:slug`. A `(group)` directory is stripped from the URL — `app/(marketing)/about/page.tsx` still serves `/about` — so a group's `layout.tsx` gives one section its own chrome (nav, footer) without changing any path; routes outside the group render without it. `app/layout.tsx` is the document shell; `app/error.tsx` / `app/not-found.tsx` are boundaries.
|
|
10
10
|
- `app/globals.css`: Tailwind v4 entrypoint (auto-compiled and injected).
|
|
11
11
|
- `functions/`: server functions, one per file, `default`-exported.
|
|
@@ -170,6 +170,9 @@ const manifest = buildManifest({
|
|
|
170
170
|
routes: await discoverAppRoutes(),
|
|
171
171
|
});
|
|
172
172
|
|
|
173
|
+
// Not a debug leftover: the CLI runs `bun run app.ts` and parses stdout as
|
|
174
|
+
// your manifest (see crates/cli/src/bun.rs). Deleting this line breaks every
|
|
175
|
+
// pylon command that reads your schema.
|
|
173
176
|
console.log(JSON.stringify(manifest, null, 2));
|
|
174
177
|
|
|
175
178
|
export default manifest;
|
|
@@ -5,7 +5,7 @@ Pylon serves the API, auth, sync, WebSocket, SSE, and native React 19 SSR from o
|
|
|
5
5
|
## Directory conventions
|
|
6
6
|
|
|
7
7
|
**Unified SSR app:**
|
|
8
|
-
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))
|
|
8
|
+
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))` — that line is the manifest handoff (the CLI parses this file's stdout), not debug output. Never remove it.
|
|
9
9
|
- `app/`: file-based SSR routes. `app/page.tsx` → `/`, `app/about/page.tsx` → `/about`, `app/blog/[slug]/page.tsx` → `/blog/:slug`. A `(group)` directory is stripped from the URL — `app/(marketing)/about/page.tsx` still serves `/about` — so a group's `layout.tsx` gives one section its own chrome (nav, footer) without changing any path; routes outside the group render without it. `app/layout.tsx` is the document shell; `app/error.tsx` / `app/not-found.tsx` are boundaries.
|
|
10
10
|
- `app/globals.css`: Tailwind v4 entrypoint (auto-compiled and injected).
|
|
11
11
|
- `functions/`: server functions, one per file, `default`-exported.
|
|
@@ -147,6 +147,9 @@ const manifest = buildManifest({
|
|
|
147
147
|
routes: await discoverAppRoutes(),
|
|
148
148
|
});
|
|
149
149
|
|
|
150
|
+
// Not a debug leftover: the CLI runs `bun run app.ts` and parses stdout as
|
|
151
|
+
// your manifest (see crates/cli/src/bun.rs). Deleting this line breaks every
|
|
152
|
+
// pylon command that reads your schema.
|
|
150
153
|
console.log(JSON.stringify(manifest, null, 2));
|
|
151
154
|
|
|
152
155
|
export default manifest;
|
|
@@ -5,7 +5,7 @@ Pylon serves the API, auth, sync, WebSocket, SSE, and native React 19 SSR from o
|
|
|
5
5
|
## Directory conventions
|
|
6
6
|
|
|
7
7
|
**Unified SSR app:**
|
|
8
|
-
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))
|
|
8
|
+
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))` — that line is the manifest handoff (the CLI parses this file's stdout), not debug output. Never remove it.
|
|
9
9
|
- `app/`: file-based SSR routes. `app/page.tsx` → `/`, `app/about/page.tsx` → `/about`, `app/blog/[slug]/page.tsx` → `/blog/:slug`. A `(group)` directory is stripped from the URL — `app/(marketing)/about/page.tsx` still serves `/about` — so a group's `layout.tsx` gives one section its own chrome (nav, footer) without changing any path; routes outside the group render without it. `app/layout.tsx` is the document shell; `app/error.tsx` / `app/not-found.tsx` are boundaries.
|
|
10
10
|
- `app/globals.css`: Tailwind v4 entrypoint (auto-compiled and injected).
|
|
11
11
|
- `functions/`: server functions, one per file, `default`-exported.
|
|
@@ -192,6 +192,9 @@ const manifest = buildManifest({
|
|
|
192
192
|
routes: await discoverAppRoutes(),
|
|
193
193
|
});
|
|
194
194
|
|
|
195
|
+
// Not a debug leftover: the CLI runs `bun run app.ts` and parses stdout as
|
|
196
|
+
// your manifest (see crates/cli/src/bun.rs). Deleting this line breaks every
|
|
197
|
+
// pylon command that reads your schema.
|
|
195
198
|
console.log(JSON.stringify(manifest, null, 2));
|
|
196
199
|
|
|
197
200
|
export default manifest;
|
|
@@ -5,7 +5,10 @@
|
|
|
5
5
|
// init() resolves window.location.origin.
|
|
6
6
|
import { init, configureClient, callFn, setSessionToken, storageKey } from "@pylonsync/react";
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
// Match the manifest name (app.ts `buildManifest({ name })`) so this explicit
|
|
9
|
+
// appName agrees with the value the SSR runtime auto-injects at hydrate — no
|
|
10
|
+
// keyspace disagreement, no double token migration.
|
|
11
|
+
export const APP_NAME = "__APP_NAME__";
|
|
9
12
|
|
|
10
13
|
// Prefilled demo account — the shopper you sign in as. Owns a couple of its
|
|
11
14
|
// own listings so "My Market" isn't empty, but NOT the bulk of the catalog,
|
|
@@ -5,7 +5,7 @@ Pylon serves the API, auth, sync, WebSocket, SSE, and native React 19 SSR from o
|
|
|
5
5
|
## Directory conventions
|
|
6
6
|
|
|
7
7
|
**Unified SSR app:**
|
|
8
|
-
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))
|
|
8
|
+
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))` — that line is the manifest handoff (the CLI parses this file's stdout), not debug output. Never remove it.
|
|
9
9
|
- `app/`: file-based SSR routes. `app/page.tsx` → `/`, `app/about/page.tsx` → `/about`, `app/blog/[slug]/page.tsx` → `/blog/:slug`. A `(group)` directory is stripped from the URL — `app/(marketing)/about/page.tsx` still serves `/about` — so a group's `layout.tsx` gives one section its own chrome (nav, footer) without changing any path; routes outside the group render without it. `app/layout.tsx` is the document shell; `app/error.tsx` / `app/not-found.tsx` are boundaries.
|
|
10
10
|
- `app/globals.css`: Tailwind v4 entrypoint (auto-compiled and injected).
|
|
11
11
|
- `functions/`: server functions, one per file, `default`-exported.
|
|
@@ -187,6 +187,9 @@ const manifest = buildManifest({
|
|
|
187
187
|
routes: await discoverAppRoutes(),
|
|
188
188
|
});
|
|
189
189
|
|
|
190
|
+
// Not a debug leftover: the CLI runs `bun run app.ts` and parses stdout as
|
|
191
|
+
// your manifest (see crates/cli/src/bun.rs). Deleting this line breaks every
|
|
192
|
+
// pylon command that reads your schema.
|
|
190
193
|
console.log(JSON.stringify(manifest, null, 2));
|
|
191
194
|
|
|
192
195
|
export default manifest;
|
|
@@ -5,7 +5,7 @@ Pylon serves the API, auth, sync, WebSocket, SSE, and native React 19 SSR from o
|
|
|
5
5
|
## Directory conventions
|
|
6
6
|
|
|
7
7
|
**Unified SSR app:**
|
|
8
|
-
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))
|
|
8
|
+
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))` — that line is the manifest handoff (the CLI parses this file's stdout), not debug output. Never remove it.
|
|
9
9
|
- `app/`: file-based SSR routes. `app/page.tsx` → `/`, `app/about/page.tsx` → `/about`, `app/blog/[slug]/page.tsx` → `/blog/:slug`. A `(group)` directory is stripped from the URL — `app/(marketing)/about/page.tsx` still serves `/about` — so a group's `layout.tsx` gives one section its own chrome (nav, footer) without changing any path; routes outside the group render without it. `app/layout.tsx` is the document shell; `app/error.tsx` / `app/not-found.tsx` are boundaries.
|
|
10
10
|
- `app/globals.css`: Tailwind v4 entrypoint (auto-compiled and injected).
|
|
11
11
|
- `functions/`: server functions, one per file, `default`-exported.
|
|
@@ -131,6 +131,9 @@ const manifest = buildManifest({
|
|
|
131
131
|
routes: await discoverAppRoutes(),
|
|
132
132
|
});
|
|
133
133
|
|
|
134
|
+
// Not a debug leftover: the CLI runs `bun run app.ts` and parses stdout as
|
|
135
|
+
// your manifest (see crates/cli/src/bun.rs). Deleting this line breaks every
|
|
136
|
+
// pylon command that reads your schema.
|
|
134
137
|
console.log(JSON.stringify(manifest, null, 2));
|
|
135
138
|
|
|
136
139
|
export default manifest;
|
package/templates/saas/AGENTS.md
CHANGED
|
@@ -5,7 +5,7 @@ Pylon serves the API, auth, sync, WebSocket, SSE, and native React 19 SSR from o
|
|
|
5
5
|
## Directory conventions
|
|
6
6
|
|
|
7
7
|
**Unified SSR app:**
|
|
8
|
-
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))
|
|
8
|
+
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))` — that line is the manifest handoff (the CLI parses this file's stdout), not debug output. Never remove it.
|
|
9
9
|
- `app/`: file-based SSR routes. `app/page.tsx` → `/`, `app/about/page.tsx` → `/about`, `app/blog/[slug]/page.tsx` → `/blog/:slug`. A `(group)` directory is stripped from the URL — `app/(marketing)/about/page.tsx` still serves `/about` — so a group's `layout.tsx` gives one section its own chrome (nav, footer) without changing any path; routes outside the group render without it. `app/layout.tsx` is the document shell; `app/error.tsx` / `app/not-found.tsx` are boundaries.
|
|
10
10
|
- `app/globals.css`: Tailwind v4 entrypoint (auto-compiled and injected).
|
|
11
11
|
- `functions/`: server functions, one per file, `default`-exported.
|
package/templates/saas/app.ts
CHANGED
|
@@ -214,6 +214,9 @@ const manifest = buildManifest({
|
|
|
214
214
|
routes: await discoverAppRoutes(),
|
|
215
215
|
});
|
|
216
216
|
|
|
217
|
+
// Not a debug leftover: the CLI runs `bun run app.ts` and parses stdout as
|
|
218
|
+
// your manifest (see crates/cli/src/bun.rs). Deleting this line breaks every
|
|
219
|
+
// pylon command that reads your schema.
|
|
217
220
|
console.log(JSON.stringify(manifest, null, 2));
|
|
218
221
|
|
|
219
222
|
export default manifest;
|
package/templates/shop/AGENTS.md
CHANGED
|
@@ -5,7 +5,7 @@ Pylon serves the API, auth, sync, WebSocket, SSE, and native React 19 SSR from o
|
|
|
5
5
|
## Directory conventions
|
|
6
6
|
|
|
7
7
|
**Unified SSR app:**
|
|
8
|
-
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))
|
|
8
|
+
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))` — that line is the manifest handoff (the CLI parses this file's stdout), not debug output. Never remove it.
|
|
9
9
|
- `app/`: file-based SSR routes. `app/page.tsx` → `/`, `app/about/page.tsx` → `/about`, `app/blog/[slug]/page.tsx` → `/blog/:slug`. A `(group)` directory is stripped from the URL — `app/(marketing)/about/page.tsx` still serves `/about` — so a group's `layout.tsx` gives one section its own chrome (nav, footer) without changing any path; routes outside the group render without it. `app/layout.tsx` is the document shell; `app/error.tsx` / `app/not-found.tsx` are boundaries.
|
|
10
10
|
- `app/globals.css`: Tailwind v4 entrypoint (auto-compiled and injected).
|
|
11
11
|
- `functions/`: server functions, one per file, `default`-exported.
|
package/templates/shop/app.ts
CHANGED
|
@@ -150,6 +150,9 @@ const manifest = buildManifest({
|
|
|
150
150
|
routes: await discoverAppRoutes(),
|
|
151
151
|
});
|
|
152
152
|
|
|
153
|
+
// Not a debug leftover: the CLI runs `bun run app.ts` and parses stdout as
|
|
154
|
+
// your manifest (see crates/cli/src/bun.rs). Deleting this line breaks every
|
|
155
|
+
// pylon command that reads your schema.
|
|
153
156
|
console.log(JSON.stringify(manifest, null, 2));
|
|
154
157
|
|
|
155
158
|
export default manifest;
|
package/templates/todo/AGENTS.md
CHANGED
|
@@ -5,7 +5,7 @@ Pylon serves the API, auth, sync, WebSocket, SSE, and native React 19 SSR from o
|
|
|
5
5
|
## Directory conventions
|
|
6
6
|
|
|
7
7
|
**Unified SSR app:**
|
|
8
|
-
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))
|
|
8
|
+
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))` — that line is the manifest handoff (the CLI parses this file's stdout), not debug output. Never remove it.
|
|
9
9
|
- `app/`: file-based SSR routes. `app/page.tsx` → `/`, `app/about/page.tsx` → `/about`, `app/blog/[slug]/page.tsx` → `/blog/:slug`. A `(group)` directory is stripped from the URL — `app/(marketing)/about/page.tsx` still serves `/about` — so a group's `layout.tsx` gives one section its own chrome (nav, footer) without changing any path; routes outside the group render without it. `app/layout.tsx` is the document shell; `app/error.tsx` / `app/not-found.tsx` are boundaries.
|
|
10
10
|
- `app/globals.css`: Tailwind v4 entrypoint (auto-compiled and injected).
|
|
11
11
|
- `functions/`: server functions, one per file, `default`-exported.
|
package/templates/todo/app.ts
CHANGED
|
@@ -72,6 +72,9 @@ const manifest = buildManifest({
|
|
|
72
72
|
});
|
|
73
73
|
|
|
74
74
|
// Emit canonical manifest JSON to stdout for `pylon codegen`.
|
|
75
|
+
// Not a debug leftover: the CLI runs `bun run app.ts` and parses stdout as
|
|
76
|
+
// your manifest (see crates/cli/src/bun.rs). Deleting this line breaks every
|
|
77
|
+
// pylon command that reads your schema.
|
|
75
78
|
console.log(JSON.stringify(manifest, null, 2));
|
|
76
79
|
|
|
77
80
|
export default manifest;
|
|
@@ -5,7 +5,7 @@ Pylon serves the API, auth, sync, WebSocket, SSE, and native React 19 SSR from o
|
|
|
5
5
|
## Directory conventions
|
|
6
6
|
|
|
7
7
|
**Unified SSR app:**
|
|
8
|
-
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))
|
|
8
|
+
- `app.ts`: data model + manifest (`entity()` + `field.*`, queries/actions/policies, `routes: await discoverAppRoutes()`). Ends with `console.log(JSON.stringify(manifest))` — that line is the manifest handoff (the CLI parses this file's stdout), not debug output. Never remove it.
|
|
9
9
|
- `app/`: file-based SSR routes. `app/page.tsx` → `/`, `app/about/page.tsx` → `/about`, `app/blog/[slug]/page.tsx` → `/blog/:slug`. A `(group)` directory is stripped from the URL — `app/(marketing)/about/page.tsx` still serves `/about` — so a group's `layout.tsx` gives one section its own chrome (nav, footer) without changing any path; routes outside the group render without it. `app/layout.tsx` is the document shell; `app/error.tsx` / `app/not-found.tsx` are boundaries.
|
|
10
10
|
- `app/globals.css`: Tailwind v4 entrypoint (auto-compiled and injected).
|
|
11
11
|
- `functions/`: server functions, one per file, `default`-exported.
|
|
@@ -152,6 +152,9 @@ const manifest = buildManifest({
|
|
|
152
152
|
});
|
|
153
153
|
|
|
154
154
|
// Emit the canonical manifest JSON to stdout — `pylon dev` captures this.
|
|
155
|
+
// Not a debug leftover: the CLI runs `bun run app.ts` and parses stdout as
|
|
156
|
+
// your manifest (see crates/cli/src/bun.rs). Deleting this line breaks every
|
|
157
|
+
// pylon command that reads your schema.
|
|
155
158
|
console.log(JSON.stringify(manifest, null, 2));
|
|
156
159
|
|
|
157
160
|
export default manifest;
|