Files
594a027c15 feat(cli): bdrive grep — search the text inside the files a project syncs (BEA-99) (#136)
The ⌘K palette searches file names, projects and actions; nothing in the
product searched file contents. Three personas independently typed a phrase
that lives inside a synced file and got "No matches".

`bdrive grep <pattern> [folder]` searches the working folder — RE2 or -F
literal, -i, -l, -n (default 200, 0 = all), output `path:line: text`, exit 0
on match and 1 on none.

It searches exactly what the project syncs, via a new syncer.SyncedFiles that
wraps the existing walkFolder: the one copy of the sync predicate, so an
ignore rule or a narrowed scope excludes a file from search the same way it
excludes it from sync, and .bdrive/ state can never surface. Not Explain,
which countFiles every pruned dir — a grep in a repo with node_modules/ would
walk it in full for a count it discards.

A read stays a read: LoadProject, not ResolveMount (no registry self-heal, no
device enrollment), no session, no flock, and the volume store is opened for
IgnoreAccepted only when it already exists, so a search creates nothing.
Both the path and the matched line go through safeField — a matched line is a
teammate's file content, the widest version of the surface that function
exists for.

The hub-side content index stays deliberately unbuilt; the issue records its
cost. ROADMAP's "Search across the hub" line is reworded rather than removed.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-11 04:27:20 +09:00

1.8 KiB

BearDrive roadmap

Last updated: 2026-07-15. This is the direction, not a contract — items move as we learn. Comments and PRs welcome; items marked help wanted are deliberately scoped for outside contributors.

Now (next release or two)

  • Time travel / restorebdrive restore <path>@<time>: every blob is already retained forever, so restore is re-putting an old blob as a new op. The history UI and blob API already exist; this is the CLI and revert UX.
  • Demo assets & docs — 60-second demo, richer self-hosting guide.

Next

  • Journal compaction & blob GC policies — bounded storage for long-lived, high-churn volumes (opt-in; today everything is retained).
  • Per-path access scopes — multi-agent setups where an agent can be limited to a subtree of a project. help wanted (design discussion first — this touches the org/permission model).
  • More agent platforms in bdrive hooks install — the hook engine is platform-generic; adding a platform is a small adapter + matcher set. help wanted.

Later / exploring

  • FUSE / NFS mount mode — lazy-loading huge volumes instead of full materialization.
  • Search across the hub — full-text + wikilink graph over a project, in the browser and across projects. Searching contents already works locally today (bdrive grep, over the files a project syncs); what is still exploring is doing it hub-side, which needs a content index the storage layer has no home for yet.
  • Webhooks / notifications — "a file changed in reports/" pushed to Slack or similar (hub-side).

Recently shipped

See CHANGELOG.md: React web UI (v0.6.0), read-heat Insights and agent read attribution (v0.4.0), bdrive url internal links (v0.7.0), SQL metadata backends incl. Postgres/Supabase (v0.3.0).