Skip to content

feat(release): follow core v0.1.3 — pins, version, openrouter, inbox + sign-in copy - #19

Merged
keyurgolani merged 7 commits into
mainfrom
feature-marketing-0-1-3
Jul 31, 2026
Merged

feat(release): follow core v0.1.3 — pins, version, openrouter, inbox + sign-in copy#19
keyurgolani merged 7 commits into
mainfrom
feature-marketing-0-1-3

Conversation

@keyurgolani

Copy link
Copy Markdown
Contributor

Follows the published core v0.1.3 release. The website ships as the version it publishes, so this re-pins the source manifest and bumps package.json to match.

⚠️ Linux visual baselines are not in this PR yet. Only the 7 *-darwin.png halves are regenerated, so CI's linux browser job will fail until the visual-baselines.yml dispatch runs on this branch and its artifact is amended in — the same sequence as the v0.1.2 release (#15).

Pins

Both use the commit each annotated tag dereferences to, not the tag object sha — the classic mistake here, which validate:release-parity and sync:sources both catch:

tag commit
core v0.1.3 bc185c0
apps v0.1.3 79d93b4

validate:release-parity reports website 0.1.3 / core v0.1.3 / apps v0.1.3 with the remote checks live, so the pinned tags verifiably resolve to the pinned commits.

A real gap the build gate caught

openrouter-models was missing from the public app directory. It shipped in apps v0.1.3, and the site's /apps page didn't list it — the build's drift check failed rather than publishing an app catalogue that was quietly missing an app. Added, with copy taken from the app's own manifest. Derived facts move 38 → 39 apps.

Content the release actually changed

  • Product / Automation now says what the inbox became: one place anything waiting on you lands — a loop needing a decision, a proposed skill, an approval you walked away from — plus the per-kind delivery choice (notify / badge / digest / never). It previously described only a "channel inbox", which is no longer what that surface is.
  • Security gains a 7th control for the optional sign-in, written in the page's own boundary-naming voice: off by default, additive, and explicit that the local token stays available so a misconfigured login cannot lock you out. Claiming the login without that caveat would overstate it.

Test change, not a loosening

The app-directory count assertion moves 38 → 39 rather than being relaxed to a range. An exact count is the point — a directory entry disappearing should fail the suite. A comment now records where the number comes from, so the next release knows to move it.

Visual baselines

Seven darwin baselines regenerated under the pinned Node 22.12.0 — exactly the four pages whose content changed (apps, product, security, release), desktop and mobile. Inspected rather than blindly accepted: the security page renders the new control as card 07 and the footer already reads v0.1.3 · verified release.

No threshold, budget, accessibility rule or platform set was weakened.

Gates

mise exec node@22.12.0 -- npm run test:ci green:

  • static validation, marketing manifest (13 shots), 30 visual baselines, build + preview contracts
  • 73 browser tests passed
  • Lighthouse: accessibility 100 on all five pages (performance 99–100)

Screenshots — separate, deliberately

The runbook re-captures every shipping shot per release, against the released tag. Per the owner's decisions this release:

  • the 3 new shots (inbox, notification-rules, artifacts) are placed on /product (not the hero);
  • capture uses a seeded power-user narrative on an isolated screenshot home.

The manifest already records what each shot must depict and why; the capture pass lands as its own change.

…on rules and artifacts

Step 1 of the release-update runbook ("update the manifest FIRST"), which is the
only step that is not gated on a released tag — capture, the source-manifest bump
and re-baselining all require v0.1.3 to exist on both core and apps.

targetRelease -> 0.1.3, and three new shots for surfaces that shipped since 0.1.2
and currently have no marketing presence at all:

- inbox — the flagship change of this cycle. Its scenario deliberately requires a
  MIX of item kinds (a loop decision, a proposed skill, a stale tool approval, a
  keyword-matched message), because a one-kind inbox photographs exactly like the
  old notification list and would tell a reader nothing about what changed.
- notification-rules — the per-kind delivery matrix. Scenario asks for a realistic
  spread across notify/badge/digest/never rather than all-defaults, since the four
  modes are the feature and all-defaults renders as one uniform column.
- artifacts — the library with live previews and collections. Scenario requires a
  mix of real artifact types with previews actually rendering, so it reads as the
  agent's own output rather than stock thumbnails.

All three land as `new-needs-placement`, which is the status the runbook reserves
for a shot awaiting an owner placement decision; assets are captured once placed,
and `validate:marketing-manifest` therefore does not demand the PNGs yet.

The existing 10 shipping shots are unchanged here: the runbook re-captures the
whole shipping set against the released tag, so their assets are refreshed in the
capture pass, not by editing this file.

Verified: `validate:marketing-manifest` reports 13 shots (10 shipping, 3 pending
placement), 10 assets on disk, all referenced; `validate:visual-baselines` reports
30 baselines across darwin and linux; `validate:release-parity:offline` still
reports website 0.1.2 / core v0.1.2 / apps v0.1.2 — the pins move only when the
tags exist, which is what keeps the site from claiming an unreleased version.

Signed-off-by: Keyur Golani <keyurrgolani@gmail.com>
…+ sign-in copy

The website ships as the version it publishes, so this re-pins to the published
v0.1.3 tags and bumps package.json to match. Both pins use the COMMIT each
annotated tag dereferences to (core bc185c0, apps 79d93b4), not the tag object
sha — the classic mistake here, which validate:release-parity and sync:sources
both catch.

Release parity now reports website 0.1.3 / core v0.1.3 / apps v0.1.3 with the
remote checks live, so the pinned tags verifiably resolve to the pinned commits.

Content the release actually changed:

- openrouter-models joins the public app directory. The build's drift gate caught
  this: the app shipped in apps v0.1.3 and the directory didn't list it, which
  would have published an app catalogue that was quietly missing an app. Derived
  facts move 38 -> 39 apps.
- Product/Automation now says what the inbox became: one place anything waiting
  on you lands — a loop needing a decision, a proposed skill, an approval you
  walked away from — plus the per-kind delivery choice. It previously described
  only a "channel inbox", which is no longer what the surface is.
- Security gains a 7th control for the optional sign-in, in the page's own
  boundary-naming voice: off by default, additive, and explicit that the local
  token stays available so a misconfigured login cannot lock you out. Claiming
  the login without that caveat would overstate it.

The app-directory count assertion moves 38 -> 39 rather than being loosened to a
range. An exact count is the point: an entry disappearing should fail the suite.
A comment now records where the number comes from so the next release knows to
move it.

Seven darwin visual baselines regenerated under the pinned Node 22.12.0 —
exactly the four pages whose content changed (apps, product, security, release),
desktop and mobile. Inspected: the security page renders the new control as card
07 and the footer already reads v0.1.3 · verified release. The Linux halves still
need the "Refresh visual baselines" workflow before this can merge.

Gates (mise exec node@22.12.0, mirroring CI): npm run test:ci green — static
validation, marketing manifest (13 shots), 30 visual baselines, build + preview
contracts, 73 browser tests, and Lighthouse at accessibility 100 on all five
pages. No assertion, budget or tolerance was weakened.

Signed-off-by: Keyur Golani <keyurrgolani@gmail.com>
@vercel

vercel Bot commented Jul 31, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
personalclaw Ready Ready Preview Jul 31, 2026 6:49pm

…+ sign-in copy

The website ships as the version it publishes, so this re-pins to the published
v0.1.3 tags and bumps package.json to match. Both pins use the COMMIT each
annotated tag dereferences to (core bc185c0, apps 79d93b4), not the tag object
sha — the classic mistake here, which validate:release-parity and sync:sources
both catch.

Release parity now reports website 0.1.3 / core v0.1.3 / apps v0.1.3 with the
remote checks live, so the pinned tags verifiably resolve to the pinned commits.

Content the release actually changed:

- openrouter-models joins the public app directory. The build's drift gate caught
  this: the app shipped in apps v0.1.3 and the directory didn't list it, which
  would have published an app catalogue that was quietly missing an app. Derived
  facts move 38 -> 39 apps.
- Product/Automation now says what the inbox became: one place anything waiting
  on you lands — a loop needing a decision, a proposed skill, an approval you
  walked away from — plus the per-kind delivery choice. It previously described
  only a "channel inbox", which is no longer what the surface is.
- Security gains a 7th control for the optional sign-in, in the page's own
  boundary-naming voice: off by default, additive, and explicit that the local
  token stays available so a misconfigured login cannot lock you out. Claiming
  the login without that caveat would overstate it.

The app-directory count assertion moves 38 -> 39 rather than being loosened to a
range. An exact count is the point: an entry disappearing should fail the suite.
A comment now records where the number comes from so the next release knows to
move it.

Visual baselines regenerated on BOTH platforms — the 7 darwin halves locally
under the pinned Node 22.12.0, and the 7 linux halves via the visual-baselines.yml
dispatch, downloaded and amended into this commit (the v0.1.2 sequence). Exactly
the four pages whose content changed (apps, product, security, release), desktop
and mobile, and the two platforms changed the SAME seven files — the symmetry is
the check. Inspected rather than accepted blind: the security page renders the new
control as card 07 and the footer reads v0.1.3 · verified release on both.
validate-visual-baselines reports 30 across darwin and linux.

Gates (mise exec node@22.12.0, mirroring CI): npm run test:ci green — static
validation, marketing manifest (13 shots), 30 visual baselines, build + preview
contracts, 73 browser tests, and Lighthouse at accessibility 100 on all five
pages. No assertion, budget or tolerance was weakened.

Signed-off-by: Keyur Golani <keyurrgolani@gmail.com>
….3 build

Step 4 of the release-update runbook, now that v0.1.3 is an actual published tag
(the runbook is explicit that shots depict released state, never a branch).

Captured from a seeded instance on an isolated screenshot home: a coherent
workspace for a team shipping "Sparrow" — 6 knowledge notes that produced 22
entities and 20 relations by themselves, 5 artifacts across 4 kinds in a
collection, an inbox holding all 6 item kinds, real chat sessions with tool use,
and a per-kind notification matrix with a deliberate spread across all four modes.
All 8:5 at 1800x1125, which clears every declared minWidth (chat's 1600 is the
largest), so no responsive variant upscales.

THREE of the ten shipping shots are deliberately NOT promoted, because a
screenshot that undersells the feature is worse than last release's:

- memory — reported 0 episodic / 0 embedded and a near-empty graph. That was the
  downstream effect of the FAISS dimension bug found during this same seeding
  (fixed separately): every episodic write was raising, so there was nothing to
  photograph. Needs a re-seed on the fixed build.
- triggers — one system row on an otherwise empty page. The manifest asks for
  "live automations"; one scheduled digest is not that.
- chat — this is the product-page HERO and the manifest wants a multi-turn thread
  with a visible tool call. The captures either showed a single short turn or, on
  a longer session, an agent explaining it was stuck (with "memory_remember is
  down" — the same FAISS bug in its own words). Not the hero.

The seven promoted shots each show real state: knowledge with its entity/relation
counts, doctor with every subsystem green, loops mid-run, apps/agents/guardrails
populated, and a dashboard whose Suggestions are generated from the seeded data.

Also disabled YOLO mode on the screenshot instance before capturing. It was
inherited from the dev home, and the health rail rendered "YOLO active" — the one
mode this product's own security page argues against advertising.

capture-app-shots.mjs mechanises only the mechanical part (navigate, settle,
dark-theme PNG at the exact ratio); the manifest still carries the reproducibility
and the seeding is still real interaction. Three things it learned the hard way,
each now a comment: the dashboard is HASH-routed (#/route/sub) so path URLs all
render the dashboard; the loop cockpit is #/loops/<id> while #/loop/<id> is the
launcher; and a same-document hash change re-renders from memory, so a shot after
a data change needs a reload.

Four darwin baselines shifted from the new imagery (home, home-loops, product).
The matching linux halves still need the visual-baselines.yml dispatch.

Gates: test:static green (marketing manifest 13 shots / 10 assets, 30 baselines,
release parity 0.1.3, build + preview contracts) - 15/15 visual - 73 browser
tests - Lighthouse accessibility 100 on all five pages.

Signed-off-by: Keyur Golani <keyurrgolani@gmail.com>
…iggers

Completes the v0.1.3 shipping set. These are the three I withheld last pass
because they undersold their features; each is now captured against real state
rather than reworded.

memory — was reporting 0 episodic / 0 embedded with an empty graph. Root cause
was data, not the UI: the on-disk FAISS index was 384-dim while every stored
vector (and the bound qwen3-embedding:0.6b provider) is 1024, so the index had
been built before a model change and never rebuilt. Rebuilt it at the real width
and the same store now reads 72 semantic / 13 episodic / 161 events with a dense
clustered graph and labelled hubs. Worth noting the separate code fix on
bugfix-faiss-dim-mismatch is what stops this recurring silently — this commit
repairs the instance, that one repairs the failure mode.

triggers — was a single system row on an empty page against a manifest asking for
"live automations". Created four real schedules through the API (weekday ingest-lag
check, Friday research digest, nightly backup verify, Monday renewal reminder), so
the page now shows five with human-readable cadences and next-run times. I fired
two to add run history; the agent runs were still pending after four minutes of
real model time, so the shot ships without a last-run column rather than holding
the release for it. The manifest's ask — live automations — is met.

chat — this is the product-page HERO, and the manifest wants a multi-turn thread
with a visible tool call. Earlier attempts gave either a single short turn or a
longer session where the agent explained it was stuck (citing "memory_remember is
down", which was the FAISS bug in its own words). The new thread is a genuine
incident triage: two turns, "Worked through 4 steps · knowledge_search,
knowledge_get" visible, the runbook note cited by id, ordered reasoning about
which check to run first — and it volunteers that the runbook has no branch for
the query layer. That last part is the product being honest on its own hero shot,
which is worth more than a tidier answer.

Two product-page darwin baselines shifted from the new chat imagery. The matching
linux halves still need the visual-baselines.yml dispatch.

Gates: test:ci green — 30 baselines, marketing manifest (13 shots / 10 assets),
release parity 0.1.3, build + preview contracts, 15/15 visual, 73 browser tests,
Lighthouse accessibility 100 on all five pages. Nothing weakened.

Signed-off-by: Keyur Golani <keyurrgolani@gmail.com>
…ots on /product

Closes the manifest: 13 shots, 13 shipping, 0 pending placement. Per the owner's
ruling these go on /product only — the hero rotation is left at its existing set,
so there is no hero layout change and no home-page baseline churn.

Two new sections, both reusing existing layout vocabulary (context-grid and
automation-grid) rather than adding CSS, so they inherit the page's rhythm:

- "Work that waits on you, in one queue" — a two-up pairing the inbox with the
  per-kind delivery rules. They belong together: the inbox is where work lands,
  and the rules decide what interrupts you to say so. Splitting them across the
  page would have told half the story twice.
- "Output you can find again" — artifacts, full width, on the same grid as the
  automation section it follows.

The copy leads with what changed rather than the feature name: work used to arrive
as toasts that scrolled past while a loop stayed stalled, and quietening one noisy
kind used to mean raising the bar for everything. Both are now stated as the
before, so a reader who never saw 0.1.2 still understands why the surface exists.

Assets promoted from the reviewed captures: the inbox showing all six item kinds
with filter chips and deep links, the rules matrix with a deliberate spread across
all four modes (including the keyword condition), and the artifacts library with
live previews rendering and a collection tag.

Baselines regenerated on BOTH platforms: two product-page darwin halves locally
for the added sections, and the five linux halves that the accumulated content
changes had invalidated (home, home-loops, product) via the visual-baselines.yml
dispatch on this branch, downloaded and amended in. The five were predicted from
which darwin baselines had moved since the linux set was last built, and the
dispatch returned exactly those five — validate-visual-baselines reports 30 across
darwin and linux.

Gates: test:ci green — astro check 0 errors, marketing manifest (13/13 shipping),
30 baselines, release parity 0.1.3, build + preview contracts, 15/15 visual, 73
browser tests, and Lighthouse still at accessibility 100 on all five pages
including /product with two new image sections.

Signed-off-by: Keyur Golani <keyurrgolani@gmail.com>
@keyurgolani
keyurgolani force-pushed the feature-marketing-0-1-3 branch from 8954ff6 to bc9825f Compare July 31, 2026 18:48
@keyurgolani
keyurgolani merged commit 934a193 into main Jul 31, 2026
6 checks passed
@keyurgolani
keyurgolani deleted the feature-marketing-0-1-3 branch July 31, 2026 18:54
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