@getcoherent/cli 0.6.5 → 0.6.7

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.
Files changed (2) hide show
  1. package/dist/index.js +26 -7
  2. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -4206,7 +4206,7 @@ LAYOUT PATTERNS:
4206
4206
  - Stats/KPI grid: grid gap-4 md:grid-cols-2 lg:grid-cols-4
4207
4207
  - Card grid (3 col): grid gap-4 md:grid-cols-3
4208
4208
  - Full-height page: min-h-svh (not min-h-screen)
4209
- - Centered form (login/signup): flex min-h-svh flex-col items-center justify-center p-6 md:p-10 \u2192 div w-full max-w-md
4209
+ - Centered form (login/signup): auth layout handles centering \u2014 just output div w-full max-w-md with Card inside
4210
4210
  - Page content wrapper: flex flex-1 flex-col gap-4 p-4 lg:p-6
4211
4211
  - Responsive: primary md: and lg:. Use sm:/xl: only when genuinely needed. Avoid 2xl:. NEVER arbitrary like min-[800px].
4212
4212
 
@@ -4364,10 +4364,11 @@ var DESIGN_QUALITY_APP = `
4364
4364
  - Content: functional, scannable, data-dense
4365
4365
 
4366
4366
  ### Toolbars & Filters
4367
- - Filter row: flex flex-wrap items-center gap-2
4368
- - Search input: MUST use flex-1 to fill remaining horizontal space
4367
+ - Filter row: flex flex-wrap items-center gap-2 (plain div, NOT inside a Card)
4368
+ - Search input: MUST use flex-1 to fill remaining horizontal space. NEVER fixed-width search.
4369
4369
  - Filters/selects: fixed width (w-[180px] or auto), do NOT flex-grow
4370
4370
  - On mobile (sm:): search full width, filters wrap to next line
4371
+ - Do NOT wrap search/filter toolbars in Card components. They are plain flex rows above content.
4371
4372
 
4372
4373
  NEVER include marketing sections (hero, pricing, testimonials) on app pages.
4373
4374
  `;
@@ -4375,11 +4376,17 @@ var DESIGN_QUALITY_AUTH = `
4375
4376
  ## DESIGN QUALITY \u2014 AUTH PAGES
4376
4377
 
4377
4378
  ### Layout
4378
- - Centered card: flex min-h-svh items-center justify-center p-6 md:p-10
4379
+ - The auth layout ALREADY provides centering (flex items-center justify-center min-h-svh). Do NOT add your own centering wrapper or min-h-svh.
4380
+ - Just output: <div className="w-full max-w-md"> containing a Card
4379
4381
  - Card width: w-full max-w-md
4380
4382
  - No navigation, no section containers, no sidebar
4381
4383
  - Single focused form with clear CTA
4382
- - Card \u2192 CardHeader (title + description) \u2192 CardContent (form) \u2192 CardFooter (link to other auth page)
4384
+ - Card \u2192 CardHeader (title + description) \u2192 CardContent (form with space-y-4) \u2192 CardFooter (link to other auth page)
4385
+
4386
+ ### Form Spacing
4387
+ - Form fields inside CardContent: space-y-4 between field groups
4388
+ - Ensure visible gap between the last input field and the submit button (use space-y-4 or space-y-6)
4389
+ - Each field group (Label + Input): space-y-2
4383
4390
 
4384
4391
  NEVER include navigation bars, sidebars, or multi-section layouts on auth pages.
4385
4392
  `;
@@ -6949,6 +6956,18 @@ ${selectImport}`
6949
6956
  fixed = fixedByRules;
6950
6957
  fixes.push(...ruleFixes);
6951
6958
  }
6959
+ const beforeTabsFix = fixed;
6960
+ fixed = fixed.replace(
6961
+ /(<TabsTrigger\b[^>]*className=")([^"]*)(">)/g,
6962
+ (_m, pre, classes, post) => {
6963
+ const cleaned = classes.replace(/\b(border-input|border\b|outline\b)\s*/g, "").trim();
6964
+ if (cleaned !== classes.trim()) return `${pre}${cleaned}${post}`;
6965
+ return _m;
6966
+ }
6967
+ );
6968
+ if (fixed !== beforeTabsFix) {
6969
+ fixes.push("stripped border from TabsTrigger (shadcn handles active state)");
6970
+ }
6952
6971
  fixed = fixed.replace(/className="([^"]*)"/g, (_match, inner) => {
6953
6972
  const cleaned = inner.replace(/\s{2,}/g, " ").trim();
6954
6973
  return `className="${cleaned}"`;
@@ -7904,7 +7923,7 @@ ${compLines.join("\n")}`);
7904
7923
  }
7905
7924
  async function splitGeneratePages(spinner, message, modCtx, provider, parseOpts) {
7906
7925
  let pageNames = [];
7907
- spinner.start("Phase 1/5 \u2014 Planning pages...");
7926
+ spinner.start("Phase 1/6 \u2014 Planning pages...");
7908
7927
  try {
7909
7928
  const planResult = await parseModification(message, modCtx, provider, { ...parseOpts, planOnly: true });
7910
7929
  const pageReqs = planResult.requests.filter((r) => r.type === "add-page");
@@ -8112,7 +8131,7 @@ async function splitGeneratePages(spinner, message, modCtx, provider, parseOpts)
8112
8131
  const isAuth = isAuthRoute(route) || isAuthRoute(name);
8113
8132
  const pageType = plan ? getPageType(route, plan) : inferPageTypeFromRoute(route);
8114
8133
  const designConstraints = getDesignQualityForType(pageType);
8115
- const authNote = isAuth ? 'For this auth page: use centered card layout with outer div className="flex min-h-svh flex-col items-center justify-center p-6 md:p-10" and inner div className="w-full max-w-md". Do NOT use section containers or full-width wrappers. The auth layout provides centering \u2014 just output the card content.' : void 0;
8134
+ const authNote = isAuth ? 'For this auth page: the auth layout already provides centering (flex items-center justify-center min-h-svh). Do NOT add your own centering wrapper or min-h-svh. Just output a div with className="w-full max-w-md" containing the Card. Do NOT use section containers or full-width wrappers.' : void 0;
8116
8135
  const prompt = [
8117
8136
  `Create ONE page called "${name}" at route "${route}".`,
8118
8137
  `Context: ${message}.`,
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "0.6.5",
6
+ "version": "0.6.7",
7
7
  "description": "CLI interface for Coherent Design Method",
8
8
  "type": "module",
9
9
  "main": "./dist/index.js",
@@ -43,7 +43,7 @@
43
43
  "ora": "^7.0.1",
44
44
  "prompts": "^2.4.2",
45
45
  "zod": "^3.22.4",
46
- "@getcoherent/core": "0.6.5"
46
+ "@getcoherent/core": "0.6.7"
47
47
  },
48
48
  "devDependencies": {
49
49
  "@types/node": "^20.11.0",