Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
df0949e
feat: complete Step 3 - configuration validation with rich error mess…
SatanshuMishra Oct 26, 2025
70ec713
build: add commander.js for CLI framework
SatanshuMishra Oct 27, 2025
73fd92a
feat: implement CLI utility modules
SatanshuMishra Oct 27, 2025
627f56b
feat: implement config show command
SatanshuMishra Oct 27, 2025
d7460d4
feat: add init command placeholder
SatanshuMishra Oct 27, 2025
3db60c7
feat: add commit command placeholder
SatanshuMishra Oct 27, 2025
69d6d93
refactor: centralize command exports
SatanshuMishra Oct 27, 2025
422083f
feat: implement Commander.js program setup
SatanshuMishra Oct 27, 2025
f20b4e9
feat: implement CLI entry point with Commander.js
SatanshuMishra Oct 27, 2025
d580cc4
chore: enhance .gitignore with comprehensive exclusions
SatanshuMishra Oct 27, 2025
d4acc05
chore: remove dist/ from git tracking
SatanshuMishra Oct 27, 2025
8837714
chore: add changeset for CLI framework implementation
SatanshuMishra Oct 27, 2025
783d762
build: add dependencies for interactive CLI
SatanshuMishra Oct 27, 2025
6a41237
feat: implement preset system for configuration templates
SatanshuMishra Oct 27, 2025
a0e2eaf
feat: implement Clef animated mascot
SatanshuMishra Oct 27, 2025
6b2e9d6
feat: implement clean interactive prompts
SatanshuMishra Oct 27, 2025
c908b1f
feat: implement configuration file generator
SatanshuMishra Oct 27, 2025
17f5d5d
feat: implement complete init command flow
SatanshuMishra Oct 27, 2025
677a4ad
docs: add changeset for init command feature
SatanshuMishra Oct 27, 2025
ffcbd21
style: format code with prettier
SatanshuMishra Oct 27, 2025
7d89e2e
fix: improve Clef intro animation with Houston-style behavior
SatanshuMishra Oct 27, 2025
0249d6f
style: remove trailing newline from changeset
SatanshuMishra Oct 27, 2025
18f6f5a
feat: implement bright color palette and Astro-style flow
SatanshuMishra Oct 27, 2025
cf1097f
fix: reduce intro animation spacing to match prompt labels
SatanshuMishra Oct 29, 2025
c1221e9
fix: add 3-line padding and align intro text with cat
SatanshuMishra Oct 29, 2025
26a0542
fix: reduce top padding from 3 to 2 lines and side spacing from 3 to …
SatanshuMishra Oct 29, 2025
6a47a10
fix: remove all padding above cat to eliminate excessive whitespace
SatanshuMishra Oct 29, 2025
91084b2
fix: align text with cat's face instead of middle
SatanshuMishra Oct 29, 2025
e1c67b7
fix: adjust catX to account for ASCII art leading spaces
SatanshuMishra Oct 29, 2025
3787283
fix: remove leading spaces from ASCII art to eliminate extra spacing
SatanshuMishra Oct 29, 2025
5ca5ba3
fix: add uniform padding to ASCII frames and correct catWidth
SatanshuMishra Oct 29, 2025
befd289
fix: pad all ASCII frame lines to exactly 8 characters for proper ali…
SatanshuMishra Oct 29, 2025
720e7e0
fix: add extra space to ears line for proper visual alignment
SatanshuMishra Oct 29, 2025
03cc0ac
fix: add leading space to all ASCII frame lines for proper alignment
SatanshuMishra Oct 29, 2025
23cd9bc
fix: adjust catX to 0 to account for leading spaces in ASCII frames
SatanshuMishra Oct 29, 2025
872f876
feat: implement robust frame normalization for terminal compatibility
SatanshuMishra Oct 29, 2025
66c4516
fix: adjust ears line spacing to align with face line
SatanshuMishra Oct 29, 2025
7137218
fix: align feet line with face and body by adding extra leading space
SatanshuMishra Oct 29, 2025
5ddf508
fix: remove extra character from feet lines to match body width
SatanshuMishra Oct 29, 2025
fe5746a
Revert "fix: remove extra character from feet lines to match body width"
SatanshuMishra Oct 29, 2025
7ee1244
fix: align feet line by adding space between legs
SatanshuMishra Oct 29, 2025
c815196
feat: add 1-line top padding and 1-column left padding to cat animation
SatanshuMishra Oct 29, 2025
e518b60
feat: add dialog-style text layout with blue label and pure white text
SatanshuMishra Oct 29, 2025
70e66ed
feat: make all prompt questions pure white for maximum visibility
SatanshuMishra Oct 29, 2025
cb6d6e6
feat: update outro to use dialog-style format with blue label and pur…
SatanshuMishra Oct 29, 2025
4fbe3cc
fix: correct outro label and message positioning to align with cat
SatanshuMishra Oct 29, 2025
1ee4fb9
fix: simplify outro to use console.log instead of absolute positioning
SatanshuMishra Oct 29, 2025
78da06d
fix: position outro text beside cat using absolute positioning
SatanshuMishra Oct 29, 2025
d058873
fix: position outro after processing checklist using relative positio…
SatanshuMishra Oct 29, 2025
48814b8
fix: simplify outro to display cat and text side-by-side using consol…
SatanshuMishra Oct 29, 2025
a8e5d3b
feat: make intro and outro cats display in pure white
SatanshuMishra Oct 29, 2025
99b2eeb
feat: unify all step labels to single light blue color (#77c0f7)
SatanshuMishra Oct 29, 2025
b4dcee0
feat(init): simplify flow and add git integration options
SatanshuMishra Oct 29, 2025
b6706ea
feat(init): improve preset UX and remove Gitmoji option
SatanshuMishra Oct 29, 2025
473e0d2
feat(init): simplify preset options display
SatanshuMishra Nov 1, 2025
19ead2a
feat(config): add editor preference support for commit body
SatanshuMishra Nov 2, 2025
44b8e09
feat(commit): implement editor support for commit body input
SatanshuMishra Nov 2, 2025
6a1651e
refactor(commit): update commit command to use new handler module
SatanshuMishra Nov 2, 2025
5db11a7
chore: update build configuration and scripts
SatanshuMishra Nov 2, 2025
20bb72f
chore: update .gitignore for documentation and testing scripts
SatanshuMishra Nov 2, 2025
67a0f85
feat(commit): add connector lines to files display prompt
SatanshuMishra Nov 2, 2025
1810c86
feat(commit): add connector lines to preview display prompt
SatanshuMishra Nov 2, 2025
aebde91
refactor(commit): revert spacing changes in prompts
SatanshuMishra Nov 2, 2025
fc25486
feat(ui): add Git status colors for file indicators
SatanshuMishra Nov 2, 2025
5d57346
fix(commit): improve staged file detection
SatanshuMishra Nov 2, 2025
475bd2c
feat(commit): clear terminal at command start
SatanshuMishra Nov 2, 2025
90bc3e7
chore: add test:commit:reset script
SatanshuMishra Nov 2, 2025
ec80bed
style(init): improve label text centering
SatanshuMishra Nov 2, 2025
22615f9
fix(ui): increase label width to accommodate longer labels
SatanshuMishra Nov 2, 2025
0836e55
feat(init): add prompt for commit body requirement
SatanshuMishra Nov 2, 2025
16c0a4f
ci: use built-in GITHUB_TOKEN instead of custom PAT
SatanshuMishra Nov 2, 2025
fd74494
config: set changeset access to public
SatanshuMishra Nov 2, 2025
5b707eb
docs: add changesets for recent features and fixes
SatanshuMishra Nov 2, 2025
af5122f
chore: bump version to 0.1.0 and update changelog
SatanshuMishra Nov 2, 2025
a04c117
chore: track CHANGELOG.md in git
SatanshuMishra Nov 2, 2025
3ad5c48
docs: add CHANGELOG.md with v0.1.0 release notes
SatanshuMishra Nov 2, 2025
78edd07
chore: stop tracking user-specific config file
SatanshuMishra Nov 2, 2025
dac039c
Core CLI Implementation with init, config, and commit Commands (#21)
SatanshuMishra Nov 2, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .changeset/add-body-requirement-prompt.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
"@labcatr/labcommitr": minor
---

feat: add body requirement prompt to init command

- New prompt in init flow to set commit body as required or optional
- "Yes" option marked as recommended for better commit practices
- Configuration properly respected in commit prompts
- When body is required, commit prompts show "required" and remove "Skip" option
- Defaults to optional for backward compatibility

12 changes: 12 additions & 0 deletions .changeset/add-commit-editor-support.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
"@labcatr/labcommitr": minor
---

feat: add editor support for commit body input

- Users can now open their preferred editor for writing commit bodies
- Supports both inline and editor input methods
- Automatically detects available editors (VS Code, Vim, Nano, etc.)
- Improved experience for multi-line commit bodies
- Configurable editor preference in configuration files

11 changes: 0 additions & 11 deletions .changeset/config-loading-system.md

This file was deleted.

11 changes: 0 additions & 11 deletions .changeset/config-validation-system.md

This file was deleted.

2 changes: 1 addition & 1 deletion .changeset/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"commit": false,
"fixed": [],
"linked": [],
"access": "restricted",
"access": "public",
"baseBranch": "main",
"updateInternalDependencies": "patch",
"ignore": []
Expand Down
11 changes: 11 additions & 0 deletions .changeset/fix-label-truncation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
"@labcatr/labcommitr": patch
---

fix: prevent label text truncation in prompts

- Increased label width from 6 to 7 characters to accommodate longer labels
- Fixes issue where "subject" label was being truncated to "subjec"
- Applied to both commit and init command prompts for consistency
- All labels now properly display full text with centered alignment

12 changes: 12 additions & 0 deletions .changeset/improve-commit-command-ux.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
"@labcatr/labcommitr": minor
---

feat: enhance commit command user experience

- Terminal automatically clears at command start for maximum available space
- Improved staged file detection with support for renamed and copied files
- Color-coded Git status indicators (A, M, D, R, C) matching Git's default colors
- Connector lines added to files and preview displays for better visual flow
- More accurate file status reporting with copy detection using -C50 flag

4 changes: 2 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ jobs:
commit: "[ci] release"
title: "[ci] release"
env:
# Needs access to push to main
GITHUB_TOKEN: ${{ secrets.VOXEL_GITHUB_TOKEN }}
# Uses built-in GITHUB_TOKEN (automatically available, no secret needed)
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Needs access to publish to npm
NPM_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }}
61 changes: 52 additions & 9 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,19 +24,62 @@ jspm_packages/
# Snowpack dependency directory (https://snowpack.dev/)
web_modules/

# TypeScript cache
# TypeScript build artifacts
*.tsbuildinfo
dist/
build/
out/

# Coverage reports
coverage/
.nyc_output/
*.lcov

# Testing
.test-temp/
test-results/
scripts/

# npm/yarn/pnpm
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
.npm
.yarn

# OS files
.DS_Store
Thumbs.db

# IDE/Editor
.vscode/
.idea/
*.swp
*.swo
*~
.project
.classpath
.settings/

# Temporary files
*.tmp
*.temp
.cache/


### Other
# Remove rust files for now
rust-src/
dist/

### Development
# Development progress tracking (internal use only)
DEVELOPMENT_PROGRESS.md
REQUIREMENTS.md
CONFIG_SCHEMA.md
DEVELOPMENT_GUIDELINES.md
ARCHITECTURE_DECISIONS.md
### Documentation
# Ignore all .md files except README.md, CHANGELOG.md, and .changeset/*.md (local reference only)
*.md
!README.md
!CHANGELOG.md
!.changeset/*.md

### Labcommitr Configuration
# User-specific configuration file (generated by 'lab init')
.labcommitr.config.yaml
.labcommitr.config.yml
67 changes: 67 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# @labcatr/labcommitr

## 0.1.0

### Minor Changes

- feat: add body requirement prompt to init command
- New prompt in init flow to set commit body as required or optional
- "Yes" option marked as recommended for better commit practices
- Configuration properly respected in commit prompts
- When body is required, commit prompts show "required" and remove "Skip" option
- Defaults to optional for backward compatibility

- feat: add editor support for commit body input
- Users can now open their preferred editor for writing commit bodies
- Supports both inline and editor input methods
- Automatically detects available editors (VS Code, Vim, Nano, etc.)
- Improved experience for multi-line commit bodies
- Configurable editor preference in configuration files

- 8837714: feat: add working CLI framework with basic commands
- Tool now provides functional command-line interface with help system
- Both `labcommitr` and `lab` command aliases are now available
- Added `--version` flag to display current tool version
- Added `config show` command to display and debug configuration
- Interactive help system guides users through available commands
- Clear error messages when invalid commands are used
- Foundation ready for init and commit commands in upcoming releases

- 20ab2ee: feat: add intelligent configuration file discovery
- Tool now automatically finds configuration files in project roots
- Prioritizes git repositories and supports monorepo structures
- Provides clear error messages when configuration files have issues
- Improved performance with smart caching for faster subsequent runs
- Works reliably across different project structures and environments

- e041576: feat: add configuration file validation
- Configuration files are now validated for syntax and required fields
- Clear error messages help users fix configuration issues quickly
- Tool prevents common mistakes like missing commit types or invalid IDs
- Improved reliability when loading project-specific configurations
- Validates commit type IDs contain only lowercase letters as required

- feat: enhance commit command user experience
- Terminal automatically clears at command start for maximum available space
- Improved staged file detection with support for renamed and copied files
- Color-coded Git status indicators (A, M, D, R, C) matching Git's default colors
- Connector lines added to files and preview displays for better visual flow
- More accurate file status reporting with copy detection using -C50 flag

- 677a4ad: feat: add interactive init command with Clef mascot
- Introduced Clef, an animated cat mascot for enhanced user experience
- Implemented clean, minimal CLI prompts following modern design patterns
- Added four configuration presets: Conventional Commits, Gitmoji, Angular, and Minimal
- Created interactive setup flow with preset selection, emoji support, and scope configuration
- Integrated animated character that appears at key moments: intro, processing, and outro
- Automatic YAML configuration file generation with validation
- Non-intrusive design with clean labels and compact spacing
- Graceful degradation for terminals without animation support

### Patch Changes

- fix: prevent label text truncation in prompts
- Increased label width from 6 to 7 characters to accommodate longer labels
- Fixes issue where "subject" label was being truncated to "subjec"
- Applied to both commit and init command prompts for consistency
- All labels now properly display full text with centered alignment
1 change: 0 additions & 1 deletion dist/index.d.ts

This file was deleted.

3 changes: 0 additions & 3 deletions dist/index.js

This file was deleted.

1 change: 0 additions & 1 deletion dist/index.js.map

This file was deleted.

12 changes: 9 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@labcatr/labcommitr",
"version": "0.0.1",
"version": "0.1.0",
"description": "Labcommitr is a solution for building standardized git commits, hassle-free!",
"main": "dist/index.js",
"scripts": {
Expand All @@ -9,11 +9,14 @@
"format": "pnpm run format:code",
"format:ci": "pnpm run format:code",
"format:code": "prettier -w \"**/*\" --ignore-unknown --cache",
"version": "changeset version && pnpm install --no-frozen-lockfile && pnpm run format"
"version": "changeset version && pnpm install --no-frozen-lockfile && pnpm run format",
"test:commit:sandbox": "bash scripts/test-commit-sandbox.sh",
"test:commit:reset": "bash scripts/reset-sandbox.sh"
},
"type": "module",
"bin": {
"labcommitr": "./dist/index.js"
"labcommitr": "./dist/index.js",
"lab": "./dist/index.js"
},
"keywords": [
"git",
Expand All @@ -29,12 +32,15 @@
"license": "ISC",
"dependencies": {
"@changesets/cli": "^2.29.7",
"@clack/prompts": "^0.11.0",
"@types/node": "^24.3.3",
"boxen": "^8.0.1",
"commander": "^14.0.2",
"consola": "^3.4.2",
"cosmiconfig": "^9.0.0",
"js-yaml": "^4.1.0",
"magicast": "^0.3.5",
"picocolors": "^1.1.1",
"prettier": "^3.6.2",
"typescript": "^5.9.2",
"ufo": "^1.6.1"
Expand Down
Loading