Files
tolaria/design/vault-management-remove.pen
lucaronin fbbfe0ea6d feat: vault management — remove vault from list and restore Getting Started
Add ability to remove vaults from the app list without deleting files on disk,
and restore the bundled Getting Started demo vault when needed.

Changes:
- Rust: add hidden_defaults field to VaultList for tracking removed default vaults
- useVaultSwitcher: add removeVault() and restoreGettingStarted() with auto-switch
- useCommandRegistry: add 'Remove Vault from List' and 'Restore Getting Started Vault' commands
- StatusBar: add X button per vault item in vault menu dropdown
- 25 new tests covering removal, restore, edge cases, and command palette

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 02:36:33 +01:00

282 lines
9.8 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"children": [
{
"type": "frame",
"id": "vault_menu_remove",
"name": "Vault Menu — Remove from List",
"x": 0,
"y": 0,
"width": 380,
"height": 320,
"fill": "#F7F6F3",
"layout": "vertical",
"gap": 16,
"padding": [24, 24, 24, 24],
"theme": { "Mode": "Light" },
"children": [
{
"type": "text",
"id": "vault_menu_title",
"content": "Vault Menu — Remove Action",
"fill": "#37352F",
"fontFamily": "Inter",
"fontSize": 14,
"fontWeight": "600"
},
{
"type": "frame",
"id": "vault_menu_dropdown",
"name": "Vault Dropdown",
"width": "fill_container",
"height": "fit_content",
"fill": "#FFFFFF",
"cornerRadius": [6, 6, 6, 6],
"stroke": "#E9E9E7",
"strokeThickness": 1,
"layout": "vertical",
"padding": [4, 4, 4, 4],
"gap": 0,
"children": [
{
"type": "frame",
"id": "vault_item_active",
"name": "Active Vault Item",
"width": "fill_container",
"height": 32,
"fill": "#EBEBEA",
"cornerRadius": [4, 4, 4, 4],
"layout": "horizontal",
"alignItems": "center",
"justifyContent": "space-between",
"padding": [4, 8, 4, 8],
"children": [
{
"type": "frame",
"id": "vault_item_active_left",
"layout": "horizontal",
"alignItems": "center",
"gap": 6,
"children": [
{ "type": "text", "id": "vault_check", "content": "✓", "fill": "#37352F", "fontFamily": "Inter", "fontSize": 12 },
{ "type": "text", "id": "vault_label_active", "content": "My Vault", "fill": "#37352F", "fontFamily": "Inter", "fontSize": 12 }
]
},
{
"type": "frame",
"id": "remove_btn_active",
"name": "Remove Button",
"width": 18,
"height": 18,
"cornerRadius": [3, 3, 3, 3],
"layout": "vertical",
"alignItems": "center",
"justifyContent": "center",
"children": [
{ "type": "text", "id": "x_icon_active", "content": "×", "fill": "#787774", "fontFamily": "Inter", "fontSize": 12 }
]
}
]
},
{
"type": "frame",
"id": "vault_item_other",
"name": "Other Vault Item",
"width": "fill_container",
"height": 32,
"cornerRadius": [4, 4, 4, 4],
"layout": "horizontal",
"alignItems": "center",
"justifyContent": "space-between",
"padding": [4, 8, 4, 8],
"children": [
{
"type": "frame",
"id": "vault_item_other_left",
"layout": "horizontal",
"alignItems": "center",
"gap": 6,
"children": [
{ "type": "text", "id": "vault_spacer", "content": " ", "fill": "transparent", "fontFamily": "Inter", "fontSize": 12 },
{ "type": "text", "id": "vault_label_other", "content": "Work Vault", "fill": "#787774", "fontFamily": "Inter", "fontSize": 12 }
]
},
{
"type": "frame",
"id": "remove_btn_other",
"name": "Remove Button",
"width": 18,
"height": 18,
"cornerRadius": [3, 3, 3, 3],
"layout": "vertical",
"alignItems": "center",
"justifyContent": "center",
"children": [
{ "type": "text", "id": "x_icon_other", "content": "×", "fill": "#787774", "fontFamily": "Inter", "fontSize": 12 }
]
}
]
},
{
"type": "frame",
"id": "vault_separator",
"name": "Separator",
"width": "fill_container",
"height": 1,
"fill": "#E9E9E7"
},
{
"type": "frame",
"id": "vault_open_folder",
"name": "Open Local Folder",
"width": "fill_container",
"height": 32,
"cornerRadius": [4, 4, 4, 4],
"layout": "horizontal",
"alignItems": "center",
"gap": 6,
"padding": [4, 8, 4, 8],
"children": [
{ "type": "text", "id": "folder_icon", "content": "📁", "fontFamily": "Inter", "fontSize": 12 },
{ "type": "text", "id": "open_folder_label", "content": "Open local folder", "fill": "#787774", "fontFamily": "Inter", "fontSize": 12 }
]
}
]
},
{
"type": "text",
"id": "vault_menu_note",
"content": "× button removes vault from list without deleting files.\nAvailable when 2+ vaults in list.",
"fill": "#787774",
"fontFamily": "Inter",
"fontSize": 11,
"width": "fill_container"
}
]
},
{
"type": "frame",
"id": "cmd_k_vault_commands",
"name": "Cmd+K — Vault Commands",
"x": 420,
"y": 0,
"width": 520,
"height": 320,
"fill": "#F7F6F3",
"layout": "vertical",
"gap": 16,
"padding": [24, 24, 24, 24],
"theme": { "Mode": "Light" },
"children": [
{
"type": "text",
"id": "cmdk_title",
"content": "Command Palette — Vault Commands",
"fill": "#37352F",
"fontFamily": "Inter",
"fontSize": 14,
"fontWeight": "600"
},
{
"type": "frame",
"id": "cmdk_palette",
"name": "Command Palette",
"width": "fill_container",
"height": "fit_content",
"fill": "#FFFFFF",
"cornerRadius": [8, 8, 8, 8],
"stroke": "#E9E9E7",
"strokeThickness": 1,
"layout": "vertical",
"padding": [0, 0, 0, 0],
"gap": 0,
"children": [
{
"type": "frame",
"id": "cmdk_search",
"name": "Search Input",
"width": "fill_container",
"height": 44,
"layout": "horizontal",
"alignItems": "center",
"padding": [0, 16, 0, 16],
"children": [
{ "type": "text", "id": "cmdk_search_text", "content": "vault", "fill": "#37352F", "fontFamily": "Inter", "fontSize": 14 }
]
},
{
"type": "frame",
"id": "cmdk_separator",
"width": "fill_container",
"height": 1,
"fill": "#E9E9E7"
},
{
"type": "frame",
"id": "cmdk_group_header",
"name": "Settings Group",
"width": "fill_container",
"height": 28,
"layout": "horizontal",
"alignItems": "center",
"padding": [0, 12, 0, 12],
"children": [
{ "type": "text", "id": "group_label", "content": "Settings", "fill": "#B4B4B4", "fontFamily": "Inter", "fontSize": 11, "fontWeight": "500" }
]
},
{
"type": "frame",
"id": "cmdk_open_vault",
"name": "Open Vault Command",
"width": "fill_container",
"height": 36,
"layout": "horizontal",
"alignItems": "center",
"padding": [0, 12, 0, 12],
"children": [
{ "type": "text", "id": "cmd_open_vault", "content": "Open Vault…", "fill": "#37352F", "fontFamily": "Inter", "fontSize": 13 }
]
},
{
"type": "frame",
"id": "cmdk_remove_vault",
"name": "Remove Vault Command (highlighted)",
"width": "fill_container",
"height": 36,
"fill": "#E8F4FE",
"layout": "horizontal",
"alignItems": "center",
"padding": [0, 12, 0, 12],
"children": [
{ "type": "text", "id": "cmd_remove_vault", "content": "Remove Vault from List", "fill": "#37352F", "fontFamily": "Inter", "fontSize": 13 }
]
},
{
"type": "frame",
"id": "cmdk_restore_gs",
"name": "Restore Getting Started Command",
"width": "fill_container",
"height": 36,
"layout": "horizontal",
"alignItems": "center",
"padding": [0, 12, 0, 12],
"children": [
{ "type": "text", "id": "cmd_restore_gs", "content": "Restore Getting Started Vault", "fill": "#37352F", "fontFamily": "Inter", "fontSize": 13 }
]
}
]
},
{
"type": "text",
"id": "cmdk_note",
"content": "• 'Remove Vault from List' removes active vault (disabled if only 1 vault)\n• 'Restore Getting Started Vault' shown when GS vault is hidden\n• Both accessible via Cmd+K search with 'vault' keyword",
"fill": "#787774",
"fontFamily": "Inter",
"fontSize": 11,
"width": "fill_container"
}
]
}
],
"variables": {}
}