T-727P-desktop-capabilities-limited-to-main-window-across-products
State: planning/draft · Impact: medium · Complexity: small
dialog:default, notification:default and deep-link:default are
granted only to window label main in every determined product’s Tauri
capabilities except polish and workbench. Any product that opens a
focused vault window or a detached surface window (Settings) inherits
app-frame’s directory picker, notifications and deep-link boot plugin,
which then fail or reject in every window but main.
Confirmed by grepping every solutions/determined/products/*/src-tauri/capabilities/default.json
for its windows array: 21 products still carry "windows": ["main"].
polish and workbench already carry
"windows": ["main", "focus-*", "surface-*"], and agent-pants is
being fixed to the same shape (survey rows AP-99, AP-100, AP-101).
| Location | Role today |
|---|---|
solutions/determined/products/agent-pants/src-tauri/capabilities/default.json | The model shape once fixed: "windows": ["main", "focus-*", "surface-*"], permissions core:default, deep-link:default, notification:default, dialog:default |
solutions/determined/products/polish/src-tauri/capabilities/default.json, .../workbench/.../default.json | Already carry the three-window array |
solutions/determined/products/{agenda,agent-chat,backup,blank,calendar,connector,digest,fitness,flows,graph,mail,media,notes,ocr,photos,scheduler,search,sites,stats,todo,triage}/src-tauri/capabilities/default.json | Each still carries "windows": ["main"] only |
packages/ts/app-frame/app/plugins/deep-link.client.ts | Runs its getCurrent() call unconditionally in every window, main or not |
Proposed
Section titled “Proposed”Every determined product’s default.json grants
dialog:default/notification:default/deep-link:default on
["main", "focus-*", "surface-*"], matching polish, workbench, and
the fixed agent-pants, so a focused or surface window in any product
gets the same picker, notification and deep-link behavior as main.
Approach
Section titled “Approach”- Confirm each of the 21 listed products actually opens focus-/surface- windows through app-frame’s shared window composables (some may be single-window products where this is moot).
- For every product that does, widen its
default.jsonwindowsarray to["main", "focus-*", "surface-*"], matching agent-pants’s shape. - Check whether
scripts/sync-tauri-capabilities.ts(which already keepsshell-windows.jsonin sync) can generate or lint this array too, so a new product does not have to remember it by hand.
| Area | Note |
|---|---|
solutions/determined/products/agenda/src-tauri/capabilities/default.json | Widen windows |
solutions/determined/products/agent-chat/src-tauri/capabilities/default.json | Widen windows |
solutions/determined/products/backup/src-tauri/capabilities/default.json | Widen windows |
solutions/determined/products/blank/src-tauri/capabilities/default.json | Widen windows |
solutions/determined/products/calendar/src-tauri/capabilities/default.json | Widen windows |
solutions/determined/products/connector/src-tauri/capabilities/default.json | Widen windows |
solutions/determined/products/digest/src-tauri/capabilities/default.json | Widen windows |
solutions/determined/products/fitness/src-tauri/capabilities/default.json | Widen windows |
solutions/determined/products/flows/src-tauri/capabilities/default.json | Widen windows |
solutions/determined/products/graph/src-tauri/capabilities/default.json | Widen windows |
solutions/determined/products/mail/src-tauri/capabilities/default.json | Widen windows |
solutions/determined/products/media/src-tauri/capabilities/default.json | Widen windows |
solutions/determined/products/notes/src-tauri/capabilities/default.json | Widen windows |
solutions/determined/products/ocr/src-tauri/capabilities/default.json | Widen windows |
solutions/determined/products/photos/src-tauri/capabilities/default.json | Widen windows |
solutions/determined/products/scheduler/src-tauri/capabilities/default.json | Widen windows |
solutions/determined/products/search/src-tauri/capabilities/default.json | Widen windows |
solutions/determined/products/sites/src-tauri/capabilities/default.json | Widen windows |
solutions/determined/products/stats/src-tauri/capabilities/default.json | Widen windows |
solutions/determined/products/todo/src-tauri/capabilities/default.json | Widen windows |
solutions/determined/products/triage/src-tauri/capabilities/default.json | Widen windows |
Acceptance criteria
Section titled “Acceptance criteria”- AC-1: Every product under
solutions/determined/products/*that opens a focus-* or surface-* window grantsdialog:default,notification:defaultanddeep-link:defaulton that window, not justmain. - AC-2: A grep of every
default.json’swindowsarray shows the same three-entry shape wherever the product uses focus/surface windows. - AC-3: A product with genuinely no focus-*/surface-* windows is
left as
["main"]and noted as such, rather than widened by rote.
Out of scope
Section titled “Out of scope”shell-windows.json, which already grants window-management permissions on all three labels per product.- Deciding whether every listed product should gain focus/surface windows at all — this task only aligns capabilities where that window type already exists.
Dependencies
Section titled “Dependencies”- none
Discovery context
Section titled “Discovery context”Found by the agent-pants bug survey, N-5LD4-bug-sweep-2026-09-12-agent-pants (rows AP-99, AP-100, AP-101), generalized to every determined product after cluster J’s fix to agent-pants’s own capabilities file.