improve narrow options table behavior
This commit is contained in:
parent
7835342cd3
commit
96b179243c
3 changed files with 469 additions and 9 deletions
|
|
@ -24,6 +24,7 @@
|
|||
{"_type":"issue","id":"islandflow-ayo","title":"Drop stale backlog events from live fanout","description":"Follow-up to live freshness rollout: /ws/live was still fanning out stale backlog events for freshness-gated channels, which kept tape panes in Live feed behind despite active synthetic ingest. Gate fanout and cache ingest by freshness for options/nbbo/equities/flow.","status":"closed","priority":1,"issue_type":"bug","assignee":"dirtydishes","owner":"dishes@dpdrm.com","created_at":"2026-04-28T21:26:39Z","created_by":"dirtydishes","updated_at":"2026-04-28T21:26:44Z","started_at":"2026-04-28T21:26:44Z","closed_at":"2026-04-28T21:26:44Z","close_reason":"Completed","dependency_count":0,"dependent_count":0,"comment_count":0}
|
||||
{"_type":"issue","id":"islandflow-0v6","title":"Fix tape freshness, NBBO coverage, pause controls, and filter popup","description":"Implement the tape fixes requested for synthetic options notional sizing, strict live freshness, live-mode pause/resume behavior, stronger NBBO snapshot coverage, and moving flow filters behind a popup. Includes server-side live cache changes, web terminal state/UI changes, and tests for synthetic pricing, live snapshot freshness/NBBO retention, and live pause/filter interactions.","status":"closed","priority":1,"issue_type":"task","assignee":"dirtydishes","owner":"dishes@dpdrm.com","created_at":"2026-04-28T21:02:52Z","created_by":"dirtydishes","updated_at":"2026-04-28T21:13:38Z","started_at":"2026-04-28T21:02:57Z","closed_at":"2026-04-28T21:13:38Z","close_reason":"Completed","dependency_count":0,"dependent_count":0,"comment_count":0}
|
||||
{"_type":"issue","id":"islandflow-e4r","title":"Implement smart-money flow filtering and synthetic firehose modes","description":"Implement the approved multi-surface plan for named synthetic market profiles, options raw-vs-signal filtering, live/API filter contracts, Tape page client-side flow filters, firehose-readiness improvements, tests, and README updates.","status":"closed","priority":1,"issue_type":"feature","assignee":"dirtydishes","owner":"dishes@dpdrm.com","created_at":"2026-04-28T20:10:49Z","created_by":"dirtydishes","updated_at":"2026-04-28T20:29:29Z","started_at":"2026-04-28T20:10:53Z","closed_at":"2026-04-28T20:29:29Z","close_reason":"Implemented synthetic market profiles, options signal-path filtering, signal-aware API/replay contracts, Tape page filters, tests, and README updates. Follow-up tracked in islandflow-biq.","dependency_count":0,"dependent_count":0,"comment_count":0}
|
||||
{"_type":"issue","id":"islandflow-833","title":"Improve narrow options table responsiveness","description":"Adapt the Options route for narrow screens so dense tape tables remain contained in their panes, preserve row identity while horizontally panning, and keep the mobile ticker/filter controls readable.","acceptance_criteria":"Options tape panes have bounded heights on narrow screens; table body scrolls internally; first table column remains visible while panning; mobile topbar and filter controls have adequate spacing; web production build passes.","status":"closed","priority":2,"issue_type":"task","assignee":"dirtydishes","owner":"dishes@dpdrm.com","created_at":"2026-05-29T22:34:05Z","created_by":"dirtydishes","updated_at":"2026-05-29T22:36:20Z","started_at":"2026-05-29T22:34:24Z","closed_at":"2026-05-29T22:36:20Z","close_reason":"Implemented narrow-screen options pane containment, sticky row context, touch-scroll affordances, and mobile control spacing. Validated with web build and in-browser narrow viewport checks.","dependency_count":0,"dependent_count":0,"comment_count":0}
|
||||
{"_type":"issue","id":"islandflow-aq9","title":"Harden terminal UI error and overflow states","description":"Harden the web terminal against oversized API errors, non-JSON synthetic admin failures, and long status text so live trading panes remain stable under bad network/backend responses.","status":"closed","priority":2,"issue_type":"task","owner":"dishes@dpdrm.com","created_at":"2026-05-29T22:10:16Z","created_by":"dirtydishes","updated_at":"2026-05-29T22:13:37Z","closed_at":"2026-05-29T22:13:37Z","close_reason":"Hardened terminal UI error rendering, synthetic admin failure parsing, long-message wrapping, and added focused tests.","dependency_count":0,"dependent_count":0,"comment_count":0}
|
||||
{"_type":"issue","id":"islandflow-ggm","title":"Harden web terminal UI states","description":"Improve the web terminal surface so it handles loading, empty data, API failures, overflow, and accessible live-status behavior more robustly.","status":"closed","priority":2,"issue_type":"task","assignee":"dirtydishes","owner":"dishes@dpdrm.com","created_at":"2026-05-29T21:59:45Z","created_by":"dirtydishes","updated_at":"2026-05-29T22:05:45Z","started_at":"2026-05-29T21:59:59Z","closed_at":"2026-05-29T22:05:45Z","close_reason":"Hardened web terminal status announcements, empty states, table semantics, clipped-cell fallbacks, tests, validation, and turn documentation.","dependency_count":0,"dependent_count":0,"comment_count":0}
|
||||
{"_type":"issue","id":"islandflow-dk5","title":"Remove frontend cooker route","description":"Remove the experimental /frontend-cooker page and update repository references that still list it as an available public route.","status":"closed","priority":2,"issue_type":"task","assignee":"dirtydishes","owner":"dishes@dpdrm.com","created_at":"2026-05-29T13:50:38Z","created_by":"dirtydishes","updated_at":"2026-05-29T13:53:05Z","started_at":"2026-05-29T13:50:48Z","closed_at":"2026-05-29T13:53:05Z","close_reason":"Removed the /frontend-cooker Next.js route, cleaned route/scanner references, documented the work, and validated the web build.","dependency_count":0,"dependent_count":0,"comment_count":0}
|
||||
|
|
|
|||
|
|
@ -1469,6 +1469,7 @@ h3 {
|
|||
}
|
||||
|
||||
.data-table-wrap {
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex: 1 1 auto;
|
||||
min-height: 0;
|
||||
|
|
@ -2489,6 +2490,10 @@ h3 {
|
|||
min-height: 0;
|
||||
}
|
||||
|
||||
.page-grid-options > .terminal-pane {
|
||||
height: clamp(430px, 68svh, 720px);
|
||||
}
|
||||
|
||||
.command-deck-grid {
|
||||
grid-template-columns: minmax(0, 1fr);
|
||||
grid-template-areas:
|
||||
|
|
@ -2563,7 +2568,7 @@ h3 {
|
|||
}
|
||||
|
||||
.terminal-content {
|
||||
padding: 16px 10px 22px;
|
||||
padding: 18px 10px calc(22px + env(safe-area-inset-bottom));
|
||||
}
|
||||
|
||||
.page-shell {
|
||||
|
|
@ -2615,11 +2620,19 @@ h3 {
|
|||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 30;
|
||||
padding: 12px 10px;
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr) auto;
|
||||
align-items: start;
|
||||
column-gap: 10px;
|
||||
row-gap: 16px;
|
||||
padding: 10px 10px 12px;
|
||||
}
|
||||
|
||||
.terminal-topbar-leading {
|
||||
width: 100%;
|
||||
width: auto;
|
||||
min-width: 0;
|
||||
grid-column: 1;
|
||||
grid-row: 1;
|
||||
}
|
||||
|
||||
.terminal-button,
|
||||
|
|
@ -2638,30 +2651,50 @@ h3 {
|
|||
.terminal-topbar-actions,
|
||||
.terminal-topbar-controls,
|
||||
.terminal-topbar-mode {
|
||||
width: 100%;
|
||||
min-width: 0;
|
||||
justify-content: flex-start;
|
||||
}
|
||||
|
||||
.terminal-topbar-actions,
|
||||
.terminal-topbar-actions {
|
||||
display: contents;
|
||||
}
|
||||
|
||||
.terminal-topbar-controls {
|
||||
flex-direction: column;
|
||||
align-items: stretch;
|
||||
width: 100%;
|
||||
grid-column: 1 / -1;
|
||||
grid-row: 2;
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr) auto;
|
||||
align-items: end;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.terminal-topbar-mode {
|
||||
grid-column: 2;
|
||||
grid-row: 1;
|
||||
width: auto;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.terminal-menu-trigger {
|
||||
width: 100%;
|
||||
width: auto;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.terminal-topbar-mode .terminal-button,
|
||||
.terminal-topbar-controls > .terminal-button,
|
||||
.terminal-topbar-leading > .terminal-button,
|
||||
.page-actions > .terminal-button,
|
||||
.page-actions > .flow-filter-popover {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.terminal-topbar-controls > .terminal-button {
|
||||
width: auto;
|
||||
min-width: 76px;
|
||||
}
|
||||
|
||||
.instrument-focus-chip {
|
||||
grid-column: 1 / -1;
|
||||
max-width: none;
|
||||
min-height: 44px;
|
||||
justify-content: space-between;
|
||||
|
|
@ -2685,6 +2718,10 @@ h3 {
|
|||
border-radius: 12px;
|
||||
}
|
||||
|
||||
.page-grid-options > .terminal-pane {
|
||||
height: clamp(390px, 62svh, 620px);
|
||||
}
|
||||
|
||||
.terminal-pane-head,
|
||||
.terminal-pane-body {
|
||||
padding: 14px 12px;
|
||||
|
|
@ -2716,6 +2753,7 @@ h3 {
|
|||
width: 100%;
|
||||
flex-direction: column;
|
||||
align-items: stretch;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
.flow-filter-popover {
|
||||
|
|
@ -2753,6 +2791,19 @@ h3 {
|
|||
margin-inline: -12px;
|
||||
border-radius: 0;
|
||||
scroll-snap-type: x proximity;
|
||||
scrollbar-gutter: stable;
|
||||
overscroll-behavior-x: contain;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
|
||||
.data-table-wrap::after {
|
||||
content: "";
|
||||
position: sticky;
|
||||
right: 0;
|
||||
z-index: 5;
|
||||
flex: 0 0 18px;
|
||||
pointer-events: none;
|
||||
background: linear-gradient(90deg, transparent, oklch(0.12 0.01 250 / 0.92));
|
||||
}
|
||||
|
||||
.data-table {
|
||||
|
|
@ -2770,6 +2821,39 @@ h3 {
|
|||
padding-inline: 8px;
|
||||
}
|
||||
|
||||
.data-table-head .data-table-cell:first-child,
|
||||
.data-table-row .data-table-cell:first-child {
|
||||
position: sticky;
|
||||
left: 0;
|
||||
z-index: 4;
|
||||
margin-left: -8px;
|
||||
padding-left: 8px;
|
||||
background: oklch(0.13 0.01 250);
|
||||
box-shadow:
|
||||
1px 0 0 oklch(0.72 0.012 250 / 0.14),
|
||||
14px 0 18px oklch(0.06 0.01 250 / 0.42);
|
||||
}
|
||||
|
||||
.data-table-head .data-table-cell:first-child {
|
||||
z-index: 6;
|
||||
background: oklch(0.15 0.012 250);
|
||||
}
|
||||
|
||||
.data-table-row.is-even .data-table-cell:first-child {
|
||||
background: oklch(0.145 0.011 250);
|
||||
}
|
||||
|
||||
.data-table-row:hover .data-table-cell:first-child,
|
||||
.data-table-row:focus-visible .data-table-cell:first-child {
|
||||
background: oklch(0.18 0.025 74);
|
||||
}
|
||||
|
||||
.data-table-row-classified .data-table-cell:first-child {
|
||||
background:
|
||||
linear-gradient(90deg, rgba(var(--classifier-rgb, 192, 200, 210), calc(0.04 + var(--classifier-intensity, 0) * 0.1)), transparent 90%),
|
||||
oklch(0.13 0.01 250);
|
||||
}
|
||||
|
||||
.data-table-row-options,
|
||||
.data-table-row-equities {
|
||||
height: 40px;
|
||||
|
|
@ -2832,6 +2916,22 @@ h3 {
|
|||
}
|
||||
|
||||
@media (max-width: 420px) {
|
||||
.terminal-topbar {
|
||||
column-gap: 8px;
|
||||
row-gap: 14px;
|
||||
padding-inline: 8px;
|
||||
}
|
||||
|
||||
.terminal-menu-trigger {
|
||||
min-width: 92px;
|
||||
padding-inline: 8px;
|
||||
}
|
||||
|
||||
.terminal-topbar-mode .terminal-button {
|
||||
min-width: 82px;
|
||||
padding-inline: 8px;
|
||||
}
|
||||
|
||||
.terminal-content {
|
||||
padding-inline: 8px;
|
||||
}
|
||||
|
|
|
|||
359
docs/turns/2026-05-29-improve-narrow-options-table.html
Normal file
359
docs/turns/2026-05-29-improve-narrow-options-table.html
Normal file
File diff suppressed because one or more lines are too long
Loading…
Add table
Add a link
Reference in a new issue