• v0.2.0 39678f3ea6

    Draft v0.2.0 Stable

    FernandoJVideira released this 2026-09-16 12:28:58 +00:00 | 10 commits to main since this release

    Generated clients now ship on @fernandojvideira/vue-ui-kit, with every default page rebuilt on it, and both client images build with docker compose out of the box.

    Client scaffolding (draft new client, draft new monorepo)

    • vue-ui-kit is the component library on both frameworks. Vue drops the shadcn-vue init/add steps and imports vue-ui-kit's theme.css directly; Nuxt switches from the ui (Nuxt UI) starter to minimal with Tailwind v4 + vue-ui-kit wired by hand. The leftover shadcn-vue / Nuxt UI config, deps, and generated component files are gone.
    • Default pages redesigned on real kit components — Card, FormField, Dialog, Select, EmptyState, Skeleton, Avatar, Badge, Alert, Spinner — with a shared useEntrance() fade/rise entrance and .press tap feedback matching the kit.
    • Tabbed auth card. /login and /signup share one Log in / Register card after the kit's AuthDemo; the route picks the initial tab so ?redirect= and existing links keep working.
    • Single-tone page background. The tint lives once on the layout root and pages fill the viewport, instead of each page painting a band that stopped where its content ended.
    • Docker images for both clients. Nuxt runs its Nitro server; Vue is served by nginx with a history-mode fallback and /api/ proxied to the api container (resolved per request, so it starts even before api is up). Both mount ~/.npmrc as a build secret to fetch @fernandojvideira/vue-ui-kit from the Gitea registry — nothing is baked into the image — and the monorepo's docker-compose.yml wires the secret up, so just local / docker compose build need no extra flags.
    • typescript pinned to ~6.0.0 in the Nuxt scaffold: the minimal starter has no TypeScript devDependency, and an unpinned install lands on TS 7, which breaks the cross-file type resolution vue-ui-kit's components rely on.

    Fixed

    • Generated monorepos couldn't build their client image. The compose file referenced apps/client/Dockerfile but the Nuxt overlay never wrote it, and the Vue client had no image at all. Both now ship one (see above).
    • Vue monorepos had a stale root lockfile. The Vue scaffold wrote a pnpm-workspace.yaml into apps/client, making it its own workspace, so installs updated a nested lockfile while the root one kept describing the template's Nuxt client — pnpm install --frozen-lockfile refused it. It's now only written for a standalone client.
    • Vue projects were missing AuthCard.vue. The overlay listed components by name; it now embeds src/components/ as a whole.
    • Nuxt SSR crashed on any page using Dialog (Injection Symbol(DialogRootContext) not found). The two client apps pinned different vue ranges, so pnpm resolved two vue/reka-ui instances and reka-ui's provide/inject context couldn't cross them. Fixed with a workspace-wide vue override and by excluding vue-ui-kit (raw .vue source) from Vite's dependency pre-bundler.
    • draft key is registered on the root command with a working --size flag.
    • make build no longer builds the binary twice; the embed step is stamped so unchanged sources skip it. New make clean.
    • Help text now covers clients and monorepos, not just Go APIs.
    • Removed a stray debug print from the service generator.
    • Fresh clients rendered a blank /login (Vue) or crashed SSR on Dialog pages (Nuxt): Vite pre-bundled vue-ui-kit with a second reka-ui instance, so its provide/inject contexts didn't match. Generated configs now exclude the package from optimizeDeps.
    • The auth card's Log in / Register tabs now update the URL (/login ↔ /signup, keeping ?redirect=) without losing typed input.

    Upgrade notes

    • Generated clients install @fernandojvideira/vue-ui-kit from its Gitea npm registry, so pnpm install and container builds need the one-time ~/.npmrc token setup described in the vue-ui-kit README
    Downloads