Releases
v0.263.0
Compare
Sorry, something went wrong.
No results found
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 context→profiles (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 context→profiles
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
You can’t perform that action at this time.