First version
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
# Sidebar
|
||||
|
||||
**Status:** Implemented · **Code:** `Scripts/sidebar.js`
|
||||
|
||||
Four TreeView sections under one sidebar (`claude`). Sections are declared in
|
||||
`extension.json`; each is backed by a `TreeDataProvider` whose identifier matches
|
||||
the section id.
|
||||
|
||||
| Section | Rows |
|
||||
| --- | --- |
|
||||
| `claude.session` | Status, Account, Model, Permissions, Usage |
|
||||
| `claude.approvals` | Pending requests, each **expanded** with its choices as child rows |
|
||||
| `claude.activity` | Tool calls, newest first, capped at 120 |
|
||||
| `claude.changes` | Files Claude actually modified |
|
||||
|
||||
## Approvals are hierarchical
|
||||
|
||||
The parent row is the request; children are the actions from
|
||||
`actionsFor(approval)` in `permissions.js`. Selecting a child and activating it
|
||||
runs `claudenova.approvalAction`, which reads `approvalsView.selection[0]` and
|
||||
calls `broker.decide(row.approval, row.id)`.
|
||||
|
||||
This is what makes a decision possible without any panel being open — dismissing
|
||||
a notification never strands the session.
|
||||
|
||||
Action rows are generated, so they follow state: a plan shows
|
||||
`Write Feedback…` until a feedback tab exists, then `Send Feedback`.
|
||||
|
||||
## Row plumbing
|
||||
|
||||
- `TreeItem.command` fires on **double-click**, not single click. Context menus
|
||||
in `extension.json` mirror the same commands, gated on `contextValue`.
|
||||
- `TreeItem.path` gives a file row its filetype icon and reveal behaviour.
|
||||
- `getParent()` must return the parent for `reveal()` to work; action rows
|
||||
return their approval.
|
||||
- Reloads are throttled to 200ms — every streamed token changes the session.
|
||||
|
||||
## Labels
|
||||
|
||||
`friendlyToolName()` renames the interaction-surface tools: `ExitPlanMode` →
|
||||
`Plan`, `AskUserQuestion` → `Question`. `modeLabel()` maps permission modes;
|
||||
note the CLI reports `default` for the mode its own flag calls `manual`.
|
||||
Reference in New Issue
Block a user