feat(site): announcements page + Introducing Chat mode post - #85
Merged
Conversation
- New `/announcements.html` index that fetches `announcements.json` and renders one card per post (data-driven so future posts only need a JSON entry + per-post HTML). - First post at `/announcements/introducing-chat-mode.html` covering what Chat mode is, what's different from terminal Claude, and how to turn it on. Uses the existing site screenshot as a placeholder with a TODO for a chat-mode-specific shot. - `announcements.json` now carries the post entry with an optional `summary` field (validated `validateEntry` in `announcements-poller` drops unknown fields silently, so this is safe for the desktop-app feed). - HeaderNav gets a new "Announcements" link between Guide and Install. - CLAUDE.md: add a convention reminding future sessions not to put borders/boxes around screenshots on the marketing site. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replaces the single placeholder screenshot with a drag-to-compare slider showing the same Harness session rendered in Terminal mode vs. Chat mode (pixel-aligned, same prompts, same window chrome). Slider is vanilla JS with pointer events for drag, keyboard arrow support on the handle (with role=slider + aria-valuenow updates). Frame is transparent so the page's gradient background flows through; images are trimmed and re-encoded as webp (~90-120KB each) so the page is still fast. Also strips em-dashes and flowery adjective language across the post body, meta description tags, and the JSON summary. Aligns the index subtitle, post intro, and JSON summary on a single line: "A modern chat interface for Claude Code, built into Harness. Same agent, same auth, same MCP setup." Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This was referenced May 25, 2026
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
/announcements.htmlindex that fetchesannouncements.jsonand renders one card per post (data-driven — future posts only need a JSON entry + per-post HTML)./announcements/introducing-chat-mode.htmlcovering what Chat mode is, what's different from terminal Claude, and how to turn it on. Usesscreenshot.pngas a placeholder for now (TODO comment in place for the dedicated shot).announcements.jsonnow ships the first entry with asummaryfield for the index. The desktop-app feed validator (src/main/announcements-poller.ts:validateEntry) drops unknown fields silently, so existing clients keep parsing the feed without changes.guide.html,releases.html, and the two new pages.Test plan
npm run typecheck:site— clean/announcements.html— card renders, date displays in UTC (matches the authoredpublishedAt)/announcements/introducing-chat-mode.html— header, hero, screenshot, body, and CTA rendercurl /announcements.json— valid JSON with the new entryhttps://harness.mikelyons.org/announcements.json)/screenshot.pngreferences in the post + OG tags for a chat-mode-specific shot🤖 Generated with Claude Code