Skip to content

fix(commitlint): align subject-case with conventional-commits standard - #187

Merged
0xKT merged 1 commit into
mainfrom
fix/commitlint_subject_case_standard
Jul 22, 2026
Merged

0xKT merged 1 commit into
mainfrom
fix/commitlint_subject_case_standard

Conversation

@0xKT

@0xKT 0xKT commented Jul 22, 2026

Copy link
Copy Markdown
Member

Change description

The bespoke subject-case: [2, "always", ["lower-case"]] rule forced
all-lowercase subjects and rejected proper nouns (EverOS, HTTP), so a PR title
like "... with EverOS HTTP backend" passed the pre-merge PR-title check but
failed commit-lint on the squash commit after merge.

This switches subject-case to the standard @commitlint/config-conventional
value (forbid Title Case / ALL CAPS / Sentence case; allow lowercase subjects
with proper nouns), plus one matching example in AGENTS.md. It intentionally does
NOT extends config-conventional, to avoid newly enforcing body/footer
line-length rules on the squash body (= PR description).

Verified locally: proper-noun titles pass, Title Case / Sentence case / ALL CAPS
still rejected, style: still rejected (type-enum unchanged), long body lines
unaffected.

Type of change

  • Bug fix
  • New feature
  • Document
  • Others

Related issues (if there is)

Closes #186

Checklists

Development

  • Lint rules pass locally
  • Application changes have been tested thoroughly
  • Automated tests covering modified code pass

Security

  • Security impact of change has been considered
  • Code follows security best practices and guidelines

Code review

  • Pull request has a descriptive title and context useful to a reviewer. Screenshots or screencasts are attached as necessary

The bespoke subject-case rule forced all-lowercase subjects and rejected
proper nouns (EverOS, HTTP), so a PR title like "... with EverOS HTTP
backend" passed the PR-title check but failed commit-lint on the squash
commit after merge. Switch to the standard config-conventional value,
which forbids Title Case / ALL CAPS / Sentence case but allows lowercase
subjects with mid-sentence proper nouns.

Co-authored-by: Claude (claude-opus-4-8) <noreply@anthropic.com>
@0xKT
0xKT requested a review from alwaysday1 July 22, 2026 14:30
@0xKT
0xKT merged commit 093f063 into main Jul 22, 2026
8 checks passed
@0xKT
0xKT deleted the fix/commitlint_subject_case_standard branch July 22, 2026 14:30
@0xKT 0xKT mentioned this pull request Jul 22, 2026
3 tasks done
0xKT added a commit that referenced this pull request Jul 22, 2026
## Summary

Bump version from 0.1.7 to 0.1.8. Release commit only touches
`pyproject.toml` and `uv.lock` (kept in sync via `uv lock`).

Changes bundled into this release since v0.1.7:

- feat(importer): cold-start import from other AI tools with EverOS HTTP
backend (#170)
- fix(build): pin locked dependency versions in installers (#185)
- fix(cli): stop blank api key exiting deep_research prompt (#184)
- fix: use redirect-free install.ps1 url on windows powershell 5.1
(#182)
- fix(tui): brighten selection highlight for readability (#175)
- fix(commitlint): align subject-case with conventional-commits standard
(#187)

## Type

- [x] Other

## Verification

- [x] Relevant lint / type checks pass locally

```
python3 scripts/check_commit_messages.py origin/main..HEAD  # exit 0
git diff --stat  # pyproject.toml + uv.lock, 1 line each
```

## Risk

- [x] Backward compatibility considered

Version bump only; no source changes.

## Related Issues

N/A

Co-authored-by: Claude (claude-opus-4-8) <noreply@anthropic.com>
0xKT added a commit that referenced this pull request Jul 23, 2026
## Change description

Follow-up to #187 (which fixed the subject-case dimension). The length
dimension
had the same "passes the PR, fails after merge" flaw:
`scripts/commit_lint.py`
capped the subject at 72 (commits) / 90 (PR titles) while commitlint
capped the
whole header at 100, so a PR title with a 73-90 char subject passed the
pre-merge
PR-title check but failed commit-lint on the squash commit after merge.

This makes commitlint `header-max-length` (100) the single length
authority (the
config-conventional standard) and removes the bespoke Python 72/90 caps.
CI now
validates the PR title as the prospective squash header `<title> (#NN)`
(in the
commit-messages job, which already has Node), so a title that passes
cannot fail
after merge; the `edited` trigger re-checks title edits. Deliberately
NOT
`extends @commitlint/config-conventional`, to avoid pulling in
body/footer
line-length rules.

Verified locally: proper-noun titles pass, a 79-char subject (header
102) is now
rejected at PR stage, header exactly 100 passes and 101 fails, Title
Case still
rejected, `tests/test_commit_lint.py` green.

## Type of change
- [x] Bug fix
- [ ] New feature
- [ ] Document
- [ ] Others

## Related issues (if there is)

Closes #195

## Checklists

### Development

- [x] Lint rules pass locally
- [x] Application changes have been tested thoroughly
- [x] Automated tests covering modified code pass

### Security

- [x] Security impact of change has been considered
- [x] Code follows security best practices and guidelines

### Code review

- [x] Pull request has a descriptive title and context useful to a
reviewer. Screenshots or screencasts are attached as necessary

Co-authored-by: Claude (claude-opus-4-8) <noreply@anthropic.com>
KevinHuSh pushed a commit to KevinHuSh/Raven that referenced this pull request Sep 14, 2026
EverMind-AI#187)

## Change description

The bespoke `subject-case: [2, "always", ["lower-case"]]` rule forced
all-lowercase subjects and rejected proper nouns (EverOS, HTTP), so a PR
title
like "... with EverOS HTTP backend" passed the pre-merge PR-title check
but
failed commit-lint on the squash commit after merge.

This switches `subject-case` to the standard
`@commitlint/config-conventional`
value (forbid Title Case / ALL CAPS / Sentence case; allow lowercase
subjects
with proper nouns), plus one matching example in AGENTS.md. It
intentionally does
NOT `extends` config-conventional, to avoid newly enforcing body/footer
line-length rules on the squash body (= PR description).

Verified locally: proper-noun titles pass, Title Case / Sentence case /
ALL CAPS
still rejected, `style:` still rejected (type-enum unchanged), long body
lines
unaffected.

## Type of change
- [x] Bug fix
- [ ] New feature
- [ ] Document
- [ ] Others

## Related issues (if there is)

Closes EverMind-AI#186

## Checklists

### Development

- [x] Lint rules pass locally
- [x] Application changes have been tested thoroughly
- [ ] Automated tests covering modified code pass

### Security

- [x] Security impact of change has been considered
- [x] Code follows security best practices and guidelines

### Code review

- [x] Pull request has a descriptive title and context useful to a
reviewer. Screenshots or screencasts are attached as necessary

Co-authored-by: Claude (claude-opus-4-8) <noreply@anthropic.com>
KevinHuSh pushed a commit to KevinHuSh/Raven that referenced this pull request Sep 14, 2026
## Summary

Bump version from 0.1.7 to 0.1.8. Release commit only touches
`pyproject.toml` and `uv.lock` (kept in sync via `uv lock`).

Changes bundled into this release since v0.1.7:

- feat(importer): cold-start import from other AI tools with EverOS HTTP
backend (EverMind-AI#170)
- fix(build): pin locked dependency versions in installers (EverMind-AI#185)
- fix(cli): stop blank api key exiting deep_research prompt (EverMind-AI#184)
- fix: use redirect-free install.ps1 url on windows powershell 5.1
(EverMind-AI#182)
- fix(tui): brighten selection highlight for readability (EverMind-AI#175)
- fix(commitlint): align subject-case with conventional-commits standard
(EverMind-AI#187)

## Type

- [x] Other

## Verification

- [x] Relevant lint / type checks pass locally

```
python3 scripts/check_commit_messages.py origin/main..HEAD  # exit 0
git diff --stat  # pyproject.toml + uv.lock, 1 line each
```

## Risk

- [x] Backward compatibility considered

Version bump only; no source changes.

## Related Issues

N/A

Co-authored-by: Claude (claude-opus-4-8) <noreply@anthropic.com>
KevinHuSh pushed a commit to KevinHuSh/Raven that referenced this pull request Sep 14, 2026
…d-AI#196)

## Change description

Follow-up to EverMind-AI#187 (which fixed the subject-case dimension). The length
dimension
had the same "passes the PR, fails after merge" flaw:
`scripts/commit_lint.py`
capped the subject at 72 (commits) / 90 (PR titles) while commitlint
capped the
whole header at 100, so a PR title with a 73-90 char subject passed the
pre-merge
PR-title check but failed commit-lint on the squash commit after merge.

This makes commitlint `header-max-length` (100) the single length
authority (the
config-conventional standard) and removes the bespoke Python 72/90 caps.
CI now
validates the PR title as the prospective squash header `<title> (#NN)`
(in the
commit-messages job, which already has Node), so a title that passes
cannot fail
after merge; the `edited` trigger re-checks title edits. Deliberately
NOT
`extends @commitlint/config-conventional`, to avoid pulling in
body/footer
line-length rules.

Verified locally: proper-noun titles pass, a 79-char subject (header
102) is now
rejected at PR stage, header exactly 100 passes and 101 fails, Title
Case still
rejected, `tests/test_commit_lint.py` green.

## Type of change
- [x] Bug fix
- [ ] New feature
- [ ] Document
- [ ] Others

## Related issues (if there is)

Closes EverMind-AI#195

## Checklists

### Development

- [x] Lint rules pass locally
- [x] Application changes have been tested thoroughly
- [x] Automated tests covering modified code pass

### Security

- [x] Security impact of change has been considered
- [x] Code follows security best practices and guidelines

### Code review

- [x] Pull request has a descriptive title and context useful to a
reviewer. Screenshots or screencasts are attached as necessary

Co-authored-by: Claude (claude-opus-4-8) <noreply@anthropic.com>
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.

commit-lint: bespoke subject-case rejects proper nouns, fails after squash merge

2 participants