chore(release): promote 0.21.0 - #627
Merged
Merged
Conversation
<!-- CURSOR_AGENT_PR_BODY_BEGIN -->
## Summary
v0.20.0 QA: Settings → Hack and first-write `init.js` shipped, but
`dripnex.registerAiCommand({ name: 'Make this sendable' })` never
appeared in Edit with AI / the selection AI menu (built-ins only).
Ctrl+K is Ask Your Notes; Ctrl+Shift+P is not bound.
`registerAiCommand` already wrote to `aiCommandStore`. The selection
toolbar listed a hardcoded built-in array and never read the store. The
command palette also dropped `category: 'ai'`, so palette-registered
plugin AI commands were invisible even under Ctrl+P.
This wires `aiCommandStore` into the Edit with AI list (built-ins first,
then init.js / plugin commands) and shows the AI group in the palette.
Invoking a registered command resolves `{{selection}}` / `{{note}}` /
`{{title}}` and runs the same inline edit path as Proofread. Existing
on-disk `init.js` is still not overwritten. `OFFICIAL_THEMES` stays
`[]`. AuthGate / package.json versions untouched.
Please **merge commit** (never squash).
## Type of Change
- [x] Bug fix
- [ ] New feature
- [ ] Breaking change
- [ ] Documentation update
## Related Issues
QA on dripnex/app v0.20.0 AppImage (2026-08-26). Theme install and Hack
open-file already PASSed — not redone here.
## Checklist
- [x] I've read [CONTRIBUTING.md](../CONTRIBUTING.md)
- [x] Tests pass locally (`pnpm test`) — 19/19 packages
- [x] Typecheck passes (`pnpm typecheck` via pre-push)
- [x] PR targets `develop` branch (not `main`)
## Test evidence
Unit tests cover the QA done criteria:
- `registerAiCommand` from `INIT_JS_TEMPLATE` appears in the Edit with
AI list as **Make this sendable**
- Invoking it on messy notes resolves the template (selection + system
prompt)
- Built-ins (Proofread, Mermaid, …) still list and invoke after init.js
is loaded
- Plugin `registerAiCommand` uses the same list
- `ensureUserHackFiles` does not rewrite existing `init.js`
[Focused unit
tests](https://cursor.com/agents/bc-16caf26b-2e78-4542-bbcb-760aa7152563/artifacts?path=%2Fopt%2Fcursor%2Fartifacts%2Fselection_ai_commands_tests.log)
<sub>To show artifacts inline, <a
href="https://cursor.com/dashboard/cloud-agents#my-pull-requests">enable</a>
in settings.</sub>
<!-- CURSOR_AGENT_PR_BODY_END -->
<div><a
href="https://cursor.com/agents/bc-16caf26b-2e78-4542-bbcb-760aa7152563?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> <a
href="https://cursor.com/background-agent?bcId=bc-16caf26b-2e78-4542-bbcb-760aa7152563&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> </div>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
<!-- CURSOR_AGENT_PR_BODY_BEGIN --> ## Summary Tomás 2026-08-26 SSOT: Dripnex is 100% the hackable AI note taker. This PR does two things: 1. **Kill files-first copy** in the app and in-repo docs that users/agents still read (Welcome, empty states, `docs/NOW.md`, `docs/philosophy.md`, `docs/BRAND.md`, `README.md`, `CLAUDE.md`, `plan.md`, `ROADMAP.md`). SQLite is identity. `.md` is export. Hack via `init.js` / `styles.css` / satellite packs. AuthGate is required. 2. **AuthGate first.** Reverse ADR 002 (2026-08-25) optional-auth. `App.tsx` mounts `AuthGate`. `resolveAppShell` returns `auth` until a session exists. No continue-locally / Welcome-without-account path. Sync stays E2E after account. Playwright `DRIPNEX_E2E=1` may skip the gate in **unpackaged** runs only. Packaged builds never honor that flag. Human QA blocked by AuthGate is accepted. Follow-up on this PR: CodeRabbit threads A–D addressed and resolved. AuthGate now has a paper-and-ink light tunnel behind the magic-link card. Kept as **draft** so develop’s squash auto-merge cannot land it. Merge later as a **merge commit** (never squash). Targets `develop`, not `main`. No `package.json` version bump. No tag. `OFFICIAL_THEMES` stays `[]`. ## Type of Change - [x] New feature - [x] Breaking change (unsigned launch is gated) - [x] Documentation update ## Related Issues Supersedes the 2026-08-25 optional-auth revision of ADR 002. Related: #602 (removed the gate), #545 (AuthGate stays). ## Checklist - [x] I've read [CONTRIBUTING.md](../CONTRIBUTING.md) - [x] Tests pass locally (`pnpm test`) - [x] Desktop production build succeeds (`pnpm --filter @dripnex/desktop build`) - [x] AuthGate e2e passes without `DRIPNEX_E2E` (`e2e/authgate.spec.ts`) - [x] Packaged `isE2E` cannot skip the gate - [x] PR targets `develop` branch (not `main`) ## How to tell it's done - AuthGate is the first window (`resolveAppShell` → `auth` without a session). - `e2e/authgate.spec.ts` launches Electron **without** `DRIPNEX_E2E` and asserts magic-link Sign in, no Welcome, no continue-locally. - Grep of in-app/docs (excluding `docs/archived/**` and `docs/marketing-content.md`) has no killed manifesto lines. - `OFFICIAL_THEMES` is still `[]`. <!-- CURSOR_AGENT_PR_BODY_END --> <div><a href="https://cursor.com/agents/bc-97b399b1-3827-40cf-84d2-94d8ecc306a1?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> <a href="https://cursor.com/background-agent?bcId=bc-97b399b1-3827-40cf-84d2-94d8ecc306a1&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> </div> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added mandatory AuthGate sign-in or sign-up as the first application window. * Added magic-link authentication messaging and removed guest or local continuation. * Clarified local SQLite storage, Markdown export, optional sync, and customization options. * **Bug Fixes** * Updated onboarding and application states to correctly reflect authentication status. * **Tests** * Added end-to-end coverage for AuthGate launches and expanded application-shell test coverage. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Preview gutters can start at a GitHub line number and highlight the selected range so blob embeds do not look like they begin at line 1. Co-authored-by: Tomás Maritano <tomymaritano@gmail.com>
Paste a github.com blob URL into a note to fetch the selected lines in main (private repos use the stored token) and insert a fenced block with a source link. Settings → Integrations is one GitHub row: Connect, Connected (@login), Disconnect. status() returns login, never the PAT. Co-authored-by: Tomás Maritano <tomymaritano@gmail.com>
Keep compound highlight.js class names inside :global(...). Split feature/auth blob refs from the file path. Serialize GitHub links as [label](<canonical-url>) so fragments cannot inject a second destination. Co-authored-by: Tomás Maritano <tomymaritano@gmail.com>
GitHub blob embed + Connect in Settings → Integrations. Public blobs embed without auth; private repos use the stored PAT.
chore(release): merge main into develop
|
Warning Review limit reachedNext included review available in 49 minutes. View limit detailsLimit 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. Review configuration: ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (70)
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. Comment |
Contributor
|
🎉 This PR is included in version 0.21.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Promote 0.21.0: AuthGate first, Make this sendable in Edit with AI, and GitHub blob embed + Connect.
developis ahead ofv0.20.0with:feat(desktop): AuthGate first + LoginBackdrop(feat: AuthGate first and kill files-first identity #621)feat(desktop): Make this sendable in Edit with AI(fix(desktop): show registerAiCommand in Edit with AI #625)feat(desktop): GitHub blob embed and Connect(feat(desktop): GitHub blob embed and Connect #626)mainis an ancestor ofdevelop)All three product PRs are
feat:. semantic-release will tag v0.21.0.Connect v1 is PAT or
gh auth token, not a GitHub OAuth App.Merge with a merge commit. Do not squash. Squashing drops the
feathistory 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.