Skip to content

Commit 698faab

Browse files
merge: R2 desktop shell IA
2 parents 442460a + 0048be8 commit 698faab

6 files changed

Lines changed: 361 additions & 195 deletions

File tree

.agents/skills/ui-screenshot/scripts/capture.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ async function main() {
6666
const [vw, vh] = (viewport as string).split(',').map(Number);
6767
const waitMs = Number(wait);
6868
const useMock = mock !== 'false';
69+
const captureTheme = theme === 'light' ? 'light' : 'dark';
6970

7071
const timestamp = new Date().toISOString().replace(/[:T]/g, '-').slice(0, 19);
7172
const outputPath = resolve(out ?? `screenshots/capture-${timestamp}.png`);
@@ -78,12 +79,17 @@ async function main() {
7879

7980
const context = await browser.newContext({
8081
viewport: { width: vw, height: vh },
81-
colorScheme: theme as 'dark' | 'light',
82+
colorScheme: captureTheme,
8283
deviceScaleFactor: 1,
8384
});
8485

8586
const page = await context.newPage();
8687

88+
await page.addInitScript((selectedTheme) => {
89+
window.localStorage.setItem('agenthub-theme', selectedTheme);
90+
document.documentElement.setAttribute('data-theme', selectedTheme);
91+
}, captureTheme);
92+
8793
// Inject mock data before navigation
8894
if (useMock) {
8995
await page.addInitScript((payload) => {

app/desktop/src/App.module.css

Lines changed: 79 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,7 @@
274274
display: flex;
275275
flex-direction: column;
276276
align-items: center;
277-
gap: 6px;
277+
gap: 4px;
278278
padding: 8px 5px;
279279
border: 1px solid var(--glass-border-subtle);
280280
border-radius: 14px;
@@ -283,8 +283,9 @@
283283
-webkit-backdrop-filter: blur(16px);
284284
}
285285

286-
.rightRail {
287-
justify-content: flex-start;
286+
.railSpacer {
287+
flex: 1;
288+
min-height: 8px;
288289
}
289290

290291
.railStatusDot {
@@ -712,6 +713,56 @@
712713
flex-shrink: 0;
713714
}
714715

716+
/* ── Workspace content: transcript + inspector ─ */
717+
.workspaceContent {
718+
flex: 1;
719+
display: flex;
720+
min-height: 0;
721+
}
722+
723+
.transcriptArea {
724+
flex: 1;
725+
display: flex;
726+
flex-direction: column;
727+
min-height: 0;
728+
min-width: 0;
729+
}
730+
731+
/* ── Inline Inspector Panel ──────────────── */
732+
.inspectorPanel {
733+
width: var(--right-panel-width, 320px);
734+
flex-shrink: 0;
735+
display: flex;
736+
flex-direction: column;
737+
border-left: 1px solid var(--glass-border-subtle);
738+
background: var(--sidebar-bg);
739+
overflow: hidden;
740+
transition: opacity 0.18s ease;
741+
}
742+
743+
[data-theme='dark'] .inspectorPanel {
744+
background: var(--glass-panel);
745+
border-left-color: var(--glass-border);
746+
}
747+
748+
.inspectorPanelBody {
749+
flex: 1;
750+
overflow-y: auto;
751+
padding: var(--space-sm);
752+
font-size: var(--font-size-xs);
753+
color: var(--foreground);
754+
}
755+
756+
.inspectorPanelOpen {
757+
opacity: 1;
758+
pointer-events: auto;
759+
}
760+
761+
.inspectorPanelClosing {
762+
opacity: 0;
763+
pointer-events: none;
764+
}
765+
715766
/* ═══════════════════════════════════════════════
716767
Right panel — slim, refined
717768
═══════════════════════════════════════════════ */
@@ -1289,20 +1340,39 @@
12891340
Responsive
12901341
═══════════════════════════════════════════════ */
12911342

1343+
@media (max-width: 1279px) {
1344+
.sidebar { width: min(var(--left-sidebar-width, 320px), 28vw); }
1345+
.inspectorPanel { width: min(var(--right-panel-width, 320px), 35vw); }
1346+
}
1347+
12921348
@media (max-width: 1023px) {
12931349
.sidebar { width: min(var(--left-sidebar-width, 320px), 34vw); }
1294-
.rightPanel {
1295-
right: 12px;
1296-
width: min(var(--right-panel-width, 320px), 40vw);
1297-
max-height: calc(100% - 60px);
1298-
}
1350+
.inspectorPanel { width: min(var(--right-panel-width, 280px), 40vw); }
12991351
}
13001352

13011353
@media (max-width: 767px) {
1354+
.topBar {
1355+
height: 28px;
1356+
justify-content: flex-end;
1357+
padding-inline: 8px;
1358+
}
1359+
1360+
.topBarLeft {
1361+
flex: 1 1 auto;
1362+
min-width: 0;
1363+
}
1364+
1365+
.topBarNavCluster,
1366+
.appMenu,
1367+
.statusBadge,
1368+
.topBarDim {
1369+
display: none;
1370+
}
1371+
13021372
.body { flex-direction: column; padding: 0; gap: 0; }
13031373
.sidebar { display: none; }
13041374
.leftRail, .rightRail, .resizeHandle { display: none; }
1305-
.rightPanel { display: none; }
1375+
.inspectorPanel { display: none; }
13061376
.workspace { border-radius: 0; }
13071377
.nav { display: flex; }
13081378
.mobileToolbar { display: flex; }

0 commit comments

Comments
 (0)