Skip to content

Conversation

@jottakka
Copy link
Contributor

@jottakka jottakka commented Jan 23, 2026

Note

Medium Risk
Adds new automation (GitHub Action + sidebar sync script) and a large refactor/new surface area for toolkit-doc rendering (MDX evaluation, selection UI, navigation metadata), which could affect docs builds and site navigation if generation logic or data assumptions are off.

Overview
Toolkit docs are now generated and kept in sync automatically. Adds generate-toolkit-docs-porter.yml to regenerate data/toolkits after deploy, run a new .github/scripts/sync-toolkit-sidebar.ts to create/update integrations _meta.tsx, and open an automated PR.

Replaces/expands toolkit docs rendering with reusable components. Introduces app/_components/toolkit-docs/* (MDX chunk renderer with caching, dynamic code examples, available-tools table, tool sections/header, page actions) plus extensive Vitest coverage, and upgrades ScopePicker to a paginated, copy-friendly, controlled/uncontrolled selector that also computes required scopes/secrets.

Smaller supporting tweaks: dashboard links default to https://app.arcade.dev with configurable path prefix, toolkit icons in ToolInfo switch to using the design-system publicIconUrl, and repo/editor ignore settings are updated to reduce watcher load.

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

@vercel
Copy link

vercel bot commented Jan 23, 2026

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

Project Deployment Actions Updated (UTC)
docs Ready Ready Preview, Comment Feb 3, 2026 5:26pm

Request Review

@jottakka jottakka self-assigned this Jan 27, 2026
@jottakka jottakka reopened this Jan 30, 2026
- Update layout.tsx with locale detection from pathname
- Update globals.css with nextra-steps styling
- Update robots.txt with AI Agent Resources comment
- Keep gmail integration page from main
jottakka and others added 2 commits January 30, 2026 16:05
Resolve all merge conflicts:
- Keep our scope-picker.tsx with PostHog tracking
- Keep our not-found.tsx with Suspense boundary fix
- Keep our package.json with toolkit scripts and mdx deps
- Keep next-sitemap.config.js (deleted in main)
- Merge globals.css (keyframes + nextra-steps styling)
- Merge gitignore (our additions)
list.push(toolkit);
} else {
grouped.set(category, [toolkit]);
}
Copy link

Choose a reason for hiding this comment

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

Unreachable else branch in groupByCategory function

Low Severity

The else branch in the groupByCategory function is unreachable dead code. The function first checks if (!grouped.has(category)) and sets an empty array if the category doesn't exist. It then immediately retrieves the list with grouped.get(category). Since the category is guaranteed to exist after the first conditional, list will always be defined, making the else branch impossible to reach.

Additional Locations (1)

Fix in Cursor Fix in Web

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 3 potential issues.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

};

export default meta;
`;
Copy link

Choose a reason for hiding this comment

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

Empty array produces invalid JavaScript syntax in meta generation

Low Severity

The generateCategoryMeta and generateMainMeta functions produce syntactically invalid JavaScript when given empty arrays. In generateCategoryMeta, when toolkits is empty, entries becomes an empty string, but the template still includes a trailing comma: ${entries},. This produces { , } which is invalid. Similarly in generateMainMeta, an empty categoryEntries produces a double comma between index and the separator entry. The tests for empty arrays pass only because they check string containment rather than syntax validity.

Additional Locations (1)

Fix in Cursor Fix in Web

);
}

export { CopyButton };
Copy link

Choose a reason for hiding this comment

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

Unused export CopyButton from scope-picker module

Low Severity

The CopyButton component is exported but never imported by any other module. Other files use the existing CopyButton from tabbed-code-block/copy-button.tsx instead. This export clutters the module's public API and may confuse developers about which CopyButton to use.

Fix in Cursor Fix in Web


export function buildScopeDisplayItems(scopes: string[]): string[] {
return normalizeScopes(scopes);
}
Copy link

Choose a reason for hiding this comment

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

Wrapper function buildScopeDisplayItems adds no value

Low Severity

buildScopeDisplayItems is a trivial pass-through function that only calls normalizeScopes(scopes) and returns the result. This wrapper adds unnecessary indirection without providing any additional logic or abstraction benefit.

Fix in Cursor Fix in Web

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