Files
WRNexusJS/examples/basic-app
ClintchizandClaude Opus 5 17aa3b98eb feat(islands): wire islands end to end
The island pieces existed but nothing connected .wrn compilation to island
emission. Now:

- codegen emits a data-wrn-island placeholder for component tags bound to
  .tsx imports, keeping .wrn components on the normal mount path
- the dev pipeline and static build resolve island imports, thread the
  names into codegen, and build the bundles
- collectScripts adds /__wrnexus/islands.js only when island markup is
  present, so island-free pages still ship nothing
- island routes classify as static-interactive via hasIslands

Three bugs found by driving a real page in the browser:

1. The mount runtime was never built anywhere, so the bootstrap 404'd and
   no island mounted.
2. Building the runtime separately from the islands gave each its own copy
   of React: "Cannot read properties of null (reading 'useState')". The
   runtime is now an entrypoint of the same build so React stays in one
   shared chunk. The existing single-React test only compared bundles
   within one build and could not see across build boundaries.
3. Island props arrived as attribute strings, so start={3} was "3" and
   incrementing produced "31" then "311". Props now follow JSX semantics:
   {…} parses as JSON, quoted values stay strings, and a runtime
   expression is a WRN-ISLAND-PROPS build error rather than a silent
   wrong value.

island-codegen.ts no longer imports @wrnexus/core. Compiler modules are
bundled into the Node-only VS Code extension, which contains no other
packages, so a runtime import of core broke the editor compiler; the two
helpers are implemented locally and the core dependency is dropped again.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 16:16:03 +05:30
..
2026-08-02 23:18:51 +05:30
2026-08-02 23:18:51 +05:30
2026-08-02 23:18:51 +05:30
2026-07-12 15:55:18 +05:30
2026-07-12 15:55:18 +05:30
2026-08-02 23:18:51 +05:30
2026-08-01 10:04:42 +05:30
2026-08-02 23:18:51 +05:30
2026-08-02 23:18:51 +05:30
2026-08-02 23:18:51 +05:30
2026-07-12 15:55:18 +05:30
2026-08-02 23:18:51 +05:30

basic-app

The reference app for WrNexus. Demonstrates every MVP feature.

app/
  pages/index.wrn       ->  GET /          (SSR + two counter components w/ props)
  pages/about.wrn       ->  GET /about     (pure SSR, zero JS)
  pages/reactive.wrn    ->  GET /reactive  (reactive directives, no component)
  pages/hello.wrn       ->  GET /hello     (.wrn language, compiled reactive page)
  api/hello.ts           ->  GET /api/hello
  api/echo.ts            ->  GET|POST /api/echo
  middleware/auth.ts     ->  runs first (alphabetical)
  middleware/logger.ts   ->  runs second
  realtime/chat.ts       ->  ws /realtime/chat
  components/counter.wrn ->  server-rendered component: data-component="counter"
  styles/global.css      ->  global stylesheet -> /__wrnexus/styles.css (every page)
public/
  favicon.ico          ->  framework default if this file is absent
  robots.txt           ->  GET /robots.txt
  site.webmanifest     ->  GET /site.webmanifest
wrnexus.config.ts         ->  global SEO + head injection + CSS processor + security/CORS config

wrnexus.config.ts shows global SEO defaults, how to use a CSS framework via CDN (head), or a real Tailwind/PostCSS build (styles.process). It also enables example CORS origins and documents the default security headers. To use an npm framework, @import it in app/styles/global.css.

app/pages/hello.wrn demonstrates a page-level .wrn seo block plus direct .wrn access to cookies, session, and the CSR localStorage snapshot.

Run from the repo root:

bun install
bun run dev      # serves this app at http://localhost:3000