Skip to content

Conversation

@goodeats
Copy link
Owner

@goodeats goodeats commented Oct 26, 2025

epic stack updater cli


Note

Adds a modular Epic Stack Updater CLI and aligns server, tests, and build configs with upstream, plus dependency upgrades.

  • Tooling/Updater:
    • Add modular Epic Stack Updater library and CLI (scripts/epic-stack-updater/*, scripts/update-epic-stack.ts) with docs and auto-resolve for package conflicts.
    • New npm scripts for updater; track upstream in package.json under epic-stack.
  • Testing (Playwright/E2E):
    • Increase timeouts; refined reporters; CI uses start:mocks:test.
    • Introduce typed navigate helper (RR href) and update tests to use it; adjust selectors/expectations; skip flaky 2FA/passkey specs.
  • Server:
    • Update routes to RR patterns (/*splat), improve static asset handling, and 404s for image/favicon routes.
    • Enhance rate limiter IP handling using ipKeyGenerator.
    • Harden Sentry init; switch to PrismaInstrumentation.
  • Build/Config:
    • Add react-router.config.ts with routeDiscovery: initial and Sentry build hook.
    • Enable React Router DevTools in Vite; tweak allowed hosts/watch; add Tailwind plugin updates.
    • tsconfig.json excludes .repos.example.
  • Data/Seed:
    • Optimize note image seeding via array selection and Promise.all.
  • Dependencies:
    • Rename package and bump numerous deps (React Router, Prisma, Sentry, Tailwind, etc.); add updater-related dev deps.

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

goodeats and others added 30 commits October 25, 2025 22:51
Fixes the incorrect usage of the `<Img>` component when `previewImage` was a data URL during existing note image replacement.
* outline

* chore: Updated decision doc for rr devtools

* chore: Updated decision doc for rr devtools

---------

Co-authored-by: Kent C. Dodds <[email protected]>
Updated Resend logo to the newly rebranded logo.
- Add affectsPackageFiles() method to detect commits that modify package files
- Add resolvePackageConflicts() method for handling package.json conflicts
- Enhanced conflict resolution with smart detection of package file types
- Improved user experience with better messaging and auto-resolution options
- Refactored git operations to use CommitParser for consistency
- Added missing 'epic-stack' configuration to package.json
- Set head to ec0efe56 (last applied commit) and date to 2025-08-20
- This restores proper tracking functionality for the updater CLI

The tracking system stores the last processed commit hash and date in package.json
under the 'epic-stack' key to know where to resume from on subsequent runs.
cursor[bot]

This comment was marked as outdated.

- Add debug logs to playwright.config.ts for webServer startup
- Add debug logs and error handling to server/utils/monitoring.ts
- Add debug logs and error handling to app/utils/monitoring.client.tsx
- Add debug logs to app/entry.client.tsx and app/entry.server.tsx
- Add debug logs to tests/playwright-utils.ts fixtures
- Add DEBUG=* env var to GitHub Actions Playwright step

This will help identify where the Playwright tests are failing in CI.
- Replace deprecated browserProfilingIntegration() with browserTracingIntegration()
- Add fallback to try deprecated method if new one fails
- Skip Sentry initialization in test environment (NODE_ENV=test)
- This addresses the root cause of Playwright test failures
cursor[bot]

This comment was marked as outdated.

- Skip Sentry initialization when DSN is invalid ('your-dsn')
- Add start:mocks:test script with NODE_ENV=test
- Update Playwright config to use test-specific script
- This prevents server timeout during test startup
cursor[bot]

This comment was marked as outdated.

- Replace '*' with '/*' in Express routes to fix [email protected] compatibility
- This resolves the 'Missing parameter name at index 1: *' error
- Express 5.1.0 with [email protected] requires named parameters for wildcards
- Replace '/*' with '/:path(*)' to provide named parameter required by [email protected]
- This resolves the 'Missing parameter name' error
- Express 5.1.0 with [email protected] requires named parameters for catch-all routes
cursor[bot]

This comment was marked as outdated.

cursor[bot]

This comment was marked as outdated.

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.

This PR is being reviewed by Cursor Bugbot

Details

You are on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle.

To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.

try {
console.log('DEBUG PAT: Adding browserTracingIntegration...')
// browserProfilingIntegration() has been deprecated in favor of browserTracingIntegration()
const integration = Sentry.browserTracingIntegration()
Copy link

Choose a reason for hiding this comment

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

Bug: Wrong Sentry integration used for performance monitoring

The code attempts to use browserTracingIntegration() as the primary integration with browserProfilingIntegration() as a fallback, but according to Sentry documentation, browserProfilingIntegration is for profiling (beta feature requiring JS Self-Profiling API) while browserTracingIntegration is for performance tracing. These serve different purposes and aren't interchangeable fallbacks. The comment incorrectly states that browserProfilingIntegration() is deprecated in favor of browserTracingIntegration(), which is false—they're separate features. This will cause profiling to fail or tracing to be misconfigured.

Additional Locations (1)

Fix in Cursor Fix in Web

if (value === undefined || value === null) return ''
if (typeof value === 'boolean') return value ? 'true' : 'false'
if (Array.isArray(value)) return value.join(';') // Use semicolon as array separator
const str = String(value)
Copy link

Choose a reason for hiding this comment

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

Bug: Array elements with semicolons incorrectly parsed

Array fields like languages and tags are serialized by joining with semicolons, but array elements containing semicolons aren't escaped. When an array like ['TypeScript', 'React;Hooks'] is joined to TypeScript;React;Hooks and later split on semicolons, it becomes ['TypeScript', 'React', 'Hooks'], losing the original structure. The CSV field escaping quotes the entire value if it contains semicolons, but the split operation doesn't account for this, causing data corruption when array elements contain the separator character.

Additional Locations (1)

Fix in Cursor Fix in Web

- Add .repos.example/**/* to ESLint ignores to prevent parser errors
- Exclude .repos.example from main tsconfig to preserve Vite's module: preserve setting
- Create separate tsconfig.json in .repos.example with nodenext module support for import.meta

This fixes TypeScript errors about import.meta not being allowed with module: preserve, which is required by Vite. The example files now have their own TypeScript config that supports ESM patterns.
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.