Skip to content

v0.263.0

Choose a tag to compare

@sergiught sergiught released this 17 Jul 10:30
cb786d9

0.263.0 (2026-07-17)

⚠ BREAKING CHANGES

  • cli: --store and --model are no longer accepted; use --store-id and --model-id instead.

Features

  • apilog: add Entry type and ring-buffer Recorder (9bc7082)
  • apilog: capture bodies, redact auth, cap size in Transport (a1ca36b)
  • cli: add api raw-request command; drop --api-url/--token; rename store→stores, tuple→tuples (46a9d95)
  • cli: consistent commands, groups error on typos, -o/--output (74746a8)
  • client: add WithCapture option to record requests (5c48527)
  • client: default to higher consistency for reads (c8f9d9b)
  • client: load the private_key_jwt PEM from keyring or key_file (a4a969a)
  • cli: make bare ofga the sole TUI entry point; gradient help banner (7c77882)
  • cli: render help usage/examples as raised terminal blocks with a $ prompt (dd53aa2)
  • cli: standardize store and model ID flags (df7204a)
  • cli: stderr for status lines, bulk --file tuple writes (b34fa56)
  • cli: styled --help (chip section headers, aligned columns) in theme colors (c7c36b6)
  • cli: version subcommand, TTY guard, theme command, query/tuple flags, examples (2cf4811)
  • completion: dynamic shell completion for profiles, stores and models (35f02e4)
  • config,client: profile auth methods; rename contextprofiles (7a9df1e)
  • config: add keyring secret helpers and private_key field (124084a)
  • config: discoverability, env parity, validation and safer loading (4e74c99)
  • config: env secrets, config override, friendly auth, safer set (77266cf)
  • config: resolve secrets from the keyring; clean up on remove (e13fdc0)
  • config: store secrets in the OS keyring on save (83c0948)
  • Crush-style block wordmark hero on splash + compact sidebar logo; Aurora-themed forms; splash dismisses on keypress (6a9d561)
  • dsl: ANTLR-lexer syntax highlighting for DSL text (0243f36)
  • dsl: per-rune Cells primitive; rebuild Highlight on it (1a1dc8b)
  • dsl: role-based syntax colors (type/relation names, dimmed comments) (f02d019)
  • dsl: syntax-error diagnostics via openfga/language parser (cd7c234)
  • dsl: undefined-type diagnostics (25eb125)
  • dx: harden secrets and fix CLI/output/TUI correctness bugs (8604bf5)
  • errors: humanize network failures, add typed exit codes and a request timeout (1f1a318)
  • errors: show usage on misuse, validate tuples early, add fix-it hints (1a27086)
  • fga: bundle converging graph edges onto shared trunks; lift diagram row-width cap (0150d37)
  • field: add a toggle field; Enter advances between fields (d235af6)
  • field: highlight the focused form row; flatten the dialog (8c7df98)
  • install: add verified release installer (9d9e029)
  • logo: kerned 4-row slab wordmark that fits every sidebar width (83a2ae5)
  • logo: real OpenFGA mark as embedded-bitmap half-block art (49d56d4)
  • logo: stacked OPENFGA block wordmark renderer with gradient + shimmer (210af2b)
  • model: accept .fga DSL input in model write (3d0c0b3)
  • onboarding: add ofga init and OAuth flags on profiles add (7079036)
  • output: add --yaml output alias (229faa9)
  • output: add -o yaml output format (6b15ca6)
  • output: consistent JSON contract for mutations, queries and version (419b2ab)
  • output: themed CLI output — status dots, framed tables (3c73f53)
  • playground: ABAC conditions & contextual tuples; per-section footer counts (ce8e291)
  • playground: add API Logs keybindings (b61c453)
  • playground: add list-relations query mode (a91a8c8)
  • playground: add the collapsed "ACL path" view to the resolution (7ea8ba5)
  • playground: always show assertion count badge (0 included); autoload assertions (60bc442)
  • playground: ambient gradient drift on wordmark and active pill (6ab1571)
  • playground: API Logs footer/help keys, mouse-wheel scroll, aligned URL header (9ed31d8)
  • playground: API URL header, path-only detail, j/k body scroll, request count badge (dcca528)
  • playground: arrow-key section navigation; graph pans via shift+arrows and hjkl (ce26e4e)
  • playground: assertions master-detail split with condition/context detail (f47d03e)
  • playground: Check resolution tree (Expand) in the Query panel (b95f645)
  • playground: concrete placeholder examples for context, contextual tuples & condition (157c22b)
  • playground: ctrl+r opens a check's resolution from the query editor (b35f704)
  • playground: delete a store from the Stores tab (with confirmation) (159d78f)
  • playground: descriptive footer key hints (n add, / filter, t run all, …) (7fea154)
  • playground: DSL model editor — author and apply authorization models in the TUI (21ef2bf)
  • playground: flag undefined types live when the DSL parses (4c98347)
  • playground: flat query sections, de-boxed previews, inline empty states, brand version (5a5c83f)
  • playground: gate query context/contextual tuples behind a toggle (6d4c810)
  • playground: highlight the granting path; open it from assertions (221b327)
  • playground: label Stores add shortcut "add" (was "new") (ca0f530)
  • playground: make API log detail tabs clickable (7e71a3b)
  • playground: manage assertions (add / edit / delete / run) (0462c53)
  • playground: master-detail previews for stores, tuples, and changes (1086307)
  • playground: migrate to bubbletea v2 + bespoke field forms; drop huh (6300f61)
  • playground: minimal ctrl+k command palette overlay (55ffff9)
  • playground: pin query input to a bottom rounded box with mode chip (e26dc21)
  • playground: profiles tab, config auto-persist, auth forms, resolution view (c929e34)
  • playground: query dashboard with verdict card and rerunnable history strip (fe37283)
  • playground: recompute DSL diagnostics on every editor edit (565a3cd)
  • playground: register API Logs section and wire recorder (759daf0)
  • playground: remove the Settings theme switcher; Aurora is the fixed theme (9c89f01)
  • playground: render API Logs list detail panes (e009d33)
  • playground: render forms and model picker as centered overlays (52e0302)
  • playground: render through the sidebar shell + splash screen (a822434)
  • playground: resolve tuple-to-userset branches in the granting path (0e65f5d)
  • playground: scroll API Logs detail/URL and style the status line (7701117)
  • playground: sidebar count badges for Profiles, Stores and Assertions (fbf0880)
  • playground: single syntax-colored DSL editor pane; drop split preview (60a394b)
  • playground: single-line list formatting in compact mode (90a5f84)
  • playground: soft-wrap the API Logs detail body (96d399b)
  • playground: splash gradient shimmer with spring rise; self-stopping ticker (a1ac30f)
  • playground: splashless spring entrance replaces the gate screen (3c83fc2)
  • playground: split DSL editor with live highlight preview and diagnostics (8d8bce1)
  • playground: tabbed API Logs detail, wider list, no latency column (73013cb)
  • playground: tidy API Logs detail spacing, scrolling, and list rows (e65bdc2)
  • playground: toast chips + breathing connection dot (7ba1e1f)
  • playground: two-frame materialize transition between sections (1ee419a)
  • playground: use 'a' to add on Profiles and Stores (was 'n') (84d2f07)
  • playground: v toggles compact full-width list view (f7a6a00)
  • profiles: add cleanup-credentials --purge to wipe orphaned keyring entries (AUTH-10) (d1cf026)
  • profiles: add private_key secret, stored in the keyring (1bba1f9)
  • safety: confirm destructive commands and add --dry-run (4465276)
  • shell: block wordmark in sidebar, centered empty states, cleaner query (no double border), fix nav background marks (6208663)
  • shell: centered dialog box and ANSI-aware overlay compositor (026963e)
  • shell: filled title bar + gradient underline, powerline chips, violet dialogs, magenta selection, drift/entrance plumbing (31da1a6)
  • shell: flat canvas — header-rule main pane, hatch-banded brand block, quiet status, no panel fills (41c6ee2)
  • shell: frame main pane in a rounded panel on a cohesive base; fix list row width (d6ebf0a)
  • shell: master-detail focus model for the playground (726e1ac)
  • shell: nav glyphs + gradient active pill; segmented status bar with keycaps (602ec74)
  • shell: painted surfaces via lipgloss v2 canvas; dialog scrim+shadow; toast slot (01986d4)
  • shell: render the real OpenFGA mark in the sidebar; rebrand to OpenFGA CLI (bc6b15a)
  • shell: sidebar + main + status bar layout with collapse (740366e)
  • shell: stacked OPENFGA wordmark in the sidebar; retire the bitmap mark; tagline brand line (22ded0a)
  • style: add per-rune Gradient renderer for the wordmark (8cc8b81)
  • style: add status-dot helpers (223aad2)
  • style: chip, keycap, and gradient-pill helpers (045daf0)
  • style: SectionHeader primitive; dim keycaps; retire GradientUnderline (62723bd)
  • theme: add Aurora theme derived from OpenFGA brand gradient, make it default (4d3df0b)
  • theme: migrate theme+style to lipgloss v2 color.Color; add surface tiers (93b65a3)
  • theme: violet/magenta accent family, deeper surface contrast, phased gradient helpers (32e256c)
  • tui: add a ? keybinding overlay (e4de055)
  • tui: add a focus caret under the mono theme (532d130)
  • tui: breadcrumb sub-modes and a compact tab strip when collapsed (373e833)
  • tui: confirm every delete through one modal, highlight the subject (b8abeef)
  • tui: ctrl+s submits forms; unify form errors into one modal (f110b59)
  • tui: first-run CTAs, safer confirms, loading + cap feedback (6ad0a75)
  • tui: flag truncated query output instead of dropping it silently (210abc8)
  • tui: inline field validation on blur (8cd1dff)
  • tui: mouse support — wheel scroll and click-to-navigate (3f9dbc9)
  • tui: richer mouse — buttons, list rows, chips, list scroll, click-away (11236e3)
  • tui: show a loading spinner in empty stores/tuples/changes panes (027ec37)
  • tui: stack toasts, wrap text, linger longer on errors (b84dfcd)
  • ui/list: add compact single-line mode to list wrapper (cd3c43f)
  • ui: bespoke themed field/form component to replace huh (a04af8b)
  • ui: cycle-select form field + FocusIndex; profile nav icon; profile status chip (5296979)
  • ui: icon capability rungs (nerdfont/unicode/off) with config key (3bcdf20)
  • ui: migrate layout/list/fga to charm.land v2 packages (e3b1b9e)

Bug fixes

  • apilog: capture only OpenFGA API host so OAuth token fetches never leak (deab462)
  • apilog: redact secret fields in captured request/response bodies (f8e53ff)
  • api: read stdin only for a - body; expose error bodies as JSON (87ed884)
  • auth: isolate credentials and harden config persistence (8d858b9)
  • ci: give the test job an OS keyring for secret-store e2e tests (b98bf21)
  • classify bad-input errors as usage (exit 2) (OUT-22, OUT-23, CLI-25) (af7afc9)
  • cli: correct exit codes and JSON shape for scripting/CI (94d9503)
  • cli: correct exit codes, typo suggestions, forced color and icons (cdcbb27)
  • cli: diagnose a mistyped global flag before a subcommand path (CLI-27) (bf24765)
  • cli: dry-run JSON, usage exit codes and friendly validation for commands (c428f6d)
  • client: warn on cleartext credentials sent to the OAuth token endpoint (de29463)
  • client: warn on plaintext-http credentials and key/method mismatch (60b6783)
  • clierr: point an unreachable token endpoint at token_url, not api_url (OUT-24) (a231bd2)
  • cli: harden automation, output, and I/O (6d8936e)
  • cli: honor FORCE_COLOR on the early config-load error path (CFG-27) (19f2f0d)
  • cli: indent the root help banner to align with the sections (fceddfd)
  • cli: keep single-file go run working (53fcced)
  • cli: match crush help layout — bold headers + raised usage/examples block (71ae88a)
  • cli: resolve version banner, exit 130 on interrupt, colorize errors safely (80f86d8)
  • cli: stabilize scripting and automation contracts (d7cb17d)
  • config: honor FORCE_COLOR/NO_COLOR conventions and fix icons warning (7087fab)
  • config: let env vars bypass the keyring in Resolve (5372c6c)
  • config: refuse to clobber an unreadable config; surface load errors (f3c71d0)
  • dsl: don't flag CEL identifiers in condition bodies as undefined types (b47f25f)
  • icons: correct Model glyph to U+E725; pin exact nav codepoints in test (3887d62)
  • icons: move nav glyphs to Nerd-Font-v2-safe ranges; add powerline caps (322b89e)
  • list: mint selection accent instead of off-theme pink (8d2d3bb)
  • logo: keep smooth downsampling; cull sub-15% alpha bleed in the renderer (78d0157)
  • model: report unknown subcommand, not unknown flag, when a typo carries a flag (CLI-26) (4ce3e3c)
  • output: honor --plain/-o table for model get and version (OUT-25, CLI-30) (e0b8c01)
  • output: profile-aware writers restore NO_COLOR/pipe byte parity for classic CLI (805f4fd)
  • output: resolve build version in version --json (b8bada2)
  • output: treat a closed pipe on -o yaml as a clean short read (OUT-21) (096dce2)
  • playground: advertise the / filter with a hint and placeholder (64dda9f)
  • playground: align API log status column (96e1034)
  • playground: API log label honors OPENFGA_PROFILE/FGA_PROFILE (CFG-26) (73073d0)
  • playground: blank line between the assertion form's last field and its hint (2a3f7f2)
  • playground: cap query dashboard and sidebar height so the status bar survives short terminals (1e9f009)
  • playground: consistent tab keycap hint across section states (7e91118)
  • playground: consistent, persistent query errors; capitalize context labels (0f76a04)
  • playground: don't strand the Model view on a stale pinned model_id (TUI-33) (b1e9de1)
  • playground: follow the just-added row after a write (TUI-34) (d89cec3)
  • playground: gate verdict flash on badge results; skip empty preview header (f0bc61c)
  • playground: honest assertion toast, working palette filter and hint fixes (289165e)
  • playground: inline query context/contextual tuples (drop unreachable c key) (ef07db6)
  • playground: keep assertion filter clean in compact mode (f6583ec)
  • playground: keep cursor in view after resize; document cursor-past-width (ce1ef8f)
  • playground: keep the query editable after running it (9532bf5)
  • playground: let the boot-time size report start the entrance instead of killing it (fbeb572)
  • playground: preserve graph viewport scroll offsets across terminal resizes (01e76bd)
  • playground: record query history mode from the completed query, not live UI state (1aaecba)
  • playground: scope API log origin label to the active profile (fc59c6d)
  • playground: show apply error once (footer, not also a toast) while editing (72c52db)
  • playground: size dialog content to the dialog so modal corners stay on screen (f98aca9)
  • playground: size query form to fit inside its box (no more clipped … column) (32bda78)
  • playground: size section lists to the master-detail split width (01f81ba)
  • playground: splash auto-dismisses when the shimmer completes (997ff25)
  • playground: TUI correctness, secret handling and rerun ergonomics (44b1a55)
  • playground: wrap long editor error footer instead of truncating (a4961a2)
  • profiles: show a masked private_key row for private_key_jwt (AUTH-9) (575bc7d)
  • profiles: usage exit codes + confirm the wide auth unset (CLI-28, CLI-29) (10553e9)
  • query: flag parity for expand + swap-catching validation (CLI-23, CLI-24) (ac9bea0)
  • shell: align sidebar context (connection status) icon with the nav tab icons (39f30bd)
  • shell: correct sidebar/main width math so regions fill the full width (462c3ae)
  • shell: drop painted panel backgrounds to eliminate bg-discontinuity artifacts; structure via borders (a1b6f70)
  • shell: drop sidebar tagline, show version only (no mid-word truncation) (89d0540)
  • shell: make the modal panel fill cleanly to its border (b252869)
  • shell: show badge on active nav item; test splash keypress dismissal (ad4bcd3)
  • shell: theme the modal dialog and form inputs (1d6c980)
  • shell: truncate content and clamp frame to terminal size to prevent wrap-induced overflow (8d826c8)
  • style: SectionHeader pads to exact width when the title fills it (6b76e7f)
  • test: forward D-Bus session to the keyring e2e subprocess (027aeaf)
  • toast: cap toast text width so wide errors never overlap the sidebar (82de1f0)
  • tui: error toasts auto-expire instead of sticking forever (b97797d)
  • tui: fill toast background behind the icon separator and wrapped lines (1c38a23)
  • tui: harden playground state and interactions (3a9d6ca)
  • tui: prevent stale state and unsafe rendering (e4c77b1)
  • tui: symmetric graph pan and accurate form key hints (3f17030)

Performance

  • tui: stop the spinner tick loop when idle (1dc38c5)

Refactors

  • config: remove legacy api_token field (7b076d1)
  • fga: share context parsers, fix positional/flag Triple (c844168)
  • playground: editorBody uses editorViewportRows (5c4b56e)
  • playground: guard diagnostics reparse; test multi-error ordering (f126f4b)
  • rename app package and App type to cli/CLI (f983089)

Tests

  • add seeded OpenFGA + auth0-mock demo stack for OAuth flows (3dafb13)
  • cli: black-box e2e coverage for command behavior (d33f7e6)
  • oauth: seed the GitHub authorization model + varied tuples (8e8833c)
  • playground: assert compact toggle drops the detail card (7f4bb09)
  • playground: make verdict-flash regression test discriminate the badge gate (3897f16)

Documentation

  • add README, MIT LICENSE, and CONTRIBUTING (7c5ce21)
  • add repo banner (47b1723)
  • clarify --store/--model vs --store-id/--model-id flag naming (567805e)
  • correct env vars, examples and contributing guide (eb3dd5b)
  • document hardened CLI and release workflows (e5e40ea)
  • document OAuth env vars and correct stale help/README copy (50addd5)
  • document that model write accepts .fga DSL (DOC-12) (283f0af)
  • embed playground and quickstart demo GIFs in README (8baef23)
  • examples: add generated CLI and playground demo GIFs (cd4adc5)
  • examples: add VHS tapes and make gifs target for CLI/TUI demos (6fe1887)
  • examples: end hero demo with an allowed check and its resolution (b812faf)
  • examples: render tab icons and enlarge demo GIFs (ca4095b)
  • examples: richer playground demo and smaller quickstart GIF (98b73ee)
  • examples: use .fga model and move tapes to examples/tapes (ade2b42)
  • examples: use ctrl+r for the resolution in the hero demo (21ffc42)
  • improve onboarding and operational guidance (c5b6a68)
  • readme: show model.fga DSL in quickstart and reorder the playground hero gif (2d34198)
  • shell: fix package doc — structure comes from headers, not borders (6ea6ed0)
  • shell: refresh stale wordmark comment; reconcile spec shimmer-axis wording (734f202)

Build

  • add Makefile and GitHub issue/PR templates (d2631d8)
  • add release pipeline, CI, and distribution (4110409)
  • publish container image as ghcr.io/sergiught/ofga (6dfd144)
  • require go 1.26.5 and derive Go version from go.mod in CI (b26c33e)
  • scaffold Homebrew tap and AUR packaging (a79d387)

Chores

Changelog

  • cb786d9 chore(main): release 0.263.0 (#1)
  • d80e5e2 chore(deps): update module github.com/charmbracelet/log to v2 (#9)
  • d8110a6 chore(deps): update go modules (#7)
  • 6278217 ci(renovate): run go mod tidy after updates
  • 891ec06 chore(deps): update github-actions (major) (#8)
  • 1200c2b chore(deps): update github-actions (#3)
  • bb4ae7b chore(deps): update dependency anchore/syft to v1.48.0 (#4)
  • fbd4ef5 chore(config): migrate Renovate config (#5)
  • fd5e1bc ci(renovate): add Renovate config for deps, actions, and toolchain pins
  • 027aeaf fix(test): forward D-Bus session to the keyring e2e subprocess
  • f30b7de chore: release 0.263.0
  • f5cb6ff ci(release): publish container images to Docker Hub and unify image name
  • b98bf21 fix(ci): give the test job an OS keyring for secret-store e2e tests
  • 2d34198 docs(readme): show model.fga DSL in quickstart and reorder the playground hero gif
  • d89cec3 fix(playground): follow the just-added row after a write (TUI-34)
  • bf24765 fix(cli): diagnose a mistyped global flag before a subcommand path (CLI-27)
  • e0b8c01 fix(output): honor --plain/-o table for model get and version (OUT-25, CLI-30)
  • 10553e9 fix(profiles): usage exit codes + confirm the wide auth unset (CLI-28, CLI-29)
  • 209304d style: gofmt query expand command
  • d1cf026 feat(profiles): add cleanup-credentials --purge to wipe orphaned keyring entries (AUTH-10)
  • 4ce3e3c fix(model): report unknown subcommand, not unknown flag, when a typo carries a flag (CLI-26)
  • 19f2f0d fix(cli): honor FORCE_COLOR on the early config-load error path (CFG-27)
  • a231bd2 fix(clierr): point an unreachable token endpoint at token_url, not api_url (OUT-24)
  • 283f0af docs: document that model write accepts .fga DSL (DOC-12)
  • b1e9de1 fix(playground): don't strand the Model view on a stale pinned model_id (TUI-33)
  • 575bc7d fix(profiles): show a masked private_key row for private_key_jwt (AUTH-9)
  • ac9bea0 fix(query): flag parity for expand + swap-catching validation (CLI-23, CLI-24)
  • af7afc9 fix: classify bad-input errors as usage (exit 2) (OUT-22, OUT-23, CLI-25)
  • 096dce2 fix(output): treat a closed pipe on -o yaml as a clean short read (OUT-21)
  • 73073d0 fix(playground): API log label honors OPENFGA_PROFILE/FGA_PROFILE (CFG-26)
  • 47b1723 docs: add repo banner
  • 21ffc42 docs(examples): use ctrl+r for the resolution in the hero demo
  • 7e71a3b feat(playground): make API log detail tabs clickable
  • b35f704 feat(playground): ctrl+r opens a check's resolution from the query editor
  • b812faf docs(examples): end hero demo with an allowed check and its resolution
  • ade2b42 docs(examples): use .fga model and move tapes to examples/tapes
  • 96e1034 fix(playground): align API log status column
  • 98b73ee docs(examples): richer playground demo and smaller quickstart GIF
  • ca4095b docs(examples): render tab icons and enlarge demo GIFs
  • fc59c6d fix(playground): scope API log origin label to the active profile
  • 3d0c0b3 feat(model): accept .fga DSL input in model write
  • 8baef23 docs: embed playground and quickstart demo GIFs in README
  • cd4adc5 docs(examples): add generated CLI and playground demo GIFs
  • 6fe1887 docs(examples): add VHS tapes and make gifs target for CLI/TUI demos
  • 53fcced fix(cli): keep single-file go run working
  • c5b6a68 docs: improve onboarding and operational guidance
  • 3a9d6ca fix(tui): harden playground state and interactions
  • d7cb17d fix(cli): stabilize scripting and automation contracts
  • 8d858b9 fix(auth): isolate credentials and harden config persistence
  • 9d9e029 feat(install): add verified release installer
  • 5076555 ci: pin tooling and attest release artifacts
  • e5e40ea docs: document hardened CLI and release workflows
  • e4c77b1 fix(tui): prevent stale state and unsafe rendering
  • 6d8936e fix(cli): harden automation, output, and I/O
  • 229faa9 feat(output): add --yaml output alias
  • df7204a feat(cli)!: standardize store and model ID flags
  • 567805e docs: clarify --store/--model vs --store-id/--model-id flag naming
  • 6b15ca6 feat(output): add -o yaml output format
  • f8e53ff fix(apilog): redact secret fields in captured request/response bodies
  • 5372c6c fix(config): let env vars bypass the keyring in Resolve
  • 1bba1f9 feat(profiles): add private_key secret, stored in the keyring
  • a4a969a feat(client): load the private_key_jwt PEM from keyring or key_file
  • e13fdc0 feat(config): resolve secrets from the keyring; clean up on remove
  • 83c0948 feat(config): store secrets in the OS keyring on save
  • 7b076d1 refactor(config): remove legacy api_token field
  • 124084a feat(config): add keyring secret helpers and private_key field
  • 8e8833c test(oauth): seed the GitHub authorization model + varied tuples
  • 3dafb13 test: add seeded OpenFGA + auth0-mock demo stack for OAuth flows
  • ca0f530 feat(playground): label Stores add shortcut "add" (was "new")
  • 84d2f07 feat(playground): use 'a' to add on Profiles and Stores (was 'n')
  • 96d399b feat(playground): soft-wrap the API Logs detail body
  • 9ed31d8 feat(playground): API Logs footer/help keys, mouse-wheel scroll, aligned URL header
  • dcca528 feat(playground): API URL header, path-only detail, j/k body scroll, request count badge
  • 73013cb feat(playground): tabbed API Logs detail, wider list, no latency column
  • 7701117 feat(playground): scroll API Logs detail/URL and style the status line
  • e65bdc2 feat(playground): tidy API Logs detail spacing, scrolling, and list rows
  • deab462 fix(apilog): capture only OpenFGA API host so OAuth token fetches never leak
  • b61c453 feat(playground): add API Logs keybindings
  • e009d33 feat(playground): render API Logs list detail panes
  • 759daf0 feat(playground): register API Logs section and wire recorder
  • 5c48527 feat(client): add WithCapture option to record requests
  • a1ca36b feat(apilog): capture bodies, redact auth, cap size in Transport
  • 9bc7082 feat(apilog): add Entry type and ring-buffer Recorder
  • b26c33e build: require go 1.26.5 and derive Go version from go.mod in CI
  • 76be531 ci: pin all GitHub Actions to commit SHAs
  • f51e358 ci: bump golangci-lint-action to v8 for golangci-lint v2
  • ae392f5 chore: add community-health files and PR-title lint
  • 6dfd144 build: publish container image as ghcr.io/sergiught/ofga
  • 64dda9f fix(playground): advertise the / filter with a hint and placeholder
  • 50addd5 docs: document OAuth env vars and correct stale help/README copy
  • 289165e fix(playground): honest assertion toast, working palette filter and hint fixes
  • de29463 fix(client): warn on cleartext credentials sent to the OAuth token endpoint
  • 7087fab fix(config): honor FORCE_COLOR/NO_COLOR conventions and fix icons warning
  • 80f86d8 fix(cli): resolve version banner, exit 130 on interrupt, colorize errors safely
  • c428f6d fix(cli): dry-run JSON, usage exit codes and friendly validation for commands
  • b8bada2 fix(output): resolve build version in version --json
  • eb3dd5b docs: correct env vars, examples and contributing guide
  • 44b1a55 fix(playground): TUI correctness, secret handling and rerun ergonomics
  • 60b6783 fix(client): warn on plaintext-http credentials and key/method mismatch
  • cdcbb27 fix(cli): correct exit codes, typo suggestions, forced color and icons
  • 419b2ab feat(output): consistent JSON contract for mutations, queries and version
  • 87ed884 fix(api): read stdin only for a - body; expose error bodies as JSON
  • f3c71d0 fix(config): refuse to clobber an unreadable config; surface load errors
  • a91a8c8 feat(playground): add list-relations query mode
  • f6583ec fix(playground): keep assertion filter clean in compact mode
  • 7f4bb09 test(playground): assert compact toggle drops the detail card
  • f7a6a00 feat(playground): v toggles compact full-width list view
  • 90a5f84 feat(playground): single-line list formatting in compact mode
  • cd3c43f feat(ui/list): add compact single-line mode to list wrapper
  • f47d03e feat(playground): assertions master-detail split with condition/context detail
  • 5c4b56e refactor(playground): editorBody uses editorViewportRows
  • b47f25f fix(dsl): don't flag CEL identifiers in condition bodies as undefined types
  • 4c98347 feat(playground): flag undefined types live when the DSL parses
  • a4961a2 fix(playground): wrap long editor error footer instead of truncating
  • 25eb125 feat(dsl): undefined-type diagnostics
  • f02d019 feat(dsl): role-based syntax colors (type/relation names, dimmed comments)
  • ce1ef8f fix(playground): keep cursor in view after resize; document cursor-past-width
  • 72c52db fix(playground): show apply error once (footer, not also a toast) while editing
  • 60a394b feat(playground): single syntax-colored DSL editor pane; drop split preview
  • 1a1dc8b feat(dsl): per-rune Cells primitive; rebuild Highlight on it
  • f126f4b refactor(playground): guard diagnostics reparse; test multi-error ordering
  • 8d8bce1 feat(playground): split DSL editor with live highlight preview and diagnostics
  • 565a3cd feat(playground): recompute DSL diagnostics on every editor edit
  • 0243f36 feat(dsl): ANTLR-lexer syntax highlighting for DSL text
  • cd7c234 feat(dsl): syntax-error diagnostics via openfga/language parser
  • 1c38a23 fix(tui): fill toast background behind the icon separator and wrapped lines
  • b97797d fix(tui): error toasts auto-expire instead of sticking forever
  • 38ce5d5 refactor(tui)+test: split update.go; error unknown signing method; add tests
  • 6ad0a75 feat(tui): first-run CTAs, safer confirms, loading + cap feedback
  • 77266cf feat(config): env secrets, config override, friendly auth, safer set
  • 74746a8 feat(cli): consistent commands, groups error on typos, -o/--output
  • b34fa56 feat(cli): stderr for status lines, bulk --file tuple writes
  • c844168 refactor(fga): share context parsers, fix positional/flag Triple
  • 94d9503 fix(cli): correct exit codes and JSON shape for scripting/CI
  • a79d387 build: scaffold Homebrew tap and AUR packaging
  • d2631d8 build: add Makefile and GitHub issue/PR templates
  • 4110409 build: add release pipeline, CI, and distribution
  • 7c5ce21 docs: add README, MIT LICENSE, and CONTRIBUTING
  • 2cf4811 feat(cli): version subcommand, TTY guard, theme command, query/tuple flags, examples
  • 373e833 feat(tui): breadcrumb sub-modes and a compact tab strip when collapsed
  • 8cd1dff feat(tui): inline field validation on blur
  • 210abc8 feat(tui): flag truncated query output instead of dropping it silently
  • b84dfcd feat(tui): stack toasts, wrap text, linger longer on errors
  • 11236e3 feat(tui): richer mouse — buttons, list rows, chips, list scroll, click-away
  • 3f9dbc9 feat(tui): mouse support — wheel scroll and click-to-navigate
  • f110b59 feat(tui): ctrl+s submits forms; unify form errors into one modal
  • 532d130 feat(tui): add a focus caret under the mono theme
  • 027ec37 feat(tui): show a loading spinner in empty stores/tuples/changes panes
  • 1dc38c5 perf(tui): stop the spinner tick loop when idle
  • e4de055 feat(tui): add a ? keybinding overlay
  • b8abeef feat(tui): confirm every delete through one modal, highlight the subject
  • d33f7e6 test(cli): black-box e2e coverage for command behavior
  • 7079036 feat(onboarding): add ofga init and OAuth flags on profiles add
  • 3f17030 fix(tui): symmetric graph pan and accurate form key hints
  • 35f02e4 feat(completion): dynamic shell completion for profiles, stores and models
  • 4e74c99 feat(config): discoverability, env parity, validation and safer loading
  • 1a27086 feat(errors): show usage on misuse, validate tuples early, add fix-it hints
  • 4465276 feat(safety): confirm destructive commands and add --dry-run
  • 1f1a318 feat(errors): humanize network failures, add typed exit codes and a request timeout
  • 8604bf5 feat(dx): harden secrets and fix CLI/output/TUI correctness bugs
  • f983089 refactor: rename app package and App type to cli/CLI
  • 8723d9b chore: gitignore docs/superpowers
  • c8f9d9b feat(client): default to higher consistency for reads
  • 8d0f1ef chore(deps): fetch published go-openfga v0.110.0 and adapt to typed API
  • 2a3f7f2 fix(playground): blank line between the assertion form's last field and its hint
  • 39f30bd fix(shell): align sidebar context (connection status) icon with the nav tab icons
  • 159d78f feat(playground): delete a store from the Stores tab (with confirmation)
  • fceddfd fix(cli): indent the root help banner to align with the sections
  • 71ae88a fix(cli): match crush help layout — bold headers + raised usage/examples block
  • dd53aa2 feat(cli): render help usage/examples as raised terminal blocks with a $ prompt
  • c7c36b6 feat(cli): styled --help (chip section headers, aligned columns) in theme colors
  • 46a9d95 feat(cli): add api raw-request command; drop --api-url/--token; rename store→stores, tuple→tuples
  • 0ca0be5 chore(theme): remove taskpilot theme
  • 7fea154 feat(playground): descriptive footer key hints (n add, / filter, t run all, …)
  • 60bc442 feat(playground): always show assertion count badge (0 included); autoload assertions
  • fbf0880 feat(playground): sidebar count badges for Profiles, Stores and Assertions
  • 0f76a04 fix(playground): consistent, persistent query errors; capitalize context labels
  • 9532bf5 fix(playground): keep the query editable after running it
  • 157c22b feat(playground): concrete placeholder examples for context, contextual tuples & condition
  • 6d4c810 feat(playground): gate query context/contextual tuples behind a toggle
  • ef07db6 fix(playground): inline query context/contextual tuples (drop unreachable c key)
  • ce8e291 feat(playground): ABAC conditions & contextual tuples; per-section footer counts
  • c929e34 feat(playground): profiles tab, config auto-persist, auth forms, resolution view
  • 5296979 feat(ui): cycle-select form field + FocusIndex; profile nav icon; profile status chip
  • 7a9df1e feat(config,client): profile auth methods; rename contextprofiles
  • 0150d37 feat(fga): bundle converging graph edges onto shared trunks; lift diagram row-width cap
  • 0e65f5d feat(playground): resolve tuple-to-userset branches in the granting path
  • 7ea8ba5 feat(playground): add the collapsed "ACL path" view to the resolution
  • 221b327 feat(playground): highlight the granting path; open it from assertions
  • b95f645 feat(playground): Check resolution tree (Expand) in the Query panel
  • 0462c53 feat(playground): manage assertions (add / edit / delete / run)
  • d235af6 feat(field): add a toggle field; Enter advances between fields
  • 8c7df98 feat(field): highlight the focused form row; flatten the dialog
  • b252869 fix(shell): make the modal panel fill cleanly to its border
  • 1d6c980 fix(shell): theme the modal dialog and form inputs
  • 8d2d3bb fix(list): mint selection accent instead of off-theme pink
  • 726e1ac feat(shell): master-detail focus model for the playground
  • 734f202 docs(shell): refresh stale wordmark comment; reconcile spec shimmer-axis wording
  • 89d0540 fix(shell): drop sidebar tagline, show version only (no mid-word truncation)
  • 22ded0a feat(shell): stacked OPENFGA wordmark in the sidebar; retire the bitmap mark; tagline brand line
  • 210af2b feat(logo): stacked OPENFGA block wordmark renderer with gradient + shimmer
  • 5680e9a chore(assets): deterministic mark regeneration (strip PNG timestamp chunks)
  • bc6b15a feat(shell): render the real OpenFGA mark in the sidebar; rebrand to OpenFGA CLI
  • 78d0157 fix(logo): keep smooth downsampling; cull sub-15% alpha bleed in the renderer
  • 49d56d4 feat(logo): real OpenFGA mark as embedded-bitmap half-block art
  • 6ea6ed0 docs(shell): fix package doc — structure comes from headers, not borders
  • e8bdffc polish(shell,playground): drop redundant recent label, rung-align result tones, refresh stale comments, caps rung test, hatch scope
  • f98aca9 fix(playground): size dialog content to the dialog so modal corners stay on screen
  • 3897f16 test(playground): make verdict-flash regression test discriminate the badge gate
  • f0bc61c fix(playground): gate verdict flash on badge results; skip empty preview header
  • 5a5c83f feat(playground): flat query sections, de-boxed previews, inline empty states, brand version
  • 41c6ee2 feat(shell): flat canvas — header-rule main pane, hatch-banded brand block, quiet status, no panel fills
  • 6b76e7f fix(style): SectionHeader pads to exact width when the title fills it
  • 62723bd feat(style): SectionHeader primitive; dim keycaps; retire GradientUnderline
  • 7b64cbe polish(playground): entrance/drift comment, shimmer if-else, capChip rename, icon-mode cleanup, arrow routing tests
  • fbeb572 fix(playground): let the boot-time size report start the entrance instead of killing it
  • 6ab1571 feat(playground): ambient gradient drift on wordmark and active pill
  • 3c83fc2 feat(playground): splashless spring entrance replaces the gate screen
  • ce26e4e feat(playground): arrow-key section navigation; graph pans via shift+arrows and hjkl
  • 31da1a6 feat(shell): filled title bar + gradient underline, powerline chips, violet dialogs, magenta selection, drift/entrance plumbing
  • 83a2ae5 feat(logo): kerned 4-row slab wordmark that fits every sidebar width
  • 3887d62 fix(icons): correct Model glyph to U+E725; pin exact nav codepoints in test
  • 322b89e fix(icons): move nav glyphs to Nerd-Font-v2-safe ranges; add powerline caps
  • 32e256c feat(theme): violet/magenta accent family, deeper surface contrast, phased gradient helpers
  • fd79e15 polish: final review batch — blend mono guard, store-switch query reset, quieter load toasts, raised border bg, splash guard, icons env test
  • 1e9f009 fix(playground): cap query dashboard and sidebar height so the status bar survives short terminals
  • 997ff25 fix(playground): splash auto-dismisses when the shimmer completes
  • 805f4fd fix(output): profile-aware writers restore NO_COLOR/pipe byte parity for classic CLI
  • 180f7a1 chore(deps): lipgloss v1 becomes indirect (last direct consumer migrated)
  • 3c73f53 feat(output): themed CLI output — status dots, framed tables
  • 01f81ba fix(playground): size section lists to the master-detail split width
  • 1086307 feat(playground): master-detail previews for stores, tuples, and changes
  • 1aaecba fix(playground): record query history mode from the completed query, not live UI state
  • fe37283 feat(playground): query dashboard with verdict card and rerunnable history strip
  • 1ee419a feat(playground): two-frame materialize transition between sections
  • 82de1f0 fix(toast): cap toast text width so wide errors never overlap the sidebar
  • 7ba1e1f feat(playground): toast chips + breathing connection dot
  • a1ac30f feat(playground): splash gradient shimmer with spring rise; self-stopping ticker
  • 6e9eff2 chore: gitignore graphify-out session artifacts
  • 7e91118 fix(playground): consistent tab keycap hint across section states
  • 602ec74 feat(shell): nav glyphs + gradient active pill; segmented status bar with keycaps
  • 3bcdf20 feat(ui): icon capability rungs (nerdfont/unicode/off) with config key
  • 01986d4 feat(shell): painted surfaces via lipgloss v2 canvas; dialog scrim+shadow; toast slot
  • 045daf0 feat(style): chip, keycap, and gradient-pill helpers
  • 01e76bd fix(playground): preserve graph viewport scroll offsets across terminal resizes
  • 155ce4f style: gofmt internal/style/style.go
  • 6300f61 feat(playground): migrate to bubbletea v2 + bespoke field forms; drop huh
  • a04af8b feat(ui): bespoke themed field/form component to replace huh
  • 78e4d88 chore(deps): drop stickers, promote charm.land v2 modules to direct requires
  • e0787e0 chore(ui): remove dead layout package (stickers/lipgloss-v1 bound, unused)
  • e3b1b9e feat(ui): migrate layout/list/fga to charm.land v2 packages
  • 93b65a3 feat(theme): migrate theme+style to lipgloss v2 color.Color; add surface tiers
  • a1b6f70 fix(shell): drop painted panel backgrounds to eliminate bg-discontinuity artifacts; structure via borders
  • 21ef2bf feat(playground): DSL model editor — author and apply authorization models in the TUI
  • 6208663 feat(shell): block wordmark in sidebar, centered empty states, cleaner query (no double border), fix nav background marks
  • 6a9d561 feat: Crush-style block wordmark hero on splash + compact sidebar logo; Aurora-themed forms; splash dismisses on keypress
  • 32bda78 fix(playground): size query form to fit inside its box (no more clipped … column)
  • 9c89f01 feat(playground): remove the Settings theme switcher; Aurora is the fixed theme
  • d6ebf0a feat(shell): frame main pane in a rounded panel on a cohesive base; fix list row width
  • 8d826c8 fix(shell): truncate content and clamp frame to terminal size to prevent wrap-induced overflow
  • e26dc21 feat(playground): pin query input to a bottom rounded box with mode chip
  • 55ffff9 feat(playground): minimal ctrl+k command palette overlay
  • 52e0302 feat(playground): render forms and model picker as centered overlays
  • ad4bcd3 fix(shell): show badge on active nav item; test splash keypress dismissal
  • a822434 feat(playground): render through the sidebar shell + splash screen
  • 462c3ae fix(shell): correct sidebar/main width math so regions fill the full width
  • 026963e feat(shell): centered dialog box and ANSI-aware overlay compositor
  • 740366e feat(shell): sidebar + main + status bar layout with collapse
  • 7c77882 feat(cli): make bare ofga the sole TUI entry point; gradient help banner
  • 223aad2 feat(style): add status-dot helpers
  • 8cc8b81 feat(style): add per-rune Gradient renderer for the wordmark
  • 4d3df0b feat(theme): add Aurora theme derived from OpenFGA brand gradient, make it default
  • 3be2b58 chore: baseline ofga CLI/TUI source
  • fed8341 Initial commit