Changelog

Every release of the Zenovay CLI, newest first.

$curl -fsSL https://cli.zenovay.com/install.sh | sh
v1.0.36

Install without logging in, using --tracking-code

Highlights
  • zenovay init --tracking-code ZV_… installs the tracker without a login and without a single network call. Until now init always had to sign in and fetch your site list first, which made it awkward to run anywhere a browser and a stored token are not available: a CI job, a Dockerfile, a container. Pass the tracking code from your site's settings and the whole run is local file edits.
Fixes
  • init --json now reports what it actually did, per step: tracker.installed, crawler.beacon, first-party.configured and env.written, each carrying the files it touched. Scripts no longer have to parse English sentences to find out whether a step ran.
  • framework.detected reports the real detection confidence. It previously always reported 1, even when the match was a weaker fallback.
  • A run that finds the tracker already installed now emits the same set of events as a fresh install, so a progress display cannot stall on a step that was simply skipped.
  • Pair it with --cookieless when the site runs in cookieless mode, so the tag is written correctly without looking the setting up.
v1.0.35

Scaffold a consent banner with zenovay consent init

Highlights
  • Session replay and heatmaps do not record until a visitor grants consent, on a site that has "require consent" switched on. Building that gate was left entirely to you. zenovay consent init writes a starting point into your project: it detects your framework and tells you why it picked it, then writes an unstyled component that inherits your own colours, so it never arrives as a light banner on a dark site.
Fixes
  • It never edits your existing files. It prints the two wiring steps and leaves your layout to you. --dry-run shows exactly what it would write, and it asks before writing anything.
  • The generated component calls zenovay('consent', 'granted') and zenovay('consent', 'denied'), and honours Global Privacy Control.
  • It is a separate command on purpose, and never runs as part of zenovay init. A consent mechanism you did not ask for is worse than none.
v1.0.34

Crawler tracking now sees robots.txt, llms.txt and sitemaps

Highlights
  • The crawl beacon reports requests to /robots.txt, /llms.txt, /llms-full.txt and any sitemap*.xml. Previous versions matched them against a static-asset extension list and dropped them before the request was ever sent, so the files an AI crawler fetches specifically to decide how to treat your whole site were the ones that never appeared. "Who read my robots.txt, and did they then respect it" is now answerable.
Fixes
  • Re-running zenovay init upgrades an installed beacon of any earlier version in place, in a single run. Ordinary assets that share those extensions, such as /manifest.json or /feed.xml, are still ignored, so the change adds the discovery files without adding noise.
  • Cloudflare Pages projects are detected by the presence of a functions/ directory containing a middleware or an exported onRequest handler, rather than by configuration alone.

An existing install keeps working untouched until you re-run init; nothing breaks in the meantime, the discovery files simply stay unreported. A beacon block you have edited by hand is never rewritten — the CLI prints the new block and leaves your file alone.

v1.0.33

AI crawler beacon installer

Highlights
  • zenovay init can install the AI crawler beacon, so requests from AI crawlers show up alongside your ordinary traffic.
v1.0.32

Zero-dependency package and hardened webhook tunnels

Highlights
  • The published package now declares zero runtime dependencies. All 16 runtime packages are bundled into dist/, so installing the CLI pulls nothing else from the registry and the install-time attack surface is gone. THIRD-PARTY-NOTICES.md ships in the tarball with the full 102-package license closure.
Fixes
  • Webhook tunnels now verify where they are connecting before sending credentials. The tunnel address returned by the API is checked against the API host you have configured and must use wss://; a mismatched or unencrypted address is refused without handing over an access token.
  • zenovay webhooks forward --to example.com no longer assumes an unencrypted http:// connection for a remote address. Loopback targets are unchanged; anything else needs an explicit https:// URL, because inbound headers are replayed to the target verbatim.
  • The access token is read through the permission-checked token store on every invocation. A previous shortcut read auth.json directly and would load a world-readable token file instead of refusing it and tightening the permissions.
  • apiBase and cliBase now have to be https:// URLs, with http:// allowed only for localhost during development.
  • The self-update path validates the target version itself rather than relying on its callers, so a malformed version can never reach the Windows shell.
  • Dependency scanning covers the packages that are actually shipped. Because everything is bundled, the previous production-only filter matched an empty set and reported no findings; the audit and the automated dependency updates now cover the full bundled set.
v1.0.31

Reliable Windows recovery and future updates

Highlights
  • The Windows installer is now the verified recovery path from v1.0.27. Release automation places the exact public v1.0.27 binary at the normal install path, runs the signed installer over it, and requires the resulting v1.0.31 version and SHA-256 to match the candidate before any public channel can move.
Fixes
  • Standalone Bun executables now resolve their own path from process.execPath. Earlier builds used process.argv[0], which Bun reports as the literal word bun; on Windows, v1.0.27 could therefore download and verify an update but write it to the working directory instead of replacing zenovay.exe.
  • The release gate also exercises the corrected updater from the exact v1.0.31 candidate by applying a force-downgrade to the immutable, signed v1.0.30 candidate and proving the same installed path, reported version, checksum, and temporary-file cleanup.
  • Astro installs no longer create an unused .env.local. The tracker code already carries the selected site ID, so the extra file only left otherwise-clean projects dirty after the CLI’s focused commit.
  • v1.0.30 failed closed at the Windows replacement proof and was never published to npm, GitHub Releases, or the live update manifest. Its immutable signed candidate remains available only as the downgrade fixture for this recovery test.
v1.0.30

Windows update proof on trusted HTTPS

Highlights
  • The Windows release gate now tests the shipped v1.0.27 executable against a version-bound candidate manifest served from Zenovay’s public-CA workers.dev origin. A failed candidate cannot advance any live release channel.
Fixes
  • The v1.0.29 gate failed closed because its localhost test manifest was not selected; the old CLI remained on the live v1.0.27 channel and correctly made no change. The new gate first proves that v1.0.27 sees the exact candidate, then verifies the signed download, self-replacement, reported version, installed SHA-256, and cleanup of updater files.
  • Each immutable candidate is now fresh-installed at its exact version across the release matrix before the tested manifest is promoted byte-for-byte. npm and the GitHub release must already exist, release runs are globally serialized, and an older tag cannot move the live channel backwards.
  • Post-promotion checks retry Workers KV propagation and require both JSON and flat manifests to match the candidate, so an older healthy channel cannot produce a misleading green result.
  • The macOS, Linux, and Windows native installers now refuse to install when the exact versioned checksum is unavailable. An explicit ZENOVAY_ALLOW_UNVERIFIED=1 emergency override is still available, but a checksum mismatch can never be overridden.
v1.0.29

Windows update release gate unblocked

Highlights
  • This release carries the Windows updater, download-origin, stale-backup cleanup, and CLI website fixes prepared in v1.0.28. That tag failed closed before publication, so the live update manifest and npm package remained on v1.0.27.
Fixes
  • The dedicated Windows update smoke now disables setup-node’s automatic package-manager cache. The job only needs Node for its local HTTPS manifest server; attempting to initialize a pnpm cache had stopped the runner before it could exercise the real v1.0.27 updater.
v1.0.28

Windows updates verified before release

Highlights
  • Native Windows updates now use the same signed payload in release automation and in the installed CLI, fixing the Signature verification failed. Update refused. error reported by v1.0.27 users.
  • Every release must now pass a real Windows 2022 update from the exact public v1.0.27 executable before the live version manifest can advance. The gate verifies the production public key, signature, checksum, download, self-replacement, reported version, and cleanup of temporary executables.
Fixes
  • Signed native manifests now download immutable binaries from Zenovay’s workers.dev distribution origin, so Cloudflare Bot Fight Mode cannot challenge CLI, CI, or datacenter downloads after the version check succeeds.
  • Windows removes updater-owned .old-* executable backups on the next launch instead of leaving a roughly 123 MB stale binary behind. Near-match files and npm’s Node executable are never touched.
  • The CLI website keeps the current version badge visible throughout the changelog, marks the active page for assistive technology, handles the install command on narrow screens, and presents Open dashboard without the decorative arrow.
v1.0.27

Site-aware setup from every CLI entry point

Fixes
  • After zenovay domains add, the suggested installer command now includes the new site's exact --site-id. This prevents a tracker already present in the project from silently selecting a different site.
  • Users without a site are now sent to the live /domains/add flow, and the Domains keybar action opens the current /domains page instead of obsolete /websites routes.
  • The --no-first-party help line no longer displays CAC's misleading (default: true) implementation detail. First-party installation remains enabled by default; the flag remains the explicit opt-out.
v1.0.26

Accurate first-party reinstall summary

Fixes
  • When zenovay init upgrades or adds only the first-party proxy for an existing tracker, the completion screen now reports the real changed-file count and explains that the proxy was upgraded or added. It no longer shows Modified: 0 files or claims the installation was already unchanged after writing a proxy update.
v1.0.25

Safer first-party proxy isolation

Highlights
  • Cloudflare Pages proxies generated by zenovay init now forward only the headers analytics actually needs. Customer cookies, authorization tokens, Cloudflare Access credentials, private application headers, and spoofed Zenovay trust headers never leave the customer's origin.
Fixes
  • Trusted visitor IP and location metadata is re-stamped from Cloudflare's runtime context, while request method, query, body, replay compression, privacy signals, and tracking-code headers are preserved. Upstream Set-Cookie headers are also removed before the response reaches the customer's origin.
  • Re-running the CLI safely upgrades a complete CLI-managed legacy proxy. Unrelated or lookalike function files are left untouched and no longer cause the site snippet to switch to a proxy that may not work.
v1.0.24

Compact download progress in every terminal

Highlights
  • The macOS and Linux installer now uses one compact Downloading… 10% (6.1/60.9 MiB) line instead of curl’s full-width hash bar. It matches the calm percentage-and-size presentation already used by the Windows installer.
Fixes
  • Redirected and CI output is now line-oriented, with no carriage-return animation, hash wall, ANSI color, or blue transfer panel. Failed downloads close the active progress line before the installer tries its mirror or npm fallback.
  • After a verified onboarding install, a temporary destination lookup failure now falls back to the app’s site-aware resume route. The CLI still closes first, then opens the exact onboarding state automatically instead of leaving a new user at the post-install command menu.
v1.0.23

Smoother onboarding, safer installs, and reliable session recovery

Highlights
  • The macOS, Linux, and Windows installers now show clear percentage progress. After zenovay init verifies tracking, it opens the exact onboarding or domain-setup page that still needs attention; completed sites continue to their dashboard.
  • Site selection and Git-assisted installs are safer. The CLI never guesses when multiple sites could match, accepts an explicit --site-id, leaves Git staging and history untouched when work already exists, and stages only files written by Zenovay.
Fixes
  • Expired access tokens now refresh consistently for ordinary requests and live event streams. Logout and revocation also invalidate the server-side device grant, so a retired token cannot silently remain active.
  • Running zenovay init again on an existing tracker now offers live verification and resumes the unfinished browser setup instead of stopping at an already-installed message.
v1.0.22

Polish pass — safer AI installer, clearer errors, and dozens of UX fixes

Highlights
  • A big reliability + polish pass across the whole CLI: dashboards no longer blank out on a single failed refresh, an expired session now tells you to run zenovay login instead of showing a dead retry, and every long-running view survives a network blip.
  • The AI install wizard is safer: its file writes are now confined to the specific framework layout/head files it needs — it can no longer touch your package.json, lockfiles, or unrelated source. And zenovay init --undo now reverts the last wizard run's changes.
Fixes
  • Unknown sub-commands (e.g. a typo like zenovay domains bogus) now show the valid actions and exit with an error instead of silently doing nothing.
  • zenovay update works from CI and datacenter IPs (npm-registry / mirror fallback); --help now shows real examples for each command; time-range flags are unified under --range (old names still work).
  • Clearer errors everywhere: request timeouts, proxy hints, and unexpected server responses now show a friendly message instead of a raw stack or JSON blob. Ctrl+C reliably cancels, including during login.
  • zenovay tour greets logged-out users with a single "run zenovay login" instead of a wall of errors; zenovay globe no longer garbles in narrow terminals; zenovay health gained a first-party-tracking check.
  • Login is more robust against concurrent CLI sessions (no more surprise logouts when two instances refresh at once), and auth tokens are written atomically.
v1.0.21

CI installs for every major framework · first-party proxy fixes · rock-solid self-update

Highlights
  • zenovay init now installs the tracker headlessly (CI, scripts, --json) on 10 frameworks — Next.js App Router, Astro, Vite, Angular, Qwik, SolidStart, Gatsby, Nuxt, SvelteKit and plain HTML — using the same deterministic no-AI fast path the interactive wizard uses. Previously only plain HTML worked non-interactively.
  • First-party tracking fixes for two hosts: on Netlify the proxy rule is now inserted above a catch-all /* rewrite (it was unreachable on single-page-app sites), and on Next.js the rewrite is written into the default TypeScript next.config.ts shape that create-next-app generates.
Fixes
  • Failed installs no longer leave anything behind — env vars are written only after the tracker actually lands, and every headless run ends with a machine-readable done event. --json output is real newline-delimited JSON now.
  • Self-update: the freshly-updated binary no longer runs your command twice; updates in cron/CI never swallow the command you invoked; updates work on Linux systems with a tmpfs /tmp (Fedora, Arch); and a pending update tells you once to run zenovay update instead of failing silently.
  • Network resilience: every API call has a 15-second timeout instead of hanging forever; an expired or revoked session refreshes properly on retry (or tells you to zenovay login); login survives a brief network blip instead of making you start over, and shows a "Waiting for approval…" indicator.
  • SvelteKit installs now add the tracker inside your existing <svelte:head> block — a second head block is a Svelte compile error. Astro's minimal starter installs instantly without the AI wizard.
  • zenovay health is fair to new users: not being logged in is a note, not a failure; the MCP row no longer shows a false red HTTP 401; and a new First-party tracking check tells you when Safari/Brave visitors aren't being counted and how to fix it.
  • Ctrl+C reliably cancels again (including during login). ZENOVAY_API_TOKEN and the new ZENOVAY_SITE environment variables work everywhere for scripting. zenovay logout tells you if the server-side session could not be revoked.
v1.0.20

Cleaner install snippet — localhost is a dashboard toggle, not a script attribute

Fixes
  • The tracker snippet the CLI writes no longer includes data-allow-localhost="true". It never actually enabled localhost tracking on its own: your site's settings (fetched from the same server the events go to) override the attribute, and the server only accepts localhost events when the per-site Allow Localhost toggle is on. Localhost testing is now controlled solely by that dashboard toggle (domain settings → Advanced), so the installed snippet is cleaner and consistent with the dashboard and docs. Existing installs are still recognized.
v1.0.19

Self-update never crashes on a spawn error

Fixes
  • Defense-in-depth on top of 1.0.18: if launching npm for a self-update ever fails outright (an edge-case Windows shell error), the CLI now prints a clear Update manually: npm i -g @zenovay/cli@latest hint instead of surfacing a raw spawn EINVAL stack trace.
v1.0.18

Windows self-update fixed · login required for data commands · cleaner --version · un-stuck dashboard

Highlights
  • zenovay update works on Windows again. On Node 18.20+/20.12+/21+ (and Node 24), spawning npm.cmd without a shell throws EINVAL (a Node security change) — the updater now runs npm through the shell on Windows. If you're stuck on an older version that still crashes, update once with npm i -g @zenovay/cli@latest (the broken updater can't fix itself).
Fixes
  • zenovay --version now prints just the version — not the full help text after it.
  • Every data command checks you're logged in first and says run zenovay login, instead of opening a dashboard that silently fails with 401s. (login, init, help, version, update and other bootstrap commands are exempt.)
  • The dashboard's q always quits now — even while the site-picker is open (it used to get stuck). A failed site list shows an actionable error instead of an endless "Loading…", and an expired session shows a clear "run zenovay login" message.
v1.0.17

Install verification recognizes the first-party snippet

Fixes
  • After a first-party install, zenovay init could wrongly report "tracker not yet on your live site" even though it was deployed and already recording hits. The live-site check only matched the third-party tag (data-id="ZV_…") and missed the first-party form (src="/api/_z/script.js?id=ZV_…", where the code rides in the query). It now recognizes both.
v1.0.16

First-party tracking works on Edge, Safari & Brave (every host)

Highlights
  • First-party tracking now actually works on privacy-strict browsers. The proxy + snippet are mounted at /api/_z/ across all hosts (Cloudflare Pages, Netlify, Vercel, Next.js) to match the path the tracker calls at runtime — previously the snippet loaded but every event POST hit a dead route, so Edge / Safari / Brave visitors weren't counted.
Fixes
  • Re-running zenovay init on an existing install (legacy /_z/ or new /api/_z/) is correctly detected, so it never double-installs the tag.
v1.0.15

Visible AI-install progress · deterministic Astro install · no terminal flicker

Highlights
  • The AI installer now shows live progress — a spinner plus a "Working…" status — so it never looks frozen while the model is thinking between steps.
  • Astro projects whose <head> lives a few components deep now install deterministically (no AI round-trip): the installer follows imported components to find the real <head>.
Fixes
  • No more brutal flicker on the framework-detection step in the VS Code integrated terminal.
  • Rate-limit messages now state the real reason — daily vs per-minute limit, how many you've used, and when it resets — instead of a generic "wait a moment".
v1.0.14

AI installer now handles non-standard layouts correctly

Highlights
  • The AI installer no longer reports a false "install failed" when it correctly adds the tracker to a non-standard spot — e.g. a site whose <head> lives in an imported component a couple of levels below the page layout. It now confirms success by checking the tracker is actually present in your source (the right test), instead of insisting it was written to one specific expected file (which defeated the whole point of the AI installer).
Fixes
  • Frameworks and project structures the deterministic installers can't handle — where the AI agent traces your components to find the real <head> — now complete cleanly, including the automatic first-party proxy setup that runs right after.
  • The "not installed" error is now accurate: it only fires when no tracker tag with your site's code is actually present in your source (it still catches the case where the code was written into .env only, or the wrong file).
v1.0.13

Deep hardening pass — Windows fixes, no more hangs, clearer errors

Fixes
  • Windows: zenovay now reads its config + auth from the correct location (%APPDATA%\zenovay) — a team override from teams switch and telemetry settings were being silently missed on Windows.
  • The AI install can no longer hang forever: the model stream now has an idle-timeout, so a stalled connection fails fast instead of freezing the wizard.
  • Git push failures now show the FULL error (e.g. authentication/permission), not a truncated first 80 characters.
  • Defense-in-depth: the tracking code is validated before it's ever written into your HTML/JSX/config on every install path (HTML, Vite, Astro, Remix, Solid, Next, Nuxt, SvelteKit, and the AI path).
  • The generated Cloudflare Pages first-party proxy now has a request timeout + safe redirect handling, so a slow upstream can never make your pages feel slow.
  • Clearer failures everywhere: session-expired (401) and rate-limit (429) during install now say what to do; a failed first-party setup is surfaced (not shown as success); MCP-client install failures are distinguished from "no client installed"; verify network errors include a hint; agent install failures explain the next step.
  • MCP client config files are written owner-only (0600).
v1.0.12

Hardening pass: verified install flow end-to-end + a batch of robustness fixes

Highlights
  • The whole zenovay init flow is now verified end-to-end by an automated terminal harness (it drives the real interactive wizard): framework detect → first-party host picker → success screen → the W/E shortcuts launching the live dashboard.
Fixes
  • W/E on the success screen reliably launch the dashboard on every install type (npm global/local, npx, and dev runs) — the launcher now picks the right runtime instead of mis-detecting it.
  • --skip-verify truly skips verification (no more "press [s] to skip" prompt).
  • init no longer says "already installed" when only a stale config marker exists but no real tracker tag — so re-pointing to a different site works.
  • Safer file edits: the Vercel proxy writer won't clobber an unusual vercel.json; the tracking code is validated before it's written into HTML; first-party never swaps your tag to a same-origin path unless the proxy was actually wired.
  • Cleaner runs: old undo-history folders are pruned automatically, the AI installer stops re-trying a file it can't write, and it explains when a framework needs the (slower) AI path.
v1.0.11

W / E success-screen actions launch reliably (real fix)

Fixes
  • The 1.0.10 fix for the W/E shortcuts was incomplete — they still dropped to the shell. Root cause: the wizard signalled "done" the instant you pressed a key, BEFORE its terminal teardown (exiting the alt-screen buffer + restoring the keyboard) had run, and the follow-up launch then blocked the event loop so that teardown never completed — the dashboard rendered into the about-to-be-discarded screen. It now waits for the wizard to fully tear down before launching, so W (watch) and E (events) reliably take over your terminal.
v1.0.10

The W / E shortcuts on the success screen now launch the dashboard

Fixes
  • Pressing W (watch live) or E (stream events) on the install success screen dropped to the shell instead of launching, because it mounted a second dashboard inside the wizard's just-closed terminal. It now launches the dashboard as a fresh process, so it reliably takes over your terminal. If it still can't launch, it prints the exact command (zenovay overview --site-id …) instead of closing silently.
v1.0.9

zenovay update now works for global npm installs

Fixes
  • zenovay update auto-updated via npm only when it could tell it was an npm install — but a global install (npm i -g) exposes zenovay as a symlink, and we were reading the unresolved symlink path, so it misread the install as a native binary and printed "No prebuilt binary for your platform". It now resolves the symlink first and updates via npm correctly. (Once on 1.0.9+, zenovay update and the automatic background update both work; to get TO 1.0.9 from an older version, run npm i -g @zenovay/cli@latest once.)
v1.0.8

First-party tracking sets itself up — no flag to remember

Highlights
  • When your deploy host can't be auto-detected (e.g. a static site deployed through a git integration, which leaves no config on disk), zenovay init now ASKS which host you use — Cloudflare Pages, Vercel, Netlify or Next.js — right in the wizard, and wires first-party tracking in that same run. No more re-running with --host.
Fixes
  • Clearer messaging: the standard tracker is already live and working on its own (Chrome, Firefox and most browsers) with no further setup. First-party tracking is OPTIONAL — it adds Safari, Edge and Brave (which block third-party analytics) by serving Zenovay from your own domain, a step wired at your hosting provider.
v1.0.7

MCP for Claude Code, and first-party tracking that never breaks your tracker

Highlights
  • zenovay init now sets up the Zenovay MCP server in Claude Code too (it previously only configured Cursor / Claude Desktop / VS Code). Each editor gets its correct config shape, and a second run never adds a duplicate. This is what lets your own AI assistant read your analytics and wire up custom conversion events on demand.
Fixes
  • First-party tracking no longer breaks a working install when your host can't be auto-detected (e.g. a static site deployed via a git integration). It now leaves the standard tracker in place — instead of silently pointing it at a proxy path that doesn't exist yet — and explains, in plain language, the optional one-command way to also cover Safari, Edge and Brave: zenovay init --host cloudflare-pages (or vercel / netlify / nextjs).
  • Replaced the cryptic "add a proxy from /_z/* to …/fp/*" note with a clear, benefit-first explanation everywhere it appears.
v1.0.6

Instant installs for component-based heads, and zenovay update on every platform

Highlights
  • The installer now handles projects whose <head> lives in an imported component (e.g. a shared SEO/BaseHead): it traces the import and inserts the tracker DETERMINISTICALLY and instantly, instead of handing off to the slower AI agent. Same speed as a standard layout.
Fixes
  • zenovay update now works on every platform: it updates via npm when that is how you installed, instead of failing with "No release binary for platform …".
v1.0.5

Calmer install wizard + reliable AI install on non-standard layouts

Highlights
  • The wizard no longer flickers while the AI works: the model's streamed reasoning now updates the status line at a calm cadence (a few times a second) instead of on every token.
Fixes
  • The AI install no longer gives up early on a project whose <head> lives in an imported component (e.g. a shared BaseHead): it follows the import to the right file and has the exploration headroom to do so.
v1.0.4

First-party tracking: install records events in every browser, automatically

Highlights
  • zenovay init now sets up FIRST-PARTY tracking automatically: it detects your host (Cloudflare Pages, Next.js, Vercel, Netlify), writes the proxy config, and serves the tracker same-origin via /_z/script.js. After your next deploy, events record in EVERY browser, including Edge, Safari and Brave (which block third-party trackers). Opt out with --no-first-party.
Fixes
  • Re-running the installer is a safe no-op once first-party is set up (the detector recognizes the same-origin snippet, so it never double-injects the tracker).
v1.0.3

Hands-off AI install: auto-apply, self-update, faster and cheaper, smoother wizard

Highlights
  • The AI install now applies its file changes itself, with NO per-file [y/n] prompts. Pass --review if you want to approve each write.
  • zenovay now auto-updates to the latest version by default (opt out with ZENOVAY_NO_AUTO_UPDATE=1).
Fixes
  • The install agent now writes the tracker snippet immediately instead of looping, so installs are much faster and use far fewer tokens (a stuck run previously read 30+ files across 40 rounds).
  • Smoother "Learn" cards in the wizard, and a single clear progress indicator (removed the confusing second counter at the bottom).
v1.0.2

Fix: unresponsive error screen + deprecated command in the next-steps screen

Highlights
  • A more responsive install wizard whose post-install screen points at the current commands.
Fixes
  • The "Install failed" screen now responds to q / Esc right away. It previously ignored every key and only exited after a hidden 8-second timeout.
  • The post-install next-steps screen now shows and runs zenovay overview instead of the deprecated zenovay watch.
v1.0.1

Reliability: Windows installer + first-run config fixes

Highlights
  • A more robust install and first-run experience, especially on Windows.
Fixes
  • The Windows installer (irm cli.zenovay.com/install.ps1 | iex) no longer closes your terminal window. It used to run exit inside your own shell session (for example on the "already installed" path); it now returns cleanly so the window stays open.
  • zenovay init no longer fails with "Unexpected end of JSON input" when the local config file is empty or was left half-written by an interrupted run. A corrupt config now resets to defaults instead of crashing every command.
v1.0.0

Zenovay CLI 1.0 — reliable installs for 11 frameworks, redesigned terminal UI, governed MCP

Highlights
  • Installs are now deterministic for 11 frameworks — plain HTML, Next.js (App Router), Nuxt, SvelteKit, Astro, Vite, Remix, SolidStart, Qwik, Angular and Gatsby: the tracker is placed in the right file fast, offline, idempotently, and verified afterwards. The AI agent is now a fallback only for genuinely unusual / custom project layouts.
  • New framework support: Nuxt, SvelteKit, Vite, Gatsby, Angular, SolidStart and Qwik.
  • zenovay init now verifies the tracker actually landed in your source and shows a clear confirmation — no more “done” without a write.
  • Redesigned terminal UI (“The Quiet Instrument”): every command opens full-screen, grids tile cleanly at any width with no garbled borders, and breakdowns expand so you can scroll the full list.
  • Time-window tabs now match the data actually fetched (no more picking “24h” and seeing 7-day numbers), and the home screen sums across all your sites with a real week-over-week change.
  • Discoverable [s] site switcher across data commands, clickable dashboard links, and [O] to open your dashboard from the success screen.
  • Connecting the Zenovay MCP server to Cursor, Claude or VS Code now uses secure OAuth sign-in instead of a static token, and honours the per-action permissions you set under Settings → Account → Agent.
  • The Claude/Cursor agent skills now teach the real Zenovay tracker and MCP tools, and can be dropped into your project.
Fixes
  • zenovay webhooks forward now actually starts the tunnel (it was shadowed and never ran).
  • zenovay analytics <live|funnels|goals|insights> route to the right view instead of always showing the overview.
  • zenovay ai --json in a non-interactive shell now exits with a clear error instead of crashing while reporting success.
  • Live dashboards no longer freeze or overflow on small terminals; refresh is non-destructive and shows how recent the data is.
  • Hardened the install sandbox path checks and removed all known dependency advisories.
v0.1.68

Polished install success screen + clickable links

Highlights
  • Redesigned the “You're live” screen — a clear summary card, a “first event received” confirmation, and a calmer, on-brand layout.
  • Dashboard and site URLs are now clickable terminal links and point to the readable /domains/{slug} address, never a raw ID.
  • New [O] key opens your dashboard in the browser straight from the success screen.
v0.1.67

Smoother login & install

Highlights
  • The shell-completions prompt no longer interrupts the browser sign-in during zenovay init — it's offered once at the very end, after setup is complete.
  • The curl | sh install now also puts zenovay on your PATH automatically and shows a one-liner you can run in the same terminal.
Fixes
  • Fixes the confusing “command not found: zenovay” right after install by adding the install dir to your shell profile.
v0.1.66

Resilient install & auto-update, refreshed brand

Highlights
  • Install and auto-update now fall back automatically when the primary download host is unreachable, so curl | sh, npm, and self-update keep working from servers and CI.
  • Refreshed the terminal UI to the Zenovay brand blue for a calmer, more consistent look.
Fixes
  • The installer no longer aborts before its npm fallback can run when no pre-built binary is available yet.
v0.1.65

Bidirectional site matching & already-installed detection

Highlights
  • Smarter site matching during install — the wizard matches in both directions, so a longer project hint (like a full repo name) still resolves to the right site.
  • When your project already has the correct tracking code, the wizard short-circuits to a green “already installed” panel instead of re-running setup.
  • The already-installed panel shows your site, domain, and tracking code, with quick keys to quit or re-run the wizard anyway.
  • Headless zenovay init detects the installed code and reports “already installed” rather than redoing the work.
v0.1.64

Startup crash fix for standalone binaries

Highlights
  • Fixes standalone binaries crashing at startup.
v0.1.63

Slimmer npm download

Highlights
  • The npm package no longer ships the standalone binaries, making npm install smaller and faster.
v0.1.62

Auto-update detection fix

Highlights
  • Restores the automatic update detection that broke in the standalone binary build.
v0.1.61

Install-path checks, persistent status agent & flash alerts

Highlights
  • zenovay health and zenovay doctor now detect when two zenovay binaries are on your PATH (the common npm-global + Homebrew case) and give concrete uninstall guidance.
  • The background status agent gains persistence and flash alerts.
v0.1.60

Standalone-binary support & self-test runner

Highlights
  • Reworks the entry point so the CLI runs correctly as a standalone compiled binary, with the version baked in at build time.
  • The zenovay self-test runner correctly detects whether it is running as a script or a compiled binary.
v0.1.59

Instant status-agent stop

Highlights
  • zenovay status-agent --stop now stops the background agent immediately instead of waiting for its next tick.
v0.1.58

Status-agent daemon survival fix

Highlights
  • The background status agent now keeps running past its first tick instead of exiting early.
v0.1.57

Wire up the status-agent command

Highlights
  • Registers the zenovay status-agent command so it dispatches correctly.
v0.1.56

Background status agent

Highlights
  • Adds the background status agent — a lightweight daemon that watches your live visitors, errors, and revenue and sends desktop notifications (macOS, Linux, and Windows Terminal supported).
  • The installer marks the binary as trusted on macOS so it runs without a Gatekeeper prompt.
v0.1.55

Per-site open-in-browser deep links

Highlights
  • The per-site [o] open-in-browser key now jumps straight to the correct domain dashboard tab.
v0.1.54

Globe key opens the web dashboard

Highlights
  • Removes the in-terminal globe panels and rebinds the globe [o] key to open the full interactive globe in your browser instead.
v0.1.53

Globe panel in live & overview

Highlights
  • Adds a populated globe panel to the zenovay live and zenovay overview dashboards showing where your visitors are right now.
v0.1.52

Telemetry config fix

Highlights
  • Fixes the anonymous usage telemetry so it picks up your token and API base correctly.
v0.1.51

Chat tool-calling & anonymous telemetry

Highlights
  • The in-terminal AI chat can now call tools to fetch your real analytics while answering.
  • Adds opt-in anonymous usage telemetry to help improve the CLI.
Fixes
  • Fixes the chat panel auto-closing unexpectedly.
v0.1.50

Globe rendering fix

Highlights
  • Reverts a chat-panel change from 0.1.49 that broke the globe rendering.
v0.1.49

Chat panel input handling

Highlights
  • The AI chat panel now captures keyboard input cleanly and clears the screen when it opens.
v0.1.48

AI chat panel in the dashboards

Highlights
  • Adds an embedded AI chat panel inside the TUI dashboards, so you can ask questions about your analytics without leaving the terminal.
v0.1.47

Completion & watch fixes

Highlights
  • Fixes shell completion for typed values and adds a --csv alias to zenovay watch.
v0.1.46

Open-in-browser key & polish

Highlights
  • Adds an [o] open-in-browser key across the TUI commands to jump from the terminal to the matching web dashboard view.
v0.1.45

Chart annotations

Highlights
  • zenovay annotation create adds annotations to your charts directly from the terminal.
Fixes
  • Fixes annotation command routing so the command dispatches correctly.
v0.1.43

Maintenance release

Highlights
  • Routine version bump and maintenance. This entry also covers the trivial build-only bump 0.1.44.
v0.1.42

Error message & alerts fixes

Highlights
  • API errors now show a clear, readable message instead of “[object Object]”.
  • Fixes alert create/update validation and broken flags in the guided tour.
v0.1.41

Safer self-test defaults

Highlights
  • zenovay self-test no longer runs active security probes by default.
v0.1.40

Surface real errors in overview

Highlights
  • zenovay overview no longer swallows permission errors — a bad --site-id now reports the real error.
v0.1.39

Self-test output rendering

Highlights
  • The zenovay self-test summary now prints as plain, clean stdout.
v0.1.38

Self-test ordering fix

Highlights
  • The zenovay self-test results now print in catalog order.
v0.1.37

Self-test failure layout

Highlights
  • Failure details in zenovay self-test now render on their own indented line for readability.
v0.1.36

Self-test rows & slim help

Highlights
  • Improves zenovay self-test row rendering and tier-gate logic, and slims down --help.
v0.1.35

Self-test, guided tour, alerts & export

Highlights
  • New zenovay self-test runs every read endpoint against your account in parallel and prints a colored pass/fail summary — a one-command way to check that everything works.
  • New zenovay tour — an 8-step interactive walkthrough, with a flat-document mode for non-interactive use.
  • Adds alerts management and data export, plus consistent error messages with clear semantic codes across all commands.
v0.1.34

Help & analytics display fixes

Highlights
  • Fixes a false error shown on --help and an icon collision in the analytics view.
v0.1.33

Globe borders & dashboard URL

Highlights
  • Adds country borders to the terminal globe and corrects the dashboard URL it links to.
v0.1.32

Open the real globe in your browser

Highlights
  • Adds a --browser flag and a [w] key to open the full interactive globe in your browser.
v0.1.31

Filled continents on the globe

Highlights
  • The terminal globe now renders filled continents from a world bitmap for a clearer map.
v0.1.30

Globe width & visual fixes

Highlights
  • Fixes a width-distortion bug on the terminal globe.
v0.1.29

Globe outline & layout fixes

Highlights
  • Adds a visible sphere outline to the globe and fixes bar percentages and sidebar width.
v0.1.28

3D orthographic globe

Highlights
  • Redraws the terminal globe as a real 3D orthographic Earth with visitor dot clouds and j/k hover navigation.
v0.1.27

Multi-team support & Braille globe

Highlights
  • Adds multi-team support so you can switch between the teams you belong to.
  • Introduces a real Braille-rendered globe in the terminal.
v0.1.26

Webhooks, audit log, sharing & quiet mode

Highlights
  • Adds webhook forwarding, audit-log access, and share-link commands.
  • New -q quiet mode and consistent error codes across commands.
v0.1.25

Usage command & polish

Highlights
  • New zenovay usage shows events used vs your monthly and daily caps, plus website, team, and API-key counts against your plan limits.
Fixes
  • Unknown commands now report “Unknown command” and exit with an error instead of silently succeeding; bare zenovay prints help.
  • zenovay domains list now prints a compact table instead of borrowing the projects view.
v0.1.24

Unblock mutations & dashboard-parity analytics

Highlights
  • Unblocks the mutation commands and brings the analytics commands to full dashboard parity.
v0.1.23

Full dashboard parity & mutation commands

Highlights
  • Adds 13 new commands that mirror the web dashboard, including API keys, domains, team management, profile, plans, settings, integrations, goals, and notes.
  • Agency client management (zenovay agency) for Scale plans.
  • Destructive commands now confirm before acting and refuse to run unattended without --yes.
v0.1.22

Bug fixes & polish

Highlights
  • A round of bug fixes and restrained UI polish.
v0.1.21

In-place site & range switching

Highlights
  • zenovay overview gains an in-place site switcher ([s]) and a date-range switcher ([1-4]).
v0.1.20

Cleaner UI & site domain in banner

Highlights
  • Refreshes the UI palette and shows the active site's domain in the banner subtitle.
v0.1.19

Quiet update check & login fixes

Highlights
  • The update check is now silent, and login success and the npm registry lookup are fixed.
v0.1.18

Dashboard-mirror commands

Highlights
  • The command surface now mirrors the web dashboard 1:1, adding 11 commands across analytics (overview, live, pages, devices, geo) and behavior (retention, uptime, sessions, heatmaps, journeys), with tier-gating for Pro+ features.
v0.1.17

Dashboard primitives & blocking auto-update

Highlights
  • New dashboard building blocks — metric cards, empty states, and data tables — used across every command.
  • Every command now checks for and applies updates automatically before running.
v0.1.16

Automatic site resolution

Highlights
  • The CLI now resolves your site automatically — --site-id is no longer required.
v0.1.15

Install wizard fixes

Highlights
  • Fixes a black-screen and verify-loop bug in zenovay init and adds clearer PATH guidance.
v0.1.14

Interactive post-install menu

Highlights
  • After install, zenovay init offers an interactive menu to chain straight into zenovay watch or live event tailing.
v0.1.13

Faster plain-HTML install

Highlights
  • Adds a fast path for installing the tracker on plain-HTML sites.
v0.1.12

Install reliability

Highlights
  • A failing tool during install no longer kills the install agent — it recovers and continues.
v0.1.11

Install write guarantees

Highlights
  • The installer now requires a real framework-file write to succeed before reporting success.
v0.1.10

Verify preflight

Highlights
  • zenovay verify now preflights your live URL and clears the screen between phases.
v0.1.9

Rich install diagnosis & write guard

Highlights
  • The install flow gains richer diagnosis of your project and a guard against destructive file writes.
v0.1.3

AI install wizard improvements

Highlights
  • The AI install agent now requires the tracker files to actually be written before it reports success.
  • Adds an idempotency gate so re-running zenovay init skips the agent when the tracker is already installed.
  • New post-install flow guides you through commit/push, deploy, visit, and verify.
v0.1.2

Maintenance & install fixes

Highlights
  • Maintenance release covering early install-wizard and event-tailing fixes (also accounts for the trivial bumps 0.1.4 through 0.1.8).
  • Headless and CI users get universal output formatting — JSON, CSV, TSV, and NDJSON.
  • zenovay events tail gains live filtering and forwarding.
v0.1.0

Initial release

Highlights
  • First public release of the Zenovay CLI — an AI-powered install wizard that adds the tracker to your site, plus terminal analytics dashboards.
  • Sign in with secure device-flow authentication (zenovay login).
  • zenovay init walks you through detecting your framework and installing the tracker.
  • Live terminal dashboards with zenovay watch and event tailing.
  • Health and diagnostics with zenovay health and zenovay doctor, plus automatic self-updates.
  • Published to npm as @zenovay/cli (this entry covers both 0.1.0 and 0.1.1).

Requires a free Zenovay account at app.zenovay.com.