Files
nntrivi2001 fa156d6a59 feat: v2.6.0 — Chat UI composer (+ menu, project files, activity panel, permission mode, Stop), git on a workspace's extra folders (#70), long paste as a file (#68), S3 server mode (experimental)
Chat UI:
- Each Claude/Codex session keeps its own chat/terminal view; Settings only
  sets how new sessions open.
- Composer + menu: upload, project files and folders (#54, also dragged from
  the Files/Changes tree), context files, recent uploads, skills, plugins.
- Activity side panel (progress, outputs, files read, uploads, memory,
  skills, connectors) with a file preview; edited-file counts per turn.
- Permission-mode chip (Shift+Tab steps, read back from the pane:
  server/lib/pane-mode.js, GET|POST /api/run/:id/permission-mode).
- Stop (Esc) while the main agent works; the status is checked per agent
  (with session_id /api/agents ignores its status filter) and re-read every
  5 s while Stop shows.
- Dropped images shown in the conversation (GET /api/run/drop/:name, the
  requester's own drop dir), full-size viewer.
- A plain-text paste over 5,000 characters is attached as pasted-text.txt,
  so no prompt reaches tmux/argv limits (#68).

Changes panel: every /api/lanes/:id/git* route takes ?source=<lane_sources
id> (sourceFolder; ENOSOURCE otherwise) and a folder picker switches the
whole panel to a workspace's extra folder (#70).

Server mode S3 (one Linux user per account) — experimental, verified with
fake sudo plus a P6 managed-settings spike on a test account:
- member tmux listing runs in the background (cached, 15 s => unknown);
- transcript snapshot copy is async, chunked, temp file + rename;
- Express Layer patch only on Express 4;
- tmux capturePane/sendKey go to the member's own server.

Docs: the multi-user design moved in as docs/plans/server-mode/README.md
(the AgentHub-Server repo is gone); S3-PLAN P6 result; LANES/API/openapi.
2026-10-09 16:35:07 +07:00
..

First-run setup and tour (per account)

Asked 2026-10-08 (modelled on Orca's 3-step welcome). Decisions:

  • Bypass is never remembered (CLAUDE.md rule). The wizard remembers a default permission mode (Auto / Accept edits / Ask / Plan); bypass stays the red per-session switch.
  • Per account, on the server. The choices follow the account to any browser. Local mode is one account, local.
  • The tutorial is a step-by-step spotlight tour.

Server

  • The user_prefs table: user_key (u<id>, or local), prefs (JSON), onboarded_at, updated_at. It is migration-safe (CREATE IF NOT EXISTS).
  • server/routes/me.js, mounted at /api/me:
    • GET /prefs returns {prefs, onboardedAt};
    • PUT /prefs merges {prefs}, takes only keys in PREF_KEYS, string values of at most 8 KB each, and null deletes a key;
    • POST /onboarded marks the account as onboarded.
    • Writes are same-origin. A member may write their own prefs, and nobody else's.
  • S3: when a member saves a mode, the theme in their Claude Code ~/.claude/settings.json follows it (dark or light), written through write-as.
  • P6: agenthub-provision create seeds the member's ~/.claude.json with hasCompletedOnboarding and trust for the home folder. It runs as the member (runuser + the shared node). Verified: trusting the home also covers folders under it.

Client

  • lib/userPrefs.ts:

    • On login: hydrate localStorage from the server, then re-apply the theme, language and pet.
    • On save: wrapping localStorage.setItem for PREF_KEYS pushes each change (debounced).
  • New preference keys:

    • agenthub.defaultTool, read by AddLaneModal before the install default;
    • agenthub.permissionMode, read by WorkspaceHome. bypassPermissions is never accepted here.
  • components/onboarding/OnboardingWizard.tsx, mounted in Layout. It shows when the account is not onboarded AND has no workspace (an account that already has one is marked onboarded silently). Steps:

    1. Default agent (detected tools as a grid, plus "show more") and the default permission mode.
    2. Appearance: System, Dark and Light as preview cards, a theme grid for dark and for light below them, then language and terminal font.
    3. Pet: none or an installed pet, and its size.
    4. Notifications: enable, sound and preview, send a test.

    The footer has Skip, Back and Continue (Ctrl+Enter). The last step's button is "Add your first workspace", which starts the tour on the Dashboard (/).

  • components/onboarding/Tour.tsx: a spotlight on data-tour targets. Each step moves on when its condition holds, and the step reached is saved in prefs (agenthub.tour). The steps:

    • Add workspace: the sidebar's + (the rail's tree icon while the sidebar is folded)
    • the folder field (its suggestions list included while it is open) — or the folder browser while it is open over it
    • Create
    • the prompt box
    • sending the prompt
    • the session pane
    • done
  • "Run setup again" lives in Settings → Appearance (every account can open it; System is not a member's page).

  • i18n in English and Vietnamese. Tests: the server route; the client wizard, tour and prefs; snapshots.

  • Docs: docs/API.md, docs/SERVER-MODE.md and the CLAUDE.md marker.