1.22.3 (2026-02-26)
- enforce strict v2 transcript sequencing invariants (6563f4f)
- enforce tool-use lineage invariants before chat requests (df2a1c9)
- harden chat v2 protocol handling and isolate wire contract (d8a4cea)
- log and count protocol violations in turn lifecycle (9418b5f)
- preserve assistant tool_use lineage in tool-result followups (8c926f1)
- preserve tool-result sequencing and classify chat 4xx errors (8ae965f)
- unblock GitHub Actions runner selection and workflow lint (62e8cbc)
1.22.2 (2026-02-26)
- restructure CLI CI workflows for strict checks (9d71eaa)
- scope chat tool lifecycle messages by turn and tool IDs (b1012dd)
1.22.1 (2026-02-26)
- add scoped-client concurrency coverage and query tool telemetry (da0d1be)
- align chat messages and input to global edge padding (22c49bb)
- eliminate uploader shutdown race in app runtime (83ea6f4)
- enforce strict chat stream v2 contract and harden client state machine (ae0238c)
- enforce strict chat stream v2 protocol and regenerate clients (439021f)
- harden app runtime lifecycle and db polling timeouts (1a78fcd)
- harden chat stream state handling and tests (c54a6b1)
- harden chat/api clients and bound tool query execution (326ac52)
- run chat tool execution asynchronously off the tea update loop (49548c9)
1.22.0 (2026-02-25)
- compliance: show leaking vs at-risk breakdown in compliance tab (b2e7d66)
- deps: complete workos-go v4 to v6 migration (b0a477a)
- include recommendation, impact, and evidence in show tool result (cf7d3e7)
1.21.0 (2026-02-25)
1.20.0 (2026-02-25)
- show volume/bytes/cost percentages in service detail view (785ebdb)
- remove misleading discovery progress bars from services tab (b47324c)
- sync auth errors no longer kill the syncer permanently (bd3fae4)
1.19.0 (2026-02-24)
- show estimated savings in waste tab headline (357ce17)
- compliance tab timeout — switch to pre-aggregated cache table (c3197ab)
1.18.0 (2026-02-24)
- add policy card component and show tool (568723f)
- add Quality tab and enrich all analysis tabs with category descriptions (4def4cd)
- add spacer line between chat messages and input bar (e05b723)
- clean up orphaned messages from DB on cancel (47205b1)
- clean up waste table Impact column and lower discovery thresholds (2534d9a)
- display "$0/yr" instead of "—" for zero-value impact in waste category table (e6b6557)
- eliminate JOINs in waste category detail query using denormalized columns (42dedd9)
- only toggle tool/thinking blocks when clicking the header line (936cefc)
- restore category subtitle in policy header and use orange focus border (550409c)
- tighten policy card layout — remove subtitle, rationale divider, cap examples (de8d2fe)
- use pre-computed cache table for waste category statuses (c5e453b)
1.17.0 (2026-02-20)
- add log event detail drill-down to Services tab (0b9890c)
- selectable log events in drawer detail views submit context-specific prompts (145c239)
- replace sticky userScrolled flag with AtBottom() snapshot for smoother scrolling (930703e)
- show helpful guidance when all services are disabled in drawer tabs (64fc372)
1.16.0 (2026-02-19)
- add discovery progress indicators and PII observed/at-risk split (5663eea)
- async statusbar polling, impact_type + per-severity volumes, Impact column (dc64f87)
- replace PII tab with comprehensive Compliance tab covering 4 categories (8d2c568)
- show cost percentage per waste category in Est. Savings column (8f92b53)
- color 'at risk' compliance status with warning color to match dot (ba88810)
- deps: update module github.com/mattn/go-sqlite3 to v1.14.34 (#42) (fe9ca4b)
- distinguish null from zero for all measurement fields (804721d)
- force-refresh sync token on server auth rejection (7ea6fe5)
- remove redundant error toasts from query tool (977a4d0)
- show actual error message on stream failures and fix statusbar overflow (17ece74)
1.15.0 (2026-02-13)
- add dedicated PII tab to statusbar (8c12d91)
- add keyboard navigation and drill-down to waste drawer (c0d1667)
- add set_service_enabled chat tool (fe88058)
- copy selected text to clipboard with toast feedback (bb01fe4)
- redesign statusbar with services and waste tabs (ac1f245)
- show environment label in status bar for non-production envs (4668b85)
- show PII type categories in statusbar instead of field paths (9f98c13)
- add spacer between sync status headline and description (469d0e3)
- check rows.Err after EXPLAIN QUERY PLAN iteration (6d4d530)
- clarify pending counts as policies in waste view (8df2869)
- clicking outside drawer closes it and passes click through (ac858e3)
- code block background matches panel surface (9bf7caa)
- complete Chroma syntax highlighting for code blocks (c948523)
- deps: update module github.com/workos/workos-go/v4 to v6 (#36) (5ef549f)
- display friendly category names in waste table (0fb0d06)
- eliminate black rectangles in markdown code blocks (d9ef4f1)
- empty state shows setup guidance when no services are enabled (bb6520b)
- hide catalog drawer when all services are disabled (6c17498)
- move clipboard.WriteAll to tea.Cmd to avoid blocking Update (eefa102)
- reject queries with full table scan JOINs (12238a6)
- show org name in status bar during onboarding (eb7e76c)
- show org name in status bar during onboarding (f492541)
- show total volume in services summary, reorder statusbar segments (ffd4e09)
- syntax highlighting uses distinct colors for keys vs strings (807822c)
- text highlight no longer bleeds into left border (79c4636)
- tool error state collapsed by default with chevron toggle (d1406ba)
- use config defaults for PowerSync endpoint in generate script (fd04fc5)
- validate service existence before enabling/disabling (3256d6e)
1.14.0 (2026-02-11)
- stream error handling with StateFailed and DB cleanup (a3bf473)
- cap query tool results to prevent token limit errors (fb6d116)
- preserve chat messages when stream errors on subsequent turns (5e90a49)
- single write connection prevents flaky notification tests (92806e5)
1.13.0 (2026-02-11)
- WAL mode with separate read/write connection pools (0ffe144)
1.12.0 (2026-02-11)
- dynamic drawer height with row clipping and +N more (d4b7627)
- drawer shrinks to fit content instead of filling page (5c8f347)
- fill statusbar with diagonals when drawer hint is hidden (0f76244)
- hide drawer hint until data is loaded (c869ce3)
- prevent duplicate API streams when tools complete during turn transition (017ae6e)
- show empty state when all catalog services are disabled (99c73c1)
- suppress drawer until data is loaded (5db3e5c)
1.11.1 (2026-02-10)
- duplicate stream completion and cross-turn tool leaking (3b946b0)
1.11.0 (2026-02-10)
- add detailed logging to chat client (e10fd9d)
- add nested command palette with theme selection (a822da8)
- display costs as yearly instead of monthly (af8b5d4)
- graceful stream error handling (12e34ea)
- improve catalog drawer (aaa8105)
- improve message list focus UX (199b67b)
- show query execution time in tool result title (fa44c3b)
- disable strikethrough in markdown rendering (2b8db94)
- include chat endpoint in token audience (c9dbdba)
- increase watch test timeouts to prevent flakiness (8d565ca)
- race between persist and fire tool results (a3f3231)
- reduce max sync retry backoff from 30s to 10s (1785294)
- revert hardcoded version to dev (e34e468)
- set org and workspace on statusbar after onboarding (b2c6c41)
- upload assets to existing release-please release (90aca09)
- write log file to ~/.tero instead of /tmp (d1f283e)
1.10.0 (2026-02-09)
- replace goreleaser with native CGO builds on platform runners (8a59146)
- mark prerelease tags, skip homebrew update for rc tags (4f80be8)
- use macos-latest with cross-compile for darwin/amd64 (66e9dce)
1.9.0 (2026-02-09)
- add chat focus toggle, table options, and AccentAlt color (dcc1664)
- add command bar, theme refactor, and testing improvements (48e3e63)
- add context window usage to statusbar and refactor API service inputs (68c2401)
- add conversation update/delete and improve logging (a94d762)
- add cost column to policy status category table (95ab73d)
- add debug subcommand for diagnostics (1d55c14)
- add environment-based API endpoint configuration (30c440d)
- add install script for single-line installation (42566fb)
- add messagelist test infrastructure and tests (c7267bd)
- add mouse scrolling and text selection with highlighting (0988aa7)
- add PowerSync integration for local-first data sync (4708259)
- add SQLite change subscriptions and chat service (d20b755)
- add statusbar drawer with tabs and right-aligned ctrl+d hint (9b40c01)
- add toast notification system for user-facing errors (04d1d02)
- add tools architecture with query tool and schema generator (a9fd4b9)
- add upload event channel for TUI integration (8ab23f3)
- add X-Account-ID header to API requests (946266b)
- admin tool for org membership, typed token claims (f14835b)
- auth: add auth commands for API authentication (4a72f7a)
- auth: add org selection and switch command (ff90d80)
- auth: add styles and tests to auth commands (8566a04)
- auth: auto-open browser when device auth starts (69640c0)
- auth: auto-refresh expired access tokens (e0564e2)
- auth: refresh token with org scope after org creation (2c8834c)
- block padding, elevated surfaces, explicit bg on all styled text (583d1f3)
- cancel active round on new message or esc, fix tool spinner persistence (4d4c91f)
- cli: add --reset flag to clear preferences and auth (f4036e6)
- client-generated UUIDs and streaming model metadata (21dc12a)
- cmd: add tero reset subcommand (91859e8)
- command palette triggered by / on empty input (e8a5345)
- config: namespace credentials and config by environment (3e07a7b)
- esc opens quit dialog when no active round to cancel (57a1891)
- focus command bar on mouse click (b2d7650)
- handle idempotent upload failures (404 on delete, conflict on create) (9513d72)
- implement cursor positioning with marker extraction (942ce28)
- make WorkOS client ID configurable via environment variable (a8c8f70)
- move thinking indicator into message list (654db05)
- onboarding: add TERO_SKIP_TO_APP env var to skip completion screen (cb7cdce)
- org/account switching, preference cascading clears, table column reordering (aec63d5)
- policy status drawer, context-aware chat empty state, personalized input bar (7f85d84)
- powersync upload protocol and chat streaming (9775926)
- release: add Docker Hub publishing (ec4917c)
- release: add Scoop bucket publishing for Windows (d0ee803)
- show upgrade message when version changes (c9de3f1)
- simplify PowerSync/SQLite schema generation (b463a4a)
- tool block collapse by default with chevron, restyle thinking block, quit dialog, window title, statusbar fixes (b0c7bfe)
- tui: redesign theme system and unify discovery step (94c129b)
- use ready_for_use to gate onboarding instead of status (5bdf62c)
- waste badge component, risk colors, show all categories, sort by pending count (3dc1d84)
- wire up tool execution with Turn abstraction (a7e756d)
- add context propagation to sqlite interface (f2e16aa)
- address lint errors in client tests (033322e)
- allow onboarding to proceed when some services have errors (c3290d8)
- assistant message flickering and thinking animation (cc37f2b)
- auth: improve expired device code error message (585cddd)
- auth: refresh token without org when --no-org is set (e72a651)
- auth: use body style for instruction text (b60cf98)
- cancel session context on shutdown, TERO_ENV taskfile, env var renames (478c78c)
- check ps_sync_state instead of ps_buckets for sync completion (b9b0fde)
- ci: don't cancel in-progress signoff on master pushes (f4a4d6d)
- ci: prevent master pushes from cancelling each other (4effc4a)
- ci: skip signoff for release-please commits (94bcf5e)
- ci: use conventional Docker Hub secret names (5b19541)
- ci: use correct Docker Hub secret names (8e65aa8)
- cli: --reset flag continues into TUI instead of exiting (aa1c16e)
- client: extract message from genqlient HTTPError (b8c8c5a)
- client: regenerate client with workosOrganizationID field (0f8cd92)
- client: update API client token after org-scoped refresh (fbdbfea)
- datadog: prevent browser opening during tests (07e170d)
- deps: update go dependencies (minor/patch) (#16) (c4a98e5)
- deps: update module github.com/charmbracelet/x/ansi to v0.11.3 (#22) (9b68d36)
- deps: upgrade gopkg.in/yaml.v2 to v3 (3a308ae)
- drawer sits flush under statusbar, border matches slash color (09dad5e)
- enable staging WorkOS client ID by default for development (8cb3b9c)
- install: remove confirmation prompt for piped installs (63a8c82)
- install: remove nested color codes from success message (c225f97)
- lint issues and update to golangci-lint v2 config (072c7bd)
- Loading checks sync state directly instead of relying on messages (585c8f8)
- onboarding: add context and step counter to Datadog flow (aba531e)
- onboarding: clarify Datadog region question (8acdc0e)
- onboarding: consistent text styling across screens (cdf5be6)
- onboarding: correct text hierarchy - prompts white, explanations muted (543bdf9)
- onboarding: improve Datadog connection flow copy (a699766)
- org: refresh token with org scope when selecting existing org (2213227)
- org: show loading state during token refresh after auto-selection (9dc3851)
- org: show org name when auto-selecting (cbedf8d)
- org: use spinner loader during token refresh (60befb1)
- reduce statusbar diagonal slashes from 3 to 2 (833e964)
- remove install:test from signoff (runs before release exists) (b5b9913)
- remove invalid rlcp field from goreleaser config (8a6a7aa)
- remove log output from get_latest_version function (89df1ad)
- remove unsupported folder field from brews config (6b4eec9)
- resolve linter errors in tests and workos (c63df9d)
- schema generation uses local control plane and writes to correct paths (a732106)
- scroll gap mismatch, error body styling, and scroll amounts (5ae16a9)
- show context window percentage in statusbar (b3deb16)
- specify Formula directory in goreleaser brew config (b79d28a)
- strict JSON unmarshaling for PowerSync instructions (fd9f713)
- styles: detect terminal background for theme selection (c80b387)
- unignore powersync extension binaries for embed (6bdb398)
- update GraphQL schema for datadog account status changes (9801d66)
- use 'folder' instead of deprecated 'directory' in goreleaser (881cbeb)
- use config and manifest files for release-please (b7d49dc)
- install test should fail on errors, not swallow them (89442b1)
- remove separate test-install workflow (874a9ea)
- switch back from homebrew_casks to brews for CLI tool (4ec664c)
1.8.0 (2026-01-13)
- tui: redesign theme system and unify discovery step (10c99a1)
- address lint errors in client tests (179b2cc)
- ci: prevent master pushes from cancelling each other (075c36d)
1.7.0 (2025-12-15)
- cmd: add tero reset subcommand (1438789)
- auth: refresh token without org when --no-org is set (1f892ba)
- styles: detect terminal background for theme selection (3cf0f2b)
1.6.0 (2025-12-15)
- auth: add org selection and switch command (a113c52)
- auth: add styles and tests to auth commands (8ad0f3e)
- ci: use conventional Docker Hub secret names (c1dd141)
- ci: use correct Docker Hub secret names (f51b02f)
1.5.0 (2025-12-15)
- auth: add auth commands for API authentication (7b7e70f)
- release: add Docker Hub publishing (6664122)
- release: add Scoop bucket publishing for Windows (1a6895c)
- ci: don't cancel in-progress signoff on master pushes (0ae0394)
- ci: skip signoff for release-please commits (91ad45e)
- deps: update go dependencies (minor/patch) (#16) (eb4a5b5)
- deps: upgrade gopkg.in/yaml.v2 to v3 (f23df38)
1.4.0 (2025-12-09)
- auth: auto-open browser when device auth starts (a18653f)
- auth: auto-refresh expired access tokens (71bceca)
- auth: refresh token with org scope after org creation (8b28daf)
- cli: add --reset flag to clear preferences and auth (c66af84)
- config: namespace credentials and config by environment (74f05a8)
- auth: improve expired device code error message (b50d793)
- auth: use body style for instruction text (6e91c3f)
- cli: --reset flag continues into TUI instead of exiting (c274ad1)
- client: extract message from genqlient HTTPError (c470a2e)
- client: regenerate client with workosOrganizationID field (9e9aee3)
- client: update API client token after org-scoped refresh (bbeac04)
- datadog: prevent browser opening during tests (11f3b97)
- install: remove nested color codes from success message (a2201db)
- onboarding: add context and step counter to Datadog flow (f882347)
- onboarding: clarify Datadog region question (7f967c9)
- onboarding: consistent text styling across screens (0fd2dc5)
- onboarding: correct text hierarchy - prompts white, explanations muted (1f2630b)
- onboarding: improve Datadog connection flow copy (8beab8e)
- org: refresh token with org scope when selecting existing org (63053e4)
- org: show loading state during token refresh after auto-selection (97eaebf)
- org: show org name when auto-selecting (a6cea1c)
- org: use spinner loader during token refresh (351b8e8)
- resolve linter errors in tests and workos (9bb90e9)
1.3.0 (2025-12-03)
- onboarding: add TERO_SKIP_TO_APP env var to skip completion screen (e948998)
- install: remove confirmation prompt for piped installs (7d1c86f)
- specify Formula directory in goreleaser brew config (b64aa60)
1.2.3 (2025-11-17)
- remove unsupported folder field from brews config (bb5291e)
- install test should fail on errors, not swallow them (ba4233e)
1.2.2 (2025-11-17)
- switch back from homebrew_casks to brews for CLI tool (a3311ed)
1.2.1 (2025-11-17)
- use 'folder' instead of deprecated 'directory' in goreleaser (0918ba4)
1.2.0 (2025-11-17)
- add install script for single-line installation (d7ce2b4)
- make WorkOS client ID configurable via environment variable (a719553)
- show upgrade message when version changes (ff72bc7)
- enable staging WorkOS client ID by default for development (981bce2)
- remove log output from get_latest_version function (b253eec)
- remove separate test-install workflow (69fabb6)
1.1.1 (2025-11-15)
- remove invalid rlcp field from goreleaser config (ebc1cc9)
1.1.0 (2025-11-15)
- add environment-based API endpoint configuration (8d3dd46)
- initial release (f60c2b2)