Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
175 commits
Select commit Hold shift + click to select a range
9a48ab2
feat(api): add notebookSyncLog table to Drizzle schema
tomymaritano Mar 11, 2026
3d49703
feat(storage): add notebook sync tracking migration with triggers
tomymaritano Mar 11, 2026
b6c0d96
feat(desktop): add notebook sync methods to ApiClient
tomymaritano Mar 11, 2026
403642e
test(sync-core): add tree validation unit tests for notebook sync
tomymaritano Mar 11, 2026
628b16b
feat(api): add notebook sync pull/push endpoints with tree validation
tomymaritano Mar 11, 2026
a9fde10
feat(storage): add sync methods to SQLiteNotebookRepository
tomymaritano Mar 11, 2026
26401e3
feat(desktop): integrate notebook sync into SyncService
tomymaritano Mar 11, 2026
db02671
fix(desktop): fix Timestamp type casts and use static createNotebook …
tomymaritano Mar 11, 2026
535d53c
refactor(sync-core): extract shared tree validation to sync-core package
tomymaritano Mar 11, 2026
4055595
chore: format notebook sync code and fix unused variable
tomymaritano Mar 11, 2026
305bcb5
test(sync-core): add SyncQueue unit tests
tomymaritano Mar 11, 2026
fcd26b9
test(sync-core): add SyncEngine unit tests
tomymaritano Mar 11, 2026
a88f19d
style: format sync-core test files
tomymaritano Mar 11, 2026
488359e
feat: surface sync conflicts in status indicator
tomymaritano Mar 11, 2026
f34ab5e
feat(storage): add tag sync tracking migration (UUID + triggers)
tomymaritano Mar 11, 2026
4d2c4ac
feat(api): add tagSyncLog table to server schema
tomymaritano Mar 11, 2026
fff8cd8
feat(api): add tag sync pull/push endpoints
tomymaritano Mar 11, 2026
0782ea8
feat(storage): add tag sync repository methods
tomymaritano Mar 11, 2026
1375fcd
fix(storage): remove double-invocation on transaction calls
tomymaritano Mar 11, 2026
51e8112
feat(desktop): add tag sync API client methods
tomymaritano Mar 11, 2026
2e60230
feat(desktop): add IPC bridge for tag sync
tomymaritano Mar 11, 2026
26f2757
feat(desktop): integrate tag sync into sync cycle
tomymaritano Mar 11, 2026
043148c
fix: address PR review feedback for notebook sync
tomymaritano Mar 11, 2026
e8250b8
Merge pull request #117 from tomymaritano/feature/notebook-sync
tomymaritano Mar 11, 2026
c913465
Merge pull request #118 from tomymaritano/feature/sync-tests
tomymaritano Mar 11, 2026
26bccb5
Merge pull request #119 from tomymaritano/feature/conflict-ui-polish
tomymaritano Mar 11, 2026
31a880e
Merge remote-tracking branch 'origin/develop' into feature/tag-sync
tomymaritano Mar 11, 2026
63610e4
Merge pull request #120 from tomymaritano/feature/tag-sync
tomymaritano Mar 11, 2026
73f9938
chore: add CodeRabbit configuration
tomymaritano Mar 11, 2026
cd01862
feat(plugin-api): add PluginHookOptions type for remark/rehype regist…
tomymaritano Mar 11, 2026
e1eb092
feat: add safePluginWrapper for graceful plugin failure handling
tomymaritano Mar 11, 2026
cb9a82e
feat: pass metadata through plugin registration in PluginRegistry
tomymaritano Mar 11, 2026
aa2bbf6
feat(desktop): add CSS for plugin error block boundaries in preview
tomymaritano Mar 11, 2026
46ae6de
feat: hot-reload preview when toggling plugins on/off
tomymaritano Mar 11, 2026
fbb5448
feat(plugin-api): upgrade remark/rehype stores with metadata, priorit…
tomymaritano Mar 11, 2026
4a087e7
test(plugin-api): update tests for new metadata and safePluginWrapper
tomymaritano Mar 11, 2026
3902345
docs: add remark/rehype hooks enhancement design plan
tomymaritano Mar 11, 2026
47fec79
docs: add theme system enhancement design
tomymaritano Mar 11, 2026
614b26f
docs: add theme system implementation plan
tomymaritano Mar 11, 2026
06a147d
feat(plugin-api): add theme types with token whitelist and ThemeRegis…
tomymaritano Mar 11, 2026
f5f8f25
feat(plugin-api): add useThemeOverrides hook and registerTheme contex…
tomymaritano Mar 11, 2026
5fe153e
feat: add nativeTheme IPC sync between main, preload, and renderer
tomymaritano Mar 11, 2026
56ba2a5
feat: add theme settings schema, UI selector, and startup restore
tomymaritano Mar 11, 2026
1f61ed7
test: add theme token validation and ThemeRegistry store tests
tomymaritano Mar 11, 2026
bf58f4a
docs: add Data Access API design document
tomymaritano Mar 11, 2026
7bda4c1
docs: add Data Access API implementation plan
tomymaritano Mar 11, 2026
b44fc75
feat(plugin-api): add DataAPI types, query options, and DataAccessError
tomymaritano Mar 11, 2026
9e16eec
feat(plugin-api): add DataAPI interface, bridge, and createDataAPI fa…
tomymaritano Mar 11, 2026
78a20cd
test(plugin-api): add comprehensive tests for createDataAPI
tomymaritano Mar 11, 2026
3d16297
feat(plugin-api): wire DataAPI into PluginRegistry and PluginHost
tomymaritano Mar 11, 2026
d8f8ca6
feat(plugin-api): export DataAPI types and factory from barrel
tomymaritano Mar 11, 2026
589fe17
feat: wire DataAPI bridge to IPC in App.tsx and fire data events
tomymaritano Mar 11, 2026
9f6f229
feat(api): add device list and rename endpoints
tomymaritano Mar 11, 2026
48195ab
feat(api): add device revoke and revoke-others endpoints
tomymaritano Mar 11, 2026
8ea9877
fix(api): reject token refresh for revoked devices
tomymaritano Mar 11, 2026
016a524
feat(desktop): add device management IPC handlers
tomymaritano Mar 11, 2026
0cd1214
feat(desktop): expose devices IPC bridge in preload
tomymaritano Mar 11, 2026
308c229
feat(desktop): add device management UI in settings
tomymaritano Mar 11, 2026
d1c3cb7
test(api): scaffold test infrastructure with vitest and helpers
tomymaritano Mar 11, 2026
2cb58bd
test(api): add note sync pull endpoint tests
tomymaritano Mar 11, 2026
fcc9d96
test(api): add note sync push and conflict detection tests
tomymaritano Mar 11, 2026
9f137d3
test(api): add notebook sync and tree validation tests
tomymaritano Mar 11, 2026
36e1a5b
test(api): add tag sync and sync status endpoint tests
tomymaritano Mar 11, 2026
d104dd1
test: add encryption round-trip tests for AES-256-GCM
tomymaritano Mar 11, 2026
a6b3558
docs: add sync hardening design and implementation plan
tomymaritano Mar 11, 2026
0e435e2
feat(storage): add sync_history migration for sync cycle metrics
tomymaritano Mar 11, 2026
080cb68
feat(storage): add sync history repository methods
tomymaritano Mar 11, 2026
3646cb2
feat(api-client): add bandwidth tracking to request method
tomymaritano Mar 11, 2026
57d4303
feat(sync): record sync history with per-cycle metrics and bandwidth
tomymaritano Mar 11, 2026
8153c78
feat(ipc): expose sync history via IPC and preload bridge
tomymaritano Mar 11, 2026
fc9ab96
feat(sync): auto-resume sync on network reconnect with debounce
tomymaritano Mar 11, 2026
99b3f56
feat(ui): add sync history section to Settings with bandwidth display
tomymaritano Mar 11, 2026
f4e904c
style: fix Prettier formatting across theme system and sync files
tomymaritano Mar 11, 2026
1e1a44c
docs: add Phase 2 completion design (2.4 + 2.6)
tomymaritano Mar 11, 2026
5af6419
docs: add Phase 2 completion implementation plan (2.4 + 2.6)
tomymaritano Mar 11, 2026
71bf473
fix(plugins): add enum and range to pluginScanner config schema type
tomymaritano Mar 11, 2026
249a2ad
feat(plugin-api): add validateConfigValue for config schema enforcement
tomymaritano Mar 11, 2026
801a738
feat(plugins): validate config values before persisting
tomymaritano Mar 11, 2026
17c9ff2
feat(plugins): track load timing per plugin in runtime store
tomymaritano Mar 11, 2026
3dabece
feat(plugins): add dev-mode Plugin Inspector with load timings and er…
tomymaritano Mar 11, 2026
38a5170
fix: address CodeRabbit review comments on remark/rehype hooks
tomymaritano Mar 11, 2026
c099dbd
fix: address CodeRabbit review comments on theme system
tomymaritano Mar 11, 2026
b8a4e81
docs: add theme system implementation plan
tomymaritano Mar 11, 2026
e013638
feat(plugin-api): add theme types with token whitelist and ThemeRegis…
tomymaritano Mar 11, 2026
c87de4e
feat(plugin-api): add useThemeOverrides hook and registerTheme contex…
tomymaritano Mar 11, 2026
2c753b3
feat: add nativeTheme IPC sync between main, preload, and renderer
tomymaritano Mar 11, 2026
6948a26
feat: add theme settings schema, UI selector, and startup restore
tomymaritano Mar 11, 2026
ff0e19b
test: add theme token validation and ThemeRegistry store tests
tomymaritano Mar 11, 2026
35c346e
style: fix Prettier formatting across theme system and sync files
tomymaritano Mar 11, 2026
35f3804
docs: complete documentation update for v0.8
tomymaritano Mar 11, 2026
09cf396
feat: add docs links, bug reporting, and contributor onboarding
tomymaritano Mar 11, 2026
d773955
Merge pull request #122 from tomymaritano/feature/theme-system
tomymaritano Mar 11, 2026
bc424cb
style: fix prettier formatting
tomymaritano Mar 11, 2026
c8d8833
style: fix prettier formatting
tomymaritano Mar 11, 2026
d8846d9
style: fix prettier formatting
tomymaritano Mar 11, 2026
188c7d8
style: fix prettier formatting
tomymaritano Mar 12, 2026
d86c2ec
style: fix prettier formatting
tomymaritano Mar 12, 2026
d096658
style: fix prettier formatting
tomymaritano Mar 12, 2026
65abbd6
style: fix prettier formatting
tomymaritano Mar 12, 2026
d6783af
fix: address CodeRabbit review comments on PR #127
tomymaritano Mar 12, 2026
df64ff5
fix: address CodeRabbit review comments on PR #123
tomymaritano Mar 12, 2026
f9766d3
style: fix prettier formatting in docs
tomymaritano Mar 12, 2026
452f3bd
Merge pull request #128 from tomymaritano/feature/docs-update
tomymaritano Mar 12, 2026
3f7b49d
Merge remote-tracking branch 'origin/develop' into feature/remark-reh…
tomymaritano Mar 12, 2026
5d112ff
style: fix formatting after merge
tomymaritano Mar 12, 2026
3d41f25
Merge pull request #121 from tomymaritano/feature/remark-rehype-hooks…
tomymaritano Mar 12, 2026
5e3af25
Merge remote-tracking branch 'origin/develop' into feature/phase2-com…
tomymaritano Mar 12, 2026
4b08f07
Merge pull request #127 from tomymaritano/feature/phase2-completion
tomymaritano Mar 12, 2026
7344281
Merge branch 'develop' into feature/data-access-api
tomymaritano Mar 12, 2026
b429ab3
Merge pull request #123 from tomymaritano/feature/data-access-api
tomymaritano Mar 12, 2026
3ed08b4
Merge branch 'develop' into feature/device-management
tomymaritano Mar 12, 2026
cdd2db0
Merge pull request #124 from tomymaritano/feature/device-management
tomymaritano Mar 12, 2026
177091d
Merge remote-tracking branch 'origin/develop' into feature/sync-tests
tomymaritano Mar 12, 2026
9f2ba75
Merge pull request #125 from tomymaritano/feature/sync-tests
tomymaritano Mar 12, 2026
cbe39c8
Merge remote-tracking branch 'origin/develop' into feature/sync-harde…
tomymaritano Mar 12, 2026
38b8128
Merge pull request #126 from tomymaritano/feature/sync-hardening
tomymaritano Mar 12, 2026
592d889
fix: resolve CodeRabbit review issues across merged PRs
tomymaritano Mar 12, 2026
09ac09a
chore: add Husky pre-commit hooks and auto-merge workflow
tomymaritano Mar 12, 2026
5cd5520
fix: use gh pr merge --auto for automerge workflow
tomymaritano Mar 12, 2026
2ef5a9a
ci: level up CI pipeline and Husky hooks
tomymaritano Mar 12, 2026
a8bf258
fix: remove process.env.NODE_ENV check from browser-only plugin-api
tomymaritano Mar 12, 2026
0999107
Merge pull request #129 from tomymaritano/fix/coderabbit-issues
tomymaritano Mar 12, 2026
40c5216
Merge pull request #130 from tomymaritano/feature/husky-automerge
tomymaritano Mar 12, 2026
d65eb5c
feat: unify docs-site and marketing-site into single Next.js app (#132)
tomymaritano Mar 12, 2026
8dc7079
feat: plugin auto-disable + CLI commands (Phase 2.5 & 3.1) (#131)
tomymaritano Mar 12, 2026
024e46c
fix: wrangler-action pnpm monorepo compatibility (#134)
tomymaritano Mar 12, 2026
193bbce
fix: create Cloudflare Pages project before deploy (#136)
tomymaritano Mar 12, 2026
d5cd8ed
fix: use npx wrangler for Cloudflare Pages deploy (#139)
tomymaritano Mar 12, 2026
cfe513d
fix: enable Next.js static export for Cloudflare Pages (#141)
tomymaritano Mar 12, 2026
21be0a5
feat(web): full website redesign with shadcn/ui + Magic UI (#142)
tomymaritano Mar 12, 2026
b959a25
feat(web,desktop,api): website redesign + auth UX rethink (#148)
tomymaritano Mar 13, 2026
00e25bf
Merge remote-tracking branch 'origin/main' into develop
tomymaritano Mar 13, 2026
04e4e18
feat(desktop,api): complete Phase 1-3 roadmap implementation
tomymaritano Mar 13, 2026
21af479
feat(ai,plugins): complete Phase 4-5 — AI knowledge & extensibility
tomymaritano Mar 13, 2026
4ccab57
feat(ai): complete Phase 4-5 — AI command execution + plugin bridge (…
tomymaritano Mar 13, 2026
e908280
chore: Tailwind v4 canonical classes + tsconfig cleanup (#151)
tomymaritano Mar 13, 2026
8a1f5c8
feat(sync): connect auth → payment → sync flow with license gating (#…
tomymaritano Mar 13, 2026
a24a231
feat(ai-core): provider-agnostic AI architecture with streaming (#156)
tomymaritano Mar 14, 2026
64d7010
feat(release): automated release pipeline with semantic-release (#157)
tomymaritano Mar 14, 2026
f686ab6
fix(web): add cleanUrls to fix /auth/verify 404 (#164)
tomymaritano Mar 16, 2026
9d64ea9
feat(ai): add tool use (function calling) to AI assistant (#165)
tomymaritano Mar 18, 2026
a472580
feat(share): public notes API with metadata for portfolio consumption…
tomymaritano Mar 18, 2026
6e05279
Merge remote-tracking branch 'origin/main' into develop
tomymaritano Mar 19, 2026
b2f65aa
fix(web,api): render shared notes as markdown + handle subscription.c…
tomymaritano Mar 19, 2026
01b51cb
Merge branch 'main' into develop
tomymaritano Mar 19, 2026
f6ddcad
feat(desktop): share store + note list and editor UI improvements
tomymaritano Mar 19, 2026
41c811c
feat: AI context scoping, newsletter unsubscribe page, create-note sc…
tomymaritano Mar 19, 2026
078c8f4
feat(mcp): add MCP server for Claude Code integration
tomymaritano Mar 20, 2026
7030149
fix(ui): modernize AI panel sidebar with cleaner chat design
tomymaritano Mar 20, 2026
ad325d8
feat(ai): OpenAI + Ollama providers, secure key storage, Connect flow UI
tomymaritano Mar 20, 2026
1680e01
fix(ui): settings visual refresh — card layout, tighter controls, cle…
tomymaritano Mar 20, 2026
31c5474
feat(admin): add dashboard with app metrics and admin API
tomymaritano Mar 20, 2026
7fd0ee1
feat(dashboard): standalone layout with sidebar, improved UI, admin e…
tomymaritano Mar 20, 2026
2bf9c1e
Merge remote-tracking branch 'origin/main' into develop
tomymaritano Mar 20, 2026
20e101c
ci: add workflow_dispatch to build workflow
tomymaritano Mar 20, 2026
e80caf8
fix(mcp): add sql.js type declarations for CI build
tomymaritano Mar 20, 2026
e3b2ef8
fix(ci): bust corrupted electron-builder cache for Linux build
tomymaritano Mar 20, 2026
1e20308
fix(ci): clean fpm cache before Linux build to fix 7zip extraction error
tomymaritano Mar 21, 2026
fb0dafc
feat: fix cross-device sync with E2EE key hierarchy and docs cleanup …
tomymaritano Mar 29, 2026
3b01d4b
fix: address Codex review findings for sync and deep link (#178)
tomymaritano Mar 29, 2026
3f0bc7f
Merge remote-tracking branch 'origin/main' into develop
tomymaritano Mar 29, 2026
578ad70
fix: move deep link handlers into primary instance block
tomymaritano Mar 29, 2026
ab4a486
chore(deps): bump pnpm/action-setup from 4 to 5 (#182)
dependabot[bot] Apr 2, 2026
dc5bc73
chore(deps): bump actions/labeler from 5 to 6 (#183)
dependabot[bot] Apr 2, 2026
075995d
chore(deps): bump github/codeql-action from 3 to 4 (#181)
dependabot[bot] Apr 2, 2026
0e85b24
fix: comprehensive project audit — CI, security, types, and dependencies
tomymaritano Apr 22, 2026
472bc4e
fix: floating promises, Electron upgrade, and renderer tests
tomymaritano Apr 22, 2026
4e36788
feat: design system primitives, save indicator, toast system, and UX …
tomymaritano Apr 23, 2026
d2d763f
refactor: design system consistency, onboarding, and sync progress
tomymaritano Apr 23, 2026
52a2bbe
feat: advanced search filters and functional plugin marketplace
tomymaritano Apr 23, 2026
68c56b6
feat: high-quality table rendering and improved document export
tomymaritano Apr 23, 2026
2672cdc
Merge remote-tracking branch 'origin/main' into develop
tomymaritano Apr 23, 2026
4ace564
fix: address all PR review comments (security, a11y, UX, minor)
tomymaritano Apr 23, 2026
9bccc62
fix: resolve remaining PR review comments (encryption, sync, CI, prel…
tomymaritano Apr 23, 2026
a1f8422
fix: resolve CI failures (mcp-server build, ESLint projectService)
tomymaritano Apr 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Readied — Environment Variables
# Copy this file to .env and fill in the values.
# The desktop app runs fully offline — these are only needed for the API and web app.

# ─── API (Cloudflare Workers) ───────────────────────────────
# Set via `wrangler secret put <KEY>` for deployed environments.
# For local dev, create packages/api/.dev.vars with these values.

TURSO_DATABASE_URL=libsql://your-db.turso.io
TURSO_AUTH_TOKEN=your_token_here
JWT_SECRET=your_secret_here # openssl rand -base64 32
RESEND_API_KEY=re_your_key_here # Resend email service
SITE_URL=https://readied.app

# ─── Stripe ─────────────────────────────────────────────────
STRIPE_SECRET_KEY=sk_test_your_key_here
STRIPE_WEBHOOK_SECRET=whsec_your_secret_here
STRIPE_PRICE_MONTHLY=price_your_monthly_id_here
STRIPE_PRICE_ANNUAL=price_your_annual_id_here

# ─── Admin ──────────────────────────────────────────────────
ADMIN_TOKEN=your_admin_token_here # Token for /admin endpoints

# ─── GitHub Actions (repo secrets) ──────────────────────────
# GH_TOKEN # PAT with repo scope (releases, PRs)
# CSC_LINK # macOS code signing cert (base64)
# CSC_KEY_PASSWORD # macOS cert password
# APPLE_ID # Apple notarization
# APPLE_APP_SPECIFIC_PASSWORD # Apple app-specific password
# APPLE_TEAM_ID # Apple Developer Team ID
59 changes: 0 additions & 59 deletions .github/workflows/auto-tag.yml

This file was deleted.

13 changes: 7 additions & 6 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
fetch-depth: 0

- name: Setup pnpm
uses: pnpm/action-setup@v4
uses: pnpm/action-setup@v5

- name: Setup Node.js
uses: actions/setup-node@v4
Expand Down Expand Up @@ -126,9 +126,9 @@ jobs:
steps:
- name: Publish GitHub Release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_TOKEN: ${{ secrets.GH_TOKEN }}
TAG_NAME: ${{ github.ref_name }}
run: gh release edit "$TAG_NAME" --draft=false --repo "${{ github.repository }}"
run: gh release edit "$TAG_NAME" --draft=false --repo "$GITHUB_REPOSITORY"

tweet:
needs: publish
Expand Down Expand Up @@ -159,11 +159,12 @@ jobs:
steps:
- name: Create sync PR
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_TOKEN: ${{ secrets.GH_TOKEN }}
TAG_NAME: ${{ github.ref_name }}
run: |
gh pr create \
--base develop \
--head main \
--title "chore: sync release ${{ github.ref_name }} back to develop" \
--title "chore: sync release $TAG_NAME back to develop" \
--body "Auto sync of release commit and changelog." \
--repo "${{ github.repository }}"
--repo "$GITHUB_REPOSITORY" || echo "PR already exists or cannot be created"
Comment on lines 160 to +170
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Description: Print the sync-develop job and fail while gh pr create still has broad `|| echo` suppression.
python - <<'PY'
from pathlib import Path

text = Path(".github/workflows/build.yml").read_text()
start = text.index("  sync-develop:")
block = text[start:]
print(block)

if "gh pr create" in block and "|| echo" in block:
    raise SystemExit("sync-develop still suppresses all gh pr create failures")
PY

Repository: tomymaritano/readide

Length of output: 659


Do not swallow sync PR creation failures with || echo.

The broad error suppression on line 170 turns authentication, API, rate-limit, and missing branch errors into silent successes, leaving develop unsynced after a release. Check for an existing PR first, then let real gh pr create failures fail the workflow.

🔧 Proposed fix
         run: |
-          gh pr create \
-            --base develop \
-            --head main \
-            --title "chore: sync release $TAG_NAME back to develop" \
-            --body "Auto sync of release commit and changelog." \
-            --repo "$GITHUB_REPOSITORY" || echo "PR already exists or cannot be created"
+          existing_pr="$(gh pr list \
+            --base develop \
+            --head main \
+            --state open \
+            --repo "$GITHUB_REPOSITORY" \
+            --json number \
+            --jq '.[0].number // empty')"
+
+          if [ -n "$existing_pr" ]; then
+            echo "Sync PR already exists: #$existing_pr"
+          else
+            gh pr create \
+              --base develop \
+              --head main \
+              --title "chore: sync release $TAG_NAME back to develop" \
+              --body "Auto sync of release commit and changelog." \
+              --repo "$GITHUB_REPOSITORY"
+          fi
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- name: Create sync PR
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_TOKEN: ${{ secrets.GH_TOKEN }}
TAG_NAME: ${{ github.ref_name }}
run: |
gh pr create \
--base develop \
--head main \
--title "chore: sync release ${{ github.ref_name }} back to develop" \
--title "chore: sync release $TAG_NAME back to develop" \
--body "Auto sync of release commit and changelog." \
--repo "${{ github.repository }}"
--repo "$GITHUB_REPOSITORY" || echo "PR already exists or cannot be created"
- name: Create sync PR
env:
GH_TOKEN: ${{ secrets.GH_TOKEN }}
TAG_NAME: ${{ github.ref_name }}
run: |
existing_pr="$(gh pr list \
--base develop \
--head main \
--state open \
--repo "$GITHUB_REPOSITORY" \
--json number \
--jq '.[0].number // empty')"
if [ -n "$existing_pr" ]; then
echo "Sync PR already exists: #$existing_pr"
else
gh pr create \
--base develop \
--head main \
--title "chore: sync release $TAG_NAME back to develop" \
--body "Auto sync of release commit and changelog." \
--repo "$GITHUB_REPOSITORY"
fi
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/build.yml around lines 160 - 170, The step currently
swallows all failures from the gh pr create command using "|| echo", which hides
auth/API/rate-limit/branch errors; change the logic to first check for an
existing sync PR (call out using gh pr list with --base develop --head main or
filtering by title/branch) and if none is returned, run gh pr create without the
"|| echo" fallback so genuine failures fail the workflow; update the step that
invokes gh pr create (the command named "gh pr create" in the Create sync PR
block) to implement the pre-check and remove the broad error suppression.

15 changes: 8 additions & 7 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v4
uses: pnpm/action-setup@v5

- name: Setup Node.js
uses: actions/setup-node@v4
Expand Down Expand Up @@ -51,7 +51,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: pnpm/action-setup@v5
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
Expand Down Expand Up @@ -83,7 +83,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: pnpm/action-setup@v5
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
Expand Down Expand Up @@ -119,7 +119,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: pnpm/action-setup@v5
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
Expand All @@ -146,7 +146,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: pnpm/action-setup@v5
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
Expand Down Expand Up @@ -174,7 +174,7 @@ jobs:
if: github.event_name == 'pull_request'
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: pnpm/action-setup@v5
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
Expand Down Expand Up @@ -210,8 +210,9 @@ jobs:
runs-on: ubuntu-latest
if: github.event_name == 'pull_request'
permissions:
contents: read
pull-requests: write
steps:
- uses: actions/labeler@v5
- uses: actions/labeler@v6
Comment thread
coderabbitai[bot] marked this conversation as resolved.
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
6 changes: 3 additions & 3 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,12 @@ jobs:
uses: actions/checkout@v4

- name: Initialize CodeQL
uses: github/codeql-action/init@v3
uses: github/codeql-action/init@v4
with:
languages: javascript-typescript

- name: Autobuild
uses: github/codeql-action/autobuild@v3
uses: github/codeql-action/autobuild@v4

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
uses: github/codeql-action/analyze@v4
4 changes: 2 additions & 2 deletions .github/workflows/deploy-api.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
steps:
- uses: actions/checkout@v4

- uses: pnpm/action-setup@v4
- uses: pnpm/action-setup@v5

- uses: actions/setup-node@v4
with:
Expand All @@ -46,7 +46,7 @@ jobs:
steps:
- uses: actions/checkout@v4

- uses: pnpm/action-setup@v4
- uses: pnpm/action-setup@v5

- uses: actions/setup-node@v4
with:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
steps:
- uses: actions/checkout@v4

- uses: pnpm/action-setup@v4
- uses: pnpm/action-setup@v5

- uses: actions/setup-node@v4
with:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
token: ${{ secrets.GH_TOKEN }}

- name: Setup pnpm
uses: pnpm/action-setup@v4
uses: pnpm/action-setup@v5

- name: Setup Node.js
uses: actions/setup-node@v4
Expand Down
2 changes: 1 addition & 1 deletion .husky/pre-push
Original file line number Diff line number Diff line change
@@ -1 +1 @@
pnpm test && pnpm typecheck
pnpm typecheck
4 changes: 2 additions & 2 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,9 +73,9 @@ Pattern for workspace packages with native deps:

## Type Version Alignment

`@types/react` is pinned to `18.3.27` via `pnpm.overrides` in root `package.json`. This prevents type mismatches when packages like `lucide-react` resolve a different `@types/react` version than the app uses.
Each app manages its own `@types/react` version: `apps/desktop` uses React 18 types and `apps/web` uses React 19 types. Global overrides were removed to prevent cross-app type conflicts.

**If you see `'X' cannot be used as a JSX component` errors:** Check that `pnpm.overrides` in root `package.json` still pins `@types/react` to match the React version used by `apps/desktop`.
**If you see `'X' cannot be used as a JSX component` errors:** Check that each app's `package.json` pins `@types/react` to match its React version.

## Testing

Expand Down
4 changes: 2 additions & 2 deletions apps/desktop/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
"better-sqlite3": "^11.7.0",
"cross-fetch": "^4.1.0",
"diff": "^8.0.2",
"electron-updater": "^6.6.2",
"electron-updater": "^6.8.3",
"highlight.js": "^11.11.1",
"isomorphic-git": "^1.36.1",
"lucide-react": "^0.562.0",
Expand All @@ -75,7 +75,7 @@
"@types/react-dom": "^18.2.25",
"@types/turndown": "^5.0.6",
"@vitejs/plugin-react": "^4.2.1",
"electron": "^39.8.5",
"electron": "^35.7.5",
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Inspect git history for the prior electron version to determine whether this is an upgrade or a downgrade.
git log --oneline -n 20 -- apps/desktop/package.json
git show HEAD~1:apps/desktop/package.json 2>/dev/null | rg -n '"electron"' || true

Repository: tomymaritano/readide

Length of output: 145


🌐 Web query:

Electron 35.7.5 release date and security fixes vs Electron 39.x

💡 Result:

Electron 35.7.5 was released around late 2025 (after v35.7.0 on 2025-07-02 and before 2026-04-23). It is a security patch primarily fixing CVE-2025-55305 (ASAR Integrity Bypass via resource modification, GHSA-vmqv-hx8q-j7mg), which allows arbitrary code injection by modifying the resources folder when embeddedAsarIntegrityValidation and onlyLoadAppFromAsar fuses are enabled. The release notes list only a non-security fix for shell.openPath, but security advisories confirm it patches this vulnerability affecting <35.7.5. Electron 35 is end-of-life (Chromium M134, Node 22), with developers urged to upgrade. Electron 39.x (stable release ~Oct/Nov 2025, latest v39.8.x in Mar 2026) uses newer Chromium M142 (vs 35's M134), Node 22.20+, V8 14.2 (vs 13.4). It includes all 35.x security fixes plus many additional Chromium-upstream security patches and Electron-specific fixes for multiple CVEs (e.g., CVE-2026-34764 to CVE-2026-34781 series, fixed in 39.8.0+), such as context isolation bypasses via VideoFrame/contextBridge (CVE-2026-34780), commandLineSwitches injection (CVE-2026-34769), window.open target scoping (CVE-2026-34765), webRequest header injection (CVE-2026-34767), and more. These address renderer sandbox escapes, privilege escalations, and other high-severity issues. 39.x also stabilizes ASAR integrity checking. Upgrade to 39.x for comprehensive security improvements, newer web platform features, and ongoing support (latest three majors supported as of 2026-04-23).

Citations:


🏁 Script executed:

#!/bin/bash
# Get the git diff for the package.json file to see the actual change
git diff HEAD~1 HEAD -- apps/desktop/package.json | grep -A 3 -B 3 "electron" || echo "No diff available"

# Also try to show the previous version directly
git show HEAD~1:apps/desktop/package.json 2>/dev/null | grep -A 1 -B 1 '"electron"' || echo "Previous version not found"

# Check if there are any other recent commits affecting this file
git log --all --oneline -- apps/desktop/package.json | head -5

Repository: tomymaritano/readide

Length of output: 477


Confirm Electron version rollback: This is a downgrade from 39.8.5 to 35.7.5, not the 29→35 upgrade stated in the PR narrative.

Git history shows Electron was previously bumped from 29.4.6 → 39.8.4 → 39.8.5 (commits #184#185). The current change rolls back to 35.7.5, which is a downgrade that removes security fixes. Electron 39.x includes patches for multiple CVEs (CVE-2026-34764 series) addressing renderer sandbox escapes and privilege escalations, plus newer Chromium M142 and Node 22.20+ that 35.7.5 (Chromium M134) lacks. This version downgrade contradicts the stated PR goal and reintroduces resolved security issues—verify whether reverting to 35 is intentional and why the more recent 39.8.5 was rejected.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/desktop/package.json` at line 78, The package.json electron version
change appears to be an unintended downgrade (from 39.8.5 to 35.7.5); confirm
intent and either restore the dependency "electron" back to the secure 39.8.5
release or document why 35.7.5 is required (security tradeoffs, blocking
regressions, or vendor constraints). Update the "electron" entry in package.json
to the chosen version, run your package manager install and CI/tests to verify
compatibility, and update the PR description/commit message to state explicitly
why the rollback to 35.7.5 is necessary if you keep it (including any security
mitigations or backported patches).

"electron-builder": "^26.0.12",
"electron-devtools-installer": "^4.0.0",
"electron-vite": "^2.1.0",
Expand Down
2 changes: 1 addition & 1 deletion apps/desktop/src/main/ai/ipc-ai.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// apps/desktop/src/main/ai/ipc-ai.ts
import { ipcMain, app, dialog } from 'electron';
import { readFile, writeFile } from 'node:fs/promises';

Check warning on line 3 in apps/desktop/src/main/ai/ipc-ai.ts

View workflow job for this annotation

GitHub Actions / lint

`node:fs/promises` import should occur before import of `electron`

Check warning on line 3 in apps/desktop/src/main/ai/ipc-ai.ts

View workflow job for this annotation

GitHub Actions / lint

`node:fs/promises` import should occur before import of `electron`
import type { AIService, ChatHandle, ToolChatHandle, ToolCall } from '@readied/ai-core';
import type { ToolRegistry } from '@readied/ai-core';

Expand Down Expand Up @@ -86,7 +86,7 @@
}
activeHandles.get(windowId)!.set(handle.requestId, handle);

consumeStream(event.sender, handle);
void consumeStream(event.sender, handle);

return { requestId: handle.requestId };
}
Expand Down
Loading
Loading