|
7 | 7 | - Use an em dash (`—`), not a hyphen |
8 | 8 | - Name 2-3 headline features, joined by commas and `&` |
9 | 9 | - Examples: |
| 10 | + - `v0.21.0 — Virtualized Chat, Mermaid Diagrams & Deep Folder Tagging` |
10 | 11 | - `v0.15.0 — Slash Commands, Tool Grouping & Project Files` |
11 | 12 | - `v0.14.0 — Codex Engine Config, Auth Flow & Settings Refresh` |
12 | 13 | - `v0.13.1 — Windows Compatibility Fixes` |
13 | 14 |
|
| 15 | +## Audience & Tone |
| 16 | + |
| 17 | +**Write for users, not developers.** Release notes are read by people who use the app, not people who built it. |
| 18 | + |
| 19 | +- ✅ "Long conversations are dramatically faster now" |
| 20 | +- ❌ "Replaced `content-visibility: auto` with `@tanstack/react-virtual` windowing" |
| 21 | +- ✅ "When Claude draws a diagram, it now actually renders as a visual diagram" |
| 22 | +- ❌ "Mermaid fenced code blocks render as SVG via async `mermaid.render()` with LRU cache" |
| 23 | +- ✅ "Type `/clear` in the composer and hit Enter to open a fresh chat" |
| 24 | +- ❌ "Added `LOCAL_CLEAR_COMMAND` slash command with `source: 'local'` that calls `onClear()` callback" |
| 25 | + |
| 26 | +**Rules of thumb:** |
| 27 | +- Describe what the user *experiences*, not what the code does |
| 28 | +- No internal names, no version numbers, no API terms, no implementation details |
| 29 | +- If you can't explain it in plain English, simplify or skip it |
| 30 | +- Bug fixes: describe the symptom the user saw, not the root cause |
| 31 | + |
14 | 32 | ## Notes Structure |
15 | 33 |
|
| 34 | +Sections can be free-form paragraphs OR bullet lists — pick whichever reads more naturally. |
| 35 | + |
16 | 36 | ```markdown |
17 | 37 | ## What's New |
18 | 38 |
|
19 | | -### {emoji} {Category Title} |
20 | | -- **{Feature name}** — description of what it does |
21 | | -- **{Feature name}** — description |
| 39 | +### {emoji} {User-Facing Section Title} |
| 40 | +Short paragraph explaining what changed and why users care. |
| 41 | + |
| 42 | +### {emoji} {User-Facing Section Title} |
| 43 | +- **{Feature name}** — what it does for the user |
| 44 | +- **{Feature name}** — what it does for the user |
22 | 45 |
|
23 | | -### {emoji} {Category Title} |
24 | | -- **{Feature name}** — description |
| 46 | +### 🐛 Bug Fixes |
| 47 | +- Fixed a bug where [symptom the user experienced] |
| 48 | +- Fixed [thing] that caused [user-visible problem] |
25 | 49 |
|
26 | 50 | --- |
27 | 51 |
|
|
31 | 55 | ## Rules |
32 | 56 |
|
33 | 57 | 1. Use `## What's New` for feature releases, `## Changes` for patch/fix-only releases |
34 | | -2. Group under `### {emoji} {Category Title}` headers |
35 | | -3. Bullets: `**bold feature name** — description` (em dash) |
36 | | -4. End with `---` separator and Full Changelog link |
| 58 | +2. Group under `### {emoji} {Category Title}` headers — keep titles plain, not technical |
| 59 | +3. End with `---` separator and Full Changelog link |
| 60 | +4. **Always write for users first.** Internal details, library names, and implementation notes belong in commit messages and CLAUDE.md, not release notes. |
37 | 61 |
|
38 | 62 | ## Emoji Conventions |
39 | 63 |
|
40 | 64 | | Emoji | Category | |
41 | 65 | |-------|----------| |
42 | | -| ⚡ | Performance, speed, commands, autocomplete | |
43 | | -| 📦 | Grouping, packaging, bundling | |
44 | | -| 📂 | Files, filesystem, project structure | |
45 | | -| 🔍 | Search, inspection, debugging | |
| 66 | +| ⚡ | Performance, speed, snappiness | |
| 67 | +| 📦 | Grouping, packaging | |
| 68 | +| 📂 | Files, folders, filesystem | |
| 69 | +| 🔍 | Search, inspection | |
46 | 70 | | 📨 | Messages, queues, communication | |
47 | | -| 🛠 | Tools, subagents, integrations | |
48 | | -| 🎨 | UI, polish, visual changes, icons | |
49 | | -| ⚙️ | Configuration, settings, engines | |
50 | | -| 🔐 | Auth, security | |
51 | | -| 🔄 | Updates, syncing, auto-refresh | |
52 | | -| 🌳 | Git, worktrees, version control | |
| 71 | +| 🛠 | Tools, integrations | |
| 72 | +| 🎨 | UI, visual polish | |
| 73 | +| ⚙️ | Settings, configuration | |
| 74 | +| 🔐 | Auth, security, permissions | |
| 75 | +| 🔄 | Updates, syncing | |
| 76 | +| 🌳 | Git, version control | |
53 | 77 | | 🐛 | Bug fixes | |
54 | 78 | | ✨ | New features (generic) | |
55 | 79 |
|
56 | | -## Example: Feature Release (v0.15.0) |
| 80 | +## Example: Feature Release (v0.21.0) |
57 | 81 |
|
58 | 82 | ```markdown |
59 | 83 | ## What's New |
60 | 84 |
|
61 | | -### ⚡ Slash Command Autocomplete |
62 | | -- **Unified `/` command picker** in InputBar — type `/` to browse commands from Claude, ACP, and Codex engines |
63 | | -- **Keyboard navigation** with arrow keys, Enter/Tab to select, Escape to dismiss |
| 85 | +### ⚡ Much Faster Chat |
| 86 | +Long conversations are dramatically faster now. We replaced the old rendering approach with a proper virtualized list — only the messages you can actually see are rendered at any time. Scrolling is smoother, switching sessions is snappier, and the app uses less memory overall. |
| 87 | + |
| 88 | +### 📊 Mermaid Diagrams |
| 89 | +When Claude draws a diagram using a mermaid code block, it now actually renders as a visual diagram — flowcharts, sequence diagrams, pie charts, git graphs, and more. Diagrams adapt to your light/dark theme automatically. While Claude is still typing, you see the raw source; once the message is complete, the diagram appears. |
64 | 90 |
|
65 | | -### 📦 Tool Group Collapsing |
66 | | -- **Automatic grouping** — contiguous tool_call sequences merge into a collapsible summary block |
67 | | -- **Animated morph transition** — tools compress into a grouped header with staggered row animations |
| 91 | +### 📂 Deep Folder Inclusion (`@#`) |
| 92 | +You can now use `@#foldername` in the composer to include the full contents of a folder — not just the file tree, but every file inside it. Regular `@folder` still gives you the structure overview. If the folder is large, Harnss will warn you before sending. |
68 | 93 |
|
69 | | -### 📂 Project Files Panel |
70 | | -- **Full filesystem tree browser** — walks entire project directory (skips .git, node_modules) |
71 | | -- **Search filtering** with debounced input and auto-expand matching directories |
| 94 | +### ⌨️ `/clear` Command |
| 95 | +Type `/clear` in the composer and hit Enter to instantly open a fresh chat — without sending anything to the agent. |
72 | 96 |
|
73 | | -### 🎨 UI & Polish |
74 | | -- **App icon refresh** — display-p3 gradient, dark/light opacity specializations |
75 | | -- **SDK bump** to `@anthropic-ai/claude-agent-sdk` 0.2.68 |
| 97 | +### 🐛 Bug Fixes |
| 98 | +- Fixed a bug where switching out of plan mode could reset the permission level incorrectly |
| 99 | +- Fixed markdown characters occasionally getting eaten during streaming (apostrophes, backticks, etc.) |
| 100 | +- Permission prompts now show a notification if something goes wrong, instead of failing silently |
76 | 101 |
|
77 | 102 | --- |
78 | 103 |
|
79 | | -**Full Changelog**: https://github.com/OpenSource03/harnss/compare/v0.14.3...v0.15.0 |
| 104 | +**Full Changelog**: https://github.com/OpenSource03/harnss/compare/v0.20.0...v0.21.0 |
80 | 105 | ``` |
81 | 106 |
|
82 | 107 | ## Example: Patch Release |
83 | 108 |
|
84 | 109 | ```markdown |
85 | 110 | ## Changes |
86 | 111 |
|
87 | | -### 🐛 Windows Compatibility |
88 | | -- **Windows ARM64 binary detection** — fixed Codex binary path resolution for ARM64 Windows |
89 | | -- **npm pack EINVAL workaround** — handle Windows-specific EINVAL error during npm pack |
| 112 | +### 🐛 Bug Fixes |
| 113 | +- Fixed the app hanging when switching sessions during an active stream |
| 114 | +- Fixed copy button not working in certain sandboxed contexts |
90 | 115 |
|
91 | 116 | --- |
92 | 117 |
|
93 | | -**Full Changelog**: https://github.com/OpenSource03/harnss/compare/v0.13.0...v0.13.1 |
| 118 | +**Full Changelog**: https://github.com/OpenSource03/harnss/compare/v0.21.0...v0.21.1 |
94 | 119 | ``` |
0 commit comments