Skip to content

Conversation

codyde
Copy link
Contributor

@codyde codyde commented Sep 28, 2025

Summary

Implements automatic markdown serving for AI/LLM tools and development environments by detecting user agents. When AI clients access documentation pages, they are automatically redirected to .md versions for better LLM consumption and processing.

Key Features

  • Automatic Detection: Detects AI tools and development environments via user-agent patterns
  • Seamless Integration: Works with existing markdown export system (generate-md-exports.mjs)
  • Manual Override: Supports ?format=md query parameter for manual markdown requests
  • Comprehensive Logging: Logs user agents and content types for debugging and analytics
  • Zero Impact: Normal browsers continue to receive HTML as usual

Currently Configured User Agents

The middleware detects and redirects the following user agent patterns to markdown:

AI/LLM Tools

  • Claude (/claude/i) - Claude Desktop/Code
  • ChatGPT (/chatgpt/i) - ChatGPT clients
  • OpenAI (/openai/i) - OpenAI tools and APIs
  • Anthropic (/anthropic/i) - Anthropic tools

Development Tools & IDEs

  • Cursor (/cursor/i) - Cursor IDE
  • GitHub Copilot (/copilot/i) - GitHub Copilot
  • VS Code (/vscode/i) - VS Code extensions
  • IntelliJ (/intellij/i) - IntelliJ plugins
  • Sublime (/sublime/i) - Sublime Text plugins

HTTP Libraries

  • Got (/got/i) - sindresorhus/got HTTP library for Node.js

How It Works

  1. Middleware Detection: src/middleware.ts intercepts requests and checks user agents
  2. Pattern Matching: Uses regex patterns to identify AI clients and dev tools
  3. Automatic Redirect: Redirects matching clients to .md versions (302 redirect)
  4. Existing Infrastructure: Leverages existing Next.js rewrite rules and markdown exports

Example Usage

Automatic Detection

# AI client gets redirected to markdown
curl -H "User-Agent: Claude/1.0" https://docs.sentry.io/platforms/react/
# → 302 redirect to /platforms/react.md

# Normal browser gets HTML
curl -H "User-Agent: Mozilla/5.0..." https://docs.sentry.io/platforms/react/
# → 200 HTML response

Manual Override

# Force markdown for any user agent
https://docs.sentry.io/platforms/react/?format=md
# → 302 redirect to /platforms/react.md

Logging Output

Enhanced middleware logging shows content type and user agent:

[Middleware] /platforms/react/ - 📄 MARKDOWN - User-Agent: Claude/1.0
[Middleware] Redirecting to markdown: AI client detected

[Middleware] /platforms/react/ - 🌐 HTML - User-Agent: Mozilla/5.0...

Benefits

  • Better LLM Experience: AI tools get clean, structured markdown instead of HTML
  • Improved Accessibility: Development tools can easily consume documentation
  • Analytics Insights: Track which AI tools are accessing your docs
  • Future-Proof: Easy to add new user agent patterns as tools emerge

Breaking Changes

None. This is purely additive functionality that doesn't affect existing behavior.


Note

Add UA-based markdown redirects in middleware and introduce a simple docs search API with generated index.

  • Middleware
    • Add UA detection in src/middleware.ts to auto-serve markdown (redirect to .md), with optional query override.
  • Search
    • Implement search endpoint in app/api/search/route.ts using app/api/search/searchIndex.ts.
    • Add search index generation script app/scripts/generate-search-index.mjs and bundled data public/search-index.json.
  • API
    • Add transport route handler app/api/[transport]/route.ts.
  • Shared/Types/Config
    • Update app/shared/docs-utils.ts helpers.
    • Add src/@types/remark-mdx-images/index.d.ts types.
    • Adjust tsconfig.json and package.json for new scripts/types.

Written by Cursor Bugbot for commit a725164. This will update automatically on new commits. Configure here.

codyde and others added 7 commits September 19, 2025 20:31
- Detect AI/LLM tools (Claude, Cursor, Copilot, etc.) via user-agent
- Automatically redirect to .md versions for better LLM consumption
- Add manual override with ?format=md query parameter
- Preserve existing redirect functionality

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
- Log all user agents for non-static requests
- Log when redirects to markdown occur
- Helps identify what user agents AI tools are sending
- Add /got/i pattern to detect sindresorhus/got library
- Common HTTP client used by Node.js tools and automation
- Ensures markdown serving for tools using got for requests
- Show 📄 MARKDOWN or 🌐 HTML indicators in logs
- Determine content type before logging for better debugging
- Makes it clear which requests get markdown vs HTML content
Copy link

vercel bot commented Sep 28, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
develop-docs Error Error Sep 28, 2025 9:47pm
sentry-docs Ready Ready Preview Comment Sep 28, 2025 9:47pm

Comment on lines +107 to +118
return NextResponse.redirect(newUrl, {
status: redirectStatusCode,
});

Choose a reason for hiding this comment

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

Critical severity vulnerability may affect your project—review required:
Line 107 lists a dependency (next) with a known Critical severity vulnerability.

ℹ️ Why this matters

Affected versions of next are vulnerable to Improper Authorization / Incorrect Authorization. Next.js middleware-based authorization checks can be bypassed by an attacker who forges external requests that include a specific header, tricking the application into treating the request as a trusted internal call and thus bypassing access controls.

References: GHSA, CVE

To resolve this comment:
Check if you perform authorization in the middleware.

  • If you're affected, upgrade this dependency to at least version 15.2.3 at yarn.lock.
  • If you're not affected, comment /fp we don't use this [condition]
💬 Ignore this finding

To ignore this, reply with:

  • /fp <comment> for false positive
  • /ar <comment> for acceptable risk
  • /other <comment> for all other reasons

You can view more details on this finding in the Semgrep AppSec Platform here.

Comment on lines 24 to 31
return NextResponse.json(
{
query,
limit,
error: error instanceof Error ? error.message : "Unknown error",
},
{status: 500}
);

Choose a reason for hiding this comment

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

Critical severity vulnerability may affect your project—review required:
Line 24 lists a dependency (next) with a known Critical severity vulnerability.

ℹ️ Why this matters

Affected versions of next are vulnerable to Improper Authorization / Incorrect Authorization. Next.js middleware-based authorization checks can be bypassed by an attacker who forges external requests that include a specific header, tricking the application into treating the request as a trusted internal call and thus bypassing access controls.

References: GHSA, CVE

To resolve this comment:
Check if you perform authorization in the middleware.

  • If you're affected, upgrade this dependency to at least version 15.2.3 at yarn.lock.
  • If you're not affected, comment /fp we don't use this [condition]
💬 Ignore this finding

To ignore this, reply with:

  • /fp <comment> for false positive
  • /ar <comment> for acceptable risk
  • /other <comment> for all other reasons

You can view more details on this finding in the Semgrep AppSec Platform here.

Comment on lines +17 to +22
return NextResponse.json({
query,
limit,
count: results.length,
results,
});

Choose a reason for hiding this comment

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

Critical severity vulnerability may affect your project—review required:
Line 17 lists a dependency (next) with a known Critical severity vulnerability.

ℹ️ Why this matters

Affected versions of next are vulnerable to Improper Authorization / Incorrect Authorization. Next.js middleware-based authorization checks can be bypassed by an attacker who forges external requests that include a specific header, tricking the application into treating the request as a trusted internal call and thus bypassing access controls.

References: GHSA, CVE

To resolve this comment:
Check if you perform authorization in the middleware.

  • If you're affected, upgrade this dependency to at least version 15.2.3 at yarn.lock.
  • If you're not affected, comment /fp we don't use this [condition]
💬 Ignore this finding

To ignore this, reply with:

  • /fp <comment> for false positive
  • /ar <comment> for acceptable risk
  • /other <comment> for all other reasons

You can view more details on this finding in the Semgrep AppSec Platform here.

const {searchParams} = new URL(request.url);
const query = searchParams.get('q') ?? '';
const limitParam = searchParams.get('limit');
const limit = limitParam ? Math.min(25, Math.max(1, Number(limitParam))) : 10;
Copy link

Choose a reason for hiding this comment

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

Bug: Invalid Query Parameter Causes Empty Search Results

When the limit query parameter is a non-numeric value, it's parsed as NaN. This NaN is then passed to searchIndex, causing matches.slice(0, NaN) to return an empty array, effectively yielding no search results.

Fix in Cursor Fix in Web

Copy link

codecov bot commented Sep 28, 2025

Bundle Report

Changes will increase total bundle size by 1.75MB (7.52%) ⬆️⚠️, exceeding the configured threshold of 5%.

Bundle name Size Change
sentry-docs-edge-server-array-push 357.35kB 5.19kB (1.47%) ⬆️
sentry-docs-client-array-push 11.5MB 1.38MB (13.63%) ⬆️⚠️
sentry-docs-server-cjs 13.21MB 368.2kB (2.87%) ⬆️

Affected Assets, Files, and Routes:

view changes for bundle: sentry-docs-edge-server-array-push

Assets Changed:

Asset Name Size Change Total Size Change (%)
src/middleware.js 2.15kB 209.59kB 1.04%
edge-instrumentation.js 2.87kB 138.15kB 2.12%
edge-runtime-webpack.js 166 bytes 2.39kB 7.45% ⚠️
view changes for bundle: sentry-docs-client-array-push

Assets Changed:

Asset Name Size Change Total Size Change (%)
static/chunks/pages/_app-*.js 362.96kB 1.25MB 41.12% ⚠️
static/chunks/48cec039-*.js (New) 986.97kB 986.97kB 100.0% 🚀
static/css/*.css 3.1kB 22.52kB 15.96% ⚠️
static/css/*.css -484 bytes 745.16kB -0.06%
static/css/*.css -21 bytes 1.87kB -1.11%
static/css/*.css 49 bytes 12.76kB 0.39%
static/css/*.css -3.07kB 12.71kB -19.44%
static/chunks/3641.*.js 2.83kB 551.15kB 0.52%
static/chunks/60f25c68.*.js (New) 468.77kB 468.77kB 100.0% 🚀
static/chunks/1703-*.js (New) 428.63kB 428.63kB 100.0% 🚀
static/chunks/7647598e.*.js (New) 359.88kB 359.88kB 100.0% 🚀
server/app/api/[transport]/route_client-*.js (New) 315.25kB 315.25kB 100.0% 🚀
server/app/api/ip-*.js 51.41kB 315.24kB 19.48% ⚠️
server/app/api/search/route_client-*.js (New) 315.24kB 315.24kB 100.0% 🚀
server/app/_not-*.js 51.41kB 315.24kB 19.48% ⚠️
server/app/[[...path]]/page_client-*.js 51.41kB 315.2kB 19.49% ⚠️
server/app/platform-*.js 36.48kB 284.95kB 14.68% ⚠️
static/chunks/756b3e49.*.js 166 bytes 275.61kB 0.06%
static/chunks/6161-*.js (New) 267.56kB 267.56kB 100.0% 🚀
static/chunks/7114-*.js (New) 199.55kB 199.55kB 100.0% 🚀
static/chunks/framework-*.js 1.31kB 183.67kB 0.72%
static/chunks/4bd1b696-*.js 166 bytes 167.99kB 0.1%
static/chunks/1987.*.js (New) 157.32kB 157.32kB 100.0% 🚀
static/chunks/9598-*.js (New) 144.6kB 144.6kB 100.0% 🚀
static/chunks/main-*.js 166 bytes 133.6kB 0.12%
static/chunks/main-*.js 202 bytes 2.37kB 9.3% ⚠️
static/chunks/52774a7f-*.js 948 bytes 117.24kB 0.82%
static/chunks/3084.*.js (New) 99.91kB 99.91kB 100.0% 🚀
static/chunks/6232-*.js (New) 94.58kB 94.58kB 100.0% 🚀
static/chunks/app/[[...path]]/page-*.js 890 bytes 90.66kB 0.99%
static/chunks/8312.*.js (New) 84.3kB 84.3kB 100.0% 🚀
static/chunks/7793.*.js (New) 77.95kB 77.95kB 100.0% 🚀
static/chunks/9212-*.js 166 bytes 73.53kB 0.23%
static/chunks/4282.*.js (New) 72.12kB 72.12kB 100.0% 🚀
static/chunks/2222.*.js (New) 61.26kB 61.26kB 100.0% 🚀
static/chunks/4145-*.js 221 bytes 50.66kB 0.44%
static/chunks/9962.*.js (New) 46.73kB 46.73kB 100.0% 🚀
static/chunks/4106.*.js (New) 43.94kB 43.94kB 100.0% 🚀
static/chunks/377.*.js (New) 39.52kB 39.52kB 100.0% 🚀
static/chunks/5388.*.js (New) 37.2kB 37.2kB 100.0% 🚀
static/chunks/6132.*.js (New) 37.11kB 37.11kB 100.0% 🚀
static/chunks/852.*.js (New) 34.45kB 34.45kB 100.0% 🚀
static/chunks/6476.*.js (New) 32.3kB 32.3kB 100.0% 🚀
static/chunks/4415.*.js (New) 31.53kB 31.53kB 100.0% 🚀
static/chunks/4919.*.js 166 bytes 29.75kB 0.56%
static/chunks/7336-*.js (New) 28.63kB 28.63kB 100.0% 🚀
static/chunks/6164.*.js (New) 26.35kB 26.35kB 100.0% 🚀
static/chunks/703.*.js (New) 26.19kB 26.19kB 100.0% 🚀
static/chunks/4671.*.js (New) 24.73kB 24.73kB 100.0% 🚀
static/chunks/4928.*.js (New) 24.35kB 24.35kB 100.0% 🚀
static/chunks/6898.*.js (New) 24.14kB 24.14kB 100.0% 🚀
static/chunks/5624.*.js (New) 22.43kB 22.43kB 100.0% 🚀
static/chunks/4746-*.js 207 bytes 21.6kB 0.97%
static/chunks/358.*.js (New) 21.07kB 21.07kB 100.0% 🚀
static/chunks/8497.*.js (New) 19.44kB 19.44kB 100.0% 🚀
static/chunks/0e5ce63c-*.js 166 bytes 18.33kB 0.91%
static/chunks/9233.*.js (New) 14.07kB 14.07kB 100.0% 🚀
static/chunks/app/platform-*.js 172 bytes 13.47kB 1.29%
static/chunks/9636.*.js (New) 12.42kB 12.42kB 100.0% 🚀
static/chunks/4363.*.js (New) 12.1kB 12.1kB 100.0% 🚀
static/chunks/4840.*.js (New) 12.03kB 12.03kB 100.0% 🚀
static/chunks/7804.*.js (New) 11.7kB 11.7kB 100.0% 🚀
static/chunks/3794.*.js (New) 8.66kB 8.66kB 100.0% 🚀
react-*.json -232 bytes 8.55kB -2.64%
static/chunks/app/global-*.js 166 bytes 7.31kB 2.32%
server/middleware-*.js -6.46kB 1.0kB -86.59%
server/middleware-*.js 6.26kB 7.26kB 626.1% ⚠️
app-*.json 1.06kB 5.66kB 23.07% ⚠️
static/chunks/webpack-*.js 87 bytes 5.51kB 1.6%
static/chunks/app/layout-*.js 815 bytes 3.41kB 31.42% ⚠️
static/chunks/pages/_error-*.js 193 bytes 2.97kB 6.96% ⚠️
static/chunks/app/not-*.js 164 bytes 2.91kB 5.97% ⚠️
/static/media/openai.*.svg 12 bytes 1.83kB 0.66%
/static/media/openai.*.svg 12 bytes 1.53kB 0.79%
static/chunks/app/[[...path]]/layout-*.js 166 bytes 1.52kB 12.25% ⚠️
static/chunks/4037.*.js (New) 1.33kB 1.33kB 100.0% 🚀
static/chunks/6351.*.js (New) 1.33kB 1.33kB 100.0% 🚀
static/chunks/6484.*.js (New) 1.33kB 1.33kB 100.0% 🚀
static/chunks/960.*.js (New) 1.09kB 1.09kB 100.0% 🚀
static/chunks/7946.*.js (New) 1.09kB 1.09kB 100.0% 🚀
static/chunks/8371.*.js (New) 1.08kB 1.08kB 100.0% 🚀
static/chunks/6464.*.js (New) 1.08kB 1.08kB 100.0% 🚀
static/chunks/8961.*.js (New) 1.08kB 1.08kB 100.0% 🚀
static/chunks/873.*.js (New) 1.08kB 1.08kB 100.0% 🚀
static/chunks/9826.*.js (New) 1.08kB 1.08kB 100.0% 🚀
static/chunks/app/_not-*.js 176 bytes 1.06kB 19.8% ⚠️
static/chunks/app/api/[transport]/route-*.js (New) 1.06kB 1.06kB 100.0% 🚀
static/chunks/app/api/ip-*.js 176 bytes 1.06kB 19.8% ⚠️
static/chunks/app/api/search/route-*.js (New) 1.06kB 1.06kB 100.0% 🚀
static/qMLQ5CWOEiLcPV1bHk6Le/_buildManifest.js (New) 768 bytes 768 bytes 100.0% 🚀
static/qMLQ5CWOEiLcPV1bHk6Le/_ssgManifest.js (New) 77 bytes 77 bytes 100.0% 🚀
static/chunks/bc085c76-*.js (Deleted) -627.63kB 0 bytes -100.0% 🗑️
static/chunks/49699944.*.js (Deleted) -443.01kB 0 bytes -100.0% 🗑️
static/chunks/8321-*.js (Deleted) -425.88kB 0 bytes -100.0% 🗑️
static/chunks/3d9768ee.*.js (Deleted) -359.71kB 0 bytes -100.0% 🗑️
static/chunks/8423-*.js (Deleted) -284.92kB 0 bytes -100.0% 🗑️
static/chunks/2408-*.js (Deleted) -283.72kB 0 bytes -100.0% 🗑️
static/chunks/586.*.js (Deleted) -157.04kB 0 bytes -100.0% 🗑️
static/chunks/124-*.js (Deleted) -145.04kB 0 bytes -100.0% 🗑️
static/chunks/76079dcc.*.js (Deleted) -116.57kB 0 bytes -100.0% 🗑️
static/chunks/0ba0062a.*.js (Deleted) -116.57kB 0 bytes -100.0% 🗑️
static/chunks/9828.*.js (Deleted) -99.74kB 0 bytes -100.0% 🗑️
static/chunks/4985.*.js (Deleted) -84.13kB 0 bytes -100.0% 🗑️
static/chunks/868.*.js (Deleted) -77.78kB 0 bytes -100.0% 🗑️
static/chunks/7753.*.js (Deleted) -71.95kB 0 bytes -100.0% 🗑️
static/chunks/120.*.js (Deleted) -61.1kB 0 bytes -100.0% 🗑️
static/chunks/1289.*.js (Deleted) -46.56kB 0 bytes -100.0% 🗑️
static/chunks/2050.*.js (Deleted) -43.69kB 0 bytes -100.0% 🗑️
static/chunks/3123.*.js (Deleted) -39.35kB 0 bytes -100.0% 🗑️
static/chunks/7739.*.js (Deleted) -37.04kB 0 bytes -100.0% 🗑️
static/chunks/9710.*.js (Deleted) -36.95kB 0 bytes -100.0% 🗑️
static/chunks/8110.*.js (Deleted) -34.29kB 0 bytes -100.0% 🗑️
static/chunks/8063.*.js (Deleted) -32.13kB 0 bytes -100.0% 🗑️
static/chunks/1704.*.js (Deleted) -31.36kB 0 bytes -100.0% 🗑️
static/chunks/2459.*.js (Deleted) -26.19kB 0 bytes -100.0% 🗑️
static/chunks/9900.*.js (Deleted) -26.03kB 0 bytes -100.0% 🗑️
static/chunks/2286.*.js (Deleted) -24.57kB 0 bytes -100.0% 🗑️
static/chunks/6664.*.js (Deleted) -24.19kB 0 bytes -100.0% 🗑️
static/chunks/4179.*.js (Deleted) -23.97kB 0 bytes -100.0% 🗑️
static/chunks/1992.*.js (Deleted) -22.14kB 0 bytes -100.0% 🗑️
static/chunks/2208.*.js (Deleted) -20.91kB 0 bytes -100.0% 🗑️
static/chunks/2091.*.js (Deleted) -19.27kB 0 bytes -100.0% 🗑️
static/chunks/25.*.js (Deleted) -13.9kB 0 bytes -100.0% 🗑️
static/chunks/4152.*.js (Deleted) -12.25kB 0 bytes -100.0% 🗑️
static/chunks/5997.*.js (Deleted) -11.94kB 0 bytes -100.0% 🗑️
static/chunks/2027.*.js (Deleted) -11.87kB 0 bytes -100.0% 🗑️
static/chunks/4418.*.js (Deleted) -11.53kB 0 bytes -100.0% 🗑️
static/chunks/7655.*.js (Deleted) -8.49kB 0 bytes -100.0% 🗑️
static/chunks/6113.*.js (Deleted) -1.17kB 0 bytes -100.0% 🗑️
static/chunks/8797.*.js (Deleted) -1.17kB 0 bytes -100.0% 🗑️
static/chunks/5634.*.js (Deleted) -1.16kB 0 bytes -100.0% 🗑️
static/chunks/2665.*.js (Deleted) -925 bytes 0 bytes -100.0% 🗑️
static/chunks/8884.*.js (Deleted) -920 bytes 0 bytes -100.0% 🗑️
static/chunks/5879.*.js (Deleted) -919 bytes 0 bytes -100.0% 🗑️
static/chunks/7752.*.js (Deleted) -919 bytes 0 bytes -100.0% 🗑️
static/chunks/4574.*.js (Deleted) -918 bytes 0 bytes -100.0% 🗑️
static/chunks/5697.*.js (Deleted) -917 bytes 0 bytes -100.0% 🗑️
static/chunks/6504.*.js (Deleted) -916 bytes 0 bytes -100.0% 🗑️
static/XNb0ryQLyyw3w6s_WOPZw/_buildManifest.js (Deleted) -684 bytes 0 bytes -100.0% 🗑️
static/XNb0ryQLyyw3w6s_WOPZw/_ssgManifest.js (Deleted) -77 bytes 0 bytes -100.0% 🗑️

App Routes Affected:

App Route Size Change Total Size Change (%)
/ 1.15kB 13.63kB 9.17% ⚠️
view changes for bundle: sentry-docs-server-cjs

Assets Changed:

Asset Name Size Change Total Size Change (%)
6902.js (New) 1.72MB 1.72MB 100.0% 🚀
33.js (New) 1.06MB 1.06MB 100.0% 🚀
../instrumentation.js -148.19kB 954.16kB -13.44%
9523.js -148.13kB 930.08kB -13.74%
../app/[[...path]]/page.js.nft.json 14.22kB 835.06kB 1.73%
../app/platform-redirect/page.js.nft.json 14.22kB 834.97kB 1.73%
../app/sitemap.xml/route.js.nft.json 14.26kB 832.25kB 1.74%
../app/[[...path]]/page.js 21.6kB 631.58kB 3.54%
../app/api/[transport]/route.js (New) 572.01kB 572.01kB 100.0% 🚀
8049.js 2.82kB 551.16kB 0.52%
2282.js (New) 468.79kB 468.79kB 100.0% 🚀
3691.js (New) 366.94kB 366.94kB 100.0% 🚀
5017.js 166 bytes 275.62kB 0.06%
9240.js (New) 217.76kB 217.76kB 100.0% 🚀
3759.js (New) 150.31kB 150.31kB 100.0% 🚀
5151.js 166 bytes 121.99kB 0.14%
924.js (New) 99.92kB 99.92kB 100.0% 🚀
4873.js 223 bytes 91.36kB 0.24%
9826.js (New) 84.32kB 84.32kB 100.0% 🚀
8699.js (New) 77.96kB 77.96kB 100.0% 🚀
3518.js (New) 72.14kB 72.14kB 100.0% 🚀
8548.js 166 bytes 68.07kB 0.24%
6706.js (New) 61.28kB 61.28kB 100.0% 🚀
2242.js (New) 46.74kB 46.74kB 100.0% 🚀
8804.js (New) 43.95kB 43.95kB 100.0% 🚀
6235.js (New) 39.53kB 39.53kB 100.0% 🚀
2596.js (New) 37.23kB 37.23kB 100.0% 🚀
6608.js (New) 37.13kB 37.13kB 100.0% 🚀
5212.js (New) 34.47kB 34.47kB 100.0% 🚀
../app/platform-redirect/page.js 164 bytes 32.23kB 0.51%
7369.js (New) 32.09kB 32.09kB 100.0% 🚀
5705.js (New) 31.54kB 31.54kB 100.0% 🚀
713.js 166 bytes 29.73kB 0.56%
8164.js (New) 26.96kB 26.96kB 100.0% 🚀
2572.js (New) 26.37kB 26.37kB 100.0% 🚀
4577.js (New) 26.21kB 26.21kB 100.0% 🚀
7468.js (New) 25.29kB 25.29kB 100.0% 🚀
6755.js (New) 24.75kB 24.75kB 100.0% 🚀
1172.js (New) 24.37kB 24.37kB 100.0% 🚀
8642.js (New) 24.16kB 24.16kB 100.0% 🚀
6602.js (New) 22.44kB 22.44kB 100.0% 🚀
1634.js (New) 21.09kB 21.09kB 100.0% 🚀
9567.js 165 bytes 20.84kB 0.8%
6445.js (New) 12.42kB 12.42kB 100.0% 🚀
3803.js (New) 12.12kB 12.12kB 100.0% 🚀
4662.js (New) 11.72kB 11.72kB 100.0% 🚀
../../types/app/api/[transport]/route.ts (New) 8.72kB 8.72kB 100.0% 🚀
../../types/app/api/search/route.ts (New) 8.7kB 8.7kB 100.0% 🚀
../app/api/search/route.js (New) 8.27kB 8.27kB 100.0% 🚀
../app/sitemap.xml/route.js -26.15kB 8.13kB -76.29%
3365.js (New) 7.06kB 7.06kB 100.0% 🚀
../app/api/ip-ranges/route.js 14 bytes 6.11kB 0.23%
4100.js (New) 5.4kB 5.4kB 100.0% 🚀
../app/robots.txt/route.js 14 bytes 5.33kB 0.26%
7522.js (New) 5.02kB 5.02kB 100.0% 🚀
../app/_not-found/page.js 166 bytes 4.75kB 3.62%
../pages/_error.js 166 bytes 4.45kB 3.87%
../pages/_app.js 166 bytes 4.2kB 4.12%
../webpack-runtime.js 166 bytes 3.45kB 5.06% ⚠️
../../static/media/openai.*.svg 12 bytes 1.83kB 0.66%
../../static/media/openai.*.svg 12 bytes 1.53kB 0.79%
8682.js (New) 1.64kB 1.64kB 100.0% 🚀
9556.js 166 bytes 1.53kB 12.18% ⚠️
1672.js 166 bytes 1.53kB 12.18% ⚠️
9597.js 166 bytes 1.53kB 12.18% ⚠️
2180.js 166 bytes 1.44kB 13.08% ⚠️
3011.js 166 bytes 1.44kB 13.08% ⚠️
8247.js 166 bytes 1.44kB 13.08% ⚠️
2051.js 166 bytes 1.42kB 13.2% ⚠️
9980.js 166 bytes 1.42kB 13.2% ⚠️
399.js 166 bytes 1.42kB 13.23% ⚠️
../pages/_document.js 166 bytes 1.36kB 13.84% ⚠️
7733.js (New) 1.35kB 1.35kB 100.0% 🚀
293.js (New) 1.35kB 1.35kB 100.0% 🚀
9428.js (New) 1.35kB 1.35kB 100.0% 🚀
4160.js 166 bytes 1.27kB 15.09% ⚠️
6468.js 166 bytes 1.27kB 15.09% ⚠️
9129.js 166 bytes 1.27kB 15.09% ⚠️
2202.js 166 bytes 1.14kB 17.1% ⚠️
5097.js 166 bytes 1.14kB 17.1% ⚠️
9445.js 166 bytes 1.14kB 17.1% ⚠️
2288.js (New) 1.08kB 1.08kB 100.0% 🚀
3149.js (New) 1.07kB 1.07kB 100.0% 🚀
7814.js (New) 1.07kB 1.07kB 100.0% 🚀
6352.js (New) 1.07kB 1.07kB 100.0% 🚀
4775.js (New) 1.07kB 1.07kB 100.0% 🚀
2921.js (New) 1.07kB 1.07kB 100.0% 🚀
8996.js (New) 1.07kB 1.07kB 100.0% 🚀
../app/api/search/route.js.nft.json (New) 657 bytes 657 bytes 100.0% 🚀
../app/api/[transport]/route.js.nft.json (New) 601 bytes 601 bytes 100.0% 🚀
1729.js (Deleted) -1.78MB 0 bytes -100.0% 🗑️
1614.js (Deleted) -1.05MB 0 bytes -100.0% 🗑️
1561.js (Deleted) -443.03kB 0 bytes -100.0% 🗑️
9269.js (Deleted) -366.77kB 0 bytes -100.0% 🗑️
9883.js (Deleted) -218.27kB 0 bytes -100.0% 🗑️
8454.js (Deleted) -150.03kB 0 bytes -100.0% 🗑️
6548.js (Deleted) -99.76kB 0 bytes -100.0% 🗑️
5947.js (Deleted) -84.15kB 0 bytes -100.0% 🗑️
8478.js (Deleted) -77.8kB 0 bytes -100.0% 🗑️
5905.js (Deleted) -71.97kB 0 bytes -100.0% 🗑️
6795.js (Deleted) -61.11kB 0 bytes -100.0% 🗑️
257.js (Deleted) -46.58kB 0 bytes -100.0% 🗑️
2300.js (Deleted) -43.71kB 0 bytes -100.0% 🗑️
5629.js (Deleted) -39.37kB 0 bytes -100.0% 🗑️
5103.js (Deleted) -37.06kB 0 bytes -100.0% 🗑️
7238.js (Deleted) -36.97kB 0 bytes -100.0% 🗑️
7390.js (Deleted) -34.31kB 0 bytes -100.0% 🗑️
8790.js (Deleted) -31.38kB 0 bytes -100.0% 🗑️
2311.js (Deleted) -30.9kB 0 bytes -100.0% 🗑️
7484.js (Deleted) -26.21kB 0 bytes -100.0% 🗑️
1058.js (Deleted) -26.05kB 0 bytes -100.0% 🗑️
2351.js (Deleted) -25.12kB 0 bytes -100.0% 🗑️
1010.js (Deleted) -24.59kB 0 bytes -100.0% 🗑️
6768.js (Deleted) -24.2kB 0 bytes -100.0% 🗑️
291.js (Deleted) -23.99kB 0 bytes -100.0% 🗑️
8938.js (Deleted) -22.16kB 0 bytes -100.0% 🗑️
7244.js (Deleted) -20.92kB 0 bytes -100.0% 🗑️
4819.js (Deleted) -12.26kB 0 bytes -100.0% 🗑️
4781.js (Deleted) -11.95kB 0 bytes -100.0% 🗑️
776.js (Deleted) -11.55kB 0 bytes -100.0% 🗑️
8065.js (Deleted) -6.89kB 0 bytes -100.0% 🗑️
7000.js (Deleted) -5.23kB 0 bytes -100.0% 🗑️
9153.js (Deleted) -4.85kB 0 bytes -100.0% 🗑️
7067.js (Deleted) -1.47kB 0 bytes -100.0% 🗑️
4749.js (Deleted) -1.19kB 0 bytes -100.0% 🗑️
523.js (Deleted) -1.18kB 0 bytes -100.0% 🗑️
6998.js (Deleted) -1.18kB 0 bytes -100.0% 🗑️
4865.js (Deleted) -911 bytes 0 bytes -100.0% 🗑️
3331.js (Deleted) -905 bytes 0 bytes -100.0% 🗑️
7502.js (Deleted) -905 bytes 0 bytes -100.0% 🗑️
7560.js (Deleted) -904 bytes 0 bytes -100.0% 🗑️
5225.js (Deleted) -903 bytes 0 bytes -100.0% 🗑️
1938.js (Deleted) -902 bytes 0 bytes -100.0% 🗑️
388.js (Deleted) -902 bytes 0 bytes -100.0% 🗑️

Files in ../app/api/[transport]/route.js:

  • ./app/api/search/searchIndex.ts → Total Size: 4.9kB

  • ./app/shared/docs-utils.ts → Total Size: 1.4kB

Files in ../app/api/search/route.js:

  • ./app/shared/docs-utils.ts → Total Size: 1.4kB

  • ./app/api/search/searchIndex.ts → Total Size: 4.9kB

App Routes Affected:

App Route Size Change Total Size Change (%)
/ 12.42kB 2.82MB 0.44%
/shared (New) 587.07kB 587.07kB 100% 🚀
/[[...path]] 58.98kB 3.42MB 1.76%
/api/search (New) 587.07kB 587.07kB 100% 🚀
/platform-redirect 37.55kB 2.82MB 1.35%

@codyde
Copy link
Contributor Author

codyde commented Sep 28, 2025

Closing this PR to create a clean version without unrelated commits. The new PR will only include the AI client detection changes.

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.

1 participant