Skip to content

feat: Add Biome linting, upgrade to Node 20, and add CI workflows#3

Merged
scottlovegrove merged 1 commit intomainfrom
feat/biome-linting-node20-ci
Jan 22, 2026
Merged

feat: Add Biome linting, upgrade to Node 20, and add CI workflows#3
scottlovegrove merged 1 commit intomainfrom
feat/biome-linting-node20-ci

Conversation

@scottlovegrove
Copy link
Copy Markdown
Collaborator

Summary

This PR modernizes the codebase with comprehensive linting, formatting, and CI/CD improvements. It adds Biome linting (matching todoist-ai configuration), upgrades to Node 20, and establishes robust CI pipelines for code quality assurance.

Key Changes

🎯 Biome Linting Setup

  • Add @biomejs/biome 2.3.9 with exact todoist-ai configuration
  • 4-space indentation migration for all TypeScript/JavaScript/JSON files
  • Hybrid approach: Biome for code files, Prettier for markdown/YAML/CSS
  • Unified format scripts: npm run format handles both tools seamlessly

🚀 Node.js Upgrade

  • Upgrade from Node 18 to Node 20
  • Update package.json engines and add .nvmrc
  • All workflows now use Node 20 consistently

Type Safety Improvements

  • Eliminate all any usage (100% type-safe codebase)
  • Replace non-null assertions with safe undefined checks
  • Add Node.js import protocol prefixes (node: imports)
  • Fix TypeScript compilation issues
  • Remove unused imports and variables

🛠 Git Hooks & Automation

  • Update lefthook configuration for file-specific linting
  • Biome handles *.{ts,js,json} files in pre-commit
  • Prettier handles *.{md,yml,yaml,css} files in pre-commit
  • Auto-stage fixed files for seamless developer experience

🤖 CI/CD Pipeline

  • Separate workflows for better organization:
    • lint.yml - Type checking, linting, and formatting validation
    • test.yml - Build verification and test execution
  • Both workflows trigger on pushes to main and pull requests
  • npm cache enabled for faster CI builds
  • 10-minute timeouts for efficient resource usage

Code Quality Metrics

Before vs After

  • Linting Issues: Multiple → 0 (100% resolution)
  • Type Safety: Multiple any usage → 0 any usage
  • Test Coverage: 84 tests passing (maintained)
  • Build Time: Optimized with npm cache

Verification

  • ✅ All 84 tests pass
  • ✅ TypeScript compilation successful
  • ✅ Zero linting errors or warnings
  • ✅ Perfect formatting compliance
  • ✅ CLI functionality verified

Migration Details

Breaking Changes

  • 4-space indentation: Large diff due to formatting migration
  • Stricter linting: New rules may catch previously undetected issues

Developer Experience

  • Unified commands: npm run format handles everything
  • Clear separation: Biome for code quality, Prettier for documentation
  • Fast feedback: Separate CI jobs provide granular status reporting
  • Modern standards: Follows current best practices for TypeScript projects

Testing

All functionality verified:

  • Build process works correctly
  • All existing tests continue to pass
  • CLI commands function as expected
  • Git hooks operate smoothly
  • CI workflows execute successfully

🤖 Generated with Claude Code

- Add @biomejs/biome 2.3.9 with 4-space indentation for all files
- Upgrade from Node 18 to Node 20 (.nvmrc and package.json engines)
- Hybrid approach: Biome for code/JSON, Prettier for markdown/YAML/CSS
- Add separate lint.yml and test.yml CI workflows
- Update lefthook for file-specific linting (biome + prettier)
- Fix Node.js import protocols, eliminate unused imports/variables
- Achieve 100% type safety (zero any usage)
- Update format scripts for unified Biome/Prettier workflow

Co-Authored-By: Claude Sonnet 4 <[email protected]>
@scottlovegrove scottlovegrove self-assigned this Jan 22, 2026
@scottlovegrove scottlovegrove requested a review from gnapse January 22, 2026 15:43
@scottlovegrove scottlovegrove added the 👀 Show PR PR must be reviewed before or after merging label Jan 22, 2026
@scottlovegrove scottlovegrove merged commit 57f802e into main Jan 22, 2026
2 checks passed
@scottlovegrove scottlovegrove deleted the feat/biome-linting-node20-ci branch January 22, 2026 15:43
github-actions Bot pushed a commit that referenced this pull request Jan 22, 2026
# 1.0.0 (2026-01-22)

### Bug Fixes

* add UTF-8 charset to OAuth callback HTML responses ([#8](#8)) ([fcb2d49](fcb2d49))

### Features

* Add Biome linting, upgrade to Node 20, and add CI workflows ([#3](#3)) ([57f802e](57f802e))
* add loading animations with global API proxy integration ([#7](#7)) ([bf53bfb](bf53bfb))
* Add OAuth authentication with dynamic client registration ([#6](#6)) ([2845ebd](2845ebd)), closes [#5](#5)
* add semantic release automation for NPM publishing ([#10](#10)) ([c756324](c756324))
* Refactor login command to auth with status/logout subcommands ([#4](#4)) ([59e6493](59e6493))
@github-actions
Copy link
Copy Markdown

🎉 This PR is included in version 1.0.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

Copy link
Copy Markdown
Collaborator

@gnapse gnapse left a comment

Choose a reason for hiding this comment

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

released 👀 Show PR PR must be reviewed before or after merging

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants