Skip to content

Commit ff8fb4e

Browse files
authored
docs: rebuild agentsview.io as a tiered marketing and documentation site (#1568)
Rebuilds agentsview.io as a three-tier site: a hand-written marketing landing page at `/`, a nine-stop guided tour at `/guide/`, and the Zensical documentation moved under `/docs/`. The goal is to pitch AgentsView as the system of record for agent session intelligence — an always-on daemon with monitoring, cost accounting, search, recall, and agent-facing interfaces — rather than a desktop session browser. ## What the site does now - **Marketing tier** (`docs/website/`): landing page with a two-column hero (headline, install command, and a framed dashboard screenshot), nine numbered sections (record, observe, account, understand, remember, feed back, share, own, start), 56 agent-harness chips, live GitHub stars/version via the API with a cached fallback, and a lightbox for screenshots. `/guide/` walks the session intelligence loop across nine stops. Dark blue theme with vendored Inter and JetBrains Mono (OFL licenses included), a custom AV favicon, and a 404 page. - **Docs tier**: Zensical builds under `/docs/` via `site_url`, with `docs/index.md` rewritten as a docs landing page (mental model, architecture, privacy). All 28 doc pages' absolute links are rewritten with the `/docs/` prefix. The `docs/agents/` contributor guides are no longer published (they were accidentally reachable before). - **Machine-readable tier**: every route ships a Markdown twin (`/index.md`, `/guide.md`, `/docs/<page>.md`) advertised by a `rel="alternate" type="text/markdown"` head link and footer links, and `/llms.txt` lists the full twin set. ## Redirects and contracts `docs/vercel.json` carries 61 permanent redirects covering every legacy route: 28 old root pages (both `/<page>/` and `/<page>.md`) to their `/docs/` locations, asset wildcards, and the pre-existing `/postgresql/`, `/insights/`, and `/architecture/` aliases. The two temporary install-script redirects are unchanged. The validators enforce the new structure: `check_built_site.py` verifies every route's Markdown twin, alternate link, metadata, and bidirectional `llms.txt` coverage; `check_vercel_redirects.py` now also rejects unexpected redirect entries; `scripts/docs_assets_test.go` covers the assembled three-tier output, including the sitemap shipping at both `/sitemap.xml` and `/docs/sitemap.xml` (Zensical's instant navigation fetches the latter and silently degrades if it 404s). ## Tradeoffs and limits - The marketing tier is plain HTML/CSS/JS assembled by `zensical-docs.sh` — no new build toolchain or Node dependency. - Vercel configuration is untouched: the root directory stays `docs/`, output stays `site/`, and deploys remain manual via `make docs-deploy`. - The docs tier still uses the Zensical default favicon; only the marketing tier has the AV mark. ## Where to look - `docs/zensical-docs.sh` — the site assembly: docs build into `site/docs/`, then the website tier, `llms.txt`, and sitemap copies are placed at the root. - `docs/website/index.html` and `docs/website/styles/site.css` — the landing page and theme. - `docs/scripts/check_built_site.py` — the contracts that keep the twin/llms.txt/redirect structure honest. Preview locally with `make docs-build && make docs-preview`. Co-authored-by: Wes McKinney <wesm@users.noreply.github.com>
1 parent f64e22e commit ff8fb4e

55 files changed

Lines changed: 3399 additions & 854 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎Makefile‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -552,6 +552,9 @@ docs-build:
552552
docs-serve:
553553
cd docs && bash assets/hydrate-assets.sh && uv run bash ./zensical-docs.sh serve
554554

555+
docs-preview:
556+
python3 -m http.server 8000 --directory docs/site
557+
555558
docs-check:
556559
bash scripts/check-docs.sh
557560

‎docs/README.md‎

Lines changed: 37 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,38 @@
11
# AgentsView docs maintainer guide
22

3-
This directory contains the Zensical source for <https://agentsview.io>. The
4-
docs source lives on `main`; image media lives on orphan asset branches so
5-
normal clones do not pull screenshots and PNGs into the main history.
3+
This directory contains the source for <https://agentsview.io>: a hand-written
4+
marketing tier (`/` and `/guide/`) plus the Zensical documentation tier under
5+
`/docs/`. The source lives on `main`; image media lives on orphan asset branches
6+
so normal clones do not pull screenshots and PNGs into the main history.
7+
8+
## Site structure
9+
10+
- `/` and `/guide/`: static marketing pages from `website/`.
11+
- `/docs/**`: Zensical-rendered documentation from the top-level `*.md` pages.
12+
- Every published page has a raw Markdown twin: `/index.md`, `/guide.md`,
13+
`/docs/index.md`, and `/docs/<page>.md` beside each `/docs/<page>/` route.
14+
- `/llms.txt`: hand-maintained machine-readable index of the Markdown twins. Add
15+
every new public page to `zensical.toml`, `llms.txt`, and
16+
`scripts/check_built_site.py` (`DOCS_PAGES`), plus the redirect tables if it
17+
replaces an old URL.
18+
- Legacy root docs URLs (`/quickstart/`, `/usage.md`, `/assets/...`) redirect
19+
permanently to their `/docs/` equivalents via `vercel.json`.
620

721
## Layout
822

9-
- `*.md` and related public subdirectories: public docs source.
10-
- `internal/` and `superpowers/`: maintainer references excluded from the
11-
published site.
23+
- `*.md`: public docs source, rendered under `/docs/`.
24+
- `website/`: marketing tier (HTML, CSS, fonts, Markdown twins) copied to the
25+
site root at build time.
26+
- `llms.txt`: machine-readable page index published at the site root.
27+
- `agents/`, `internal/`, and `superpowers/`: maintainer references excluded
28+
from the published site.
1229
- `zensical.toml`: Zensical site configuration and navigation.
1330
- `pyproject.toml` and `uv.lock`: pinned docs toolchain.
14-
- `vercel.json` and `vercel-build.sh`: Vercel project configuration.
31+
- `vercel.json` and `vercel-build.sh`: Vercel project configuration, including
32+
the legacy-URL redirect table.
1533
- `zensical-docs.sh`: builds from a temporary public-docs copy so maintainer
16-
files are excluded from the published site.
34+
files are excluded, then assembles the website tier, Markdown twins,
35+
`llms.txt`, and root sitemap into `site/`.
1736
- `assets/hydrate-assets.sh`: hydrates ignored local assets from orphan
1837
branches.
1938
- `assets/update-static-assets-branch.sh`: updates curated static assets.
@@ -52,12 +71,21 @@ Hydrate assets and build:
5271
AGENTSVIEW_DOCS_USE_LOCAL_ASSET_BRANCHES=1 make docs-build
5372
```
5473

55-
Preview locally:
74+
Preview the docs tier with live reload (absolute `/docs/` and marketing links do
75+
not resolve in this mode):
5676

5777
```bash
5878
AGENTSVIEW_DOCS_USE_LOCAL_ASSET_BRANCHES=1 make docs-serve
5979
```
6080

81+
Preview the full assembled site (marketing tier, `/docs/`, Markdown twins) after
82+
a build:
83+
84+
```bash
85+
AGENTSVIEW_DOCS_USE_LOCAL_ASSET_BRANCHES=1 make docs-build
86+
make docs-preview
87+
```
88+
6189
Run docs validation:
6290

6391
```bash

‎docs/activity.md‎

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ actually active, how much work overlapped, and which projects, models, agents,
88
machines, and sessions contributed to a time window. Open it from the
99
**Activity** button in the header or directly at `/activity`.
1010

11-
![Default daily Activity view](/assets/generated/screenshots/activity-page.png)
11+
![Default daily Activity view](/docs/assets/generated/screenshots/activity-page.png)
1212

1313
The report is built from timestamped session activity and usage rows. It
1414
includes one-shot and automated sessions by default, then lets you narrow the
@@ -22,7 +22,7 @@ adopts and publishes shared ranges when **Settings > Date ranges > Link date
2222
ranges across pages** is enabled; a shared range wider than Activity can
2323
represent is not adopted.
2424

25-
![Weekly Activity view](/assets/generated/screenshots/activity-week.png)
25+
![Weekly Activity view](/docs/assets/generated/screenshots/activity-week.png)
2626

2727
Additional filters scope the report by:
2828

@@ -64,7 +64,7 @@ The **Concurrency** chart shows active agents over the selected range. Blue
6464
segments represent interactive sessions, orange segments represent automated
6565
sessions, and the strip below the chart marks active versus idle buckets.
6666

67-
![Weekly Activity concurrency chart](/assets/generated/screenshots/activity-concurrency.png)
67+
![Weekly Activity concurrency chart](/docs/assets/generated/screenshots/activity-concurrency.png)
6868

6969
Hover a bucket to see its time range, peak agent count, agent-minutes, output
7070
tokens, and cost. The **Overlay** control can draw an additional **Tokens** or
@@ -82,7 +82,7 @@ The **Sessions** table lists every session that contributed to the report. Rows
8282
include the session title, model, project, agent, agent-minutes, cost, and
8383
active window.
8484

85-
![Weekly Activity sessions table](/assets/generated/screenshots/activity-sessions.png)
85+
![Weekly Activity sessions table](/docs/assets/generated/screenshots/activity-sessions.png)
8686

8787
Click a session title to open that session in the transcript viewer. Column
8888
headers for **Project**, **Agent**, **Agent-min**, **Cost**, and **Window** are
@@ -102,7 +102,7 @@ The **Breakdown** panel ranks activity by **Project**, **Model**, and **Agent**.
102102
Toggle between **Agent-min** and **Cost** to change the metric, and use the
103103
stacked bars to compare interactive and automated contributions.
104104

105-
![Weekly Activity breakdowns](/assets/generated/screenshots/activity-breakdowns.png)
105+
![Weekly Activity breakdowns](/docs/assets/generated/screenshots/activity-breakdowns.png)
106106

107107
Rows with no value for the selected metric are omitted from that view, so
108108
cost-only untimed sessions appear in **Cost** but not **Agent-min**.
@@ -117,10 +117,10 @@ model charges, but they still sum to the displayed total.
117117

118118
Worktree layouts the parser does not recognize can surface a branch or worktree
119119
directory name as a project. Each row in the **Project** breakdown links to that
120-
project on the [Data page](/data/), where the mapping editor lists the project's
120+
project on the [Data page](/docs/data/), where the mapping editor lists the project's
121121
observed session folders, previews the full-archive impact of a folder-path →
122122
project rule, and applies a
123-
[worktree project mapping](/configuration/#worktree-project-mappings) rule in
123+
[worktree project mapping](/docs/configuration/#worktree-project-mappings) rule in
124124
one atomic step. Cleaning always evaluates the complete archive; the current
125125
Activity range and filters do not carry over.
126126

@@ -131,10 +131,10 @@ At the bottom of the page, **Activity Insight** shows an existing global
131131
the server is writable, generate a new insight from the same panel using Claude,
132132
Codex, Copilot, Gemini, or Kiro.
133133

134-
![Weekly Activity Insight panel](/assets/generated/screenshots/activity-insight.png)
134+
![Weekly Activity Insight panel](/docs/assets/generated/screenshots/activity-insight.png)
135135

136136
The **Open in Generated insights** link opens the
137-
[Generated insights](/recall/?tab=generated) tab prefilled with the same range.
137+
[Generated insights](/docs/recall/?tab=generated) tab prefilled with the same range.
138138
Generation is disabled when the connected server cannot run an agent CLI.
139139

140140
## CLI And API
@@ -167,8 +167,8 @@ The same paging flags work with `--offline`; the signed direct-mode cursor
167167
carries the original resolved range and filters, then deterministically
168168
recomputes that generation before selecting the next page.
169169

170-
See [CLI Reference](/commands/#agentsview-activity-report) and
171-
[Session API](/session-api/#activity-report) for flags and response shape.
170+
See [CLI Reference](/docs/commands/#agentsview-activity-report) and
171+
[Session API](/docs/session-api/#activity-report) for flags and response shape.
172172

173173
### JSON Contract
174174

@@ -247,8 +247,8 @@ row contains an opaque `project_key`. `projects` is keyed by that value and
247247
carries the presentation-only `display_label`; unknown project identity is
248248
represented by an explicit `resolution` with `identity` omitted.
249249

250-
See [Token Usage & Costs](/token-usage/#json-contract) for the shared bump
251-
rules, [Pricing Provenance](/token-usage/#pricing-provenance) for pricing digest
250+
See [Token Usage & Costs](/docs/token-usage/#json-contract) for the shared bump
251+
rules, [Pricing Provenance](/docs/token-usage/#pricing-provenance) for pricing digest
252252
and `cost_source` semantics, and
253-
[Project Identity](/token-usage/#project-identity) for key derivation and
253+
[Project Identity](/docs/token-usage/#project-identity) for key derivation and
254254
redaction notes.

0 commit comments

Comments
 (0)