blog: add oh.computer blog with Introducing post and reviewed articles - #188
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Adds /blog with design-kit v0.17.0 article components and web-discovery v0.8.0 discovery: typed admission records validated in tests, Hraness byline and provenance note on every post, BlogPosting and Blog JSON-LD, an Atom feed at /blog/feed.xml, per-post OG images, and a generated sitemap with lastmod for indexable posts only. built-on-oh is quarantined (noindex, out of sitemap, feed, index, and llms.txt). Links the blog from the homepage nav, spec header, footer, and llms.txt, and adds the canonical hraness-articles block to AGENTS.md. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Introducing Oh and Built on Oh linked how-sponge-uses-oh and how-wordcell-uses-oh, which both return 404. The drafts say to link them only once they are live, and until then to link each product's home page. The blog link test no longer allows those URLs. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The root check runs site/tests/source.test.ts without installing site dependencies, so importing app/sitemap.ts failed to resolve @hraness/web-discovery in CI. The source test now reads the sitemap source, and the generated-sitemap checks for /spec and the llms.txt blog URLs move to tests/blog.test.tsx. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
0thernet
force-pushed
the
claude/seo-blog-20260924
branch
from
September 25, 2026 02:25
3a4c528 to
75c8ab1
Compare
0thernet
added a commit
that referenced
this pull request
Sep 25, 2026
Applies the canonical Hraness product-messaging record for `oh` (jungle
`a9988b903`, reviewedOn 2026-09-24) to this repository's copy surfaces.
## Surfaces changed
- `site/app/layout.tsx`: `<title>` = `Oh` + tagline ("Oh: Agent memory
that shows its work."), meta/OG/Twitter description = canonical `meta`,
OG image alt to match.
- `site/app/opengraph-image.tsx`: share card is `Oh` (eyebrow) over the
tagline; description = `meta`; alt matches the page title.
- `site/app/page.tsx`: hero eyebrow = category ("Agent memory
framework"), heading = `hero.heading`, summary = `hero.summary`, actions
= `hero.primaryAction`/`hero.secondaryAction` ("Install Oh" / "See the
memory model" → `#model`), hero example line = `short`, JSON-LD
description = `meta`, and the "Who made it?" answer now uses the org's
own public line ("Hraness builds tools for agents and humans.") instead
of the drifted org blurb.
- `site/app/site-footer.tsx`: content footer blurb = `meta` (was "for
researchers and the agents working beside them").
- `site/public/llms.txt`: summary = `meta`; adds the `long` tier as the
introduction.
- `site/app/blog/articles.ts`: `ohSearchSite` title/description and the
`introducing-oh` dek aligned to the canonical lines (the dek is now
`meta`).
- `site/app/blog/content/introducing-oh.tsx`: dropped the sentence
citing "the design every Hraness project shares", which this change
removes from the README.
- `site/app/benchmark-comparison.tsx`: translated internal vocabulary
("passed the specified numerical development gate" → "met the specified
numerical target for this development check"); no claim or number
changed.
- `README.md`: H1 = `# Oh`; first paragraph = `medium`; status line from
the release record (v0.12.0); dropped the overstated "the design every
Hraness project shares" claim flagged in the audit's facts_to_verify.
- `package.json`: description = `meta`; added `agent-memory`, `memory`,
`ai-agents`, `provenance`, `typescript` keywords.
- `src/cli.ts`: help banner reads `oh <version> · Agent memory that
shows its work.`; `src/cli-intro.ts`: TTY tagline = tagline (replaces
"Local memory for your agents.").
- `skills/oh/SKILL.md` + `skills/oh/agents/openai.yaml`:
description/short_description/default_prompt aligned to the canonical
memory positioning.
- `src/support-profile.ts`: value proposition now names Oh as the
open-source memory framework for agents.
- `dist/cli.js`, `dist/support-profile.d.ts`: regenerated through
`scripts/build-cli.ts` and `build:types` (the only affected artifacts;
the full `bun run build` reproduces the rest of `dist/`
byte-identically).
- Copy-pinned tests updated to the canonical lines
(`tests/public-surface.test.ts`, `tests/marketing-surface.test.ts`,
`tests/site-surface.test.ts`, `site/tests/home.test.tsx`,
`site/tests/source.test.ts`).
## Open-PR overlap
PR #188 (seo-blog) merged into main (`a857e4a`) before this branch was
cut, so its blog surfaces are included here: the search-site
title/description and `introducing-oh` dek are brought onto the
canonical lines in this same change. No overlap remains outstanding.
## Superseded authored lines replaced
- "Oh: memory your agents can trace" (title, OG alt, README H1 em-dash
line)
- "Memory your agents can trace" (hero heading, OG title)
- "Local memory for your agents." (CLI TTY intro)
- The two hand-typed "open-source memory framework for agents:
source-backed records, local retrieval, graph proofs…" description
variants (layout, OG image, llms.txt, search site, package.json)
- "Oh is open source for researchers and the agents working beside
them." (content footer)
- "Operate local agentic research records" (skill UI short description)
## Gate
Full `bun run check` steps run locally on this tree:
`check:cost-surfaces`, `rust:build:artifacts`, `typecheck`,
`typecheck:scripts`, `check:effect`, `bun run test` (2572 tests, 0
fail), `bun run build` (reproducible `dist/`), `test:types:node`,
`test:node`, `test:node-projection`, `test:research-package`,
`test:package`. Site: `bun run test` (40 tests, 0 fail), `lint`,
`typecheck`.
Co-authored-by: 0thernet <894119+0thernet@users.noreply.github.com>
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
/blog(index),/blog/[slug](3 posts, statically prerendered), per-post OG images, and an Atom feed at/blog/feed.xml, built with design-kit v0.17.0 (MarketingArticle,ArticleByline,ArticleProvenance,ArticleSources,ArticleIndex,assertArticleAdmissions) and web-discovery v0.8.0 (createAtomFeed,articleJsonLdBlogPosting,blogJsonLd,createBlogSitemapPaths).site/app/blog/admissions.ts. The review is a disclosed AI editorial review (reviewerType: "ai",humanReview: null). Every post shows the byline "Hraness" and the note "Drafted with AI from the source code and reviewed by Claude Opus 5.5 (claude-opus-5-5) editorial review."/blog/introducing-ohand/blog/oh-rust-typescript-parity./blog/built-on-ohis noindex and stays out of the sitemap, feed, index and llms.txt. Its draft was BLOCKED, the portfolio does not register its relations yet, and the linked consumer posts are not live.public/sitemap.xmlis replaced by a generatedapp/sitemap.ts. Blog entries carry lastmod.llms.txt. The canonical hraness-articles block is added to AGENTS.md. STYLE.md already carries the matching rule, so it is unchanged.For reviewers
site/tests/source.test.tsremoves "sponge" from the prohibited public identifiers. The README already names Sponge publicly as a product that builds on Oh, and the posts link to sponge.computer. Please confirm.relatedFor("oh-computer")returns[]in the v0.17.0 portfolio. The related-products block renders only when relations exist.Checks
site:bun run test40 pass;bun run lint0 errors (26 warnings, all in the existingpublic/theme-bootstrap.js);bun run typecheckclean;bun run buildpasses, and the postbuild runtime tests pass 2/2, including new built-site blog checks for robots, feed, sitemap, OG image and the 404 for an unknown slug.bun run test:browserfails locally. A cleanorigin/mainworktree fails the same flaky way: ascrollY === 0timeout in one run, and the "SDK results and limitations" focus-obscured assertion in another. These failures were already present and are not caused by this branch.bun run checkto CI.🤖 Generated with Claude Code