* fix(macos): show sessions after controls in tray menu
When many sessions are active, the injected session rows push the
toggles, action buttons, and settings items off-screen, requiring
a scroll to reach them.
Change findInsertIndex and findNodesInsertIndex to anchor just before
the separator above 'Settings…' instead of before 'Send Heartbeats'.
This ensures the controls section is always immediately visible on
menu open, with sessions appearing below.
* refactor: extract findAnchoredInsertIndex to eliminate duplication
findInsertIndex and findNodesInsertIndex shared identical logic.
Extract into a single private helper so any future anchor change
(e.g. Settings item title) only needs one edit.
* macOS: use structural tray menu anchor
---------
Co-authored-by: Brian Ernesto <bernesto@users.noreply.github.com>
Co-authored-by: ImLukeF <92253590+ImLukeF@users.noreply.github.com>
Update all references from `plugins info` to `plugins inspect` in bundles,
plugin system, and CLI index docs to match the renamed command.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Build failed because src/plugin-sdk/synology-chat.ts reexported setup symbols through extensions/synology-chat/api.ts, and that API shim reexports openclaw/plugin-sdk/synology-chat back into the same entry. Export the setup symbols directly from the concrete setup surface so tsdown can bundle the SDK subpath without a self-referential export graph.
Label each registerX method with its capability type and add module-level
doc comment to channel runtime types.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Align with the decided convention: use capabilities, entry points,
and extension surfaces instead of seams.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* zalouser: extract shared plugin base to reduce duplication
* fix(zalouser): bump zca-js to 2.1.2 and fix state dir resolution
* fix(zalouser): allow empty allowlist during onboarding and add quickstart DM policy prompt
* fix minor review
* fix(zalouser): restore forceAllowFrom setup flow
* fix(zalouser): default group access to allowlist