diff --git a/.claude/scheduled_tasks.lock b/.claude/scheduled_tasks.lock deleted file mode 100644 index 93b69b8..0000000 --- a/.claude/scheduled_tasks.lock +++ /dev/null @@ -1 +0,0 @@ -{"sessionId":"17e654e8-7dd5-4856-85c5-0cfeb7ab736b","pid":3488121,"procStart":"252909119","acquiredAt":1781038486936} \ No newline at end of file diff --git a/package.json b/package.json index 0bdbea5..b0f1705 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "amerc-site", - "version": "0.99.0-boothform", + "version": "1.0.0-legion", "private": true, "type": "module", "scripts": { diff --git a/src/Account.jsx b/src/Account.jsx index 18a9b35..2fa8644 100644 --- a/src/Account.jsx +++ b/src/Account.jsx @@ -34,8 +34,8 @@ export default function Account({ auth, setRoute }) {

{u.email}

{u.role}
- - + +
diff --git a/src/AgentPlatform.jsx b/src/AgentPlatform.jsx index 253ba80..8c42b99 100644 --- a/src/AgentPlatform.jsx +++ b/src/AgentPlatform.jsx @@ -96,11 +96,11 @@ export function AgentBrowse({ auth, setRoute }) { ))} {loaded && classes.length > 0 && ( - )} {loaded && !classes.length && (q || tag) && ( @@ -115,11 +115,11 @@ export function AgentBrowse({ auth, setRoute }) {

No agents here yet — be the first.

    -
  1. Publish a class in — name it, tag it (e.g. backend, model).
  2. +
  3. Publish a class in — name it, tag it (e.g. backend, model).
  4. Run an instance — your broker connects and it goes online.
  5. Use it — embed it as a chatbox or drive it through a web terminal.
- +
)} @@ -166,7 +166,7 @@ function ClassModal({ id, auth, onClose }) { ))} - {!data.instances.length &&

No instances published. The owner can publish one in My Booth.

} + {!data.instances.length &&

No instances published. The owner can field one in My Legion.

} {use && setUse(null)} />} @@ -224,7 +224,7 @@ export function UsePanel({ instance, onClose }) { ); } -// ---- My Booth: publish classes + instances, manage ------------------------ +// ---- My Legion: publish classes + instances, manage ------------------------ export function KeysCard() { const [keys, setKeys] = useState([]); const [name, setName] = useState(''); @@ -267,7 +267,7 @@ export function KeysCard() { ); } -export function BoothDashboard({ auth, setRoute }) { +export function LegionDashboard({ auth, setRoute }) { const [classes, setClasses] = useState([]); const [insts, setInsts] = useState([]); const [err, setErr] = useState(''); @@ -296,7 +296,7 @@ export function BoothDashboard({ auth, setRoute }) { if (!auth.user) return (
-

Your booth awaits

+

Your legion awaits

Log in to publish agent classes, run instances, and put your mercenaries to work — as an embedded chatbox, a live web terminal, or behind a public URL.

@@ -318,7 +318,7 @@ export function BoothDashboard({ auth, setRoute }) { return (
-

My Booth

{auth.user.handle}
+

My Legion

{auth.user.handle}
{err &&

{err}

}
@@ -358,12 +358,12 @@ export function BoothDashboard({ auth, setRoute }) { ) : !classes.length ? (
-

Welcome to your booth, {auth.user.handle}.

+

Welcome to your legion, {auth.user.handle}.

This is where you arm and dispatch your mercenaries. Three steps to go live:

  1. Publish a class — name your agent and tag its skills, in the form on the left.
  2. Run an instance — your broker connects and it turns online.
  3. -
  4. Deliver it — embed a chatbox, drive a web terminal, or expose a local port via the Mansion.
  5. +
  6. Deliver it — embed a chatbox, drive a web terminal, or expose a local port via My Mansion.

Your broker authenticates with an instance accesskey (shown when you publish one) or an agent key — mint one below.

diff --git a/src/Mansion.jsx b/src/Mansion.jsx index 470e8ac..7fc8d38 100644 --- a/src/Mansion.jsx +++ b/src/Mansion.jsx @@ -12,7 +12,7 @@ export default function Mansion({ auth, setRoute }) {
-

The Mansion

+

My Mansion

A hall of amerc services that put your work on the open internet — each lives behind amerc's edge and is brought to life by your own broker. No servers to rent, no ports to forward.

{loggedIn ? {auth.user.handle}'s rooms are open @@ -30,7 +30,7 @@ export default function Mansion({ auth, setRoute }) {
diff --git a/src/Scene2D.jsx b/src/Scene2D.jsx index b39cfc7..e7e7b04 100644 --- a/src/Scene2D.jsx +++ b/src/Scene2D.jsx @@ -1,6 +1,6 @@ import React, { useCallback, useEffect, useRef, useState } from 'react'; import { useAuth, AuthPanel, AdminConsole } from './Auth.jsx'; -import { AgentBrowse, BoothDashboard } from './AgentPlatform.jsx'; +import { AgentBrowse, LegionDashboard } from './AgentPlatform.jsx'; import Mansion from './Mansion.jsx'; import Account from './Account.jsx'; import TavernGame from './TavernGame.jsx'; @@ -10,25 +10,26 @@ import { api } from './api.js'; const Menu = ({ size = 20 }) => (); const X = ({ size = 20 }) => (); -const RELEASE = '0.99.0-boothform'; +const RELEASE = '1.0.0-legion'; const NAV = [ { id: 'home', label: 'Tavern' }, { id: 'agents', label: 'Browse Agents' }, - { id: 'mansion', label: 'Mansion' }, - { id: 'booth', label: 'My Booth' }, + { id: 'mansion', label: 'My Mansion' }, + { id: 'legion', label: 'My Legion' }, ]; -const VALID_ROUTES = ['home', 'agents', 'mansion', 'booth', 'account', 'admin', 'signin', 'status', 'changelog']; +const VALID_ROUTES = ['home', 'agents', 'mansion', 'legion', 'account', 'admin', 'signin', 'status', 'changelog']; const ROUTE_TITLES = { - home: 'amerc — hire agents like mercenaries', agents: 'Browse Agents · amerc', mansion: 'The Mansion · amerc', - booth: 'My Booth · amerc', account: 'Account · amerc', signin: 'Sign in · amerc', status: 'System status · amerc', + home: 'amerc — hire agents like mercenaries', agents: 'Browse Agents · amerc', mansion: 'My Mansion · amerc', + legion: 'My Legion · amerc', account: 'Account · amerc', signin: 'Sign in · amerc', status: 'System status · amerc', changelog: 'Changelog · amerc', admin: 'Quartermaster · amerc', }; function useHashRoute() { const normalize = () => { // first path segment is the route; the rest (e.g. #/agents/) is a sub-path - const base = window.location.hash.replace(/^#\/?/, '').split('/')[0]; + let base = window.location.hash.replace(/^#\/?/, '').split('/')[0]; + if (base === 'booth') base = 'legion'; // legacy alias for the renamed route return VALID_ROUTES.includes(base) ? base : 'home'; }; const [route, setRouteState] = useState(normalize); @@ -127,7 +128,7 @@ function Home({ setRoute }) {

Hire, run, and deliver AI agents across any software boundary — as an embedded chatbox, a live web terminal, or a public URL. No infrastructure, just skills.

- +
{stats && (
@@ -148,8 +149,8 @@ function Home({ setRoute }) { const HF_STEPS = [ { icon: '🍺', title: 'Browse & hire', body: 'Walk the tavern floor and pick a mercenary by skill and tag. See runtime, online status, and what each agent can do.', cta: ['Browse Agents', 'agents'] }, - { icon: '🗡️', title: 'Publish & run', body: 'Register your own agent class in My Booth and run instances — your broker brings the runtime. No infrastructure to manage.', cta: ['Open My Booth', 'booth'] }, - { icon: '🔌', title: 'Deliver anywhere', body: 'Serve users as an embedded chatbox, drive a live web terminal, or expose a local port to the internet via Showcase.', cta: ['The Mansion', 'mansion'] }, + { icon: '🗡️', title: 'Publish & run', body: 'Register your own agent class in My Legion and run instances — your broker brings the runtime. No infrastructure to manage.', cta: ['Open My Legion', 'legion'] }, + { icon: '🔌', title: 'Deliver anywhere', body: 'Serve users as an embedded chatbox, drive a live web terminal, or expose a local port to the internet via Showcase.', cta: ['My Mansion', 'mansion'] }, ]; const HF_USES = [ { icon: '💬', title: 'Chatbox', body: 'Drop one