Skip to content

Add adaptive guided tours to the new UI - #2506

Open
niemyjski wants to merge 5 commits into
mainfrom
feature/ui-guided-tours-review
Open

niemyjski wants to merge 5 commits into
mainfrom
feature/ui-guided-tours-review

Conversation

@niemyjski

@niemyjski niemyjski commented Aug 20, 2026

Copy link
Copy Markdown
Member

Adds five optional guides to the Svelte UI, available from Help and the command palette. Guides advance through successful task actions, retain resumable checkpoints, and persist completion without blocking the user on save failures.

Validation: merged current origin/main; .NET and frontend builds, frontend validation, and all 872 unit/component tests pass. All 86 browser tests are discoverable; hosted CI for the viewport-resize fix is pending.

Reviewer decision: stale whole-user saves can overwrite tour progress. This concern is raised with @ejsmith; no cross-cutting persistence fix is included.

Verification and implementation details

What changed

Adds five optional guides to the Svelte UI, available from Help and the command palette: the app overview, project setup, saved views, error investigation, and Exie.

  • Keeps active steps in memory and advances guides through successful task actions. Completed guides remain restartable, and persistence failures do not block the user.
  • Keeps spotlights attached to moving or replaced controls. When navigation removes a target, the overlay releases pointer input and retains the checkpoint for Restart. Saved-view URLs remain resumable where the same list controls are present. Navigation steps reopen the appropriate sidebar when the viewport changes between desktop and mobile.
  • Adds self-only PUT /api/v2/users/me/product-tours/{tourName}/record. It atomically patches one key, preserves the first timestamp, and limits new keys to 100 entries. Current-user reads return authoritative preferences without stale cache results.
  • Includes shared-filter hydration and Exie upgrade routing fixes, frontend lint cleanup, and bounded CI startup probes with failure diagnostics. OpenAPI, generated clients, endpoint coverage, and the runnable HTTP example are updated.

Verification

  • Merged origin/main (252711f6c) into the PR in 455f02da9. Frontend validation, production build, and all 872 unit/component tests passed, including rendered catalog checks that Continue preserves the checkpoint on Events, Stacks, and Sessions saved views.
  • Full .NET solution build passed with no warnings or errors; all 14 user serializer tests passed before this merge. Regenerating frontend contracts from the checked-in OpenAPI snapshot produced no differences.
  • Reproduced the detached-target overlay bug before fixing it; the regression test and isolated real-component Chromium checks passed at desktop and mobile sizes, with no browser page errors. The existing navigation E2E case now checks overlay teardown and clicks Search to verify pointer interaction.
  • Hosted CI for the viewport-resize fix is pending. The preceding merge passed hosted CI. Hosted CI for the preceding d3366be1d passed API (2,971 tests passed, three skipped), frontend, all 85 Chromium E2E cases with no retries, Docker builds, version, and CLA. This includes all 22 guide cases and the four saved-view navigation regressions.
  • The responsive-navigation regression failed before the fix for both Navigation and Events. All five shell component tests pass, and isolated Chromium checks preserve both steps across desktop/mobile resizing without page errors. A full-application E2E regression is included.
  • Local API integration, OpenAPI snapshot, and full application E2E execution were blocked by the shared Elasticsearch cluster being red with 11 unassigned primaries. No shared services were restarted or reset; the passing hosted checks supply independent integration evidence.

Compatibility

No data migration is required. Existing timestamp keys and unrelated legacy JSON values are preserved; the UI recognizes historical guide names and string completion/dismissal states. Explicitly recording a guide converts an older structured value at that selected key to a timestamp without modifying other keys. Existing public routes and payload formats are unchanged; the record endpoint and current-user field are additive.

@niemyjski
niemyjski marked this pull request as draft August 20, 2026 14:45
@niemyjski niemyjski self-assigned this Aug 25, 2026
@niemyjski
niemyjski force-pushed the feature/ui-guided-tours-review branch 7 times, most recently from b22a86a to db17534 Compare September 3, 2026 03:45
@niemyjski
niemyjski force-pushed the feature/ui-guided-tours-review branch from c3d3fb5 to 9546c7f Compare September 4, 2026 19:33
Comment thread src/Exceptionless.Core/Models/Data/ProductTourProgress.cs Outdated
Comment thread src/Exceptionless.Core/Models/Data/ProductTours.cs Outdated
Comment thread src/Exceptionless.Core/Models/User.cs Outdated
Comment thread src/Exceptionless.Core/Repositories/Interfaces/IEventRepository.cs Outdated
Comment thread src/Exceptionless.Core/Repositories/EventRepository.cs Outdated
Comment thread src/Exceptionless.Core/Repositories/ProductTourUsageResult.cs Outdated
Comment thread src/Exceptionless.Core/Repositories/UserRepository.cs Outdated
Comment thread src/Exceptionless.Web/Api/Endpoints/AdminEndpoints.cs Outdated
Comment thread src/Exceptionless.Web/Api/Endpoints/AdminEndpoints.cs Outdated
Comment thread src/Exceptionless.Web/Api/Endpoints/UserEndpoints.cs Outdated
@niemyjski
niemyjski force-pushed the feature/ui-guided-tours-review branch from 1233eba to 97a1a43 Compare September 5, 2026 16:19
Comment thread src/Exceptionless.Web/Api/Endpoints/UserEndpoints.cs Outdated
Comment thread src/Exceptionless.Web/Api/Handlers/AdminHandler.cs Outdated
Comment thread src/Exceptionless.Web/Api/Handlers/ProductTourActivityHandler.cs Outdated
Comment thread src/Exceptionless.Web/Api/Handlers/ProductTourActivityHandler.cs Outdated
Comment thread src/Exceptionless.Web/Api/Handlers/ProductTourActivityHandler.cs Outdated
Comment thread src/Exceptionless.Web/ClientApp/src/lib/features/product-tours/api.svelte.ts Outdated
Comment thread src/Exceptionless.Web/ClientApp/src/lib/features/product-tours/catalog.ts Outdated
@niemyjski
niemyjski force-pushed the feature/ui-guided-tours-review branch 2 times, most recently from 97c915f to 81599b4 Compare September 5, 2026 18:42
@niemyjski

niemyjski commented Sep 5, 2026

Copy link
Copy Markdown
Member Author

Guided-tour review update — September 8

Head: e58ee7774, based on main 5aeca2d89. All 58 inline review threads have replies and are resolved.

This pass

  • Fixed retained-history cutoff to UTC midnight, matching cleanup. A failing repository regression proved the prior query omitted valid events earlier on the first retained day.
  • Reused Exceptionless date comparison helpers and made the future-only empty-range check distinct from invalid input validation.
  • Added the chart slider's Up/Down behavior and boundary coverage. Invitation-only historical Started activity now correctly produces an empty state instead of an all-zero chart.
  • Reused the shared DateTime component for tooltip/table labels, with explicit UTC options and regression coverage preserving every existing default formatting option.
  • Deleted product-tour-usage.ts, its mode union, and browser calendar arithmetic. The picker passes a standard time expression through; the backend resolves dates with DateTimeRange and Elasticsearch selects buckets. Existing start/end callers remain supported. Added server-side rolling/month, February/leap-year, year-boundary, exact event-boundary, and invalid/mixed-filter tests. Updated the prior review reply, which had only moved the conversion rather than removing it.
  • Removed duplicated invitation visibility and successful-save handling from the host, reducing it by 24 lines without a new state layer. The existing identity, storage-denial, and retry guards remain.
  • Corrected the JSON fixture annotation to the existing /* language=json */ convention.
  • Corrected the cache response path: after reading fresh stored progress, refresh both user-ID and email cache entries through the existing repository cache writer. Removed the Cache(false) call and the earlier justification for bypassing refresh. A regression failed before this correction and now verifies two cache hits, no additional misses, and updated progress through both lookup paths.
  • Reproduced first-organization checkpoint loss during both organization refresh and project creation. The route-only timing change was insufficient: organization query updates can change context before the mutation returns. The host now binds the same user's unscoped setup checkpoint to their first organization on the setup route, preserving the current step and existing identity-switch clearing. Added deterministic browser coverage holding both requests. Ordinary setup submission and the shared organization mutation are unchanged.
  • Reproduced deserialization failure for legacy string-valued tour statuses from the earlier merged implementation. Added storage/cache-only compatibility decoding with numeric writes, preserving the strict numeric API input and unchanged OpenAPI schema. The atomic update recognizes legacy completed status and cannot downgrade it. New historical JSON and repository/API regressions cover decoding, current-user loading, numeric output, and precedence. Earlier coverage omitted historical string-valued records.

Reviewed suggestions intentionally not applied

  • Non-nullable request status: retained [Required] on the nullable input so explicit null reaches semantic validation and returns the requested 422 rather than changing binding to 400. Added separate omitted-status and explicit-null tests. Persisted status remains a non-nullable numeric enum; no storage or generated-contract changes were needed.

Verification

  • Release backend build: zero warnings/errors.
  • Full backend suite on the current head: 3,004 passed, three intentional skips, including legacy string progress, server date filtering, cache hits, concurrent progress updates, missing users, and omitted/null status validation. OpenAPI snapshot verified; generated client models remain unchanged.
  • Full frontend suite: 844 passed (four obsolete client date-calculation cases removed and covered server-side). Svelte check: zero errors/warnings. Formatting, ESLint, and production build passed.
  • Luna high independent final pass: 87 focused tests passed; zero type errors/warnings. Independently confirmed the host refactor's gating and successful-only activity behavior.
  • Final rendered browser pass: 15/15 passed against the updated localhost API, covering first-organization creation, all affected tour flows, real API range comparisons, keyboard chart controls/tooltips, mobile, reduced motion, storage denial, invitation retry, identity isolation, and light/dark layouts. Synthetic screenshots remain explicitly labeled. An intermediate run overlapped build-triggered Vite reloads and failed two invitation cases; the final run was sequenced after build completion and passed without changing timeouts or weakening assertions.
  • One initial browser comparison mismatched a period's response and displayed totals; a traced rerun passed. Strengthened response matching to require the selected range's parameters rather than accepting any usage response. The full affected suite then passed with traces; no application delay or relaxed count assertion was added.
  • Hosted checks are running on the current head. The PR remains ready for review as requested. No merge, release, or deployment performed.

The first-day retention and Up/Down failures were missing boundary cases in earlier tests, now covered. Existing dependency advisories on main remain unchanged; this pass adds no dependencies.

@niemyjski
niemyjski force-pushed the feature/ui-guided-tours-review branch 4 times, most recently from 57cb577 to bf2c3ea Compare September 6, 2026 03:01
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 8, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-20T15:41:04.173832Z 511200b New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d2ef1ac827

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/Exceptionless.Core/Repositories/UserRepository.cs Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8bba742ea7

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5b45ad1a00

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/Exceptionless.Core/Models/Data/ProductTourProgress.cs Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 77755fff07

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/Exceptionless.Core/Models/Data/ProductTourProgress.cs Outdated
Comment thread src/Exceptionless.Core/Repositories/UserRepository.cs Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f275caae14

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/Exceptionless.Core/Repositories/UserRepository.cs Outdated
@niemyjski
niemyjski marked this pull request as draft September 9, 2026 15:39
@niemyjski
niemyjski marked this pull request as ready for review September 10, 2026 02:32

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b04f16d842

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/Exceptionless.Web/Api/Handlers/UserHandler.cs Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b0bc4e913a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/Exceptionless.Web/Api/Handlers/UserHandler.cs

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4d34ddf5e8

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/Exceptionless.Web/Api/Endpoints/UserEndpoints.cs Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 36ad698501

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/Exceptionless.Core/Repositories/UserRepository.cs Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: bdc37b3deb

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/Exceptionless.Web/ClientApp/src/lib/features/product-tours/eligibility.ts Outdated
Comment thread src/Exceptionless.Core/Repositories/UserRepository.cs

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 314c669529

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 46d4bb62d6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@ejsmith

ejsmith commented Sep 11, 2026

Copy link
Copy Markdown
Member

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 569c0675b6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 45e21f6b93

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/Exceptionless.Web/ClientApp/src/lib/features/product-tours/catalog.ts Outdated
@niemyjski
niemyjski force-pushed the feature/ui-guided-tours-review branch from 1b66657 to 7566053 Compare September 16, 2026 00:42

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7566053def

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/Exceptionless.Web/ClientApp/src/lib/features/product-tours/catalog.ts Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d3366be1dd

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

}
""";

await PatchAsync(user.Id, new ScriptPatch(script)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve tour progress across full user saves

When another user mutation begins before this patch and finishes afterward, its whole-document save can erase the newly recorded tour value. For example, UserHandler.Handle(UpdateUserMessage) reads a snapshot at line 196 and replaces it with SaveAsync at line 208; if this patch lands between those operations, the stale ProductTours dictionary is written back, so the completion or invitation acknowledgement disappears and the tour is offered again. Protect this field by merging the latest progress during full saves or by using optimistic concurrency with a retry.

AGENTS.md reference: AGENTS.md:L72-L75

Useful? React with 👍 / 👎.

@niemyjski

Copy link
Copy Markdown
Member Author

@ejsmith One concurrency concern worth discussing before merging: tour recording uses an atomic ScriptPatch, but existing user mutations still save whole user documents. For example, UserHandler.Handle(UpdateUserMessage) applies message.Changes.Patch(original) in memory, then calls SaveAsync(original).

If that handler reads the user before a tour is recorded and saves afterward, its stale ProductTours map can erase the new completion or invitation acknowledgment. The same concern applies to other full user saves in authentication, membership, and maintenance paths.

Would you prefer addressing these existing-user writes with field-level patches as a separate change? Scalar updates could use PartialPatch, with scripts or conditional updates for collections and state-dependent changes. A read-before-save merge alone would still leave a race.

This is supported by inspection of the current code and installed repository implementation; I have not reproduced it against local Elasticsearch because shared integration testing is paused. Current PR CI is green, but does not cover this interleaving. No persistence changes have been made for this concern.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 455f02da9b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 511200b2dc

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".


const next = steps[stepIndex + 1];
if (next) {
productTourCheckpoint.advance(currentCheckpoint, next.checkpointName);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Return to Events before advancing to event-only steps

When a user follows the interactive Stacks target during the first overview step, the guide remains active on /stack; using Next for the Events step then advances directly to filters without navigating back. Because [data-tour="event-filters"] does not exist on Stacks, the new spotlight clears the checkpoint and tells the user to restart. Navigate to Events when advancing into the route-specific filter step, or otherwise prevent this valid mix of target interaction and Next from terminating the guide.

Useful? React with 👍 / 👎.

})
.catch(() => undefined);
}
void submitProductTourActivity(action, checkpoint.tourName);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Consume rejected telemetry submissions

When the browser telemetry import or Exceptionless.submitFeatureUsage rejects—for example because its queue or storage backend fails—this fire-and-forget promise has no rejection handler. The guide has already been cleared, so callers cannot catch it, and the failure becomes an unhandled rejection despite telemetry being intended to remain non-blocking. Attach a rejection handler as is already done for the progress mutation.

Useful? React with 👍 / 👎.

@github-actions

Copy link
Copy Markdown

Code Coverage

Package Line Rate Branch Rate Complexity Health
Exceptionless.Insulation 37% 35% 286
Exceptionless.Web 85% 70% 8133
Exceptionless.Core 76% 68% 10542
Exceptionless.AppHost 38% 41% 147
Summary 79% (26426 / 33449) 68% (12287 / 18075) 19108

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants