Skip to content

Conversation

@gocanto
Copy link
Contributor

@gocanto gocanto commented Jul 23, 2025

Summary by CodeRabbit

  • Chores
    • Updated and reorganized development tooling and configuration for improved clarity and consistency.
    • Upgraded several development dependencies and added a new one for global variable definitions.
    • Expanded Prettier ignore paths to include additional directories.
  • Style
    • Reformatted templates, scripts, and string literals for consistency and readability across multiple components.
    • Improved code comments and type annotations for better clarity.
  • Refactor
    • Streamlined Makefile targets and ESLint configuration for easier maintenance.
  • Bug Fixes
    • Ensured the talks grid only displays when talks are present.
  • Documentation
    • Enhanced comments and ESLint directive usage for clarity and to suppress unnecessary warnings.
  • Tests
    • No changes.
  • New Features
    • No new user-facing features.

@coderabbitai
Copy link

coderabbitai bot commented Jul 23, 2025

Walkthrough

This update primarily involves code style, formatting, and minor configuration improvements across multiple files. The Makefile and ESLint configuration are refactored for clarity and maintainability, with updated dependency versions in package.json. Several Vue component files are reformatted for consistency, and a type signature is made stricter in the user types. No core logic or application behavior is changed.

Changes

Files/Groups Change Summary
Makefile Refactored targets, improved variable usage, removed/renamed targets, and updated command structure.
eslint.config.js Refactored global variable handling, simplified imports, and adjusted parser options and comments.
package.json Upgraded ESLint-related dependencies and added the globals devDependency.
src/stores/users/response.ts Converted all string literals from double to single quotes for style consistency.
src/stores/users/userType.ts Made the photo property in the Talks interface required instead of optional.
src/pages/ProjectsPage.vue Reformatted paragraph text to single lines; removed a blank line.
src/partials/EducationPartial.vue Reordered class attributes, added ESLint directive, and reformatted type annotations.
src/partials/FeaturedProjectsPartial.vue Moved v-for and :key bindings to the start of the anchor tag for clarity.
src/partials/ProjectCardPartial.vue Condensed <img> tag and reformatted defineProps call.
src/partials/RecommendationPartial.vue Swapped attribute order, added ESLint directive, and standardized type annotation formatting.
src/partials/SideNavPartial.vue Made currentRoute type annotation explicit and updated related comment.
src/partials/TalksPartial.vue Added conditional rendering for talks grid, reordered attributes, and minor formatting fixes.
src/public.ts Switched string literals to single quotes and added a missing semicolon.
src/pages/ResumePage.vue Removed incorrect type annotation on user ref declaration for proper typing.
.prettierignore Added dist/ and docker/ directories to Prettier ignore list.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant Makefile
    participant Prettier
    participant ESLint

    User->>Makefile: make format
    Makefile->>Prettier: Run formatting
    Prettier-->>Makefile: Formatting complete
    Makefile->>ESLint: Run lint-fix (auto-fix lint issues)
    ESLint-->>Makefile: Linting complete
    Makefile-->>User: format target complete
Loading

Estimated code review effort

2 (~15 minutes)

Possibly related PRs

  • [feature] Resumen page #3: Updates src/stores/users/response.ts by adding new properties for recommendations and education, which overlaps with the file changed here (though this PR only changes string quoting style).
  • [feature] Nice stuff I've built #2: Refactors src/pages/ProjectsPage.vue to use reactive data instead of static arrays, which relates to this PR's formatting changes in the same file.

Poem

The codebase got a tidy sweep,
With quotes now single, changes deep.
Makefile’s rules are crisp and neat,
ESLint’s globals can’t be beat!
A hop, a skip, a format run—
This rabbit’s work is never done!
🐇✨


📜 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 6ef9d9f and 5d0aaf2.

📒 Files selected for processing (1)
  • .prettierignore (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • .prettierignore

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need 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)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Summary of Changes

Hello @gocanto, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request serves as a hotfix to address and improve the project's ESLint configuration and related development tooling. It updates various ESLint dependencies, refines the ESLint configuration file for better maintainability and correctness, and applies automated linting fixes across several Vue component files. The changes aim to ensure code quality and consistency moving forward.

Highlights

  • ESLint Configuration Modernization: Updated eslint.config.js to streamline imports, adopt the globals package for managing global variables (e.g., browser, node), and refine parser options for Vue files, enhancing the new flat config format.
  • Dependency Updates: Bumped versions for core ESLint, TypeScript ESLint, and Vue ESLint related packages in package.json to their latest compatible versions, ensuring up-to-date linting capabilities.
  • Build Script Enhancements: Modified Makefile targets, renaming env:fresh to env-fresh and simplifying linting commands. Also added rm package-lock.json to the env-fresh target for a cleaner environment reset.
  • Vue Template Linting Fixes: Applied automated or manual fixes to Vue component templates, primarily reordering attributes for v-for directives and adding an eslint-disable-next-line comment for a v-html directive where its usage is intentional.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in issue comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments or fill out our survey to provide feedback.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request updates the project's ESLint configuration to the modern flat format, upgrades dependencies, and applies automatic fixes to Vue components. I've provided feedback on re-introducing a lint-check command to the Makefile and adding a configuration block for standalone TypeScript files in the ESLint configuration. Additionally, I've suggested moving the class attribute after the v-for directive in several Vue components for better readability.

@gocanto gocanto changed the title Hotfix/eslint fixes [hotfix] eslint + format Jul 23, 2025
@gocanto gocanto marked this pull request as ready for review July 23, 2025 03:03
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

♻️ Duplicate comments (6)
src/partials/FeaturedProjectsPartial.vue (1)

8-9: Good improvement! Structural directives now prioritized.

Moving v-for and :key to the beginning of the attribute list improves readability and follows Vue.js best practices for directive ordering.

src/partials/TalksPartial.vue (1)

10-10: Class attribute should be placed after the v-for directive.

The class attribute is still positioned before the v-for directive, which contradicts the previous review feedback for better readability and maintainability.

src/partials/EducationPartial.vue (1)

6-6: Class attribute should be placed after the v-for directive.

The class attribute positioning still doesn't follow the previous review feedback for better readability and maintainability.

src/partials/RecommendationPartial.vue (1)

6-6: Class attribute should be placed after the v-for directive.

The class attribute positioning still doesn't follow the previous review feedback for better readability and maintainability.

eslint.config.js (1)

16-16: Missing TypeScript file configuration still needs to be addressed

The configuration is still missing a dedicated block for standalone TypeScript files (.ts). Currently, only TypeScript within .vue files is being parsed with @typescript-eslint/parser, which means standalone TypeScript files like vite.config.ts, src/router.ts, and Pinia stores are not getting TypeScript-specific linting.

Makefile (1)

1-1: Consider re-adding lint-check command

It would be beneficial to have a separate lint-check command for checking linting issues without automatically fixing them. This is especially useful in CI/CD pipelines to fail builds on lint errors.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e953db6 and b20904a.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (13)
  • Makefile (1 hunks)
  • eslint.config.js (2 hunks)
  • package.json (1 hunks)
  • src/pages/ProjectsPage.vue (1 hunks)
  • src/partials/EducationPartial.vue (3 hunks)
  • src/partials/FeaturedProjectsPartial.vue (1 hunks)
  • src/partials/ProjectCardPartial.vue (2 hunks)
  • src/partials/RecommendationPartial.vue (3 hunks)
  • src/partials/SideNavPartial.vue (1 hunks)
  • src/partials/TalksPartial.vue (2 hunks)
  • src/public.ts (1 hunks)
  • src/stores/users/response.ts (11 hunks)
  • src/stores/users/userType.ts (1 hunks)
🪛 checkmake (0.2.2)
Makefile

[warning] 1-1: Missing required phony target "all"

(minphony)


[warning] 1-1: Missing required phony target "clean"

(minphony)


[warning] 1-1: Missing required phony target "test"

(minphony)

🧰 Additional context used
🪛 checkmake (0.2.2)
Makefile

[warning] 1-1: Missing required phony target "all"

(minphony)


[warning] 1-1: Missing required phony target "clean"

(minphony)


[warning] 1-1: Missing required phony target "test"

(minphony)

🔇 Additional comments (20)
src/public.ts (1)

7-16: LGTM! Consistent quote style and formatting improvements.

The changes improve code consistency by standardizing on single quotes and adding proper semicolons. No functional changes detected.

src/pages/ProjectsPage.vue (1)

24-28: LGTM! Improved text formatting consistency.

Consolidating the paragraph text into single lines improves readability and maintains consistent formatting across the component.

src/partials/ProjectCardPartial.vue (2)

12-12: Good consolidation of simple img tag.

Placing all attributes on a single line for this simple <img> tag improves consistency and readability.


34-34: Consistent formatting for defineProps.

The bracket alignment improvement enhances code formatting consistency.

src/stores/users/userType.ts (1)

43-43: No breaking change: photo is consistently required and handled

All instances of the Talks interface and its usage already assume a required photo string. Sample API data and UI templates supply and consume talk.photo without optional checks, so making photo non-optional does not introduce any breaking behavior.

• src/stores/users/userType.ts – photo: string in interface Talks
• src/stores/users/response.ts – every Talks object in sample responses includes a photo field
• src/partials/TalksPartial.vue – talk.photo is used directly in both script and template

src/partials/TalksPartial.vue (1)

6-6: Good defensive programming practice.

Adding the v-if="talks.length" condition prevents rendering an empty grid container when there are no talks to display.

src/partials/SideNavPartial.vue (2)

83-83: Good TypeScript improvement.

Adding the explicit Ref import improves type clarity and enables better IDE support.


86-86: Explicit type annotation improves code clarity.

The explicit type annotation for currentRoute enhances TypeScript support and code readability.

package.json (1)

26-27: ✅ Dependency versions verified; no security issues found.

  • package.json (lines 26–27, 29, 31–32, 37)
    • @typescript-eslint/eslint-plugin@8.38.0
    • @typescript-eslint/parser@8.38.0
    • eslint@9.31.0
    • eslint-plugin-vue@10.3.0
    • vue-eslint-parser@10.2.0
    • globals@16.3.0
  • All versions exist on npm and npm audit reports zero vulnerabilities.

These linting updates are safe to merge.

src/partials/EducationPartial.vue (2)

32-32: Appropriate ESLint disable comment.

The ESLint disable comment is correctly placed since the HTML content is sanitized with DOMPurify before rendering.


48-49: Improved type annotation formatting.

The single-line type annotation formatting is cleaner and more consistent.

src/partials/RecommendationPartial.vue (2)

16-16: Good formatting and ESLint improvements.

Removing the trailing space and adding the appropriate ESLint disable comment for sanitized HTML rendering improves code quality.

Also applies to: 20-20


42-43: Improved TypeScript and formatting consistency.

The type annotation formatting and explicit arrow function parentheses improve code consistency and readability.

Also applies to: 46-46

src/stores/users/response.ts (1)

150-470: LGTM - Consistent quote formatting applied

The systematic conversion from double quotes to single quotes throughout the Response object aligns perfectly with the updated ESLint configuration and formatting standards. This change improves code consistency across the project.

eslint.config.js (3)

2-9: LGTM - Cleaner import organization

The refactored imports are more organized and the addition of the globals package simplifies global variable management.


26-26: Good addition of clarifying comment

The comment explaining requireConfigFile: false helps understand the Babel parser configuration.


29-30: Improved global variable handling

Using ...globals.browser and ...globals.node directly is cleaner than manual extraction and leverages the globals package properly.

Also applies to: 48-48

Makefile (3)

1-4: LGTM - Better organization and new ROOT_PATH variable

Moving .PHONY to the top improves readability, and the ROOT_PATH variable is a good practice for making paths more explicit and maintainable.


6-8: Efficient workflow improvement

The updated format target that automatically runs lint-fix after prettier creates a streamlined formatting and linting workflow.


10-14: Good use of absolute paths in env-fresh

Using ROOT_PATH for absolute paths in the env-fresh target makes the commands more explicit and safer.

@gocanto gocanto merged commit 7cb5bec into main Jul 23, 2025
1 check passed
@gocanto gocanto deleted the hotfix/eslint-fixes branch July 23, 2025 03:21
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