space_ui (xo-space)
From Innerpedia, the encyclopedia of you
space_ui is a JavaScript project within xo-space. Created in July 2026, it was last touched 1 month ago. It holds 85 files across nine folders, 1.7 MB in all.
An explorable map of ~/xo-projects. Four primary sections share the same navigation structure: Projects, Agents, Inbox, and Setup. Primary links open a section's default page; the secondary links open its pages and can be copied, opened in another tab, or revisited with Back/Forward.
Overview
| Section | Default route | Pages |
|---|---|---|
Projects (1) | #/projects/overview | Overview, Data (List, Graph, Tree), Timeline, Manage |
Agents (2) | #/agents/overview | Overview, Sessions, Trends, Configure |
Inbox (3) | #/inbox/items | Items, Connections, Jobs, Activity, Sharing activity, Sharing |
Setup (4) | #/setup/workspace | Workspace, Intelligence layer, Connectors, Secrets, Jobs, Server |
Space starts at Projects Overview. Data contains the existing List, Graph
and Tree views at #/projects/data/list, #/projects/data/graph and
#/projects/data/tree. The List / Graph / Tree links sit in each view’s local
toolbar. The Data section link remembers the last view used; a direct
#/projects/data link opens List. Clicking Projects or pressing 1 always
opens Overview. The section roots
#/projects, #/agents, #/inbox, and #/setup normalize to their defaults.
Legacy #/dashboard, #/graph, #/tree, and #/time links open
the corresponding Projects page. #/sharing and #/projects/sharing now open
Inbox Sharing at #/inbox/sharing. The previous #/projects/list,
#/projects/graph and #/projects/tree links also remain valid and normalize
to the corresponding Data route. The former #/projects/files,
#/projects/files/list, #/projects/files/graph and #/projects/files/tree addresses
remain aliases for Data. Connectors and Secrets keep their aliases
#/connectors and #/secrets. Technical details is a child of Setup Server at
#/setup/server/details; #/quirq remains an alias. Stored Inbox links using
view: "projects" continue to open List; that API value is independent of the
Projects section URL.
Wiki and GitHub stay at the top right across views. Wiki opens the local
#/wiki overview in the same tab; GitHub opens in a new tab. Wiki has no numbered
shortcut. Its three-step quickstart and topic cards link to the
full Space guides, which open online in a new
tab. Existing first-run and storage-help actions focus the matching overview
section. The overview itself works offline.
The toolbar adapts to the active page. The Cmd+K search trigger sits with
Wiki and GitHub in the top-right cluster on every page, including Overview and Graph. A single Refresh button stays in the top bar on every page, beside search,
Wiki and GitHub. It reloads the entire document at the current URL, including
its route and query string. Unsaved forms, open drawers and temporary filters
reset just as they do with the browser reload button. Refresh this page
in the command palette uses the same action. Every Projects page keeps
Graph root in the section bar. Manage is a Projects page at
#/projects/manage; its Add project button opens the clone form. The old
#/setup/projects link opens Manage. Cards start collapsed; one card opens at a time to show
metadata and Issues, while inline sharing drafts stay mounted. Copy icons
beside recorded metadata copy its exact value; tooltips and keyboard focus identify
each action. View activity, Share, Pin, Copy GitHub URL and Remove
are grouped in each card header and work while collapsed. Pins keep their existing
browser storage and feed Data List’s Pinned filter, including across open tabs. Inbox Sharing keeps Share a project
and Check now beside its own navigation.
Each Manage project card has Share, which opens a Space ID form
in that card. Cancel keeps you on the page; submitting grants access to that
Space ID. Drafts stay with their project while you filter or navigate within Space.
Choosing a node from Data List, Data Tree, Manage or
Timeline opens Data Graph rooted on that node. The secondary navigation does
not repeat primary section labels. Projects page descriptions are removed to leave more room
for graphs and content; List keeps its counts and actions in a compact row. List, Tree, Timeline, Setup, Inbox Items, both activity pages, and
the Agents session list have their own search; typing there keeps you on that page.
Wiki, Sharing, Quirq, Inbox Connections/Jobs, and the Agents charts/detail have no
page-search field; they still show the Cmd+K trigger.
| Page | Search scope |
|---|---|
| Projects List | All search words match across project name, folder ID and description. Combines with the Filter menu’s All projects, Live or Pinned options beside Sort by. |
| Tree | Folder and file names, keeping the ancestors of matches visible. |
| Timeline | Project names; the selected timeline mode and date range still apply. |
| Setup | Setting names and topics. Choose a result to open its section; searches never read field values or credentials, and all unfinished forms stay mounted. |
| Setup → Connectors | Workspace integrations and account apps by name, identifier, description, and connected account label. Filtering preserves open controls and unsaved edits. |
| Inbox → Items | Title, body, kind, source, and project in the loaded status page, intersected with the source filter. The matching count shows this scope. |
| Inbox → Activity | Loaded workspace event labels, details, project names/IDs, runtime and session ID, intersected with the project selector. Load older adds more events to this search. |
| Inbox → Sharing activity | Loaded relay event labels, details and repository names, intersected with the repository selector. |
| Sessions list | Project, path, source, model, and session ID in the loaded sessions, intersected with the selected sources. Matching counts distinguish loaded rows from the total. |
Each page remembers its query while you navigate within the app; a full
reload resets it. Press / outside an editable control to open the command
palette on Graph and on pages that have search. In a page search, Escape clears the query; pressing it again removes
focus. The clear button does the same reset. When Inbox is narrowed, Mark all
loaded seen explicitly includes loaded new items hidden by search or source
filters.
This folder is a bundled snapshot of the xo-atlas UI (originally a standalone folder with no remote), trimmed to the single endpoint-driven page and served by this API, so every workspace that runs xo-space gets the graph with zero configuration.
Files
Build-free ES modules (no bundler, no dependencies); the browser loads them
directly. Descended from the single-file xo-atlas v3.html.
| Path | What it is |
|---|---|
index.html | Thin shell: markup + stylesheet links + an import map + the js/app.js entry. The import map is where core/api.js, core/ui.js and core/connections.js get their cache stamp: views import those three bare, the map rewrites every such import to one ?v= URL (one module instance, fetched fresh after a bump); every other core module keeps the stamp on its import line. |
css/ | The original stylesheet split at its section banners, loaded in original order (cascade unchanged). |
fonts/inter/ | Inter variable font (upright and italic) with its SIL OFL license. css/base.css loads it as --sans; --mono stays the system monospace and is only for code, commands, logs and IDs. |
js/app.js | Entry point. Registers views; adding a view = one new file in js/views/ + one import line here. |
js/core/registry.js | View registry: primary section links, 1..n hotkeys (ignored while editing), canonical hash routes and aliases, history, lazy mounts, per-view refresh and failure isolation. Primary sections are configured independently of their pages. |
js/core/navigation.js | Primary sections and their page definitions, canonical routes, labels and stable view IDs. |
js/core/project-actions.js | The Add handoff opens Manage’s clone form only after current navigation completes. The legacy Setup-project event opens Manage without opening Add. |
js/core/project-share.js | Reusable inline Space ID form for Manage project cards, with draft retention, pending-state protection, and the existing share endpoint. |
js/core/timeline-summary.js | Counts mapped files or loaded commits in the selected project lanes and date window; playback and trace dimming do not alter those totals. |
js/core/project-pins.js | Browser-local project pins shared by Manage actions and Data filtering, with storage-event synchronization and an in-memory fallback. |
js/core/data-views.js | Native List, Graph and Tree links shared by the local Data toolbars. |
js/core/section-nav.js | Shared secondary navigation and a slot for stable view-owned actions; native links mark the active page. |
js/core/project-root.js | Root picker shared by all Projects pages. Reads node metadata independently of the canvas; a selection opens the appropriate graph, while stale reads cannot reopen the picker after navigation. |
js/core/page-refresh.js | Shared full-document refresh for the top-bar button and command palette. |
js/core/toolbar.js | Shared toolbar: Cmd+K trigger in the navbar search slot, active-filter page search, and the / shortcut that opens the palette. |
js/core/api.js | The one fetch layer: API_BASE, query-string auth forwarding, offline / HTTP-error / 501 classification, single-flight GETs, and failText(res), the one wording for a failed result ("xo-space is unreachable", "not available for the active agent", or the HTTP error) that every tab shows. |
js/core/store.js | Idempotency helpers: single-flight promises, slotted (non-stacking) intervals. |
js/core/ui.js | Shared UI helpers: toast, esc (HTML escaping for every interpolated value), rel (relative time; empty for a missing stamp), pills (a filter strip of data-<attr> buttons with is-on / aria-pressed). |
js/core/connections.js | Pure formatters over one GET /api/connections entry: every (cadence), collectorLabels, pollLine (last poll or the error). Shared by the Inbox's Connections section and Setup Connectors so both read the same. |
js/core/server-widget.js | Footer server pill (status poll + terminal start hint). |
js/core/preview.js | File previewer drawer. Any view opens it with a space:preview-file event; markdown renders through markdown.js, HTML renders in an empty-sandbox iframe, everything else as escaped source. |
js/views/atlas.js | Projects Overview, Graph and Timeline. Changing projections rebuilds only the atlas engine, disposes its listeners and frames, and ignores superseded reads; the document and other mounted pages remain intact. |
js/views/sessions.js | Five Agents routes under #/agents/, sharing one mounted telemetry view: session telemetry from /xo/sessions.json, contributed by whichever backends implement the session_telemetry capability. The module file keeps its sessions.js name; the data file sessions.json and the internal Sessions sub-view are session telemetry, not the tab. |
js/views/inbox.js | Three Inbox routes (items, connections, jobs) share a mounted controller. Items shows what arrived in the workspace (new sessions, blocked todos, shares, anything POSTed to /api/inbox) as new / seen / done rows, plus the unread badge on the primary link (initInboxBadge). Styled by css/inbox.css, its own .inb-* classes. |
js/views/inbox-activity.js | Independent workspace Activity and Sharing activity pages. Workspace events, live sessions and project names come from their existing read APIs; Sharing activity reads the relay’s recent-event buffer. |
js/views/sharing.js | Inbox Sharing management: shared repositories, incoming clones, commits, Apply, members, grants and revocations. Existing Sharing links normalize to #/inbox/sharing. |
js/views/projects.js | Data List: searchable catalog, Pinned and Live filters and a file browser in each expanded row. Catalog and optional telemetry load independently. Stable rows retain focus, folders and scroll across sorting and navigation; request generations reject stale file replies. Each file and folder row has a Copy path button (also on right-click) offering the path relative to the project root or the full path, built from roots.applied.xo_projects_root in GET /api/runtime-config plus the project id. Registers project-list at #/projects/data/list. |
js/core/workspace.js | Indexed project counts from /xo/space.json. Prefers hub index_counts captured before graph display limits; marks incomplete scans with + and treats missing counts as unknown. Older graphs use conservative lower bounds when their display limits were reached. |
js/views/tree.js | The Projects Tree page: horizontal hierarchy over the same /xo/space.json dataset as Graph: folders as columns, files stacked beside their parent. Deep-link #/projects/data/tree. |
js/views/chat.js | The Chat view: Plane-B chat (/api/chat/prompt → SSE stream → transcript refetch) with session sidebar, project binding for new sessions, and mini-markdown rendering. Works across claude_code / hermes / openclaw. Deliberately unregistered: no tab. |
js/views/wiki.js | The compact Wiki overview: local quickstart/view actions and links to detailed online guides. Opens from the header resource link (nav:false, #/wiki), with no primary tab. Legacy space:wiki-page requests focus the matching topic without replacing the overview. |
js/views/quirq.js | The Quirq view: machine-local .quirq state (watcher infrastructure and the derived runtime tier) beside the durable project .xo output. Its file rows come from services/cowork_agent/quirq_catalog.py, which is data-driven: |
Structure
Files
- index.html
- README.md
Technology
Languages
See also
- space_ui_previewThe server serves the actual space_ui/ assets from this checkout and supplies deterministic, fictional API data.
- space_ui (xo-cowork-api)An explorable map of ~/xo-projects: a force-directed graph (click to focus, double-click clusters, re-root on any node), a scrubbable…
- pluginClaude Code plugin for Quirq / xo-space, the local control plane for AI coding agents.
- episodic (memory, project_template)What happened, with context.
- procedural (memory, project_template)How to do recurring things.
- xo-projectThis folder is the golden sample of a project's portable metadata: exactly what .xo/ holds right after XO Space first meets a folder,…
- quirq (plugins)Install this plugin, then ask Codex “Open XO Space.” Codex installs the local server on first use, starts it and opens the Space UI in…
- quirq-state (fixtures)This folder is the sample of what XO Space keeps on one machine, outside every project.
External links
- View space_ui on GitHub, at github.com/
quirq-ai/ xo-space/ space_ui