Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
200 changes: 54 additions & 146 deletions apps/web/src/app.css
Original file line number Diff line number Diff line change
Expand Up @@ -1139,47 +1139,6 @@ select:disabled,
color: var(--primary);
}

/* Mission Control — pinned above the footer rail as its own row (DESIGN.md),
never a 7th button mixed into Routines/Files/Skills/Agents/Tools/
Insights below. The border-bottom is what reads it as a separate band
rather than the first row of that rail. */
.shell-sidebar-mission-control {
flex-shrink: 0;
padding: 0.35rem;
border-bottom: 1px solid var(--border);
}
.shell-sidebar-mission-control-row {
display: flex;
align-items: center;
gap: 0.55rem;
width: 100%;
padding: 0.45rem 0.4rem;
border: 0;
border-radius: 0;
background: transparent;
color: var(--foreground);
font: inherit;
font-weight: 600;
cursor: pointer;
text-align: left;
}
.shell-sidebar-mission-control-row svg {
width: 1.05rem;
height: 1.05rem;
color: var(--muted-foreground);
}
.shell-sidebar-mission-control-row:hover,
.shell-sidebar-mission-control-row[data-active="true"] {
background: color-mix(in srgb, var(--foreground) 8%, transparent);
}
.shell-sidebar-mission-control-row[data-active="true"] {
box-shadow: inset 2px 0 0 0 var(--shell-accent);
}
.shell-sidebar-mission-control-row:focus-visible {
outline: 1px solid var(--foreground);
outline-offset: -1px;
}

/* Footer (reference shape): a Tools row, then the account row that
anchors the pop-up menu. Both are full-width quiet rows; the account
row has no top margin of its own so the two never read as separate
Expand Down Expand Up @@ -3654,144 +3613,59 @@ tr.insights-row-clickable:hover {
}
}

/* Mission Control — stat strip, then a main column
(Needs you / In flight) beside a 320px rail (Jump back in / This week),
the same "stack under 1100px" rule DESIGN.md gives every right rail. */
.mission-control-layout {
display: grid;
grid-template-columns: minmax(0, 1fr) 20rem;
grid-template-areas:
"stats stats"
"main rail";
gap: 1rem;
width: 100%;
}
.mission-control-layout > .mission-control-stats {
grid-area: stats;
}
.mission-control-layout > .mission-control-panel {
grid-area: main;
}
.mission-control-layout > .mission-control-panel + .mission-control-panel {
margin-top: 1rem;
}
.mission-control-layout > .mission-control-rail {
grid-area: rail;
display: flex;
flex-direction: column;
gap: 1rem;
min-width: 0;
}
@media (max-width: 1100px) {
.mission-control-layout {
grid-template-columns: 1fr;
grid-template-areas:
"stats"
"main"
"rail";
}
}

.mission-control-panel {
/* A workbench room's left info column: activity, artifacts, approvals and
participants, stacked as quiet panels beside the running chat. */
.room-info-panel {
padding: 0.9rem 1rem;
border: 1px solid color-mix(in srgb, var(--foreground) 10%, transparent);
background: var(--card, var(--background));
min-width: 0;
}
.mission-control-panel-header {
.room-info-panel + .room-info-panel {
margin-top: 1rem;
}
.room-info-panel-header {
display: flex;
align-items: baseline;
gap: 0.6rem;
margin-bottom: 0.6rem;
}
.mission-control-panel-header h2 {
.room-info-panel-header h2 {
margin: 0;
font-size: 0.85rem;
font-weight: 700;
}
.mission-control-hint {
font-size: 0.72rem;
color: var(--muted-foreground);
}
.mission-control-hint-link {
margin-left: auto;
font-size: 0.75rem;
font-weight: 700;
color: var(--primary);
}
.mission-control-empty-note {
.room-info-empty-note {
margin: 0;
font-size: 0.8rem;
color: var(--muted-foreground);
}
.mission-control-cell-primary {
.room-info-cell-primary {
font-size: 0.85rem;
font-weight: 700;
}
.mission-control-cell-context {
.room-info-cell-context {
font-size: 0.7rem;
color: var(--muted-foreground);
}
.mission-control-row-actions {
.room-info-row-actions {
display: flex;
justify-content: flex-end;
gap: 0.4rem;
}
.mission-control-opt {
white-space: nowrap;
}
@media (max-width: 880px) {
.mission-control-opt {
display: none;
}
}

.mission-control-rows {
.room-info-approval-list,
.room-info-artifact-list {
display: flex;
flex-direction: column;
border: 1px solid color-mix(in srgb, var(--foreground) 10%, transparent);
}
.mission-control-jump-row {
display: grid;
grid-template-columns: auto 1fr auto;
align-items: center;
gap: 0.6rem;
width: 100%;
padding: 0.55rem 0.7rem;
border: 0;
border-bottom: 1px solid color-mix(in srgb, var(--foreground) 8%, transparent);
background: transparent;
color: var(--foreground);
font: inherit;
text-align: left;
cursor: pointer;
}
button.mission-control-jump-row:hover {
background: color-mix(in srgb, var(--primary) 8%, transparent);
}
.mission-control-rows > .mission-control-jump-row:last-child {
border-bottom: 0;
}
.mission-control-jump-row svg {
width: 1rem;
height: 1rem;
color: var(--muted-foreground);
flex-shrink: 0;
margin: 0;
padding: 0;
list-style: none;
}
.mission-control-jump-body {
.room-info-approval-row {
display: flex;
flex-direction: column;
min-width: 0;
}
.mission-control-jump-when {
font-size: 0.72rem;
color: var(--muted-foreground);
white-space: nowrap;
}
.mission-control-week-summary {
margin: 0;
font-size: 0.85rem;
font-weight: 600;
gap: 0.4rem;
}

/* Sidebar sections: Workbenches above Chats, each with its own label. */
Expand Down Expand Up @@ -3861,12 +3735,46 @@ button.mission-control-jump-row:hover {
width: 100%;
}

/* A workbench room: timeline in the stage, sub-thread replies beside it. */
/* A workbench room: a left info column (activity, artifacts, approvals,
participants), the running chat in the main column, and an optional
sub-thread panel on the right. */
.room-layout {
display: flex;
min-height: 0;
flex: 1;
}
.room-info-column {
display: flex;
flex-direction: column;
width: 18rem;
flex-shrink: 0;
min-height: 0;
overflow-y: auto;
padding: 1rem;
border-right: 1px solid var(--border);
}
@media (max-width: 1100px) {
.room-info-column {
display: none;
}
}
.room-main {
display: flex;
flex-direction: column;
flex: 1;
min-width: 0;
min-height: 0;
}
.room-main-scroll {
flex: 1;
min-height: 0;
overflow-y: auto;
}
.room-main-composer {
flex-shrink: 0;
border-top: 1px solid var(--border);
padding: 0.75rem 0;
}
.room-participants {
display: flex;
flex-wrap: wrap;
Expand Down
3 changes: 1 addition & 2 deletions apps/web/src/chat/strings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,8 @@ export const CHAT_STRINGS = {
couldNotLoadMessages: "messages",
workbenchNotFoundTitle: "This workbench isn't here anymore",
workbenchNotFoundDescription: "It may have been deleted, or the link is out of date.",
/** @deprecated Prefer Mission Control / New workbench recovery. */
/** @deprecated Prefer New workbench recovery. */
workbenchNotFoundAction: "Back to workbenches",
workbenchNotFoundMissionControlAction: "Mission Control",
workbenchNotFoundNewWorkbenchAction: NEW_WORKBENCH_LABEL,
/** Create-workbench CTA on every mint surface. */
newWorkbenchAction: NEW_WORKBENCH_LABEL,
Expand Down
Loading
Loading