Conversation
Adds support for pre-commit hooks using Husky and lint-staged. This automatically runs the following checks on staged files before a commit: - JavaScript: ESLint (with auto-fix) + Prettier formatting - CSS: Prettier formatting - Markdown: markdownlint-cli2 validation - JSON/YAML: Prettier formatting This helps maintain code quality and consistency across the project.
Adds support for both "#section" and "/#section" formats for smooth scrolling links. This ensures that the smooth scrolling behavior works correctly regardless of whether the user is on the home page or a different page. The changes include: - Updating the selector to match both "#section" and "/#section" formats - Checking the current URL to determine if the user is on the home page - Handling the "/#section" format by extracting the section ID and scrolling to the corresponding element - Maintaining the smooth scrolling behavior for the "#section" format These changes improve the user experience by providing a consistent smooth scrolling behavior across different page layouts and URL formats.
📝 WalkthroughSummary by CodeRabbit
WalkthroughDocumentation and setup scripts were updated to describe and automate the installation of pre-commit Git hooks using Husky and lint-staged. The main JavaScript file was modified to enhance smooth scrolling for anchor links, supporting both "#" and "/#" href formats with conditional navigation and scrolling logic. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant Git
participant Husky Pre-commit Hook
participant Lint Tools
User->>Git: git commit
Git->>Husky Pre-commit Hook: Trigger pre-commit
Husky Pre-commit Hook->>Lint Tools: Run ESLint, Prettier, markdownlint
Lint Tools-->>Husky Pre-commit Hook: Return results
alt All checks pass or auto-fixed
Husky Pre-commit Hook->>Git: Allow commit
else Lint errors remain
Husky Pre-commit Hook->>User: Block commit, show errors
end
sequenceDiagram
participant User
participant Browser
participant main.js
User->>Browser: Click anchor link (href="#..." or "/#...")
Browser->>main.js: Intercept click event
alt href starts with "/#"
main.js->>Browser: Check if on home page
alt On home page
main.js->>Browser: Prevent default, smooth scroll to target
else Not on home page
main.js->>Browser: Allow default navigation
end
else href starts with "#"
main.js->>Browser: Prevent default, smooth scroll to target
end
Poem
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 ESLint
npm error Exit handler never called! ✨ Finishing Touches
🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (1)
CLAUDE.md (1)
151-168: Comprehensive pre-commit hooks documentation with minor formatting issue.The documentation clearly explains the hooks setup, what gets checked, and how to handle failures. However, there's a markdown formatting issue that should be fixed.
Apply this diff to fix the markdown formatting issue:
If a commit fails due to linting errors: + 1. Review the error messages 2. Fix any issues that couldn't be auto-fixed 3. Stage the fixes: `git add .` 4. Retry the commit + To bypass hooks in emergencies: `git commit --no-verify`🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
163-163: Lists should be surrounded by blank lines
null(MD032, blanks-around-lists)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (4)
CLAUDE.md(2 hunks)README.md(3 hunks)assets/js/main.js(1 hunks)scripts/setup.sh(2 hunks)
🧰 Additional context used
🪛 markdownlint-cli2 (0.17.2)
CLAUDE.md
163-163: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
🔇 Additional comments (7)
scripts/setup.sh (2)
182-185: LGTM! Clean integration of Git hooks installation.The placement of husky installation after the build step is logical and ensures dependencies are properly set up before installing hooks.
210-213: Good improvement to user messaging.Removing the confusing note about npm install requirements and adding clear confirmation about pre-commit hooks improves the user experience.
CLAUDE.md (1)
23-23: Good addition to setup description.Adding the Git hooks installation step to the setup process description keeps the documentation consistent with the actual functionality.
assets/js/main.js (1)
306-337: Excellent enhancement to smooth scrolling functionality.The implementation elegantly handles both "#section" and "/#section" URL formats while preserving proper navigation behavior. The conditional check for home page ensures "/#section" links work correctly across different page contexts.
Key strengths:
- Maintains backward compatibility with existing "#" links
- Properly handles cross-page navigation for "/#" links
- Consistent smooth scrolling behavior with explicit block alignment
- Clean, readable conditional logic
README.md (3)
86-86: Good consistency update.Adding the Git hooks installation mention keeps the quick setup description aligned with the actual setup script functionality.
768-790: Comprehensive and clear pre-commit setup documentation.The detailed setup instructions and file-type-specific linting rules provide excellent guidance for developers. The manual setup alternative ensures flexibility for different workflows.
805-814: Clear workflow documentation.The step-by-step breakdown of the pre-commit process helps developers understand exactly what happens during commits and how to handle failures.
Description