window controls overlay (windows&linux) - #1969

Merged
juliusmarminge merged 10 commits into
pingdotgg:mainfrom
tarik02-org:feature/wco
Apr 13, 2026
Merged

window controls overlay (windows&linux)#1969
juliusmarminge merged 10 commits into
pingdotgg:mainfrom
tarik02-org:feature/wco

Conversation

@tarik02

@tarik02tarik02 commented Apr 12, 2026

Copy link
Copy Markdown
Contributor

What Changed

Added support for window controls overlay on Windows and Linux. It makes titlebar controls render inside app area. Layout was changed to account this and move buttons/logo so they don't intersect with controls.

Why

Because it makes app look better and makes it use less vertical space.

UI Changes

Before (Linux):

image

After (Linux):

Знімок екрана 2026-04-13 о 00 16 41

After (Linux, custom electron build):

Знімок екрана 2026-04-13 о 00 12 23

Before (Windows):

image

After (Windows):

Знімок екрана 2026-04-13 о 00 13 22

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Medium Risk
Adjusts Electron window chrome and multiple header layouts to integrate Window Controls Overlay; regressions are possible in cross-platform window sizing/drag regions and theme-driven titlebar rendering.

Overview
Adds Window Controls Overlay support for the Electron desktop app on Windows/Linux by switching non-macOS windows to titleBarStyle: "hidden" with a themed titleBarOverlay, and re-syncing overlay/background on nativeTheme changes.

Updates web UI headers (chat, sidebar, diff panel, settings, empty state) to apply wco:-scoped layout insets and dynamic titlebar height so content/buttons don’t overlap native window controls, including an optional reserveTitleBarControlInset behavior when the diff panel is open.

Introduces a wco Tailwind variant and a small runtime (syncDocumentWindowControlsOverlayClass) that toggles a .wco class based on navigator.windowControlsOverlay visibility in Electron.

Reviewed by Cursor Bugbot for commit a1ef380. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Add window controls overlay support for Windows and Linux in Electron

  • Adds platform-specific title bar configuration in main.ts: macOS keeps the existing hiddenInset style, while Windows/Linux use a hidden style with a native title bar overlay sized and colored to match the system theme.
  • Syncs overlay appearance and background color at runtime when nativeTheme changes, keeping all open windows consistent with the current light/dark mode.
  • Adds a windowControlsOverlay helper that toggles a wco CSS class on the document root based on overlay visibility, exposed as a Tailwind variant in index.css.
  • Updates headers in ChatView, DiffPanelShell, NoActiveThreadState, Sidebar, and Settings to reserve space for native window controls when the overlay is active, adjusting height and padding via the wco variant.
  • The chat header stops reserving the right-side title bar inset when the diff panel is open.

Macroscope summarized a1ef380.

@coderabbitai

coderabbitaiBot commented Apr 12, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 550f7cc4-4ae6-42bc-bf7d-4dbe98114272

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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 and usage tips.

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list. labels Apr 12, 2026
Comment on lines +1682 to +1692
function syncWindowAppearance(window: BrowserWindow): void {
if (window.isDestroyed()) {
return;
}

window.setBackgroundColor(getInitialWindowBackgroundColor());
const { titleBarOverlay } = getWindowTitleBarOptions();
if (typeof titleBarOverlay === "object") {
window.setTitleBarOverlay(titleBarOverlay);
}
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 Mediumsrc/main.ts:1682

syncWindowAppearance calls window.setTitleBarOverlay() whenever titleBarOverlay is an object, but this API is Windows-only and throws on Linux. Since getWindowTitleBarOptions() returns titleBarOverlay for both Windows and Linux in its else branch, Linux will crash when nativeTheme fires an updated event.

 window.setBackgroundColor(getInitialWindowBackgroundColor());
const { titleBarOverlay } = getWindowTitleBarOptions();
if (typeof titleBarOverlay === "object") {
+ if (process.platform === "win32") {
window.setTitleBarOverlay(titleBarOverlay);
+ }
}
}
🤖 Copy this AI Prompt to have your agent fix this:
In file apps/desktop/src/main.ts around lines 1682-1692:
`syncWindowAppearance` calls `window.setTitleBarOverlay()` whenever `titleBarOverlay` is an object, but this API is Windows-only and throws on Linux. Since `getWindowTitleBarOptions()` returns `titleBarOverlay` for both Windows and Linux in its else branch, Linux will crash when `nativeTheme` fires an `updated` event.

@tarik02tarik02Apr 12, 2026

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Sorry, I'm unable to act on this request because you do not have permissions within this repository.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Sorry, I'm unable to act on this request because you do not have permissions within this repository.

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit d82bdbd. Configure here.

Comment threadapps/web/src/index.css Outdated
@macroscopeapp

macroscopeappBot commented Apr 12, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a new platform feature (window controls overlay for Windows/Linux) that changes native titlebar behavior in the Electron app. Additionally, an unresolved review comment identifies a potential crash bug on Linux where a Windows-only API is being called unconditionally.

You can customize Macroscope's approvability policy. Learn more.

@juliusmarminge

Copy link
Copy Markdown
Member

now this feels like a good solution 👍

@import "tailwindcss";

@custom-variant dark (&:is(.dark, .dark *));
@custom-variant wco (&:is(.wco, .wco *));

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

descriptive comment would be nice, not an acronym that immediately pops into mind

@juliusmarminge
juliusmarminge enabled auto-merge (squash) April 13, 2026 07:18
@juliusmarminge
juliusmarminge merged commit dff8784 into pingdotgg:mainApr 13, 2026
12 checks passed
@tarik02
tarik02 deleted the feature/wco branch April 13, 2026 10:42
juliusmarminge added a commit that referenced this pull request Apr 13, 2026
Co-authored-by: julius <julius0216@outlook.com>
aaditagrawal added a commit to aaditagrawal/t3code that referenced this pull request Apr 16, 2026
Integrates upstream/main (d22c6f5) into the fork while preserving all
multi-provider support (codex, claudeAgent, copilot, cursor, opencode,
geminiCli, amp, kilo) and fork UI/UX additions.
Highlights adopted from upstream:
- Nightly release channel + update channel selector (pingdotgg#2012, pingdotgg#2049, pingdotgg#1969)
- Filesystem browse API + command palette project picker (pingdotgg#2024)
- Launch Args setting for Claude provider (pingdotgg#1971)
- Kiro editor support in open picker (pingdotgg#1974)
- Claude plan events for TodoWrite during input streaming (pingdotgg#1541)
- Lost provider session recovery (pingdotgg#1938)
- Cache provider status and gate desktop startup (pingdotgg#1962)
- LegendList migration for chat scrolling and branch lists (pingdotgg#1953)
- Shell snapshot queries + backfill migration (pingdotgg#1973, pingdotgg#2004)
- PATH hydration + fallback detection (pingdotgg#1799)
- Warm sidebar thread subscriptions (pingdotgg#2001)
- Full thread title tooltip (pingdotgg#1994)
- Markdown file link UX (pingdotgg#1956), composer polish (pingdotgg#1944, pingdotgg#1992, pingdotgg#1985)
- Worktree/branch state + draft reuse fixes (pingdotgg#2005, pingdotgg#2003, pingdotgg#1995, pingdotgg#1936)
- Window controls overlay for Windows/Linux (pingdotgg#1969)
- Backend readiness timeout 10s→30s (pingdotgg#1979)
- Clear tracked RPCs on reconnect, live stream subscriptions (pingdotgg#2000, pingdotgg#1972)
- Various misc fixes (pingdotgg#2051, pingdotgg#2052, pingdotgg#2025, pingdotgg#2027, pingdotgg#2049, pingdotgg#1997, pingdotgg#1975)
Fork features preserved and reconciled:
- All 8 provider adapters + conformance tests
- Extended ProviderKind union across contracts/model/settings/provider
- appearance/accentColor/themeConfig/ProviderLogo UI system
- customModels + gitTextGeneration + providerModelOptions
- Migration IDs 23 (NormalizeLegacyProviderKinds) and 24
(RepairProjectionThreadProposedPlanImplementationColumns) kept; new
upstream migrations registered at IDs 25-26 to avoid breaking deployed
fork databases
- DesktopBridge: log directory channels (LOG_DIR/LIST/READ/OPEN_DIR)
retained; getWsUrl replaced by upstream's getAppBranding
- PROVIDER_CACHE_IDS extended to all 8 providers
znoraka pushed a commit to znoraka/t3code that referenced this pull request Apr 17, 2026
Co-authored-by: julius <julius0216@outlook.com>
tyulyukov pushed a commit to tyulyukov/marcode that referenced this pull request Apr 21, 2026
Co-authored-by: julius <julius0216@outlook.com>
tyulyukov added a commit to tyulyukov/marcode that referenced this pull request Apr 21, 2026
…ile-links
feat: port Window Controls Overlay + markdown file link UX (upstream pingdotgg#1969, pingdotgg#1956)
youpele52 referenced this pull request in youpele52/bigbud Jun 17, 2026
Co-authored-by: julius <julius0216@outlook.com>
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
Co-authored-by: julius <julius0216@outlook.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@tarik02@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n 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;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

window controls overlay (windows&linux) - #1969

Merged
juliusmarminge merged 10 commits into
pingdotgg:mainfrom
tarik02-org:feature/wco
Apr 13, 2026
Merged

window controls overlay (windows&linux)#1969
juliusmarminge merged 10 commits into
pingdotgg:mainfrom
tarik02-org:feature/wco

Conversation

@tarik02

@tarik02tarik02 commented Apr 12, 2026

Copy link
Copy Markdown
Contributor

What Changed

Added support for window controls overlay on Windows and Linux. It makes titlebar controls render inside app area. Layout was changed to account this and move buttons/logo so they don't intersect with controls.

Why

Because it makes app look better and makes it use less vertical space.

UI Changes

Before (Linux):

image

After (Linux):

Знімок екрана 2026-04-13 о 00 16 41

After (Linux, custom electron build):

Знімок екрана 2026-04-13 о 00 12 23

Before (Windows):

image

After (Windows):

Знімок екрана 2026-04-13 о 00 13 22

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Medium Risk
Adjusts Electron window chrome and multiple header layouts to integrate Window Controls Overlay; regressions are possible in cross-platform window sizing/drag regions and theme-driven titlebar rendering.

Overview
Adds Window Controls Overlay support for the Electron desktop app on Windows/Linux by switching non-macOS windows to titleBarStyle: "hidden" with a themed titleBarOverlay, and re-syncing overlay/background on nativeTheme changes.

Updates web UI headers (chat, sidebar, diff panel, settings, empty state) to apply wco:-scoped layout insets and dynamic titlebar height so content/buttons don’t overlap native window controls, including an optional reserveTitleBarControlInset behavior when the diff panel is open.

Introduces a wco Tailwind variant and a small runtime (syncDocumentWindowControlsOverlayClass) that toggles a .wco class based on navigator.windowControlsOverlay visibility in Electron.

Reviewed by Cursor Bugbot for commit a1ef380. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Add window controls overlay support for Windows and Linux in Electron

  • Adds platform-specific title bar configuration in main.ts: macOS keeps the existing hiddenInset style, while Windows/Linux use a hidden style with a native title bar overlay sized and colored to match the system theme.
  • Syncs overlay appearance and background color at runtime when nativeTheme changes, keeping all open windows consistent with the current light/dark mode.
  • Adds a windowControlsOverlay helper that toggles a wco CSS class on the document root based on overlay visibility, exposed as a Tailwind variant in index.css.
  • Updates headers in ChatView, DiffPanelShell, NoActiveThreadState, Sidebar, and Settings to reserve space for native window controls when the overlay is active, adjusting height and padding via the wco variant.
  • The chat header stops reserving the right-side title bar inset when the diff panel is open.

Macroscope summarized a1ef380.

@coderabbitai

coderabbitaiBot commented Apr 12, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 550f7cc4-4ae6-42bc-bf7d-4dbe98114272

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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 and usage tips.

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list. labels Apr 12, 2026
Comment on lines +1682 to +1692
function syncWindowAppearance(window: BrowserWindow): void {
if (window.isDestroyed()) {
return;
}

window.setBackgroundColor(getInitialWindowBackgroundColor());
const { titleBarOverlay } = getWindowTitleBarOptions();
if (typeof titleBarOverlay === "object") {
window.setTitleBarOverlay(titleBarOverlay);
}
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 Mediumsrc/main.ts:1682

syncWindowAppearance calls window.setTitleBarOverlay() whenever titleBarOverlay is an object, but this API is Windows-only and throws on Linux. Since getWindowTitleBarOptions() returns titleBarOverlay for both Windows and Linux in its else branch, Linux will crash when nativeTheme fires an updated event.

 window.setBackgroundColor(getInitialWindowBackgroundColor());
const { titleBarOverlay } = getWindowTitleBarOptions();
if (typeof titleBarOverlay === "object") {
+ if (process.platform === "win32") {
window.setTitleBarOverlay(titleBarOverlay);
+ }
}
}
🤖 Copy this AI Prompt to have your agent fix this:
In file apps/desktop/src/main.ts around lines 1682-1692:
`syncWindowAppearance` calls `window.setTitleBarOverlay()` whenever `titleBarOverlay` is an object, but this API is Windows-only and throws on Linux. Since `getWindowTitleBarOptions()` returns `titleBarOverlay` for both Windows and Linux in its else branch, Linux will crash when `nativeTheme` fires an `updated` event.

@tarik02tarik02Apr 12, 2026

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Sorry, I'm unable to act on this request because you do not have permissions within this repository.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Sorry, I'm unable to act on this request because you do not have permissions within this repository.

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit d82bdbd. Configure here.

Comment threadapps/web/src/index.css Outdated
@macroscopeapp

macroscopeappBot commented Apr 12, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a new platform feature (window controls overlay for Windows/Linux) that changes native titlebar behavior in the Electron app. Additionally, an unresolved review comment identifies a potential crash bug on Linux where a Windows-only API is being called unconditionally.

You can customize Macroscope's approvability policy. Learn more.

@juliusmarminge

Copy link
Copy Markdown
Member

now this feels like a good solution 👍

@import "tailwindcss";

@custom-variant dark (&:is(.dark, .dark *));
@custom-variant wco (&:is(.wco, .wco *));

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

descriptive comment would be nice, not an acronym that immediately pops into mind

@juliusmarminge
juliusmarminge enabled auto-merge (squash) April 13, 2026 07:18
@juliusmarminge
juliusmarminge merged commit dff8784 into pingdotgg:mainApr 13, 2026
12 checks passed
@tarik02
tarik02 deleted the feature/wco branch April 13, 2026 10:42
juliusmarminge added a commit that referenced this pull request Apr 13, 2026
Co-authored-by: julius <julius0216@outlook.com>
aaditagrawal added a commit to aaditagrawal/t3code that referenced this pull request Apr 16, 2026
Integrates upstream/main (d22c6f5) into the fork while preserving all
multi-provider support (codex, claudeAgent, copilot, cursor, opencode,
geminiCli, amp, kilo) and fork UI/UX additions.
Highlights adopted from upstream:
- Nightly release channel + update channel selector (pingdotgg#2012, pingdotgg#2049, pingdotgg#1969)
- Filesystem browse API + command palette project picker (pingdotgg#2024)
- Launch Args setting for Claude provider (pingdotgg#1971)
- Kiro editor support in open picker (pingdotgg#1974)
- Claude plan events for TodoWrite during input streaming (pingdotgg#1541)
- Lost provider session recovery (pingdotgg#1938)
- Cache provider status and gate desktop startup (pingdotgg#1962)
- LegendList migration for chat scrolling and branch lists (pingdotgg#1953)
- Shell snapshot queries + backfill migration (pingdotgg#1973, pingdotgg#2004)
- PATH hydration + fallback detection (pingdotgg#1799)
- Warm sidebar thread subscriptions (pingdotgg#2001)
- Full thread title tooltip (pingdotgg#1994)
- Markdown file link UX (pingdotgg#1956), composer polish (pingdotgg#1944, pingdotgg#1992, pingdotgg#1985)
- Worktree/branch state + draft reuse fixes (pingdotgg#2005, pingdotgg#2003, pingdotgg#1995, pingdotgg#1936)
- Window controls overlay for Windows/Linux (pingdotgg#1969)
- Backend readiness timeout 10s→30s (pingdotgg#1979)
- Clear tracked RPCs on reconnect, live stream subscriptions (pingdotgg#2000, pingdotgg#1972)
- Various misc fixes (pingdotgg#2051, pingdotgg#2052, pingdotgg#2025, pingdotgg#2027, pingdotgg#2049, pingdotgg#1997, pingdotgg#1975)
Fork features preserved and reconciled:
- All 8 provider adapters + conformance tests
- Extended ProviderKind union across contracts/model/settings/provider
- appearance/accentColor/themeConfig/ProviderLogo UI system
- customModels + gitTextGeneration + providerModelOptions
- Migration IDs 23 (NormalizeLegacyProviderKinds) and 24
(RepairProjectionThreadProposedPlanImplementationColumns) kept; new
upstream migrations registered at IDs 25-26 to avoid breaking deployed
fork databases
- DesktopBridge: log directory channels (LOG_DIR/LIST/READ/OPEN_DIR)
retained; getWsUrl replaced by upstream's getAppBranding
- PROVIDER_CACHE_IDS extended to all 8 providers
znoraka pushed a commit to znoraka/t3code that referenced this pull request Apr 17, 2026
Co-authored-by: julius <julius0216@outlook.com>
tyulyukov pushed a commit to tyulyukov/marcode that referenced this pull request Apr 21, 2026
Co-authored-by: julius <julius0216@outlook.com>
tyulyukov added a commit to tyulyukov/marcode that referenced this pull request Apr 21, 2026
…ile-links
feat: port Window Controls Overlay + markdown file link UX (upstream pingdotgg#1969, pingdotgg#1956)
youpele52 referenced this pull request in youpele52/bigbud Jun 17, 2026
Co-authored-by: julius <julius0216@outlook.com>
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
Co-authored-by: julius <julius0216@outlook.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

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

window controls overlay (windows&linux) - #1969

Merged
juliusmarminge merged 10 commits into
pingdotgg:mainfrom
tarik02-org:feature/wco
Apr 13, 2026
Merged

window controls overlay (windows&linux)#1969
juliusmarminge merged 10 commits into
pingdotgg:mainfrom
tarik02-org:feature/wco

Conversation

@tarik02

@tarik02tarik02 commented Apr 12, 2026

Copy link
Copy Markdown
Contributor

What Changed

Added support for window controls overlay on Windows and Linux. It makes titlebar controls render inside app area. Layout was changed to account this and move buttons/logo so they don't intersect with controls.

Why

Because it makes app look better and makes it use less vertical space.

UI Changes

Before (Linux):

image

After (Linux):

Знімок екрана 2026-04-13 о 00 16 41

After (Linux, custom electron build):

Знімок екрана 2026-04-13 о 00 12 23

Before (Windows):

image

After (Windows):

Знімок екрана 2026-04-13 о 00 13 22

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Medium Risk
Adjusts Electron window chrome and multiple header layouts to integrate Window Controls Overlay; regressions are possible in cross-platform window sizing/drag regions and theme-driven titlebar rendering.

Overview
Adds Window Controls Overlay support for the Electron desktop app on Windows/Linux by switching non-macOS windows to titleBarStyle: "hidden" with a themed titleBarOverlay, and re-syncing overlay/background on nativeTheme changes.

Updates web UI headers (chat, sidebar, diff panel, settings, empty state) to apply wco:-scoped layout insets and dynamic titlebar height so content/buttons don’t overlap native window controls, including an optional reserveTitleBarControlInset behavior when the diff panel is open.

Introduces a wco Tailwind variant and a small runtime (syncDocumentWindowControlsOverlayClass) that toggles a .wco class based on navigator.windowControlsOverlay visibility in Electron.

Reviewed by Cursor Bugbot for commit a1ef380. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Add window controls overlay support for Windows and Linux in Electron

  • Adds platform-specific title bar configuration in main.ts: macOS keeps the existing hiddenInset style, while Windows/Linux use a hidden style with a native title bar overlay sized and colored to match the system theme.
  • Syncs overlay appearance and background color at runtime when nativeTheme changes, keeping all open windows consistent with the current light/dark mode.
  • Adds a windowControlsOverlay helper that toggles a wco CSS class on the document root based on overlay visibility, exposed as a Tailwind variant in index.css.
  • Updates headers in ChatView, DiffPanelShell, NoActiveThreadState, Sidebar, and Settings to reserve space for native window controls when the overlay is active, adjusting height and padding via the wco variant.
  • The chat header stops reserving the right-side title bar inset when the diff panel is open.

Macroscope summarized a1ef380.

@coderabbitai

coderabbitaiBot commented Apr 12, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 550f7cc4-4ae6-42bc-bf7d-4dbe98114272

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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 and usage tips.

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list. labels Apr 12, 2026
Comment on lines +1682 to +1692
function syncWindowAppearance(window: BrowserWindow): void {
if (window.isDestroyed()) {
return;
}

window.setBackgroundColor(getInitialWindowBackgroundColor());
const { titleBarOverlay } = getWindowTitleBarOptions();
if (typeof titleBarOverlay === "object") {
window.setTitleBarOverlay(titleBarOverlay);
}
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 Mediumsrc/main.ts:1682

syncWindowAppearance calls window.setTitleBarOverlay() whenever titleBarOverlay is an object, but this API is Windows-only and throws on Linux. Since getWindowTitleBarOptions() returns titleBarOverlay for both Windows and Linux in its else branch, Linux will crash when nativeTheme fires an updated event.

 window.setBackgroundColor(getInitialWindowBackgroundColor());
const { titleBarOverlay } = getWindowTitleBarOptions();
if (typeof titleBarOverlay === "object") {
+ if (process.platform === "win32") {
window.setTitleBarOverlay(titleBarOverlay);
+ }
}
}
🤖 Copy this AI Prompt to have your agent fix this:
In file apps/desktop/src/main.ts around lines 1682-1692:
`syncWindowAppearance` calls `window.setTitleBarOverlay()` whenever `titleBarOverlay` is an object, but this API is Windows-only and throws on Linux. Since `getWindowTitleBarOptions()` returns `titleBarOverlay` for both Windows and Linux in its else branch, Linux will crash when `nativeTheme` fires an `updated` event.

@tarik02tarik02Apr 12, 2026

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Sorry, I'm unable to act on this request because you do not have permissions within this repository.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Sorry, I'm unable to act on this request because you do not have permissions within this repository.

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit d82bdbd. Configure here.

Comment threadapps/web/src/index.css Outdated
@macroscopeapp

macroscopeappBot commented Apr 12, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a new platform feature (window controls overlay for Windows/Linux) that changes native titlebar behavior in the Electron app. Additionally, an unresolved review comment identifies a potential crash bug on Linux where a Windows-only API is being called unconditionally.

You can customize Macroscope's approvability policy. Learn more.

@juliusmarminge

Copy link
Copy Markdown
Member

now this feels like a good solution 👍

@import "tailwindcss";

@custom-variant dark (&:is(.dark, .dark *));
@custom-variant wco (&:is(.wco, .wco *));

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

descriptive comment would be nice, not an acronym that immediately pops into mind

@juliusmarminge
juliusmarminge enabled auto-merge (squash) April 13, 2026 07:18
@juliusmarminge
juliusmarminge merged commit dff8784 into pingdotgg:mainApr 13, 2026
12 checks passed
@tarik02
tarik02 deleted the feature/wco branch April 13, 2026 10:42
juliusmarminge added a commit that referenced this pull request Apr 13, 2026
Co-authored-by: julius <julius0216@outlook.com>
aaditagrawal added a commit to aaditagrawal/t3code that referenced this pull request Apr 16, 2026
Integrates upstream/main (d22c6f5) into the fork while preserving all
multi-provider support (codex, claudeAgent, copilot, cursor, opencode,
geminiCli, amp, kilo) and fork UI/UX additions.
Highlights adopted from upstream:
- Nightly release channel + update channel selector (pingdotgg#2012, pingdotgg#2049, pingdotgg#1969)
- Filesystem browse API + command palette project picker (pingdotgg#2024)
- Launch Args setting for Claude provider (pingdotgg#1971)
- Kiro editor support in open picker (pingdotgg#1974)
- Claude plan events for TodoWrite during input streaming (pingdotgg#1541)
- Lost provider session recovery (pingdotgg#1938)
- Cache provider status and gate desktop startup (pingdotgg#1962)
- LegendList migration for chat scrolling and branch lists (pingdotgg#1953)
- Shell snapshot queries + backfill migration (pingdotgg#1973, pingdotgg#2004)
- PATH hydration + fallback detection (pingdotgg#1799)
- Warm sidebar thread subscriptions (pingdotgg#2001)
- Full thread title tooltip (pingdotgg#1994)
- Markdown file link UX (pingdotgg#1956), composer polish (pingdotgg#1944, pingdotgg#1992, pingdotgg#1985)
- Worktree/branch state + draft reuse fixes (pingdotgg#2005, pingdotgg#2003, pingdotgg#1995, pingdotgg#1936)
- Window controls overlay for Windows/Linux (pingdotgg#1969)
- Backend readiness timeout 10s→30s (pingdotgg#1979)
- Clear tracked RPCs on reconnect, live stream subscriptions (pingdotgg#2000, pingdotgg#1972)
- Various misc fixes (pingdotgg#2051, pingdotgg#2052, pingdotgg#2025, pingdotgg#2027, pingdotgg#2049, pingdotgg#1997, pingdotgg#1975)
Fork features preserved and reconciled:
- All 8 provider adapters + conformance tests
- Extended ProviderKind union across contracts/model/settings/provider
- appearance/accentColor/themeConfig/ProviderLogo UI system
- customModels + gitTextGeneration + providerModelOptions
- Migration IDs 23 (NormalizeLegacyProviderKinds) and 24
(RepairProjectionThreadProposedPlanImplementationColumns) kept; new
upstream migrations registered at IDs 25-26 to avoid breaking deployed
fork databases
- DesktopBridge: log directory channels (LOG_DIR/LIST/READ/OPEN_DIR)
retained; getWsUrl replaced by upstream's getAppBranding
- PROVIDER_CACHE_IDS extended to all 8 providers
znoraka pushed a commit to znoraka/t3code that referenced this pull request Apr 17, 2026
Co-authored-by: julius <julius0216@outlook.com>
tyulyukov pushed a commit to tyulyukov/marcode that referenced this pull request Apr 21, 2026
Co-authored-by: julius <julius0216@outlook.com>
tyulyukov added a commit to tyulyukov/marcode that referenced this pull request Apr 21, 2026
…ile-links
feat: port Window Controls Overlay + markdown file link UX (upstream pingdotgg#1969, pingdotgg#1956)
youpele52 referenced this pull request in youpele52/bigbud Jun 17, 2026
Co-authored-by: julius <julius0216@outlook.com>
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
Co-authored-by: julius <julius0216@outlook.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

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

window controls overlay (windows&linux) - #1969

Merged
juliusmarminge merged 10 commits into
pingdotgg:mainfrom
tarik02-org:feature/wco
Apr 13, 2026
Merged

window controls overlay (windows&linux)#1969
juliusmarminge merged 10 commits into
pingdotgg:mainfrom
tarik02-org:feature/wco

Conversation

@tarik02

@tarik02tarik02 commented Apr 12, 2026

Copy link
Copy Markdown
Contributor

What Changed

Added support for window controls overlay on Windows and Linux. It makes titlebar controls render inside app area. Layout was changed to account this and move buttons/logo so they don't intersect with controls.

Why

Because it makes app look better and makes it use less vertical space.

UI Changes

Before (Linux):

image

After (Linux):

Знімок екрана 2026-04-13 о 00 16 41

After (Linux, custom electron build):

Знімок екрана 2026-04-13 о 00 12 23

Before (Windows):

image

After (Windows):

Знімок екрана 2026-04-13 о 00 13 22

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Medium Risk
Adjusts Electron window chrome and multiple header layouts to integrate Window Controls Overlay; regressions are possible in cross-platform window sizing/drag regions and theme-driven titlebar rendering.

Overview
Adds Window Controls Overlay support for the Electron desktop app on Windows/Linux by switching non-macOS windows to titleBarStyle: "hidden" with a themed titleBarOverlay, and re-syncing overlay/background on nativeTheme changes.

Updates web UI headers (chat, sidebar, diff panel, settings, empty state) to apply wco:-scoped layout insets and dynamic titlebar height so content/buttons don’t overlap native window controls, including an optional reserveTitleBarControlInset behavior when the diff panel is open.

Introduces a wco Tailwind variant and a small runtime (syncDocumentWindowControlsOverlayClass) that toggles a .wco class based on navigator.windowControlsOverlay visibility in Electron.

Reviewed by Cursor Bugbot for commit a1ef380. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Add window controls overlay support for Windows and Linux in Electron

  • Adds platform-specific title bar configuration in main.ts: macOS keeps the existing hiddenInset style, while Windows/Linux use a hidden style with a native title bar overlay sized and colored to match the system theme.
  • Syncs overlay appearance and background color at runtime when nativeTheme changes, keeping all open windows consistent with the current light/dark mode.
  • Adds a windowControlsOverlay helper that toggles a wco CSS class on the document root based on overlay visibility, exposed as a Tailwind variant in index.css.
  • Updates headers in ChatView, DiffPanelShell, NoActiveThreadState, Sidebar, and Settings to reserve space for native window controls when the overlay is active, adjusting height and padding via the wco variant.
  • The chat header stops reserving the right-side title bar inset when the diff panel is open.

Macroscope summarized a1ef380.

@coderabbitai

coderabbitaiBot commented Apr 12, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 550f7cc4-4ae6-42bc-bf7d-4dbe98114272

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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 and usage tips.

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list. labels Apr 12, 2026
Comment on lines +1682 to +1692
function syncWindowAppearance(window: BrowserWindow): void {
if (window.isDestroyed()) {
return;
}

window.setBackgroundColor(getInitialWindowBackgroundColor());
const { titleBarOverlay } = getWindowTitleBarOptions();
if (typeof titleBarOverlay === "object") {
window.setTitleBarOverlay(titleBarOverlay);
}
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 Mediumsrc/main.ts:1682

syncWindowAppearance calls window.setTitleBarOverlay() whenever titleBarOverlay is an object, but this API is Windows-only and throws on Linux. Since getWindowTitleBarOptions() returns titleBarOverlay for both Windows and Linux in its else branch, Linux will crash when nativeTheme fires an updated event.

 window.setBackgroundColor(getInitialWindowBackgroundColor());
const { titleBarOverlay } = getWindowTitleBarOptions();
if (typeof titleBarOverlay === "object") {
+ if (process.platform === "win32") {
window.setTitleBarOverlay(titleBarOverlay);
+ }
}
}
🤖 Copy this AI Prompt to have your agent fix this:
In file apps/desktop/src/main.ts around lines 1682-1692:
`syncWindowAppearance` calls `window.setTitleBarOverlay()` whenever `titleBarOverlay` is an object, but this API is Windows-only and throws on Linux. Since `getWindowTitleBarOptions()` returns `titleBarOverlay` for both Windows and Linux in its else branch, Linux will crash when `nativeTheme` fires an `updated` event.

@tarik02tarik02Apr 12, 2026

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Sorry, I'm unable to act on this request because you do not have permissions within this repository.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Sorry, I'm unable to act on this request because you do not have permissions within this repository.

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit d82bdbd. Configure here.

Comment threadapps/web/src/index.css Outdated
@macroscopeapp

macroscopeappBot commented Apr 12, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a new platform feature (window controls overlay for Windows/Linux) that changes native titlebar behavior in the Electron app. Additionally, an unresolved review comment identifies a potential crash bug on Linux where a Windows-only API is being called unconditionally.

You can customize Macroscope's approvability policy. Learn more.

@juliusmarminge

Copy link
Copy Markdown
Member

now this feels like a good solution 👍

@import "tailwindcss";

@custom-variant dark (&:is(.dark, .dark *));
@custom-variant wco (&:is(.wco, .wco *));

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

descriptive comment would be nice, not an acronym that immediately pops into mind

@juliusmarminge
juliusmarminge enabled auto-merge (squash) April 13, 2026 07:18
@juliusmarminge
juliusmarminge merged commit dff8784 into pingdotgg:mainApr 13, 2026
12 checks passed
@tarik02
tarik02 deleted the feature/wco branch April 13, 2026 10:42
juliusmarminge added a commit that referenced this pull request Apr 13, 2026
Co-authored-by: julius <julius0216@outlook.com>
aaditagrawal added a commit to aaditagrawal/t3code that referenced this pull request Apr 16, 2026
Integrates upstream/main (d22c6f5) into the fork while preserving all
multi-provider support (codex, claudeAgent, copilot, cursor, opencode,
geminiCli, amp, kilo) and fork UI/UX additions.
Highlights adopted from upstream:
- Nightly release channel + update channel selector (pingdotgg#2012, pingdotgg#2049, pingdotgg#1969)
- Filesystem browse API + command palette project picker (pingdotgg#2024)
- Launch Args setting for Claude provider (pingdotgg#1971)
- Kiro editor support in open picker (pingdotgg#1974)
- Claude plan events for TodoWrite during input streaming (pingdotgg#1541)
- Lost provider session recovery (pingdotgg#1938)
- Cache provider status and gate desktop startup (pingdotgg#1962)
- LegendList migration for chat scrolling and branch lists (pingdotgg#1953)
- Shell snapshot queries + backfill migration (pingdotgg#1973, pingdotgg#2004)
- PATH hydration + fallback detection (pingdotgg#1799)
- Warm sidebar thread subscriptions (pingdotgg#2001)
- Full thread title tooltip (pingdotgg#1994)
- Markdown file link UX (pingdotgg#1956), composer polish (pingdotgg#1944, pingdotgg#1992, pingdotgg#1985)
- Worktree/branch state + draft reuse fixes (pingdotgg#2005, pingdotgg#2003, pingdotgg#1995, pingdotgg#1936)
- Window controls overlay for Windows/Linux (pingdotgg#1969)
- Backend readiness timeout 10s→30s (pingdotgg#1979)
- Clear tracked RPCs on reconnect, live stream subscriptions (pingdotgg#2000, pingdotgg#1972)
- Various misc fixes (pingdotgg#2051, pingdotgg#2052, pingdotgg#2025, pingdotgg#2027, pingdotgg#2049, pingdotgg#1997, pingdotgg#1975)
Fork features preserved and reconciled:
- All 8 provider adapters + conformance tests
- Extended ProviderKind union across contracts/model/settings/provider
- appearance/accentColor/themeConfig/ProviderLogo UI system
- customModels + gitTextGeneration + providerModelOptions
- Migration IDs 23 (NormalizeLegacyProviderKinds) and 24
(RepairProjectionThreadProposedPlanImplementationColumns) kept; new
upstream migrations registered at IDs 25-26 to avoid breaking deployed
fork databases
- DesktopBridge: log directory channels (LOG_DIR/LIST/READ/OPEN_DIR)
retained; getWsUrl replaced by upstream's getAppBranding
- PROVIDER_CACHE_IDS extended to all 8 providers
znoraka pushed a commit to znoraka/t3code that referenced this pull request Apr 17, 2026
Co-authored-by: julius <julius0216@outlook.com>
tyulyukov pushed a commit to tyulyukov/marcode that referenced this pull request Apr 21, 2026
Co-authored-by: julius <julius0216@outlook.com>
tyulyukov added a commit to tyulyukov/marcode that referenced this pull request Apr 21, 2026
…ile-links
feat: port Window Controls Overlay + markdown file link UX (upstream pingdotgg#1969, pingdotgg#1956)
youpele52 referenced this pull request in youpele52/bigbud Jun 17, 2026
Co-authored-by: julius <julius0216@outlook.com>
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
Co-authored-by: julius <julius0216@outlook.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

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

window controls overlay (windows&linux) - #1969

Merged
juliusmarminge merged 10 commits into
pingdotgg:mainfrom
tarik02-org:feature/wco
Apr 13, 2026
Merged

window controls overlay (windows&linux)#1969
juliusmarminge merged 10 commits into
pingdotgg:mainfrom
tarik02-org:feature/wco

Conversation

@tarik02

@tarik02tarik02 commented Apr 12, 2026

Copy link
Copy Markdown
Contributor

What Changed

Added support for window controls overlay on Windows and Linux. It makes titlebar controls render inside app area. Layout was changed to account this and move buttons/logo so they don't intersect with controls.

Why

Because it makes app look better and makes it use less vertical space.

UI Changes

Before (Linux):

image

After (Linux):

Знімок екрана 2026-04-13 о 00 16 41

After (Linux, custom electron build):

Знімок екрана 2026-04-13 о 00 12 23

Before (Windows):

image

After (Windows):

Знімок екрана 2026-04-13 о 00 13 22

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Medium Risk
Adjusts Electron window chrome and multiple header layouts to integrate Window Controls Overlay; regressions are possible in cross-platform window sizing/drag regions and theme-driven titlebar rendering.

Overview
Adds Window Controls Overlay support for the Electron desktop app on Windows/Linux by switching non-macOS windows to titleBarStyle: "hidden" with a themed titleBarOverlay, and re-syncing overlay/background on nativeTheme changes.

Updates web UI headers (chat, sidebar, diff panel, settings, empty state) to apply wco:-scoped layout insets and dynamic titlebar height so content/buttons don’t overlap native window controls, including an optional reserveTitleBarControlInset behavior when the diff panel is open.

Introduces a wco Tailwind variant and a small runtime (syncDocumentWindowControlsOverlayClass) that toggles a .wco class based on navigator.windowControlsOverlay visibility in Electron.

Reviewed by Cursor Bugbot for commit a1ef380. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Add window controls overlay support for Windows and Linux in Electron

  • Adds platform-specific title bar configuration in main.ts: macOS keeps the existing hiddenInset style, while Windows/Linux use a hidden style with a native title bar overlay sized and colored to match the system theme.
  • Syncs overlay appearance and background color at runtime when nativeTheme changes, keeping all open windows consistent with the current light/dark mode.
  • Adds a windowControlsOverlay helper that toggles a wco CSS class on the document root based on overlay visibility, exposed as a Tailwind variant in index.css.
  • Updates headers in ChatView, DiffPanelShell, NoActiveThreadState, Sidebar, and Settings to reserve space for native window controls when the overlay is active, adjusting height and padding via the wco variant.
  • The chat header stops reserving the right-side title bar inset when the diff panel is open.

Macroscope summarized a1ef380.

@coderabbitai

coderabbitaiBot commented Apr 12, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 550f7cc4-4ae6-42bc-bf7d-4dbe98114272

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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 and usage tips.

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list. labels Apr 12, 2026
Comment on lines +1682 to +1692
function syncWindowAppearance(window: BrowserWindow): void {
if (window.isDestroyed()) {
return;
}

window.setBackgroundColor(getInitialWindowBackgroundColor());
const { titleBarOverlay } = getWindowTitleBarOptions();
if (typeof titleBarOverlay === "object") {
window.setTitleBarOverlay(titleBarOverlay);
}
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 Mediumsrc/main.ts:1682

syncWindowAppearance calls window.setTitleBarOverlay() whenever titleBarOverlay is an object, but this API is Windows-only and throws on Linux. Since getWindowTitleBarOptions() returns titleBarOverlay for both Windows and Linux in its else branch, Linux will crash when nativeTheme fires an updated event.

 window.setBackgroundColor(getInitialWindowBackgroundColor());
const { titleBarOverlay } = getWindowTitleBarOptions();
if (typeof titleBarOverlay === "object") {
+ if (process.platform === "win32") {
window.setTitleBarOverlay(titleBarOverlay);
+ }
}
}
🤖 Copy this AI Prompt to have your agent fix this:
In file apps/desktop/src/main.ts around lines 1682-1692:
`syncWindowAppearance` calls `window.setTitleBarOverlay()` whenever `titleBarOverlay` is an object, but this API is Windows-only and throws on Linux. Since `getWindowTitleBarOptions()` returns `titleBarOverlay` for both Windows and Linux in its else branch, Linux will crash when `nativeTheme` fires an `updated` event.

@tarik02tarik02Apr 12, 2026

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Sorry, I'm unable to act on this request because you do not have permissions within this repository.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Sorry, I'm unable to act on this request because you do not have permissions within this repository.

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit d82bdbd. Configure here.

Comment threadapps/web/src/index.css Outdated
@macroscopeapp

macroscopeappBot commented Apr 12, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a new platform feature (window controls overlay for Windows/Linux) that changes native titlebar behavior in the Electron app. Additionally, an unresolved review comment identifies a potential crash bug on Linux where a Windows-only API is being called unconditionally.

You can customize Macroscope's approvability policy. Learn more.

@juliusmarminge

Copy link
Copy Markdown
Member

now this feels like a good solution 👍

@import "tailwindcss";

@custom-variant dark (&:is(.dark, .dark *));
@custom-variant wco (&:is(.wco, .wco *));

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

descriptive comment would be nice, not an acronym that immediately pops into mind

@juliusmarminge
juliusmarminge enabled auto-merge (squash) April 13, 2026 07:18
@juliusmarminge
juliusmarminge merged commit dff8784 into pingdotgg:mainApr 13, 2026
12 checks passed
@tarik02
tarik02 deleted the feature/wco branch April 13, 2026 10:42
juliusmarminge added a commit that referenced this pull request Apr 13, 2026
Co-authored-by: julius <julius0216@outlook.com>
aaditagrawal added a commit to aaditagrawal/t3code that referenced this pull request Apr 16, 2026
Integrates upstream/main (d22c6f5) into the fork while preserving all
multi-provider support (codex, claudeAgent, copilot, cursor, opencode,
geminiCli, amp, kilo) and fork UI/UX additions.
Highlights adopted from upstream:
- Nightly release channel + update channel selector (pingdotgg#2012, pingdotgg#2049, pingdotgg#1969)
- Filesystem browse API + command palette project picker (pingdotgg#2024)
- Launch Args setting for Claude provider (pingdotgg#1971)
- Kiro editor support in open picker (pingdotgg#1974)
- Claude plan events for TodoWrite during input streaming (pingdotgg#1541)
- Lost provider session recovery (pingdotgg#1938)
- Cache provider status and gate desktop startup (pingdotgg#1962)
- LegendList migration for chat scrolling and branch lists (pingdotgg#1953)
- Shell snapshot queries + backfill migration (pingdotgg#1973, pingdotgg#2004)
- PATH hydration + fallback detection (pingdotgg#1799)
- Warm sidebar thread subscriptions (pingdotgg#2001)
- Full thread title tooltip (pingdotgg#1994)
- Markdown file link UX (pingdotgg#1956), composer polish (pingdotgg#1944, pingdotgg#1992, pingdotgg#1985)
- Worktree/branch state + draft reuse fixes (pingdotgg#2005, pingdotgg#2003, pingdotgg#1995, pingdotgg#1936)
- Window controls overlay for Windows/Linux (pingdotgg#1969)
- Backend readiness timeout 10s→30s (pingdotgg#1979)
- Clear tracked RPCs on reconnect, live stream subscriptions (pingdotgg#2000, pingdotgg#1972)
- Various misc fixes (pingdotgg#2051, pingdotgg#2052, pingdotgg#2025, pingdotgg#2027, pingdotgg#2049, pingdotgg#1997, pingdotgg#1975)
Fork features preserved and reconciled:
- All 8 provider adapters + conformance tests
- Extended ProviderKind union across contracts/model/settings/provider
- appearance/accentColor/themeConfig/ProviderLogo UI system
- customModels + gitTextGeneration + providerModelOptions
- Migration IDs 23 (NormalizeLegacyProviderKinds) and 24
(RepairProjectionThreadProposedPlanImplementationColumns) kept; new
upstream migrations registered at IDs 25-26 to avoid breaking deployed
fork databases
- DesktopBridge: log directory channels (LOG_DIR/LIST/READ/OPEN_DIR)
retained; getWsUrl replaced by upstream's getAppBranding
- PROVIDER_CACHE_IDS extended to all 8 providers
znoraka pushed a commit to znoraka/t3code that referenced this pull request Apr 17, 2026
Co-authored-by: julius <julius0216@outlook.com>
tyulyukov pushed a commit to tyulyukov/marcode that referenced this pull request Apr 21, 2026
Co-authored-by: julius <julius0216@outlook.com>
tyulyukov added a commit to tyulyukov/marcode that referenced this pull request Apr 21, 2026
…ile-links
feat: port Window Controls Overlay + markdown file link UX (upstream pingdotgg#1969, pingdotgg#1956)
youpele52 referenced this pull request in youpele52/bigbud Jun 17, 2026
Co-authored-by: julius <julius0216@outlook.com>
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
Co-authored-by: julius <julius0216@outlook.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

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

window controls overlay (windows&linux) - #1969

Merged
juliusmarminge merged 10 commits into
pingdotgg:mainfrom
tarik02-org:feature/wco
Apr 13, 2026
Merged

window controls overlay (windows&linux)#1969
juliusmarminge merged 10 commits into
pingdotgg:mainfrom
tarik02-org:feature/wco

Conversation

@tarik02

@tarik02tarik02 commented Apr 12, 2026

Copy link
Copy Markdown
Contributor

What Changed

Added support for window controls overlay on Windows and Linux. It makes titlebar controls render inside app area. Layout was changed to account this and move buttons/logo so they don't intersect with controls.

Why

Because it makes app look better and makes it use less vertical space.

UI Changes

Before (Linux):

image

After (Linux):

Знімок екрана 2026-04-13 о 00 16 41

After (Linux, custom electron build):

Знімок екрана 2026-04-13 о 00 12 23

Before (Windows):

image

After (Windows):

Знімок екрана 2026-04-13 о 00 13 22

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Medium Risk
Adjusts Electron window chrome and multiple header layouts to integrate Window Controls Overlay; regressions are possible in cross-platform window sizing/drag regions and theme-driven titlebar rendering.

Overview
Adds Window Controls Overlay support for the Electron desktop app on Windows/Linux by switching non-macOS windows to titleBarStyle: "hidden" with a themed titleBarOverlay, and re-syncing overlay/background on nativeTheme changes.

Updates web UI headers (chat, sidebar, diff panel, settings, empty state) to apply wco:-scoped layout insets and dynamic titlebar height so content/buttons don’t overlap native window controls, including an optional reserveTitleBarControlInset behavior when the diff panel is open.

Introduces a wco Tailwind variant and a small runtime (syncDocumentWindowControlsOverlayClass) that toggles a .wco class based on navigator.windowControlsOverlay visibility in Electron.

Reviewed by Cursor Bugbot for commit a1ef380. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Add window controls overlay support for Windows and Linux in Electron

  • Adds platform-specific title bar configuration in main.ts: macOS keeps the existing hiddenInset style, while Windows/Linux use a hidden style with a native title bar overlay sized and colored to match the system theme.
  • Syncs overlay appearance and background color at runtime when nativeTheme changes, keeping all open windows consistent with the current light/dark mode.
  • Adds a windowControlsOverlay helper that toggles a wco CSS class on the document root based on overlay visibility, exposed as a Tailwind variant in index.css.
  • Updates headers in ChatView, DiffPanelShell, NoActiveThreadState, Sidebar, and Settings to reserve space for native window controls when the overlay is active, adjusting height and padding via the wco variant.
  • The chat header stops reserving the right-side title bar inset when the diff panel is open.

Macroscope summarized a1ef380.

@coderabbitai

coderabbitaiBot commented Apr 12, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 550f7cc4-4ae6-42bc-bf7d-4dbe98114272

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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 and usage tips.

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list. labels Apr 12, 2026
Comment on lines +1682 to +1692
function syncWindowAppearance(window: BrowserWindow): void {
if (window.isDestroyed()) {
return;
}

window.setBackgroundColor(getInitialWindowBackgroundColor());
const { titleBarOverlay } = getWindowTitleBarOptions();
if (typeof titleBarOverlay === "object") {
window.setTitleBarOverlay(titleBarOverlay);
}
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 Mediumsrc/main.ts:1682

syncWindowAppearance calls window.setTitleBarOverlay() whenever titleBarOverlay is an object, but this API is Windows-only and throws on Linux. Since getWindowTitleBarOptions() returns titleBarOverlay for both Windows and Linux in its else branch, Linux will crash when nativeTheme fires an updated event.

 window.setBackgroundColor(getInitialWindowBackgroundColor());
const { titleBarOverlay } = getWindowTitleBarOptions();
if (typeof titleBarOverlay === "object") {
+ if (process.platform === "win32") {
window.setTitleBarOverlay(titleBarOverlay);
+ }
}
}
🤖 Copy this AI Prompt to have your agent fix this:
In file apps/desktop/src/main.ts around lines 1682-1692:
`syncWindowAppearance` calls `window.setTitleBarOverlay()` whenever `titleBarOverlay` is an object, but this API is Windows-only and throws on Linux. Since `getWindowTitleBarOptions()` returns `titleBarOverlay` for both Windows and Linux in its else branch, Linux will crash when `nativeTheme` fires an `updated` event.

@tarik02tarik02Apr 12, 2026

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Sorry, I'm unable to act on this request because you do not have permissions within this repository.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Sorry, I'm unable to act on this request because you do not have permissions within this repository.

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit d82bdbd. Configure here.

Comment threadapps/web/src/index.css Outdated
@macroscopeapp

macroscopeappBot commented Apr 12, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a new platform feature (window controls overlay for Windows/Linux) that changes native titlebar behavior in the Electron app. Additionally, an unresolved review comment identifies a potential crash bug on Linux where a Windows-only API is being called unconditionally.

You can customize Macroscope's approvability policy. Learn more.

@juliusmarminge

Copy link
Copy Markdown
Member

now this feels like a good solution 👍

@import "tailwindcss";

@custom-variant dark (&:is(.dark, .dark *));
@custom-variant wco (&:is(.wco, .wco *));

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

descriptive comment would be nice, not an acronym that immediately pops into mind

@juliusmarminge
juliusmarminge enabled auto-merge (squash) April 13, 2026 07:18
@juliusmarminge
juliusmarminge merged commit dff8784 into pingdotgg:mainApr 13, 2026
12 checks passed
@tarik02
tarik02 deleted the feature/wco branch April 13, 2026 10:42
juliusmarminge added a commit that referenced this pull request Apr 13, 2026
Co-authored-by: julius <julius0216@outlook.com>
aaditagrawal added a commit to aaditagrawal/t3code that referenced this pull request Apr 16, 2026
Integrates upstream/main (d22c6f5) into the fork while preserving all
multi-provider support (codex, claudeAgent, copilot, cursor, opencode,
geminiCli, amp, kilo) and fork UI/UX additions.
Highlights adopted from upstream:
- Nightly release channel + update channel selector (pingdotgg#2012, pingdotgg#2049, pingdotgg#1969)
- Filesystem browse API + command palette project picker (pingdotgg#2024)
- Launch Args setting for Claude provider (pingdotgg#1971)
- Kiro editor support in open picker (pingdotgg#1974)
- Claude plan events for TodoWrite during input streaming (pingdotgg#1541)
- Lost provider session recovery (pingdotgg#1938)
- Cache provider status and gate desktop startup (pingdotgg#1962)
- LegendList migration for chat scrolling and branch lists (pingdotgg#1953)
- Shell snapshot queries + backfill migration (pingdotgg#1973, pingdotgg#2004)
- PATH hydration + fallback detection (pingdotgg#1799)
- Warm sidebar thread subscriptions (pingdotgg#2001)
- Full thread title tooltip (pingdotgg#1994)
- Markdown file link UX (pingdotgg#1956), composer polish (pingdotgg#1944, pingdotgg#1992, pingdotgg#1985)
- Worktree/branch state + draft reuse fixes (pingdotgg#2005, pingdotgg#2003, pingdotgg#1995, pingdotgg#1936)
- Window controls overlay for Windows/Linux (pingdotgg#1969)
- Backend readiness timeout 10s→30s (pingdotgg#1979)
- Clear tracked RPCs on reconnect, live stream subscriptions (pingdotgg#2000, pingdotgg#1972)
- Various misc fixes (pingdotgg#2051, pingdotgg#2052, pingdotgg#2025, pingdotgg#2027, pingdotgg#2049, pingdotgg#1997, pingdotgg#1975)
Fork features preserved and reconciled:
- All 8 provider adapters + conformance tests
- Extended ProviderKind union across contracts/model/settings/provider
- appearance/accentColor/themeConfig/ProviderLogo UI system
- customModels + gitTextGeneration + providerModelOptions
- Migration IDs 23 (NormalizeLegacyProviderKinds) and 24
(RepairProjectionThreadProposedPlanImplementationColumns) kept; new
upstream migrations registered at IDs 25-26 to avoid breaking deployed
fork databases
- DesktopBridge: log directory channels (LOG_DIR/LIST/READ/OPEN_DIR)
retained; getWsUrl replaced by upstream's getAppBranding
- PROVIDER_CACHE_IDS extended to all 8 providers
znoraka pushed a commit to znoraka/t3code that referenced this pull request Apr 17, 2026
Co-authored-by: julius <julius0216@outlook.com>
tyulyukov pushed a commit to tyulyukov/marcode that referenced this pull request Apr 21, 2026
Co-authored-by: julius <julius0216@outlook.com>
tyulyukov added a commit to tyulyukov/marcode that referenced this pull request Apr 21, 2026
…ile-links
feat: port Window Controls Overlay + markdown file link UX (upstream pingdotgg#1969, pingdotgg#1956)
youpele52 referenced this pull request in youpele52/bigbud Jun 17, 2026
Co-authored-by: julius <julius0216@outlook.com>
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
Co-authored-by: julius <julius0216@outlook.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@tarik02@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

window controls overlay (windows&linux) - #1969

Merged
juliusmarminge merged 10 commits into
pingdotgg:mainfrom
tarik02-org:feature/wco
Apr 13, 2026
Merged

window controls overlay (windows&linux)#1969
juliusmarminge merged 10 commits into
pingdotgg:mainfrom
tarik02-org:feature/wco

Conversation

@tarik02

@tarik02tarik02 commented Apr 12, 2026

Copy link
Copy Markdown
Contributor

What Changed

Added support for window controls overlay on Windows and Linux. It makes titlebar controls render inside app area. Layout was changed to account this and move buttons/logo so they don't intersect with controls.

Why

Because it makes app look better and makes it use less vertical space.

UI Changes

Before (Linux):

image

After (Linux):

Знімок екрана 2026-04-13 о 00 16 41

After (Linux, custom electron build):

Знімок екрана 2026-04-13 о 00 12 23

Before (Windows):

image

After (Windows):

Знімок екрана 2026-04-13 о 00 13 22

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Medium Risk
Adjusts Electron window chrome and multiple header layouts to integrate Window Controls Overlay; regressions are possible in cross-platform window sizing/drag regions and theme-driven titlebar rendering.

Overview
Adds Window Controls Overlay support for the Electron desktop app on Windows/Linux by switching non-macOS windows to titleBarStyle: "hidden" with a themed titleBarOverlay, and re-syncing overlay/background on nativeTheme changes.

Updates web UI headers (chat, sidebar, diff panel, settings, empty state) to apply wco:-scoped layout insets and dynamic titlebar height so content/buttons don’t overlap native window controls, including an optional reserveTitleBarControlInset behavior when the diff panel is open.

Introduces a wco Tailwind variant and a small runtime (syncDocumentWindowControlsOverlayClass) that toggles a .wco class based on navigator.windowControlsOverlay visibility in Electron.

Reviewed by Cursor Bugbot for commit a1ef380. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Add window controls overlay support for Windows and Linux in Electron

  • Adds platform-specific title bar configuration in main.ts: macOS keeps the existing hiddenInset style, while Windows/Linux use a hidden style with a native title bar overlay sized and colored to match the system theme.
  • Syncs overlay appearance and background color at runtime when nativeTheme changes, keeping all open windows consistent with the current light/dark mode.
  • Adds a windowControlsOverlay helper that toggles a wco CSS class on the document root based on overlay visibility, exposed as a Tailwind variant in index.css.
  • Updates headers in ChatView, DiffPanelShell, NoActiveThreadState, Sidebar, and Settings to reserve space for native window controls when the overlay is active, adjusting height and padding via the wco variant.
  • The chat header stops reserving the right-side title bar inset when the diff panel is open.

Macroscope summarized a1ef380.

@coderabbitai

coderabbitaiBot commented Apr 12, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 550f7cc4-4ae6-42bc-bf7d-4dbe98114272

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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 and usage tips.

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list. labels Apr 12, 2026
Comment on lines +1682 to +1692
function syncWindowAppearance(window: BrowserWindow): void {
if (window.isDestroyed()) {
return;
}

window.setBackgroundColor(getInitialWindowBackgroundColor());
const { titleBarOverlay } = getWindowTitleBarOptions();
if (typeof titleBarOverlay === "object") {
window.setTitleBarOverlay(titleBarOverlay);
}
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 Mediumsrc/main.ts:1682

syncWindowAppearance calls window.setTitleBarOverlay() whenever titleBarOverlay is an object, but this API is Windows-only and throws on Linux. Since getWindowTitleBarOptions() returns titleBarOverlay for both Windows and Linux in its else branch, Linux will crash when nativeTheme fires an updated event.

 window.setBackgroundColor(getInitialWindowBackgroundColor());
const { titleBarOverlay } = getWindowTitleBarOptions();
if (typeof titleBarOverlay === "object") {
+ if (process.platform === "win32") {
window.setTitleBarOverlay(titleBarOverlay);
+ }
}
}
🤖 Copy this AI Prompt to have your agent fix this:
In file apps/desktop/src/main.ts around lines 1682-1692:
`syncWindowAppearance` calls `window.setTitleBarOverlay()` whenever `titleBarOverlay` is an object, but this API is Windows-only and throws on Linux. Since `getWindowTitleBarOptions()` returns `titleBarOverlay` for both Windows and Linux in its else branch, Linux will crash when `nativeTheme` fires an `updated` event.

@tarik02tarik02Apr 12, 2026

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Sorry, I'm unable to act on this request because you do not have permissions within this repository.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Sorry, I'm unable to act on this request because you do not have permissions within this repository.

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit d82bdbd. Configure here.

Comment threadapps/web/src/index.css Outdated
@macroscopeapp

macroscopeappBot commented Apr 12, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a new platform feature (window controls overlay for Windows/Linux) that changes native titlebar behavior in the Electron app. Additionally, an unresolved review comment identifies a potential crash bug on Linux where a Windows-only API is being called unconditionally.

You can customize Macroscope's approvability policy. Learn more.

@juliusmarminge

Copy link
Copy Markdown
Member

now this feels like a good solution 👍

@import "tailwindcss";

@custom-variant dark (&:is(.dark, .dark *));
@custom-variant wco (&:is(.wco, .wco *));

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

descriptive comment would be nice, not an acronym that immediately pops into mind

@juliusmarminge
juliusmarminge enabled auto-merge (squash) April 13, 2026 07:18
@juliusmarminge
juliusmarminge merged commit dff8784 into pingdotgg:mainApr 13, 2026
12 checks passed
@tarik02
tarik02 deleted the feature/wco branch April 13, 2026 10:42
juliusmarminge added a commit that referenced this pull request Apr 13, 2026
Co-authored-by: julius <julius0216@outlook.com>
aaditagrawal added a commit to aaditagrawal/t3code that referenced this pull request Apr 16, 2026
Integrates upstream/main (d22c6f5) into the fork while preserving all
multi-provider support (codex, claudeAgent, copilot, cursor, opencode,
geminiCli, amp, kilo) and fork UI/UX additions.
Highlights adopted from upstream:
- Nightly release channel + update channel selector (pingdotgg#2012, pingdotgg#2049, pingdotgg#1969)
- Filesystem browse API + command palette project picker (pingdotgg#2024)
- Launch Args setting for Claude provider (pingdotgg#1971)
- Kiro editor support in open picker (pingdotgg#1974)
- Claude plan events for TodoWrite during input streaming (pingdotgg#1541)
- Lost provider session recovery (pingdotgg#1938)
- Cache provider status and gate desktop startup (pingdotgg#1962)
- LegendList migration for chat scrolling and branch lists (pingdotgg#1953)
- Shell snapshot queries + backfill migration (pingdotgg#1973, pingdotgg#2004)
- PATH hydration + fallback detection (pingdotgg#1799)
- Warm sidebar thread subscriptions (pingdotgg#2001)
- Full thread title tooltip (pingdotgg#1994)
- Markdown file link UX (pingdotgg#1956), composer polish (pingdotgg#1944, pingdotgg#1992, pingdotgg#1985)
- Worktree/branch state + draft reuse fixes (pingdotgg#2005, pingdotgg#2003, pingdotgg#1995, pingdotgg#1936)
- Window controls overlay for Windows/Linux (pingdotgg#1969)
- Backend readiness timeout 10s→30s (pingdotgg#1979)
- Clear tracked RPCs on reconnect, live stream subscriptions (pingdotgg#2000, pingdotgg#1972)
- Various misc fixes (pingdotgg#2051, pingdotgg#2052, pingdotgg#2025, pingdotgg#2027, pingdotgg#2049, pingdotgg#1997, pingdotgg#1975)
Fork features preserved and reconciled:
- All 8 provider adapters + conformance tests
- Extended ProviderKind union across contracts/model/settings/provider
- appearance/accentColor/themeConfig/ProviderLogo UI system
- customModels + gitTextGeneration + providerModelOptions
- Migration IDs 23 (NormalizeLegacyProviderKinds) and 24
(RepairProjectionThreadProposedPlanImplementationColumns) kept; new
upstream migrations registered at IDs 25-26 to avoid breaking deployed
fork databases
- DesktopBridge: log directory channels (LOG_DIR/LIST/READ/OPEN_DIR)
retained; getWsUrl replaced by upstream's getAppBranding
- PROVIDER_CACHE_IDS extended to all 8 providers
znoraka pushed a commit to znoraka/t3code that referenced this pull request Apr 17, 2026
Co-authored-by: julius <julius0216@outlook.com>
tyulyukov pushed a commit to tyulyukov/marcode that referenced this pull request Apr 21, 2026
Co-authored-by: julius <julius0216@outlook.com>
tyulyukov added a commit to tyulyukov/marcode that referenced this pull request Apr 21, 2026
…ile-links
feat: port Window Controls Overlay + markdown file link UX (upstream pingdotgg#1969, pingdotgg#1956)
youpele52 referenced this pull request in youpele52/bigbud Jun 17, 2026
Co-authored-by: julius <julius0216@outlook.com>
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
Co-authored-by: julius <julius0216@outlook.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

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

window controls overlay (windows&linux) - #1969

Merged
juliusmarminge merged 10 commits into
pingdotgg:mainfrom
tarik02-org:feature/wco
Apr 13, 2026
Merged

window controls overlay (windows&linux)#1969
juliusmarminge merged 10 commits into
pingdotgg:mainfrom
tarik02-org:feature/wco

Conversation

@tarik02

@tarik02tarik02 commented Apr 12, 2026

Copy link
Copy Markdown
Contributor

What Changed

Added support for window controls overlay on Windows and Linux. It makes titlebar controls render inside app area. Layout was changed to account this and move buttons/logo so they don't intersect with controls.

Why

Because it makes app look better and makes it use less vertical space.

UI Changes

Before (Linux):

image

After (Linux):

Знімок екрана 2026-04-13 о 00 16 41

After (Linux, custom electron build):

Знімок екрана 2026-04-13 о 00 12 23

Before (Windows):

image

After (Windows):

Знімок екрана 2026-04-13 о 00 13 22

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Medium Risk
Adjusts Electron window chrome and multiple header layouts to integrate Window Controls Overlay; regressions are possible in cross-platform window sizing/drag regions and theme-driven titlebar rendering.

Overview
Adds Window Controls Overlay support for the Electron desktop app on Windows/Linux by switching non-macOS windows to titleBarStyle: "hidden" with a themed titleBarOverlay, and re-syncing overlay/background on nativeTheme changes.

Updates web UI headers (chat, sidebar, diff panel, settings, empty state) to apply wco:-scoped layout insets and dynamic titlebar height so content/buttons don’t overlap native window controls, including an optional reserveTitleBarControlInset behavior when the diff panel is open.

Introduces a wco Tailwind variant and a small runtime (syncDocumentWindowControlsOverlayClass) that toggles a .wco class based on navigator.windowControlsOverlay visibility in Electron.

Reviewed by Cursor Bugbot for commit a1ef380. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Add window controls overlay support for Windows and Linux in Electron

  • Adds platform-specific title bar configuration in main.ts: macOS keeps the existing hiddenInset style, while Windows/Linux use a hidden style with a native title bar overlay sized and colored to match the system theme.
  • Syncs overlay appearance and background color at runtime when nativeTheme changes, keeping all open windows consistent with the current light/dark mode.
  • Adds a windowControlsOverlay helper that toggles a wco CSS class on the document root based on overlay visibility, exposed as a Tailwind variant in index.css.
  • Updates headers in ChatView, DiffPanelShell, NoActiveThreadState, Sidebar, and Settings to reserve space for native window controls when the overlay is active, adjusting height and padding via the wco variant.
  • The chat header stops reserving the right-side title bar inset when the diff panel is open.

Macroscope summarized a1ef380.

@coderabbitai

coderabbitaiBot commented Apr 12, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 550f7cc4-4ae6-42bc-bf7d-4dbe98114272

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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 and usage tips.

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list. labels Apr 12, 2026
Comment on lines +1682 to +1692
function syncWindowAppearance(window: BrowserWindow): void {
if (window.isDestroyed()) {
return;
}

window.setBackgroundColor(getInitialWindowBackgroundColor());
const { titleBarOverlay } = getWindowTitleBarOptions();
if (typeof titleBarOverlay === "object") {
window.setTitleBarOverlay(titleBarOverlay);
}
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 Mediumsrc/main.ts:1682

syncWindowAppearance calls window.setTitleBarOverlay() whenever titleBarOverlay is an object, but this API is Windows-only and throws on Linux. Since getWindowTitleBarOptions() returns titleBarOverlay for both Windows and Linux in its else branch, Linux will crash when nativeTheme fires an updated event.

 window.setBackgroundColor(getInitialWindowBackgroundColor());
const { titleBarOverlay } = getWindowTitleBarOptions();
if (typeof titleBarOverlay === "object") {
+ if (process.platform === "win32") {
window.setTitleBarOverlay(titleBarOverlay);
+ }
}
}
🤖 Copy this AI Prompt to have your agent fix this:
In file apps/desktop/src/main.ts around lines 1682-1692:
`syncWindowAppearance` calls `window.setTitleBarOverlay()` whenever `titleBarOverlay` is an object, but this API is Windows-only and throws on Linux. Since `getWindowTitleBarOptions()` returns `titleBarOverlay` for both Windows and Linux in its else branch, Linux will crash when `nativeTheme` fires an `updated` event.

@tarik02tarik02Apr 12, 2026

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Sorry, I'm unable to act on this request because you do not have permissions within this repository.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Sorry, I'm unable to act on this request because you do not have permissions within this repository.

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit d82bdbd. Configure here.

Comment threadapps/web/src/index.css Outdated
@macroscopeapp

macroscopeappBot commented Apr 12, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a new platform feature (window controls overlay for Windows/Linux) that changes native titlebar behavior in the Electron app. Additionally, an unresolved review comment identifies a potential crash bug on Linux where a Windows-only API is being called unconditionally.

You can customize Macroscope's approvability policy. Learn more.

@juliusmarminge

Copy link
Copy Markdown
Member

now this feels like a good solution 👍

@import "tailwindcss";

@custom-variant dark (&:is(.dark, .dark *));
@custom-variant wco (&:is(.wco, .wco *));

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

descriptive comment would be nice, not an acronym that immediately pops into mind

@juliusmarminge
juliusmarminge enabled auto-merge (squash) April 13, 2026 07:18
@juliusmarminge
juliusmarminge merged commit dff8784 into pingdotgg:mainApr 13, 2026
12 checks passed
@tarik02
tarik02 deleted the feature/wco branch April 13, 2026 10:42
juliusmarminge added a commit that referenced this pull request Apr 13, 2026
Co-authored-by: julius <julius0216@outlook.com>
aaditagrawal added a commit to aaditagrawal/t3code that referenced this pull request Apr 16, 2026
Integrates upstream/main (d22c6f5) into the fork while preserving all
multi-provider support (codex, claudeAgent, copilot, cursor, opencode,
geminiCli, amp, kilo) and fork UI/UX additions.
Highlights adopted from upstream:
- Nightly release channel + update channel selector (pingdotgg#2012, pingdotgg#2049, pingdotgg#1969)
- Filesystem browse API + command palette project picker (pingdotgg#2024)
- Launch Args setting for Claude provider (pingdotgg#1971)
- Kiro editor support in open picker (pingdotgg#1974)
- Claude plan events for TodoWrite during input streaming (pingdotgg#1541)
- Lost provider session recovery (pingdotgg#1938)
- Cache provider status and gate desktop startup (pingdotgg#1962)
- LegendList migration for chat scrolling and branch lists (pingdotgg#1953)
- Shell snapshot queries + backfill migration (pingdotgg#1973, pingdotgg#2004)
- PATH hydration + fallback detection (pingdotgg#1799)
- Warm sidebar thread subscriptions (pingdotgg#2001)
- Full thread title tooltip (pingdotgg#1994)
- Markdown file link UX (pingdotgg#1956), composer polish (pingdotgg#1944, pingdotgg#1992, pingdotgg#1985)
- Worktree/branch state + draft reuse fixes (pingdotgg#2005, pingdotgg#2003, pingdotgg#1995, pingdotgg#1936)
- Window controls overlay for Windows/Linux (pingdotgg#1969)
- Backend readiness timeout 10s→30s (pingdotgg#1979)
- Clear tracked RPCs on reconnect, live stream subscriptions (pingdotgg#2000, pingdotgg#1972)
- Various misc fixes (pingdotgg#2051, pingdotgg#2052, pingdotgg#2025, pingdotgg#2027, pingdotgg#2049, pingdotgg#1997, pingdotgg#1975)
Fork features preserved and reconciled:
- All 8 provider adapters + conformance tests
- Extended ProviderKind union across contracts/model/settings/provider
- appearance/accentColor/themeConfig/ProviderLogo UI system
- customModels + gitTextGeneration + providerModelOptions
- Migration IDs 23 (NormalizeLegacyProviderKinds) and 24
(RepairProjectionThreadProposedPlanImplementationColumns) kept; new
upstream migrations registered at IDs 25-26 to avoid breaking deployed
fork databases
- DesktopBridge: log directory channels (LOG_DIR/LIST/READ/OPEN_DIR)
retained; getWsUrl replaced by upstream's getAppBranding
- PROVIDER_CACHE_IDS extended to all 8 providers
znoraka pushed a commit to znoraka/t3code that referenced this pull request Apr 17, 2026
Co-authored-by: julius <julius0216@outlook.com>
tyulyukov pushed a commit to tyulyukov/marcode that referenced this pull request Apr 21, 2026
Co-authored-by: julius <julius0216@outlook.com>
tyulyukov added a commit to tyulyukov/marcode that referenced this pull request Apr 21, 2026
…ile-links
feat: port Window Controls Overlay + markdown file link UX (upstream pingdotgg#1969, pingdotgg#1956)
youpele52 referenced this pull request in youpele52/bigbud Jun 17, 2026
Co-authored-by: julius <julius0216@outlook.com>
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
Co-authored-by: julius <julius0216@outlook.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@tarik02@juliusmarminge