Skip to content

build: upgrade Electron and SQLite native runtime - #448

Open
AmagiDDmxh wants to merge 1 commit into
paperboytm:mainfrom
AmagiDDmxh:feat/electron43-native-upgrade
Open

build: upgrade Electron and SQLite native runtime#448
AmagiDDmxh wants to merge 1 commit into
paperboytm:mainfrom
AmagiDDmxh:feat/electron43-native-upgrade

Conversation

@AmagiDDmxh

@AmagiDDmxhAmagiDDmxh commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Why

The app was on Electron 34, outside Electron's latest-three-major support window, while the shared native database dependency remained on better-sqlite3 11. The two upgrades need to move together because Spool uses the same addon from Electron, Node-based tests, and the CLI.

better-sqlite3 12 drops EOL Node/Electron targets, supports Node 20-26, and contains the V8 compatibility needed by current Electron releases. This PR treats the change as one native-runtime migration rather than an automated dependency bump.

What changed

  • Upgrade Electron from 34.5.8 to 43.1.1.
  • Upgrade the single workspace better-sqlite3 version from 11.10.0 to 12.11.1 across app, core, and CLI.
  • Upgrade @electron/rebuild to 4.2.0, @electron/asar to 4.2.0, and electron-builder to 26.15.3.
  • Require Node >=22.12 for the development toolchain.
  • Declare Node 22 types directly in share-backend, which imports Node test APIs, instead of imposing a repository-wide type override.
  • Let @electron/rebuild resolve its compatible node-abi 4.33.0 through the lockfile; no transitive override is required for Electron 43 ABI 148.
  • Print Electron, bundled Node, V8, and module ABI before the native smoke loads the addon.

Verification

  • Frozen and regular pnpm install both passed without changing the lockfile.
  • All 13 workspace typecheck tasks passed.
  • Type-aware Oxlint passed.
  • Core: 417 passed, 1 skipped.
  • App: 450 passed in the full unit run used for the migration; the review rerun also passed 422 tests before two existing fixed-timeout build/load checks exceeded their local budgets under system load.
  • Share backend: 250 passed, including the deployment test that previously exposed mixed Node URL declarations.
  • Native smoke passed on Electron 43.1.1 / Node 24.18.0 / V8 15.0 / ABI 148, then restored and loaded the addon under local Node ABI 137.
  • The two security specs that hit teardown contention in the full local E2E run passed 3/3 with one Playwright worker, including app cleanup.
  • macOS arm64 packaging completed; deep strict codesign verification passed.
  • The packaged-app smoke passed indexing/search, packaged SQLite, Claude/Codex ACP assets, Security Scan, and purge.
  • The amended PR head passed Ubuntu unit, Ubuntu E2E, and macOS E2E.

Size and timing

  • App bundle: 643.9 MB, up from the Stacked features 6: package size #417 baseline of 601.7 MB (+42.2 MB).
  • Electron Framework: 273.9 MB, up from approximately 232 MB.
  • DMG and ZIP: approximately 224 MB each.
  • Local signed package run: approximately 11 minutes, mostly resource signing in the newer Electron Framework; release CI retains a 30-minute budget.

@AmagiDDmxh
AmagiDDmxhforce-pushed the feat/electron43-native-upgrade branch from 1a81414 to 3c04582CompareJuly 16, 2026 04:39
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@AmagiDDmxh
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
build: upgrade Electron and SQLite native runtime by AmagiDDmxh · Pull Request #448 · paperboytm/spool · GitHub
Skip to content

build: upgrade Electron and SQLite native runtime - #448

Open
AmagiDDmxh wants to merge 1 commit into
paperboytm:mainfrom
AmagiDDmxh:feat/electron43-native-upgrade
Open

build: upgrade Electron and SQLite native runtime#448
AmagiDDmxh wants to merge 1 commit into
paperboytm:mainfrom
AmagiDDmxh:feat/electron43-native-upgrade

Conversation

@AmagiDDmxh

@AmagiDDmxhAmagiDDmxh commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Why

The app was on Electron 34, outside Electron's latest-three-major support window, while the shared native database dependency remained on better-sqlite3 11. The two upgrades need to move together because Spool uses the same addon from Electron, Node-based tests, and the CLI.

better-sqlite3 12 drops EOL Node/Electron targets, supports Node 20-26, and contains the V8 compatibility needed by current Electron releases. This PR treats the change as one native-runtime migration rather than an automated dependency bump.

What changed

  • Upgrade Electron from 34.5.8 to 43.1.1.
  • Upgrade the single workspace better-sqlite3 version from 11.10.0 to 12.11.1 across app, core, and CLI.
  • Upgrade @electron/rebuild to 4.2.0, @electron/asar to 4.2.0, and electron-builder to 26.15.3.
  • Require Node >=22.12 for the development toolchain.
  • Declare Node 22 types directly in share-backend, which imports Node test APIs, instead of imposing a repository-wide type override.
  • Let @electron/rebuild resolve its compatible node-abi 4.33.0 through the lockfile; no transitive override is required for Electron 43 ABI 148.
  • Print Electron, bundled Node, V8, and module ABI before the native smoke loads the addon.

Verification

  • Frozen and regular pnpm install both passed without changing the lockfile.
  • All 13 workspace typecheck tasks passed.
  • Type-aware Oxlint passed.
  • Core: 417 passed, 1 skipped.
  • App: 450 passed in the full unit run used for the migration; the review rerun also passed 422 tests before two existing fixed-timeout build/load checks exceeded their local budgets under system load.
  • Share backend: 250 passed, including the deployment test that previously exposed mixed Node URL declarations.
  • Native smoke passed on Electron 43.1.1 / Node 24.18.0 / V8 15.0 / ABI 148, then restored and loaded the addon under local Node ABI 137.
  • The two security specs that hit teardown contention in the full local E2E run passed 3/3 with one Playwright worker, including app cleanup.
  • macOS arm64 packaging completed; deep strict codesign verification passed.
  • The packaged-app smoke passed indexing/search, packaged SQLite, Claude/Codex ACP assets, Security Scan, and purge.
  • The amended PR head passed Ubuntu unit, Ubuntu E2E, and macOS E2E.

Size and timing

  • App bundle: 643.9 MB, up from the Stacked features 6: package size #417 baseline of 601.7 MB (+42.2 MB).
  • Electron Framework: 273.9 MB, up from approximately 232 MB.
  • DMG and ZIP: approximately 224 MB each.
  • Local signed package run: approximately 11 minutes, mostly resource signing in the newer Electron Framework; release CI retains a 30-minute budget.

@AmagiDDmxh
AmagiDDmxhforce-pushed the feat/electron43-native-upgrade branch from 1a81414 to 3c04582CompareJuly 16, 2026 04:39
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@AmagiDDmxh
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' build: upgrade Electron and SQLite native runtime by AmagiDDmxh · Pull Request #448 · paperboytm/spool · GitHub
Skip to content

build: upgrade Electron and SQLite native runtime - #448

Open
AmagiDDmxh wants to merge 1 commit into
paperboytm:mainfrom
AmagiDDmxh:feat/electron43-native-upgrade
Open

build: upgrade Electron and SQLite native runtime#448
AmagiDDmxh wants to merge 1 commit into
paperboytm:mainfrom
AmagiDDmxh:feat/electron43-native-upgrade

Conversation

@AmagiDDmxh

@AmagiDDmxhAmagiDDmxh commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Why

The app was on Electron 34, outside Electron's latest-three-major support window, while the shared native database dependency remained on better-sqlite3 11. The two upgrades need to move together because Spool uses the same addon from Electron, Node-based tests, and the CLI.

better-sqlite3 12 drops EOL Node/Electron targets, supports Node 20-26, and contains the V8 compatibility needed by current Electron releases. This PR treats the change as one native-runtime migration rather than an automated dependency bump.

What changed

  • Upgrade Electron from 34.5.8 to 43.1.1.
  • Upgrade the single workspace better-sqlite3 version from 11.10.0 to 12.11.1 across app, core, and CLI.
  • Upgrade @electron/rebuild to 4.2.0, @electron/asar to 4.2.0, and electron-builder to 26.15.3.
  • Require Node >=22.12 for the development toolchain.
  • Declare Node 22 types directly in share-backend, which imports Node test APIs, instead of imposing a repository-wide type override.
  • Let @electron/rebuild resolve its compatible node-abi 4.33.0 through the lockfile; no transitive override is required for Electron 43 ABI 148.
  • Print Electron, bundled Node, V8, and module ABI before the native smoke loads the addon.

Verification

  • Frozen and regular pnpm install both passed without changing the lockfile.
  • All 13 workspace typecheck tasks passed.
  • Type-aware Oxlint passed.
  • Core: 417 passed, 1 skipped.
  • App: 450 passed in the full unit run used for the migration; the review rerun also passed 422 tests before two existing fixed-timeout build/load checks exceeded their local budgets under system load.
  • Share backend: 250 passed, including the deployment test that previously exposed mixed Node URL declarations.
  • Native smoke passed on Electron 43.1.1 / Node 24.18.0 / V8 15.0 / ABI 148, then restored and loaded the addon under local Node ABI 137.
  • The two security specs that hit teardown contention in the full local E2E run passed 3/3 with one Playwright worker, including app cleanup.
  • macOS arm64 packaging completed; deep strict codesign verification passed.
  • The packaged-app smoke passed indexing/search, packaged SQLite, Claude/Codex ACP assets, Security Scan, and purge.
  • The amended PR head passed Ubuntu unit, Ubuntu E2E, and macOS E2E.

Size and timing

  • App bundle: 643.9 MB, up from the Stacked features 6: package size #417 baseline of 601.7 MB (+42.2 MB).
  • Electron Framework: 273.9 MB, up from approximately 232 MB.
  • DMG and ZIP: approximately 224 MB each.
  • Local signed package run: approximately 11 minutes, mostly resource signing in the newer Electron Framework; release CI retains a 30-minute budget.

@AmagiDDmxh
AmagiDDmxhforce-pushed the feat/electron43-native-upgrade branch from 1a81414 to 3c04582CompareJuly 16, 2026 04:39
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@AmagiDDmxh
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' build: upgrade Electron and SQLite native runtime by AmagiDDmxh · Pull Request #448 · paperboytm/spool · GitHub
Skip to content

build: upgrade Electron and SQLite native runtime - #448

Open
AmagiDDmxh wants to merge 1 commit into
paperboytm:mainfrom
AmagiDDmxh:feat/electron43-native-upgrade
Open

build: upgrade Electron and SQLite native runtime#448
AmagiDDmxh wants to merge 1 commit into
paperboytm:mainfrom
AmagiDDmxh:feat/electron43-native-upgrade

Conversation

@AmagiDDmxh

@AmagiDDmxhAmagiDDmxh commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Why

The app was on Electron 34, outside Electron's latest-three-major support window, while the shared native database dependency remained on better-sqlite3 11. The two upgrades need to move together because Spool uses the same addon from Electron, Node-based tests, and the CLI.

better-sqlite3 12 drops EOL Node/Electron targets, supports Node 20-26, and contains the V8 compatibility needed by current Electron releases. This PR treats the change as one native-runtime migration rather than an automated dependency bump.

What changed

  • Upgrade Electron from 34.5.8 to 43.1.1.
  • Upgrade the single workspace better-sqlite3 version from 11.10.0 to 12.11.1 across app, core, and CLI.
  • Upgrade @electron/rebuild to 4.2.0, @electron/asar to 4.2.0, and electron-builder to 26.15.3.
  • Require Node >=22.12 for the development toolchain.
  • Declare Node 22 types directly in share-backend, which imports Node test APIs, instead of imposing a repository-wide type override.
  • Let @electron/rebuild resolve its compatible node-abi 4.33.0 through the lockfile; no transitive override is required for Electron 43 ABI 148.
  • Print Electron, bundled Node, V8, and module ABI before the native smoke loads the addon.

Verification

  • Frozen and regular pnpm install both passed without changing the lockfile.
  • All 13 workspace typecheck tasks passed.
  • Type-aware Oxlint passed.
  • Core: 417 passed, 1 skipped.
  • App: 450 passed in the full unit run used for the migration; the review rerun also passed 422 tests before two existing fixed-timeout build/load checks exceeded their local budgets under system load.
  • Share backend: 250 passed, including the deployment test that previously exposed mixed Node URL declarations.
  • Native smoke passed on Electron 43.1.1 / Node 24.18.0 / V8 15.0 / ABI 148, then restored and loaded the addon under local Node ABI 137.
  • The two security specs that hit teardown contention in the full local E2E run passed 3/3 with one Playwright worker, including app cleanup.
  • macOS arm64 packaging completed; deep strict codesign verification passed.
  • The packaged-app smoke passed indexing/search, packaged SQLite, Claude/Codex ACP assets, Security Scan, and purge.
  • The amended PR head passed Ubuntu unit, Ubuntu E2E, and macOS E2E.

Size and timing

  • App bundle: 643.9 MB, up from the Stacked features 6: package size #417 baseline of 601.7 MB (+42.2 MB).
  • Electron Framework: 273.9 MB, up from approximately 232 MB.
  • DMG and ZIP: approximately 224 MB each.
  • Local signed package run: approximately 11 minutes, mostly resource signing in the newer Electron Framework; release CI retains a 30-minute budget.

@AmagiDDmxh
AmagiDDmxhforce-pushed the feat/electron43-native-upgrade branch from 1a81414 to 3c04582CompareJuly 16, 2026 04:39
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@AmagiDDmxh
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' build: upgrade Electron and SQLite native runtime by AmagiDDmxh · Pull Request #448 · paperboytm/spool · GitHub
Skip to content

build: upgrade Electron and SQLite native runtime - #448

Open
AmagiDDmxh wants to merge 1 commit into
paperboytm:mainfrom
AmagiDDmxh:feat/electron43-native-upgrade
Open

build: upgrade Electron and SQLite native runtime#448
AmagiDDmxh wants to merge 1 commit into
paperboytm:mainfrom
AmagiDDmxh:feat/electron43-native-upgrade

Conversation

@AmagiDDmxh

@AmagiDDmxhAmagiDDmxh commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Why

The app was on Electron 34, outside Electron's latest-three-major support window, while the shared native database dependency remained on better-sqlite3 11. The two upgrades need to move together because Spool uses the same addon from Electron, Node-based tests, and the CLI.

better-sqlite3 12 drops EOL Node/Electron targets, supports Node 20-26, and contains the V8 compatibility needed by current Electron releases. This PR treats the change as one native-runtime migration rather than an automated dependency bump.

What changed

  • Upgrade Electron from 34.5.8 to 43.1.1.
  • Upgrade the single workspace better-sqlite3 version from 11.10.0 to 12.11.1 across app, core, and CLI.
  • Upgrade @electron/rebuild to 4.2.0, @electron/asar to 4.2.0, and electron-builder to 26.15.3.
  • Require Node >=22.12 for the development toolchain.
  • Declare Node 22 types directly in share-backend, which imports Node test APIs, instead of imposing a repository-wide type override.
  • Let @electron/rebuild resolve its compatible node-abi 4.33.0 through the lockfile; no transitive override is required for Electron 43 ABI 148.
  • Print Electron, bundled Node, V8, and module ABI before the native smoke loads the addon.

Verification

  • Frozen and regular pnpm install both passed without changing the lockfile.
  • All 13 workspace typecheck tasks passed.
  • Type-aware Oxlint passed.
  • Core: 417 passed, 1 skipped.
  • App: 450 passed in the full unit run used for the migration; the review rerun also passed 422 tests before two existing fixed-timeout build/load checks exceeded their local budgets under system load.
  • Share backend: 250 passed, including the deployment test that previously exposed mixed Node URL declarations.
  • Native smoke passed on Electron 43.1.1 / Node 24.18.0 / V8 15.0 / ABI 148, then restored and loaded the addon under local Node ABI 137.
  • The two security specs that hit teardown contention in the full local E2E run passed 3/3 with one Playwright worker, including app cleanup.
  • macOS arm64 packaging completed; deep strict codesign verification passed.
  • The packaged-app smoke passed indexing/search, packaged SQLite, Claude/Codex ACP assets, Security Scan, and purge.
  • The amended PR head passed Ubuntu unit, Ubuntu E2E, and macOS E2E.

Size and timing

  • App bundle: 643.9 MB, up from the Stacked features 6: package size #417 baseline of 601.7 MB (+42.2 MB).
  • Electron Framework: 273.9 MB, up from approximately 232 MB.
  • DMG and ZIP: approximately 224 MB each.
  • Local signed package run: approximately 11 minutes, mostly resource signing in the newer Electron Framework; release CI retains a 30-minute budget.

@AmagiDDmxh
AmagiDDmxhforce-pushed the feat/electron43-native-upgrade branch from 1a81414 to 3c04582CompareJuly 16, 2026 04:39
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@AmagiDDmxh
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' build: upgrade Electron and SQLite native runtime by AmagiDDmxh · Pull Request #448 · paperboytm/spool · GitHub
Skip to content

build: upgrade Electron and SQLite native runtime - #448

Open
AmagiDDmxh wants to merge 1 commit into
paperboytm:mainfrom
AmagiDDmxh:feat/electron43-native-upgrade
Open

build: upgrade Electron and SQLite native runtime#448
AmagiDDmxh wants to merge 1 commit into
paperboytm:mainfrom
AmagiDDmxh:feat/electron43-native-upgrade

Conversation

@AmagiDDmxh

@AmagiDDmxhAmagiDDmxh commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Why

The app was on Electron 34, outside Electron's latest-three-major support window, while the shared native database dependency remained on better-sqlite3 11. The two upgrades need to move together because Spool uses the same addon from Electron, Node-based tests, and the CLI.

better-sqlite3 12 drops EOL Node/Electron targets, supports Node 20-26, and contains the V8 compatibility needed by current Electron releases. This PR treats the change as one native-runtime migration rather than an automated dependency bump.

What changed

  • Upgrade Electron from 34.5.8 to 43.1.1.
  • Upgrade the single workspace better-sqlite3 version from 11.10.0 to 12.11.1 across app, core, and CLI.
  • Upgrade @electron/rebuild to 4.2.0, @electron/asar to 4.2.0, and electron-builder to 26.15.3.
  • Require Node >=22.12 for the development toolchain.
  • Declare Node 22 types directly in share-backend, which imports Node test APIs, instead of imposing a repository-wide type override.
  • Let @electron/rebuild resolve its compatible node-abi 4.33.0 through the lockfile; no transitive override is required for Electron 43 ABI 148.
  • Print Electron, bundled Node, V8, and module ABI before the native smoke loads the addon.

Verification

  • Frozen and regular pnpm install both passed without changing the lockfile.
  • All 13 workspace typecheck tasks passed.
  • Type-aware Oxlint passed.
  • Core: 417 passed, 1 skipped.
  • App: 450 passed in the full unit run used for the migration; the review rerun also passed 422 tests before two existing fixed-timeout build/load checks exceeded their local budgets under system load.
  • Share backend: 250 passed, including the deployment test that previously exposed mixed Node URL declarations.
  • Native smoke passed on Electron 43.1.1 / Node 24.18.0 / V8 15.0 / ABI 148, then restored and loaded the addon under local Node ABI 137.
  • The two security specs that hit teardown contention in the full local E2E run passed 3/3 with one Playwright worker, including app cleanup.
  • macOS arm64 packaging completed; deep strict codesign verification passed.
  • The packaged-app smoke passed indexing/search, packaged SQLite, Claude/Codex ACP assets, Security Scan, and purge.
  • The amended PR head passed Ubuntu unit, Ubuntu E2E, and macOS E2E.

Size and timing

  • App bundle: 643.9 MB, up from the Stacked features 6: package size #417 baseline of 601.7 MB (+42.2 MB).
  • Electron Framework: 273.9 MB, up from approximately 232 MB.
  • DMG and ZIP: approximately 224 MB each.
  • Local signed package run: approximately 11 minutes, mostly resource signing in the newer Electron Framework; release CI retains a 30-minute budget.

@AmagiDDmxh
AmagiDDmxhforce-pushed the feat/electron43-native-upgrade branch from 1a81414 to 3c04582CompareJuly 16, 2026 04:39
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@AmagiDDmxh
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' build: upgrade Electron and SQLite native runtime by AmagiDDmxh · Pull Request #448 · paperboytm/spool · GitHub
Skip to content

build: upgrade Electron and SQLite native runtime - #448

Open
AmagiDDmxh wants to merge 1 commit into
paperboytm:mainfrom
AmagiDDmxh:feat/electron43-native-upgrade
Open

build: upgrade Electron and SQLite native runtime#448
AmagiDDmxh wants to merge 1 commit into
paperboytm:mainfrom
AmagiDDmxh:feat/electron43-native-upgrade

Conversation

@AmagiDDmxh

@AmagiDDmxhAmagiDDmxh commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Why

The app was on Electron 34, outside Electron's latest-three-major support window, while the shared native database dependency remained on better-sqlite3 11. The two upgrades need to move together because Spool uses the same addon from Electron, Node-based tests, and the CLI.

better-sqlite3 12 drops EOL Node/Electron targets, supports Node 20-26, and contains the V8 compatibility needed by current Electron releases. This PR treats the change as one native-runtime migration rather than an automated dependency bump.

What changed

  • Upgrade Electron from 34.5.8 to 43.1.1.
  • Upgrade the single workspace better-sqlite3 version from 11.10.0 to 12.11.1 across app, core, and CLI.
  • Upgrade @electron/rebuild to 4.2.0, @electron/asar to 4.2.0, and electron-builder to 26.15.3.
  • Require Node >=22.12 for the development toolchain.
  • Declare Node 22 types directly in share-backend, which imports Node test APIs, instead of imposing a repository-wide type override.
  • Let @electron/rebuild resolve its compatible node-abi 4.33.0 through the lockfile; no transitive override is required for Electron 43 ABI 148.
  • Print Electron, bundled Node, V8, and module ABI before the native smoke loads the addon.

Verification

  • Frozen and regular pnpm install both passed without changing the lockfile.
  • All 13 workspace typecheck tasks passed.
  • Type-aware Oxlint passed.
  • Core: 417 passed, 1 skipped.
  • App: 450 passed in the full unit run used for the migration; the review rerun also passed 422 tests before two existing fixed-timeout build/load checks exceeded their local budgets under system load.
  • Share backend: 250 passed, including the deployment test that previously exposed mixed Node URL declarations.
  • Native smoke passed on Electron 43.1.1 / Node 24.18.0 / V8 15.0 / ABI 148, then restored and loaded the addon under local Node ABI 137.
  • The two security specs that hit teardown contention in the full local E2E run passed 3/3 with one Playwright worker, including app cleanup.
  • macOS arm64 packaging completed; deep strict codesign verification passed.
  • The packaged-app smoke passed indexing/search, packaged SQLite, Claude/Codex ACP assets, Security Scan, and purge.
  • The amended PR head passed Ubuntu unit, Ubuntu E2E, and macOS E2E.

Size and timing

  • App bundle: 643.9 MB, up from the Stacked features 6: package size #417 baseline of 601.7 MB (+42.2 MB).
  • Electron Framework: 273.9 MB, up from approximately 232 MB.
  • DMG and ZIP: approximately 224 MB each.
  • Local signed package run: approximately 11 minutes, mostly resource signing in the newer Electron Framework; release CI retains a 30-minute budget.

@AmagiDDmxh
AmagiDDmxhforce-pushed the feat/electron43-native-upgrade branch from 1a81414 to 3c04582CompareJuly 16, 2026 04:39
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@AmagiDDmxh
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); build: upgrade Electron and SQLite native runtime by AmagiDDmxh · Pull Request #448 · paperboytm/spool · GitHub
Skip to content

build: upgrade Electron and SQLite native runtime - #448

Open
AmagiDDmxh wants to merge 1 commit into
paperboytm:mainfrom
AmagiDDmxh:feat/electron43-native-upgrade
Open

build: upgrade Electron and SQLite native runtime#448
AmagiDDmxh wants to merge 1 commit into
paperboytm:mainfrom
AmagiDDmxh:feat/electron43-native-upgrade

Conversation

@AmagiDDmxh

@AmagiDDmxhAmagiDDmxh commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Why

The app was on Electron 34, outside Electron's latest-three-major support window, while the shared native database dependency remained on better-sqlite3 11. The two upgrades need to move together because Spool uses the same addon from Electron, Node-based tests, and the CLI.

better-sqlite3 12 drops EOL Node/Electron targets, supports Node 20-26, and contains the V8 compatibility needed by current Electron releases. This PR treats the change as one native-runtime migration rather than an automated dependency bump.

What changed

  • Upgrade Electron from 34.5.8 to 43.1.1.
  • Upgrade the single workspace better-sqlite3 version from 11.10.0 to 12.11.1 across app, core, and CLI.
  • Upgrade @electron/rebuild to 4.2.0, @electron/asar to 4.2.0, and electron-builder to 26.15.3.
  • Require Node >=22.12 for the development toolchain.
  • Declare Node 22 types directly in share-backend, which imports Node test APIs, instead of imposing a repository-wide type override.
  • Let @electron/rebuild resolve its compatible node-abi 4.33.0 through the lockfile; no transitive override is required for Electron 43 ABI 148.
  • Print Electron, bundled Node, V8, and module ABI before the native smoke loads the addon.

Verification

  • Frozen and regular pnpm install both passed without changing the lockfile.
  • All 13 workspace typecheck tasks passed.
  • Type-aware Oxlint passed.
  • Core: 417 passed, 1 skipped.
  • App: 450 passed in the full unit run used for the migration; the review rerun also passed 422 tests before two existing fixed-timeout build/load checks exceeded their local budgets under system load.
  • Share backend: 250 passed, including the deployment test that previously exposed mixed Node URL declarations.
  • Native smoke passed on Electron 43.1.1 / Node 24.18.0 / V8 15.0 / ABI 148, then restored and loaded the addon under local Node ABI 137.
  • The two security specs that hit teardown contention in the full local E2E run passed 3/3 with one Playwright worker, including app cleanup.
  • macOS arm64 packaging completed; deep strict codesign verification passed.
  • The packaged-app smoke passed indexing/search, packaged SQLite, Claude/Codex ACP assets, Security Scan, and purge.
  • The amended PR head passed Ubuntu unit, Ubuntu E2E, and macOS E2E.

Size and timing

  • App bundle: 643.9 MB, up from the Stacked features 6: package size #417 baseline of 601.7 MB (+42.2 MB).
  • Electron Framework: 273.9 MB, up from approximately 232 MB.
  • DMG and ZIP: approximately 224 MB each.
  • Local signed package run: approximately 11 minutes, mostly resource signing in the newer Electron Framework; release CI retains a 30-minute budget.

@AmagiDDmxh
AmagiDDmxhforce-pushed the feat/electron43-native-upgrade branch from 1a81414 to 3c04582CompareJuly 16, 2026 04:39
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@AmagiDDmxh