Skip to content

Unify agent-first UI and add isolated Electron desktop client - #5

Open
thisisjun786 wants to merge 3 commits into
devfrom
codex/ui-desktop
Open

Unify agent-first UI and add isolated Electron desktop client#5
thisisjun786 wants to merge 3 commits into
devfrom
codex/ui-desktop

Conversation

@thisisjun786

@thisisjun786 thisisjun786 commented Sep 7, 2026

Copy link
Copy Markdown
Owner

Change

Lina now uses one agent-first interface across web/PWA and a new Electron client. Shared neutral surfaces, typography, spacing and component controls replace inconsistent styling while preserving the existing conversation, settings and onboarding controllers.

  • Split portable client state into lina-client and the shared renderer into lina-ui; keep the web gateway and desktop OS adapter separate.
  • Add persisted agent summaries, unread/approval/working states and stable selection. Preserve each conversation's draft, attachments and reading position through agent switches and mobile list → conversation → back navigation.
  • Unify file selection and clipboard attachments, including PNG deduplication, explicit send, failed-upload recovery and session ownership.
  • Replace the two confusing pane icons with one sidebar collapse control and a labeled task-only 나란히 보기 / 나란히 보기 종료 action. Hide the extra-column action when available width is insufficient, and preserve keyboard focus and task state.
  • Bundle the same production renderer in Electron with an isolated profile/session directory, a restricted loopback broker and a minimal preload bridge.

New dependencies (previously absent): React/React DOM 19.2.8, Base UI 1.8.0, Electron 44.2.0, and Forge CLI/ZIP maker 8.0.0-alpha.10. shadcn base-nova source compositions provide Button, Avatar, DropdownMenu, Tabs and Combobox controls; provenance and licenses are included in packages/lina-ui/SOURCES.md and THIRD_PARTY_LICENSES.txt. Existing chat controllers retain state ownership through explicit view adapters.

The latest image-engine changes from dev are integrated into the moved shared renderer. This branch makes no additional changes to image-engine internals. Implementation, reproduction steps and remaining boundaries: implementation report.

Verification

Local checks passed after integrating dev at cd74c89:

  • bun test: 1,495 passed, 0 failed across 210 files.
  • bun run typecheck, bun run lint, bun run ci:validate, bun run ci:build, dependency vulnerability audit and full-history secret scan passed.
  • Actual Chromium: 11 whole-app scenarios passed, covering agent switching, drafts/reading position, native clipboard → upload → explicit send → reload, failed-upload recovery, responsive navigation and first-user onboarding. The task layout and model picker checks also passed without page errors.
  • The existing synthetic image service exercised generation and editing; both owned image previews rendered. External provider calls: 0.
  • Linux Electron ZIP creation passed. All 11 ASAR entries matched the build; renderer JS/CSS/theme matched three isolated QA servers (rendererVersion: 8b7f0710d8fa18e241fa).

QA used isolated ports and temporary databases/session/attachment paths. Its servers have been stopped. Screenshots below are the actual web UI with synthetic fixture data; they are not Electron GUI or live-provider evidence. GitHub Lina CI run 34145635167 also passed on the PR merge candidate for head 7131663: changes, lint, types, tests, build and dev-gate all succeeded. The main-only release gate was correctly skipped.

Desktop

Mobile navigation and task layout

Mobile

Task layout

Risks and remaining work

  • Electron native GUI remains unverified because this host does not support the required sandbox setup. GUI restart, native file dialogs, notifications and protocol handling need a suitable host. No sandbox bypass was used.
  • macOS/Windows packaging/signing, physical mobile IME/file interactions and updater distribution require separate qualification. Forge is pinned to an alpha version; successful Linux packaging is not release certification.
  • Live image-provider quality and the world engine's final integration remain separate work. Existing integration contracts are preserved.
  • The renderer extraction spans many file moves. Existing conversation/settings/onboarding behavior is covered by local tests and browser regression evidence, but native platform behavior is not implied by those checks.

This PR does not merge, promote to main, publish a release or deploy a service.

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