Code review (8 reviewers) fixes: - P1: embedded board task-detail now passes onRequestClose so delete/merge/retry dismiss the panel (no ghost task). - P1: RightDock + TerminalModal drag handlers add pointercancel + unmount teardown (no leaked document listeners / rAF / stuck userSelect); remove dead onOpenChange prop. - Planning slot DOM-poll interval now caps (self-cancels on mobile); heartbeat slider persist debounced + mounted-guarded. - Cleanup: remove dead ViewHeader-migration CSS (Skills/Insights), extract shared GithubIcon, move Activity Log embedded CSS to ActivityLogModal.css, FNXC date-format fixes, AGENTS lazy-view note. - Update stale RightDock roster tests + LeftSidebarNav 'Compound Eng' test to current behavior. Live UI tweaks: - Default load lands on board, never the Command Center Dashboard. - View Board/View Agents moved to the Command Center Overview tab (under the live-activity strip). - Heartbeat card full-width with spaced, wrapping controls. - Dev Server panel scrolls in the dock; ChatView right-pane title takes the full line. - Files pop-out renders deterministic left-right two-pane. - Mailbox list pane narrower + narrow by default; Add Goal button height matches the Compound stage button; Memory Working-Memory tab no longer overlaps; Skills view fills full width. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
100 lines
3.3 KiB
CSS
100 lines
3.3 KiB
CSS
/*
|
|
FNXC:RightDockEmbedded 2026-06-22-12:00:
|
|
Activity Log embedded (right-dock) styles live here with the ActivityLogModal component. These rules were previously appended to ScriptsModal.css by mistake; the gm/automation rules stay in ScriptsModal.css. The base .activity-log-* modal rules still live in ScriptsModal.css (imported by ActivityLogModal.tsx) pending a full extraction.
|
|
*/
|
|
|
|
/*
|
|
FNXC:RightDockEmbedded 2026-06-22-00:00:
|
|
Right-dock redesign renders the activity log inline inside the dock container instead of as a fixed popup overlay.
|
|
The embedded root is a plain flow box that fills the dock; the inner panel sheds overlay chrome (fixed sizing, shadow, radius, resize) and fills 100% of the host so the dock owns the frame and its own header/close.
|
|
*/
|
|
.activity-log-embedded.right-dock-embedded-view {
|
|
display: flex;
|
|
width: 100%;
|
|
height: 100%;
|
|
min-height: 0;
|
|
}
|
|
|
|
.activity-log-modal--embedded {
|
|
width: 100%;
|
|
height: 100%;
|
|
max-width: none;
|
|
max-height: none;
|
|
box-shadow: none;
|
|
border-radius: 0;
|
|
resize: none;
|
|
/*
|
|
FNXC:RightDockEmbedded 2026-06-22-00:00:
|
|
The dock is narrow (~280-420px) while the viewport stays desktop, so the view's @media (max-width:768px) mobile
|
|
rules never fire. Make the embedded panel an inline-size query container so the dock width — not the viewport —
|
|
drives the mobile single-column layout below. See the @container activity-log-embedded block below.
|
|
*/
|
|
container-type: inline-size;
|
|
container-name: activity-log-embedded;
|
|
}
|
|
|
|
/*
|
|
FNXC:RightDockEmbedded 2026-06-22-00:00:
|
|
Mirror the phone-width (@media max-width:768px) activity-log layout-stacking rules for the narrow dock, scoped to the
|
|
embedded variant. Header wraps (title + close on top row, actions/filters stack full-width), filters/selects go 100%,
|
|
the active-filters bar wraps, and entry headers/details/text wrap instead of overflowing horizontally. Only layout
|
|
stacking is mirrored; behavior and the real @media rules are untouched.
|
|
*/
|
|
@container activity-log-embedded (max-width: 560px) {
|
|
.activity-log-modal--embedded .activity-log-header {
|
|
flex-wrap: wrap;
|
|
gap: var(--space-sm);
|
|
padding: var(--space-md) var(--space-lg);
|
|
}
|
|
|
|
.activity-log-modal--embedded .activity-log-title {
|
|
flex: 1 1 auto;
|
|
order: 0;
|
|
}
|
|
|
|
.activity-log-modal--embedded .activity-log-actions {
|
|
flex: 1 1 100%;
|
|
flex-wrap: wrap;
|
|
gap: var(--space-xs);
|
|
order: 2;
|
|
}
|
|
|
|
.activity-log-modal--embedded .activity-log-filter,
|
|
.activity-log-modal--embedded .activity-log-filter--project {
|
|
flex: 1 1 0;
|
|
min-width: 0;
|
|
}
|
|
|
|
.activity-log-modal--embedded .activity-log-filter-select {
|
|
width: 100%;
|
|
}
|
|
|
|
.activity-log-modal--embedded .activity-log-active-filters {
|
|
flex-wrap: wrap;
|
|
padding: var(--space-sm) var(--space-lg);
|
|
gap: var(--space-xs);
|
|
}
|
|
|
|
.activity-log-modal--embedded .activity-log-clear-filters {
|
|
margin-left: 0;
|
|
}
|
|
|
|
.activity-log-modal--embedded .activity-log-content {
|
|
padding: var(--space-md) var(--space-lg);
|
|
}
|
|
|
|
.activity-log-modal--embedded .activity-log-entry-header {
|
|
flex-wrap: wrap;
|
|
gap: var(--space-xs);
|
|
}
|
|
|
|
.activity-log-modal--embedded .activity-log-entry-details {
|
|
flex-wrap: wrap;
|
|
word-break: break-word;
|
|
}
|
|
|
|
.activity-log-modal--embedded .activity-log-entry-text {
|
|
word-break: break-word;
|
|
}
|
|
}
|