xrkh-better-sidebar 0.18.7 → 0.18.9
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/README.md +5 -1
- package/README_EN.md +61 -57
- package/lib/client-registry.js +1 -1
- package/lib/client.js +1 -1
- package/lib/types/client/cm-themes.d.ts +1 -1
- package/package.json +1 -1
- package/src/client/service.ts +4 -16
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@ Host 侧 `/sidebar/*` 由产品 Host 原生挂载(`createSidebarPublicHandler`
|
|
|
10
10
|
前置:`xrkh web` 或 `npx @xrkseek/harness-cli web`,Node ≥ 26。建议 Host **≥ 0.3.4**。推荐从 **npmjs** 安装:
|
|
11
11
|
|
|
12
12
|
```bash
|
|
13
|
-
xrkh plugin add xrkh-better-sidebar@0.18.
|
|
13
|
+
xrkh plugin add xrkh-better-sidebar@0.18.9
|
|
14
14
|
xrkh restart
|
|
15
15
|
```
|
|
16
16
|
|
|
@@ -18,6 +18,10 @@ xrkh restart
|
|
|
18
18
|
|
|
19
19
|
源码路径仍可用(非推荐):`git clone git@github.com:xrkseek/xrkh-better-sidebar.git` 后 `xrkh plugin add ./xrkh-better-sidebar`。
|
|
20
20
|
|
|
21
|
+
## 0.18.9
|
|
22
|
+
|
|
23
|
+
- `openTab`:当前会话下任意打开(含仅 `type` 的 Files / +菜单)都会展开已折叠侧栏,调用方无需再自行 `togglePanel`
|
|
24
|
+
|
|
21
25
|
## 0.18.3
|
|
22
26
|
|
|
23
27
|
- Client fiber 注入 `layout`(与 `ui-sidebar` 同序):等 `ui-layout` 声明中心栏后再挂侧栏拦截,避免 Host ≥0.3.4 上 `conversation` slot 竞态
|
package/README_EN.md
CHANGED
|
@@ -1,57 +1,61 @@
|
|
|
1
|
-
# xrkh-better-sidebar
|
|
2
|
-
|
|
3
|
-
> **Audience**: XRK-Harness end users · integrators
|
|
4
|
-
|
|
5
|
-
Standard sidebar plugin for XRK-Harness (`xrkh`): explorer · editor · terminal · git · browser, isolated per session.
|
|
6
|
-
Host mounts `/sidebar/*` natively (`createSidebarPublicHandler`); this package ships the **client** half. The Cordis host half in `src/index.ts` is only for non-XRKH Cordis profiles — **do not** mount it on XRKH against the same `/sidebar/*` prefix.
|
|
7
|
-
|
|
8
|
-
## Install
|
|
9
|
-
|
|
10
|
-
Requires `xrkh web` or `npx @xrkseek/harness-cli web`, Node ≥ 26. Prefer Host **≥ 0.3.4**. Install from **npmjs**:
|
|
11
|
-
|
|
12
|
-
```bash
|
|
13
|
-
xrkh plugin add xrkh-better-sidebar@0.18.
|
|
14
|
-
xrkh restart
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
Hard-refresh the browser after install (Ctrl+Shift+R).
|
|
18
|
-
|
|
19
|
-
Source path still works (not preferred): `git clone git@github.com:xrkseek/xrkh-better-sidebar.git` then `xrkh plugin add ./xrkh-better-sidebar`.
|
|
20
|
-
|
|
21
|
-
## 0.18.
|
|
22
|
-
|
|
23
|
-
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
-
|
|
29
|
-
|
|
30
|
-
## 0.18.
|
|
31
|
-
|
|
32
|
-
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
|
49
|
-
|
|
50
|
-
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
1
|
+
# xrkh-better-sidebar
|
|
2
|
+
|
|
3
|
+
> **Audience**: XRK-Harness end users · integrators
|
|
4
|
+
|
|
5
|
+
Standard sidebar plugin for XRK-Harness (`xrkh`): explorer · editor · terminal · git · browser, isolated per session.
|
|
6
|
+
Host mounts `/sidebar/*` natively (`createSidebarPublicHandler`); this package ships the **client** half. The Cordis host half in `src/index.ts` is only for non-XRKH Cordis profiles — **do not** mount it on XRKH against the same `/sidebar/*` prefix.
|
|
7
|
+
|
|
8
|
+
## Install
|
|
9
|
+
|
|
10
|
+
Requires `xrkh web` or `npx @xrkseek/harness-cli web`, Node ≥ 26. Prefer Host **≥ 0.3.4**. Install from **npmjs**:
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
xrkh plugin add xrkh-better-sidebar@0.18.9
|
|
14
|
+
xrkh restart
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Hard-refresh the browser after install (Ctrl+Shift+R).
|
|
18
|
+
|
|
19
|
+
Source path still works (not preferred): `git clone git@github.com:xrkseek/xrkh-better-sidebar.git` then `xrkh plugin add ./xrkh-better-sidebar`.
|
|
20
|
+
|
|
21
|
+
## 0.18.9
|
|
22
|
+
|
|
23
|
+
- `openTab`: any open on the active session (including type-only Files / +menu) expands a collapsed side card — callers no longer need a separate `togglePanel`
|
|
24
|
+
|
|
25
|
+
## 0.18.3
|
|
26
|
+
|
|
27
|
+
- Client fiber injects `layout` (same order as `ui-sidebar`): wait until `ui-layout` declares the center column before sidebar interception — avoids a `conversation` slot race on Host ≥ 0.3.4
|
|
28
|
+
- `xrk.client.inject` adds `@xrkseek/client-ui-layout`; docs Host baseline **≥ 0.3.4**
|
|
29
|
+
|
|
30
|
+
## 0.18.2
|
|
31
|
+
|
|
32
|
+
- Files home tab follows locale; light media viewers; open by default
|
|
33
|
+
|
|
34
|
+
## 0.18.1
|
|
35
|
+
|
|
36
|
+
- `subagents.live`: accept nested `tool` and legacy flat `tool` wire so subagent activity previews do not crash
|
|
37
|
+
- Align with Host native `/sidebar/*` (nested live shape)
|
|
38
|
+
|
|
39
|
+
## 0.18.0
|
|
40
|
+
|
|
41
|
+
- XRKH-native: drop third-party dual-track (legacy manifest · better-locale · legacy install scripts · marketplace catalogs)
|
|
42
|
+
- Peers are `@xrkseek/*` + React only; tools/settings types via `@xrkseek/xrk-tools` / `xrk-settings`
|
|
43
|
+
- No Side Chat; subagents use Host Face + `subagents.live` / `jobs.*`
|
|
44
|
+
- Empty curated plugin catalogs (community entries are not bundled)
|
|
45
|
+
|
|
46
|
+
## Contract
|
|
47
|
+
|
|
48
|
+
| Item | Notes |
|
|
49
|
+
|------|--------|
|
|
50
|
+
| npm | `xrkh-better-sidebar` |
|
|
51
|
+
| Repo | `xrkseek/xrkh-better-sidebar` |
|
|
52
|
+
| Manifest | `package.json` → `xrk.client` (client half) |
|
|
53
|
+
| Inject | `client-runtime` · `locale` · `ui-slots` · `ui-layout` · `ui-conversation` · `modules` |
|
|
54
|
+
| Host | Native Host owns `/sidebar/api` · `/sidebar/bundle` · PTY — do not remount Cordis host half on XRKH |
|
|
55
|
+
|
|
56
|
+
## Develop
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
pnpm install
|
|
60
|
+
pnpm bundle
|
|
61
|
+
```
|
package/lib/client-registry.js
CHANGED
|
@@ -9774,7 +9774,7 @@ window.__ModuleLoader__.load({
|
|
|
9774
9774
|
activated ??= tab;
|
|
9775
9775
|
}
|
|
9776
9776
|
if (!isCreation && floatWithTab(landed, activated?.id ?? tab.id) !== void 0) return landed;
|
|
9777
|
-
if (!targetsInactiveSession && typeof window !== "undefined"
|
|
9777
|
+
if (!targetsInactiveSession && typeof window !== "undefined" ) {
|
|
9778
9778
|
if (isNarrowWidth(window.innerWidth)) {
|
|
9779
9779
|
if (!landed.panelOpen) return togglePanel(landed);
|
|
9780
9780
|
} else if (treeOf(landed, landed.activePane ?? "") === "bottomSplits") {
|
package/lib/client.js
CHANGED
|
@@ -9774,7 +9774,7 @@ window.__ModuleLoader__.load({
|
|
|
9774
9774
|
activated ??= tab;
|
|
9775
9775
|
}
|
|
9776
9776
|
if (!isCreation && floatWithTab(landed, activated?.id ?? tab.id) !== void 0) return landed;
|
|
9777
|
-
if (!targetsInactiveSession && typeof window !== "undefined"
|
|
9777
|
+
if (!targetsInactiveSession && typeof window !== "undefined" ) {
|
|
9778
9778
|
if (isNarrowWidth(window.innerWidth)) {
|
|
9779
9779
|
if (!landed.panelOpen) return togglePanel(landed);
|
|
9780
9780
|
} else if (treeOf(landed, landed.activePane ?? "") === "bottomSplits") {
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { Compartment } from '@codemirror/state';
|
|
11
11
|
/** Token-driven surface shared by both schemes (pure CSS values). */
|
|
12
|
-
export declare const cmSurfaceTheme:
|
|
12
|
+
export declare const cmSurfaceTheme: any;
|
|
13
13
|
/**
|
|
14
14
|
* A Compartment holding the two scheme-dependent extensions. Created once
|
|
15
15
|
* per editor view; a scheme flip dispatches `reconfigure(dark)` on it, so
|
package/package.json
CHANGED
package/src/client/service.ts
CHANGED
|
@@ -692,30 +692,18 @@ export function createBetterSidebarService(store: SidebarStore): BetterSidebarSe
|
|
|
692
692
|
: candidates.find(candidate => candidate.id === tab.id)
|
|
693
693
|
activated ??= tab
|
|
694
694
|
}
|
|
695
|
-
//
|
|
696
|
-
// sight (free windows render regardless of panel state): expanding a
|
|
697
|
-
// panel for it would point the user at a pane the content is not in.
|
|
698
|
-
if (
|
|
699
|
-
!isCreation
|
|
700
|
-
&& floatWithTab(landed, activated?.id ?? tab.id) !== undefined
|
|
701
|
-
) {
|
|
702
|
-
return landed
|
|
703
|
-
}
|
|
704
|
-
// A CONTENT open (file / browser) must land in sight: when the panel
|
|
695
|
+
// Any open for the active session must land in sight: when the panel
|
|
705
696
|
// hosting the landing pane is collapsed, expand it. On narrow
|
|
706
697
|
// viewports the two workbenches merge into one drawer, so the drawer
|
|
707
698
|
// (panelOpen) is the only lever; on wide viewports the landing pane's
|
|
708
699
|
// own panel opens — the bottom panel when the active pane lives in the
|
|
709
|
-
// bottom tree, else the right panel.
|
|
710
|
-
//
|
|
711
|
-
//
|
|
712
|
-
// type-only opens (+ menu for explorer/git) keep the previous
|
|
713
|
-
// caller-owned expand behavior. Opens targeted at an INACTIVE session
|
|
700
|
+
// bottom tree, else the right panel. Type-only opens (+ menu /
|
|
701
|
+
// session-header Files / auto-terminal) expand the same way so callers
|
|
702
|
+
// need not know panel state. Opens targeted at an INACTIVE session
|
|
714
703
|
// never expand (nothing is in sight for the user).
|
|
715
704
|
if (
|
|
716
705
|
!targetsInactiveSession
|
|
717
706
|
&& typeof window !== 'undefined'
|
|
718
|
-
&& (seed.path !== undefined || seed.url !== undefined || seed.type === 'terminal')
|
|
719
707
|
) {
|
|
720
708
|
if (isNarrowWidth(window.innerWidth)) {
|
|
721
709
|
if (!landed.panelOpen) return togglePanel(landed)
|