fix: minor bug fixes sweep (15 bugs)#176
Conversation
- Backup download route now returns JSON errors so the browser doesn't save the error body as `download.txt`. UI fetches with toast on failure, blob-downloads on success. - Extract shared NODE_KIND_META from the pipeline component palette to src/lib/node-kind-colors.ts so the shared-components library page matches the canvas color coding (source/transform/sink) instead of using ad-hoc emerald/sky/orange utility classes.
…-detect - "Read what we collect" link now points at the GitBook page instead of a non-existent local /docs/operations/telemetry route. - Add a Telemetry entry to the settings sidebar (System group) and to the settings overview cards so the page is reachable without typing the URL by hand. - Auto-detect deployment mode when VF_DEPLOYMENT_MODE is unset: probe KUBERNETES_SERVICE_HOST for k8s/Helm deploys, /.dockerenv for Docker, fall back to "bare". "unknown" is now reserved for an explicit override that doesn't match the enum.
…tion - Deployment matrix on the fleet overview now defaults the status filter to "running" when the URL has no `status` param. An explicit empty `?status=` overrides the default. The default isn't counted as an active filter so the clear-filters chip stays hidden. - Node logs container now respects parent width (w-full + min-w-0) and the toolbar wraps on narrow viewports instead of forcing horizontal scroll. Long log lines break-word inside their own scroll region. - withTeamAccess middleware now resolves teamId from a NodeGroup id, so nodeGroup.update / nodeGroup.delete no longer fail with "Cannot resolve team context from input".
- Audit log list now excludes scim.* actions from the default view to cut sync-loop noise. SCIM entries reappear when the user filters by the SCIM entity types, picks a scim.* action explicitly, or searches for "scim". Failure surfacing once SCIM routes start emitting status metadata can layer on top of this filter. - Replace the native HTML date inputs in the audit filter bar with a shadcn-style DateRangePicker (Popover + react-day-picker v9 Calendar). Adds calendar.tsx and date-range-picker.tsx primitives so the rest of the app can reuse them; pulls in react-day-picker and date-fns.
The anomaly detection settings form synced state from `settingsQuery` via a useEffect that re-runs whenever `dirty` toggles. After a successful save, `setDirty(false)` ran before the refetch had completed, so the effect re-applied the stale snapshot of `settings` and the just-saved sigma / baseline / dedup values appeared to revert in the UI. Hydrate the form directly from the mutation result in onSuccess so the authoritative server state is the source of truth, then invalidate the query for other consumers.
…→0.54 - Add src/lib/vector-version.ts as the canonical place to read/write the vector.dev version VectorFlow ships. Comments in docker/server/Dockerfile, agent/Dockerfile, and agent/install.sh point operators here when bumping. - Bump docker/server/Dockerfile from 0.53.0 → 0.54.0 to align with the agent and installer (server was lagging by one minor version). - Surface the bundled Vector version on Settings > Version Check with a link to the matching upstream release notes.
…view - Move WebhookEndpoint UI from Settings > Outbound Webhooks → Alerts > Channels as the new OutboundWebhooksSection. NotificationChannel and AlertWebhook already lived under Channels; the team-scoped event firehose now sits next to them so all webhook surfaces are reachable from one place. /settings/webhooks redirects to /alerts?tab=channels for anyone with the old URL bookmarked. Sidebar + settings overview no longer show a standalone Outbound Webhooks entry. - Render the existing AnomalyHistorySection inside the History > Grouped tab so anomaly events show up alongside correlated alert groups during incident triage. Anomalies still aren't part of AlertCorrelationGroup at the data layer; that's a follow-up if we want the correlator to actually fold them into the same groups.
The hook now defaults statusFilter to ["running"] when the URL has no status param, and clearFilters now navigates to ?status= instead of just the bare pathname (so the default doesn't silently re-apply). Adjust the affected tests + add coverage for the explicit empty case.
Greptile SummaryThis polish-sprint PR fixes 15 reported bugs across telemetry, audit, fleet, alerts, and backups — including the anomaly detection save-revert race, the node-group team-resolution error, and the backup download saving error bodies as files. The changes are generally well-scoped and consistent with the existing codebase patterns. One P2 issue found: the new Confidence Score: 4/5Safe to merge; only finding is a P2 timezone display bug in the audit date picker that doesn't affect stored data. All 15 bug fixes are correctly implemented and consistent with the codebase's patterns. The single P2 finding (UTC date-string parsing in the audit DateRangePicker) causes the wrong day to be highlighted on reopen in UTC-negative timezones but does not cause data loss. No P0/P1 issues found. src/app/(dashboard)/audit/page.tsx — date string construction passed to DateRangePicker should use local midnight (T00:00:00 suffix) instead of relying on bare new Date('yyyy-MM-dd') UTC parsing. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
subgraph withTeamAccess["withTeamAccess middleware (src/trpc/init.ts)"]
A["rawInput.teamId?"] -->|yes| DONE["teamId resolved ✓"]
A -->|no| B["rawInput.environmentId?"]
B -->|yes| DONE
B -->|no| C["rawInput.pipelineId?"]
C -->|yes| DONE
C -->|no| D["rawInput.id → try multiple entity types"]
D --> E["AlertWebhook?"]
E -->|found| DONE
E -->|miss| F["NodeGroup → environment.teamId 🆕"]
F -->|found| DONE
F -->|miss| G["NotificationChannel?"]
G -->|found| DONE
G -->|miss| H["… more lookups …"]
H -->|all miss| ERR["Cannot resolve team context ❌"]
end
|
Summary
Polish-sprint PR fixing 15 reported bugs across telemetry, alerts, fleet, audit, library, and backups. Single branch, one logical commit per bundle so the diff stays reviewable.
Bugs fixed
Telemetry
/settings/telemetrynow points at the GitBook page instead of a non-existent local route.Telemetryentry added to the settings sidebar (System group) and overview cards.KUBERNETES_SERVICE_HOST→helm,/.dockerenv→docker, otherwisebare);unknownis reserved for an explicit override that doesn't match the enum.Vector version
src/lib/vector-version.tsis the canonical source.docker/server/Dockerfile,agent/Dockerfile, andagent/install.shreference it via comments.Anomaly detection settings save
onSuccessinstead of relying on theuseEffectsync. Thedirtytoggle was re-running the effect before the refetch resolved, so saved values appeared to revert.Alerts architecture
WebhookEndpoint) UI moved fromSettings > Outbound Webhooks→Alerts > ChannelsasOutboundWebhooksSection./settings/webhooksnow redirects to/alerts?tab=channels.AnomalyHistorySectionnow renders inside theHistory > Groupedtab so anomalies appear next to correlated alert groups during incident triage.Audit log
scim.*entries to cut sync-loop noise; they reappear when the user filters by SCIM entity types, picks ascim.*action explicitly, or searches forscim.DateRangePickerbuilt onreact-day-pickerv9 +Popover. Addscalendar.tsxanddate-range-picker.tsxprimitives.Fleet
runningwhen the URL has nostatusparam. An explicit?status=overrides the default; the default isn't counted as an active filter.w-full+min-w-0) and the toolbar wraps on narrow viewports instead of forcing horizontal scroll. Long log linesbreak-wordsinside their own scroll region.withTeamAccessmiddleware now resolvesteamIdfrom aNodeGroupid, fixing theCannot resolve team context from inputerror when editing or deleting node groups.Misc
download.txt. UI fetches with toast on failure, blob-downloads on success.NODE_KIND_METAextracted tosrc/lib/node-kind-colors.ts. Library shared-components page now uses pipeline-canvas colors (left-border accent + colored badges) instead of ad-hoc emerald/sky/orange utility classes.Out of scope (added to backlog)
AlertWebhookmodel entirely — wired into 5 services + tests, deserves a dedicated PR. Plaintext-secret risk noted.AnomalyEventintoAlertCorrelationGroupat the data layer (correlator + schema change).Test plan
pnpm test— full vitest suite (2531 tests passing locally)pnpm tsc --noEmit— typecheck clean/alertsChannels tab — Outbound Webhooks section renders + create/edit/test still works/alertsHistory > Grouped — anomalies section appears under correlated groups/audit— date range picker works, SCIM successes hidden by default/fleetoverview — deployment matrix defaults to running-only on first visit/fleet/<nodeId>Logs tab — no horizontal scroll on narrow viewportdownload.txt); error case shows toast