Skip to content

Reframe hal0.dev around the 1.0 release - #120

Merged
thinmintdev merged 2 commits into
masterfrom
release/1.0-site
Aug 29, 2026
Merged

thinmintdev merged 2 commits into
masterfrom
release/1.0-site

Conversation

@thinmintdev

Copy link
Copy Markdown
Contributor

The site still read as a pre-1.0 project. This reframes the landing page around what 1.0 delivers, corrects a set of claims the product does not support, and refreshes every dashboard screenshot from a live box.

Structure

The three-stage roadmap (shipped / in flight / exploring) is gone. In its place: one what 1.0 delivers section — 23 capabilities, counted from the data rather than hardcoded — and a short what's next list of the six items genuinely still ahead. Stability and security each get a highlight card, and the security theme is rebuilt around what hal0 actually does: signed supply chain, contained agent execution, audited tool calls, LAN-scoped by design. The "no bundled auth" fact is unchanged but now reads as a deliberate boundary rather than the whole security story.

Corrected claims

Every one of these was verified against the product repo before changing:

Claim Reality
"The bundled agent runs as its own user" (4 places) hal0-agent@.service:31 is User=hal0 — the same UID as hal0-api. The unit's own comment says it must not be read as isolation. Replaced with the directives actually set.
llama.cpp b9279 Never a pin. The default runner is the hal0-combined ROCmFPX fork image, tag 0826.
FLM v1 v0.9.44. :v1 is a dead tag under _legacy_toolboxes.
ComfyUI v1 No version — digest-pinned third-party image.
Moonshine missing entirely It is the CPU STT engine in 1.0. Added; the stack is six providers, not five.
Vulkan (default) ROCm is the derived default.
"PVE token stored sealed" Plaintext JSON at 0600, never echoed back.
NVIDIA supported Experimental, per the README.
Extensions list names Pi Three extensions ship; Pi is not one.
"No native hal0 streaming orchestrator" WS /v1/realtime ships.
Benchmarks page advertises TTFT, watts, degrees model-roster.ts has none of those fields; the TTFT columns render empty.

Version and channel

Channel copy now names stable as the 1.0 line. The changelog page's release-candidate card is guarded so it only renders when a prerelease actually leads the stable line — without it, GA would render 1.0.0-rc.12 beside 1.0.0 as though the RC were newer.

public/releases/preview.json is added. The proxy falls through to the static backstop on failure and preview had no placeholder, so a proxy failure served an HTML 404 as application/json — the Hal0ai/hal0#1531 failure mode.

Voice

New hero subheading; the "ideally a Ryzen AI Max+ 395" apology is gone. Removed the LLM-marketing tells (three negative-definition headings, the and…and…and polysyndeton, two rhetorical questions, "makes your box sing", "fully AFK", "measured, not claimed", "bets, not promises") and the pre-release hedging on /contributing and in both blog posts, whose caution asides asserted in the present tense that hal0 is pre-1.0.

One real bug fixed along the way: ForumDiscussLink rendered "discuss on the forum" pointing at Discord. It now reads the forum entry from nav.json.

Screenshots

20 surfaces re-captured at 1.0, plus new frames for the model edit drawer, memory bank, benchmarks and runner images. Retina variants now exist for every shot. dashboard-overview was not merely stale — the committed image was the Slots page.

capture-screenshots.mjs gains interaction states, element clips, a visibility guard that refuses to overwrite a good PNG with a blank frame, a per-shot filter, and a skip flag.

Three shots were deliberately held back rather than published: services-page exposes a private companion URL, operator-board has no tasks on the capture box, and the requests widget reads zero on an idle box. memory-view is skipped because its bank list cannot be pinned to one bank and names the operator's own checkouts.

Before merge

  • The captured frames show v1.0.0rc12 in the dashboard chrome. Re-run npm run capture:screenshots against a box on 1.0.0 after the tag if that matters for launch.
  • hal0/CHANGELOG.md still parks the 1.0.0 notes under ## [Unreleased], which parseChangelog filters out. Renaming that heading to ## [1.0.0] — <date> is what makes this site render 1.0.0; the explanatory paragraph beneath it must be deleted in the same commit, or it becomes the published 1.0.0 intro.
  • Re-run npm run sync:changelog and commit src/data/changelog.md as part of the GA cut — the committed snapshot is a build fallback, not a cache.
  • public/first-run-guide/index.html is deployed, unlinked, and stamped v0.9.2 in three places. Restamp or redirect; not touched here.

Build and the full 260-test suite pass.

🤖 Generated with Claude Code

https://claude.ai/code/session_014ey1mRLXy2ECVAiUbTqsuj

The landing page still read as a pre-1.0 project: an eyebrow promising
"1.0 GA next", a "shipping now" hero pinned to rc.3, a three-stage roadmap
sorting work into shipped / in flight / exploring, and channel copy telling
readers the release candidates live on preview. It also carried several claims
the product does not support.

Structure
- Replace the three-stage roadmap with one "what 1.0 delivers" section (23
  capabilities, counted from the data rather than hardcoded) and a short
  "what's next" list of the six items genuinely still ahead. Drops the stage
  columns, the shipped/soon/later ratio bar and the empty-cell state.
- Give stability and security their own highlight cards, and rebuild the
  security theme around what hal0 actually does — signed supply chain,
  contained agent execution, audited tool calls — with the LAN-scoped, no
  bundled auth stance stated as a deliberate boundary rather than an absence.
- Move the two Open WebUI voice items out of the security theme into the
  provider theme, where they belong.

Corrected claims
- "The bundled agent runs as its own user" was false in four places.
  installer/systemd/hal0-agent@.service runs User=hal0, the same UID as
  hal0-api, and the unit's own comment says it must not be read as isolation.
  Replaced with the directives that are actually set: NoNewPrivileges,
  ProtectSystem=strict, a pinned ReadWritePaths set, terminal off by default.
- llama.cpp "b9279" was never a pin. The default runner is the hal0-combined
  ROCmFPX fork image, tagged 0826. FLM is v0.9.44, not v1. ComfyUI has no
  version — its toolbox is a digest-pinned third-party image.
- Moonshine is the CPU STT engine in 1.0 and had no row in the provider table
  at all; added, and the stack is six providers, not five.
- ROCm is the derived default backend, not Vulkan.
- The PVE token is not "sealed" — it is 0600 and never echoed back.
- NVIDIA is experimental per the README, not supported.
- The extensions list still named Pi, which no longer ships.
- /v1/realtime exists; the copy claimed hal0 had no streaming orchestrator.
- The benchmarks page advertised TTFT, watts and degrees. model-roster.ts
  carries none of those fields and the TTFT columns render empty.

Version and channel
- Channel copy across the landing and changelog pages now names stable as the
  1.0 line, with preview and nightly running ahead of it.
- Guard the changelog page's release-candidate card so it only renders when a
  prerelease actually leads the stable line. Without this, GA renders
  1.0.0-rc.12 beside 1.0.0 as though the RC were newer.
- Add public/releases/preview.json. The proxy falls through to the static
  backstop on failure, and preview had no placeholder — so a proxy failure
  served an HTML 404 as application/json, which is the Hal0ai/hal0#1531
  failure mode.

Voice
- New hero subheading, and the "ideally a Ryzen AI Max+ 395" apology is gone.
- Removed the LLM-marketing tells: three negative-definition headings, the
  and...and...and polysyndeton, two rhetorical questions, "makes your box
  sing", "fully AFK", gendered pronouns for a service, "measured, not
  claimed", "bets, not promises".
- Retired the pre-release hedging on /contributing and in both blog posts,
  whose "Pre-release" caution asides asserted hal0 is pre-1.0 in the present
  tense.
- ForumDiscussLink rendered "discuss on the forum" pointing at Discord; it now
  reads the forum entry from nav.json.

Screenshots
- Re-captured 20 surfaces at 1.0 from a live box, plus new frames for the
  model edit drawer, memory bank, benchmarks and runner images. Retina
  variants now exist for every shot.
- dashboard-overview was not stale but wrong: the committed image was the
  Slots page.
- capture-screenshots.mjs now supports interaction states, element clips, a
  visibility guard that refuses to overwrite a good PNG with a blank frame, a
  per-shot filter, and a skip flag for shots we deliberately do not publish
  from this box.
- Held back three shots rather than publish them: services-page exposes a
  private companion URL, operator-board has no tasks, and the requests widget
  reads zero on an idle box. memory-view is skipped because its bank list
  cannot be pinned and names the operator's own checkouts.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014ey1mRLXy2ECVAiUbTqsuj
@vercel

vercel Bot commented Aug 29, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
hal0-web Ready Ready Preview Aug 29, 2026 4:37pm

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Aug 29, 2026

Copy link
Copy Markdown

Deploying hal0-web with  Cloudflare Pages  Cloudflare Pages

Latest commit: de08cc6
Status: ✅  Deploy successful!
Preview URL: https://8af35806.hal0-web.pages.dev
Branch Preview URL: https://release-1-0-site.hal0-web.pages.dev

View logs

…cs path

BenchHighlights linked the headline figures, the top-5 table and the whole
clickable strip at /docs/reference/model-roster-benchmark/. Since the docs
move that path 301s off-site to a forum topic, so the homepage's benchmark
card bounced readers off hal0.dev.

/benchmarks reads the same ROSTER and has existed for a while; the component's
header comment claiming it "isn't built yet" was stale. The MTP stat's source
link on the landing page pointed at the same forum topic and now points at
/benchmarks too, so both routes to the roster stay on-site.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014ey1mRLXy2ECVAiUbTqsuj
@thinmintdev
thinmintdev merged commit 69580bf into master Aug 29, 2026
9 checks passed
@thinmintdev
thinmintdev deleted the release/1.0-site branch August 29, 2026 16:42
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