release: WRNexusJS 0.3.5

This commit is contained in:
2026-07-24 12:46:44 +05:30
parent 44ba847210
commit c81dedff17
2114 changed files with 65790 additions and 150559 deletions
+26
View File
@@ -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.
+29 -8
View File
@@ -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");
}
}
}