From 9bde0bc7b9d4c3e4e26d8617164698a902bdcb23 Mon Sep 17 00:00:00 2001 From: Valentina Alexander Date: Tue, 31 Mar 2026 15:37:15 -0500 Subject: [PATCH 1/2] docs: prepare v0.0.7 release notes --- CHANGELOG.md | 31 +++++++++++++++++++++++++++++ docs/releases/README.md | 1 + docs/releases/v0.0.7.md | 32 ++++++++++++++++++++++++++++++ docs/releases/v0.0.7/assets.md | 36 ++++++++++++++++++++++++++++++++++ 4 files changed, 100 insertions(+) create mode 100644 docs/releases/v0.0.7.md create mode 100644 docs/releases/v0.0.7/assets.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 8b426669..b65b2de2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,36 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - CLI npm package name is `okcodes`. Install with `npm install -g okcodes`; the `okcode` binary name is unchanged. +## [0.0.7] - 2026-03-31 + +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. + +### Added + +- Add a command palette for project and thread switching. +- Add GitHub clone flow from repository URLs. +- Add checklist views for proposed plans. +- Add browser viewport presets to the preview panel. +- Add skill CRUD and slash-command support. +- Add `rec` command option mapping for review replies. + +### Changed + +- Refresh UI fonts and theme presets. +- Improve PR panel accessibility and keyboard shortcuts. +- Reorganize conflict intake UI and expandable summaries. +- Fallback to available git branches when creating new worktrees. +- Collapse consecutive work entries in the timeline. +- Polish sidebar project add-row styling and workspace search filters. + +### Fixed + +- Harden selection highlight styling for accessibility and contrast compatibility. + +### Removed + +- None. + ## [0.0.6] - 2026-03-28 See [docs/releases/v0.0.6.md](docs/releases/v0.0.6.md) for full notes and [docs/releases/v0.0.6/assets.md](docs/releases/v0.0.6/assets.md) for release asset inventory. @@ -151,5 +181,6 @@ First public version tag. See [docs/releases/v0.0.1.md](docs/releases/v0.0.1.md) [0.0.3]: https://github.com/OpenKnots/okcode/releases/tag/v0.0.3 [0.0.2]: https://github.com/OpenKnots/okcode/releases/tag/v0.0.2 [0.0.1]: https://github.com/OpenKnots/okcode/releases/tag/v0.0.1 +[0.0.7]: https://github.com/OpenKnots/okcode/releases/tag/v0.0.7 [0.0.5]: https://github.com/OpenKnots/okcode/releases/tag/v0.0.5 [0.0.6]: https://github.com/OpenKnots/okcode/releases/tag/v0.0.6 diff --git a/docs/releases/README.md b/docs/releases/README.md index 468b3f23..f1890985 100644 --- a/docs/releases/README.md +++ b/docs/releases/README.md @@ -4,6 +4,7 @@ Human-readable notes and asset inventories for tagged releases. | Version | Notes | Assets | | ------------------ | ---------------------------------------------------------- | ---------------------------- | +| [0.0.7](v0.0.7.md) | Navigation, clone flow, plan checklists, preview presets | [manifest](v0.0.7/assets.md) | | [0.0.6](v0.0.6.md) | PR + preview polish, env persistence, search, landing page | [manifest](v0.0.6/assets.md) | | [0.0.5](v0.0.5.md) | Git workflows, PR review, mobile shell | [manifest](v0.0.5/assets.md) | | [0.0.4](v0.0.4.md) | PR review, desktop preview, release tooling | [manifest](v0.0.4/assets.md) | diff --git a/docs/releases/v0.0.7.md b/docs/releases/v0.0.7.md new file mode 100644 index 00000000..aeb4081c --- /dev/null +++ b/docs/releases/v0.0.7.md @@ -0,0 +1,32 @@ +# OK Code v0.0.7 + +**Date:** 2026-03-31 +**Tag:** [`v0.0.7`](https://github.com/OpenKnots/okcode/releases/tag/v0.0.7) + +## Summary + +OK Code v0.0.7 focuses on faster navigation, stronger workspace setup, and better day-to-day ergonomics across the web UI, preview panel, and release tooling. + +## Highlights + +- **Add a command palette for project and thread switching.** +- **Add GitHub clone flow from repository URLs.** +- **Add checklist views for proposed plans.** +- **Add browser viewport presets to the preview panel.** +- **Refresh UI fonts and theme presets.** +- **Improve PR panel accessibility and keyboard shortcuts.** +- **Reorganize conflict intake UI and expandable summaries.** +- **Fallback to available git branches when creating new worktrees.** + +## Breaking changes + +- None. + +## Upgrade and install + +- **CLI:** `npm install -g okcodes@0.0.7` (after the package is published to npm manually). +- **Desktop:** Download from [GitHub Releases](https://github.com/OpenKnots/okcode/releases/tag/v0.0.7). Filenames are listed in [assets.md](v0.0.7/assets.md). + +## Known limitations + +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. diff --git a/docs/releases/v0.0.7/assets.md b/docs/releases/v0.0.7/assets.md new file mode 100644 index 00000000..6802de5f --- /dev/null +++ b/docs/releases/v0.0.7/assets.md @@ -0,0 +1,36 @@ +# v0.0.7 - Release assets (manifest) + +Binaries are **not** stored in this git repository; they are attached to the [GitHub Release for `v0.0.7`](https://github.com/OpenKnots/okcode/releases/tag/v0.0.7) by the [Release Desktop workflow](../../.github/workflows/release.yml). + +The GitHub Release also includes **documentation attachments** (same content as in-repo, stable filenames for download): + +| File | Source in repo | +| --------------------------- | ------------------------------------- | +| `okcode-CHANGELOG.md` | [CHANGELOG.md](../../../CHANGELOG.md) | +| `okcode-RELEASE-NOTES.md` | [v0.0.7.md](../v0.0.7.md) | +| `okcode-ASSETS-MANIFEST.md` | This file | + +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.7`). + +## Desktop installers and payloads + +| Platform | Kind | Typical pattern | +| ------------------- | -------------- | --------------- | +| macOS Apple Silicon | DMG | `*.dmg` (arm64) | +| macOS Intel | DMG | `*.dmg` (x64) | +| macOS | ZIP (updater) | `*.zip` | +| Linux x64 | AppImage | `*.AppImage` | +| Windows x64 | NSIS installer | `*.exe` | + +## Electron updater metadata + +| File | Purpose | +| ------------------ | --------------------------------------------------------- | +| `latest-mac.yml` | macOS update manifest (merged from per-arch builds in CI) | +| `latest-linux.yml` | Linux update manifest | +| `latest.yml` | Windows update manifest | +| `*.blockmap` | Differential download block maps | + +## Checksums + +SHA-256 checksums are not committed here; verify downloads via GitHub's release UI or `gh release download` if you use the GitHub CLI. From 561a546988fdd455848020af6e357372b81b23e6 Mon Sep 17 00:00:00 2001 From: Valentina Alexander Date: Tue, 31 Mar 2026 15:59:00 -0500 Subject: [PATCH 2/2] chore: align branch with main --- apps/server/src/prReview/Layers/PrReview.ts | 3 +++ apps/web/src/components/CommandPalette.tsx | 16 ++++++++++++---- apps/web/src/components/PlanChecklist.tsx | 2 +- apps/web/src/hooks/useTheme.ts | 15 +++++---------- apps/web/src/routes/_chat.settings.tsx | 14 ++++++++++++++ apps/web/src/selection-styles.test.ts | 4 +++- apps/web/tsconfig.json | 4 +++- bun.lock | 1 - scripts/build-desktop-artifact.ts | 2 +- scripts/dev-runner.ts | 2 +- tsconfig.base.json | 7 ++++++- 11 files changed, 49 insertions(+), 21 deletions(-) diff --git a/apps/server/src/prReview/Layers/PrReview.ts b/apps/server/src/prReview/Layers/PrReview.ts index 6405a57e..34f433b9 100644 --- a/apps/server/src/prReview/Layers/PrReview.ts +++ b/apps/server/src/prReview/Layers/PrReview.ts @@ -1,6 +1,7 @@ import { Effect, Layer } from "effect"; import type { PrConflictAnalysis, + GitHubUserPreview, PrReviewAddThreadInput, PrReviewComment, PrReviewConfig, @@ -12,9 +13,11 @@ import type { PrReviewReplyToThreadInput, PrReviewResolveThreadInput, PrReviewSearchUsersInput, + PrReviewSearchUsersResult, PrReviewSummary, PrReviewUserPreviewInput, PrSubmitReviewInput, + PrSubmitReviewResult, PrWorkflowStepRunResult, } from "@okcode/contracts"; import { GitHubCli } from "../../git/Services/GitHubCli.ts"; diff --git a/apps/web/src/components/CommandPalette.tsx b/apps/web/src/components/CommandPalette.tsx index 2a81b273..fe7f2811 100644 --- a/apps/web/src/components/CommandPalette.tsx +++ b/apps/web/src/components/CommandPalette.tsx @@ -92,6 +92,13 @@ function commandScore(command: PaletteCommand, query: string): number { return best; } +function sortByCommandScore( + commands: ReadonlyArray, + query: string, +): PaletteCommand[] { + return commands.toSorted((a, b) => commandScore(b, query) - commandScore(a, query)); +} + // ── Command palette component ─────────────────────────────────────── export function CommandPalette() { @@ -344,9 +351,10 @@ function CommandsView() { // Filter commands by query const filtered = useMemo(() => { if (query.length === 0) return commands; - return commands - .filter((cmd) => commandMatchesQuery(cmd, query)) - .toSorted((a, b) => commandScore(b, query) - commandScore(a, query)); + return sortByCommandScore( + commands.filter((cmd) => commandMatchesQuery(cmd, query)), + query, + ); }, [commands, query]); // Group filtered commands @@ -492,7 +500,7 @@ function ProjectsView() { ? projects.filter((p) => fuzzyMatch(query, p.name) || fuzzyMatch(query, p.cwd)) : projects; - return [...filtered].toSorted((a, b) => { + return filtered.toSorted((a, b) => { const aIndex = mruProjectIds.indexOf(a.id); const bIndex = mruProjectIds.indexOf(b.id); if (aIndex >= 0 && bIndex >= 0) return aIndex - bIndex; diff --git a/apps/web/src/components/PlanChecklist.tsx b/apps/web/src/components/PlanChecklist.tsx index 64441f4d..827c5024 100644 --- a/apps/web/src/components/PlanChecklist.tsx +++ b/apps/web/src/components/PlanChecklist.tsx @@ -57,7 +57,7 @@ const PlanChecklist = memo(function PlanChecklist({
{items.map((item, index) => ( (c <= 0.0031308 ? 12.92 * c : 1.055 * Math.pow(c, 1 / 2.4) - 0.055); +function gamma(c: number): number { + return c <= 0.0031308 ? 12.92 * c : 1.055 * Math.pow(c, 1 / 2.4) - 0.055; +} // ═══════════════════════════════════════════════════════════════════════════ // oklch → sRGB conversion (used for WCAG contrast checks) diff --git a/apps/web/tsconfig.json b/apps/web/tsconfig.json index 28ab7001..2304fde6 100644 --- a/apps/web/tsconfig.json +++ b/apps/web/tsconfig.json @@ -6,7 +6,9 @@ "lib": ["ES2023", "DOM", "DOM.Iterable"], "types": ["vite/client"], "paths": { - "~/*": ["./src/*"] + "effect": ["../../node_modules/effect"], + "effect/*": ["../../node_modules/effect/*"], + "~/*": ["./apps/web/src/*"] }, "plugins": [ { diff --git a/bun.lock b/bun.lock index 26815dfc..ada0cc36 100644 --- a/bun.lock +++ b/bun.lock @@ -1,6 +1,5 @@ { "lockfileVersion": 1, - "configVersion": 1, "workspaces": { "": { "name": "@oktools/monorepo", diff --git a/scripts/build-desktop-artifact.ts b/scripts/build-desktop-artifact.ts index 5e4d5ce0..44f7a33a 100644 --- a/scripts/build-desktop-artifact.ts +++ b/scripts/build-desktop-artifact.ts @@ -863,5 +863,5 @@ const buildDesktopArtifactCli = Command.make("build-desktop-artifact", { Command.run(buildDesktopArtifactCli, { version: "0.0.0" }).pipe( Effect.scoped, Effect.provide([Logger.layer([Logger.consolePretty()]), NodeServices.layer]), - (program) => NodeRuntime.runMain(program as Effect.Effect), + (effect) => NodeRuntime.runMain(effect as never), ); diff --git a/scripts/dev-runner.ts b/scripts/dev-runner.ts index 5846f3c7..8c71c2b5 100644 --- a/scripts/dev-runner.ts +++ b/scripts/dev-runner.ts @@ -555,5 +555,5 @@ const runtimeProgram = Command.run(devRunnerCli, { version: "0.0.0" }).pipe( ) as Effect.Effect; if (import.meta.main) { - NodeRuntime.runMain(runtimeProgram); + NodeRuntime.runMain(runtimeProgram as never); } diff --git a/tsconfig.base.json b/tsconfig.base.json index 538fa0f0..7940950e 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -1,5 +1,6 @@ { "compilerOptions": { + "baseUrl": ".", "target": "ES2023", "module": "ESNext", "moduleResolution": "Bundler", @@ -12,6 +13,10 @@ "skipLibCheck": true, "allowSyntheticDefaultImports": true, "esModuleInterop": true, - "resolveJsonModule": true + "resolveJsonModule": true, + "paths": { + "effect": ["./node_modules/effect"], + "effect/*": ["./node_modules/effect/*"] + } } }