| Age | Commit message (Collapse) | Author |
|
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>
|
|
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>
|
|
Switch default Ollama Cloud model from kimi-k2.6 to gemma4.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
|
|
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>
|
|
|
|
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>
|
|
|
|
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>
|
|
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
- 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>
|
|
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>
|
|
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
|
|
|
|
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
|
|
Made-with: Cursor
|
|
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
|
|
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
|
|
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
|
|
Made-with: Cursor
|
|
- 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
|
|
Made-with: Cursor
|
|
|
|
|
|
|
|
|
|
Bump Hexai version to 0.29.3 after CLI rename and documentation updates.
Made-with: Cursor
|
|
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
|
|
Rename plan-ask-uuid-wrapper.md to plan-do-uuid-wrapper.md and note the
former binary name. Clarify install line, README entrypoint, and usage
task-management section so scripts and examples consistently use do.
Made-with: Cursor
|
|
- 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
|
|
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
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>
|
|
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>
|
|
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>
|
|
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
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>
|
|
Amp-Thread-ID: https://ampcode.com/threads/T-019d37f6-6549-7119-979a-88bc1225c594
Co-authored-by: Amp <amp@ampcode.com>
|
|
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
Two related issues with the integration test cleanup:
1. deleteTask used the test's context, which could be cancelled if the
test had already timed out — causing deferred cleanup to silently fail
and leak Taskwarrior tasks across runs. Fixed by using a fresh
background context with a short timeout inside deleteTask.
2. No mechanism existed to clean up tasks leaked by previous runs, which
could accumulate and pollute subsequent test runs. Added
cleanupOrphanedIntegrationTasks() called from TestMain that bulk-deletes
all project:hexai +integrationtest pending tasks using taskwarrior's
"all" confirmation answer for efficiency.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
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>
|
|
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|