Skip to content

chore(release): promote 0.21.0 - #627

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

chore(release): promote 0.21.0#627
tomymaritano merged 10 commits into
mainfrom
develop

Conversation

@tomymaritano

Copy link
Copy Markdown
Collaborator

Promote 0.21.0: AuthGate first, Make this sendable in Edit with AI, and GitHub blob embed + Connect.

develop is ahead of v0.20.0 with:

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 feat 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.

tomymaritano and others added 10 commits August 26, 2026 14:04
<!-- 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>&nbsp;<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>&nbsp;</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>&nbsp;<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>&nbsp;</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
@coderabbitai

coderabbitai Bot commented Aug 26, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 49 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: e557cd41-7102-47aa-b798-ded3a49e83b0

📥 Commits

Reviewing files that changed from the base of the PR and between 2963640 and bb9a9ce.

📒 Files selected for processing (70)
  • CLAUDE.md
  • README.md
  • ROADMAP.md
  • apps/desktop/e2e/README.md
  • apps/desktop/e2e/authgate.spec.ts
  • apps/desktop/e2e/fixtures.ts
  • apps/desktop/package.json
  • apps/desktop/src/main/integrations/github/__tests__/resolvePaste.test.ts
  • apps/desktop/src/main/integrations/github/ipc.ts
  • apps/desktop/src/main/integrations/github/service.ts
  • apps/desktop/src/main/windows/mainWindow.ts
  • apps/desktop/src/main/windows/noteWindow.ts
  • apps/desktop/src/main/windows/paths.ts
  • apps/desktop/src/main/windows/quickCaptureWindow.ts
  • apps/desktop/src/main/windows/settingsWindow.ts
  • apps/desktop/src/preload/api/app.ts
  • apps/desktop/src/preload/api/integrations.ts
  • apps/desktop/src/preload/tsconfig.json
  • apps/desktop/src/renderer/App.tsx
  • apps/desktop/src/renderer/components/CommandPalette.tsx
  • apps/desktop/src/renderer/components/MarkdownEditor.tsx
  • apps/desktop/src/renderer/components/NoteList.tsx
  • apps/desktop/src/renderer/components/Welcome.module.css
  • apps/desktop/src/renderer/components/Welcome.tsx
  • apps/desktop/src/renderer/components/__tests__/welcomeCopy.test.ts
  • apps/desktop/src/renderer/components/auth/AuthGate.module.css
  • apps/desktop/src/renderer/components/auth/AuthGate.tsx
  • apps/desktop/src/renderer/components/auth/LoginBackdrop.module.css
  • apps/desktop/src/renderer/components/auth/LoginBackdrop.tsx
  • apps/desktop/src/renderer/components/auth/__tests__/hexToRgba.test.ts
  • apps/desktop/src/renderer/components/auth/hexToRgba.ts
  • apps/desktop/src/renderer/components/editor/FenceBlock.tsx
  • apps/desktop/src/renderer/components/editor/MarkdownPreview.module.css
  • apps/desktop/src/renderer/components/editor/SelectionToolbar.tsx
  • apps/desktop/src/renderer/components/editor/__tests__/githubPaste.test.ts
  • apps/desktop/src/renderer/components/editor/__tests__/markdownPreviewCss.test.ts
  • apps/desktop/src/renderer/components/editor/__tests__/selectionAiCommands.test.ts
  • apps/desktop/src/renderer/components/editor/githubPaste.ts
  • apps/desktop/src/renderer/components/editor/selectionAiCommands.ts
  • apps/desktop/src/renderer/components/welcomeCopy.ts
  • apps/desktop/src/renderer/data/nowBoard.md
  • apps/desktop/src/renderer/lib/__tests__/remarkFenceMeta.test.ts
  • apps/desktop/src/renderer/lib/remarkFenceMeta.ts
  • apps/desktop/src/renderer/pages/settings/sections/GitHubCard.tsx
  • apps/desktop/src/renderer/pages/settings/sections/IntegrationsSection.module.css
  • apps/desktop/src/renderer/pages/settings/sections/__tests__/githubCard.test.ts
  • apps/desktop/src/renderer/pages/settings/sections/githubCardCopy.ts
  • apps/desktop/src/renderer/utils/__tests__/appShell.test.ts
  • apps/desktop/src/renderer/utils/appShell.ts
  • apps/desktop/src/shared/__tests__/githubBlob.test.ts
  • apps/desktop/src/shared/__tests__/playwrightAuthBypass.test.ts
  • apps/desktop/src/shared/githubBlob.ts
  • apps/desktop/src/shared/playwrightAuthBypass.ts
  • docs/BRAND.md
  • docs/NOW.md
  • docs/VISUAL_LANGUAGE.md
  • docs/adr/002-authgate-stays.md
  • docs/ai/README.md
  • docs/ai/updates.md
  • docs/philosophy.md
  • docs/releases/v0.19.1.md
  • package.json
  • packages/markdown/src/fenceInfo.ts
  • packages/markdown/tests/fenceInfo.test.ts
  • packages/plugin-api/src/ai/aiCommandStore.ts
  • packages/plugin-api/src/types.ts
  • packages/plugin-api/tests/registry.test.ts
  • packages/product-config/src/facade.ts
  • packages/product-config/src/plans.ts
  • plan.md

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.

@github-actions github-actions Bot added dependencies Pull requests that update a dependency file package:plugin-api app:desktop size/XL labels Aug 26, 2026
@tomymaritano
tomymaritano merged commit 8c38b5b into main Aug 26, 2026
18 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants