Skip to content

chore(release): promote 0.19.3 - #623

Merged
tomymaritano merged 7 commits into
mainfrom
develop
Aug 26, 2026
Merged

chore(release): promote 0.19.3#623
tomymaritano merged 7 commits into
mainfrom
develop

Conversation

@tomymaritano

Copy link
Copy Markdown
Collaborator

Promote 0.19.3 so Settings → Themes → Install no longer quits the app, and Settings → Hack (init.js / styles.css / keymap) ships with Make this sendable in the first-write init.js template.

What’s New: docs/releases/v0.19.3.md (status: draft until the GitHub release is undrafted). Landed on develop in #622 as a merge commit (not squash).

develop is ahead of v0.19.2 with:

#620 is feat:. release.config.js maps feat → minor, so semantic-release will tag v0.20.0, not v0.19.3. This PR is titled 0.19.3 as requested for this cut. AuthGate-first (#621) is not on develop and is not in this PR.

Merge with a merge commit. Do not squash. Squashing drops the feat/fix history and semantic-release will not bump.

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.

HEAD: af53ae8.

Open in Web Open in Cursor 

tomymaritano and others added 7 commits August 26, 2026 03:11
<!-- CURSOR_AGENT_PR_BODY_BEGIN -->
## Summary

Settings → Themes → Install was quitting the Linux AppImage immediately
after a successful pack download. The pack landed on disk
(`data/plugins/theme-limestone`) and showed as In use after relaunch;
the process still exited on the Install click.

Install-complete now harvests and activates the palette in Settings
first, then broadcasts `plugins:reload`. That reload is a send-only IPC
— not `process.exit`, `app.quit`, `win.close`, or `webContents.reload`.
PluginHost syncs by plugin id so a newly installed theme pack is
activated without unloading every other plugin (the remount that raced
palette activation). Incremental sync sorts the full desired set first
so a new dependent of an already-active plugin still activates, and a
dependent whose base left the scan is unloaded.

`OFFICIAL_THEMES` stays empty. Browse / Other package is unchanged. No
version bump.

## Type of Change

- [x] Bug fix
- [ ] New feature
- [ ] Breaking change
- [ ] Documentation update

## Related Issues

Follow-up to #617 (QA on 0.19.2 AppImage: Install Limestone quits the
process).

## Checklist

- [x] I've read [CONTRIBUTING.md](../CONTRIBUTING.md)
- [x] Tests pass locally (`pnpm test`)
- [ ] Build succeeds (`pnpm build`)
- [x] PR targets `develop` branch (not `main`)

## What changed

- **Install-complete path:** `finishThemePackInstall` refresh → harvest
→ activate → `requestReload`. Settings stays on Themes; Limestone can
move to In use without a relaunch.
- **`plugins:requestReload`:** `reloadPluginWindows()` sends
`plugins:reload` to living windows only.
- **PluginHost:** incremental load/unload by id; full deactivate only on
unmount. `planPluginHostSync` sorts `next` before the diff so
already-active dependencies remain visible.

## Tests

- Reload does not call `process.exit` / close / destroy; settings +
notes windows stay alive.
- Install-complete order is harvest + activate, then reload; windows
still alive after that path.
- Adding a theme pack does not unload already-active plugins.
- New extension whose base is already active is activated; extension
whose base left the scan is unloaded.
- `pnpm test`: 19/19 tasks, including desktop 384 tests and plugin-api
259 tests.
<!-- CURSOR_AGENT_PR_BODY_END -->

<div><a
href="https://cursor.com/agents/bc-36f1100b-5aa1-4640-8154-6a580ed004c5?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-36f1100b-5aa1-4640-8154-6a580ed004c5&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**
* Plugins now update incrementally, activating newly added plugins and
removing unavailable ones without restarting the app.
* Theme pack installation now refreshes installed themes, activates the
selected theme when available, and updates plugin windows automatically.
* **Bug Fixes**
* Improved plugin reload handling to avoid closing, restarting, or
disrupting active windows.
* Reload requests safely skip unavailable windows and continue notifying
remaining active windows.

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

---------

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

Slice 1 of making Dripnex feel like a hackable AI note taker — no
product rewrite.

- Adds **Settings → Hack**, a top-level nav item (same visual language
as Themes/Plugins) with **Open init.js**, **Open styles.css**, and
**Open keymap**.
- One-line help: these files live in the data directory; save to apply
(existing watcher).
- First-write `init.js` template registers `dripnex.registerAiCommand`
named **Make this sendable** (messy notes → a document a person would
send, not a model dump). `dripnex.commands.add` remains as a short
comment; Insert Date no longer leads.
- Existing on-disk `init.js` / `styles.css` / `keybindings.json` are not
overwritten.
- Plugins → Open init.js / styles.css still uses `plugins:openUserFile`.

## Type of Change

- [ ] Bug fix
- [x] New feature
- [ ] Breaking change
- [ ] Documentation update

## Related Issues

Slice 1 only. No version bump, no tag. `OFFICIAL_THEMES` stays `[]`.
AuthGate untouched. No public marketplace.

## Checklist

- [x] I've read [CONTRIBUTING.md](../CONTRIBUTING.md)
- [x] Tests pass locally (`pnpm test` — 19/19 tasks; desktop 396 tests)
- [ ] Build succeeds (`pnpm build`) — typecheck passed on push;
production dist not run
- [x] PR targets `develop` branch (not `main`)

## Screenshots

Settings UI is Electron; verification is the new unit tests (template +
nav wiring + open-file IPC).
<!-- CURSOR_AGENT_PR_BODY_END -->

<div><a
href="https://cursor.com/agents/bc-9a484f9a-1b14-4d2a-8f95-816a53f733e6?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-9a484f9a-1b14-4d2a-8f95-816a53f733e6&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>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
chore(release): merge main into develop
<!-- CURSOR_AGENT_PR_BODY_BEGIN -->
## Summary

Stops the three verified CI duplications without changing the
required-check set or the release path.

1. **CodeQL:** `.github/workflows/codeql.yml` stays the in-repo source
(job named `CodeQL` so the develop ruleset context still reports).
GitHub **default setup** could **not** be disabled from this token (403
on both APIs and on `actions/workflows/.../disable`). A repo admin still
needs the Settings toggle — click-path below. Confirmed still live on
this PR: `Code Quality: PR #595` (`Analyze (javascript-typescript)`).
2. **Post-merge suite:** `ci.yml` no longer runs on `push` to `develop`.
PRs into `develop`/`main` still run the full suite (`lint`, `test`,
`typecheck`, `e2e`, `security`, plus `commitlint` from `pr-title.yml`).
`push` to `main` stays; Release does **not** wait on it (`release.yml`
is a separate workflow).
3. **Back-merges:** `chore/backmerge-*` and github-actions
`chore(release): merge main into develop` skip install/test/e2e/CodeQL
analysis. Required job names still succeed so the PR can merge with a
**merge commit**, never squash
([docs/RELEASE.md](https://github.com/dripnex/app/blob/develop/docs/RELEASE.md)).

Also: `disable-automerge` now treats GitHub's `Can't disable auto-merge
for this pull request` as the same no-op as `not enabled`, so draft PRs
do not fail that job.

**Left draft on purpose.** Non-draft PRs into `develop` squash
auto-merge when checks are green; do not mark ready until a human wants
that.

## Type of Change

- [x] Bug fix
- [ ] New feature
- [ ] Breaking change
- [x] Documentation update

## Default CodeQL setup — still needs a Settings toggle

API attempts returned **403**:

```bash
gh api -X PATCH /repos/dripnex/app/code-scanning/default-setup -f state=not-configured
gh api -X PATCH -H "X-GitHub-Api-Version: 2026-03-10" \
  /repos/dripnex/app/code-quality/setup -f state=not-configured
```

**Click-path:**

1. Repo **Settings → Advanced Security** (or **Code security**) → CodeQL
/ Code scanning → Default setup → **Disable**.
2. If **Settings → Code quality** has its own Default setup, disable
that too.

## Verification

- First commit (`40711ca`): not a back-merge. `ci-gate` logged `Full
CI.`; `lint` / `test` / `typecheck` / `e2e` / `security` / `commitlint`
/ advanced `CodeQL` succeeded. `disable-automerge` failed on the draft
with `Can't disable auto-merge for this pull request`.
- Follow-up commit (`713b29f`): tolerate that GraphQL wording so the
draft stays green.

## Checklist

- [x] I've read [CONTRIBUTING.md](../CONTRIBUTING.md)
- [x] Required CI jobs green on the first commit
- [x] PR targets `develop` branch (not `main`)

<!-- CURSOR_AGENT_PR_BODY_END -->

<div><a
href="https://cursor.com/agents/bc-098f8496-4db8-4ae7-9149-c7ab5d5ef44a?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-098f8496-4db8-4ae7-9149-c7ab5d5ef44a&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

* **CI/CD Improvements**
* Updated validation workflows to better support release back-merges
while preserving required checks.
  * Limited push-based CI runs to the `main` branch.
  * Improved handling of auto-merge and security-scan workflow outcomes.
* Streamlined qualifying back-merges by reporting successful checks
without running unnecessary heavy validation.

* **Documentation**
* Added guidance on workflow triggers, required checks, release
back-merges, and CodeQL configuration.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Human story for the 0.19.3 cut: theme pack install stays open, Settings → Hack, and Make this sendable in the first-write init.js. Status stays draft until the GitHub release is undrafted.

Co-authored-by:  Tomás Maritano <tomymaritano@gmail.com>
docs(release): write the 0.19.3 What's New
@coderabbitai

coderabbitai Bot commented Aug 26, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 33 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: 74f25415-5b23-4b32-958d-a943c8b012fd

📥 Commits

Reviewing files that changed from the base of the PR and between 615619a and af53ae8.

📒 Files selected for processing (26)
  • .github/workflows/automerge.yml
  • .github/workflows/ci.yml
  • .github/workflows/codeql.yml
  • apps/desktop/src/main/__mocks__/electron.ts
  • apps/desktop/src/main/__tests__/userHackFiles.test.ts
  • apps/desktop/src/main/handlers/pluginHandlers.ts
  • apps/desktop/src/main/plugins/__tests__/pluginReload.test.ts
  • apps/desktop/src/main/plugins/pluginReload.ts
  • apps/desktop/src/main/userHackFiles.ts
  • apps/desktop/src/renderer/pages/settings/SettingsApp.tsx
  • apps/desktop/src/renderer/pages/settings/__tests__/hackSection.test.ts
  • apps/desktop/src/renderer/pages/settings/components/SettingsSidebar.tsx
  • apps/desktop/src/renderer/pages/settings/hackFiles.ts
  • apps/desktop/src/renderer/pages/settings/sections/HackSection.tsx
  • apps/desktop/src/renderer/pages/settings/sections/ThemesSection.tsx
  • apps/desktop/src/renderer/pages/settings/settingsNav.ts
  • apps/desktop/src/renderer/themes/__tests__/finishThemePackInstall.test.ts
  • apps/desktop/src/renderer/themes/finishThemePackInstall.ts
  • docs/ci.md
  • docs/releases/v0.19.3.md
  • packages/plugin-api/src/index.ts
  • packages/plugin-api/src/lifecycle/PluginHost.tsx
  • packages/plugin-api/src/lifecycle/pluginHostActions.ts
  • packages/plugin-api/src/loader/loadInitScript.ts
  • packages/plugin-api/tests/hostBridges.test.ts
  • packages/plugin-api/tests/pluginHostActions.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 2963640 into main Aug 26, 2026
19 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

🎉 This PR is included in version 0.20.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