fa156d6a59
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.
92 lines
4.5 KiB
HTML
92 lines
4.5 KiB
HTML
<!doctype html>
|
|
<html lang="en" class="dark">
|
|
<head>
|
|
<!-- Apply the saved appearance before first paint (same keys as
|
|
src/hooks/useTheme.ts, which re-applies and validates on mount). -->
|
|
<script>
|
|
try {
|
|
var m = localStorage.getItem("theme");
|
|
var d =
|
|
m === "light"
|
|
? false
|
|
: m === "system"
|
|
? !(window.matchMedia && !matchMedia("(prefers-color-scheme: dark)").matches)
|
|
: true;
|
|
var r = document.documentElement;
|
|
var t = localStorage.getItem("agenthub.theme." + (d ? "dark" : "light"));
|
|
r.classList.toggle("dark", d);
|
|
r.setAttribute("data-mode", d ? "dark" : "light");
|
|
if (t && t !== "default") r.setAttribute("data-theme", t);
|
|
} catch (e) {}
|
|
</script>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
|
|
<link rel="apple-touch-icon" href="/favicon.ico" />
|
|
<link rel="manifest" href="/manifest.json" />
|
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
|
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
|
<meta name="theme-color" content="#6366f1" />
|
|
<title>AgentHub - SmartGift Solution</title>
|
|
<meta
|
|
name="description"
|
|
content="Run, steer and track your AI coding agents in one browser tab: workspaces with live terminals for Claude Code, Codex and more, built-in Git, chat replay, usage and cost tracking, and alerts - local-first and real-time."
|
|
/>
|
|
<meta
|
|
name="keywords"
|
|
content="Claude Code, agent dashboard, AI monitoring, real-time dashboard, developer tools, session tracking, kanban, activity feed, analytics, cost tracking, browser notifications, token usage"
|
|
/>
|
|
<meta name="author" content="SmartGift" />
|
|
<meta name="robots" content="index, follow" />
|
|
|
|
<!-- Open Graph -->
|
|
<meta property="og:type" content="website" />
|
|
<meta property="og:site_name" content="AgentHub" />
|
|
<meta property="og:title" content="AgentHub - SmartGift Solution" />
|
|
<meta
|
|
property="og:description"
|
|
content="Run, steer and track your AI coding agents in one browser tab: workspaces with live terminals for Claude Code, Codex and more, built-in Git, chat replay, usage and cost tracking, and alerts - local-first and real-time."
|
|
/>
|
|
<meta property="og:image" content="/og-image.png" />
|
|
<meta property="og:image:width" content="1200" />
|
|
<meta property="og:image:height" content="630" />
|
|
<meta property="og:image:type" content="image/png" />
|
|
<meta property="og:image:alt" content="AgentHub - run, steer and track your AI coding agents" />
|
|
|
|
<!-- Twitter / X Card -->
|
|
<meta name="twitter:card" content="summary_large_image" />
|
|
<meta name="twitter:title" content="AgentHub - SmartGift Solution" />
|
|
<meta
|
|
name="twitter:description"
|
|
content="Run, steer and track your AI coding agents in one browser tab: workspaces with live terminals for Claude Code, Codex and more, built-in Git, chat replay, usage and cost tracking, and alerts - local-first and real-time."
|
|
/>
|
|
<meta name="twitter:image" content="/og-image.png" />
|
|
<meta name="twitter:image:alt" content="AgentHub - run, steer and track your AI coding agents" />
|
|
<meta name="twitter:creator" content="@smartgift" />
|
|
|
|
<!-- JSON-LD structured data -->
|
|
<script type="application/ld+json">
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "WebApplication",
|
|
"name": "AgentHub",
|
|
"description": "Run, steer and track your AI coding agents in one browser tab: workspaces with live terminals for Claude Code, Codex and more, built-in Git, chat replay, usage and cost tracking, and alerts - local-first and real-time.",
|
|
"applicationCategory": "DeveloperApplication",
|
|
"operatingSystem": "Windows, macOS, Linux",
|
|
"softwareVersion": "1.0.0",
|
|
"author": {
|
|
"@type": "Person",
|
|
"name": "SmartGift",
|
|
"url": "https://smartgift.vn"
|
|
},
|
|
"codeRepository": "https://git.smartgift.io.vn/Smartgift-AI/AgentHub",
|
|
"featureList": "Real-time dashboard, Kanban board, Session tracking, Activity feed, Token usage analytics, Cost tracking, Browser notifications, WebSocket live updates"
|
|
}
|
|
</script>
|
|
</head>
|
|
<body class="bg-surface-0 text-fg-primary antialiased">
|
|
<div id="root"></div>
|
|
<script type="module" src="/src/main.tsx"></script>
|
|
</body>
|
|
</html>
|