Files
AgentHub/client/public/og-image.svg
T
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

86 lines
30 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 630" width="1200" height="630">
<defs>
<linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#070b18"/>
<stop offset="100%" stop-color="#0e1630"/>
</linearGradient>
<radialGradient id="glowA" cx="50%" cy="50%" r="50%">
<stop offset="0%" stop-color="#3b5bdb" stop-opacity="0.45"/>
<stop offset="100%" stop-color="#3b5bdb" stop-opacity="0"/>
</radialGradient>
<radialGradient id="glowB" cx="50%" cy="50%" r="50%">
<stop offset="0%" stop-color="#4cc3f5" stop-opacity="0.22"/>
<stop offset="100%" stop-color="#4cc3f5" stop-opacity="0"/>
</radialGradient>
<linearGradient id="title" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" stop-color="#ffffff"/>
<stop offset="100%" stop-color="#9fdcff"/>
</linearGradient>
<pattern id="grid" width="40" height="40" patternUnits="userSpaceOnUse">
<path d="M40 0H0V40" fill="none" stroke="#ffffff" stroke-opacity="0.035"/>
</pattern>
</defs>
<rect width="1200" height="630" fill="url(#bg)"/>
<rect width="1200" height="630" fill="url(#grid)"/>
<ellipse cx="1060" cy="40" rx="420" ry="300" fill="url(#glowA)"/>
<ellipse cx="120" cy="610" rx="380" ry="220" fill="url(#glowB)"/>
<!-- SmartGift logo (wordmark recoloured white for the dark ground), trimmed from
https://smg-services.s3.ap-southeast-1.amazonaws.com/smartgift/assets/logo/logo-main.png -->
<image x="64" y="52" width="236" height="50" href="data:image/png;base64,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"/>
<g transform="translate(1136,64)" font-family="'Inter', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif" font-size="15" font-weight="600">
<rect x="-230" y="0" width="230" height="32" rx="16" fill="#4cc3f5" fill-opacity="0.12" stroke="#4cc3f5" stroke-opacity="0.35"/>
<circle cx="-210" cy="16" r="4.5" fill="#34d399"/>
<text x="-197" y="21" fill="#cfeeff">Local-first · Real-time</text>
</g>
<text x="61" y="196" font-family="'Inter', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif" font-size="80" font-weight="800" letter-spacing="-2.5" fill="url(#title)">AgentHub</text>
<text x="64" y="246" font-family="'Inter', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif" font-size="26" fill="#c3cce3">Run, steer and track your AI coding agents, all in one browser tab.</text>
<g transform="translate(64,300)">
<rect width="344" height="116" rx="16" fill="#ffffff" fill-opacity="0.045" stroke="#ffffff" stroke-opacity="0.10"/>
<g transform="translate(20,22)"><rect width="48" height="48" rx="12" fill="#4cc3f5" fill-opacity="0.12"/><rect x="10" y="13" width="28" height="22" rx="4" fill="none" stroke="#4cc3f5" stroke-width="2.5"/><path d="M16 21l4 3-4 3M23 28h7" fill="none" stroke="#4cc3f5" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/></g>
<text x="84" y="44" font-family="'Inter', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif" font-size="21" font-weight="700" fill="#f1f5ff">Workspaces &amp; terminals</text>
<text x="84" y="72" font-family="'Inter', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif" font-size="16" fill="#9aa6c4">Start, split and resume agent</text>
<text x="84" y="94" font-family="'Inter', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif" font-size="16" fill="#9aa6c4">sessions right in your browser</text>
</g>
<g transform="translate(428,300)">
<rect width="344" height="116" rx="16" fill="#ffffff" fill-opacity="0.045" stroke="#ffffff" stroke-opacity="0.10"/>
<g transform="translate(20,22)"><rect width="48" height="48" rx="12" fill="#4cc3f5" fill-opacity="0.12"/><rect x="11" y="11" width="11" height="11" rx="3" fill="#4cc3f5"/><rect x="26" y="11" width="11" height="11" rx="3" fill="none" stroke="#4cc3f5" stroke-width="2.5"/><rect x="11" y="26" width="11" height="11" rx="3" fill="none" stroke="#4cc3f5" stroke-width="2.5"/><rect x="26" y="26" width="11" height="11" rx="3" fill="#4cc3f5"/></g>
<text x="84" y="44" font-family="'Inter', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif" font-size="21" font-weight="700" fill="#f1f5ff">Every AI coding agent</text>
<text x="84" y="72" font-family="'Inter', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif" font-size="16" fill="#9aa6c4">Claude Code, Codex, Antigravity,</text>
<text x="84" y="94" font-family="'Inter', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif" font-size="16" fill="#9aa6c4">Cursor, Kimi, Grok and more</text>
</g>
<g transform="translate(792,300)">
<rect width="344" height="116" rx="16" fill="#ffffff" fill-opacity="0.045" stroke="#ffffff" stroke-opacity="0.10"/>
<g transform="translate(20,22)"><rect width="48" height="48" rx="12" fill="#4cc3f5" fill-opacity="0.12"/><circle cx="16" cy="14" r="3.5" fill="none" stroke="#4cc3f5" stroke-width="2.5"/><circle cx="16" cy="34" r="3.5" fill="none" stroke="#4cc3f5" stroke-width="2.5"/><circle cx="32" cy="18" r="3.5" fill="none" stroke="#4cc3f5" stroke-width="2.5"/><path d="M16 17.5v13M32 21.5c0 6-16 4-16 9" fill="none" stroke="#4cc3f5" stroke-width="2.5" stroke-linecap="round"/></g>
<text x="84" y="44" font-family="'Inter', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif" font-size="21" font-weight="700" fill="#f1f5ff">Git built in</text>
<text x="84" y="72" font-family="'Inter', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif" font-size="16" fill="#9aa6c4">Review changes, commit, merge</text>
<text x="84" y="94" font-family="'Inter', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif" font-size="16" fill="#9aa6c4">and push from each workspace</text>
</g>
<g transform="translate(64,436)">
<rect width="344" height="116" rx="16" fill="#ffffff" fill-opacity="0.045" stroke="#ffffff" stroke-opacity="0.10"/>
<g transform="translate(20,22)"><rect width="48" height="48" rx="12" fill="#4cc3f5" fill-opacity="0.12"/><path d="M12 14h24a3 3 0 0 1 3 3v12a3 3 0 0 1-3 3H22l-6 5v-5h-4a3 3 0 0 1-3-3V17a3 3 0 0 1 3-3z" fill="none" stroke="#4cc3f5" stroke-width="2.5" stroke-linejoin="round"/><path d="M16 21h16M16 26h10" stroke="#4cc3f5" stroke-width="2.5" stroke-linecap="round"/></g>
<text x="84" y="44" font-family="'Inter', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif" font-size="21" font-weight="700" fill="#f1f5ff">Chat view &amp; replay</text>
<text x="84" y="72" font-family="'Inter', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif" font-size="16" fill="#9aa6c4">Read any session as a chat,</text>
<text x="84" y="94" font-family="'Inter', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif" font-size="16" fill="#9aa6c4">resume only when you choose</text>
</g>
<g transform="translate(428,436)">
<rect width="344" height="116" rx="16" fill="#ffffff" fill-opacity="0.045" stroke="#ffffff" stroke-opacity="0.10"/>
<g transform="translate(20,22)"><rect width="48" height="48" rx="12" fill="#4cc3f5" fill-opacity="0.12"/><path d="M12 36h24" stroke="#4cc3f5" stroke-width="2.5" stroke-linecap="round"/><rect x="14" y="24" width="5" height="9" rx="1.5" fill="#4cc3f5"/><rect x="21.5" y="17" width="5" height="16" rx="1.5" fill="#4cc3f5"/><rect x="29" y="12" width="5" height="21" rx="1.5" fill="#4cc3f5"/></g>
<text x="84" y="44" font-family="'Inter', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif" font-size="21" font-weight="700" fill="#f1f5ff">Usage, cost &amp; budgets</text>
<text x="84" y="72" font-family="'Inter', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif" font-size="16" fill="#9aa6c4">Tokens, spend and plan quotas,</text>
<text x="84" y="94" font-family="'Inter', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif" font-size="16" fill="#9aa6c4">with alerts before you overspend</text>
</g>
<g transform="translate(792,436)">
<rect width="344" height="116" rx="16" fill="#ffffff" fill-opacity="0.045" stroke="#ffffff" stroke-opacity="0.10"/>
<g transform="translate(20,22)"><rect width="48" height="48" rx="12" fill="#4cc3f5" fill-opacity="0.12"/><path d="M9 25h7l3-8 5 15 4-11 3 4h8" fill="none" stroke="#4cc3f5" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/></g>
<text x="84" y="44" font-family="'Inter', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif" font-size="21" font-weight="700" fill="#f1f5ff">Alerts &amp; notifications</text>
<text x="84" y="72" font-family="'Inter', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif" font-size="16" fill="#9aa6c4">Browser push and webhooks the</text>
<text x="84" y="94" font-family="'Inter', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif" font-size="16" fill="#9aa6c4">moment an agent needs you</text>
</g>
<text x="64" y="598" font-family="'Inter', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif" font-size="17" font-weight="600" fill="#4cc3f5">smartgift.vn</text>
<text x="1136" y="598" text-anchor="end" font-family="'Inter', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif" font-size="17" fill="#6f7b99">git.smartgift.io.vn/Smartgift-AI/AgentHub</text>
</svg>