diff --git a/.agents/specs/arcrun/frontend-redesign/design-source/SOURCE_README.md b/.agents/specs/arcrun/frontend-redesign/design-source/SOURCE_README.md new file mode 100644 index 0000000..9e1ca3d --- /dev/null +++ b/.agents/specs/arcrun/frontend-redesign/design-source/SOURCE_README.md @@ -0,0 +1,25 @@ +# CODING AGENTS: READ THIS FIRST + +This is a **handoff bundle** from Claude Design (claude.ai/design). + +A user mocked up designs in HTML/CSS/JS using an AI design tool, then exported this bundle so a coding agent can implement the designs for real. + +## What you should do — IMPORTANT + +**Read the chat transcripts first.** There are 1 chat transcript(s) in `arcrun/chats/`. The transcripts show the full back-and-forth between the user and the design assistant — they tell you **what the user actually wants** and **where they landed** after iterating. Don't skip them. The final HTML files are the output, but the chat is where the intent lives. + +**Find the primary design file under `arcrun/project/` and read it top to bottom.** The chat transcripts will tell you which file the user was last iterating on. Then **follow its imports**: open every file it pulls in (shared components, CSS, scripts) so you understand how the pieces fit together before you start implementing. + +**If anything is ambiguous, ask the user to confirm before you start implementing.** It's much cheaper to clarify scope up front than to build the wrong thing. + +## About the design files + +The design medium is **HTML/CSS/JS** — these are prototypes, not production code. Your job is to **recreate them pixel-perfectly** in whatever technology makes sense for the target codebase (React, Vue, native, whatever fits). Match the visual output; don't copy the prototype's internal structure unless it happens to fit. + +**Don't render these files in a browser or take screenshots unless the user asks you to.** Everything you need — dimensions, colors, layout rules — is spelled out in the source. Read the HTML and CSS directly; a screenshot won't tell you anything they don't. + +## Bundle contents + +- `arcrun/README.md` — this file +- `arcrun/chats/` — conversation transcripts (read these!) +- `arcrun/project/` — the `arcrun` project files (HTML prototypes, assets, components) diff --git a/.agents/specs/arcrun/frontend-redesign/design-source/app.jsx b/.agents/specs/arcrun/frontend-redesign/design-source/app.jsx new file mode 100644 index 0000000..23a9f42 --- /dev/null +++ b/.agents/specs/arcrun/frontend-redesign/design-source/app.jsx @@ -0,0 +1,56 @@ +// App root — screen switcher with persistent route +const { useState, useEffect } = React; + +const SCREENS = [ + { id: 'landing', label: 'Landing' }, + { id: 'auth', label: 'Auth' }, + { id: 'dashboard', label: 'Dashboard' }, + { id: 'keys', label: 'API Keys' }, + { id: 'workflow', label: 'Workflow' }, +]; + +// Synonyms from sidebar ids +const aliases = { apps: 'dashboard', workflows: 'dashboard', docs: 'landing', settings: 'keys' }; + +function App() { + const [screen, setScreen] = useState(() => { + const saved = localStorage.getItem('arcrun:screen'); + return saved && SCREENS.some(s => s.id === saved) ? saved : 'landing'; + }); + + useEffect(() => { + localStorage.setItem('arcrun:screen', screen); + window.scrollTo(0, 0); + }, [screen]); + + const nav = (id) => { + const resolved = aliases[id] || id; + if (SCREENS.some(s => s.id === resolved)) setScreen(resolved); + }; + + const Current = { + landing: Landing, + auth: Auth, + dashboard: Dashboard, + keys: ApiKeys, + workflow: WorkflowViewer, + }[screen]; + + return ( +
Key named "Production — Northwind API" · created just now · all scopes
+| Name | +Key | +Created | +Last used | +Status | ++ |
|---|---|---|---|---|---|
|
+ {k.name}
+ |
+ {k.prefix}••••{k.id.slice(-4)} | +{k.created} | +{k.lastUsed} | +
+ {k.revoked ? (
+ Revoked
+ ) : (
+
+ toggleKey(k.id)} />
+
+ {k.active ? 'Active' : 'Paused'}
+
+
+ )}
+ |
+ + {!k.revoked && ( + + )} + | +
{mode === 'signin' ? 'Sign in to your Arcrun workspace.' : 'Start building AI workflows in minutes.'}
+ ++ By signing up, you agree to our Terms and Privacy Policy. +
+ )} + +| Workflow | +Nodes | +Last modified | +Activity | +Status | ++ |
|---|---|---|---|---|---|
|
+
+
+ {w.name}
+
+ |
+ {w.nodes} | +{w.modified} | +{w.runs} | ++ + {w.status} + + | ++ + | +
Connect your tools, automate your work. Orchestrate workflows from Claude.ai, your IDE, or a few lines of code — Arcrun handles auth, retries, and state.
+Install once, call Arcrun from Node, Python, or your edge runtime. OAuth, rate limits, and retries are handled.
+ +Install Arcrun inside your AI assistant and run your apps by asking. Trigger workflows, fetch data, or draft messages — in plain English.
+ +Node, Python, Deno, Bun, Cloudflare Workers. One API, same semantics.
+Model calls, HTTP, database, branching — wire them visually or in code.
+Per-workflow API keys with fine-grained scopes and live revocation.
+Every run is replayable. Inspect inputs, outputs, and token usage.
+