Skip to main content
All workflows live in .github/workflows/.

Workflows

ci-main.yml — Full validation

Runs on push to main, weekly schedule (Sundays at midnight), manual dispatch, and when called from other workflows.Primary Python version: 3.12.
JobDescription
format-checkruff format --check
lint-checkruff check
type-checkty check
startup-smokenotewise version — ensures the package imports cleanly
unit-testspytest with --cov-fail-under=90; uploads coverage to Codecov
matrix-testspytest on Ubuntu / Windows / macOS × Python 3.10 / 3.11 / 3.12
Runs on every pull request to main. Calls ci-main.yml as a reusable workflow. All jobs must pass before merge.
Builds and pushes the Docker image to ghcr.io/whoisjayd/notewise on every push to main and on version tags.
Triggered when a tag matching v* is pushed. Builds the wheel and sdist, then publishes to PyPI using Trusted Publishing (no API key stored in secrets).
WorkflowDescription
issue-form-labels.ymlAuto-labels issues based on form template
labeler.ymlAuto-labels PRs based on changed files
labelsyncer.ymlKeeps GitHub label definitions in sync
stale.ymlMarks and closes stale issues/PRs
dependabot.ymlAutomated dependency updates

Quality gates

Every PR must pass all of these before merge:
1

ruff format --check

No unformatted code.
2

ruff check

No lint errors.
3

ty check

No type errors.
4

Startup smoke

notewise version — package imports without error.
5

pytest --cov-fail-under=90

Coverage ≥ 90% on the unit test suite.
6

Matrix tests

All supported OS / Python version combinations.

Release process

1

Bump the version

Update __version__ in src/notewise/__init__.py and version in pyproject.toml.
2

Merge to main

Open a PR with the version bump and merge after CI passes.
3

Tag the release

git tag v0.X.Y && git push origin v0.X.Y
4

Automated publish

release.yml builds and publishes to PyPI. ghcr.yml builds and pushes a new Docker image. Both run automatically.

Running CI locally

make ci         # full CI pipeline

make quality    # format-check + lint + type-check + security + deps
make test       # full test suite with coverage