From be50c647ef56313c4231cf8875199df78a7732d1 Mon Sep 17 00:00:00 2001 From: Yuriy Egorov <297374280+fzrx-ego@users.noreply.github.com> Date: Fri, 25 Sep 2026 11:08:20 +0300 Subject: [PATCH 1/6] Update File Tree listing for v0.19.0 --- entries/file-tree.json | 4 ++-- overview/file-tree.md | 12 ++++-------- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/entries/file-tree.json b/entries/file-tree.json index d3654e4b..e89c5836 100644 --- a/entries/file-tree.json +++ b/entries/file-tree.json @@ -1,7 +1,7 @@ { "id": "file-tree", "displayName": "File Tree", - "description": "Find the file an agent mentions and keep the workspace tree beside the conversation. Search by name or path, open previews, add relative paths to drafts, create a blank markdown file, delete a file after confirmation, and reveal or copy files from the machine that owns them. Files show Seti-style type icons for markdown, JSON, gitignore, env, and other common names. Project threads stay rooted in their checkout; personal threads can browse a configured folder. Requires local file access on the BB machine; Finder reveal is macOS-only.", + "description": "Keep project files in view while you move between BB threads. Pin a project source or thread workspace, search by name or path, and preview files. Send a file path to a chosen chat draft, create a blank markdown file, or delete a file after confirmation. Copy paths or files, and reveal files in Finder. Requires access to the files on the BB machine; Finder reveal is macOS-only.", "icon": "Folder", "tags": [ "files", @@ -24,7 +24,7 @@ "source": { "git": { "url": "https://github.com/fzrx-ego/bb-plugin-file-tree.git", - "range": "^0.18.0" + "range": "^0.19.0" } }, "overview": "./overview/file-tree.md" diff --git a/overview/file-tree.md b/overview/file-tree.md index 0c72563c..8d3bff10 100644 --- a/overview/file-tree.md +++ b/overview/file-tree.md @@ -1,24 +1,20 @@ -Shows a compact file tree of the thread workspace on the right. - ## Who it is for -People who already work in a BB thread and keep hitting paths: an agent cites a file, they need that file in chat, in the preview, or on the Desktop. The next step is still in the thread, not a full file manager. - -Not for people whose job is to upload, move, rename, or unzip under `$HOME`. That is a different product. +People who work across BB threads and need to find a file an agent mentions, preview it, or add its path to a chat draft. ## What you get Files in the tree and in search use Seti-style type icons (markdown, JSON, gitignore, `.env`, README, …). Folders keep only the twistie. -The tree sits on the right of the thread. Above it is a search box: type a file name, part of a path, or paste a path, and the list under it names the files that match. Enter selects the file in the tree and opens it in the preview — one action, both results — and re-roots the tree when the file lives in another project. +The tree sits on the right of the BB window. A folder selector pins a project source or thread workspace, so switching threads keeps the same tree state. Above the tree is a search box: type a file name, part of a path, or paste a path, and the list under it names the files that match. Enter selects the file in the tree and opens it in the preview — one action, both results — and temporarily re-roots the tree when the file lives in another project. -Click a file to open BB's default preview. Right-click to add the relative path to the draft, create a blank `.md` in that folder (or the file's parent), delete a file, copy a relative or absolute path, copy the file itself onto the clipboard, or reveal the item in Finder. Right-click the root name to create the markdown file at the top of the tree. A newly created `.md` opens in the external editor. +Click a file to open BB's default preview. Right-click to add its absolute path to an open chat draft, create a blank `.md` in that folder (or the file's parent), delete a file, copy a relative or absolute path, copy the file itself onto the clipboard, or reveal the item in Finder. When several drafts are open, choose the target in the menu. Right-click the root name to create the markdown file at the top of the tree. A newly created `.md` opens in the external editor. Search and chat paths ask the same question of the same index. When a message names a path, the tree can jump to it. A bare file name works too: the search roots are indexed by name, so `AGENTS-base.md` lands on the file even when nothing in the message says which folder it is in. If the hit is in another folder, the tree re-roots there instead of reporting a miss. ## How it works -The tree is the thread checkout for project threads. Set **Root folder for personal threads** to a path such as `~/Documents` to browse a fixed folder in general BB threads without moving or changing their workspace. Ignored folders (`node_modules`, `.git`, `dist`, …) stay hidden unless you turn them on in settings. Search roots (default `~/Documents`, one path per line) are the extra places a chat path may land. +The folder selector lists project sources and the current thread workspace. Set **Root folder for personal threads** to a path such as `~/Documents` to add it to the selector. Ignored folders (`node_modules`, `.git`, `dist`, …) stay hidden unless you turn them on in settings. Search roots (default `~/Documents`, one path per line) are the extra places a chat path may land. Open in Finder and Copy File run on the machine that holds the files. Copy File puts a real file on the macOS or Windows clipboard so Finder paste drops a copy, not a string. Finder reveal uses macOS `open -R`. From cede3ff707fde19a1198606976d417148f4efdba Mon Sep 17 00:00:00 2001 From: Yuriy Egorov <297374280+fzrx-ego@users.noreply.github.com> Date: Fri, 25 Sep 2026 13:59:19 +0300 Subject: [PATCH 2/6] Add File Tree marketplace screenshot --- entries/file-tree.json | 3 +++ screenshots/file-tree/overview.png | Bin 0 -> 32038 bytes 2 files changed, 3 insertions(+) create mode 100644 screenshots/file-tree/overview.png diff --git a/entries/file-tree.json b/entries/file-tree.json index e89c5836..d4d5460f 100644 --- a/entries/file-tree.json +++ b/entries/file-tree.json @@ -21,6 +21,9 @@ "url": "https://yuriy-egorov.pages.dev" }, "category": "file-viewers-and-editors", + "screenshots": [ + "./screenshots/file-tree/overview.png" + ], "source": { "git": { "url": "https://github.com/fzrx-ego/bb-plugin-file-tree.git", diff --git a/screenshots/file-tree/overview.png b/screenshots/file-tree/overview.png new file mode 100644 index 0000000000000000000000000000000000000000..5d74c909055a5010f5ff244aa8e4d44911bf33f1 GIT binary patch literal 32038 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

Date: Fri, 25 Sep 2026 18:03:33 +0300 Subject: [PATCH 3/6] Point File Tree marketplace entry to v0.19.2 --- entries/file-tree.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/entries/file-tree.json b/entries/file-tree.json index d4d5460f..dc7f6742 100644 --- a/entries/file-tree.json +++ b/entries/file-tree.json @@ -27,7 +27,7 @@ "source": { "git": { "url": "https://github.com/fzrx-ego/bb-plugin-file-tree.git", - "range": "^0.19.0" + "range": "^0.19.2" } }, "overview": "./overview/file-tree.md" From ca060247d3d8f282b926a6d2ec5e44306871a00c Mon Sep 17 00:00:00 2001 From: fzrx-ego Date: Fri, 25 Sep 2026 18:03:35 +0300 Subject: [PATCH 4/6] Sync File Tree overview with v0.19.2 --- overview/file-tree.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/overview/file-tree.md b/overview/file-tree.md index 8d3bff10..c8be7f6e 100644 --- a/overview/file-tree.md +++ b/overview/file-tree.md @@ -14,9 +14,9 @@ Search and chat paths ask the same question of the same index. When a message na ## How it works -The folder selector lists project sources and the current thread workspace. Set **Root folder for personal threads** to a path such as `~/Documents` to add it to the selector. Ignored folders (`node_modules`, `.git`, `dist`, …) stay hidden unless you turn them on in settings. Search roots (default `~/Documents`, one path per line) are the extra places a chat path may land. +The folder selector lists project sources and the current thread workspace. Set **Root folder for personal threads** to a path such as `~/Documents` to add it to the selector. Hidden and ignored folders (`.claude`, `node_modules`, `.git`, …) stay hidden unless you turn them on in settings. Search roots (default `~/Documents`, one path per line) are the extra places a chat path may land. -Open in Finder and Copy File run on the machine that holds the files. Copy File puts a real file on the macOS or Windows clipboard so Finder paste drops a copy, not a string. Finder reveal uses macOS `open -R`. +Open in Finder and Copy File are available for files on this computer. Copy File puts a real file on the macOS or Windows clipboard so Finder paste drops a copy, not a string. Finder reveal uses macOS `open -R`. ## First step From b81615ca58f4b15be854b70ff1b8f0df61d87106 Mon Sep 17 00:00:00 2001 From: fzrx-ego Date: Sat, 26 Sep 2026 11:15:17 +0300 Subject: [PATCH 5/6] Update File Tree to v0.19.3 (entries/file-tree.json) --- entries/file-tree.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/entries/file-tree.json b/entries/file-tree.json index dc7f6742..939c1c2c 100644 --- a/entries/file-tree.json +++ b/entries/file-tree.json @@ -27,7 +27,7 @@ "source": { "git": { "url": "https://github.com/fzrx-ego/bb-plugin-file-tree.git", - "range": "^0.19.2" + "range": "^0.19.3" } }, "overview": "./overview/file-tree.md" From 696d28ab47907259ea21900c3daf0e2ee018d2af Mon Sep 17 00:00:00 2001 From: fzrx-ego Date: Sat, 26 Sep 2026 11:15:19 +0300 Subject: [PATCH 6/6] Update File Tree to v0.19.3 (overview/file-tree.md) --- overview/file-tree.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/overview/file-tree.md b/overview/file-tree.md index c8be7f6e..4983ce78 100644 --- a/overview/file-tree.md +++ b/overview/file-tree.md @@ -6,9 +6,9 @@ People who work across BB threads and need to find a file an agent mentions, pre Files in the tree and in search use Seti-style type icons (markdown, JSON, gitignore, `.env`, README, …). Folders keep only the twistie. -The tree sits on the right of the BB window. A folder selector pins a project source or thread workspace, so switching threads keeps the same tree state. Above the tree is a search box: type a file name, part of a path, or paste a path, and the list under it names the files that match. Enter selects the file in the tree and opens it in the preview — one action, both results — and temporarily re-roots the tree when the file lives in another project. +The tree sits on the right of the BB window. A folder selector pins a project source or thread workspace, so switching threads keeps the same tree state. Above the tree is a search box: type a file name, part of a path, or paste a path, and the list under it names the files that match. On a thread or New Thread page, Enter selects the file in the tree and opens its preview — one action, both results — and temporarily re-roots the tree when the file lives in another project. -Click a file to open BB's default preview. Right-click to add its absolute path to an open chat draft, create a blank `.md` in that folder (or the file's parent), delete a file, copy a relative or absolute path, copy the file itself onto the clipboard, or reveal the item in Finder. When several drafts are open, choose the target in the menu. Right-click the root name to create the markdown file at the top of the tree. A newly created `.md` opens in the external editor. +In a thread or on the New Thread page, click a file to open BB's default preview. Right-click to add its absolute path to an open chat draft, create a blank `.md` in that folder (or the file's parent), delete a file, copy a relative or absolute path, copy the file itself onto the clipboard, or reveal the item in Finder. When several drafts are open, choose the target in the menu. Right-click the root name to create the markdown file at the top of the tree. A newly created `.md` opens in the external editor. Search and chat paths ask the same question of the same index. When a message names a path, the tree can jump to it. A bare file name works too: the search roots are indexed by name, so `AGENTS-base.md` lands on the file even when nothing in the message says which folder it is in. If the hit is in another folder, the tree re-roots there instead of reporting a miss.