Skip to content

feat: unify floating conversations and persistent voice history - #3085

Merged
GCWing merged 3 commits into
mainfrom
gcwing/dev
Sep 17, 2026
Merged

GCWing merged 3 commits into
mainfrom
gcwing/dev

Conversation

@GCWing

@GCWing GCWing commented Sep 17, 2026

Copy link
Copy Markdown
Owner

Summary

Move regular and MiniApp conversations between the main view and the floating dock while retaining drafts, attachments, execution state, and reading position. The dock now opens a persistent OpenBitFun control conversation, and voice and text share its saved history.

  • Add host-owned control-conversation selection, non-destructive reset, and idempotent voice-exchange persistence, with Desktop/CLI peer handlers and negotiated peer capabilities.
  • Keep MiniApp conversation visibility and shutdown tied to the app lifecycle, preserve active calls through dock collapse, and retain history when opening a fresh control conversation.
  • Extract reusable voice controls, identity, and transcript components, refine the particle formation, and update localized copy, capability projections, and usage documentation.

Type and Areas

Feature, bug fix, refactor, UI/UX. Areas: shared Rust runtime, Desktop/CLI peer adapters, Web UI, design-system UI, localization, and capability documentation.

Motivation / Impact

Conversations can change presentation without losing their identity or current work. Voice exchanges become durable model-visible conversation records; retries do not duplicate them, and a running Agent turn is not overwritten. Older peer hosts receive explicit capability gating, and unsupported server, ACP, and dispatch voice paths remain unavailable.

Verification

Validation:

  • pnpm run fmt:rs

  • pnpm run check:web (TypeScript, Appearance, typography, theme color, and visual-contract audits)

  • Focused Vitest run: 22 files / 186 tests, covering dock transfer and state, MiniApp lifecycle, voice history and transcript, conversation scope, scene/session synchronization, and Appearance registration.

  • pnpm --dir design-system --filter @openbitfun/ui run build

  • node --test design-system/packages/ui/tests/voice-call.test.mjs (6 tests)

  • pnpm run i18n:audit (0 warnings), pnpm run capabilities:check, and pnpm run motion:audit (intent inventory)

  • cargo test --locked -p openbitfun-agent-content --test prompt_catalog_contracts

  • cargo test --locked -p openbitfun-product-domains --no-default-features remote_surface

  • git diff --check origin/main...HEAD and node scripts/check-git-object-sizes.mjs --base origin/main --head HEAD

  • cargo test --locked -p openbitfun-core --no-default-features --features agent-runtime,git --lib -- control_conversation voice_exchange agentic::agents::registry::tests (52 tests)

  • cargo test --locked -p openbitfun-services-integrations --no-default-features --features speech-realtime --lib speech::realtime::tests (5 tests)

  • pnpm run lint:web (0 errors; 2 pre-existing warnings)

  • pnpm run type-check:web after the integration fixes

  • cargo check --locked -p openbitfun-cli after completing the control-conversation facade

  • pnpm --dir src/web-ui run test:run in CI on the latest head: 804 files / 8,588 tests passed. Coverage includes draft preservation, claim-token routing, lifecycle, and device isolation.

  • cargo test --locked -p openbitfun-agent-runtime --no-default-features --features agent-runtime --test agent_definition_contracts (98 tests, including hidden control-agent category and model selection)

CI passed on final head f72a28eb816fbc007c20b050acda8c7a3212b17a: 11 checks passed, including the frontend build, all three Rust/CLI platforms, and the Rust / CLI Validation gate. Two impact-selected packaging jobs were intentionally skipped. CI run.

Reviewer Notes

Rebased onto current main; git range-diff confirmed the submitted patch was preserved. Automated local contracts were exercised on Windows. Native visual fidelity, live calls, SSH workspaces, Remote Control, Peer Device Mode, and Detached Dispatch were not exercised end to end. Peer capability and unsupported-surface behavior have focused contract coverage; this is not evidence of a live remote session.

Checklist

  • This PR is focused and does not include secrets, temporary prompts, generated scratch files, or unrelated artifacts.
  • Relevant verification is recorded above, or skipped checks are explained.
  • User-facing strings, docs, and locales are updated where applicable.

@GCWing
GCWing merged commit 9fc9e83 into main Sep 17, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant