Skip to content

49 feedback and support - #57

Merged
InfinityBowman merged 4 commits into
mainfrom
49-feedback-and-support
Dec 16, 2025
Merged

49 feedback and support#57
InfinityBowman merged 4 commits into
mainfrom
49-feedback-and-support

Conversation

@InfinityBowman

@InfinityBowman InfinityBowman commented Dec 16, 2025

Copy link
Copy Markdown
Owner

Summary by CodeRabbit

  • New Features

    • Added a Contact page with form, SEO metadata, sitemap entry, and a Contact link in the footer.
    • Enhanced Navbar with a dynamic, responsive mobile menu.
  • Style

    • Refined Hero visuals and sizing; added new CSS animations and responsive utilities.
  • Bug Fixes

    • Improved PDF loading reliability to prevent duplicate loads and ensure stable buffers.
  • Documentation

    • Reorganized and reworded internal coding standards and documentation references.

✏️ Tip: You can customize this high-level summary in your review settings.

@InfinityBowman InfinityBowman linked an issue Dec 16, 2025 that may be closed by this pull request
@coderabbitai

coderabbitai Bot commented Dec 16, 2025

Copy link
Copy Markdown

Caution

Review failed

The pull request is closed.

Walkthrough

Adds a contact page and mailto form, updates landing UI (navbar, footer, hero, styles) for responsive/mobile behaviors, rebrands internal docs/guidance to GitHub Copilot, and fixes PDF loading by cloning ArrayBuffers and preventing duplicate concurrent loads.

Changes

Cohort / File(s) Summary
Docs / AI guidance
/.clauderc, /.cursorrules, /.github/copilot-instructions.md
Rebranded guidance from Claude/Cursor AI to GitHub Copilot; reorganized sections (File Size, Documentation Tool, Zag/References), normalized phrasing and bullet styles; minor wording and formatting edits.
Landing routing & sitemap
packages/landing/app.config.js, packages/landing/public/sitemap.xml
Added /contact to prerender routes and inserted https://corates.org/contact in sitemap.
Landing UI — navigation & footer
packages/landing/src/components/Navbar.jsx, packages/landing/src/components/Footer.jsx
Reworked Navbar to dynamic Solid.js component with mobile menu (signals, For, Show, mobile toggle, icons, animations). Added Contact link to Footer.
Landing — contact page
packages/landing/src/routes/contact.jsx
New Contact page component with SEO metadata, two-column layout, contact info, mailto-based form submission, and formState signal for send status. Exports default Contact.
Landing — hero & styles
packages/landing/src/components/Hero.jsx, packages/landing/src/styles.css
Removed logo block, adjusted status dots, badge sizing, and background decoration sizes. Added CSS vars (--text-2xs, --text-3xs, --text-4xs, --breakpoint-xs), keyframes (slideDown, staggerFadeIn) and animation utility classes.
PDF handling
packages/web/src/components/checklist-ui/pdf/usePdfJs.js
Added loadingSourceId to avoid duplicate concurrent loads; clone ArrayBuffers before handing to PDF.js/workers; use cloned buffers for callbacks and state; ensure cleanup/reset after loads.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • Areas to scrutinize:
    • packages/landing/src/components/Navbar.jsx — mobile menu state, conditional rendering, and animation hooks.
    • packages/landing/src/routes/contact.jsx — mailto construction, form validation/state transitions, SEO metadata.
    • packages/web/src/components/checklist-ui/pdf/usePdfJs.js — correctness and performance impact of ArrayBuffer cloning and loadingSourceId edge-case handling.
    • packages/landing/src/styles.css — new keyframes and utilities for cross-browser behavior.

Possibly related PRs

  • 49 feedback and support #57 — edits overlapping files (docs, landing contact route, Navbar/Footer/Hero, styles, usePdfJs.js); likely related and may conflict.

Poem

🐰 I hopped through code, a curious sprite,

A contact page to share delight.
Nav now dances, menus unfurl,
PDFs clone safely in the whirl.
Copilot whispers, "Ship it right!" ✨

Pre-merge checks and finishing touches

❌ Failed checks (1 warning, 1 inconclusive)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 12.50% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
Title check ❓ Inconclusive The title is vague and does not clearly convey the main changes; 'feedback and support' is too generic and fails to summarize the actual changeset which includes contact page implementation, navbar refactoring, hero styling updates, and various documentation changes. Revise the title to be more specific and descriptive, such as 'Add contact page and update landing page components' or 'Implement contact route with responsive navbar and hero redesign' to clearly summarize the primary changes.
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b585e46 and 073e22e.

📒 Files selected for processing (3)
  • .clauderc (1 hunks)
  • .cursorrules (5 hunks)
  • .github/copilot-instructions.md (3 hunks)

Comment @coderabbitai help to get the list of available commands and usage tips.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Dec 16, 2025

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Updated (UTC)
❌ Deployment failed
View logs
corates 073e22e Dec 16 2025, 12:30 AM

@coderabbitai coderabbitai 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.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
.cursorrules (1)

1-95: Content duplication across three configuration files.

This file contains nearly identical content to .github/copilot-instructions.md and .clauderc. All three files claim to be "GitHub Copilot Instructions", creating maintenance overhead. If guidelines are updated in one file, the other two may become stale.

Consider one of these approaches:

  1. Consolidate into a single source file (e.g., .github/copilot-instructions.md) and symlink or remove the others
  2. Document the purpose of each file if they serve different AI assistants (though all currently reference GitHub Copilot)
  3. Add a maintenance note in each file referencing the canonical source
♻️ Duplicate comments (2)
.cursorrules (1)

54-61: Inconsistent bullet formatting (duplicate issue).

Same issue as in .github/copilot-instructions.md: lines 54-61 use bullets while lines 92-95 use - bullets. Standardize bullet formatting throughout the file.

Also applies to: 92-95

.clauderc (1)

1-95: Filename-content mismatch and duplication.

The filename .clauderc suggests Claude-specific configuration, but line 1 declares this as "GitHub Copilot Instructions". This creates confusion about which AI assistant should use this file.

Additionally, this file duplicates content from .github/copilot-instructions.md and .cursorrules, as flagged in the .cursorrules review.

Consider:

  1. If this file is for Claude, update the content to reflect that
  2. If this file is for Copilot, rename it to match its purpose
  3. Consolidate all three configuration files to eliminate duplication
🧹 Nitpick comments (6)
packages/web/src/components/checklist-ui/pdf/usePdfJs.js (1)

203-210: Effective duplicate load prevention with pragmatic trade-off.

The logic correctly prevents concurrent duplicate loads. Using byteLength as the source identifier is a pragmatic choice—while theoretically two different PDFs could have identical sizes, the collision risk during the brief concurrent-load window is negligible. If false-positive collisions become an issue in practice, consider hashing the buffer content for a more unique ID.

packages/landing/public/sitemap.xml (1)

15-17: Fix indentation for consistency.

The opening <url> tag uses 4 spaces while other entries use 2 spaces.

Apply this diff:

-    <url>
+  <url>
     <loc>https://corates.org/contact</loc>
   </url>
packages/landing/app.config.js (1)

11-11: Consider alphabetical ordering for maintainability.

While functional, organizing routes alphabetically can improve maintainability.

Apply this diff:

-      routes: ['/', '/about', '/contact', '/terms', '/privacy'],
+      routes: ['/', '/about', '/contact', '/privacy', '/terms'],
packages/landing/src/routes/contact.jsx (2)

24-24: Extract hardcoded email to config for maintainability.

The email address jakebrake115@gmail.com appears in three locations. Extract it to ~/lib/config.js to follow the DRY principle and make future updates easier.

Add to packages/landing/src/lib/config.js:

export const config = {
  // ... existing config
  contactEmail: 'jakebrake115@gmail.com',
};

Then update this file:

-    const mailtoLink = `mailto:jakebrake115@gmail.com?subject=${encodeURIComponent(subject || 'CoRATES Inquiry')}&body=${encodeURIComponent(`Name: ${name}\nEmail: ${email}\n\n${message}`)}`;
+    const mailtoLink = `mailto:${config.contactEmail}?subject=${encodeURIComponent(subject || 'CoRATES Inquiry')}&body=${encodeURIComponent(`Name: ${name}\nEmail: ${email}\n\n${message}`)}`;

     <div class='text-gray-500'>
       Please understand we are still working on adding an FAQ and getting an official
       business email. Don't worry, your messages will still reach us at
-      jakebrake115@gmail.com.
+      {config.contactEmail}.
     </div>

     {formState() === 'sent' && (
       <p class='text-center text-green-600 text-sm'>
         Your email client should open shortly. If it does not, please email us
-        directly at jakebrake115@gmail.com
+        directly at {config.contactEmail}
       </p>
     )}

Also applies to: 89-89, 172-172


16-27: Consider limitations of mailto approach.

The current implementation using mailto: links is simple but has limitations:

  • Requires a configured email client on the user's device
  • May not work on mobile devices without email apps
  • No confirmation that the email was actually sent
  • No server-side logging of contact attempts

While this approach works for an MVP, consider implementing a server-side contact form handler in the future for better reliability and user experience.

.cursorrules (1)

18-18: Terminology inconsistency.

The guideline uses "sub-modules" but the example mentions "helper components". Consider using consistent terminology throughout the bullet point.

Either change to:

-  - Extract sub-modules into a folder (e.g., `ComponentName/` with `index.jsx` and helper components)
+  - Extract sub-components into a folder (e.g., `ComponentName/` with `index.jsx` and helper components)

Or make the example match:

-  - Extract sub-modules into a folder (e.g., `ComponentName/` with `index.jsx` and helper components)
+  - Extract sub-modules into a folder (e.g., `ComponentName/` with `index.jsx` and helper modules)
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6d2fb7f and b585e46.

📒 Files selected for processing (11)
  • .clauderc (1 hunks)
  • .cursorrules (5 hunks)
  • .github/copilot-instructions.md (2 hunks)
  • packages/landing/app.config.js (1 hunks)
  • packages/landing/public/sitemap.xml (1 hunks)
  • packages/landing/src/components/Footer.jsx (1 hunks)
  • packages/landing/src/components/Hero.jsx (2 hunks)
  • packages/landing/src/components/Navbar.jsx (1 hunks)
  • packages/landing/src/routes/contact.jsx (1 hunks)
  • packages/landing/src/styles.css (3 hunks)
  • packages/web/src/components/checklist-ui/pdf/usePdfJs.js (5 hunks)
🧰 Additional context used
📓 Path-based instructions (5)
**/*.{js,jsx,ts,tsx}

📄 CodeRabbit inference engine (.cursorrules)

**/*.{js,jsx,ts,tsx}: Prefer modern ES6+ syntax and features
Use aliases for imports when appropriate to improve readability

**/*.{js,jsx,ts,tsx}: Prefer modern ES6+ syntax and features.
Use aliases for imports when appropriate to improve readability.
Keep files small, focused, and modular. If a file exceeds a high number of lines, extract sub-modules into a folder with index.jsx, move complex logic into separate utility files or primitives, or split large forms into section components.

Files:

  • packages/web/src/components/checklist-ui/pdf/usePdfJs.js
  • packages/landing/app.config.js
  • packages/landing/src/components/Footer.jsx
  • packages/landing/src/routes/contact.jsx
  • packages/landing/src/components/Navbar.jsx
  • packages/landing/src/components/Hero.jsx
**/*.{jsx,tsx,js,ts}

📄 CodeRabbit inference engine (.cursorrules)

Use Solid's createStore for complex state or state objects in SolidJS components

Files:

  • packages/web/src/components/checklist-ui/pdf/usePdfJs.js
  • packages/landing/app.config.js
  • packages/landing/src/components/Footer.jsx
  • packages/landing/src/routes/contact.jsx
  • packages/landing/src/components/Navbar.jsx
  • packages/landing/src/components/Hero.jsx
packages/web/src/**/*.{js,jsx,ts,tsx}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

packages/web/src/**/*.{js,jsx,ts,tsx}: For UI icons, use the solid-icons library or SVGs only. Do not use emojis.
Do NOT prop-drill application state. Shared or cross-feature state must live in external stores under packages/web/src/stores/ or relative to the component file.
When you need to compute a value based on props or state in SolidJS, use createMemo to ensure it updates reactively.
For complex state or state objects in SolidJS, use Solid's createStore for better performance and reactivity instead of multiple createSignal calls.

Files:

  • packages/web/src/components/checklist-ui/pdf/usePdfJs.js
packages/web/src/components/**/*.{js,jsx,ts,tsx}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

packages/web/src/components/**/*.{js,jsx,ts,tsx}: Use responsive design principles for UI components.
Group related components in subdirectories with an index.js barrel export.
Components should receive at most 1–5 props, and only for local configuration, not shared state. If a component would need more than 5 props, move the shared data into an external store, a primitive, or Solid context.
Do NOT destructure props in SolidJS components as it breaks reactivity. Instead, access props directly from the props object (e.g., props.name) or wrap them in a function (e.g., const name = () => props.name).
Components should be lean and focused. They should not implement business logic; move that into stores, utilities, or primitives.
When implementing UI components, use zag.js. Reuse existing Zag components in packages/web/src/components/zag/* as documented in that folder's README.md.

Files:

  • packages/web/src/components/checklist-ui/pdf/usePdfJs.js
**/components/**/*.{jsx,tsx}

📄 CodeRabbit inference engine (.cursorrules)

**/components/**/*.{jsx,tsx}: Keep component files small, focused, and modular, aiming for ~200-300 lines max per component file
When a component exceeds ~300 lines, extract sub-components into a folder (e.g., ComponentName/ with index.jsx and helper components)
Move complex logic from component files into separate utility files or primitives
In SolidJS components, access props directly from the props object or wrap them in a function instead of destructuring to maintain reactivity
Use createMemo to compute derived values based on props or state in SolidJS components

Files:

  • packages/landing/src/components/Footer.jsx
  • packages/landing/src/components/Navbar.jsx
  • packages/landing/src/components/Hero.jsx
🧠 Learnings (36)
📚 Learning: 2025-12-15T22:11:22.013Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-15T22:11:22.013Z
Learning: Applies to packages/web/src/components/**/*.{js,jsx,ts,tsx} : Use responsive design principles for UI components.

Applied to files:

  • packages/landing/src/styles.css
  • packages/landing/src/components/Navbar.jsx
  • packages/landing/src/components/Hero.jsx
  • .cursorrules
📚 Learning: 2025-12-15T16:38:07.301Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .cursorrules:0-0
Timestamp: 2025-12-15T16:38:07.301Z
Learning: Applies to **/components/**/*[Ff]orm*.{jsx,tsx} : Split large forms into section components (see `add-studies/` folder pattern)

Applied to files:

  • packages/landing/src/routes/contact.jsx
  • .cursorrules
📚 Learning: 2025-12-15T22:11:22.014Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-15T22:11:22.014Z
Learning: Applies to packages/web/src/**/*.{js,jsx,ts,tsx} : For complex state or state objects in SolidJS, use Solid's `createStore` for better performance and reactivity instead of multiple `createSignal` calls.

Applied to files:

  • packages/landing/src/components/Navbar.jsx
  • .clauderc
  • .cursorrules
📚 Learning: 2025-12-15T22:11:22.015Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-15T22:11:22.015Z
Learning: Applies to packages/web/src/components/**/*.{js,jsx,ts,tsx} : When implementing UI components, use zag.js. Reuse existing Zag components in `packages/web/src/components/zag/*` as documented in that folder's README.md.

Applied to files:

  • .clauderc
  • .cursorrules
  • .github/copilot-instructions.md
📚 Learning: 2025-12-15T22:11:22.015Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-15T22:11:22.015Z
Learning: Applies to packages/web/src/components/**/*.{js,jsx,ts,tsx} : Components should be lean and focused. They should not implement business logic; move that into stores, utilities, or primitives.

Applied to files:

  • .clauderc
  • .cursorrules
  • .github/copilot-instructions.md
📚 Learning: 2025-12-15T22:11:22.013Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-15T22:11:22.013Z
Learning: Applies to packages/web/src/**/*.{js,jsx,ts,tsx} : Do NOT prop-drill application state. Shared or cross-feature state must live in external stores under packages/web/src/stores/ or relative to the component file.

Applied to files:

  • .clauderc
  • .cursorrules
📚 Learning: 2025-12-15T22:11:22.013Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-15T22:11:22.013Z
Learning: Applies to packages/web/src/components/**/*.{js,jsx,ts,tsx} : Components should receive at most 1–5 props, and only for local configuration, not shared state. If a component would need more than 5 props, move the shared data into an external store, a primitive, or Solid context.

Applied to files:

  • .clauderc
  • .cursorrules
  • .github/copilot-instructions.md
📚 Learning: 2025-12-15T22:11:22.013Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-15T22:11:22.013Z
Learning: Applies to packages/web/src/components/**/*.{js,jsx,ts,tsx} : Do NOT destructure props in SolidJS components as it breaks reactivity. Instead, access props directly from the props object (e.g., `props.name`) or wrap them in a function (e.g., `const name = () => props.name`).

Applied to files:

  • .clauderc
  • .cursorrules
📚 Learning: 2025-12-15T22:11:22.015Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-15T22:11:22.015Z
Learning: Follow standard JavaScript/SolidJS/Cloudflare best practices.

Applied to files:

  • .clauderc
  • .cursorrules
📚 Learning: 2025-12-15T16:38:07.301Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .cursorrules:0-0
Timestamp: 2025-12-15T16:38:07.301Z
Learning: Follow standard JavaScript/SolidJS/Cloudflare best practices

Applied to files:

  • .clauderc
  • .cursorrules
📚 Learning: 2025-12-15T22:11:22.015Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-15T22:11:22.015Z
Learning: Applies to packages/web/src/primitives/**/*.{js,jsx,ts,tsx} : Create reusable logic in 'primitives' (hooks) that can be shared across components to keep components clean and focused on rendering.

Applied to files:

  • .clauderc
  • .cursorrules
  • .github/copilot-instructions.md
📚 Learning: 2025-12-15T16:38:07.301Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .cursorrules:0-0
Timestamp: 2025-12-15T16:38:07.301Z
Learning: Applies to **/components/**/*.{jsx,tsx} : Keep component files small, focused, and modular, aiming for ~200-300 lines max per component file

Applied to files:

  • .clauderc
  • .cursorrules
  • .github/copilot-instructions.md
📚 Learning: 2025-12-15T16:38:07.301Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .cursorrules:0-0
Timestamp: 2025-12-15T16:38:07.301Z
Learning: When implementing UI components, use zag.js and reference the Zag.js documentation in `docs/zag/llms.txt`

Applied to files:

  • .cursorrules
  • .github/copilot-instructions.md
📚 Learning: 2025-12-15T22:11:22.013Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-15T22:11:22.013Z
Learning: Applies to **/*.{js,jsx,ts,tsx} : Keep files small, focused, and modular. If a file exceeds a high number of lines, extract sub-modules into a folder with index.jsx, move complex logic into separate utility files or primitives, or split large forms into section components.

Applied to files:

  • .cursorrules
📚 Learning: 2025-12-15T16:38:07.301Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .cursorrules:0-0
Timestamp: 2025-12-15T16:38:07.301Z
Learning: Reuse existing Zag components: Checkbox, Collapsible, Dialog, FileUpload, PasswordInput, Splitter, Switch, Tabs, Toast, and Tooltip from `packages/web/src/components/zag/`

Applied to files:

  • .cursorrules
  • .github/copilot-instructions.md
📚 Learning: 2025-12-15T22:11:22.015Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-15T22:11:22.015Z
Learning: Use the CoRATES MCP tools to explore local documentation sources for Better-Auth, Drizzle, and Zag documentation.

Applied to files:

  • .cursorrules
  • .github/copilot-instructions.md
📚 Learning: 2025-12-15T16:38:07.301Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .cursorrules:0-0
Timestamp: 2025-12-15T16:38:07.301Z
Learning: Applies to **/components/**/*.{jsx,tsx} : When a component exceeds ~300 lines, extract sub-components into a folder (e.g., `ComponentName/` with `index.jsx` and helper components)

Applied to files:

  • .cursorrules
📚 Learning: 2025-12-15T22:11:22.012Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-15T22:11:22.012Z
Learning: Applies to packages/web/src/**/*.{js,jsx,ts,tsx} : For UI icons, use the `solid-icons` library or SVGs only. Do not use emojis.

Applied to files:

  • .cursorrules
  • .github/copilot-instructions.md
📚 Learning: 2025-12-15T22:11:22.016Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-15T22:11:22.016Z
Learning: The project is split into multiple packages under the `packages/` directory. Each package may have its own dependencies and configurations including the landing/marketing site, the main app, and backend services.

Applied to files:

  • .cursorrules
📚 Learning: 2025-12-15T22:11:22.013Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-15T22:11:22.013Z
Learning: Applies to packages/workers/migrations/*.sql : All database migrations should go in a single file: `packages/workers/migrations/0001_init.sql`. Do NOT create separate migration files. When adding new tables or schema changes, edit the existing 0001_init.sql file directly.

Applied to files:

  • .cursorrules
📚 Learning: 2025-12-15T22:11:22.016Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-15T22:11:22.016Z
Learning: Only Cloudflare Workers is used for backend services and frontend deployments. Cloudflare Pages is not used in this project.

Applied to files:

  • .cursorrules
📚 Learning: 2025-12-15T16:38:07.301Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .cursorrules:0-0
Timestamp: 2025-12-15T16:38:07.301Z
Learning: Applies to packages/workers/migrations/0001_init.sql : All database migrations should go in a single file: `packages/workers/migrations/0001_init.sql`

Applied to files:

  • .cursorrules
📚 Learning: 2025-12-15T22:11:22.016Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-15T22:11:22.016Z
Learning: See TESTING.md for testing guidelines and best practices. Do NOT add tests unless asked.

Applied to files:

  • .cursorrules
📚 Learning: 2025-12-15T16:38:07.301Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .cursorrules:0-0
Timestamp: 2025-12-15T16:38:07.301Z
Learning: Do NOT create separate migration files (e.g., 0002_xxx.sql) since this project is not yet in production

Applied to files:

  • .cursorrules
📚 Learning: 2025-12-15T16:38:07.301Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .cursorrules:0-0
Timestamp: 2025-12-15T16:38:07.301Z
Learning: Shared or cross-feature state must live in external stores under `packages/web/src/stores/` or relative to the component file

Applied to files:

  • .cursorrules
📚 Learning: 2025-12-15T16:38:07.301Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .cursorrules:0-0
Timestamp: 2025-12-15T16:38:07.301Z
Learning: Do NOT prop-drill application state in SolidJS components

Applied to files:

  • .cursorrules
📚 Learning: 2025-12-15T16:38:07.301Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .cursorrules:0-0
Timestamp: 2025-12-15T16:38:07.301Z
Learning: Applies to **/*.{jsx,tsx,js,ts} : Use Solid's `createStore` for complex state or state objects in SolidJS components

Applied to files:

  • .cursorrules
📚 Learning: 2025-12-15T16:38:07.301Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .cursorrules:0-0
Timestamp: 2025-12-15T16:38:07.301Z
Learning: Components should receive at most 1–5 props for local configuration only, not shared state

Applied to files:

  • .cursorrules
  • .github/copilot-instructions.md
📚 Learning: 2025-12-15T16:38:07.301Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .cursorrules:0-0
Timestamp: 2025-12-15T16:38:07.301Z
Learning: Applies to **/components/**/*.{jsx,tsx} : In SolidJS components, access props directly from the props object or wrap them in a function instead of destructuring to maintain reactivity

Applied to files:

  • .cursorrules
📚 Learning: 2025-12-15T16:38:07.301Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .cursorrules:0-0
Timestamp: 2025-12-15T16:38:07.301Z
Learning: Move business logic from components into stores, utilities, or primitives

Applied to files:

  • .cursorrules
  • .github/copilot-instructions.md
📚 Learning: 2025-12-15T16:38:07.301Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .cursorrules:0-0
Timestamp: 2025-12-15T16:38:07.301Z
Learning: Components should be lean and focused on rendering, not implementing business logic

Applied to files:

  • .cursorrules
  • .github/copilot-instructions.md
📚 Learning: 2025-12-15T16:38:07.301Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .cursorrules:0-0
Timestamp: 2025-12-15T16:38:07.301Z
Learning: Create reusable logic in 'primitives' (hooks) that can be shared across SolidJS components

Applied to files:

  • .cursorrules
📚 Learning: 2025-12-15T16:38:07.301Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .cursorrules:0-0
Timestamp: 2025-12-15T16:38:07.301Z
Learning: Applies to **/components/**/*.{jsx,tsx} : Move complex logic from component files into separate utility files or primitives

Applied to files:

  • .cursorrules
  • .github/copilot-instructions.md
📚 Learning: 2025-12-15T22:11:22.015Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-15T22:11:22.015Z
Learning: Never have a component act as a 'God component' coordinating multiple large concerns.

Applied to files:

  • .cursorrules
  • .github/copilot-instructions.md
📚 Learning: 2025-12-15T16:38:07.301Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .cursorrules:0-0
Timestamp: 2025-12-15T16:38:07.301Z
Learning: Never have a component act as a 'God component' coordinating multiple large concerns

Applied to files:

  • .cursorrules
  • .github/copilot-instructions.md
📚 Learning: 2025-12-15T22:11:22.015Z
Learnt from: CR
Repo: InfinityBowman/corates PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-15T22:11:22.015Z
Learning: When you need to find icons from `solid-icons`, use the `search_icons` MCP tool to search by keyword, which returns icon names with their library prefix and import statement.

Applied to files:

  • .github/copilot-instructions.md
🧬 Code graph analysis (2)
packages/landing/src/routes/contact.jsx (2)
packages/landing/src/components/Navbar.jsx (1)
  • Navbar (6-106)
packages/landing/src/components/Footer.jsx (1)
  • Footer (3-103)
packages/landing/src/components/Navbar.jsx (2)
packages/landing/src/lib/auth.js (2)
  • useAuth (64-66)
  • isLoggedIn (10-10)
packages/landing/src/lib/config.js (2)
  • urls (8-13)
  • urls (8-13)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Workers Builds: corates
🔇 Additional comments (10)
packages/web/src/components/checklist-ui/pdf/usePdfJs.js (5)

44-44: LGTM! Clear intent for duplicate load prevention.

The module-level tracking variable is well-commented and addresses the concurrent load issue mentioned in the summary.


241-246: Essential defensive programming to prevent detached buffer issues.

The ArrayBuffer cloning is necessary and correctly implemented. PDF.js transfers ownership to the web worker, so creating a copy with slice(0) ensures the original buffer remains usable. The conditional check and clear comment make the intent explicit.


249-249: LGTM! Correctly uses cloned buffer.

The spread operator properly merges the cloned source with the verbosity config for the PDF.js loading task.


265-265: LGTM! Proper cleanup enables subsequent loads.

Resetting loadingSourceId in the finally block correctly allows future loads after the current one completes, whether successful or not.


425-430: LGTM! Double cloning ensures both internal and external buffers remain usable.

The intentional double-cloning pattern is correct:

  • Line 426 clones for internal use (PDF.js will detach this copy)
  • Line 430 clones for the parent callback (ensures parent has a usable copy)

The comments clearly explain the rationale for each clone, making the defensive pattern maintainable.

packages/landing/src/components/Footer.jsx (1)

55-59: LGTM! Contact link follows existing patterns.

The new Contact link is properly structured and matches the styling of other footer links.

packages/landing/src/styles.css (1)

5-10: LGTM! Animation utilities are well-structured.

The new CSS custom properties, keyframes, and utility classes follow existing patterns and provide smooth animations for the mobile menu.

Also applies to: 33-53, 64-74

packages/landing/src/components/Hero.jsx (1)

53-55: LGTM! Responsive design improvements are well-implemented.

The adjusted sizing for browser dots, URL badge text, and background decorations improve the mobile experience while maintaining visual consistency.

Also applies to: 58-58, 78-79

packages/landing/src/components/Navbar.jsx (1)

1-179: LGTM! Mobile menu implementation follows SolidJS best practices.

The refactored Navbar successfully implements:

  • Reactive state management with createSignal for the mobile menu toggle
  • Data-driven rendering using For and the navLinks array
  • Proper conditional rendering with Show for authentication states
  • Responsive design with separate mobile menu and backdrop
  • Smooth animations using the new utility classes

The component maintains reactivity correctly by accessing props through the props object in MobileMenu.

.github/copilot-instructions.md (1)

26-26: Documentation consolidation looks good.

The addition of "Icons" to the MCP documentation sources is a sensible consolidation of the previously separate "Icon Search Tool" section.

Comment thread .github/copilot-instructions.md
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.

Feedback and support

2 participants