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

43 lines
1.8 KiB
Markdown

# 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 / restore** — `bdrive 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](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).