Commit Graph
100 Commits
Author SHA1 Message Date
Julian lechnerandClaude Sonnet 5 cacb3e3bf1 feat(uninstall): accept y/N confirmation in bash script
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 10:27:41 +02:00
Julian lechnerandClaude Sonnet 5 ec81d8db9b docs(retrieval): document the background daemon and the max-files limit
CI / linux (push) Successful in 6s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 09:36:08 +02:00
Julian lechnerandClaude Sonnet 5 9ad793289d feat(retrieval): add a background daemon to avoid reloading models per query
Each server.py search/rebuild invocation was a fresh process that reloaded
the embedding and reranker models from disk before answering a single
query. Add an optional daemon (server.py daemon) that keeps both models
resident in memory and serves repeated queries, across repository roots,
over a local socket/pipe.

search and rebuild now try the daemon first, spawn one on a cache miss
(guarded by an exclusive lock file to avoid duplicate spawns), and fall
back to the original one-shot in-process worker if the daemon cannot be
reached or started, so behavior is unchanged when the daemon is
unavailable. The daemon exits on its own after 30 minutes of inactivity.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 09:36:02 +02:00
Julian lechnerandClaude Sonnet 5 208213c1c7 feat(retrieval): pin model revisions and share encoder/reranker instances
Pin the Qwen embedding/reranker models to specific commit revisions (and
sentence-transformers to the exact version already in use) so index
builds are reproducible instead of floating on each model's main branch.

Also move the encoder and reranker instances to module-level singletons
shared by every Index, instead of one pair per instance, so a process
serving multiple repository roots only loads each model once.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 09:35:46 +02:00
Julian lechnerandClaude Sonnet 5 96a1175e20 feat(retrieval): make the file-scan limit configurable and warn on it
Repositories with more than 2000 indexable files silently lost the
remainder during indexing. Make the cap configurable via
SEMANTIC_RETRIEVAL_MAX_FILES (default unchanged) and print an explicit
stderr warning naming the repository when it is reached, instead of
truncating without any signal.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 09:35:38 +02:00
Julian lechnerandClaude Sonnet 5 c651b19893 test(build): update reviewer tool assertion for shell-specific tools (Bash)
Mirror the PowerShell test's shell-specific reviewer tools assertion.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 09:32:14 +02:00
Julian lechnerandClaude Sonnet 5 244f641088 test(build): update reviewer tool assertion for shell-specific tools
The reviewer agent's tools field now resolves to Bash or PowerShell
depending on the package, so assert against the shell-specific value
instead of the old invalid Read,Diff,Search profile.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 09:32:08 +02:00
Julian lechnerandClaude Sonnet 5 92d98d74cf test(build): cover unknown Claude tool name in Bash build validation
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 09:32:00 +02:00
Julian lechnerandClaude Sonnet 5 5b768e0aed test(build): cover unknown Claude tool name in PowerShell build validation
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 09:31:54 +02:00
Julian lechnerandClaude Sonnet 5 99c345f551 feat(build): fail configuration validation on unknown Claude tool names
Check every generated agent's tools frontmatter against the set of real
Claude Code tool names, so an unrecognized name fails validate-config.py
(and therefore the build) instead of silently shipping a broken agent.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 09:31:48 +02:00
Julian lechnerandClaude Sonnet 5 4da6950062 feat(build): resolve shell-specific agent tool placeholder in Bash build
Mirror the PowerShell build's __SHELL__ resolution so both entry points
stay behaviorally equivalent.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 09:31:41 +02:00
Julian lechnerandClaude Sonnet 5 0f387b7df2 feat(build): resolve shell-specific agent tool placeholder in PowerShell build
Replace __SHELL__ in each generated Claude agent's tools field with
PowerShell or Bash depending on the package being built, so a role that
needs shell execution only gets the one matching its target shell.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 09:31:34 +02:00
Julian lechnerandClaude Sonnet 5 4374c69caa fix(claude-agents): map agent capabilities to real Claude Code tool names
Search, Diff, Shell, and Tests are not valid Claude Code tools, so every
generated subagent silently launched with a broken or empty tool set. Map
each role to the tools its own prompt actually needs, and use a __SHELL__
placeholder so build resolves it to the target package's own shell tool
instead of granting both Bash and PowerShell unconditionally.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 09:31:27 +02:00
Julian lechner 4408f23c68 chore(shellcheck): annotate nameref inputs
CI / linux (push) Successful in 6s
2026-09-17 23:04:44 +02:00
Julian lechner c4676e9a2f chore(shellcheck): allow shared script globals 2026-09-17 23:04:24 +02:00
Julian lechner 110842b9a4 refactor(shell): remove unused local fields 2026-09-17 23:04:05 +02:00
Julian lechner fd707539d5 refactor(hooks): drop unused workspace variable 2026-09-17 23:03:44 +02:00
Julian lechner 953eb34e21 fix(retrieval): declare Bash interpreter 2026-09-17 23:03:23 +02:00
Julian lechner 670c907375 fix(plugins): clarify indirect shell fields 2026-09-17 23:02:59 +02:00
Julian lechner 60205169f4 fix(manifest): clarify dynamic shell references 2026-09-17 23:02:36 +02:00
Julian lechner c2a79cf415 fix(statusline): delimit ANSI escape variables 2026-09-17 23:01:43 +02:00
Julian lechner f7230dd84f ci: refresh pinned GitHub actions 2026-09-17 23:00:43 +02:00
Julian lechner 1bc59ca881 perf(retrieval): gate semantic repository search 2026-09-17 23:00:18 +02:00
Julian lechner fe9ca9552f test(config): enforce sandbox defaults 2026-09-17 23:00:01 +02:00
Julian lechner fb926e9877 feat(claude): enable strict command sandbox 2026-09-17 22:59:33 +02:00
Julian lechner b7bac4c9cc feat(codex): constrain sandbox and agent depth 2026-09-17 22:59:13 +02:00
Julian lechnerandClaude Sonnet 5 b77114ad90 docs(readme): document the npm CLI reinstall install option
Explains the new "Uninstall Codex/Claude/Both and reinstall via npm?"
install-time prompt, its npm package mapping, and its dry-run behavior.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-17 21:48:59 +02:00
Julian lechnerandClaude Sonnet 5 dc71fb4cc4 test(install-options): feed the new reinstall prompt answer
The entrypoint test now supplies a fourth answer for the "Uninstall
... and reinstall via npm?" prompt install.ps1/install.sh ask after
the existing three install options.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-17 21:48:49 +02:00
Julian lechnerandClaude Sonnet 5 5ae8e0cff5 feat(install): wire the npm CLI reinstall prompt (Bash)
install.sh now asks whether to uninstall and reinstall the selected
client CLI(s) via npm, using the helpers added to install-options.sh.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-17 21:48:43 +02:00
Julian lechnerandClaude Sonnet 5 8379e29eb6 feat(install): wire the npm CLI reinstall prompt (PowerShell)
install.ps1 now asks whether to uninstall and reinstall the selected
client CLI(s) via npm, using the helpers added to install-options.ps1.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-17 21:48:39 +02:00
Julian lechnerandClaude Sonnet 5 ed8dd89ba7 feat(install-options): add npm CLI reinstall helpers (Bash)
global_npm_package, cli_npm_package, read_cli_reinstall_option, and
invoke_cli_reinstall are the Bash equivalent of the PowerShell npm
reinstall helpers. Not wired into install.sh yet.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-17 21:48:34 +02:00
Julian lechnerandClaude Sonnet 5 6c3538f888 feat(install-options): add npm CLI reinstall helpers (PowerShell)
Test-GlobalNpmPackage, Get-CliNpmPackage, Read-CliReinstallOption, and
Invoke-CliReinstall let install.ps1 offer uninstalling and reinstalling
a client CLI through npm. Not wired into install.ps1 yet.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-17 21:48:29 +02:00
Julian lechnerandClaude Sonnet 5 769af0d206 docs(readme): document the uninstall script
Adds an Uninstall section describing usage, the confirmation guard,
and its removal/backup semantics, and mentions it in the feature list.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-17 21:48:23 +02:00
Julian lechnerandClaude Sonnet 5 6bf3cc63d7 feat(uninstall): add uninstall.sh script
Bash equivalent of uninstall.ps1: removes managed files, extension/
skill ledger entries, semantic retrieval, and the saved Quickupdate
selection for a selected client.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-17 21:48:03 +02:00
Julian lechnerandClaude Sonnet 5 942288eeda feat(uninstall): add uninstall.ps1 script
Removes managed files, extension/skill ledger entries, semantic
retrieval, and the saved Quickupdate selection for a selected client,
reusing the same manifest-sync backup and warn-and-retain semantics as
install and update.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-17 21:47:59 +02:00
Julian lechner bb5ff39f03 fix(codex): extend retrieval timeout
CI / linux (push) Successful in 6s
2026-09-17 17:53:21 +02:00
Julian lechner fd58b5c198 feat(retrieval): install CUDA runtime 2026-09-17 17:52:56 +02:00
Julian lechner e5b63965b8 feat(retrieval): prefer CUDA devices 2026-09-17 17:50:33 +02:00
Julian lechner 5ec6d0b6ac perf(retrieval): batch changed embeddings 2026-09-17 17:50:14 +02:00
Julian lechner 0a964ad0bc fix(ci): tolerate missing PowerShell in Gitea runner
CI / linux (push) Successful in 7s
2026-09-17 16:10:48 +02:00
Julian lechner e0aa4106d5 fix(ci): tolerate missing PowerShell in act
CI / linux (push) Failing after 3s
2026-09-17 16:05:39 +02:00
Julian lechner 68d51896ef ci: add workflow security checks
CI / linux (push) Failing after 4s
2026-09-17 16:02:24 +02:00
Julian lechner a1429c225b ci: test integrations and Qwen retrieval 2026-09-17 16:02:24 +02:00
Julian lechner 6d2769415e ci: validate generated packages 2026-09-17 16:02:23 +02:00
Julian lechner c5d0ae0077 ci: test PowerShell on Ubuntu 2026-09-17 16:02:23 +02:00
Julian lechner fcc1f4d249 ci: run Python tests and validation 2026-09-17 16:02:23 +02:00
Julian lechner bda123d4c1 ci: add shell quality checks 2026-09-17 16:02:22 +02:00
Julian lechner c88e683c6d ci: define Ubuntu workflow triggers and permissions 2026-09-17 16:02:22 +02:00
Julian lechner 0f8aa0a25d feat(qwen): rerank 50 candidates and return five 2026-09-17 15:54:23 +02:00
Julian lechner e97404a0a1 feat(qwen): fuse dense and lexical search with RRF 2026-09-17 15:54:10 +02:00
Julian lechner fd37422de2 feat(qwen): maintain a lexical search index 2026-09-17 15:53:59 +02:00
Julian lechner b76a993c75 feat(qwen): split chunks at symbols and sections 2026-09-17 15:53:48 +02:00
Julian lechner 685dbe61f4 feat(qwen): add token windows and document metadata 2026-09-17 15:53:36 +02:00
Julian lechner 7be729cb22 feat(qwen): enforce 1024-dimensional embeddings 2026-09-17 15:52:43 +02:00
Julian lechner 459c520201 fix(rules): prioritize Qwen discovery and unify task workflows
CI / linux (push) Failing after 3s
2026-09-17 15:27:04 +02:00
Julian lechner 2079792a74 fix(qwen): isolate and refresh indexes with code-search prompts 2026-09-17 15:27:04 +02:00
Julian lechner 5dbb1b21b4 feat(budget): include installed and cached skill inventories 2026-09-17 15:27:04 +02:00
Julian lechner b7842234c0 feat(prompts): inventory skill metadata and duplicate names 2026-09-17 15:27:03 +02:00
Julian lechner 6ce4fcc848 fix(scripts): forward retrieval summary options in both shells 2026-09-17 15:27:03 +02:00
Julian lechner 5ca0dcfb53 fix(retrieval): suppress dry-run details in summary mode 2026-09-17 15:27:02 +02:00
Julian lechner 561e010c41 fix(install): migrate duplicate skills and resolve concurrency tokens 2026-09-17 15:27:02 +02:00
Julian lechner 975e1fd5f0 fix(install): copy canonical skills before legacy migration 2026-09-17 15:27:02 +02:00
Julian lechner 14940cc118 fix(doctor): allow install-time concurrency placeholders 2026-09-17 15:27:01 +02:00
Julian lechner 55c80ab9de fix(build): reject unknown tokens beside allowed placeholders 2026-09-17 15:27:01 +02:00
Julian lechner a182b9c5c7 docs: document qwen3 reranking feature
CI / linux (push) Failing after 3s
2026-09-17 14:38:23 +02:00
Julian lechner 121c004100 ci: add ubuntu build and test workflow 2026-09-17 14:37:18 +02:00
Julian lechner e74366f19a fix(config): validate codex settings and allow claude concurrency override 2026-09-17 14:37:18 +02:00
Julian lechner 8274d7d52d perf(prompt): reduce permanent instruction context 2026-09-17 14:37:18 +02:00
Julian lechner 7c6d7c610f fix(manifest): preserve Bash model settings
CI / linux (push) Failing after 5s
2026-09-17 14:03:20 +02:00
Julian lechner 92fbcc8114 fix(manifest): preserve PowerShell model settings 2026-09-17 14:03:00 +02:00
Julian lechner 8c7ede54a6 docs: describe review status displays
CI / linux (push) Failing after 3s
2026-09-17 13:22:55 +02:00
Julian lechner 83929e856f feat(statusline): show review mode 2026-09-17 13:22:42 +02:00
Julian lechner 3ddf2756c2 docs: describe shared rule manifest 2026-09-17 13:16:35 +02:00
Julian lechner d308bc037e refactor: share rule skill manifest 2026-09-17 13:16:24 +02:00
Julian lechner 78667b182f docs(rules): require Qwen reranking
CI / linux (push) Failing after 4s
2026-09-17 13:08:06 +02:00
Julian lechner d01b819b02 chore(retrieval): describe reranking setup 2026-09-17 13:07:57 +02:00
Julian lechner 727c499d2c feat(retrieval): rerank semantic search results 2026-09-17 13:07:47 +02:00
Julian lechner 2975619da8 docs: clarify shared rule manifest 2026-09-17 13:02:43 +02:00
Julian lechner 6420e54e4e perf(codex): remove Impeccable hooks 2026-09-17 13:00:37 +02:00
Julian lechner 84fcb0f583 chore: refresh prompt budget baseline 2026-09-17 13:00:29 +02:00
Julian lechner 65eee69fb9 fix(codex): preserve local model settings 2026-09-17 13:00:20 +02:00
Julian lechner 64fb27f539 ci: streamline validation workflow 2026-09-17 13:00:06 +02:00
Julian lechner 381f99ea54 docs(readme): note preserved Codex settings
CI / linux (push) Failing after 4s
CI / compatibility-canary (push) Skipped
2026-09-17 11:47:24 +02:00
Julian lechner 8ab180c73a docs(configuration): describe status and local settings 2026-09-17 11:47:07 +02:00
Julian lechner 83401a4732 docs(plugins): document QMD integration 2026-09-17 11:46:36 +02:00
Julian lechner 4f6ac68e0c feat(statusline): show Codex permission mode 2026-09-17 11:46:06 +02:00
Julian lechner f07aaf8f63 feat(qmd): add managed extension integration 2026-09-17 11:45:41 +02:00
Julian lechner 1b64c54fda feat(instructions): guide semantic retrieval 2026-09-17 11:45:16 +02:00
Julian lechner 13594fb401 fix(update): preserve local model and effort 2026-09-17 11:45:00 +02:00
Julian lechner 7572ec40d9 fix(hooks): run Impeccable hook on Windows 2026-09-17 11:44:36 +02:00
Julian lechner 79d981e78b fix(retrieval): order Claude MCP arguments 2026-09-17 09:21:45 +02:00
Julian lechner b67eb844bc docs(retrieval): document optional local layer 2026-09-17 09:17:46 +02:00
Julian lechner aaf3a183f4 feat(install): reconcile retrieval runtime 2026-09-17 09:17:20 +02:00
Julian lechner 27f1c1ec79 feat(retrieval): add optional Qwen semantic layer 2026-09-17 09:16:53 +02:00
Julian lechner bfbe001248 feat(selection): persist retrieval preference 2026-09-17 09:16:05 +02:00
Julian lechner 151306a6cc fix(capabilities): check shell and tool requirements 2026-09-17 09:15:37 +02:00
Julian lechner 0079fe2b92 docs(ci): document and run capability checks 2026-09-17 08:43:21 +02:00
Julian lechner 5c23f21586 feat(capabilities): add strict shell checks 2026-09-17 08:43:12 +02:00
Julian lechner bdf98d5b71 feat(telemetry): add local agent efficiency metrics 2026-09-17 08:32:39 +02:00
Julian lechner 4fa8708ba7 feat(session): bind verification to git state 2026-09-17 08:32:28 +02:00