Improve agent orchestration, local integrations, persisted result handling, and renderer continuity.\n\nExpand deterministic coverage for packaged resources, recovery paths, and open desktop behavior.
Add local agent bridge and package tooling, expand system skills and permission prompts, improve connector and marketplace install flows, refresh project/group chat surfaces, and update desktop packaging support.
- Chat picker: add skill + connector picker chips next to agent picker; the
recipient picker now opens a unified surface (commander → agent/skill/
connector). Skill picker honors `agent.skill_list` three-state; connector
picker honors `agent.enabled_connectors` (strict — undefined/[] = none).
- agents: `enabled_connectors` field becomes a first-class agent spec entry;
UI-only (agent-edit LLM never authors it) plumbed through the create modal
+ detail edit form. Loader normalizes to `string[]`.
- Expert signals: extractor + emitter polish (test coverage on the chokepoint
set; turn_id convention recorded in the daily jsonl payload for downstream
reflection / patch-suggester pairing).
- group_chat: agent worker visibility slice + dispatch primitive tests
ensure no actor reads the full `<cid>.jsonl`.
- Various test fixture updates (pin LOCAL_DATA_VERSION expected value;
connector i18n mock).
`features/feedback.ts`, `ipc/feedback.ts`, `feedback.js`, the
`settings-feedback-*` block, and the `settings.feedback.*` i18n keys remain
absent in this build (no Server-backed feedback upload). The chat picker
itself ships intact since skills + connectors are first-class here.
- Group chat: stabilize plan recovery surfaces (retryStep / skipStep go
through plan_executor → reconcileAfterStepTransition; retryButton hides
while state.in_flight non-empty; rail status icons single-sourced in
`plan-rail.js::STATUS_ICON`).
- Plan-level transient retry only matches network-layer patterns
(`TRANSIENT_ERR_PATTERNS`); user-initiated aborts must NOT auto-retry.
- Japanese localization: ja.json drops in main + renderer locales (all
user-visible strings i18n-keyed; renderer subscribes to `i18n-change`).
- Reflection-trigger: per-agent metacognitive reflection — 48h cooldown,
time-triggered (not per-turn); startup-delayed to keep first-paint snappy.
- Expert signals: `<uid>/local/signals/<yyyy-mm-dd>.jsonl` stream — sole
writer is `features/expert_signals/emitSignal`; chokepoints at bus.ts
turn-end / `_enqueueBody` USER_ID / retryStep / skipStep /
markFormSubmittedAndDispatch / plan_executor.dispatchReady; model-layer
signals route through `ChatOptions.onSkillAdvertised` / `onSkillInvoked`
callbacks drained at turn-end (no `import { emitSignal }` from model/).
- Renderer: gate first paint on i18n boot (drop the English→Chinese flash);
preload synchronously fetches the i18n bundle.
- 5-minute periodic safety-net sync ticker bound to engine lifetime (master
switch gates it for free) — applied to PC-only sync engine (stripped here).
- review: redact web account URL from logs.
The login flow, account.onChange listener wiring, sync.onDataChanged listener,
relay startup polling, voice ASR proxy handler, and the devtools LLM-call
archive (`archiveLlmCall`) all stay stripped from this build per
strip-rules.json.
- Quality validator: persistent ValidationReports per skill / agent surface
the violation list when a write or marketplace install was rejected; new
`ipc/quality.ts` exposes the readSkill / readAgent report channels for the
renderer's detail-panel error UI.
- Renderer: `:::dashboard` fenced directive (`renderDashboard` in
`modules/utils.js`) lands with ~12 components (Stack / Grid / Card /
Separator / Metric / Chart / Table / Alert / Timeline / Code / Markdown /
Image); schema reference for the LLM lives in chat_shared_rules.md.
- Agents: `agent.output_format` three-tier user-facing values (`markdown_only`
default for new agents → `dashboard` → `artifact`); injected into the worker
prompt's runtime tail so the cache prefix stays stable for unconstrained
agents. Legacy `allow_artifacts` / `auto` aliases preserved by the buildHint.
- LOCAL_DATA_VERSION manifest-data-version gate (`features/sync/data_version.ts`):
PC engine aborts the pass when `manifest.data_version > LOCAL_DATA_VERSION`
with a sticky `pause_reason = 'version_outdated'`; Server mirrors it on
commit (50404 `client_outdated`). Both versions bumped to 2 with the
per-instance `secrets_enc` connectors schema change.
- Manifest stays a Server-mediated atomic CAS commit; OrkasOpen carries the
classifyPullCandidates 3-way docs in CLAUDE.md but no engine.
Membership/billing renderer UI + per-billing-provider URL minting +
subscription / sync-card grace-banner are intentionally absent (no
account/billing concept in OrkasOpen). connector-meta-tools and quality
validator are not gated; they land identically in both builds.
- Agent spec gets `runtime`. `kind === 'cli'` skips the SkillLoader +
in-process system-prompt build and routes the worker turn through
`features/local_agents/runner.ts`, the single child_process.spawn
entry. SIGTERM → 10s → SIGKILL on cancel.
- New `features/local_agents/` tree: registry / runner / per-run
jsonl persist / version probe / `which` discovery, plus per-CLI
backends (ACP for claude/hermes, JSON-line text for openclaw /
opencode / codex).
- group_chat/bus.ts routes a CLI agent's worker turn into the runner;
reply still re-enters via `bus.enqueue` (single primitive).
- Agent modal gains a runtime selector + a CLI badge + a missing-CLI
warning chip on the card; the CLI edit prompt
(`chat_agent_setup_cli.md`) tells the LLM not to author
workflow / skills / runtime sub-tags.
- macOS Dock + Cmd-Tab name fix: `app.setName('Orkas')` early in
main, plus `scripts/ensure-deps.cjs` renames `Electron.app` →
`Orkas.app` post-install (rename + plist edit + ad-hoc resign +
lsregister + killall Dock — `setName` alone does NOT change the
Dock).
The PC build also archives every CLI dispatch into the in-app debug
panel (`devtools.archiveLlmCall`); the open-source build has no debug
panel, so per-run output lands in `local-agent-runs/<runId>/` and
that's the only artifact.
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>