@mozole/cli 2.0.0 → 2.1.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/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +109 -15
- package/dist/cli.js.map +1 -1
- package/dist/commands/add.d.ts +7 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +87 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/adopt.d.ts +2 -0
- package/dist/commands/adopt.d.ts.map +1 -1
- package/dist/commands/adopt.js +243 -45
- package/dist/commands/adopt.js.map +1 -1
- package/dist/commands/assets.d.ts +28 -0
- package/dist/commands/assets.d.ts.map +1 -0
- package/dist/commands/assets.js +176 -0
- package/dist/commands/assets.js.map +1 -0
- package/dist/commands/backend.d.ts +5 -0
- package/dist/commands/backend.d.ts.map +1 -0
- package/dist/commands/backend.js +68 -0
- package/dist/commands/backend.js.map +1 -0
- package/dist/commands/new.d.ts +1 -1
- package/dist/commands/new.d.ts.map +1 -1
- package/dist/commands/new.js +13 -5
- package/dist/commands/new.js.map +1 -1
- package/dist/commands/prototype.d.ts.map +1 -1
- package/dist/commands/prototype.js +68 -20
- package/dist/commands/prototype.js.map +1 -1
- package/dist/commands/release.d.ts +10 -0
- package/dist/commands/release.d.ts.map +1 -0
- package/dist/commands/release.js +181 -0
- package/dist/commands/release.js.map +1 -0
- package/dist/commands/ui.d.ts +5 -0
- package/dist/commands/ui.d.ts.map +1 -1
- package/dist/commands/ui.js +49 -0
- package/dist/commands/ui.js.map +1 -1
- package/dist/scaffold/agents.d.ts.map +1 -1
- package/dist/scaffold/agents.js +40 -6
- package/dist/scaffold/agents.js.map +1 -1
- package/dist/scaffold/backend.d.ts +1 -1
- package/dist/scaffold/backend.d.ts.map +1 -1
- package/dist/scaffold/backend.js +63 -31
- package/dist/scaffold/backend.js.map +1 -1
- package/dist/scaffold/components.d.ts +8 -0
- package/dist/scaffold/components.d.ts.map +1 -0
- package/dist/scaffold/components.js +305 -0
- package/dist/scaffold/components.js.map +1 -0
- package/dist/scaffold/design.d.ts.map +1 -1
- package/dist/scaffold/design.js +47 -25
- package/dist/scaffold/design.js.map +1 -1
- package/dist/scaffold/flagship.d.ts +5 -0
- package/dist/scaffold/flagship.d.ts.map +1 -1
- package/dist/scaffold/flagship.js +161 -102
- package/dist/scaffold/flagship.js.map +1 -1
- package/dist/scaffold/index.d.ts +1 -1
- package/dist/scaffold/index.d.ts.map +1 -1
- package/dist/scaffold/index.js +22 -7
- package/dist/scaffold/index.js.map +1 -1
- package/dist/scaffold/library.d.ts +3 -0
- package/dist/scaffold/library.d.ts.map +1 -0
- package/dist/scaffold/library.js +98 -0
- package/dist/scaffold/library.js.map +1 -0
- package/dist/scaffold/phases.d.ts.map +1 -1
- package/dist/scaffold/phases.js +19 -14
- package/dist/scaffold/phases.js.map +1 -1
- package/dist/scaffold/repomap.d.ts +3 -3
- package/dist/scaffold/repomap.d.ts.map +1 -1
- package/dist/scaffold/repomap.js +22 -10
- package/dist/scaffold/repomap.js.map +1 -1
- package/dist/scaffold/standard.d.ts.map +1 -1
- package/dist/scaffold/standard.js +3 -2
- package/dist/scaffold/standard.js.map +1 -1
- package/dist/scaffold/tools-guide.d.ts +3 -0
- package/dist/scaffold/tools-guide.d.ts.map +1 -0
- package/dist/scaffold/tools-guide.js +117 -0
- package/dist/scaffold/tools-guide.js.map +1 -0
- package/dist/scaffold/workflow.d.ts +5 -0
- package/dist/scaffold/workflow.d.ts.map +1 -0
- package/dist/scaffold/workflow.js +221 -0
- package/dist/scaffold/workflow.js.map +1 -0
- package/dist/ui/CockpitApp.d.ts +2 -2
- package/dist/ui/CockpitApp.d.ts.map +1 -1
- package/dist/ui/CockpitApp.js +361 -15
- package/dist/ui/CockpitApp.js.map +1 -1
- package/dist/ui/ToolsPanel.d.ts +9 -0
- package/dist/ui/ToolsPanel.d.ts.map +1 -0
- package/dist/ui/ToolsPanel.js +230 -0
- package/dist/ui/ToolsPanel.js.map +1 -0
- package/dist/utils/fs.d.ts.map +1 -1
- package/dist/utils/fs.js +42 -6
- package/dist/utils/fs.js.map +1 -1
- package/dist/utils/project-files.d.ts +4 -0
- package/dist/utils/project-files.d.ts.map +1 -0
- package/dist/utils/project-files.js +49 -0
- package/dist/utils/project-files.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +29 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"library.js","sourceRoot":"","sources":["../../src/scaffold/library.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE5E,MAAM,UAAU,cAAc;IAC5B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BR,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY;IAChD,MAAM,UAAU,CAAC,IAAI,EAAE;QACrB,8BAA8B,EAAE,qBAAqB,EAAE;QACvD,6BAA6B,EAAE,oBAAoB,EAAE;QACrD,8BAA8B,EAAE,cAAc,EAAE;QAChD,qCAAqC,EAAE;;;;;;;;;;CAU1C;QACG,kCAAkC,EAAE,cAAc;QAClD,kCAAkC,EAAE,cAAc;QAClD,gCAAgC,EAAE,cAAc;QAChD,wBAAwB,EAAE,cAAc;QACxC,iCAAiC,EAC/B,qHAAqH;QACvH,yBAAyB,EACvB,uHAAuH;QACzH,iBAAiB,EACf,yiCAAyiC;KAC5iC,CAAC,CAAC;IACH,MAAM,OAAO,GAA6B;QACxC,4BAA4B,EAAE;YAC5B,2BAA2B;YAC3B,0BAA0B;YAC1B,2BAA2B;SAC5B;QACD,gCAAgC,EAAE,CAAC,0CAA0C,CAAC;QAC9E,sBAAsB,EAAE;YACtB,mCAAmC;YACnC,uCAAuC;YACvC,yCAAyC;YACzC,yCAAyC;YACzC,uCAAuC;YACvC,+BAA+B;SAChC;KACF,CAAC;IACF,KAAK,MAAM,SAAS,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC7C,IAAI,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,yBAAyB,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC;YAC5E,OAAO,CAAC,gCAAgC,CAAC,CAAC,IAAI,CAAC,oBAAoB,SAAS,IAAI,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,0FAA0F;QAC1F,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;YAAE,MAAM,WAAW,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpF,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IAC5D,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QAC9B,MAAM,WAAW,CACf,QAAQ,EACR,IAAI,CAAC,SAAS,CACZ;YACE,SAAS,EAAE,SAAS;YACpB,KAAK,EAAE,sBAAsB;YAC7B,EAAE,EAAE,mBAAmB;YACvB,MAAM,EAAE,uBAAuB;YAC/B,QAAQ,EAAE,yBAAyB;YACnC,QAAQ,EAAE,yBAAyB;YACnC,MAAM,EAAE,uBAAuB;YAC/B,QAAQ,EAAE,eAAe;SAC1B,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phases.d.ts","sourceRoot":"","sources":["../../src/scaffold/phases.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,eAAO,MAAM,MAAM,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"phases.d.ts","sourceRoot":"","sources":["../../src/scaffold/phases.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,eAAO,MAAM,MAAM,EAAE,eAAe,EA4InC,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,YAAY,SAAO,GAAG,MAAM,CA0BlE;AAED,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGvE"}
|
package/dist/scaffold/phases.js
CHANGED
|
@@ -16,12 +16,12 @@ export const PHASES = [
|
|
|
16
16
|
{
|
|
17
17
|
id: "01",
|
|
18
18
|
name: "Core Architecture & Layout",
|
|
19
|
-
description: "
|
|
19
|
+
description: "Technical root shell and module boundaries before visual composition.",
|
|
20
20
|
checklist: [
|
|
21
21
|
"Root layout established with single <main> landmark",
|
|
22
22
|
"Skip-to-content accessible link implemented",
|
|
23
|
-
"
|
|
24
|
-
"
|
|
23
|
+
"Project-local UI, feature, section, layout, motion and behavior boundaries documented",
|
|
24
|
+
"Starter layout is not treated as approved design; no unrequested visual composition",
|
|
25
25
|
"Zero viewport overflow at 320px minimum mobile width",
|
|
26
26
|
],
|
|
27
27
|
},
|
|
@@ -30,7 +30,9 @@ export const PHASES = [
|
|
|
30
30
|
name: "Design Tokens & Primitive Components",
|
|
31
31
|
description: "Bespoke Radix UI primitives, typography hierarchies, and token integration.",
|
|
32
32
|
checklist: [
|
|
33
|
-
"
|
|
33
|
+
"Each independent primitive in its own src/components/ui/ file; related primitive parts may stay together",
|
|
34
|
+
"Reusable modules exported through local barrels and src/library/index.ts",
|
|
35
|
+
"Settled conversation decisions recorded separately from assumptions in docs/decisions.md",
|
|
34
36
|
"Zero hardcoded color hex/rgb literals (enforced by PostCSS AST audit)",
|
|
35
37
|
"Semantic typography applied via var(--font-display) and var(--font-body)",
|
|
36
38
|
"Interactive targets satisfy minimum 24px/44px touch area",
|
|
@@ -40,9 +42,12 @@ export const PHASES = [
|
|
|
40
42
|
{
|
|
41
43
|
id: "03",
|
|
42
44
|
name: "Primary Routes & Pages",
|
|
43
|
-
description: "
|
|
45
|
+
description: "Compose feature components, then sections, then pages as authorized by the user.",
|
|
44
46
|
checklist: [
|
|
45
|
-
"
|
|
47
|
+
"Only requested pages declared with unique routes",
|
|
48
|
+
"Feature components compose primitives; separate section files compose features",
|
|
49
|
+
"Pages compose sections; visual modules receive data/actions via props",
|
|
50
|
+
"No /ui gallery or additional design stage created without user direction",
|
|
46
51
|
"Single <h1> per page verified across all views",
|
|
47
52
|
"Semantic HTML tags used (section, article, nav, aside)",
|
|
48
53
|
"All images include descriptive alt text or explicit decorative alt=''",
|
|
@@ -75,14 +80,14 @@ export const PHASES = [
|
|
|
75
80
|
},
|
|
76
81
|
{
|
|
77
82
|
id: "06",
|
|
78
|
-
name: "
|
|
79
|
-
description: "
|
|
83
|
+
name: "Integrations & Security",
|
|
84
|
+
description: "Form submission handling, anti-spam honeypot, security headers, and optional API endpoints.",
|
|
80
85
|
checklist: [
|
|
81
|
-
"
|
|
82
|
-
"
|
|
83
|
-
"
|
|
84
|
-
"
|
|
85
|
-
"
|
|
86
|
+
"Form submissions validated and protected against spam (honeypot or rate limiting)",
|
|
87
|
+
"Security headers and CORS origins verified",
|
|
88
|
+
"Input sanitization active on all interactive input fields",
|
|
89
|
+
"Backend API endpoints (if applicable) or client form handlers respond cleanly",
|
|
90
|
+
"Sensitive secrets and environment variables protected from client bundle leakage",
|
|
86
91
|
],
|
|
87
92
|
},
|
|
88
93
|
{
|
|
@@ -137,7 +142,7 @@ export const PHASES = [
|
|
|
137
142
|
export function generatePhasesStatusMd(currentPhase = "00") {
|
|
138
143
|
let content = `# Project Development Phases & Status
|
|
139
144
|
|
|
140
|
-
> **Discipline Notice:**
|
|
145
|
+
> **Discipline Notice:** Engineering progress is tracked through phases 00 to 10. Follow docs/workflow.md: primitives, feature components, sections, then pages, only within conversation-authorized scope. Phase 01 establishes technical boundaries, not a finished visual layout. Run \`mozole phase status\` to inspect progress, and \`mozole phase next\` to advance after applicable criteria and authorized checks. It does not run verification itself and may create a Git commit. If tests are prohibited, report them as not run; do not mark them passed.
|
|
141
146
|
|
|
142
147
|
**Current Phase:** Phase ${currentPhase}
|
|
143
148
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phases.js","sourceRoot":"","sources":["../../src/scaffold/phases.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAS7C,MAAM,CAAC,MAAM,MAAM,GAAsB;IACvC;QACE,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,oCAAoC;QAC1C,WAAW,EACT,mFAAmF;QACrF,SAAS,EAAE;YACT,mDAAmD;YACnD,2EAA2E;YAC3E,+CAA+C;YAC/C,2DAA2D;YAC3D,8CAA8C;SAC/C;KACF;IACD;QACE,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,4BAA4B;QAClC,WAAW,
|
|
1
|
+
{"version":3,"file":"phases.js","sourceRoot":"","sources":["../../src/scaffold/phases.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export declare function generateRepomapArchitecture(projectName: string, isFlagship: boolean): string;
|
|
1
|
+
export declare function generateRepomapArchitecture(projectName: string, isFlagship: boolean, backend?: "none" | "php" | "node"): string;
|
|
2
2
|
export declare function generateRepomapComponents(): string;
|
|
3
|
-
export declare function generateRepomapRoutes(): string;
|
|
3
|
+
export declare function generateRepomapRoutes(isFlagship?: boolean): string;
|
|
4
4
|
export declare function generateRepomapTokens(): string;
|
|
5
|
-
export declare function scaffoldRepomap(projectRoot: string, projectName: string, isFlagship?: boolean): Promise<void>;
|
|
5
|
+
export declare function scaffoldRepomap(projectRoot: string, projectName: string, isFlagship?: boolean, backend?: "none" | "php" | "node"): Promise<void>;
|
|
6
6
|
//# sourceMappingURL=repomap.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repomap.d.ts","sourceRoot":"","sources":["../../src/scaffold/repomap.ts"],"names":[],"mappings":"AAGA,wBAAgB,2BAA2B,
|
|
1
|
+
{"version":3,"file":"repomap.d.ts","sourceRoot":"","sources":["../../src/scaffold/repomap.ts"],"names":[],"mappings":"AAGA,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,OAAO,EACnB,OAAO,GAAE,MAAM,GAAG,KAAK,GAAG,MAAe,GACxC,MAAM,CA+BR;AAED,wBAAgB,yBAAyB,IAAI,MAAM,CAelD;AAED,wBAAgB,qBAAqB,CAAC,UAAU,UAAQ,GAAG,MAAM,CAqBhE;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAoB9C;AAED,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,UAAU,UAAQ,EAClB,OAAO,GAAE,MAAM,GAAG,KAAK,GAAG,MAAe,GACxC,OAAO,CAAC,IAAI,CAAC,CASf"}
|
package/dist/scaffold/repomap.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import { atomicWrite } from "../utils/fs.js";
|
|
3
|
-
export function generateRepomapArchitecture(projectName, isFlagship) {
|
|
3
|
+
export function generateRepomapArchitecture(projectName, isFlagship, backend = "none") {
|
|
4
4
|
return `# Architecture Overview - ${projectName}
|
|
5
5
|
|
|
6
6
|
## Technology Stack
|
|
@@ -10,11 +10,13 @@ export function generateRepomapArchitecture(projectName, isFlagship) {
|
|
|
10
10
|
- **Styling Architecture:** Tailwind CSS v4 with Canonical Tokens in \`src/styles/tokens.css\`
|
|
11
11
|
- **UI Primitives:** Bespoke application components backed by unstyled Radix UI primitives
|
|
12
12
|
${isFlagship ? "- **Creative Experience:** Lenis (Smooth Scroll) + Motion + Persistent Canvas Layer\n" : ""}
|
|
13
|
-
- **Backend Architecture:**
|
|
13
|
+
- **Backend Architecture:** ${backend === "none" ? "None (static frontend)" : backend === "php" ? "PHP 8.1+ API in api/" : "Node.js HTTP API in server/"}
|
|
14
|
+
- **Library Ownership:** UI, Layout, Motion and Behavior implementations are project-local; only npm dependencies may be shared.
|
|
15
|
+
- **Library Entry:** src/library/index.ts
|
|
14
16
|
|
|
15
17
|
## Directory Hierarchy
|
|
16
18
|
\`\`\`
|
|
17
|
-
├── api/ #
|
|
19
|
+
${backend === "none" ? "" : backend === "php" ? "├── api/ # PHP endpoints\n" : "├── server/ # Node endpoints\n"}
|
|
18
20
|
├── docs/
|
|
19
21
|
│ ├── design/ # Design references, exported assets & screens
|
|
20
22
|
│ ├── phases/ # 10-step atomic development status
|
|
@@ -37,23 +39,33 @@ All UI primitives are bespoke application code located in \`src/components/ui/\`
|
|
|
37
39
|
|
|
38
40
|
| Component | Path | Backing Primitive | Responsibilities |
|
|
39
41
|
| :--- | :--- | :--- | :--- |
|
|
40
|
-
| **Header** | \`src/components/layout/Header.tsx\` | Semantic \`<header>\` | Main navigation,
|
|
42
|
+
| **Header** | \`src/components/layout/Header.tsx\` | Semantic \`<header>\` | Main navigation, branding |
|
|
41
43
|
| **Footer** | \`src/components/layout/Footer.tsx\` | Semantic \`<footer>\` | Site links, legal notes, copyright |
|
|
42
|
-
| **Button** | \`src/components/ui/Button.tsx\` | Native \`<button>\` | Accessible action trigger, variant styling,
|
|
44
|
+
| **Button** | \`src/components/ui/Button.tsx\` | Native \`<button>\` | Accessible action trigger, variant styling, composition via Radix Slot |
|
|
43
45
|
| **Dialog** | \`src/components/ui/Dialog.tsx\` | Radix \`@radix-ui/react-dialog\` | Accessible modal dialog, focus trap, escape key |
|
|
44
46
|
| **Input** | \`src/components/ui/Input.tsx\` | Native \`<input>\` | Form control with 16px mobile font floor and error states |
|
|
45
47
|
|
|
46
48
|
> **Contract Rule:** Primitives must remain unopinionated, unstyled Radix foundations with project design tokens applied. No external template dumping.
|
|
47
49
|
`;
|
|
48
50
|
}
|
|
49
|
-
export function generateRepomapRoutes() {
|
|
51
|
+
export function generateRepomapRoutes(isFlagship = false) {
|
|
52
|
+
if (isFlagship)
|
|
53
|
+
return `# Routes & Page Index
|
|
54
|
+
|
|
55
|
+
| Path | Component | Purpose |
|
|
56
|
+
| :--- | :--- | :--- |
|
|
57
|
+
| / | src/routes/home.tsx | Landing page |
|
|
58
|
+
| /showcase | src/routes/showcase.tsx | Creative showcase |
|
|
59
|
+
|
|
60
|
+
Routing is composed in src/App.tsx with Wouter. Header and Footer live in src/components/layout.
|
|
61
|
+
`;
|
|
50
62
|
return `# Routes & Page Index
|
|
51
63
|
|
|
52
64
|
| Path | Component | Layout | Purpose |
|
|
53
65
|
| :--- | :--- | :--- | :--- |
|
|
54
66
|
| \`/\` | \`src/routes/home.tsx\` | Root Layout | Primary landing page & value proposition |
|
|
55
67
|
| \`/about\` | \`src/routes/about.tsx\` | Root Layout | Studio background and team ethos |
|
|
56
|
-
| \`/contact\` | \`src/routes/contact.tsx\` | Root Layout | Contact
|
|
68
|
+
| \`/contact\` | \`src/routes/contact.tsx\` | Root Layout | Contact information |
|
|
57
69
|
|
|
58
70
|
> **SEO & A11y Requirement:** Every route must export a unique title and meta description, and render exactly one top-level \`<h1>\` tag.
|
|
59
71
|
`;
|
|
@@ -79,11 +91,11 @@ Canonical token definitions live in \`src/styles/tokens.css\` using Tailwind v4
|
|
|
79
91
|
- \`--text-xs\` to \`--text-5xl\`: Fluid viewport-scaled typography via \`clamp()\`.
|
|
80
92
|
`;
|
|
81
93
|
}
|
|
82
|
-
export async function scaffoldRepomap(projectRoot, projectName, isFlagship = false) {
|
|
94
|
+
export async function scaffoldRepomap(projectRoot, projectName, isFlagship = false, backend = "none") {
|
|
83
95
|
const repomapDir = path.join(projectRoot, "docs", "repomap");
|
|
84
|
-
await atomicWrite(path.join(repomapDir, "architecture.md"), generateRepomapArchitecture(projectName, isFlagship));
|
|
96
|
+
await atomicWrite(path.join(repomapDir, "architecture.md"), generateRepomapArchitecture(projectName, isFlagship, backend));
|
|
85
97
|
await atomicWrite(path.join(repomapDir, "components.md"), generateRepomapComponents());
|
|
86
|
-
await atomicWrite(path.join(repomapDir, "routes.md"), generateRepomapRoutes());
|
|
98
|
+
await atomicWrite(path.join(repomapDir, "routes.md"), generateRepomapRoutes(isFlagship));
|
|
87
99
|
await atomicWrite(path.join(repomapDir, "tokens.md"), generateRepomapTokens());
|
|
88
100
|
}
|
|
89
101
|
//# sourceMappingURL=repomap.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repomap.js","sourceRoot":"","sources":["../../src/scaffold/repomap.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,UAAU,2BAA2B,
|
|
1
|
+
{"version":3,"file":"repomap.js","sourceRoot":"","sources":["../../src/scaffold/repomap.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,UAAU,2BAA2B,CACzC,WAAmB,EACnB,UAAmB,EACnB,UAAmC,MAAM;IAEzC,OAAO,6BAA6B,WAAW;;;;;uBAK1B,UAAU,CAAC,CAAC,CAAC,8DAA8D,CAAC,CAAC,CAAC,iEAAiE;;;EAGpK,UAAU,CAAC,CAAC,CAAC,uFAAuF,CAAC,CAAC,CAAC,EAAE;8BAC7E,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,6BAA6B;;;;;;EAMtJ,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,+CAA+C,CAAC,CAAC,CAAC,gDAAgD;;;;;;;;;;;;;;CAcjJ,CAAC;AACF,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,OAAO;;;;;;;;;;;;;CAaR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,UAAU,GAAG,KAAK;IACtD,IAAI,UAAU;QACZ,OAAO;;;;;;;;CAQV,CAAC;IACA,OAAO;;;;;;;;;CASR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO;;;;;;;;;;;;;;;;;;CAkBR,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,WAAmB,EACnB,WAAmB,EACnB,UAAU,GAAG,KAAK,EAClB,UAAmC,MAAM;IAEzC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAC7D,MAAM,WAAW,CACf,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,EACxC,2BAA2B,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC,CAC9D,CAAC;IACF,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,EAAE,yBAAyB,EAAE,CAAC,CAAC;IACvF,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,qBAAqB,CAAC,UAAU,CAAC,CAAC,CAAC;IACzF,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,qBAAqB,EAAE,CAAC,CAAC;AACjF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standard.d.ts","sourceRoot":"","sources":["../../src/scaffold/standard.ts"],"names":[],"mappings":"AAGA,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAmCvE;AAED,wBAAgB,0BAA0B,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"standard.d.ts","sourceRoot":"","sources":["../../src/scaffold/standard.ts"],"names":[],"mappings":"AAGA,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAmCvE;AAED,wBAAgB,0BAA0B,IAAI,MAAM,CAanD;AAED,wBAAgB,4BAA4B,IAAI,MAAM,CAWrD;AAED,wBAAgB,wBAAwB,IAAI,MAAM,CAsBjD;AAED,wBAAgB,yBAAyB,IAAI,MAAM,CAmBlD;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAsC7C;AAED,wBAAgB,0BAA0B,IAAI,MAAM,CAkCnD;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAkD/C;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAW/C;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAwD9C;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAiC7C;AAED,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CA+Df"}
|
|
@@ -8,7 +8,7 @@ export function generateStandardPackageJson(projectName) {
|
|
|
8
8
|
scripts: {
|
|
9
9
|
dev: "react-router dev",
|
|
10
10
|
build: "react-router build",
|
|
11
|
-
preview: "vite preview",
|
|
11
|
+
preview: "vite preview --outDir build/client",
|
|
12
12
|
typecheck: "react-router typegen && tsc --noEmit",
|
|
13
13
|
verify: "mozole verify",
|
|
14
14
|
},
|
|
@@ -45,6 +45,7 @@ export default defineConfig({
|
|
|
45
45
|
plugins: [tailwindcss(), reactRouter()],
|
|
46
46
|
server: {
|
|
47
47
|
port: 5173,
|
|
48
|
+
proxy: { "/api": "http://127.0.0.1:3001" },
|
|
48
49
|
},
|
|
49
50
|
});
|
|
50
51
|
`;
|
|
@@ -136,7 +137,7 @@ export default function App() {
|
|
|
136
137
|
`;
|
|
137
138
|
}
|
|
138
139
|
export function generateStandardRoutesHome() {
|
|
139
|
-
return `import { Button } from "../components/ui
|
|
140
|
+
return `import { Button } from "../components/ui";
|
|
140
141
|
import type { Route } from "./+types/home";
|
|
141
142
|
|
|
142
143
|
export function meta(_args: Route.MetaArgs) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standard.js","sourceRoot":"","sources":["../../src/scaffold/standard.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,UAAU,2BAA2B,CAAC,WAAmB;IAC7D,MAAM,GAAG,GAAG;QACV,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE;YACP,GAAG,EAAE,kBAAkB;YACvB,KAAK,EAAE,oBAAoB;YAC3B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"standard.js","sourceRoot":"","sources":["../../src/scaffold/standard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools-guide.d.ts","sourceRoot":"","sources":["../../src/scaffold/tools-guide.ts"],"names":[],"mappings":"AAGA,wBAAgB,kBAAkB,IAAI,MAAM,CA8G3C;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpE"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { writeFiles } from "../utils/fs.js";
|
|
2
|
+
import { COMPONENTS } from "./components.js";
|
|
3
|
+
export function generateToolsGuide() {
|
|
4
|
+
return `# Components, assets and release tools
|
|
5
|
+
|
|
6
|
+
## Components
|
|
7
|
+
|
|
8
|
+
Run mozole add --list to inspect the catalog. Run mozole add accordion,select,sheet
|
|
9
|
+
for several components, or mozole add all for the suite. Use --path <project> to select
|
|
10
|
+
a customer project explicitly. These are project-owned, token-based foundations; adapt
|
|
11
|
+
their design to conversation instructions. No shared implementation package is created.
|
|
12
|
+
|
|
13
|
+
Files go to src/components/ui, exports to its index.ts and src/library/index.ts, and
|
|
14
|
+
installation records to .mozole/components.json. Existing component files are preserved
|
|
15
|
+
and skipped, including their exports. Review custom files manually rather than replacing
|
|
16
|
+
them. New required dependencies are added to package.json; run npm install afterward,
|
|
17
|
+
at the prototype root if applicable. The command never installs dependencies itself.
|
|
18
|
+
|
|
19
|
+
Catalog: ${Object.keys(COMPONENTS).join(", ")}.
|
|
20
|
+
|
|
21
|
+
Accessibility composition matters: Dialog/Sheet/Drawer need a Title, appropriate Description
|
|
22
|
+
(or aria-describedby={undefined}), and a close control. Sheet and Drawer include a visible
|
|
23
|
+
Close control; Drawer is a bottom dialog foundation, without drag-to-dismiss. Menus need
|
|
24
|
+
named triggers and indicators for checked/radio items. Tooltip needs TooltipProvider.
|
|
25
|
+
Toast needs ToastProvider and ToastViewport. Select needs SelectTrigger/SelectValue and
|
|
26
|
+
SelectContent/SelectItem. Form controls need visible associated labels. Progress and
|
|
27
|
+
button groups need meaningful accessible names; do not rely on color alone.
|
|
28
|
+
|
|
29
|
+
Example accordion composition:
|
|
30
|
+
|
|
31
|
+
<Accordion type="single" collapsible>
|
|
32
|
+
<AccordionItem value="details">
|
|
33
|
+
<AccordionTrigger>Details</AccordionTrigger>
|
|
34
|
+
<AccordionContent>Project content</AccordionContent>
|
|
35
|
+
</AccordionItem>
|
|
36
|
+
</Accordion>
|
|
37
|
+
|
|
38
|
+
## Image optimization
|
|
39
|
+
|
|
40
|
+
Put source raster files in assets/images (outside public), then run:
|
|
41
|
+
|
|
42
|
+
mozole assets
|
|
43
|
+
mozole assets --input assets/photos --output public/media --quality 78
|
|
44
|
+
mozole assets --widths 320,640,1280,1920,3840 --base /client/
|
|
45
|
+
|
|
46
|
+
Sharp creates AVIF/WebP width variants up to source resolution, auto-orients EXIF images,
|
|
47
|
+
strips metadata by default, and writes a JPEG/PNG fallback. Default widths are
|
|
48
|
+
320, 480, 640, 768, 1024, 1280, 1600, 1920, 2560 and 3840 pixels. Small sources are never
|
|
49
|
+
upscaled. Animated and multipage images are skipped and reported; SVGs remain vectors and
|
|
50
|
+
are not converted. Source files are preserved. Output is confined to a public subdirectory.
|
|
51
|
+
Content-addressed output filenames preserve old variants, so existing page references are
|
|
52
|
+
not deleted. manifest.json and src/assets/images.generated.ts describe the latest batch;
|
|
53
|
+
one invocation should include all source images needed by the project. Older unused files
|
|
54
|
+
can be removed deliberately after confirming they are no longer referenced.
|
|
55
|
+
|
|
56
|
+
ResponsiveImage.tsx is created only if absent; existing custom implementations are kept.
|
|
57
|
+
Import images from src/assets/images.generated and ResponsiveImage from the local UI barrel.
|
|
58
|
+
Pass a truthful sizes value for the actual layout. Mark only an above-the-fold critical
|
|
59
|
+
image priority; other images lazy-load. Width and height reserve the image's aspect ratio.
|
|
60
|
+
|
|
61
|
+
<ResponsiveImage image={images["hero.jpg"]} alt="Restaurant terrace"
|
|
62
|
+
sizes="(max-width: 768px) 100vw, 50vw" priority className="h-auto w-full" />
|
|
63
|
+
|
|
64
|
+
Set --base to match the deployment path and rebuild the site after regenerating assets.
|
|
65
|
+
The command encodes files only; it does not capture or inspect screenshots.
|
|
66
|
+
|
|
67
|
+
## Production packaging
|
|
68
|
+
|
|
69
|
+
mozole release
|
|
70
|
+
mozole release --format zip --output releases/client-v1
|
|
71
|
+
mozole release --format directory --output releases/client-v1
|
|
72
|
+
mozole release --skip-build --from build/client
|
|
73
|
+
|
|
74
|
+
Default behavior runs npm run build, then writes release/ and release.zip. --skip-build
|
|
75
|
+
packages existing output without establishing freshness. Standard React Router static
|
|
76
|
+
output defaults to build/client; Flagship defaults to dist. Use --from after customizing
|
|
77
|
+
your build directory. index.html is required. This command is not a test runner.
|
|
78
|
+
|
|
79
|
+
Static assets and the dependency-free PHP api/ module are assembled at the document root.
|
|
80
|
+
Node APIs require a separate deployment and are rejected by this packaging target.
|
|
81
|
+
Existing outputs are never overwritten; choose a new --output for each release. A file
|
|
82
|
+
manifest with SHA-256 hashes and DEPLOYMENT.txt accompany the package. Runtime data, .env,
|
|
83
|
+
keys, source maps, databases, logs and development directories are excluded. Review the
|
|
84
|
+
omission list. api/config.php is intentionally included as runtime configuration; set its
|
|
85
|
+
customer-specific values and server mail transport before deployment.
|
|
86
|
+
|
|
87
|
+
Apache rewrite/deny rules are included. Existing root .htaccess is preserved; review its
|
|
88
|
+
routing if customized. Nginx does not read .htaccess: apply equivalent PHP routing and
|
|
89
|
+
configuration-file access restrictions on the server. Configure mail and HTTPS on hosting.
|
|
90
|
+
The tool does not log into FTP, run rsync or upload anything; upload the directory contents
|
|
91
|
+
through your authorized deployment process. Packages are capped at 512 MiB input size.
|
|
92
|
+
|
|
93
|
+
## TUI
|
|
94
|
+
|
|
95
|
+
Open mozole ui and select [6] TOOLS. Choose Add components, Optimize images, or Create
|
|
96
|
+
release. Enter configuration with Tab/arrow navigation, Ctrl+U to clear, Enter to run,
|
|
97
|
+
and Escape to return. Actions use the currently selected project and report results in
|
|
98
|
+
both the panel and cockpit log. Component addition preserves custom code; image encoding
|
|
99
|
+
preserves originals; release builds unless Skip build is yes and never uploads.
|
|
100
|
+
|
|
101
|
+
Headless equivalents:
|
|
102
|
+
|
|
103
|
+
mozole ui --action component-add --component accordion,sheet
|
|
104
|
+
mozole ui --action assets-optimize --input assets/images
|
|
105
|
+
mozole ui --action release --format zip --output releases/v1
|
|
106
|
+
|
|
107
|
+
## Implementation references
|
|
108
|
+
|
|
109
|
+
- Radix primitives: https://www.radix-ui.com/primitives/docs/overview/introduction
|
|
110
|
+
- Sharp encoders: https://sharp.pixelplumbing.com/api-output/
|
|
111
|
+
- Sharp resize: https://sharp.pixelplumbing.com/api-resize/
|
|
112
|
+
`;
|
|
113
|
+
}
|
|
114
|
+
export async function scaffoldToolsGuide(root) {
|
|
115
|
+
await writeFiles(root, { "docs/tools.md": generateToolsGuide() });
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=tools-guide.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools-guide.js","sourceRoot":"","sources":["../../src/scaffold/tools-guide.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,UAAU,kBAAkB;IAChC,OAAO;;;;;;;;;;;;;;;WAeE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6F5C,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAY;IACnD,MAAM,UAAU,CAAC,IAAI,EAAE,EAAE,eAAe,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;AACpE,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function generateProductionWorkflow(): string;
|
|
2
|
+
export declare function generateToolkitGuide(): string;
|
|
3
|
+
export declare function scaffoldWorkflow(root: string): Promise<void>;
|
|
4
|
+
export declare function linkWorkflowPolicies(root: string): Promise<void>;
|
|
5
|
+
//# sourceMappingURL=workflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/scaffold/workflow.ts"],"names":[],"mappings":"AAKA,wBAAgB,0BAA0B,IAAI,MAAM,CAkFnD;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CA6E7C;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBlE;AAGD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BtE"}
|