summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2026-05-31Bump version to 0.39.5v0.39.5Paul Buetow
2026-05-31ask: fix watch output to match regular commands by preserving terminal width ↵Paul Buetow
detection
2026-05-31ask: add completed sub-command to list completed tasksPaul Buetow
2026-05-29chore: bump version to 0.39.4v0.39.4Paul Buetow
2026-05-29fix(askcli): use real TAB split in fish dependency completionPaul Buetow
2026-05-29askcli: prevent stale-lock inode split during contentionPaul Buetow
2026-05-29askcli: keep ask add successful when alias assignment failsPaul Buetow
2026-05-27Fix mage coverage refreshv0.39.30.39.3Paul Buetow
2026-05-26chore: bump version to 0.39.2v0.39.2Paul Buetow
2026-05-26chore: bump go.mod to Go 1.26.0Paul Buetow
2026-05-26feat(askcli): add projects subcommandPaul Buetow
2026-05-26fix(lsp): stop timer leak in deferShowDocumentPaul Buetow
Replace time.After with time.NewTimer + defer timer.Stop() to prevent a leaked goroutine when the context is cancelled before the timer fires.
2026-05-26build: bump minimum Go version to 1.24.0Paul Buetow
Updates go.mod from 1.21.0 to 1.24.0 because tests use testing.T.Chdir, which requires Go 1.24. Also fixes pre-existing fmt.Errorf non-constant format strings in task_selector.go that the printf vet analyzer flags when running go test with the newer minimum version.
2026-05-26feat(askcli): add watch subcommandPaul Buetow
Implements `ask watch [subcommand...]` which re-runs a read-only subcommand every 2 seconds and redraws output when it changes, similar to gnu-watch. Safety features: - Restricted to read-only subcommands (list, all, ready, info, urgency, help, dep list) - Recursive watch is blocked - Captures stderr so error messages are visible in the watched display Also adds readOnly field to commandEntry registry for maintainability.
2026-05-20Bump version to 0.39.1v0.39.1Paul Buetow
Amp-Thread-ID: https://ampcode.com/threads/T-019e45ff-4976-750c-b2e6-121d0e5991ef Co-authored-by: Amp <amp@ampcode.com>
2026-05-20test(yousearch): add unit tests; allow base URL override for testsPaul Buetow
Amp-Thread-ID: https://ampcode.com/threads/T-019e45ff-4976-750c-b2e6-121d0e5991ef Co-authored-by: Amp <amp@ampcode.com>
2026-05-20docs: document You.com (YouSearch) providerPaul Buetow
Amp-Thread-ID: https://ampcode.com/threads/T-019e45ff-4976-750c-b2e6-121d0e5991ef Co-authored-by: Amp <amp@ampcode.com>
2026-05-20Bump version to 0.39.0v0.39.0Paul Buetow
Amp-Thread-ID: https://ampcode.com/threads/T-019e45ff-4976-750c-b2e6-121d0e5991ef Co-authored-by: Amp <amp@ampcode.com>
2026-05-20Add YouSearch (You.com Research API) provider integrationPaul Buetow
Amp-Thread-ID: https://ampcode.com/threads/T-019e45ff-4976-750c-b2e6-121d0e5991ef Co-authored-by: Amp <amp@ampcode.com>
2026-05-04Bump version to 0.38.5v0.38.5Paul Buetow
Amp-Thread-ID: https://ampcode.com/threads/T-019df49f-52a5-75b1-98d5-371a163ef100 Co-authored-by: Amp <amp@ampcode.com>
2026-05-04askcli: serialize task alias cache writes to fix concurrent rename racePaul Buetow
Two concurrent 'ask' invocations could race on the alias cache file: both wrote the JSON to a shared '<path>.tmp' filename and then both called os.Rename, so the loser failed with: replace task alias cache: rename .../task-aliases-v2.json.tmp .../task-aliases-v2.json: no such file or directory The shared tempfile also enabled lost updates because each process loaded the file independently before saving its own version on top. Fix: - Take an exclusive flock on a sentinel file (task-aliases-v2.json.lock) in the cache directory around the full load/modify/save cycle in both ensureTaskAliases and resolveTaskSelectorFromCache, using the existing internal/filelock package. - Switch save() to os.CreateTemp so each writer gets a unique tempfile name; the loser's tempfile is removed cleanly on rename failure. - Refactor resolveTaskSelectorFromCache by extracting finalizeResolvedTaskSelector to keep functions under 50 lines. Adds TestEnsureTaskAliases_ConcurrentCallsDoNotRaceOnTempFile, which reproduces the original error reliably on the unfixed code and now passes with -race. Amp-Thread-ID: https://ampcode.com/threads/T-019df49f-52a5-75b1-98d5-371a163ef100 Co-authored-by: Amp <amp@ampcode.com>
2026-05-02Drop hexai edit; document hexai config only.v0.38.4Paul Buetow
The CLI now opens the config file only via hexai config (and --config). README, usage, and configuration docs describe the subcommand. Version 0.38.4. Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-01Bump version to 0.38.3v0.38.3Paul Buetow
Correct default Ollama Cloud model to gemma4:31b-cloud (bare gemma4 tag returns 404 on Ollama Cloud; the hosted cloud model requires the explicit :31b-cloud tag). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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-25docs: update documentation for popup, fix_typos, and configurable menuPaul Buetow
- README: expand hexai-tmux-action bullet with popup mode, all built-in hotkeys, configurable menu, and overridable prompts - configuration.md: update TUI section (split→popup, new popup flags, configurable menu example, prompt key-prefix table) - usage.md: update Hexai Action section with full hotkey table and configurable menu mention 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-25docs: document fix_typos prompts in config.toml.examplePaul Buetow
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-11docs: align Fish completion with manual load onlyPaul Buetow
Clarify that mage install and go install do not write fish/completions, document removing stale ask.fish from older installs, and cross-link README, buildandinstall, and usage. 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