Skip to content

Commit 596defe

Browse files
committed
Update release generation for v0.0.8
- Publish v0.0.8 release notes and assets - Route GitHub release body from generated markdown - Include uncategorized commits in changelog and summary
1 parent a04658f commit 596defe

7 files changed

Lines changed: 129 additions & 26 deletions

File tree

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,7 @@ jobs:
323323
tag_name: ${{ needs.preflight.outputs.tag }}
324324
target_commitish: ${{ needs.preflight.outputs.ref }}
325325
name: OK Code v${{ needs.preflight.outputs.version }}
326-
generate_release_notes: true
326+
body_path: docs/releases/v${{ needs.preflight.outputs.version }}.md
327327
prerelease: ${{ needs.preflight.outputs.is_prerelease }}
328328
make_latest: ${{ needs.preflight.outputs.make_latest }}
329329
files: release-assets/*

CHANGELOG.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,36 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1111

1212
- CLI npm package name is `okcodes`. Install with `npm install -g okcodes`; the `okcode` binary name is unchanged.
1313

14+
## [0.0.8] - 2026-03-31
15+
16+
See [docs/releases/v0.0.8.md](docs/releases/v0.0.8.md) for full notes and [docs/releases/v0.0.8/assets.md](docs/releases/v0.0.8/assets.md) for release asset inventory.
17+
18+
### Added
19+
20+
- Add skills library, install flow, and management UI.
21+
- Add skills UX improvements and session hardening around the skills workflow.
22+
- Add text file attachments to chat turns.
23+
- Add app locale loading and the intl provider.
24+
- Add full-context diff viewing for both file-scoped and per-file comparisons.
25+
- Add inline thread renaming with draft title persistence.
26+
- Add file attachment context handling.
27+
- Add project quick-new thread button.
28+
- Add PR number input support with repository auto-match.
29+
- Add interactive plan feedback in the sidebar.
30+
- Add sidebar accent and thread width settings.
31+
32+
### Changed
33+
34+
- Refresh the OK Code marketing site.
35+
- Improve raw patch rendering.
36+
- Allow toggling the code viewer without clearing open tabs.
37+
- Clear stale worktree paths before starting sessions.
38+
39+
### Fixed
40+
41+
- Fix dev runner entrypoint detection for desktop builds.
42+
- Fix YouTube player embed layout.
43+
1444
## [0.0.7] - 2026-03-31
1545

1646
See [docs/releases/v0.0.7.md](docs/releases/v0.0.7.md) for full notes and [docs/releases/v0.0.7/assets.md](docs/releases/v0.0.7/assets.md) for release asset inventory.
@@ -184,3 +214,4 @@ First public version tag. See [docs/releases/v0.0.1.md](docs/releases/v0.0.1.md)
184214
[0.0.7]: https://github.com/OpenKnots/okcode/releases/tag/v0.0.7
185215
[0.0.5]: https://github.com/OpenKnots/okcode/releases/tag/v0.0.5
186216
[0.0.6]: https://github.com/OpenKnots/okcode/releases/tag/v0.0.6
217+
[0.0.8]: https://github.com/OpenKnots/okcode/releases/tag/v0.0.8

apps/web/src/routeTree.gen.ts

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@
1111
import { Route as rootRouteImport } from './routes/__root'
1212
import { Route as ChatRouteImport } from './routes/_chat'
1313
import { Route as ChatIndexRouteImport } from './routes/_chat.index'
14-
import { Route as ChatPluginsRouteImport } from './routes/_chat.plugins'
1514
import { Route as ChatSkillsRouteImport } from './routes/_chat.skills'
1615
import { Route as ChatSettingsRouteImport } from './routes/_chat.settings'
1716
import { Route as ChatPrReviewRouteImport } from './routes/_chat.pr-review'
17+
import { Route as ChatPluginsRouteImport } from './routes/_chat.plugins'
1818
import { Route as ChatMergeConflictsRouteImport } from './routes/_chat.merge-conflicts'
1919
import { Route as ChatFileViewRouteImport } from './routes/_chat.file-view'
2020
import { Route as ChatThreadIdRouteImport } from './routes/_chat.$threadId'
@@ -28,11 +28,6 @@ const ChatIndexRoute = ChatIndexRouteImport.update({
2828
path: '/',
2929
getParentRoute: () => ChatRoute,
3030
} as any)
31-
const ChatPluginsRoute = ChatPluginsRouteImport.update({
32-
id: '/plugins',
33-
path: '/plugins',
34-
getParentRoute: () => ChatRoute,
35-
} as any)
3631
const ChatSkillsRoute = ChatSkillsRouteImport.update({
3732
id: '/skills',
3833
path: '/skills',
@@ -48,6 +43,11 @@ const ChatPrReviewRoute = ChatPrReviewRouteImport.update({
4843
path: '/pr-review',
4944
getParentRoute: () => ChatRoute,
5045
} as any)
46+
const ChatPluginsRoute = ChatPluginsRouteImport.update({
47+
id: '/plugins',
48+
path: '/plugins',
49+
getParentRoute: () => ChatRoute,
50+
} as any)
5151
const ChatMergeConflictsRoute = ChatMergeConflictsRouteImport.update({
5252
id: '/merge-conflicts',
5353
path: '/merge-conflicts',
@@ -150,34 +150,34 @@ declare module '@tanstack/react-router' {
150150
preLoaderRoute: typeof ChatIndexRouteImport
151151
parentRoute: typeof ChatRoute
152152
}
153-
'/_chat/settings': {
154-
id: '/_chat/settings'
155-
path: '/settings'
156-
fullPath: '/settings'
157-
preLoaderRoute: typeof ChatSettingsRouteImport
158-
parentRoute: typeof ChatRoute
159-
}
160-
'/_chat/plugins': {
161-
id: '/_chat/plugins'
162-
path: '/plugins'
163-
fullPath: '/plugins'
164-
preLoaderRoute: typeof ChatPluginsRouteImport
165-
parentRoute: typeof ChatRoute
166-
}
167153
'/_chat/skills': {
168154
id: '/_chat/skills'
169155
path: '/skills'
170156
fullPath: '/skills'
171157
preLoaderRoute: typeof ChatSkillsRouteImport
172158
parentRoute: typeof ChatRoute
173159
}
160+
'/_chat/settings': {
161+
id: '/_chat/settings'
162+
path: '/settings'
163+
fullPath: '/settings'
164+
preLoaderRoute: typeof ChatSettingsRouteImport
165+
parentRoute: typeof ChatRoute
166+
}
174167
'/_chat/pr-review': {
175168
id: '/_chat/pr-review'
176169
path: '/pr-review'
177170
fullPath: '/pr-review'
178171
preLoaderRoute: typeof ChatPrReviewRouteImport
179172
parentRoute: typeof ChatRoute
180173
}
174+
'/_chat/plugins': {
175+
id: '/_chat/plugins'
176+
path: '/plugins'
177+
fullPath: '/plugins'
178+
preLoaderRoute: typeof ChatPluginsRouteImport
179+
parentRoute: typeof ChatRoute
180+
}
181181
'/_chat/merge-conflicts': {
182182
id: '/_chat/merge-conflicts'
183183
path: '/merge-conflicts'

docs/releases/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ Human-readable notes and asset inventories for tagged releases.
44

55
| Version | Notes | Assets |
66
| ------------------ | ---------------------------------------------------------- | ---------------------------- |
7+
| [0.0.8](v0.0.8.md) | Skills, localization, attachment flow, and UI hardening | [manifest](v0.0.8/assets.md) |
78
| [0.0.7](v0.0.7.md) | Navigation, clone flow, plan checklists, preview presets | [manifest](v0.0.7/assets.md) |
89
| [0.0.6](v0.0.6.md) | PR + preview polish, env persistence, search, landing page | [manifest](v0.0.6/assets.md) |
910
| [0.0.5](v0.0.5.md) | Git workflows, PR review, mobile shell | [manifest](v0.0.5/assets.md) |

docs/releases/v0.0.8.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# OK Code v0.0.8
2+
3+
**Date:** 2026-03-31
4+
**Tag:** [`v0.0.8`](https://github.com/OpenKnots/okcode/releases/tag/v0.0.8)
5+
6+
## Summary
7+
8+
OK Code v0.0.8 expands the new skills workflow, lays groundwork for localization, improves attachment and diff handling, and tightens session and thread behavior across the app.
9+
10+
## Highlights
11+
12+
- **Add a skills library, install flow, management UI, and follow-on UX hardening for skills.**
13+
- **Introduce app locale loading and the intl provider for the localization rollout.**
14+
- **Add text file attachments in chat and improve file attachment context handling.**
15+
- **Expand diff inspection with full-context viewing for both file-scoped and per-file comparisons.**
16+
- **Add inline thread renaming with draft title persistence and a quick-new thread action in the project sidebar.**
17+
- **Improve thread and plan workflows with PR number auto-match and interactive plan feedback in the sidebar.**
18+
- **Harden startup and session behavior by clearing stale worktree paths and fixing desktop dev runner entrypoint detection.**
19+
- **Refresh the marketing site and continue UI polish for raw patches, embeds, accent controls, and thread-width settings.**
20+
21+
## Breaking changes
22+
23+
- None.
24+
25+
## Upgrade and install
26+
27+
- **CLI:** `npm install -g okcodes@0.0.8` (after the package is published to npm manually).
28+
- **Desktop:** Download from [GitHub Releases](https://github.com/OpenKnots/okcode/releases/tag/v0.0.8). Filenames are listed in [assets.md](v0.0.8/assets.md).
29+
30+
## Known limitations
31+
32+
OK Code remains early work in progress. Expect rough edges around session recovery, streaming edge cases, and platform-specific desktop behavior. Report issues on GitHub.

docs/releases/v0.0.8/assets.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# v0.0.8 — Release assets (manifest)
2+
3+
Binaries are **not** stored in this git repository; they are attached to the [GitHub Release for `v0.0.8`](https://github.com/OpenKnots/okcode/releases/tag/v0.0.8) by the [Release Desktop workflow](../../.github/workflows/release.yml).
4+
5+
The GitHub Release also includes **documentation attachments** (same content as in-repo, stable filenames for download):
6+
7+
| File | Source in repo |
8+
| --------------------------- | ------------------------------------- |
9+
| `okcode-CHANGELOG.md` | [CHANGELOG.md](../../../CHANGELOG.md) |
10+
| `okcode-RELEASE-NOTES.md` | [v0.0.8.md](../v0.0.8.md) |
11+
| `okcode-ASSETS-MANIFEST.md` | This file |
12+
13+
After the workflow completes, expect **installer and updater** artifacts similar to the following (exact names may include the product name `OK Code` and version `0.0.8`).
14+
15+
## Desktop installers and payloads
16+
17+
| Platform | Kind | Typical pattern |
18+
| ------------------- | -------------- | --------------- |
19+
| macOS Apple Silicon | DMG | `*.dmg` (arm64) |
20+
| macOS Intel | DMG | `*.dmg` (x64) |
21+
| macOS | ZIP (updater) | `*.zip` |
22+
| Linux x64 | AppImage | `*.AppImage` |
23+
| Windows x64 | NSIS installer | `*.exe` |
24+
25+
## Electron updater metadata
26+
27+
| File | Purpose |
28+
| ------------------ | --------------------------------------------------------- |
29+
| `latest-mac.yml` | macOS update manifest (merged from per-arch builds in CI) |
30+
| `latest-linux.yml` | Linux update manifest |
31+
| `latest.yml` | Windows update manifest |
32+
| `*.blockmap` | Differential download block maps |
33+
34+
## Checksums
35+
36+
SHA-256 checksums are not committed here; verify downloads via GitHub's release UI or `gh release download` if you use the GitHub CLI.

scripts/prepare-release.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,7 @@ function categorizeCommits(messages: string[]): CategorizedCommits {
178178

179179
function generateChangelogSection(version: string, commits: CategorizedCommits): string {
180180
const lines: string[] = [];
181+
const changedEntries = [...commits.changed, ...commits.other];
181182
lines.push(`## [${version}] - ${today()}`);
182183
lines.push("");
183184
lines.push(
@@ -193,11 +194,11 @@ function generateChangelogSection(version: string, commits: CategorizedCommits):
193194
}
194195
}
195196

196-
if (commits.changed.length > 0) {
197+
if (changedEntries.length > 0) {
197198
lines.push("");
198199
lines.push("### Changed");
199200
lines.push("");
200-
for (const entry of commits.changed) {
201+
for (const entry of changedEntries) {
201202
lines.push(`- ${capitalize(entry)}.`);
202203
}
203204
}
@@ -233,7 +234,7 @@ function generateReleaseNotes(
233234
summary: string,
234235
commits: CategorizedCommits,
235236
): string {
236-
const highlights = [...commits.added, ...commits.fixed, ...commits.changed]
237+
const highlights = [...commits.added, ...commits.fixed, ...commits.changed, ...commits.other]
237238
.slice(0, 8)
238239
.map((entry) => `- **${capitalize(entry)}.**`)
239240
.join("\n");
@@ -345,7 +346,7 @@ function updateReleasesReadme(rootDir: string, version: string, shortDescription
345346
let content = readFileSync(readmePath, "utf8");
346347

347348
// Find the table header separator line (| --- | --- | --- |)
348-
const separatorRe = /\|[\s-]+\|[\s-]+\|[\s-]+\|/;
349+
const separatorRe = /^\|[ -]+\|[ -]+\|[ -]+\|$/m;
349350
const match = content.match(separatorRe);
350351
if (!match || match.index === undefined) {
351352
fatal("Could not find the table in docs/releases/README.md");
@@ -536,7 +537,9 @@ async function main(): Promise<void> {
536537
const autoSummary = [
537538
categorized.added.length > 0 ? `${categorized.added.length} new feature(s)` : "",
538539
categorized.fixed.length > 0 ? `${categorized.fixed.length} fix(es)` : "",
539-
categorized.changed.length > 0 ? `${categorized.changed.length} improvement(s)` : "",
540+
categorized.changed.length + categorized.other.length > 0
541+
? `${categorized.changed.length + categorized.other.length} improvement(s)`
542+
: "",
540543
]
541544
.filter(Boolean)
542545
.join(", ");

0 commit comments

Comments
 (0)