diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..cb3b76c8 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,57 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + test: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ['3.11', '3.12'] + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + + - name: Install uv + uses: astral-sh/setup-uv@v4 + with: + version: "latest" + + - name: Install dependencies + working-directory: auto-claude + run: | + uv venv + uv pip install -r requirements.txt + uv pip install -r ../tests/requirements-test.txt + + - name: Run tests + working-directory: auto-claude + run: | + source .venv/bin/activate + pytest ../tests/ -v --tb=short -x + + - name: Run tests with coverage + if: matrix.python-version == '3.12' + working-directory: auto-claude + run: | + source .venv/bin/activate + pytest ../tests/ -v --cov=. --cov-report=xml --cov-report=term-missing + + - name: Upload coverage reports + if: matrix.python-version == '3.12' + uses: codecov/codecov-action@v4 + with: + file: ./auto-claude/coverage.xml + fail_ci_if_error: false + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 00000000..7b469741 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,58 @@ +name: Lint + +on: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + ruff: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - name: Install ruff + run: pip install ruff + + - name: Run ruff check + run: ruff check auto-claude/ --output-format=github + + - name: Run ruff format check + run: ruff format auto-claude/ --check --diff + + type-check: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - name: Install uv + uses: astral-sh/setup-uv@v4 + with: + version: "latest" + + - name: Install dependencies + working-directory: auto-claude + run: | + uv venv + uv pip install -r requirements.txt + uv pip install -r ../tests/requirements-test.txt + uv pip install types-requests + + - name: Run mypy + working-directory: auto-claude + run: | + source .venv/bin/activate + mypy . --ignore-missing-imports --no-error-summary || true diff --git a/.github/workflows/test-on-tag.yml b/.github/workflows/test-on-tag.yml new file mode 100644 index 00000000..2805cbf4 --- /dev/null +++ b/.github/workflows/test-on-tag.yml @@ -0,0 +1,40 @@ +name: Test on Tag + +on: + push: + tags: + - 'v*' + +jobs: + test: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ['3.11', '3.12'] + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + + - name: Install uv + uses: astral-sh/setup-uv@v4 + with: + version: "latest" + + - name: Install dependencies + working-directory: auto-claude + run: | + uv venv + uv pip install -r requirements.txt + uv pip install -r ../tests/requirements-test.txt + + - name: Run tests + working-directory: auto-claude + run: | + source .venv/bin/activate + pytest ../tests/ -v --tb=short diff --git a/README.md b/README.md index 1d68bcc7..1894a1c8 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,8 @@ Your AI coding companion. Build features, fix bugs, and ship faster — with aut ![Auto Claude Kanban Board](.github/assets/Auto-Claude-Kanban.png) +[![Discord](https://img.shields.io/badge/Discord-Join%20Community-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/maj9EWmY) + ## What It Does ✨ **Auto Claude is a desktop app that supercharges your AI coding workflow.** Whether you're a vibe coder just getting started or an experienced developer, Auto Claude meets you where you are. diff --git a/ruff.toml b/ruff.toml new file mode 100644 index 00000000..7f3e11f5 --- /dev/null +++ b/ruff.toml @@ -0,0 +1,29 @@ +# Ruff configuration for Auto Claude + +[lint] +# Enable common rule sets +select = [ + "E", # pycodestyle errors + "W", # pycodestyle warnings + "F", # Pyflakes + "I", # isort + "B", # flake8-bugbear + "C4", # flake8-comprehensions + "UP", # pyupgrade +] + +ignore = [ + "E501", # line too long (handled by formatter) + "B008", # function call in default argument + "B905", # zip without strict parameter + "E402", # module level import not at top of file +] + +[lint.per-file-ignores] +"__init__.py" = ["F401"] # unused imports in __init__.py +"tests/*" = ["B011"] # assert false in tests + +[format] +quote-style = "double" +indent-style = "space" +line-ending = "auto"