Commit graph

38 commits

Author SHA1 Message Date
f3f66ae560 Fix fzf-lua ansi_from_hl compatibility
Wrap the highlighted segment render path so forge only consumes the first return value from fzf-lua's ansi_from_hl helper, and add a regression spec covering the newer two-value return shape.

Co-authored-by: Codex <noreply@openai.com>
2026-03-28 21:23:59 -04:00
Barrett Ruth
09463c08b7
ci: add neovim and busted to CI shell
Problem: the CI flake shell lacked `neovim`, so `vimdoc-language-server`
could not resolve builtin Neovim help tags like `|:checkhealth|`.
Also missing `busted`/`nlua` lua packages.

Solution: add `pkgs.neovim` to the `ci` shell and `busted`/`nlua` via
`luajit.withPackages` to both shells, matching the pattern used in
canola.nvim. Revert the vimdoc workaround from the previous commit.
2026-03-28 18:40:16 -04:00
Barrett Ruth
d6a4766aac
feat: gitignore demo files 2026-03-28 18:38:09 -04:00
Barrett Ruth
be29458072
docs: fix unresolved vimdoc tag reference
Problem: `|:checkhealth|` is not a valid vimdoc tag, causing the
vimdoc-language-server check to fail in CI.

Solution: use inline code (\`:checkhealth forge\`) instead of a tag
reference.
2026-03-28 18:37:30 -04:00
Barrett Ruth
f8ec4acf19
ci: deduplicate quality checks in luarocks-dev
Problem: `luarocks-dev` called the `quality` reusable workflow on every
push to main, duplicating every check that `quality.yaml` already runs
independently on the same trigger.

Solution: switch `luarocks-dev` to `workflow_run` trigger, firing only
after the `quality` workflow completes successfully on main.
2026-03-28 18:37:26 -04:00
Barrett Ruth
0e892b0b52
ci: format 2026-03-28 18:35:17 -04:00
Barrett Ruth
ac8db6851f
refactor(picker): canonicalize backend names into single table
Problem: picker backend names were hard-coded as string literals in
`picker/init.lua`, `health.lua`, and `init.lua` validation, making
them easy to get out of sync.

Solution: export `backends` and `detect_order` from `forge.picker` and
reference them in health check and config validation instead of
duplicating the name strings.
2026-03-28 17:50:11 -04:00
Barrett Ruth
97698c2af1
docs: update vimdoc and health check for picker backends
Problem: docs listed fzf-lua as the only required dependency, and the
health check only verified fzf-lua.

Solution: update requirements to list all three picker backends, add
`picker` config option to vimdoc, update health check to report all
detected backends and mark the active one.
2026-03-28 17:48:45 -04:00
Barrett Ruth
830442f856
test: update format tests for segment-based output
Problem: format functions now return `forge.Segment[]` instead of
strings, so all tests calling `:find()` and `:match()` on results
were failing.

Solution: add `flatten()` helper that concatenates segment text, and
wrap all format assertions with it. Also fix stylua formatting in
`sources_spec.lua`.
2026-03-28 17:48:35 -04:00
Barrett Ruth
fa7cab89af
feat(picker): add multi-backend picker abstraction
Problem: all pickers were tightly coupled to fzf-lua via ANSI strings
and fzf-specific action tables, making it impossible to use telescope
or snacks.nvim.

Solution: introduce `forge.picker` dispatcher with `fzf`, `telescope`,
and `snacks` backends. Format functions now return `forge.Segment[]`
instead of ANSI strings. `pickers.lua` builds backend-agnostic
`forge.PickerEntry[]` and delegates to `forge.picker.pick()`. Backend
auto-detection tries fzf-lua, snacks, telescope in order. Commits,
branches, and worktree pickers remain fzf-only with graceful fallback.
2026-03-28 17:48:24 -04:00
Barrett Ruth
354c5000c0
doc: minimize readme 2026-03-28 15:18:01 -04:00
Barrett Ruth
2658c47af1
ci: tests 2026-03-28 15:10:08 -04:00
Barrett Ruth
3c8e5ddb6a
ci: add busted to ci script 2026-03-28 15:06:26 -04:00
Barrett Ruth
b468c68cda
ci: format 2026-03-28 15:06:17 -04:00
Barrett Ruth
8899838e15
feat: tests and better vim validate 2026-03-28 15:05:55 -04:00
Barrett Ruth
e7dd173bf4
ci: release workflow 2026-03-28 14:57:15 -04:00
Barrett Ruth
65f857aa1d
ci: fix nix fmt flag and prettier formatting
Problem: `nix fmt -- --check .` fails because treefmt uses `--ci`
not `--check`. `bug_report.yaml` had a pre-existing prettier issue.

Solution: use `--ci` flag for treefmt, format `bug_report.yaml`.
2026-03-28 14:37:21 -04:00
Barrett Ruth
27c41d2f71
docs: add compatibility matrix and capabilities to vimdoc
Problem: vimdoc did not document per-forge feature differences or
the new capabilities field on the forge interface.

Solution: add COMPATIBILITY section with per-forge feature matrix,
document `capabilities` in the `forge.Forge` interface fields, and
update the source skeleton example.
2026-03-28 14:37:00 -04:00
Barrett Ruth
2af47b6cf4
feat: add capabilities system and per-forge compatibility
Problem: forge.nvim silently ignored unsupported features on
non-GitHub forges. Codeberg `pr_for_branch_cmd` blocked all PR
creation, CI picker had zero actions, `repo_info` was hardcoded,
and the compose buffer showed draft/reviewer fields that did nothing.

Solution: add `forge.Capabilities` declaration (`draft`, `reviewers`,
`per_pr_checks`, `ci_json`) to each source. Compose buffer hides
unsupported fields. Per-PR checks falls back to repo-wide CI with
a notification. Fix Codeberg `pr_for_branch_cmd` to filter by branch
via jq, implement `repo_info` and `list_runs_json_cmd` via Gitea API,
add `default_branch_cmd` fallback, and add yank notifications for
GitLab/Codeberg.
2026-03-28 14:36:32 -04:00
Barrett Ruth
9be38e3b00
ci: resolve lua typechecks 2026-03-28 12:46:12 -04:00
Barrett Ruth
4ae7439a75
feat: update helpdocs 2026-03-28 12:43:55 -04:00
Barrett Ruth
afb5d93853
feat: color schemes 2026-03-28 12:39:08 -04:00
Barrett Ruth
20b3651c6c
feat: remove headers 2026-03-28 12:21:04 -04:00
Barrett Ruth
597788b447
feat: cmdline tab improvements 2026-03-28 12:18:33 -04:00
Barrett Ruth
c677feee2f
feat: expand cli 2026-03-28 12:12:04 -04:00
Barrett Ruth
b4db29e77a
fix: cli completion 2026-03-28 01:16:10 -04:00
Barrett Ruth
c0d2a19498
ci: format 2026-03-28 00:53:15 -04:00
Barrett Ruth
0c41ff01fb
ci: script 2026-03-28 00:52:19 -04:00
Barrett Ruth
f96eaf5938
ci: typgin,e tc 2026-03-28 00:47:59 -04:00
Barrett Ruth
c9d271c7a6
ci: format 2026-03-28 00:25:05 -04:00
Barrett Ruth
5fcbcfcf99
feat: cli 2026-03-28 00:24:26 -04:00
Barrett Ruth
a51dc43de7
ci: update pre-commit 2026-03-27 19:15:47 -04:00
Barrett Ruth
9fbe6b6d01
ci: fix 2026-03-27 19:12:58 -04:00
Barrett Ruth
5ad18e3732
ci: format 2026-03-27 18:17:23 -04:00
Barrett Ruth
25509a48ac
more tweaks 2026-03-27 18:17:12 -04:00
Barrett Ruth
e31b2777f9
more tweaks 2026-03-27 18:08:42 -04:00
Barrett Ruth
5ee2cc567a
ci: format 2026-03-27 17:19:09 -04:00
Barrett Ruth
c4da2cda2a
feat: initial commit 2026-03-27 16:46:28 -04:00