release: WRNexusJS 0.3.5
This commit is contained in:
@@ -95,6 +95,8 @@ Thumbs.db
|
||||
"devDependencies": {
|
||||
"@wrnexus/cli": "${frameworkVersion}",
|
||||
"@eslint/js": "^9.0.0",
|
||||
"@iconify-json/lucide": "^1.2.118",
|
||||
"@iconify/tailwind4": "^1.2.3",
|
||||
"@tailwindcss/cli": "^4.0.0",
|
||||
"@types/bun": "latest",
|
||||
"eslint": "^9.0.0",
|
||||
@@ -292,6 +294,7 @@ Allow: /
|
||||
* @source tells Tailwind which files to scan for class names.
|
||||
*/
|
||||
@import "tailwindcss";
|
||||
@plugin "@iconify/tailwind4";
|
||||
@source "../**/*.wrn";
|
||||
@source "../**/*.tsx";
|
||||
|
||||
@@ -309,6 +312,29 @@ body {
|
||||
Roboto,
|
||||
sans-serif;
|
||||
}
|
||||
`,
|
||||
"app/layouts/document.wrn": `// Global document layout. The framework renders this once around the selected
|
||||
// page layout and merges SEO metadata, styles, and scripts into <head>/<body>.
|
||||
// Request cookies, resolved theme, language, URL, and pathname are available
|
||||
// as SSR props, so document attributes do not need a client-side correction.
|
||||
layout Document {
|
||||
props {
|
||||
cookies = {}
|
||||
theme = "light"
|
||||
language = "en"
|
||||
url = ""
|
||||
pathname = "/"
|
||||
}
|
||||
|
||||
view {
|
||||
<html>
|
||||
<head></head>
|
||||
<body>
|
||||
<div id="app"><slot /></div>
|
||||
</body>
|
||||
</html>
|
||||
}
|
||||
}
|
||||
`,
|
||||
"app/pages/index.wrn": `// Home page (route: /). SSR-first: the view is server-rendered, then components
|
||||
// (.wrn files under app/components) hydrate in the browser. Styled with Tailwind.
|
||||
|
||||
@@ -985,6 +985,14 @@ const MIGRATIONS: Migration[] = [
|
||||
// Compiler-only fix. Existing WRN source files require no migration.
|
||||
},
|
||||
},
|
||||
{
|
||||
version: "0.3.5",
|
||||
id: "new-component-added",
|
||||
description: "UI component Added.",
|
||||
apply() {
|
||||
// Compiler-only fix. Existing WRN source files require no migration.
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
/** Release tooling uses this to require an explicit migration entry per version. */
|
||||
@@ -1023,21 +1031,34 @@ function appVersion(appRoot: string, pkg: Record<string, unknown>): string {
|
||||
}
|
||||
|
||||
/** Refresh pure framework-owned reference files. Never touches user-edited CLAUDE.md. */
|
||||
function refreshFrameworkFiles(appRoot: string, dryRun: boolean, log: (m: string) => void): void {
|
||||
// Public llms.txt is generated and web-visible, so it is safe to refresh.
|
||||
const llms = join(appRoot, "public", "llms.txt");
|
||||
if (!existsSync(llms) || readFileSync(llms, "utf8") !== AI_GUIDE) {
|
||||
log("~ public/llms.txt refreshed");
|
||||
function refreshFrameworkFiles(
|
||||
appRoot: string,
|
||||
dryRun: boolean,
|
||||
log: (message: string) => void,
|
||||
): void {
|
||||
const publicDir = join(appRoot, "public");
|
||||
const llms = join(publicDir, "llms.txt");
|
||||
|
||||
if (!existsSync(llms)) {
|
||||
log("+ public/llms.txt created");
|
||||
|
||||
if (!dryRun) {
|
||||
mkdirSync(join(appRoot, "public"), { recursive: true });
|
||||
mkdirSync(publicDir, {
|
||||
recursive: true,
|
||||
});
|
||||
|
||||
writeFileSync(llms, AI_GUIDE, "utf8");
|
||||
}
|
||||
}
|
||||
// CLAUDE.md is often user-edited — only create it when absent.
|
||||
|
||||
const claude = join(appRoot, "CLAUDE.md");
|
||||
|
||||
if (!existsSync(claude)) {
|
||||
log("+ CLAUDE.md created");
|
||||
if (!dryRun) writeFileSync(claude, CLAUDE_MD, "utf8");
|
||||
|
||||
if (!dryRun) {
|
||||
writeFileSync(claude, CLAUDE_MD, "utf8");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user