Files
hermes-agent/website/docs/developer-guide
teknium1 4f3426e7ca fix(desktop): host.sessions.reorder writes live ids; add reorderPinned; move verbs to sdk/sessions.ts
Review findings on #120916:

- MAJOR: `$sidebarSessionOrderIds` is keyed by the LIVE session id — the drag
  path persists `reorderableRowIds` (`session.id`) and the sidebar reconcile
  effect keeps only ids present in `unpinnedAgentSessions.map(s => s.id)`.
  The row slots hand plugins the DURABLE (lineage-root) id, so feeding those
  back into `reorder` dropped every compressed session from the order and,
  when none survived, flipped `manual` off on the next render. `reorder` now
  maps each id to its loaded row's live id through `sessionMatchesStoredId`
  (the same matcher pin uses). Test: reorder with `_lineage_root_id != id`
  was red on head (`['c','a','b']` written verbatim), green now.
- minor: the Pinned drag path (`setPinnedSessionOrder`) had no verb, so
  drag-to-pin-session could not port its pinned reorder. `reorderPinned(ids)`
  delegates to it after durable-id resolution; unmentioned pins keep their
  slot (test red on head: property did not exist).
- minor: `durableSessionPinId` already resolves a loaded id through lineage;
  the unloaded pass-through is now stated in the docs (pass the slot's durable
  id for rows that may have scrolled out).
- shape: the ~55 verb lines appended to `sdk/index.ts` move to
  `sdk/sessions.ts` (`sessionsHost`); index.ts is import + `sessions:` +
  the SESSION_ROW_AREAS export.
- docs: `reorderPinned` in both API blocks; `SESSION_ROW_AREAS` /
  `SessionRowSlotContribution` in the exports-at-a-glance table.
2026-09-24 00:31:25 -07:00
..