') + ')', '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('^' + ".*" + ', '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" + ', '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('^' + ".*" + ', '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); } })(); })(); refactor(desktop): remove consumer-less IPC bridge surface by cat0825 · Pull Request #2069 · apache/maka · GitHub
Skip to content

refactor(desktop): remove consumer-less IPC bridge surface - #2069

Closed
cat0825 wants to merge 1 commit into
apache:mainfrom
cat0825:codex/issue-1978-ipc-cleanup
Closed

refactor(desktop): remove consumer-less IPC bridge surface#2069
cat0825 wants to merge 1 commit into
apache:mainfrom
cat0825:codex/issue-1978-ipc-cleanup

Conversation

@cat0825

Copy link
Copy Markdown
Contributor

Summary

Closes#1978. Removes IPC bridge surface with zero consumers in the renderer/overlay/e2e, verified against current main (ceb23ec3d).

Changes

  1. window:openSettings push — no sender since chore(ui): track Storybook-driven UI polish after file-boundary governance #390. Removed appWindow.subscribeOpenSettings from preload + contract, and the handleOpenSettings subscription/cleanup in app-shell-effects.ts. The ⌘/Ctrl+, keydown handler (renderer) is untouched, so the shortcut still works — covered by a new e2e test.
  2. Daily Review aliases — removed duplicate dailyReview.list/get/delete and deleteArchive from preload + bridge-contract.d.ts, and the renderer-dead daily-review:deleteipcMain handler. The archive store's internal deleteArchive stays (used by retention cleanup).
  3. cursor-subscription:logout — already handled upstream: chore(desktop): retire Cursor subscription #2037 retired the entire Cursor subscription surface (commit 61a0ca1f5), so this finding no longer applies.

Tests

  • npm run typecheck
  • Desktop unit suite: 1565 passed, 0 failed (incl. IPC surface contract parity check) ✅
  • biome lint / biome format / git diff --check
  • New e2e: settings.spec.tsthe platform settings shortcut opens settings

Remove subscribeOpenSettings / window:openSettings whose only sender was
deleted in apache#390 (the Meta/Ctrl+, shortcut is still handled by the renderer
keydown handler), and drop the duplicate Daily Review list/get/delete
aliases plus the renderer-dead daily-review:delete channel. The retired
Cursor subscription surface (apache#2037) already removed the remaining
cursor-subscription:logout finding, so it needs no change here.
Closesapache#1978
@Astro-Han

Copy link
Copy Markdown
Contributor

PR #2065 (opened 37 minutes earlier, same scope) has been merged as af316fe, and it covers this PR's deletions as a superset: the same dailyReview alias and subscribeOpenSettings removals, plus the maka.usage preload namespace (per #1982 decision 2) and the IPC-surface parity whitelist. With two PRs sharing one scope we went with first come, first served.

The only thing this PR adds beyond #2065 is the settings-shortcut e2e in settings.spec.ts. That shortcut runs through the renderer keydown handler, which #2065 did not touch, so the deletion does not regress it. If you want the e2e in the tree, rebase onto current main and open a small PR with just that spec; otherwise this one can be closed as superseded.

Thanks for the contribution.

@Astro-Han

Copy link
Copy Markdown
Contributor

Closed as superseded by #2065 (merged as af316fe), which covers this PR's deletions as a superset. The only unique piece, the settings-shortcut e2e, is not affected by the removal; a small follow-up PR with just that spec can be opened if desired.

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.

refactor(desktop): remove consumer-less IPC bridge surface

2 participants

@cat0825@Astro-Han