Skip to content

Refresh the marketing site and rewrite the docs for 9.0 - #2685

Open
ejsmith wants to merge 8 commits into
mainfrom
feature/marketing-site-refresh
Open

ejsmith wants to merge 8 commits into
mainfrom
feature/marketing-site-refresh

Conversation

@ejsmith

@ejsmith ejsmith commented Oct 21, 2026 •

Copy link
Copy Markdown
Member

Refreshes exceptionless.com for 9.0 with the brighter green/sparkle brand, AI-first product pages, and rewritten documentation.

Changes

  • New responsive light/dark site, product tour, pricing, and AI page introducing Exie and the MCP server. Exie cards and practical coding-agent prompts carry the AI-first story.
  • 81 documentation pages across eight sections, with redirects for replaced pages, shared client examples, source references, and the released .NET 6.2.0 / JavaScript 3.2.1 SDKs.
  • Markdown page copies and actions, llms.txt / llms-small.txt / llms-full.txt, structured data, and navigation/link/SEO checks.
  • Pricing and trial details, OAuth permissions, AI privacy, request-data exclusions, self-hosting settings, and SDK examples aligned with current behavior. Model instructions are distinguished from enforced permissions.
  • Saved code-tab preferences restore correctly; editing a search no longer submits a selection from the previous query.

Review and verification

Content was checked against main at 793379c and the tagged SDK sources, including an independent pass on sensitive claims. Current main is merged; the API overview conflict is resolved, with current OAuth scope behavior retained in the MCP guide.

Passed on 3058777: Website CI, including configured checks, build/tests, links, SEO, docs validation, telemetry bootstrap, and unused assets. Local verification also passed 18 focused search/bootstrap and redirect tests, focused JavaScript checks, and metadata/1,059 source-reference checks across all 81 published docs pages.

Local full checks were blocked by locked npm dependency downloads under Deno 2.9.6; the successful Website CI run provides the full-site validation with the pinned Deno 2.9.7. Final screenshot comparisons and captures remain open below.

Release notes

The website deploys on v* tags. App/email/Slack branding is tracked separately in #2682. The hosted MCP URL remains be.exceptionless.io/mcp until production sets EX_ApiUrl; see #2692 for that decision and the separately tracked product issues.

Screenshot and image verification

Visual audit covers all 373 image assets: 120 current screenshots (30 families), six standalone brand assets, one social card, and 246 historical images. 19 screenshot families show old controls or Exie UI; 11 cropped/neutral families still need comparison with the final app. The current source uses brighter green primary controls with dark foregrounds and the Exie UI from #2684. Newly added files and updated logos do not establish that the rest of a screenshot is current.

For every family below, check/update all four files: -light.webp, -light@2x.webp, -dark.webp, and -dark@2x.webp. Paths are relative to docs/public/assets/img/. All four variants exist, and the @2x dimensions are correct. Capture after the UI/branding is final; keep the current lightbox and responsive-image behavior.

Confirmed updates: 19 screenshot families and the social card
  • Exie: product/exie — used on the homepage, tour, and AI page. Capture /exie or the expanded Ask Exie panel with the current Exie mark, Recent chats, New chat, project selector, composer, and trace presentation. The existing image asks about users affected but displays a table ranked by occurrence count; use a prompt and answer that demonstrate the same metric.
  • Marketing shell: product/stacks — homepage hero; capture /stack → All. product/errors — tour; capture /event → Errors. Both need the current shell/Exie icons and final theme.
  • Event details: product/event — homepage and tour; capture /event/<eventId> → Exception, including the current Fix icon. Use coherent demo data: the existing image mixes an operation-canceled stack title, System.TimeoutException error type, and System.NullReferenceException stack trace.
  • MCP setup: product/mcp — tour; capture /account/ai-tools with current primary/copy controls and verify the displayed setup commands against that page.
  • Stacks/filtering shell: docs/filtering-and-searching-filtered-view — /docs/filtering-and-searching/; capture /stack with the documented filters. docs/managing-stacks-list — /docs/managing-stacks/; capture /stack → Most Frequent Errors. Both retain old shell Exie icons.
  • Stack details/actions: docs/managing-stacks-details, docs/managing-stacks-status-menu, docs/managing-stacks-options-menu — /docs/managing-stacks/, with the options image also on /docs/concepts/stacking/. Capture /stack/<stackId> with the summary, status menu, and Stack Options menu respectively, including the current Fix icon.
  • Logs: docs/setting-log-levels-logs-view, docs/setting-log-levels-stack-override — /docs/setting-log-levels/. Capture /event → Logs with the current shell, then a log stack at /stack/<stackId> with the log-level selector open and current Fix icon.
  • Sessions: docs/user-sessions-dashboard — /docs/user-sessions/; capture /sessions with the current shell.
  • Client configuration: docs/project-settings-configuration, docs/client-configuration-values — /docs/project-settings/ and both /docs/clients/{dotnet,javascript}/client-configuration-values/ guides. Capture /project/<projectId>/configuration-values and Add New Configuration Value with current primary buttons.
  • API keys: docs/project-settings-api-keys — /docs/project-settings/ and /docs/api/project-tokens/; capture /project/<projectId>/api-keys with Add token open and current button styling.
  • Integrations: docs/integrations-overview, docs/integrations-add-webhook — /docs/integrations/; capture /project/<projectId>/integrations and Add New Webhook with current primary controls.
  • Mark fixed: docs/versioning-mark-fixed — /docs/versioning/; capture /stack/<stackId> → status → Fixed with the current primary button styling.
  • Social card: social-card.png — the default sharing image. Refresh its embedded stacks screenshot after the hero capture is updated; retain its already-updated branding and composition.
Verify before keeping: 11 cropped or neutral screenshot families

These images omit decisive theme indicators or are largely neutral. They are not certified updated; compare them with the final app and replace only where it differs.

  • Marketing dashboard crops: product/most-frequent — homepage/tour, compare /stack → Most Frequent Errors; product/logs — tour, compare /event → Logs; product/sessions — tour, compare /sessions. Check chart, stat-card, and control colors as well as layout.
  • Filtering controls: docs/filtering-and-searching-add-filter, docs/filtering-and-searching-raw-filter — /docs/filtering-and-searching/; compare the current Add Filter menu and Raw Filter editor on /stack.
  • Bulk actions: docs/bulk-actions-menu — /docs/managing-stacks/; compare /stack with several rows selected and Actions open, including checkbox styling.
  • Saved-view menu: docs/filtering-and-searching-save-view — /docs/saved-views/; compare /stack → View, including labels, home-view actions, and display settings. This image shows the menu, not the separate Save View dialog.
  • Notifications: docs/notifications-project-settings — /docs/notifications/; compare /account/notifications?project=<projectId> → Project Notifications, including enabled/disabled toggle styling.
  • Extended data: docs/plugins-extended-data — /docs/clients/dotnet/plugins/; compare /event/<eventId> → Extended Data and keep if the structure and typography still match.
  • Project settings: docs/project-settings-data-exclusions, docs/project-settings-spam-detection — /docs/project-settings/, with Data Exclusions also on /docs/security/; compare the corresponding sections of /project/<projectId>/settings.
Deferred surfaces and completed branding/archive checks

The rewrite plan defers screenshots until the UI is frozen. Assess these missing surfaces only where a picture helps explain the workflow, per docs/STYLE.md:

  • Current Exie panel for /docs/ai/exie/; the existing marketing image is not currently used there.
  • OAuth consent reached from the AI-tools connection flow at /oauth/authorize?..., for MCP/account documentation.
  • Command palette, opened with / from any app page, for /docs/navigation/.
  • The actual Save View dialog at /stack → View → Save As…, for /docs/saved-views/.
  • Administrator screens /system/exie, /system/settings, and /system/saved-views when considering the deferred self-hosting/admin illustrations.
  • Standalone brand assets have the new green/sparkle identity: docs/public/apple-touch-icon.png, docs/public/favicon.ico, docs/public/favicon.svg, and docs/public/assets/img/{exceptionless-logo.png,logo.svg,logo-dark.svg}. App/email/Slack branding remains tracked separately in Refresh the brand: brighter green and an AI sparkle in the logo and icon #2682.
  • Historical images are intentionally old: 245 files under docs/news/ and docs/public/assets/img/news/, plus docs/public/assets/img/event-occurrence-1024x791.jpg used only by the 2020 monitoring-services comparison. No current docs/marketing reuse of those legacy screenshots was found; retain them as historical records.

Audit scope: all assets were visually inspected via contact sheets, with key current mismatches checked at native resolution. The two historical GIFs were sampled at five frames each. Current-app capture was not run, and image-generation provenance was not inferred; the unchecked tasks above retain the final UI verification/capture work.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Codex Review Summary: ✅ Completed

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

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-13T13:11:00.066300Z 3058777 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: e5004fc2f6

ℹ️ 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 on lines +91 to +92
if (activeResult && (selectionChosen || visibleResultsQuery === currentQuery)) {
openResult(activeResult.url)

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 Reset the chosen result when the query changes

After a user arrows to or points at a result, selectionChosen remains true even if they edit the search text. If they press Enter before the 120 ms search finishes, this branch opens the result selected for the previous query rather than searching the current input. Clear the selection state in the input handler so only navigation performed after the latest edit can override the new query.

Useful? React with 👍 / 👎.

Comment thread docs/pricing.vto Outdated
<div class="container">
<p class="eyebrow">{{ icons.tag }} Pricing</p>
<h1>Simple pricing that <span class="text-gradient">grows with you</span></h1>
<p>Pay for the events you send, not the seats on your team. Every plan includes the full app and the MCP server for AI coding agents; paid plans add real-time alerts, integrations, longer retention, and Exie.</p>

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 Clarify that Exie excludes the Small paid plan

This says all paid plans add Exie, so a customer choosing the paid Small plan could reasonably expect the assistant to be included. The plan table and the FAQ on this same page instead state that Exie starts with Medium, so the headline should distinguish paid-only features from Medium-and-up features.

Useful? React with 👍 / 👎.

ejsmith and others added 4 commits October 27, 2026 23:36
Rebuilds the exceptionless.com site around the brighter green brand and the AI sparkle, adds an AI page that introduces Exie and the MCP server, and refreshes the docs with new screenshots.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ejsmith
ejsmith force-pushed the feature/marketing-site-refresh branch from e5004fc to 3c78bd5 Compare October 28, 2026 04:49
@ejsmith ejsmith changed the title Refresh the marketing site and docs for the new brand Refresh the marketing site and rewrite the docs for 9.0 Oct 28, 2026

@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: 3cb072a623

ℹ️ 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 on lines +176 to +178
stored = localStorage.getItem(tabStorageKey)
} catch {
stored = null

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 Initialize the tab storage key before initializing tabs

When a reader selects a documentation code tab and then navigates to another page, their saved choice is never restored. initializeTabs() runs at the top of the module before const tabStorageKey is initialized, so this read throws a temporal-dead-zone ReferenceError. The catch silently treats it as unavailable storage, leaving the first tab selected on every page. Move the key declaration above the initialization calls so the saved preference can be read.

Useful? React with 👍 / 👎.

ejsmith and others added 4 commits October 28, 2026 08:34
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Verify the rewritten pages against current main and the released .NET 6.2.0 and JavaScript 3.2.1 clients. Correct trial and paid-plan limits, OAuth consent, Exie privacy and runtime settings, request-data exclusions, API responses, and client examples. Preserve the AI-first presentation and existing screenshots for the explicit recapture checklist.
Initialize the shared tab storage key before startup and reset a prior search selection when input changes. Regression tests reproduce saved-tab restoration and keyboard/pointer selection before and after editing. All 18 focused search/bootstrap and redirect tests pass with Deno 2.9.6; full configured checks remain blocked by dependency downloads.
Keep the new API overview and preserve current self-registered and administrator-restricted OAuth scope behavior in the MCP guide. This resolves the only content conflict while retaining the upstream trial, plan, runtime, and client changes used to verify the documentation.

@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: 3058777a52

ℹ️ 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 on lines +35 to +37
const nav = parseDocsNav(yaml)
assertEquals(navUrls(nav), [
"/docs/",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Apply the required Arrange/Act/Assert structure to new tests

The new tests in docs-nav.test.ts, docs-markdown.test.ts, and redirects.test.ts omit the required explicit test sections. Root AGENTS.md requires “explicit // Arrange, // Act, and // Assert sections” for all languages, including JavaScript and TypeScript. Structure these tests accordingly, with blank lines separating setup, execution, and assertions, as the new browser-handler tests already do.

AGENTS.md reference: AGENTS.md:L52-L52

Useful? React with 👍 / 👎.

@github-actions

Copy link
Copy Markdown

Code Coverage

Package Line Rate Branch Rate Complexity Health
Exceptionless.AppHost 23% 22% 130 ❌
Exceptionless.Core 78% 70% 11206 ✔
Exceptionless.Insulation 51% 43% 370 ➖
Exceptionless.Web 87% 72% 9591 ✔
Summary 81% (29300 / 36229) 70% (14645 / 20839) 21297 ✔

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants