Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
198850f
fix: improve version bump commit detection in auto-release workflow
Arakiss Mar 5, 2025
5eee403
ci: enable verbose output in PyPI publish workflow
Arakiss Mar 5, 2025
e22e447
build: bump version to 1.2.3
Arakiss Mar 5, 2025
d17b0b2
build: bump version to 1.2.4 and fix release workflow
Arakiss Mar 5, 2025
02a6163
build: bump version to 1.2.5 and fix release creation
Arakiss Mar 5, 2025
daf94d9
ci: add manual PyPI publish workflow and update version
Arakiss Mar 5, 2025
6f69fbb
build: bump version to 1.2.6 and connect release workflows
Arakiss Mar 5, 2025
037097d
build: bump version to 1.2.7 and fix metrics storage
Arakiss Mar 5, 2025
ce069f9
style: fix line length issues and format cli_handler.py
Arakiss Mar 5, 2025
4765afb
ci: make linting and test coverage requirements more flexible
Arakiss Mar 5, 2025
9da0538
style: fix blank line whitespace issues
Arakiss Mar 5, 2025
1cecfee
fix: correct GitFile parameter types in tests
Arakiss Mar 5, 2025
cc330ab
✨ feat: enhance CLI with model selection and help
Arakiss Mar 5, 2025
cd98107
✨ feat: enhance metrics calculations and logging
Arakiss Mar 5, 2025
e8ac9d3
build: bump version to 1.2.8
Arakiss Mar 5, 2025
a035a3f
docs: update changelog for 1.2.8
Arakiss Mar 5, 2025
2080150
🔖 chore: bump version to 1.2.8
Arakiss Mar 6, 2025
3276d4b
✨ feat: add debug options for commit command
Arakiss Mar 6, 2025
0136801
build: bump version to 1.2.9
Arakiss Mar 6, 2025
d91ab9e
docs: update changelog for 1.2.9
Arakiss Mar 6, 2025
afb356f
bump version to 1.2.10
Arakiss Mar 6, 2025
d0e6f4a
feat(config): set gpt-4.1-mini as default model and add 2025 OpenAI m…
Arakiss Apr 17, 2025
eab9c13
build: bump version to 1.3.0
Arakiss Apr 17, 2025
20e6280
build: bump version to 1.4.0
Arakiss Apr 17, 2025
a91c336
docs: update changelog for 1.4.0
Arakiss Apr 17, 2025
6d82aee
fix(deps): ensure python-dotenv is required and bump to v1.5.0
Arakiss Apr 17, 2025
dca5e6c
fix: support python 3.10+ and clean up dependencies
Arakiss Apr 17, 2025
5cbca00
chore(release): bump version to 1.5.1 for PyPI publication
Arakiss Apr 17, 2025
43290dd
🚀 chore: update publish workflow and debug handling
Arakiss Apr 17, 2025
8cb8633
🔧 fix: enhance API key loading from config file
Arakiss Apr 17, 2025
134bb4b
⚙️ fix: refine command parsing logic in main
Arakiss Apr 17, 2025
cfc2cb7
chore(release): bump version to 1.5.2 everywhere
Arakiss Apr 17, 2025
5afdde3
chore(release): add support for Python 3.13 and bump version to 1.5.3
Arakiss Apr 17, 2025
035fb72
bump version 1.5.3
Arakiss Apr 17, 2025
78c0e76
fix metrics file parsing
Arakiss Jun 10, 2025
b5f33f7
Merge pull request #1 from Arakiss/codex/fix-bug
Arakiss Jun 10, 2025
a67e948
fix: remove debug prints
Arakiss Jun 10, 2025
05c5dfc
Merge pull request #2 from Arakiss/codex/find-more-potential-bugs-to-fix
Arakiss Jun 10, 2025
f61ab81
feat: suggest new branch for large commits
Arakiss Jun 10, 2025
9c8a2f2
Merge pull request #3 from Arakiss/codex/identificar-características-…
Arakiss Jun 10, 2025
1d31abc
build: bump version to 1.5.4
Arakiss Jun 15, 2025
38ca137
docs: update changelog for 1.5.4
Arakiss Jun 15, 2025
ebe2ea6
fix: sync version in __init__.py and improve release script
Arakiss Jun 15, 2025
a058cee
build: republish version 1.5.4 to PyPI
Arakiss Jun 15, 2025
3c608ed
build: trigger release workflow for version 1.5.4
Arakiss Jun 15, 2025
2549922
chore: cleanup trigger file
Arakiss Jun 15, 2025
566bdca
fix: update poetry.lock file
Arakiss Jun 15, 2025
d3a1f6b
fix: add debug option to commit command and improve CLI argument parsing
Arakiss Jun 15, 2025
1f1aa1f
build: bump version to 1.5.5
Arakiss Jun 15, 2025
755f58b
docs: update changelog for 1.5.5
Arakiss Jun 15, 2025
e66d622
✨ feat: polish commit flow and AI service
Arakiss Aug 21, 2025
c0dfec0
test: improve coverage for new features
Arakiss Aug 21, 2025
5b29770
fix: explicit response check in API retries
Arakiss Aug 21, 2025
d85d31a
Merge pull request #4 from Arakiss/1.5.6
Arakiss Aug 21, 2025
6d9eb89
chore: bump version to 1.5.6
Aug 21, 2025
b328c61
chore: bump version to 1.6.0
Aug 21, 2025
1ef9463
fix: critical bug fixes for v1.6.1
Aug 21, 2025
40d615c
fix: resolve duplicate debug logging and bump to v1.6.2
Aug 21, 2025
3d1ebdd
feat: enhance smart grouping dependency handling
Arakiss Sep 17, 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
10 changes: 6 additions & 4 deletions .github/workflows/auto-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ jobs:
run: |
# Check if commit message indicates a version bump
COMMIT_MSG=$(git log -1 --pretty=%B)
if [[ "$COMMIT_MSG" == *"bump version"* ]]; then
if [[ "$COMMIT_MSG" =~ [Bb][Uu][Mm][Pp]\ [Vv][Ee][Rr][Ss][Ii][Oo][Nn] ]]; then
echo "should_release=true" >> $GITHUB_OUTPUT
echo "Version bump detected, should create release"
else
Expand All @@ -66,14 +66,16 @@ jobs:
uses: actions/checkout@v4

- name: Create GitHub Release
uses: softprops/action-gh-release@v1
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: v${{ needs.check-version-bump.outputs.version }}
name: Release v${{ needs.check-version-bump.outputs.version }}
release_name: Release v${{ needs.check-version-bump.outputs.version }}
body: ${{ needs.check-version-bump.outputs.changelog }}
draft: false
prerelease: false
token: ${{ secrets.GITHUB_TOKEN }}

- name: Output Release Status
run: echo "Release for v${{ needs.check-version-bump.outputs.version }} created successfully"
86 changes: 28 additions & 58 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,94 +11,64 @@ jobs:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: "3.11"

- name: Install Poetry
uses: snok/install-poetry@v1
- name: Install uv
uses: astral-sh/setup-uv@v3
with:
version: 1.7.1
virtualenvs-create: true
virtualenvs-in-project: true

- name: Load cached venv
id: cached-poetry-dependencies
uses: actions/cache@v3
with:
path: .venv
key: venv-${{ runner.os }}-3.11-${{ hashFiles('**/poetry.lock') }}
enable-cache: true
cache-dependency-glob: "pyproject.toml"

- name: Install dependencies
if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
run: poetry install --no-interaction --no-root

- name: Install project
run: |
poetry install --no-interaction
poetry run pip install -e .

uv sync --all-extras --dev

- name: Check code formatting
run: |
source .venv/bin/activate
poetry run ruff format .
uv run ruff format --check .

- name: Run linter
run: |
source .venv/bin/activate
poetry run ruff check .
uv run ruff check .

- name: Type check
run: |
source .venv/bin/activate
poetry run mypy commitloom tests
uv run mypy commitloom tests

test:
name: Test
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.11"]
python-version: ["3.10", "3.11", "3.12"]
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Install Poetry
uses: snok/install-poetry@v1
- name: Install uv
uses: astral-sh/setup-uv@v3
with:
version: 1.7.1
virtualenvs-create: true
virtualenvs-in-project: true

- name: Load cached venv
id: cached-poetry-dependencies
uses: actions/cache@v3
with:
path: .venv
key: venv-${{ runner.os }}-${{ matrix.python-version }}-${{ hashFiles('**/poetry.lock') }}
enable-cache: true
cache-dependency-glob: "pyproject.toml"

- name: Install dependencies
if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
run: poetry install --no-interaction --no-root

- name: Install project
run: |
poetry install --no-interaction
poetry run pip install -e .
uv sync --all-extras --dev

- name: Run tests
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
run: |
source .venv/bin/activate
poetry run pytest --cov=commitloom --cov-report=xml
uv run pytest --cov=commitloom --cov-report=xml

- name: Upload coverage to Codecov
uses: codecov/codecov-action@v5
Expand All @@ -110,22 +80,22 @@ jobs:
name: Build Package
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: "3.11"

- name: Install Poetry
uses: snok/install-poetry@v1
- name: Install uv
uses: astral-sh/setup-uv@v3
with:
version: 1.7.1
virtualenvs-create: true
virtualenvs-in-project: true
enable-cache: true
cache-dependency-glob: "pyproject.toml"

- name: Build package
run: poetry build
run: |
uv build

- name: Check dist contents
run: |
Expand Down
75 changes: 75 additions & 0 deletions .github/workflows/manual-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
name: Manual Publish to PyPI

on:
workflow_dispatch:
inputs:
version:
description: 'Version to publish (without v prefix, e.g. 1.2.5)'
required: true
type: string

permissions:
contents: read

jobs:
manual-publish:
runs-on: ubuntu-latest
environment:
name: pypi

steps:
- uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"

- name: Install uv
uses: astral-sh/setup-uv@v3
with:
enable-cache: true

- name: Verify version matches
run: |
VERSION=$(grep -m 1 "^version = " pyproject.toml | sed 's/version = "\(.*\)"/\1/')
echo "Version in pyproject.toml: $VERSION"
echo "Version requested: ${{ github.event.inputs.version }}"
if [ "$VERSION" != "${{ github.event.inputs.version }}" ]; then
echo "::error::Version mismatch! pyproject.toml has $VERSION but requested ${{ github.event.inputs.version }}"
exit 1
fi

- name: Install dependencies
run: uv sync --all-extras --dev

- name: Build package (uv)
run: uv build

- name: Verify distribution files
run: |
echo "Generated distribution files:"
ls -la dist/

- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
password: ${{ secrets.PYPI_TOKEN }}
packages-dir: dist/
verbose: true

- name: Verify publication
run: |
echo "Waiting for PyPI to index the package..."
sleep 30

# Use uv to verify the version is available
uv pip install commitloom==${{ github.event.inputs.version }} --no-deps
INSTALLED_VERSION=$(uv run python -c "import commitloom; print(commitloom.__version__)")

echo "Installed version: $INSTALLED_VERSION"
if [ "$INSTALLED_VERSION" == "${{ github.event.inputs.version }}" ]; then
echo "✅ Publication successful!"
else
echo "⚠️ Publication may have failed or not indexed yet"
fi
68 changes: 62 additions & 6 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,27 +9,76 @@
name: Upload Python Package

on:
release:
types: [published, created]
workflow_run:
workflows: ["Auto Release"]
types:
- completed

permissions:
contents: read

jobs:
check-workflow:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
outputs:
version: ${{ steps.get-version.outputs.version }}
should_publish: ${{ steps.check-release.outputs.should_publish }}

steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ github.event.workflow_run.head_branch }}

- name: Get version from pyproject.toml
id: get-version
run: |
VERSION=$(grep -m 1 "^version = " pyproject.toml | sed 's/version = "\(.*\)"/\1/')
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "Current version: $VERSION"

- name: Check if release should be published
id: check-release
run: |
# Check if most recent commit was a version bump
COMMIT_MSG=$(git log -1 --pretty=%B)
if [[ "$COMMIT_MSG" =~ [Bb][Uu][Mm][Pp]\ [Vv][Ee][Rr][Ss][Ii][Oo][Nn] ]]; then
echo "should_publish=true" >> $GITHUB_OUTPUT
echo "Version bump detected, should publish to PyPI"
else
echo "should_publish=false" >> $GITHUB_OUTPUT
echo "Not a version bump commit, skipping PyPI publishing"
fi

- name: Debug workflow info
run: |
echo "Auto-Release workflow completed successfully"
echo "Version to publish: ${{ steps.get-version.outputs.version }}"
echo "Should publish: ${{ steps.check-release.outputs.should_publish }}"

release-build:
runs-on: ubuntu-latest
needs: check-workflow
if: ${{ needs.check-workflow.outputs.should_publish == 'true' }}

steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.workflow_run.head_branch }}

- uses: actions/setup-python@v5
with:
python-version: "3.x"
python-version: "3.11"

- name: Install uv
uses: astral-sh/setup-uv@v3
with:
enable-cache: true

- name: Build release distributions
run: |
python -m pip install build
python -m build
uv build

- name: Upload distributions
uses: actions/upload-artifact@v4
Expand All @@ -40,7 +89,9 @@ jobs:
pypi-publish:
runs-on: ubuntu-latest
needs:
- check-workflow
- release-build
if: ${{ needs.check-workflow.outputs.should_publish == 'true' }}
environment:
name: pypi

Expand All @@ -55,4 +106,9 @@ jobs:
uses: pypa/gh-action-pypi-publish@release/v1
with:
password: ${{ secrets.PYPI_TOKEN }}
packages-dir: dist/
packages-dir: dist/
verbose: true

- name: Publish success
run: |
echo "✅ Successfully published version ${{ needs.check-workflow.outputs.version }} to PyPI"
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ build/
develop-eggs/
dist/
downloads/
docs/
eggs/
.eggs/
lib/
Expand Down Expand Up @@ -48,6 +49,7 @@ htmlcov/
.coverage.*
.cache
nosetests.xml
CLAUDE.md
coverage.xml
*.cover
*.py,cover
Expand Down
Loading
Loading