It's a very hairy problem, due to the round borders. What you see is the light background of the <body> element content bleeding out from the status bar.
A similar effect, with the same root cause, can be seen even without the "help" of the status panel by just looking at Tor's own home page, where the <body> element has a white color but is covered by some purple content: on the top edges, if rounded, you can se some whiteish pixels bleeding out:
Even applying an inner shadow to the <browser> element, which would "cure" the symptoms if that was a normal DOM, doesn't appear to work at all in my tests, probably because the rendering is done in a different process and this edge case is not handled at composition time (no shadow is rendered).
The only work-around I could find is overlaying a new transparent box over the <browser> element, which we may call "letterboxing-border-overlay", and applying it a very subtle (0.1px) combo of dark outside shadow + outline + inner shadow, which does mask the bleeding:
The following screenshot demonstrates the specular problem for a light browser theme with a dark body.background color in content:
Here mitigated by a light shadow/outline:
@jag , @donuts , I understand this is a compromise which deviates significantly from your designs.
Is it acceptable? The alternative as far as I can tell would be going back to flat borders.
The only work-around I could find is overlaying a new transparent box over the <browser> element, which we may call "letterboxing-border-overlay", and applying it a very subtle (0.1px) combo of dark outside shadow + outline + inner shadow, which does mask the bleeding:
Is the border a flat color? I'm wondering if we can select specific colors that will help it blend into the shadow/background a little more.
These two screenshots reuse the letterboxing background color as it is. I've also slightly moved down the status bar (half a pixel) to remove a bit of residual jagging when it was displayed on a light theme:
I'd like to keep this issue open until we can see it in practice, please. I think I can still see the noise @ruihildt reported originally in the corners, but it's hard to tell from screenshots alone.
We may also be able to suggest colors that blend better by recreating the issue in Figma. Could you let me know what styles you ended up merging please (e.g. the same way you did here: #42387 (comment 2990574)), and we can experiment with those?
I'd like to keep this issue open until we can see it in practice, please
Just to be clear, Tor Browser 13.5a4 is not affected anymore since !905 (merged).
Mullvad Browser 13.5a4 had already shipped when the patch landed, and will be fixed in 13.5a5.
If you want to compare Tor Browser instances with and without the bug, please look at these two testbuilds:
We may also be able to suggest colors that blend better by recreating the issue in Figma.
I doubt Figma will help here, because it's a concrete rendering problem (not a design one) dependent on the background color of the page, which we can't control, and on the rendering pipeline spanning across two processes.
Therefore I rather recommend using the Browser Toolbox developer tool to interactively prototype taking in account the actual rendering glitches.
Could you let me know what styles you ended up merging please (e.g. the same way you did here: #42387 (comment 2990574)), and we can experiment with those?
These are the base styles:
.browserDecorator{display:none;pointer-events:none;background:transparent;position:relative;z-index:1;}.letterboxing{--letterboxing-border-radius:8px;--letterboxing-border-top-radius:0;--letterboxing-vertical-alignment:start;--letterboxing-shadow-color:rgba(12,12,13,0.10);--letterboxing-bgcolor:var(--tabpanel-background-color);--letterboxing-gradient-color1:var(--letterboxing-bgcolor);--letterboxing-gradient-color2:color-mix(insrgb,var(--chrome-content-separator-color)50%,var(--letterboxing-bgcolor));--letterboxing-border-color:var(--letterboxing-bgcolor);}.letterboxing.letterboxing-vcenter.browserContainer:not(.responsive-mode)>.browserStack:not(.exclude-letterboxing){--letterboxing-border-top-radius:var(--letterboxing-border-radius);--letterboxing-vertical-alignment:center;}.letterboxing.letterboxing-gradient.browserContainer{background:linear-gradient(283deg,var(--letterboxing-gradient-color1)0%,var(--letterboxing-gradient-color2)100%),var(--letterboxing-bgcolor);box-shadow:rgba(0,0,0,0.5)0px-1px2px;}:root:not([inDOMFullscreen]).letterboxing.browserContainer:not(.responsive-mode)>.browserStack:not(.exclude-letterboxing)>.browserDecorator{display:initial;visibility:visible;border-radius:var(--letterboxing-border-radius);border-top-left-radius:var(--letterboxing-border-top-radius);border-top-right-radius:var(--letterboxing-border-top-radius);box-shadow:var(--letterboxing-border-color)0px0px.1pxinset,var(--letterboxing-border-color)00.1px;border:.1pxsolidvar(--letterboxing-border-color);outline:.1pxsolidvar(--letterboxing-bgcolor);height:calc(var(--letterboxing-height)+1px);top:-1px;}.letterboxing-vcenter.browserDecorator{height:auto!important;top:0!important;}/* Align status bar with content. TODO: switch to nested CSS selectors for conciseness when available (Firefox >= 117)*/.letterboxing.browserContainer:not(.responsive-mode)>.browserStack:not(.exclude-letterboxing)>#statuspanel:not([hidden]){position:relative;place-self:endleft;left:0;right:0;z-index:2;--letterboxing-status-left-radius:var(--letterboxing-border-radius);--letterboxing-status-right-radius:0;}.letterboxing.browserContainer:not(.responsive-mode)>.browserStack:not(.exclude-letterboxing)>#statuspanel:not([mirror]):-moz-locale-dir(rtl),.letterboxing.browserContainer:not(.responsive-mode)>.browserStack:not(.exclude-letterboxing)>#statuspanel[mirror]:-moz-locale-dir(ltr){left:0;right:0;--letterboxing-status-right-radius:var(--letterboxing-border-radius);--letterboxing-status-left-radius:0;justify-self:right;}.letterboxing.browserContainer:not(.responsive-mode)>.browserStack:not(.exclude-letterboxing)#statuspanel-label{border-radius:00var(--letterboxing-status-right-radius)var(--letterboxing-status-left-radius);margin:0;border:1pxsolidvar(--letterboxing-border-color);max-width:calc(var(--letterboxing-width)*.5);}.letterboxing.browserContainer:not(.responsive-mode)>.browserStack:not(.exclude-letterboxing)>browser{box-shadow:0px4px8px0pxvar(--letterboxing-shadow-color);border-radius:var(--letterboxing-border-radius);border-top-left-radius:var(--letterboxing-border-top-radius);border-top-right-radius:var(--letterboxing-border-top-radius);width:var(--letterboxing-width)!important;height:var(--letterboxing-height)!important;}:root:not([inDOMFullscreen]).letterboxing.letterboxing-ready.browserContainer:not(.responsive-mode)>.browserStack:not(.exclude-letterboxing){place-content:var(--letterboxing-vertical-alignment)center;background:var(--letterboxing-bgcolor);}
And these are the Tor-specific branding overrides:
Just to be clear, Tor Browser 13.5a4 is not affected anymore since !905 (merged). Mullvad Browser 13.5a4 had already shipped when the patch landed, and will be fixed in 13.5a5.
I understand, it was just a little sudden as we were mid-design review and still wrapping our heads around the fix. I may have one or two small changes, but overall I think this is working very nicely <3