@aryacode/dsh-aryacode-polish 0.10.0 → 0.11.2

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/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.11.2] - 2026-10-28
4
+
5
+ ### Verified
6
+
7
+ - Drag reorder now has live proof, not just unit tests: with two workspaces in the
8
+ Dev AryaCode desktop, dropping the second workspace on the first reordered them
9
+ (`workspaces.insertBefore`), and the new order survived a full app restart.
10
+
11
+ ### Fixed
12
+
13
+ - A session is never promised a move the Host cannot make. The remote workspace
14
+ namespace exposes `create`, `rename`, `delete`, `insertBefore`,
15
+ `insertSessionBefore`, `archiveSession`, `unarchiveSession`, `pinSession` and
16
+ `unpinSession` — and no `attachSession` or `detachSession` — while a workspace's own
17
+ `insertSessionBefore` only reorders the sessions already inside it (it rejects a
18
+ session it does not hold). So dropping a session on another workspace is refused
19
+ with a plain explanation instead of firing a call that fails, and the session menu
20
+ no longer offers "Move to <workspace>".
21
+
3
22
  ## [0.10.0] - 2026-10-28
4
23
 
5
24
  ### Added
@@ -533,7 +533,14 @@ export function BetterWorkspace(props) {
533
533
  setDrag(null)
534
534
  setDropping(null)
535
535
  if (!moving || moving.kind !== 'session' || moving.id === targetId) return
536
- if (moving.workspaceId !== workspaceId) { setNotice('A session stays in the workspace it belongs to.'); return }
536
+ if (moving.workspaceId !== workspaceId) {
537
+ // A session cannot change workspace from a plugin: the Host's remote
538
+ // namespace exposes create/rename/delete/insertBefore/insertSessionBefore
539
+ // and no attachSession or detachSession, and a workspace's own
540
+ // insertSessionBefore only reorders the sessions already in it.
541
+ setNotice('A session stays in its workspace; drag it within that workspace to reorder.')
542
+ return
543
+ }
537
544
  void reorderSession(workspaceId, moving.id, targetId)
538
545
  }
539
546
 
@@ -605,7 +612,8 @@ export function BetterWorkspace(props) {
605
612
  runtime,
606
613
  workspacesSnapshot: workspaceState,
607
614
  session: { sessionId: menu.row.id, displayTitle: menu.row.displayTitle, session: menu.row },
608
- }))))
615
+ }))),
616
+ null)
609
617
  : null
610
618
 
611
619
  const children = []
@@ -70,3 +70,26 @@ are M2/M3; the seat is already the right place for them.
70
70
 
71
71
  Still owed: "/"-in-title grouping, per-row appearance, workspace presets, and the same
72
72
  tree in the Hero picker.
73
+
74
+ ## Why a session cannot change workspace
75
+
76
+ Drag reorder works inside a workspace and between workspaces, but a *session* cannot
77
+ be dragged into a different workspace, and that is the Host's shape rather than an
78
+ omission here:
79
+
80
+ - `packages/api/workspace-controller/src/index.ts` exposes these remotes:
81
+ `create`, `initializeDefault`, `rename`, `delete`, `insertBefore`,
82
+ `insertSessionBefore`, `archiveSession`, `unarchiveSession`, `pinSession`,
83
+ `unpinSession` — and nothing that attaches or detaches a session.
84
+ - `packages/api/workspace-controller/src/commands.ts:132` resolves the target workspace
85
+ and calls its own `insertSessionBefore(sessionId, beforeSessionId)`
86
+ (`packages/workspace/workspace/src/entity.ts:152`), which reorders that workspace's
87
+ `sessionIds`; `packages/workspace/workspace/tests/workspace.spec.ts:715` pins that a
88
+ session the workspace does not hold is rejected.
89
+ - The entity does have `attachSession`/`detachSession`
90
+ (`packages/workspace/workspace/src/types.ts:134` region), but no remote surfaces them.
91
+
92
+ So the tree refuses with "A session stays in its workspace; drag it within that
93
+ workspace to reorder." rather than attempting a call that throws. If the Host ever
94
+ exposes attach/detach, the gesture becomes a one-line change here — the drag payload
95
+ already carries `{ kind: 'session', id, workspaceId }`.
package/lib/client.js CHANGED
@@ -53,7 +53,7 @@ window.__ModuleLoader__.load({
53
53
  ]
54
54
  const ROW_ID = "polish"
55
55
  const ROW_KEY = "@aryacode/dsh-aryacode-polish" + '#' + ROW_ID
56
- const CLIENT_VERSION = "0.10.0"
56
+ const CLIENT_VERSION = "0.11.2"
57
57
 
58
58
  /* html2canvas 1.4.1 — MIT, vendored from vendor/html2canvas.min.js.
59
59
  * A UMD build, so it assigns itself to globalThis; face.js reads it lazily. */
@@ -734,7 +734,14 @@ window.__ModuleLoader__.load({
734
734
  setDrag(null)
735
735
  setDropping(null)
736
736
  if (!moving || moving.kind !== 'session' || moving.id === targetId) return
737
- if (moving.workspaceId !== workspaceId) { setNotice('A session stays in the workspace it belongs to.'); return }
737
+ if (moving.workspaceId !== workspaceId) {
738
+ // A session cannot change workspace from a plugin: the Host's remote
739
+ // namespace exposes create/rename/delete/insertBefore/insertSessionBefore
740
+ // and no attachSession or detachSession, and a workspace's own
741
+ // insertSessionBefore only reorders the sessions already in it.
742
+ setNotice('A session stays in its workspace; drag it within that workspace to reorder.')
743
+ return
744
+ }
738
745
  void reorderSession(workspaceId, moving.id, targetId)
739
746
  }
740
747
 
@@ -806,7 +813,8 @@ window.__ModuleLoader__.load({
806
813
  runtime,
807
814
  workspacesSnapshot: workspaceState,
808
815
  session: { sessionId: menu.row.id, displayTitle: menu.row.displayTitle, session: menu.row },
809
- }))))
816
+ }))),
817
+ null)
810
818
  : null
811
819
 
812
820
  const children = []
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aryacode/dsh-aryacode-polish",
3
- "version": "0.10.0",
3
+ "version": "0.11.2",
4
4
  "description": "AryaCode Polish: one install for the small things that make AryaCode feel finished. One Plugins row, one switch per quality-of-life feature.",
5
5
  "keywords": [
6
6
  "dsh",