99 * without duplicating policy only in native code.
1010 *
1111 * html.eliza-electrobun-frameless is toggled from apps/app/src/main.tsx
12- * (main macOS Electrobun shell only; detached shells skip it).
12+ * and html.eliza-electrobun-custom-titlebar is toggled by Header when the
13+ * main macOS Electrobun shell renders its custom titlebar.
1314 */
14- html .eliza-electrobun-frameless {
15+ html : is ( .eliza-electrobun-frameless , . eliza-electrobun-custom-titlebar ) {
1516 /**
1617 * Leading inset so the header nav (Chat, Apps, ...) clears the traffic-light
1718 * cluster while staying on the same vertical row. hiddenInset draws controls
@@ -26,22 +27,34 @@ html.eliza-electrobun-frameless:not(.eliza-electrobun-custom-titlebar) body {
2627 -webkit-app-region : drag;
2728}
2829
29- html .eliza-electrobun-frameless [data-window-titlebar = "true" ] {
30+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar )
31+ [data-window-titlebar = "true" ] {
3032 -webkit-app-region : drag;
3133}
3234
33- html .eliza-electrobun-frameless [data-no-window-drag = "true" ],
34- html .eliza-electrobun-frameless [data-no-window-drag = "true" ] * ,
35- html .eliza-electrobun-frameless [data-no-window-drag = "true" ]::before ,
36- html .eliza-electrobun-frameless [data-no-window-drag = "true" ]::after ,
37- html .eliza-electrobun-frameless [data-no-camera-drag = "true" ],
38- html .eliza-electrobun-frameless [data-no-camera-drag = "true" ] * ,
39- html .eliza-electrobun-frameless [data-no-camera-drag = "true" ]::before ,
40- html .eliza-electrobun-frameless [data-no-camera-drag = "true" ]::after {
35+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar )
36+ [data-no-window-drag = "true" ],
37+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar )
38+ [data-no-window-drag = "true" ]
39+ * ,
40+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar )
41+ [data-no-window-drag = "true" ]::before ,
42+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar )
43+ [data-no-window-drag = "true" ]::after ,
44+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar )
45+ [data-no-camera-drag = "true" ],
46+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar )
47+ [data-no-camera-drag = "true" ]
48+ * ,
49+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar )
50+ [data-no-camera-drag = "true" ]::before ,
51+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar )
52+ [data-no-camera-drag = "true" ]::after {
4153 -webkit-app-region : no-drag;
4254}
4355
44- html .eliza-electrobun-frameless [data-window-titlebar-padding ] {
56+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar )
57+ [data-window-titlebar-padding ] {
4558 padding-inline-start : max (
4659 env (safe-area-inset-left, 0px ),
4760 var (--eliza-macos-frame-left-inset )
@@ -53,38 +66,59 @@ html.eliza-electrobun-frameless [data-window-titlebar-padding] {
5366 );
5467}
5568
56- html .eliza-electrobun-frameless a ,
57- html .eliza-electrobun-frameless button ,
58- html .eliza-electrobun-frameless input ,
59- html .eliza-electrobun-frameless textarea ,
60- html .eliza-electrobun-frameless select ,
61- html .eliza-electrobun-frameless option ,
62- html .eliza-electrobun-frameless label ,
63- html .eliza-electrobun-frameless summary ,
64- html .eliza-electrobun-frameless iframe ,
65- html .eliza-electrobun-frameless canvas ,
66- html .eliza-electrobun-frameless video ,
67- html .eliza-electrobun-frameless audio ,
68- html .eliza-electrobun-frameless electrobun-wgpu ,
69- html .eliza-electrobun-frameless [role = "button" ],
70- html .eliza-electrobun-frameless [role = "link" ],
71- html .eliza-electrobun-frameless [role = "menuitem" ],
72- html .eliza-electrobun-frameless [role = "menuitemcheckbox" ],
73- html .eliza-electrobun-frameless [role = "menuitemradio" ],
74- html .eliza-electrobun-frameless [role = "option" ],
75- html .eliza-electrobun-frameless [role = "radio" ],
76- html .eliza-electrobun-frameless [role = "checkbox" ],
77- html .eliza-electrobun-frameless [role = "switch" ],
78- html .eliza-electrobun-frameless [role = "tab" ],
79- html .eliza-electrobun-frameless [role = "slider" ],
80- html .eliza-electrobun-frameless [role = "listbox" ],
81- html .eliza-electrobun-frameless [role = "combobox" ],
82- html .eliza-electrobun-frameless [role = "spinbutton" ],
83- html .eliza-electrobun-frameless [role = "textbox" ],
84- html .eliza-electrobun-frameless [role = "searchbox" ],
85- html .eliza-electrobun-frameless [contenteditable = "true" ],
86- html .eliza-electrobun-frameless [aria-haspopup ],
87- html .eliza-electrobun-frameless [data-shell-scroll-region = "true" ] {
69+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar ) a ,
70+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar ) button ,
71+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar ) input ,
72+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar )
73+ textarea ,
74+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar ) select ,
75+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar ) option ,
76+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar ) label ,
77+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar ) summary ,
78+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar ) iframe ,
79+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar ) canvas ,
80+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar ) video ,
81+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar ) audio ,
82+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar )
83+ electrobun-wgpu ,
84+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar )
85+ [role = "button" ],
86+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar )
87+ [role = "link" ],
88+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar )
89+ [role = "menuitem" ],
90+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar )
91+ [role = "menuitemcheckbox" ],
92+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar )
93+ [role = "menuitemradio" ],
94+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar )
95+ [role = "option" ],
96+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar )
97+ [role = "radio" ],
98+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar )
99+ [role = "checkbox" ],
100+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar )
101+ [role = "switch" ],
102+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar )
103+ [role = "tab" ],
104+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar )
105+ [role = "slider" ],
106+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar )
107+ [role = "listbox" ],
108+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar )
109+ [role = "combobox" ],
110+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar )
111+ [role = "spinbutton" ],
112+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar )
113+ [role = "textbox" ],
114+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar )
115+ [role = "searchbox" ],
116+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar )
117+ [contenteditable = "true" ],
118+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar )
119+ [aria-haspopup ],
120+ html : is (.eliza-electrobun-frameless , .eliza-electrobun-custom-titlebar )
121+ [data-shell-scroll-region = "true" ] {
88122 -webkit-app-region : no-drag;
89123}
90124
0 commit comments