Skip to content

Commit 12b3117

Browse files
BunsDevclaude
andcommitted
Prepare v0.15.0 release
Add release notes, changelog, and asset manifest for v0.15.0. Fix PreviewPanel threadId prop plumbing and branding re-export. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent d63933e commit 12b3117

File tree

11 files changed

+144
-31
lines changed

11 files changed

+144
-31
lines changed

BRANDING.md

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,17 @@
77

88
## 1. Brand Identity
99

10-
| Property | Value |
11-
| ------------------------- | ---------------------- |
12-
| **App Name** | OK Code |
13-
| **Stage Label** | Dev (development only) |
14-
| **Display Name** | OK Code |
15-
| **Version** | 0.0.1 |
16-
| **Tagline** | A Minimal Web GUI for Coding Agents |
10+
| Property | Value |
11+
| ------------------------- | ------------------------------------------------------------------------------------------------------------------ |
12+
| **App Name** | OK Code |
13+
| **Stage Label** | Dev (development only) |
14+
| **Display Name** | OK Code |
15+
| **Version** | 0.0.1 |
16+
| **Tagline** | A Minimal Web GUI for Coding Agents |
1717
| **One-liner Description** | Chat with Codex and Claude in a modern web UI. Git worktree isolation, diff review, integrated terminal, and more. |
18-
| **Parent Organization** | OpenKnots |
19-
| **Website URL** | `[TBD]` |
20-
| **Repository** | `OpenKnots/okcode` |
18+
| **Parent Organization** | OpenKnots |
19+
| **Website URL** | `[TBD]` |
20+
| **Repository** | `OpenKnots/okcode` |
2121

2222
### Brand Voice & Tone
2323

@@ -28,7 +28,7 @@
2828
| **Copy Style** | Action-oriented imperatives ("New Thread", "Terminal", "Settings"); no unnecessary filler words |
2929
| **Audience** | Software engineers and technical users |
3030
| **Emoji Usage** | None in UI copy; reserved for user-generated content only |
31-
| **Error/Empty States Voice** | Concise and helpful; state what happened and what to do next, no blame or humor |
31+
| **Error/Empty States Voice** | Concise and helpful; state what happened and what to do next, no blame or humor |
3232

3333
---
3434

@@ -256,7 +256,7 @@ A subtle **fractal noise SVG overlay** is applied to `body::after` at **3.5% opa
256256
| Disabled opacity | `opacity-64` |
257257
| Disabled interaction | `pointer-events: none` |
258258
| Placeholder text | `muted-foreground/72` (72% opacity) |
259-
| Contrast standard | WCAG 2.1 AA minimum |
259+
| Contrast standard | WCAG 2.1 AA minimum |
260260

261261
---
262262

@@ -319,10 +319,10 @@ The app includes bespoke SVG icons for:
319319

320320
### Motion Preference
321321

322-
| Property | Value |
323-
| -------------------------------- | ------- |
322+
| Property | Value |
323+
| -------------------------------- | -------------------------------------------------- |
324324
| `prefers-reduced-motion` support | Respect; disable non-essential animations when set |
325-
| Global animation toggle | `[TBD]` |
325+
| Global animation toggle | `[TBD]` |
326326

327327
---
328328

CHANGELOG.md

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

88
## [Unreleased]
99

10+
## [0.15.0] - 2026-04-05
11+
12+
See [docs/releases/v0.15.0.md](docs/releases/v0.15.0.md) for full notes and [docs/releases/v0.15.0/assets.md](docs/releases/v0.15.0/assets.md) for release asset inventory.
13+
14+
### Added
15+
16+
- Redesign the chat home empty state with recent activity.
17+
- Add animated marketing background and deepen dark theme.
18+
- Add rebase-aware branch sync handling.
19+
20+
### Changed
21+
22+
- Centralize brand constants in @okcode/shared/brand and unify OK Code brand identity across the codebase.
23+
- Scope preview tabs and preview state by project thread.
24+
- Scope background image into app settings.
25+
- Always use wide thread names in the sidebar.
26+
- Refine stitch border with subtle 3D depth.
27+
- Wrap menu sections and PR dropdown actions in MenuGroup.
28+
- Measure composer footer content before compacting.
29+
- Skip CI jobs when unrelated files change.
30+
31+
### Removed
32+
33+
- Remove window opacity setting.
34+
1035
## [0.14.0] - 2026-04-04
1136

1237
See [docs/releases/v0.14.0.md](docs/releases/v0.14.0.md) for full notes and [docs/releases/v0.14.0/assets.md](docs/releases/v0.14.0/assets.md) for release asset inventory.

apps/desktop/src/main.ts

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1291,14 +1291,11 @@ function registerIpcHandlers(): void {
12911291
);
12921292

12931293
ipcMain.removeHandler(PREVIEW_ACTIVATE_THREAD_CHANNEL);
1294-
ipcMain.handle(
1295-
PREVIEW_ACTIVATE_THREAD_CHANNEL,
1296-
async (event, input: { threadId?: string }) => {
1297-
const window = resolvePreviewWindow(event.sender);
1298-
if (!window || !input?.threadId) return createEmptyTabsState();
1299-
return getPreviewController(window).activateThread(input.threadId);
1300-
},
1301-
);
1294+
ipcMain.handle(PREVIEW_ACTIVATE_THREAD_CHANNEL, async (event, input: { threadId?: string }) => {
1295+
const window = resolvePreviewWindow(event.sender);
1296+
if (!window || !input?.threadId) return createEmptyTabsState();
1297+
return getPreviewController(window).activateThread(input.threadId);
1298+
});
13021299

13031300
ipcMain.removeHandler(PREVIEW_CLOSE_TAB_CHANNEL);
13041301
ipcMain.handle(PREVIEW_CLOSE_TAB_CHANNEL, async (event, input: { tabId?: PreviewTabId }) => {

apps/desktop/src/previewController.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -619,8 +619,7 @@ export class DesktopPreviewController {
619619
tabs.push(entry.state);
620620
}
621621

622-
const visible =
623-
this.bounds.visible && tabs.length > 0 && threadSet.activeTabId !== null;
622+
const visible = this.bounds.visible && tabs.length > 0 && threadSet.activeTabId !== null;
624623

625624
return {
626625
tabs,

apps/web/src/branding.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
export { APP_BASE_NAME } from "@okcode/shared/brand";
1+
import { APP_BASE_NAME } from "@okcode/shared/brand";
2+
3+
export { APP_BASE_NAME };
24

35
export const APP_STAGE_LABEL = import.meta.env.DEV ? "Dev" : "";
46
export const APP_DISPLAY_NAME = APP_STAGE_LABEL

apps/web/src/components/ChatHomeEmptyState.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -363,9 +363,9 @@ export function ChatHomeEmptyState() {
363363
Launch a premium coding workspace with reliable agent sessions built in.
364364
</h1>
365365
<p className="mt-5 max-w-2xl text-sm leading-7 text-muted-foreground sm:text-base">
366-
{APP_BASE_NAME} keeps threads tied to real repositories, preserves provider state,
367-
and gives your desktop a calmer control surface for deep, multi-session
368-
work.
366+
{APP_BASE_NAME} keeps threads tied to real repositories, preserves provider
367+
state, and gives your desktop a calmer control surface for deep,
368+
multi-session work.
369369
</p>
370370
</div>
371371

apps/web/src/components/ChatView.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4714,6 +4714,7 @@ export default function ChatView({ threadId }: ChatViewProps) {
47144714
<PreviewPanel
47154715
key={previewPanelKey ?? undefined}
47164716
projectId={activeProject!.id}
4717+
threadId={threadId}
47174718
onClose={() => setPreviewOpen(activeProject!.id, false)}
47184719
/>
47194720
</div>
@@ -5535,6 +5536,7 @@ export default function ChatView({ threadId }: ChatViewProps) {
55355536
<PreviewPanel
55365537
key={previewPanelKey ?? undefined}
55375538
projectId={activeProject!.id}
5539+
threadId={threadId}
55385540
onClose={() => setPreviewOpen(activeProject!.id, false)}
55395541
/>
55405542
</div>

apps/web/src/components/PreviewPanel.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,10 +100,11 @@ function tabDisplayTitle(tab: PreviewTabState): string {
100100

101101
interface PreviewPanelProps {
102102
projectId: ProjectId;
103+
threadId: string;
103104
onClose: () => void;
104105
}
105106

106-
export function PreviewPanel({ projectId, onClose }: PreviewPanelProps) {
107+
export function PreviewPanel({ projectId, threadId, onClose }: PreviewPanelProps) {
107108
const previewBridge = readDesktopPreviewBridge();
108109
const setProjectOpen = usePreviewStateStore((state) => state.setProjectOpen);
109110
const favoriteUrls = usePreviewStateStore((state) => state.favoriteUrls);

docs/releases/v0.15.0.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# OK Code v0.15.0
2+
3+
**Date:** 2026-04-05
4+
**Tag:** [`v0.15.0`](https://github.com/OpenKnots/okcode/releases/tag/v0.15.0)
5+
6+
## Summary
7+
8+
Brand refresh, scoped preview tabs, redesigned chat home, animated marketing background, and rebase-aware branch sync.
9+
10+
## Highlights
11+
12+
- **Redesign the chat home empty state.** The landing screen now shows recent activity so new and returning users have an immediate starting point.
13+
- **Centralize brand constants.** All brand colors, names, and assets are now defined in `@okcode/shared/brand`, making identity changes a single-file update.
14+
- **Unify OK Code brand identity across the codebase.** Logos, wordmarks, and naming have been aligned everywhere—desktop, web, marketing, and mobile.
15+
- **Scope preview tabs by project thread.** Preview panels are now scoped per thread so switching threads no longer clobbers open previews.
16+
- **Add animated marketing background.** The marketing site gains an animated background and a deeper dark theme.
17+
- **Add rebase-aware branch sync handling.** Branch pull now detects rebase situations and handles them gracefully instead of erroring.
18+
- **Refine stitch border with subtle 3D depth.** The decorative stitch border gains a more polished, three-dimensional appearance.
19+
- **Skip CI jobs when unrelated files change.** CI path filters reduce unnecessary workflow runs and save runner minutes.
20+
21+
## Breaking changes
22+
23+
- **Window opacity setting removed.** The window opacity slider has been removed from settings. Windows now use default opacity.
24+
25+
## Upgrade and install
26+
27+
- **CLI:** `npm install -g okcodes@0.15.0` (after the package is published to npm manually).
28+
- **Desktop:** Download from [GitHub Releases](https://github.com/OpenKnots/okcode/releases/tag/v0.15.0). This release includes signed macOS arm64/x64 DMGs, Linux x64 AppImage, and Windows x64 NSIS installer. Filenames are listed in [assets.md](v0.15.0/assets.md).
29+
- **iOS:** Available via TestFlight (uploaded automatically by the Release iOS workflow).
30+
31+
## Known limitations
32+
33+
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.15.0/assets.md

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# v0.15.0 — Release assets (manifest)
2+
3+
Binaries are **not** stored in this git repository; they are attached to the [GitHub Release for `v0.15.0`](https://github.com/OpenKnots/okcode/releases/tag/v0.15.0) 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.15.0.md](../v0.15.0.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.15.0`).
14+
15+
## Desktop installers and payloads
16+
17+
| Platform | Kind | Typical pattern |
18+
| ------------------- | -------------- | --------------- |
19+
| macOS Apple Silicon | DMG (signed) | `*.dmg` (arm64) |
20+
| macOS Intel | DMG (signed) | `*.dmg` (x64) |
21+
| macOS | ZIP (updater) | `*.zip` |
22+
| Linux x64 | AppImage | `*.AppImage` |
23+
| Windows x64 | NSIS installer | `*.exe` |
24+
25+
### macOS code signing and notarization
26+
27+
All macOS DMG and ZIP payloads are **code-signed** with an Apple Developer ID certificate and **notarized** via the Apple notarization service. Gatekeeper will verify the signature on first launch. The hardened runtime is enabled with entitlements defined in `apps/desktop/resources/entitlements.mac.plist`.
28+
29+
## Electron updater metadata
30+
31+
| File | Purpose |
32+
| ------------------ | --------------------------------------------------------- |
33+
| `latest-mac.yml` | macOS update manifest (merged from per-arch builds in CI) |
34+
| `latest-linux.yml` | Linux update manifest |
35+
| `latest.yml` | Windows update manifest |
36+
| `*.blockmap` | Differential download block maps |
37+
38+
## iOS (TestFlight)
39+
40+
The iOS build is uploaded directly to App Store Connect / TestFlight by the [Release iOS workflow](../../.github/workflows/release-ios.yml). No IPA artifact is attached to the GitHub Release.
41+
42+
| Detail | Value |
43+
| ----------------- | ------------------------------------------ |
44+
| Bundle ID | `com.openknots.okcode.mobile` |
45+
| Marketing version | `0.15.0` |
46+
| Build number | Set from `GITHUB_RUN_NUMBER` at build time |
47+
48+
## Checksums
49+
50+
SHA-256 checksums are not committed here; verify downloads via GitHub's release UI or `gh release download` if you use the GitHub CLI.

0 commit comments

Comments
 (0)