summaryrefslogtreecommitdiff
path: root/internal
AgeCommit message (Collapse)Author
2026-05-01Bump version to 0.38.2v0.38.2Paul Buetow
Switch default Ollama Cloud model from kimi-k2.6 to gemma4. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26Bump version to 0.38.1v0.38.1Paul Buetow
2026-04-26test: bring every package above the 80% coverage targetPaul Buetow
Per-package coverage was below the AGENTS.md target in six packages: cmd/ask 0.0% -> 83.3% cmd/hexai-tmux-edit 10.0% -> 93.3% cmd/hexai-tmux-action 27.8% -> 95.7% cmd/hexai-mcp-server 41.9% -> 88.2% internal/taskproxy 61.8% -> 98.2% internal/filelock 77.3% -> 100.0% The four cmd packages each had a main() that mixed flag parsing, struct construction, and runtime delegation, so nothing called from a test hit those statements. Each main() is now a one-line wrapper around a testable runMain(args, stdin, stdout, stderr) int that uses flag.NewFlagSet (instead of the global flag.Parse) so tests can drive it repeatedly. The deprecation banner in hexai-mcp-server is now a package-level constant, kept identical, so tests can assert on it directly without redirecting os.Stderr. The internal packages got new tests for paths that were previously unreachable: filelock's retry-then-success and non-EWOULDBLOCK error branches, and taskproxy's NewRunner / findTaskBinary / detectRepoRoot / runTaskCommand helpers (the ones that shell out to git and task). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26Bump version to 0.38.0v0.38.0Paul Buetow
2026-04-26feat: default to Ollama Cloud (kimi-k2.6) when no provider configuredPaul Buetow
Switches the in-code defaults so that hexai talks to Ollama Cloud (https://ollama.com) with model kimi-k2.6 when no provider is configured, instead of OpenAI. The example config, README, and configuration guide all reflect the new recommended setup; previous OpenAI / local-Ollama options are still documented as alternatives. Tests that depended on the implicit "openai" default now pin the provider explicitly so they continue to exercise the OpenAI / gpt-5 code paths they were designed to cover. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26Bump version to 0.37.0v0.37.0Paul Buetow
2026-04-26feat: optional API key for Ollama provider (Ollama Cloud)Paul Buetow
Adds an optional HEXAI_OLLAMA_API_KEY (with OLLAMA_API_KEY fallback) so the existing Ollama provider can target Ollama Cloud (ollama.ai) in addition to a local server. When the key is empty the request is unauthenticated, preserving local-server behavior byte-for-byte; when set, an Authorization: Bearer header is attached for both Chat and ChatStream. Documented cloud usage in config.toml.example. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25Bump version to 0.36.0v0.36.0Paul Buetow
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-25feat: configurable hexai-tmux-action menu via [[tmux_action.menu]]Paul Buetow
When [[tmux_action.menu]] is defined in config it fully replaces the built-in menu. Each entry takes a kind (built-in or "custom"), optional title/hotkey overrides, and optional custom_id for embedding custom actions directly in the main menu. Hotkey dispatch is now dynamic so any single-character hotkey works without code changes. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-25Release v0.35.0: fix-typos action and tmux popup for hexai-tmux-actionv0.35.0Paul Buetow
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22Bump version to 0.34.0v0.34.0Paul Buetow
2026-04-22Fix ask default add dispatch for w7Paul Buetow
2026-04-13Release v0.33.0: ask dependency UX and start gatingv0.33.0Paul Buetow
Show only task alias IDs on ask info Depends lines. Block ask start until every dependency is completed. Bump version to 0.33.0. Made-with: Cursor
2026-04-13Bump version to 0.32.0v0.32.0Paul Buetow
Made-with: Cursor
2026-04-13ask: serialize concurrent CLI with repo lock and stale PID recoveryPaul Buetow
Add advisory lock under .git/hexai-ask.lock around Taskwarrior execution, with metadata (PID and process basename) and Linux /proc comm checks to remove orphan lock files when the recorded holder is gone or not ask. Extract internal/filelock for shared flock helpers; stats uses it too. Made-with: Cursor
2026-04-11Release v0.31.1: stop installing Fish ask.fish on mage installv0.31.1Paul Buetow
mage install no longer writes ~/.config/fish/completions/ask.fish; use ask fish | source or a conf.d snippet per docs/fish-completion.md. Made-with: Cursor
2026-04-11Bump version to 0.31.0v0.31.0Paul Buetow
Made-with: Cursor
2026-04-11Rename task CLI binary from do back to askPaul Buetow
- Move cmd/do to cmd/ask; mage builds and installs ask; Fish completions to ask.fish - Update askcli help text, errors, executor default label, and Fish script (__ask_*) - Task alias cache subdirectory under XDG cache: hexai/ask/ - Rename integration test files and helpers; refresh README and docs - Rename plan-do-uuid-wrapper.md to plan-ask-uuid-wrapper.md Made-with: Cursor
2026-04-10Bump version to 0.30.2v0.30.2Paul Buetow
Made-with: Cursor
2026-04-10release: v0.30.1v0.30.1Paul Buetow
2026-04-10release: v0.30.0v0.30.0Paul Buetow
2026-04-10task 30: add proj prefix override for doPaul Buetow
2026-04-10task 20: hide do info UUID unless HEXAI_DEBUG is setPaul Buetow
2026-04-08release: v0.29.3v0.29.3Paul Buetow
Bump Hexai version to 0.29.3 after CLI rename and documentation updates. Made-with: Cursor
2026-04-08fish: complete task selectors with short aliases onlyPaul Buetow
Add complete-aliases subcommand that emits tab-separated alias lines without UUID duplicates. Wire embedded Fish script (__do_task_selectors) to call complete-aliases; keep complete-uuids unchanged for scripts and tests. Made-with: Cursor
2026-04-08Rename task CLI from ask to doPaul Buetow
- Move cmd/ask to cmd/do; mage BuildDo builds binary named do - Update askcli help text, errors, Fish completion (complete -c do, __do_*) - Task alias cache path: XDG cache hexai/do/task-aliases-v2.json - Refresh README and docs; go install path cmd/do@latest - Remove accidentally tracked cmd/ask build artifact; ignore cmd/do/do and cmd/do/ask Made-with: Cursor
2026-04-07release: v0.29.2v0.29.2Paul Buetow
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07fix: recover gracefully from corrupted alias cache instead of hard-failingv0.29.1Paul Buetow
When the task alias cache file contains invalid JSON (e.g. from a concurrent write race producing two concatenated JSON objects), the previous code returned a hard error that blocked all `ask` subcommands. Now loadTaskAliasCache discards the corrupt file and starts fresh, assigning new alias IDs on the next run. Validation errors (e.g. next_id reuse) still surface as errors since those indicate a logic bug. Also fix stale v1 reference in integration test aliasCachePath. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07feat: show task summary in fish shell autocompletion for alias IDsv0.29.0Paul Buetow
The complete-uuids command now emits tab-separated "selector\tdescription" lines so fish shell displays the first 60 chars of the task description alongside each alias/UUID in the autocompletion menu. The __ask_add_dependency_modifiers fish function is updated to strip the description field before matching and building depends: completions. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07feat: reverse alias IDs for better shell tab-completionv0.28.2Paul Buetow
Alias IDs are now stored in reversed form (e.g. id=37 → "10" instead of "01") so that the first character varies quickly across consecutive IDs, making shell auto-completion more effective. The counter logic is unchanged; only the string representation is reversed via a new reverseString helper in encodeTaskAliasID/decodeTaskAliasID. The cache file is bumped to task-aliases-v2.json so existing mappings are abandoned and all aliases are regenerated with the new format. Also fix TestDispatcher_CompleteUUIDsSubcommand to use an isolated temp dir for the alias cache, preventing flakiness from cross-test pollution. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07release: v0.28.1v0.28.1Paul Buetow
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07feat: remove tmux edit popup support for Claude CodePaul Buetow
Claude Code CLI now supports Ctrl+G to open the prompt in EDITOR (like OpenAI Codex CLI), making the built-in hexai-tmux-edit agent profile redundant. - Remove internal/tmuxedit/claude_agent.go and its tests - Update builtinAgents() to exclude claude; built-ins are now: cursor, amp, aider - Update all documentation (README, docs/tmux.md, docs/usage.md, docs/configuration.md) - Update config.toml.example to reflect new agent list Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-29feat: implicit add for na/no-agent scope prefixv0.28.0Paul Buetow
Amp-Thread-ID: https://ampcode.com/threads/T-019d37f6-6549-7119-979a-88bc1225c594 Co-authored-by: Amp <amp@ampcode.com>
2026-03-28release: v0.27.3v0.27.3Paul Buetow
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28perf: replace linear scan with O(1) map lookup in task alias cachePaul Buetow
Add in-memory byUUID and byAlias maps to taskAliasCache so that ensureAlias, lookupUUIDByAlias, and lookupAliasByUUID all run in O(1) instead of scanning the full entries slice. Maps are rebuilt after every mutation (load, prune, append) to avoid stale pointers. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28Rename "Pro" column header to "Pri" for Priority in ask command outputPaul Buetow
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27release: v0.27.2v0.27.2Paul Buetow
2026-03-27release: v0.27.1v0.27.1Paul Buetow
2026-03-27Rename ask table headersPaul Buetow
2026-03-27Implement command registry for askcli commandsPaul Buetow
2026-03-27docs: document askcli exportsPaul Buetow
2026-03-27Explicitly ignore askcli write errorsPaul Buetow
2026-03-27Switch task alias cache save to pointerPaul Buetow
2026-03-27Move selector helpers into task selectorPaul Buetow
2026-03-27Extract parseGlobalFlags helperPaul Buetow
2026-03-27refactor: share alias cache lookupPaul Buetow
2026-03-27Split askcli info and add commandsPaul Buetow
2026-03-27Use Go 1.21 max builtin in formatterPaul Buetow
2026-03-27664b9fe4: extract renderTaskList helperPaul Buetow
2026-03-27Remove dead UUID completion items (61568dc2-6915-4444-8027-2ad4eacf2408)Paul Buetow