Skip to content

chore(release): promote 0.18.0 - #593

Merged
tomymaritano merged 14 commits into
mainfrom
develop
Aug 24, 2026
Merged

chore(release): promote 0.18.0#593
tomymaritano merged 14 commits into
mainfrom
develop

Conversation

@tomymaritano

Copy link
Copy Markdown
Collaborator

Promote 0.18.0 to production.

develop is ahead of v0.17.0 with feat(theme): Harbor Dusk (#590), so
semantic-release will cut a minor: 0.18.0. AES-KW encryption is already
in 0.17.0; this release does not re-announce it.

What’s New: docs/releases/v0.18.0.md (status: draft until the GitHub
release is undrafted). Landed on develop in #592.

Merge with a merge commit. Do not squash. Squashing drops the feat
history and semantic-release will not cut 0.18.0.

CI is the gate. Do not bump package.json. Do not push a tag. Do not
Run workflow. Release + Build & Publish start from this merge.

Open in Web Open in Cursor 

cursoragent and others added 12 commits August 22, 2026 20:52
Adds .cursor/environment.json and an idempotent install script for Cursor
Cloud Agents.

The install script:
- selects an nvm-managed Node whose bundled node:sqlite has FTS5 enabled
  (the daemon's default node has FTS5 disabled, which breaks
  @dripnex/mcp-server) and makes it the default node for all shells;
- runs pnpm install --frozen-lockfile (postinstall rebuilds better-sqlite3
  for Electron and materializes the Electron binary);
- builds workspace packages so typecheck and the Playwright+Electron e2e
  suite are ready to run.

Validated: pnpm test (19/19 tasks), typecheck, lint, build, and the
Electron e2e suite (7 passed under xvfb).
…me PATH

The install-time PATH can differ from the agent runtime PATH: during an
environment build the nvm bin already precedes /exec-daemon, so the previous
'no shim needed' shortcut skipped creating the shims — leaving a fresh agent's
default node pointing at the daemon's FTS5-less node. Always place the shims in
every writable PATH dir preceding /exec-daemon (plus /usr/local/cargo/bin).
…582)

## Problem

`tests/runMigrations.test.ts > records migrations that already exist in
the schema` times out intermittently and blocks unrelated PRs. It
blocked #581 until I reran the job, which then passed — a flake, not a
break.

## Why it is slow

Not a bug. Each test creates a real libsql file database in `/tmp` and
drives the **entire** `MIGRATIONS` catalog through it. The failing one
calls `applyMigrations` **twice**. CI measured:

| Test | Duration |
| --- | --- |
| applies the catalog to an empty database, then no-ops | 3004 ms |
| records migrations that already exist in the schema | 7376 ms |

vitest's default is 5000 ms and there is no `testTimeout` configured
anywhere in the repo. The suite has been living one runner hiccup away
from red.

## Fix

An explicit 30s budget on those two tests, with a comment saying why.

Scoped deliberately: a global `testTimeout` bump would hide genuinely
slow *unit* tests elsewhere. These two are the only ones doing real
database I/O, so they are the only ones that should carry a longer
budget.

Verified locally: `pnpm --filter @dripnex/api test` → 59/59 pass.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
## What removing `|| true` revealed

The `disable-automerge` job fails with:

```
FORBIDDEN — Resource not accessible by integration
```

It had been failing silently behind `|| true` (see run
[32602609796](https://github.com/dripnex/app/actions/runs/32602609796)
on #571). The safety net that is supposed to stop a queued auto-merge
from landing on an unprotected base **has never actually worked** — it
just reported green.

## Honest note on cause

I cannot prove this was pre-existing. The job lost `contents: write`
earlier in #566 when I scoped workflow-level permissions per job on a
least-privilege review, and `|| true` meant no run before or after ever
surfaced a failure. Two live hypotheses:

1. The mutation needs `contents: write` and the least-privilege
narrowing broke it.
2. It was already FORBIDDEN and the suppression hid it.

This PR tests hypothesis 1 by granting the scope back. If FORBIDDEN
returns with both scopes present, the cause is a repository or org
restriction on `GITHUB_TOKEN` and needs a settings change or a PAT — the
comment in the file says so, so the next person does not have to
rediscover it.

## Scope narrowing

The job fired on every PR whose base was not `develop`, which includes
release promotions into `main`. `main` is protected; there is no unsafe
queued merge to undo there. The risk this job exists for is landing on
an **unprotected** base, so it now fires only on drafts, or on a base
that is neither `develop` nor `main`.

## Not changed

The loud failure stays. Going back to `|| true` would restore exactly
the false confidence that hid this.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Chores**
  * Updated automated merge handling for draft pull requests.
* Protected pull requests targeting `main` and `develop` from automatic
processing.
* Enabled the required repository content permissions for the automation
workflow.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
…585)

## Context

I enabled **Allow GitHub Actions to create and approve pull requests**
at the org and repo level, which unblocked `sync-develop` — it had been
failing with `GitHub Actions is not permitted to create or approve pull
requests` since forever. Re-running it against the v0.17.0 build now
succeeds.

But it immediately produced #584, which **cannot merge**.

## The problem

`sync-develop` opened a `develop ← main` PR. That shape deadlocks:
`develop` requires the head branch to be up to date, and `main` falls
behind `develop` the moment anything lands after the release — #582 and
#583 did exactly that. #584 has been sitting at `BEHIND` since it was
created. I hit the same wall by hand earlier tonight with #577.

Even if it could merge, the squash auto-merge would replay the content
as a fresh commit and **not** establish ancestry, which is the entire
point of a back-merge. That is what went wrong in #578 and #579.

## The fix

Push a branch descended from `develop` with `main` merged into it, then
open that against `develop`. Same thing that finally worked manually in
#581.

- Named `chore/backmerge-main-<tag>`, which matches the exclusion added
in #580 so `automerge.yml` leaves it alone.
- The job arms auto-merge itself with `--merge`, so it lands as a merge
commit.
- Exits early when `main` is already an ancestor, or when the branch
already exists, so re-runs are safe.

## Follow-up

#584 should be closed — this replaces it. The next release will exercise
this path for real.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Both files were sitting **untracked** in the working tree. They failed
`pnpm format:check` locally, so a clean run could not go green without
deleting them — which would have thrown away real analysis.

Prettier applied, **content unchanged**.

- `dripnex-dependency-map.md` — the epic dependency DAG, the critical
path, spike gates, and a two-person parallelization plan. The
cross-cutting view the issue tree cannot show.
- `dripnex-scope-reconciliation.md` — resolves where the vision doc, the
issues, and the running code disagree (Tauri vs Electron, Rust vs TS,
CRDT vs push/pull, the 5-Worker split), with the open founder calls
spelled out.

Both declare their own trust hierarchy and mark `plan.md` and
`docs/ROADMAP.md` as stale, which is worth having in the repo rather
than in one person's working tree.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
chore(release): merge main into develop
<!-- CURSOR_AGENT_PR_BODY_BEGIN -->
## Summary

First daily official theme pack: **Harbor Dusk**
(`dripnex-harbor-dusk`). Coastal evening palette for long writing
sessions — calm, low glare, readable markdown. Same contract as
Parchment / Wave / Night / Fog: a token layer over `tokens.css`,
registered in `OFFICIAL_THEMES`. No new fonts, no stylesheet fork, no
plugin pack.

Evening sibling to Fog (coastal gray morning). Merge needs a **Dripnex /
Tomás** gate — draft only, do not merge from this PR.

## Concept

Harbor after sunset: deep slate/navy water, mist over the docks, muted
teal from the tide, warm amber from lanterns. Built for long markdown
sessions, not OLED punch.

## Palette preview

| Role | Token | Hex |
| --- | --- | --- |
| Canvas | `--bg-base` | `#141c26` |
| Sidebar | `--bg-surface` | `#10161e` |
| Raised chrome | `--bg-elevated` | `#1c2633` |
| Inset / code | `--bg-inset` | `#0c1218` |
| Mist text | `--text-primary` | `#cdd6de` |
| Teal accent | `--accent` | `#5e9a92` |
| Accent hover | `--accent-hover` | `#74aea6` |
| Amber lanterns (links, on-hold) | `--cm-link` / `--status-on-hold` |
`#d4a05a` |
| Completed | `--status-completed` | `#7aad8a` |
| Dropped | `--status-dropped` | `#c46b6b` |

Hover, borders, and glass use mist at low opacity so chrome stays quiet.
Typography is the existing `--font-sans` / `--font-mono` stack; this
pack does not set font faces.

`--cm-link` is the one extra vs other official palettes (allowed
`--cm-*` extension, same as the community `theme.json` template) so
editor links read as lanterns while chrome stays teal. Preview markdown
links still follow `--accent` — `--link` is not in the theme whitelist.

## Files touched

- `apps/desktop/src/renderer/themes/officialThemes.ts` — register Harbor
Dusk
- `apps/desktop/src/renderer/themes/__tests__/officialThemes.test.ts` —
unique ids + token whitelist, including Harbor Dusk
- `docs/themes/LOG.md` — daily id/topic log (required so later packs do
not reuse this id)

No lockfile, no site listing, no marketplace registry (`theme-parchment`
satellite is a different shipping path).

## How to preview

1. `pnpm dev` (desktop)
2. Settings → Themes
3. Select **Harbor Dusk**
4. Check sidebar, note list, editor, command palette, and a markdown
note with headings, links, lists, and a code block

Restore Default (or another palette) to leave the session as you found
it.

## Type of Change

- [x] New feature

## Checklist

- [x] PR targets `develop` (not `main`)
- [x] Draft — merge needs Dripnex / Tomás gate
- [x] Official theme unit tests pass (`@dripnex/desktop` 325 tests)
- [x] Workspace typecheck passed on push
- [ ] Full `pnpm test` / `pnpm build` (CI)

<!-- CURSOR_AGENT_PR_BODY_END -->

<div><a
href="https://cursor.com/agents/bc-c792b1a1-968e-44fc-8723-bedc223bcc31?cursor_ref=pr_footer&cursor_cta=open_in_web"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/open-in-web-light.png"><img
alt="Open in Web" width="114" height="28"
src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a>&nbsp;<a
href="https://cursor.com/background-agent?bcId=bc-c792b1a1-968e-44fc-8723-bedc223bcc31&cursor_ref=pr_footer&cursor_cta=open_in_cursor"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/open-in-cursor-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/open-in-cursor-light.png"><img
alt="Open in Cursor" width="131" height="28"
src="https://cursor.com/assets/images/open-in-cursor-dark.png"></picture></a>&nbsp;</div>



<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **New Features**
- Added the official **Harbor Dusk** dark theme, featuring coastal
evening colors, muted teal accents, amber status tones, frosted
surfaces, and improved code-link styling.

- **Documentation**
  - Added Harbor Dusk to the official theme log.

- **Tests**
- Added validation covering theme metadata, color schemes, token values,
unique identifiers, and accent consistency.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
<!-- CURSOR_AGENT_PR_BODY_BEGIN -->
## Summary

Author `docs/releases/v0.18.0.md` so 0.18.0 can promote. Harbor Dusk is
the
user-facing story: a new official palette already in the desktop.

Status stays **draft**. Flip to `published` when the GitHub release is
undrafted. Promotion remains a separate `chore(release): promote 0.18.0`
PR (`develop` → `main`, merge commit).

Does not claim AI, self-building, or encryption (AES-KW shipped in
0.17.0).

## Type of Change

- [x] Documentation update

## Checklist

- [x] PR targets `develop` (not `main`)
- [x] Read `docs/releases/v0.18.0.md` — no PR numbers, feels like a
product note
- [x] Does not claim attachments, marketplace, AI/self-building, or new
encryption

<!-- CURSOR_AGENT_PR_BODY_END -->

<div><a
href="https://cursor.com/agents/bc-b3ae84a4-dd53-49af-a568-27be752bc608?cursor_ref=pr_footer&cursor_cta=open_in_web"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/open-in-web-light.png"><img
alt="Open in Web" width="114" height="28"
src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a>&nbsp;<a
href="https://cursor.com/background-agent?bcId=bc-b3ae84a4-dd53-49af-a568-27be752bc608&cursor_ref=pr_footer&cursor_cta=open_in_cursor"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/open-in-cursor-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/open-in-cursor-light.png"><img
alt="Open in Cursor" width="131" height="28"
src="https://cursor.com/assets/images/open-in-cursor-dark.png"></picture></a>&nbsp;</div>



<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **New Features**
* Added the Harbor Dusk dark theme, featuring a coastal-inspired color
palette.
  * The theme is available under **Settings → Themes**.

* **Documentation**
  * Added draft release notes for version 0.18.0.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
@coderabbitai

coderabbitai Bot commented Aug 24, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 52 minutes.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 1c3d82c9-d7bb-487c-a79f-e52096582af7

📥 Commits

Reviewing files that changed from the base of the PR and between d13acfc and ea4c699.

📒 Files selected for processing (11)
  • .cursor/environment.json
  • .cursor/install.sh
  • .github/workflows/automerge.yml
  • .github/workflows/build.yml
  • apps/desktop/src/renderer/themes/__tests__/officialThemes.test.ts
  • apps/desktop/src/renderer/themes/officialThemes.ts
  • docs/dripnex-dependency-map.md
  • docs/dripnex-scope-reconciliation.md
  • docs/releases/v0.18.0.md
  • docs/themes/LOG.md
  • packages/api/tests/runMigrations.test.ts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@tomymaritano
tomymaritano merged commit 2c71519 into main Aug 24, 2026
25 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

🎉 This PR is included in version 0.18.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants