Skip to content

docs: turn the docs home into task paths, fix the Docus 5 config - #75

Merged
RedStar071 merged 23 commits into
mainfrom
feat/docs-polish
Oct 20, 2026
Merged

RedStar071 merged 23 commits into
mainfrom
feat/docs-polish

Conversation

@RedStar071

@RedStar071 RedStar071 commented Oct 18, 2026 •

Copy link
Copy Markdown
Member

Summary

Related to #5. A presentation pass on the documentation site, on top of #71.

  • The home is now a docs home instead of a second landing page: one line on starting with a read-only review, then direct paths to installation, self-hosting, the CLI and the API, and a second row for repository configuration, safety and architecture.
  • app.config.ts moves to the Docus 5 shape (header, seo and github at the top level). Before, Docus fell back to the package name @code-zero/docs for the title and built edit links without the apps/docs root.
  • Reading tweaks through Nuxt UI's own slots: longer line height in prose, code blocks that scroll instead of wrapping and stay inside the article, square corners on the previous/next links, and 44 px header controls and sidebar links on small screens.

Why

The old home repeated the marketing pitch, so someone looking for the install command had to scroll past a feature catalogue. The broken site title and edit links were a Docus 5 config mismatch.

Verification

  • aube run check:repo
  • aube run lint:ci
  • aube run typecheck
  • aube test
  • aube run build

Safety and compatibility

  • I added or updated deterministic tests for changed behavior.
  • I preserved observe mode as read-only, or explained the policy change above.
  • Runtime commands and target-repository writes remain inside the runner boundary.
  • I did not expose secrets, tokens, personal data, or untrusted output in logs.
  • I updated documentation and Agent Skills when workflows or boundaries changed.

Docs site only. The canonical references in docs/*.md are untouched.

Agent context

  • Agent/tools used: Codex (GPT) and Claude Code (Claude Opus 5.5) in T3 Code, with a review subagent.
  • What the agent did, and what you changed or verified yourself: the agents rewrote the home and the config, a review pass caught a sticky-anchor regression and some CLI copy that did not match the base branch, and the result was built and checked in Chromium. I asked for a dedicated docs pass.

Reviewer notes

  • An earlier version added a scroll offset to headings; it hid titles under the mobile table of contents, so it was removed in favour of the one Docus already sets.

🤖 AI disclosure: Wolfstar Agent Kit modified this description. My AI open-source policy.

RetriggerView in GreptileConfidence Score: 5/5

No identified issues block merging this documentation-only change.

Reviews (4) · Last reviewed commit: "Merge branch 'feat/v2-foundation' into f..." · Reviewed by Greptile

Diagnoses the current dashboard, auth, source-control and deployment
problems, proposes the supastarter-style workspace layout, and records
the maintainer's answers on layout, ESM, licensing, billing, forges and
deployment targets.
Pins Better Auth, nuxt-better-auth, Vue, UnoCSS, Vitest, Vue testing,
Postgres/Drizzle, Stripe, taste, modern CSS, code review, GitHub Actions,
Dockerfile, Cloudflare and anti-slop skills to their source commits.
agent, runner, models, config and shared now live in packages/core/*.
Their npm names are unchanged, so imports stay identical; only relative
tooling paths, TypeScript project references, the workspace globs and
the documentation that names their directories change.
The deployable app becomes @code-zero/web in apps/web, matching the
v2 layout. Paths, the Turborepo task key, the Dockerfile, the CD
workflow, the Vercel build command, i18n tooling globs and the docs
follow. The September dashboard plan moves to docs/plans unchanged.
The shared tsdown configuration drops the CommonJS output and validates
with attw's esm-only profile. Package exports keep a single types and
default condition. forges, the next source-control client, ships no CJS
build, and every consumer is a Node 24 process or a Vite/Nitro build.
packages/ui owns the colour tokens, focus and accessibility media
queries (tokens.css), the brand theme, the RTL and a11y dev presets and a
defineCodeZeroUno factory. apps/web and apps/marketing drop their copies
and keep only their density shortcuts and page backgrounds. DESIGN.md
records the rules a UI change must respect.

The marketing site renders identically in both schemes; the dashboard
gains the reduced-motion rule the marketing site already had.
Four edges in the better-auth@1.6.26 subgraph named peer-qualified ids
truncated one level (prisma@7.9.1 instead of
prisma@7.9.1(better-sqlite3@12.11.1)), and one unctx edge named an
unplugin variant with no snapshot. aube hashes the id as written, so a
clean aube ci linked node_modules/.aube/@better-auth+drizzle-adapter*
/node_modules/drizzle-orm (and unctx's unplugin) at virtual-store
directories it never creates, and the web Nitro build failed with ENOENT.

Repointed the five edges at the snapshots already in the lockfile. A
clean aube ci now reproduces the file byte for byte and leaves no
dangling links.
@nuxt/test-utils boots the whole app in a beforeAll hook before the
first spec of each worker. On a cold cache or a loaded machine that boot
outlasts Vitest's default 10 s hook timeout and fails whole files before
any assertion runs. Raise hookTimeout to 60 s for the nuxt projects of
apps/web and apps/marketing.
packages/forge (@code-zero/forge) builds the source-control boundary on
the forges library for GitHub, GitLab, Gitea, Forgejo, Bitbucket Cloud
and Azure DevOps: connections and a registry, FORGES_* environment
parsing, signed webhook ingestion into review and issue events, open
change-request discovery, status publication with explicit degradation,
progress, evidence and issue-validation comments, and issue-to-PR.

Every delivery is untrusted: bad signatures and malformed payloads are
typed rejections, library errors are redacted against the connection's
credentials, and issue events start nothing unless policy opts in.
Tests run against forges' in-memory fake and signed fixtures, with no
network. Nothing imports the package yet; packages/source-control stays
until packages/api and apps/web are rewired.
The github-actions-generator skill vendors sample action.yml templates
under .agents/skills. zizmor scanned the whole checkout and failed the
pull request on template-injection findings in that sample code, which
nothing ever runs. Point it at .github, where every workflow and action
of this repository lives.
connectionsFromEnvironment() builds factories from an arbitrary
environment object, but the registry only recorded credentials for
connections it built itself. When that object was not process.env, a
token matching no known secret pattern passed redaction untouched into
outgoing comments and ForgeRequestError messages.

Prepared connections now carry the credential values of their variable
set, PEM keys in both escaped and real-newline form, and the registry
registers them like any other connection. Regression tests use an opaque
token absent from process.env and fail without the fix.
The home repeated the marketing pitch. It now opens on starting with a
read-only review and links straight to installation, self-hosting, the
CLI and the API, then to repository configuration, safety and
architecture.

app.config.ts moves to the Docus 5 shape: header, seo and github at the
top level. Before, the site title fell back to the package name and
edit links missed the apps/docs root. Prose gets a longer line height,
code blocks scroll inside the article, previous/next links keep square
corners, and header controls and sidebar links are 44 px on small
screens.
@coldtea-pr-lens

Copy link
Copy Markdown

Note

The title starts with docs:, so PR Lens left this pull request undrawn. Comment @pr-lens draw to draw it

github.comment.notice: false in .github/pr-lens.yml turns this note off

@vercel

vercel Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
agent-zero-docs Ready Ready Preview Oct 18, 2026 8:53pm UTC
1 Skipped Deployment
Project Deployment Actions Updated
agent-zero-marketing Skipped Skipped Oct 18, 2026 8:53pm UTC

greptile-apps[bot]
greptile-apps Bot previously approved these changes Oct 18, 2026
@RedStar071
RedStar071 added this pull request to stack #76 October 18, 2026 21:44
greptile-apps[bot]
greptile-apps Bot previously approved these changes Oct 19, 2026
…ceiling

With `execution.max_network` below `full` and no deployment sandbox, a repository choosing
`isolation: local` ran on the host network: `LocalRunner` carries the policy without enforcing
it, and a hosted provider may hand back a runner wider than the lease asked for. The ceiling
was a label, not a limit.

`runTask` now checks the runner it actually built: under a ceiling below `full` the run executes
only when the runner is isolated and its network is no wider than the run's effective policy (the
repository's own, narrowed to the ceiling), so a run that must have `none` gets exactly `none`.
A RunnerPool lease is released before refusing, and the task is recorded as `failed` with the
redacted reason, on the same terms as `ISOLATION_UNAVAILABLE`.

The settings page hint (EN/IT) and the deployment-settings guide now say that a ceiling below
Full needs the container sandbox or a hosted sandbox, and that local runs are refused.
`AUTH_ENABLE_MAGIC_LINK=true` or `AUTH_ENABLE_TWO_FACTOR_EMAIL_OTP=true` stopped the dashboard at
startup: `packages/auth` refuses either flag without its delivery callback, and the app supplied
neither `sendMagicLinkEmail` nor `sendTwoFactorOtpEmail`.

`packages/mail` gains two templates, `magicLink` (the sign-in link, named to no account) and
`twoFactorOtp` (the code printed once as text, never inside a link), registered beside the
existing four with the compiled artifact re-rendered. The app's delivery bindings move out of
`server/auth.config.ts` into `server/utils/auth-mail.ts`, which now wires every callback a
policy flag can require, so turning on an email sign-in option is a configuration change rather
than a startup error. Neither the link nor the code is ever logged.
A password sign-in on an account with two-factor authentication answered with
`twoFactorRedirect: true` and nothing happened: the sign-in page showed a success it could not
act on, and no page existed to take the code, so the sign-in could never finish.

`app/auth.config.ts` passes `onTwoFactorRedirect` to `twoFactorClient()`, which navigates to the
new `/two-factor` page (auth layout, guest-only like `/login`). The page takes the authenticator
code in a numeric `one-time-code` field, switches to a backup code, and, when `/api/capabilities`
reports mailed codes, sends one and verifies it; it offers to trust the device, refreshes the
session and opens the dashboard on success, keeps a rejected code on the page with a `role="alert"`
message through `useAuthErrorMessage`, and links back to sign-in. Copy is in the `auth` namespace
(EN/IT) with the schema regenerated.
greptile-apps[bot]
greptile-apps Bot previously approved these changes Oct 20, 2026
Signing in to approve a CLI request starts at /login?redirect=/device?…,
but the two-factor hook opened /two-factor without it and a verified code
always went to /. The visitor ended up signed in on the dashboard while
the CLI kept waiting. The hook now carries the return address to the
challenge page, which goes back there after verification and keeps it on
its link back to sign-in. The address comes from the URL, so only a path
on this app is accepted: no //host or /\host, no control characters, and
not another sign-in page.

The method switch also stayed enabled while a code was being checked.
Switching changed which action the page read its pending state from, so
it re-enabled submission and dropped the first check's answer. Pending
now covers all four actions, and switching or mailing a code is disabled
until the running check answers.
Base automatically changed from feat/v2-foundation to main October 20, 2026 12:46
@RedStar071
RedStar071 merged commit 3054a51 into main Oct 20, 2026
16 checks passed
@RedStar071
RedStar071 deleted the feat/docs-polish branch October 20, 2026 12:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant