Repository navigation
Keep ALB logs in the URL, count filters across the window, and fix local sign-in - #1807
Merged
Merged
Conversation
Node 26 throws "Illegal invocation" when undici copies @hono/node-server's lightweight Request, which remix-auth does in login, reauth and the OAuth callback. Production only worked because the forwarded-proto middleware happens to rebuild every request behind the gateway; locally nothing did, so sign-in 500ed. A global middleware now converts the request once, before anything else reads it.
- Step and auto-refresh selects render their label on the server, so the toolbar no longer reflows when Radix fills it in on hydration. - The refresh button squares its right corners itself: Tooltip's wrapper stops ButtonGroup from reaching it. - Filter multi-selects use datum-ui's MultiSelect so they line up with the other toolbar controls.
The content wrapper was h-full of the whole sub layout, title and tabs included, so full-height pages such as logs ran past the bottom by their height. It now takes the remaining space with flex-1.
… window - Time range, filters, search, live and the open row live in the query string, so a refresh or shared link reopens the same view. Refresh slides a preset window to now. - Filter options come from label values for the whole window, so ticking one never hides the others, and each option shows how many lines match the other ticked filters (queryapi's sum by count_over_time). - Host lists the host each row shows, not every host label on it, so a rewritten backend authority (e.g. httpbin.org) is no longer an option. - Earlier rows and filters stay on screen while the next request runs, with datum-ui's isFetching state instead of skeletons.
🧪 Test Summary
Need another run? Use Re-run failed jobs: one shard costs a few minutes, the whole workflow about 26. |
The ALB explorer's component test expected the rewritten authority in the Host filter and clicked Host open, which now collapses it since datum-ui 3.11 opens every group.
🧪 Test Summary
Need another run? Use Re-run failed jobs: one shard costs a few minutes, the whole workflow about 26. |
yahyafakhroji
approved these changes
Nov 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
ALB logs now keep their view in the URL and show filter counts for the whole time window. This also fixes the local sign-in 500, a toolbar that jumped while the metrics page loaded, and logs pages that scrolled past the bottom.
Merge after production has milo-os/telemetry#267. The counts and the window-wide filter options use queryapi features from that PR. It is live on staging, but production pins o11y
v0.6.8, which is older. Without it, counts are left off, but the filter options would list values from every ALB in the project instead of this one.What changed
useLogsUrlStatefrom datum-ui.sum by (…) (count_over_time(…))query per filter. So ticking GET still shows how many POSTs there are.authority, which the proxy rewrites to the backend's name. Sohttpbin.orgwas an option even though no row showed it. Host now uses the same order as the Host column (host, SNI,x_forwarded_host, thenauthority), and empty-values are skipped.isFetchingstate: dimmed rows, a spinning Refresh and a thin progress bar. Filter groups start open.fix(server)).@hono/node-server's lightweightRequest, which remix-auth does in login, reauth and the OAuth callback.fix(metrics)).MultiSelectso they line up with the other controls.fix(layout)). SubLayout's content wash-fullof the whole layout, title and tabs included, so logs ran past the bottom. It now takes the remaining space withflex-1.chore(deps)). Brings inisFetching, filter groups open by default, and the picker clear button that no longer sits inside the trigger button.Testing
npm run typecheck,eslintand the pre-commit hook pass.app/resources/o11y-logs,app/features/edgeandapp/servertests pass (403 tests). New tests cover:The compute plugin's logs get the same changes in datum-cloud/compute#634.