Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Author, update, validate, and publish-ready Happier release-note story decks. Use when creating curated release notes, analyzing commits/diffs/tags to discover user-facing changes, brainstorming detailed and short release notes, adding story-deck cards, adding release-note images/videos/posters, validating translation keys and asset references, preparing happier-assets upload inputs, or updating onboarding showcase story content.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-15 | ✗→✓ | ▲ Improved | 184% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 239% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 168% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 130% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 163% | 0% |
Create curated, explicit story-deck content for Happier releases with offline-safe lightweight visuals. Bundle image-card artwork and video posters in the app when practical; keep heavy video files and optional remote fallbacks in happier-dev/happier-assets.
apps/ui/release-notes/README.md.apps/ui/release-notes/releases/README.md.apps/ui/sources/changelog/releaseNotes/types.ts and schema limits in storyDeckCardLimits.ts.Use this path only after the user has approved the release-note content or has provided final content explicitly.
v<Constants.expoConfig.version>, for example v0.2.7.apps/ui/release-notes/releases/<releaseId>.json.apps/ui/sources/components/ui/storyDeck/storyDeckBundledAssetRegistry.ts.apps/ui/release-notes/assets/<releaseId>/.apps/ui/sources/text/translations/.apps/ui:bashyarn tsx sources/scripts/parseReleaseNotes.ts
apps/ui/sources/changelog/releaseNotes/manifest.generated.json and asset-index.generated.json.Use this path when the user asks to create/propose release notes from commits, tags, a branch diff, or a specific comparison range.
Prefer an explicit user-provided range. If absent, infer the previous release tag conservatively and state the assumption before proposing content.
Useful commands:
bashgit --no-pager tag --sort=-creatordate git --no-pager log --oneline --decorate <from>..<to> git --no-pager log --format='%H%x09%s' <from>..<to> git --no-pager diff --stat <from>..<to> git --no-pager diff --name-status <from>..<to>
For component tags, inspect the tag naming already present in the repo (cli-v*, ui-v*, v*, etc.) and match the component the user requested.
Commit messages are only the index. For every candidate user-facing cluster, inspect the actual changes:
bashgit --no-pager show --stat --name-status <commit> git --no-pager show --format=fuller --find-renames <commit> -- <relevant-paths> git --no-pager diff <from>..<to> -- <relevant-paths>
Prioritize reading:
apps/ui/sources/app/** and apps/ui/sources/components/**packages/protocol/**apps/cli/**apps/server/**If a commit is ambiguous, inspect neighboring commits in the same cluster, touched tests, changed feature flags, and runtime wiring. Do not surface an item until you can explain what changed for a user/operator and why it matters.
Cluster by user-facing outcome, not by commit count. Good clusters look like:
Exclude or down-rank:
Before writing release JSON, propose content for discussion:
New FeaturesImprovementsBug Fixeslist, image, and video cardsapps/ui/release-notes/assets/<releaseId>/Ask the user to approve or revise the proposed detailed notes and StoryDeck before baking them into files. Do not create or overwrite authored release JSON from commit analysis without user approval, unless the user explicitly asked for direct implementation.
When the user provides rough notes instead of asking for Git analysis:
Match this shape when proposing detailed release notes from Git analysis. This is the quality bar, not a rigid copy template.
markdown## New Features ### Source Control — Pull Requests, Branches & Remote Operations Source control is now interactive inside Happier sessions. Create pull requests, manage branches, push to remotes, and review changed files without switching to another tool. - Pull-request open-or-reuse action available on SCM surfaces; Happier checks for an existing PR before creating a new one - Repository publish controls let users push a branch to a remote or create a new remote repository directly from the session - Selected changed-files review mode in the diff viewer helps focus on just the files that matter in large changesets ### Adaptive New Session Wizard Starting a session is now more context-aware, with model favorites, per-section defaults, and server-aware preflight. - The wizard reads account and server-scoped settings to pre-fill model, workspace path, and backend target - Favorites-first model grouping is available across picker surfaces - Backend targets are preserved across wizard steps ## Improvements ### Desktop Shell Refinements The desktop app gets a more polished shell with safer layout around notched displays and clearer update status placement. - Chrome-safe-area insets keep controls out of the menu-bar notch area - App update status is relocated into the sidebar shell so it no longer takes up space in the main session area ## Bug Fixes **Claude sessions resumed from an assistant UUID instead of a user turn** — Resume logic now starts from the last user turn, avoiding immediate provider errors when a transcript ended on an assistant message. **Windows `HAPPIER_HOME_DIR` paths rejected by config** — Windows-shaped home paths are now accepted throughout CLI and UI path handling.
Detailed notes rules:
## for top-level groups and ### for feature/improvement clusters.**Problem users saw** — Fix and outcome.Windows Support Improvements, Codex, Voice, MCP.After drafting detailed notes, propose a short deck from only the highest-impact outcomes:
View full release notes available.For each proposed card include:
list, image, or video)screenshot, short demo video, diagram, or none)Use this tone: product-led, concrete, user-facing, and confident. These examples capture the desired style.
Feature intro examples:
Happier ships a live ambient companion — Pets — that sits in your macOS menu-bar tray and on mobile, showing real-time activity at a glance.A new compact session chrome designed for monitoring long-running agent tasks from your phone without the full compose UI in the way.Agents that generate images, diagrams, or other file artifacts now have a first-class pipeline from generation to your screen.Source control is now interactive inside Happier sessions. Create pull requests, manage branches, push to remotes, and review changed files without switching tools.The transcript renderer has been rebuilt with a streaming markdown pipeline, richer formatting, and smooth live updates.Starting a session is now a context-aware flow with model favorites, per-section defaults, and server-aware preflight.Voice sessions now run on the latest real-time SDK with improved stability and lower connection latency.Happier on Windows is faster to start, handles more installation edge cases, and correctly resolves Windows-specific paths throughout.Feature bullet examples:
Full companion UI with animated desktop overlay and shared activity tray wired across desktop and native mobile.Generated media is ingested by the agent runtime, transferred via the chunked relay, and rendered inline in the session transcript.Pull-request open-or-reuse action checks for an existing PR on the branch before creating a new one.Model selection popover shows favorites first across picker surfaces.Chrome-safe-area insets keep sidebar controls from underlapping the menu bar on notched Macs.Packaged binary is preferred over Node.js for session startup on Windows, reducing cold-start latency.Bug-fix examples:
**Subagent completion triggered a spurious ready notification** — Subagent completions are now excluded from the ready-notification path.**Claude sessions resumed from an assistant UUID instead of a user turn** — Resume logic now starts from the last user turn.**Terminal connections dropped across server switches** — Terminal connections now survive active-server changes.**New-session pickers opened outside their modal scope** — Pickers are now scoped to the modal boundary so they no longer appear behind overlays.**Windows scheduled task state read incorrectly** — State is now read from the correct field so running tasks no longer appear stopped.Wording rules:
now for direct capability changes: Sessions now..., The wizard now..., Happier now....ships, shows, renders, preserves, survives, checks, syncs, stabilizes.wired protocol field X into users can now choose Y when possible.Use list, image, and video cards in a deliberate sequence. Prefer a list card first, then media cards for the most visual changes, then another short list only if needed.
List cards:
Image cards:
altKey.media.localAssetKey for offline-safe bundled artwork.media.key only when a remote fallback is useful.media.mobile or media.desktop only when the crop/artwork should differ by surface. Base media remains the fallback..webp for screenshots and illustrations.Video cards:
media.key as the remote video file.media.localPosterAssetKey for the bundled poster image.media.posterKey only when a remote poster fallback is useful.media.mobile or media.desktop to override the video and/or poster per surface. A video override keeps the base poster unless a poster override is also provided.json{ "releaseId": "v0.2.7", "versionLabel": "v0.2.7", "publishedAt": "2026-05-09T00:00:00.000Z", "titleKey": "releaseNotes.v0_2_7.title", "subtitleKey": "releaseNotes.v0_2_7.subtitle", "cards": [ { "kind": "list", "titleKey": "releaseNotes.v0_2_7.cards.overview.title", "rows": [ { "iconId": "sparkles", "titleKey": "releaseNotes.v0_2_7.cards.overview.rows.one.title", "bodyKey": "releaseNotes.v0_2_7.cards.overview.rows.one.body" } ] }, { "kind": "image", "titleKey": "releaseNotes.v0_2_7.cards.hero.title", "bodyKey": "releaseNotes.v0_2_7.cards.hero.body", "media": { "localAssetKey": "v0_2_7.hero", "key": "hero-fallback.webp", "altKey": "releaseNotes.v0_2_7.cards.hero.alt", "desktop": { "localAssetKey": "v0_2_7.heroWide" } } }, { "kind": "video", "titleKey": "releaseNotes.v0_2_7.cards.demo.title", "bodyKey": "releaseNotes.v0_2_7.cards.demo.body", "media": { "key": "demo.mp4", "localPosterAssetKey": "v0_2_7.demoPoster", "posterKey": "demo-poster-fallback.webp", "accessibilityLabelKey": "releaseNotes.v0_2_7.cards.demo.accessibilityLabel", "desktop": { "key": "demo-wide.mp4", "posterKey": "demo-wide-poster.webp" } } } ], "actions": { "viewFullReleaseNotes": true } }
Run targeted validation after authoring:
bashcd apps/ui yarn tsx sources/scripts/parseReleaseNotes.ts yarn vitest run --config vitest.config.ts sources/changelog/releaseNotes/schema.test.ts sources/scripts/parseReleaseNotes.test.ts
For UI behavior changes, also run the relevant story-deck tests and yarn typecheck.
Do not upload release-note assets or modify GitHub releases unless the user explicitly asks for that external side effect. The normal release pipeline uploads assets to happier-dev/happier-assets under the rolling release-notes tag.
For first-open onboarding story content, edit apps/ui/sources/onboarding/showcase/manifest.ts and the same translation files. It uses the same StoryDeck card model, but ships bundled with the app instead of coming from per-release JSON.
Other measured skills in the registry, with their headline benchmark lift.