Skip to content

Improve stack and event refresh behavior, metrics, and tooltip contrast - #2415

Merged
ejsmith merged 6 commits into
mainfrom
issue/fix-stack-metrics-and-tag-tooltip
Jul 29, 2026
Merged

Improve stack and event refresh behavior, metrics, and tooltip contrast#2415
ejsmith merged 6 commits into
mainfrom
issue/fix-stack-metrics-and-tag-tooltip

Conversation

@ejsmith

@ejsmith ejsmith commented Jul 28, 2026

Copy link
Copy Markdown
Member

Summary

  • Use theme-aware foreground and muted colors for tag tooltip keyboard shortcuts in both light and dark themes.
  • Calculate project and stack user cardinality over the same seven-day window.
  • Stabilize Stack and Events reactive loading so semantically unchanged parameters do not churn state and each paging transition issues one list request.
  • Treat aborted or malformed successful response bodies as errors instead of caching ProblemDetails as successful query data.
  • Migrate all 73 FetchClient imports from the moved @exceptionless/fetchclient 0.44.0 package to the current @foundatiofx/fetchclient 1.3.3 package and refresh the lockfile.
  • Add focused unit coverage plus Stack and Events chaos tests covering paging, detail teardown and navigation, visibility churn, background ingestion, burst notifications, and route remounts.

Why

The keyboard shortcut inherited the tooltip inverse styling even though it is rendered on a popover-colored surface, which made the icon nearly invisible. Stack user metrics also compared a seven-day stack count with an all-time project count; besides producing an inconsistent percentage, the broader project query could reach legacy indices and return a 500.

Runtime effect tracing found that eight Stack paging transitions issued 15 list requests. Slower CI tracing then exposed the equivalent timing-sensitive dependency churn on the Events list: the first cursor transition could issue two identical requests. Both list effects now depend on stable semantic request keys and invoke their loaders untracked, reducing eight transitions to eight requests on each page.

Repeated route remounts could also abort a response body read after an HTTP 200, causing FetchClient to return ProblemDetails as successful data; TanStack Query then cached that object where array data was expected, eventually producing reactive runtime failures. Deserialization failures no longer enter the success cache. The package-level behavior is tracked upstream in FoundatioFx/FetchClient#31.

The FetchClient repository and npm scope moved to FoundatioFX. This updates the application from the final @exceptionless/fetchclient release to npm latest for the supported package. The latest package retains the exports used by the application; Exceptionless also supplies its own errorCallback, preserving its existing ProblemDetails error behavior across the upstream major-version change.

Dependency review

  • Current: @exceptionless/fetchclient 0.44.0
  • Target: @foundatiofx/fetchclient 1.3.3 (latest, published 2026-03-02)
  • Source: official repository, npm package, and v0.44.0...v1.3.3 comparison
  • Compatibility: all 73 imports resolve; Svelte and TypeScript report 0 errors and 0 warnings; the production build succeeds
  • Security: npm audit --omit=dev reports no advisory path through @foundatiofx/fetchclient; existing unrelated repository advisories remain outside this PR

Verification

  • npm ci
  • npm run validate
  • npm run test:unit: 29 files / 326 tests passed
  • npm run build
  • Focused Vitest suite from the effect work: 45 passed
  • Full local Chromium E2E suite from the effect work: 9 passed
  • Events chaos regression repeated three times: 3 passed
  • Stack chaos regression: eight page transitions / eight list requests; five detail mount cycles / zero list requests; 30 burst notifications / one list request; zero runtime or network errors
  • Events chaos regression: eight page transitions / eight list requests; visibility and background resume / at most one list request each; 30 burst notifications / one list request; bounded event and stack detail requests; zero runtime or network errors
  • Local Aspire App was healthy during effect validation; /next/ and /api/v2/about returned 200

Breaking changes

None.

@ejsmith ejsmith changed the title Fix stack metrics and tag tooltip contrast Improve stack refresh, metrics, and tooltip contrast Jul 28, 2026
@ejsmith ejsmith changed the title Improve stack refresh, metrics, and tooltip contrast Improve stack refresh, metrics, tooltip contrast, and effect coverage Jul 28, 2026
@ejsmith ejsmith changed the title Improve stack refresh, metrics, tooltip contrast, and effect coverage Improve stack and event refresh behavior, metrics, and tooltip contrast Jul 28, 2026
@ejsmith
ejsmith marked this pull request as ready for review July 28, 2026 23:03
@ejsmith

ejsmith commented Jul 28, 2026

Copy link
Copy Markdown
Member Author

/preview

@github-actions github-actions Bot added the dev-preview Deploy this pull request to the shared dev environment. label Jul 28, 2026
@github-actions

github-actions Bot commented Jul 28, 2026

Copy link
Copy Markdown

Preview deployed

@ejsmith
ejsmith force-pushed the issue/fix-stack-metrics-and-tag-tooltip branch from 939c574 to 90329c8 Compare July 28, 2026 23:21
@github-actions

Copy link
Copy Markdown

Code Coverage

Package Line Rate Branch Rate Complexity Health
Exceptionless.Core 74% 66% 9587
Exceptionless.AppHost 38% 40% 139
Exceptionless.Insulation 37% 35% 286
Exceptionless.Web 84% 67% 6935
Summary 77% (22870 / 29790) 66% (10515 / 16026) 16947

@ejsmith
ejsmith merged commit 19899b9 into main Jul 29, 2026
12 checks passed
@ejsmith
ejsmith deleted the issue/fix-stack-metrics-and-tag-tooltip branch July 29, 2026 00:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dev-preview Deploy this pull request to the shared dev environment.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant