Nightly Build / build (push) Successful in 9s
Models → TTS rendered as a 45px strip in the middle of an empty workspace. The cause was not inside the page: `models-tts-section` had no CSS rule at all, and an unknown custom element is `display: inline`. Its host is switched to `display: flex` by JS, so the section became a content-sized flex item in a row container. Its three siblings escaped only because they were named in a sizing block that TTS was never added to. Replace that enumeration with `tasks-page > *, projects-page > *, models-hub-page > *`. The three multiplexers render exactly one section at a time as their only child, so a new section now inherits the sizing by existing — the list of names was itself the bug, and forgetting it was silent: no console error, no failed build, just a narrow page. Also give every remaining page host the two properties that made this survivable elsewhere: `flex-direction: column` on agent-inbox, approval-rules, approval-groups, llm-providers and models-hub (in the default `row` the width depends on the inner div remembering `width: 100%`), and `min-width: 0` on agents, config and dashboard so a wide table cannot push the workspace past the viewport. Measured in headless Chrome against the real stylesheets: the TTS section goes from 45px to 589px in a 590px host, matching its siblings. Record the trap in dev-docs/frontend.md, which had no page-shell section at all — and add the models-tts row missing from its component table.
108 lines
1.6 KiB
CSS
108 lines
1.6 KiB
CSS
config-page {
|
|
display: none; /* toggled by JS → flex */
|
|
flex-direction: column;
|
|
flex: 1;
|
|
min-width: 0;
|
|
overflow-y: auto;
|
|
background: var(--bs-body-bg);
|
|
}
|
|
|
|
.config-page {
|
|
display: flex;
|
|
flex-direction: column;
|
|
width: 100%;
|
|
}
|
|
|
|
.config-body {
|
|
padding: 1.5rem 2rem;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.75rem;
|
|
}
|
|
|
|
.config-sets {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 2rem;
|
|
max-width: 680px;
|
|
}
|
|
|
|
.config-set {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.75rem;
|
|
}
|
|
|
|
.config-set-header {
|
|
padding-bottom: 0.5rem;
|
|
border-bottom: 1px solid var(--bs-border-color);
|
|
}
|
|
|
|
.config-set-name {
|
|
font-size: 1rem;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.config-set-desc {
|
|
font-size: 0.8rem;
|
|
color: var(--bs-secondary-color, #6c757d);
|
|
margin-top: 0.1rem;
|
|
}
|
|
|
|
.config-rows {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.75rem;
|
|
}
|
|
|
|
.config-row {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.5rem;
|
|
padding: 1rem;
|
|
border: 1px solid var(--bs-border-color);
|
|
border-radius: 0.5rem;
|
|
background: var(--bs-body-bg);
|
|
}
|
|
|
|
.config-row-name {
|
|
font-weight: 600;
|
|
font-size: 0.9rem;
|
|
}
|
|
|
|
.config-row-desc {
|
|
font-size: 0.8rem;
|
|
color: var(--bs-secondary-color, #6c757d);
|
|
}
|
|
|
|
.config-row-control {
|
|
display: flex;
|
|
gap: 0.5rem;
|
|
align-items: center;
|
|
}
|
|
|
|
.config-input {
|
|
flex: 1;
|
|
max-width: 400px;
|
|
}
|
|
|
|
.config-save-btn {
|
|
white-space: nowrap;
|
|
min-width: 64px;
|
|
}
|
|
|
|
.config-bool-switch {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
.config-bool-switch .form-check-input {
|
|
cursor: pointer;
|
|
width: 2.5em;
|
|
height: 1.25em;
|
|
margin: 0;
|
|
}
|