Summary
Introduce context-menu submenus (the extension has zero today) before sdk-parity features overflow the flat file/bucket menus.
Why
The UX-coherence audit (see the information-architecture issue) found that adding the features additively drives the file context menu to ~17 rows and the bucket menu to ~12, dominated by duplicate verbs (Copy ×3, Edit-JSON ×4, Download ×2, Delete ×2) — unscannable. Submenus + selection-aware verbs bring both back to ~8–9 rows, comparable to today. This is shared infrastructure that must land before the features that need it.
Proposed submenus
Rules
Acceptance criteria
Out of scope
- The individual feature commands themselves (each tracked in its own issue) — this issue is the structure they slot into.
Filed from the UX-coherence / information-architecture audit (see #87 and the IA tracking issue).
Summary
Introduce context-menu submenus (the extension has zero today) before sdk-parity features overflow the flat file/bucket menus.
Why
The UX-coherence audit (see the information-architecture issue) found that adding the features additively drives the file context menu to ~17 rows and the bucket menu to ~12, dominated by duplicate verbs (Copy ×3, Edit-JSON ×4, Download ×2, Delete ×2) — unscannable. Submenus + selection-aware verbs bring both back to ~8–9 rows, comparable to today. This is shared infrastructure that must land before the features that need it.
Proposed submenus
Copy(file node): Copy B2 Path · Copy File ID · Copy Presigned Link… (Create shareable download links (presigned URL command with TTL and prefix scope) #62)Object Lock(file node): Set Retention… · Toggle Legal Hold (Object Lock: file retention and legal hold (plus bucket default retention) #70)Bucket Settings(bucket node): Change Visibility · Default Encryption… (Server-side encryption support (SSE-B2 and SSE-C, per-object and bucket default) #69) · Default Retention… (Object Lock: file retention and legal hold (plus bucket default retention) #70) · Configure Replication… (Configure bucket replication #67) · Edit Lifecycle… (Manage bucket lifecycle rules #65) · Edit CORS… (Manage bucket CORS rules #66) · Edit Notifications… (Manage bucket event notification (webhook) rules #68) · Edit Bucket Info… (Add command to view and edit a bucket's custom bucket-info metadata #78)Copy(bucket node): Copy B2 Path · Copy S3 Endpoint (Surface S3-compatible access (endpoint + credentials for external S3 tools) #75)Rules
when-gate sits on the submenu anchor, so the whole group vanishes on incapable keys (composes with Make tree actions capability-aware via hasCapabilities (hide/disable unsupported actions) #76).fileVersion) get their own small menu; they never inherit the file menu.Acceptance criteria
submenusdeclared inpackage.json contributes; file context menu ≤ ~9 visible rows, bucket ≤ ~8 with all features present.Out of scope