{
  "product": "Shell (TS workbench)",
  "title": "Shell (TS workbench)",
  "summary": "Reusable VS Code-style shell: activity bar, sidebars, toolbar, status bar, toasts.",
  "category": "libraries",
  "source": "D:\\Dev\\TS\\Shell",
  "entries": [
    {
      "path": [
        "Components",
        "Workbench layout host"
      ],
      "value": "",
      "status": "yes",
      "note": "components/AppLayout.tsx: toolbar, activity bar, 3 panels, editor, status bar"
    },
    {
      "path": [
        "Components",
        "Activity bar"
      ],
      "value": "",
      "status": "yes",
      "note": "components/ActivityBar.tsx; hidden activities supported"
    },
    {
      "path": [
        "Components",
        "Primary/secondary sidebars"
      ],
      "value": "",
      "status": "yes",
      "note": "PrimarySidebar/SecondarySidebar.tsx; per-view title bar + Actions slot"
    },
    {
      "path": [
        "Components",
        "Bottom panel with tabs"
      ],
      "value": "",
      "status": "yes",
      "note": "BottomPanel.tsx + registerShellBottomTab"
    },
    {
      "path": [
        "Components",
        "Status bar with contributed items"
      ],
      "value": "left/right",
      "status": "yes",
      "note": "StatusBar.tsx + registerShellStatusBarItem"
    },
    {
      "path": [
        "Components",
        "Toolbar with app slots"
      ],
      "value": "",
      "status": "yes",
      "note": "Toolbar.tsx; left/right item registries, IconButton"
    },
    {
      "path": [
        "Components",
        "Panel resize dividers"
      ],
      "value": "",
      "status": "yes",
      "note": "PanelDivider.tsx; bounds in layoutStore"
    },
    {
      "path": [
        "Components",
        "Toast notifications"
      ],
      "value": "4 types",
      "status": "yes",
      "note": "ToastViewport + toastStore; duration<=0 = sticky"
    },
    {
      "path": [
        "Components",
        "Log tab"
      ],
      "value": "cap 500",
      "status": "yes",
      "note": "LogTab + logStore, pushLog(level, source, message)"
    },
    {
      "path": [
        "State & persistence",
        "Activity registry + persisted selection"
      ],
      "value": "",
      "status": "yes",
      "note": "stores/activityStore.ts; lazy persisted read after initShell"
    },
    {
      "path": [
        "State & persistence",
        "Layout state + hydrate"
      ],
      "value": "",
      "status": "yes",
      "note": "stores/layoutStore.ts: panel sizes/toggles, zoom, hydrate()"
    },
    {
      "path": [
        "State & persistence",
        "Prefixed localStorage persistence"
      ],
      "value": "storagePrefix",
      "status": "yes",
      "note": "persistence.ts codecs; config.ts initShell"
    },
    {
      "path": [
        "State & persistence",
        "App name store"
      ],
      "value": "",
      "status": "yes",
      "note": "stores/appNameStore.ts, setAppName"
    },
    {
      "path": [
        "State & persistence",
        "UI preferences store"
      ],
      "value": "",
      "status": "yes",
      "note": "stores/uiPrefsStore.ts"
    },
    {
      "path": [
        "Extensibility API",
        "Activity contract"
      ],
      "value": "",
      "status": "yes",
      "note": "types.ts: Editor, views(primary/secondary), toolbarItems, statusBarItems, bottomTabs, hidden"
    },
    {
      "path": [
        "Extensibility API",
        "Shell-level contribution registries"
      ],
      "value": "",
      "status": "yes",
      "note": "hooks.ts: bottom tabs, status items, toolbar left/right, account slot"
    },
    {
      "path": [
        "Extensibility API",
        "Settings sections registry"
      ],
      "value": "",
      "status": "yes",
      "note": "registerSettingsSection: group/order/subtitle/Nav/Details/tree/fullBleed"
    },
    {
      "path": [
        "Settings & theming",
        "Shell-owned Settings activity"
      ],
      "value": "",
      "status": "yes",
      "note": "settings/SettingsActivity.tsx + shellSections"
    },
    {
      "path": [
        "Settings & theming",
        "Appearance element editor"
      ],
      "value": "",
      "status": "yes",
      "note": "settings/appearance/*: element tree, tokens, per-element style vars"
    },
    {
      "path": [
        "Settings & theming",
        "Theme, accent, zoom, typography"
      ],
      "value": "dark/light",
      "status": "yes",
      "note": "theme.ts: applyTheme/applyAccent/applyZoom/applyFontSize/applyFontFamily"
    },
    {
      "path": [
        "Settings & theming",
        "CSS-var theming contract"
      ],
      "value": "",
      "status": "yes",
      "note": "styles.ts recipes (CHROME_CONTROL, BTN_*, TREE_ROW_*) over host vars --bg-*/--fg-*/--accent"
    },
    {
      "path": [
        "Settings & theming",
        "Keyboard shortcuts"
      ],
      "value": "Ctrl+B/Alt+B/Ctrl+J, zoom",
      "status": "yes",
      "note": "AppLayout.tsx key handler"
    }
  ]
}
