FILES, SEARCH and GIT, in the left sidebar.
Three tabs over the host's providers: an IntelliJ-style lazy file tree, global search and
replace, and a changes accordion with a true lane commit graph. It backs the codebase_*,
git_* and project_* MCP tools, and as of 1.6.0 it supersedes the standalone git-status and
git-log plugins.
- Lazy tree with compacted middle packages, expand and collapse, and a per-node loading state, so a deep project does not stall on open.
- Multi-select: plain click, cmd-click to add, shift-click for a range from the anchor row.
- Drag files into a terminal: drag a row to send its native file reference to the destination. Dragging a selected row includes the selection in tree order, followed by selected items in collapsed folders in path order; dragging an unselected row includes only that item. Folders transfer as folders, with compacted paths using the last folder in the displayed chain. Selecting both a folder and its descendants transfers each selected item; duplicate references to the same compacted folder are included once. The destination handles the drop; Codebase never sends Enter or reads file contents. Paths containing control characters cannot be dragged. Terminal path quoting is handled by the terminal; Windows shell quoting requires manual verification.
- Context menu: New File, New Folder, Copy Path, Copy Relative Path, Reveal in Finder, Open in Terminal, Open With (Editor, Browser, Terminal, Default App), Rename and Delete. Bulk variants appear for a multi-selection ("Copy 4 Paths", "Delete 4 Items"), with confirmation.
- Quiet refresh: a background watcher notices directories that change underneath you - a git branch switch, an external rename - and refreshes them without collapsing your tree. It watches at most 512 directories, and only ones actually rendered.
- Show hidden files, as a toggle that is hidden entirely when the host binary predates the
showHiddenoverloads rather than offering a switch that does nothing. - Project switching through
ProjectDataProviderand a directory picker. With no project open, the empty state offers "Open Project".
Global content search and replace over the host's ProjectSearchProvider.
- Include and exclude globs, both applied inside the engine. Exclusion used to be a filter over the returned list, which meant the result cap was reached before the exclude ran - so excluding a busy directory quietly returned fewer results than existed.
- Replace is dry-run first: the confirmation sheet states what will change before anything is written, and refuses to run at all while the search is capped, because "replace all" over a truncated result set is a partial write with no error.
- Open buffers are searched and edited through the editor's undoable path; closed files are written to disk.
- Changes accordion over
GitDataProvider: staged, unstaged and untracked groups, as a list or a compacted tree, with stage / unstage / discard / open-diff row actions. Every destructive action goes through a confirmation sheet. - Commit graph with a real lane layout, ref pills, a branch picker, and row actions for checkout, revert, cherry-pick and show-diff.
- Commit box, with an optional AI-drafted message built from what is actually staged. A draft, never an automatic commit.
- Agent Review hands the fluck-agent a brief plus the uncommitted diff, bounded to an
inline budget. Commits already on the branch are not attached - the brief points the agent
at
git_diff_betweenfor those.
codebase_* - the file tree:
| Tool | Purpose |
|---|---|
codebase_tree |
List the file tree under a path (depth 1-6, default 2) |
codebase_read |
Read a text file, truncated at 50,000 characters |
codebase_write |
Create or overwrite a text file |
codebase_open |
Open a file in the BOSS editor |
codebase_projects |
List recent projects |
codebase_select_project |
Open or select a project by path |
git_* / project_* - absorbed from the retired git-status, git-log and search-replace
plugins. Names and schemas are carried over verbatim, so an agent that already knows them
needs no change:
| Tool | Permission | Purpose |
|---|---|---|
git_status |
- | Working-tree status in porcelain XY path form |
git_log |
- | Recent commits (limit clamped to 1..500) |
git_diff |
- | One file's working-tree or staged diff |
git_diff_all |
- | Every changed file as STATUS path |
git_diff_ref |
- | The changes a single commit introduced |
git_diff_between |
- | The diff between two refs |
project_search |
- | Search file contents across the project |
git_stage |
git.write |
Stage a file |
git_unstage |
git.write |
Unstage a file |
git_stage_all |
git.write |
Stage everything changed |
git_unstage_all |
git.write |
Unstage everything |
git_discard |
git.write |
Discard working-tree changes (irreversible) |
git_checkout |
git.write |
Check out a commit, branch or tag |
git_cherry_pick |
git.write |
Cherry-pick a commit |
git_revert |
git.write |
Revert a commit |
project_replace |
project.replace |
Replace across an explicit file list, dry-run by default |
The RBAC split is deliberate. An empty requiredPermissions is not a neutral default: the
host's MCP registry exposes such a tool to every local session, including one where nobody is
signed in. Reads are open on that basis; anything that mutates git state or writes file
contents sits behind a grant. Admins bypass both. Refs arriving from an agent are checked
against the same isSafeRef rule the UI uses, so a leading dash cannot become a git flag.
On a host too old for include_hidden, codebase_tree still answers but adds a note: line
saying the flag was ignored, rather than silently returning a filtered tree.
- BOSS >= 9.5.7, boss-plugin-api >= 1.0.87 (
minApiVersion), forGitDataProvider,ProjectSearchProviderand the ref-scopedlogGraphFor. - Host providers:
fileSystemDataProvider,contextMenuProvider,directoryPickerProvider,splitViewOperations,projectDataProvider,gitDataProvider,projectSearchProvider. Every one is optional at runtime: a missing provider degrades that tab to a hint, never a crash. - No external binaries.
Release ordering. BossConsole retires git-status and git-log at codebase >= 1.6.0, so
this version must ship in the same wave as - or before - the host build carrying that floor.
The failure mode if it lands late is silent: those two panels are hidden and nothing replaces
them.
All scanning goes through the host provider. The plugin-local LocalFileScanner was
deliberately retired, so there is no second code path that can disagree with the host.
./gradlew buildPluginJar
cp build/libs/boss-plugin-codebase-*.jar ~/.boss/plugins/
./gradlew testSee AGENTS.md for architecture and conventions.
Proprietary - Risa Labs Inc.