• Version 0.1.0 Stable

    FernandoJVideira released this 2026-08-25 20:46:40 +00:00

    Changelog

    v0.1.0

    Added

    • draft new now prompts for a project shape — API, Client, or Full Stack — instead of always scaffolding a standalone API.
    • draft new client scaffolds a frontend client, with a choice of framework:
      • Nuxt — generated via the official nuxi init tooling (Nuxt UI + Tailwind), so the boilerplate and dependency versions stay current rather than pinned by Draft.
      • Vue — generated via create-vue + shadcn-vue (Tailwind), with the same tooling-owns-the-boilerplate approach.
      • Both frameworks get a Draft-maintained overlay layered on top: an auth store (login/logout/register/token refresh), route guards, an API composable, and pages for login, signup, profile, organizations, email verification, and invites — pre-wired to a Draft-generated API.
    • draft new monorepo combines a scaffolded API and client under one root (apps/api, apps/client) with go.work, pnpm-workspace.yaml, docker-compose.yml, and a Justfile tying everything together.
    • assets/embedded restructured into api / monorepo-root / client-nuxt / client-vue zones, synced from a reference template repo via a generalized, job-based sync tool (tools/sync_templates.go).

    Fixed

    • draft key was unreachable as documented — it was registered under draft new key instead of the root command, and its --size flag was never actually registered with Cobra, so passing --size failed outright (and the dead flag-lookup code would have nil-panicked if ever reached). It's now a proper top-level command; an explicit --size below 32 is rejected with an error instead of being silently replaced by the default.
    • Organizations were missing from the gRPC branch of generated main.go — the HTTP and gRPC branches now both wire up the same OrganizationService.
    • Fixed a silent no-op in the client-scaffolding overlay copier where branding replacements (e.g. project name substitution) were computed but never actually written to disk.
    • Fixed Go's embed package silently dropping dotfiles (.env.example) from the embedded template zones — //go:embed now uses all: prefixes.
    • Fixed create-vue dropping into an interactive prompt when scaffolding into a nested path (e.g. apps/client inside a monorepo), since it requires its target directory to double as a valid npm package name.
    • Removed a stray debug print() call left in draft new service.
    • randomString (used by draft key) no longer generates a random prime number per character just to pick a random index — replaced with a direct random-integer draw.

    Changed

    • Consolidated the API-scaffolding logic shared between draft new api and draft new monorepo into a single orchestrator (runNewProject + scaffoldRecipe), removing duplicated prompt/install/tidy logic between the two commands.
    • Extracted shared tool-availability checks (pnpm, npx) into one helper instead of duplicating the check across client and monorepo.
    Downloads