jake cadef10226 fix: debounce project-name input, preserve tree expansion on reset, add loading overlay, and make file-preview fill available height on desktop
- `CommandBar` now holds a local `draft` state and pushes `onNameChange` only after a 300 ms debounce — each call navigates, reruns the loader, and rebuilds the file tree, so firing per keystroke was wasteful; external `name` changes (history nav, reset) flow back into `draft` via a sync effect
- `FilePreview.useEffect` snapshots which directory nodes were expanded before calling `model.resetPaths` and replays them via `initialExpandedPaths` — previously `resetPaths` collapsed the entire tree on every module selection change
- A semi-transparent spinner overlay (`useRouterState({ select: s => s.isLoading })`) renders over the file-preview grid while the route loader reruns, replacing the jarring "flash of stale content" with a subtle refresh indicator
- Right-column section in `builder/index.tsx` gains `lg:flex lg:h-[calc(100vh-6rem)] lg:flex-col` so it fills the viewport and `FilePreview` can grow to consume remaining space; card, inner grid, and `PreviewPane` scroll container all get `lg:flex-1 lg:min-h-0 lg:max-h-none` to lift the fixed `sm:max-h-[480px]` cap on large screens; `EmptyState` gets the same flex treatment
- Both `navigate` calls pass `resetScroll: false` so typing a project name or toggling a module doesn't jump the viewport back to the top
- `--trees-bg-override:transparent` is set on `<FileTree>` so the shadow-DOM tree background inherits the card surface rather than painting its own opaque fill
2026-05-21 14:45:21 -04:00
2026-05-20 11:52:53 -04:00
2026-05-20 11:52:53 -04:00
2026-05-20 11:52:53 -04:00

Stanza

Modular monorepo template CLI — shadcn for full-stack TypeScript stacks.

pnpm create stanza my-app

Pick a framework, ORM, database, auth provider, styling — get a clean monorepo with idiomatic code, vendored into your repo. Add modules later with stanza add.

Generated projects keep slot boundaries explicit: auth, db, and orm install into their own internal workspace packages (packages/auth/, packages/db/, named @<your-app>/auth, @<your-app>/db), and your app consumes them via workspace:* deps. Swapping an auth provider replaces the contents of packages/auth/ without touching your app's imports.

What's inside

apps/
  cli/            # @stanza/cli — the CLI binary
  web/            # https://stanza.tools (TanStack Start)
packages/
  registry/       # shared schema, slot/peer/capability resolver
  codemods/       # ts-morph helpers for region-aware patching
  create-stanza/  # `pnpm create stanza` shim
registry/
  modules/        # first-party modules (framework, orm, db, auth, styling)

Status

Work in progress. See CLAUDE.md, TODO.md, and REGISTRY.md for current state.

License

MIT — see LICENSE.

S
Description
🥁 shadcn for infrastructure.
https://stanza.tools
Readme MIT
3.3 MiB
Languages
TypeScript 91.5%
MDX 6.1%
CSS 2.2%
JavaScript 0.2%