@hachej/boring-workspace 0.1.62 → 0.1.63

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/docs/README.md CHANGED
@@ -34,6 +34,7 @@ the doc that matches your task.
34
34
  | Abstraction | Where | What it is |
35
35
  | --- | --- | --- |
36
36
  | `WorkspaceProvider` | `src/front/provider` | Root provider; boots plugins, layout, bridge. |
37
+ | `useWorkspaceLeftPaneActions()` | `@hachej/boring-workspace` | Public hook for host apps that want to render workspace left-pane category buttons inside their own explorer/sidebar without mounting `WorkbenchLeftPane`. |
37
38
  | `definePlugin()` | `@hachej/boring-workspace/plugin` | Declarative front plugin: panels, commands, catalogs, bindings, providers, surfaceResolvers. |
38
39
  | `defineServerPlugin()` | `@hachej/boring-workspace/server` | Trusted boot-time server plugin: routes, agent tools, system prompt, Pi packages, provisioning. |
39
40
  | `PaneProps<T>` | `src/shared/types/panel.ts` | Props every panel/page component receives (`params`, `api`, `containerApi`). |
@@ -66,6 +67,34 @@ the doc that matches your task.
66
67
  reset; agent consumes them under `[data-boring-agent]`. See
67
68
  [`docs/TAILWIND-V4-STYLE-ISOLATION.md`](../../../docs/TAILWIND-V4-STYLE-ISOLATION.md).
68
69
 
70
+ ## Host explorer composition
71
+
72
+ Standalone workspaces can keep using `WorkbenchLeftPane`. Apps that already own a
73
+ left explorer/sidebar can instead render the category actions themselves:
74
+
75
+ ```tsx
76
+ import { useWorkspaceLeftPaneActions } from "@hachej/boring-workspace"
77
+
78
+ function HostExplorer({ onOpenPanel, activePanelId }) {
79
+ const actions = useWorkspaceLeftPaneActions({ onOpenPanel, activePanelId })
80
+
81
+ return actions.map((action) => (
82
+ <button key={action.id} aria-pressed={action.active} onClick={action.select}>
83
+ {action.icon}
84
+ {action.title}
85
+ </button>
86
+ ))
87
+ }
88
+ ```
89
+
90
+ Pass `activePanelId` when the host also renders `workspace-page` panels and wants
91
+ those launcher actions to show the focused page as active.
92
+
93
+ Use this public hook rather than deep-importing chrome internals. Search UI,
94
+ workspace-source content hosting, and plugin chrome action portals remain owned
95
+ by the default `WorkbenchLeftPane` unless a host explicitly renders that full
96
+ component.
97
+
69
98
  ## Docs
70
99
 
71
100
  Authoring:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hachej/boring-workspace",
3
- "version": "0.1.62",
3
+ "version": "0.1.63",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "Workspace UI, plugin, and bridge package for composing chat, files, catalogs, editors, and app-specific panes.",
@@ -139,9 +139,9 @@
139
139
  "tailwind-merge": "^2.0.0",
140
140
  "zod": "^3.23.0",
141
141
  "zustand": "^5.0.0",
142
- "@hachej/boring-agent": "0.1.62",
143
- "@hachej/boring-ui-kit": "0.1.62",
144
- "@hachej/boring-ui-plugin-cli": "0.1.62"
142
+ "@hachej/boring-agent": "0.1.63",
143
+ "@hachej/boring-ui-kit": "0.1.63",
144
+ "@hachej/boring-ui-plugin-cli": "0.1.63"
145
145
  },
146
146
  "devDependencies": {
147
147
  "@tailwindcss/postcss": "^4.0.0",