Skip to content

Latest commit

 

History

History
262 lines (140 loc) · 14 KB

File metadata and controls

262 lines (140 loc) · 14 KB

Changelog

To install the unreleased g version, see developmental releases.

pip:

$ pip install --user --upgrade --pre g

pipx:

$ pipx install --suffix=@next 'g' --pip-args '\--pre' --force
// Usage: g@next --help

uv:

$ uv add g --prerelease allow

uvx:

$ uvx --from 'g' --prerelease allow g

g 0.0.10 (unreleased)

Notes on upcoming releases will be added here

g 0.0.10 turns g's documentation into a usable CLI reference and moves the docs site onto the shared gp-libs documentation platform. The CLI now answers its own version flags, the {doc}cli/index page documents how arguments pass through to the detected VCS, and the site picks up the newer gp-sphinx rendering stack used across the gp-libs family.

What's new

g --version / g -V report g's version (#46)

g --version and g -V now print g's installed version instead of forwarding those flags to git, svn, or hg. This gives users a direct way to confirm which wrapper version is on PATH while keeping the normal proxy behavior unchanged for VCS commands.

The implementation preserves the existing {func}g.run test hook: in test mode the version path returns cleanly instead of exiting through argparse, so the behavior can be asserted without special subprocess handling.

First-party CLI reference page (#46)

The new {doc}cli/index page explains g's repository detection flow, shows command equivalence examples, and renders {func}g.create_parser through the argparse documentation extension. Argument sections now have stable anchors, so users can link directly to the version flags or pass-through argument reference.

The CLI docs also clarify the one exception to g's pass-through model: --version and -V are handled by g itself, while the remaining arguments are sent to the detected VCS command.

Documentation frontend refresh (#50, #51)

The documentation homepage now presents g as a tiny VCS proxy first, with direct paths into {doc}quickstart, {doc}cli/index, and contributor documentation. The site also moved to clean dirhtml URLs, a just-based docs build, and a project section for contributing, code style, and release notes.

The frontend gained self-hosted IBM Plex fonts, fallback metrics to avoid text reflow, stable image and badge dimensions, SPA-like internal navigation, and View Transitions API crossfades where the browser supports them. These changes make the docs feel faster and steadier without changing g's runtime package surface.

Shared gp-sphinx documentation stack (#52, #53, #54, #55)

g now consumes the published gp-sphinx package set instead of carrying repo-local Sphinx extensions, templates, custom CSS, and JavaScript. The shared stack provides the Furo-derived theme layer, argparse documentation support, font handling, API presentation helpers, and linkcode defaults in one place.

The API page now uses card-style autodoc signatures and badge styling from sphinx-autodoc-api-style; the CLI reference benefits from the argparse domain and duplicate-label fixes; and the later gp-furo-theme / sphinx-vite-builder consolidation moves theme assets into a wheel-backed Vite pipeline. Downstream effect: g stays aligned with the gp-libs docs platform while deleting thousands of lines of local documentation plumbing.

Fixes

  • The CLI documentation cards now use reference links instead of URL-fragment options, avoiding MyST directive parsing warnings in grid cards (#54).
  • The manual CLI "Usage" section was renamed to "Usage examples" so it no longer collides with the argparse-generated usage anchor (#54).
  • Light and dark mode CSS for argparse metadata and header links now handles Furo's automatic theme mode correctly (#46).

Development

  • Root conftest.py remains type-checked while the temporary docs-extension mypy path excludes only the extension-local docs/_ext/conftest.py case that caused duplicate module discovery (#46).
  • The docs dependency pins track gp-sphinx through 0.0.1a17, including the exclude-newer whitelist needed for the git-pull package family during coordinated pre-release work (#55).

g 0.0.9 (2026-01-24)

g 0.0.9 hardens release and documentation publishing. The project no longer relies on long-lived PyPI or AWS secrets for the main publishing paths, and the release job now participates in PyPI's trusted-publishing and attestation flow.

What's new

PyPI Trusted Publisher release flow (#43)

Package publishing moved from stored API credentials to PyPI Trusted Publisher via GitHub Actions OIDC. The release workflow requests id-token and attestation permissions, publishes without embedding a PyPI token in repository secrets, and fixes the deprecated skip_existing input name along the way.

OIDC-backed documentation deployment

Documentation deployment moved to AWS OIDC authentication and the AWS CLI. That keeps the docs pipeline aligned with the same short-lived-credential model used for package publishing.

Development

  • GitHub Actions dependencies were refreshed, including checkout, setup-uv, and AWS credential actions.
  • The docs dependency range pinned Sphinx below 9 while the gp-libs docs stack caught up with upstream changes.

g 0.0.8 (2025-11-01)

g 0.0.8 updates the supported Python window for current runtimes. Python 3.9 support is removed after end of life, and Python 3.14 is added to the classifiers, test matrix, and docs build path.

Breaking changes

Minimum Python is now 3.10 (#41)

Python 3.9 reached end-of-life in October 2025, so g now requires Python 3.10 or newer. The package metadata, Trove classifiers, ruff target version, mypy configuration, test workflow, and lockfile were updated together so the declared support window matches CI.

What's new

Python 3.14 support (#40)

Python 3.14 was added to the package classifiers and CI coverage. The docs workflow and test workflow now exercise the newer interpreter line used by current development environments.

Development

Future annotations across the codebase (#34)

Modules now import from __future__ import annotations, and ruff checks enforce modern Python annotation syntax. This lets type-only names stay cheaper at runtime and keeps the source aligned with Python 3.10+ syntax expectations.

g 0.0.7 (2024-12-20)

g 0.0.7 is a maintenance release for the Python 3.9 support baseline. It drops Python 3.8 after end of life and applies the syntax modernization unlocked by that support change.

Breaking changes

Minimum Python is now 3.9 (#33)

Python 3.8 reached end-of-life on October 7, 2024, so g now requires Python 3.9 or newer. The CI matrix, package metadata, README, and lockfile were updated together.

Development

Python 3.9 syntax modernization (#32)

The ruff target version and mypy python_version now match Python 3.9, and the automated ruff pass converted eligible annotations to the modern built-in collection forms.

g 0.0.6 (2024-11-26)

g 0.0.6 moves project management from Poetry to uv and switches the build backend to Hatchling. The release is a maintenance release, but it changes how contributors install, lock, build, and publish the project.

Breaking changes

Project management moves from Poetry to uv (#30)

uv is now the package and project manager for g. Development setup uses uv sync --all-extras --dev, the lockfile is uv.lock, and the old Poetry lock/config files were removed.

Build backend moves from Poetry to Hatchling (#30)

The package build backend moved from Poetry to Hatchling. This aligns g with the newer gp-libs project layout while keeping the package itself small.

g 0.0.5 (2024-06-08)

g 0.0.5 fixes the main user-facing failure mode outside a repository. Running g in a normal directory now exits cleanly with a diagnostic instead of surfacing an internal assertion.

Fixes

Running outside a VCS directory no longer raises AssertionError (#24)

When no .git, .svn, or .hg marker is found while walking upward from the current directory, g now reports that no VCS was found and returns without trying to spawn a subprocess. The test suite covers the non-repository case directly.

Development

The CLI test fixtures were rewritten into typed NamedTuple records, and the G_IS_TEST environment flag remains the path for asserting subprocess behavior without leaking Popen objects into user output (#24).

g 0.0.4 (2024-03-24)

g 0.0.4 is a maintenance release for linting and formatting. It refreshes the ruff toolchain, adopts the current ruff check command shape, and applies the repository-wide automated fixes from the new rule set.

Development

Ruff command and formatter refresh (#22, #23)

Ruff moved from 0.2.2 to 0.3.x, and CI now uses ruff check . instead of the deprecated ruff . invocation. The source was reformatted through ruff format and cleaned up with the preview/unsafe automated fixes available at the time.

Stronger ruff rule coverage (#21)

The lint configuration expanded to include additional ruff rule families, including flake8-commas, flake8-builtins, and flake8-errmsg compatibility checks. The follow-up cleanup fixed the small source and test issues those rules exposed.

Poetry and CI dependency maintenance

Poetry moved from 1.7.1 to 1.8.1, and the CI helper actions were updated to remove warnings and keep CodeQL on GitHub's default configuration.

g 0.0.3 (2023-12-09)

g 0.0.3 tightens the development harness around the small CLI wrapper. The release moves more configuration into pyproject.toml, strengthens docs and lint expectations, and fixes the visible Popen repr that could appear after running g.

Fixes

g no longer prints a Popen representation after commands (#19)

{func}g.run now returns the subprocess only when G_IS_TEST is set. Normal CLI usage no longer appends output such as <Popen: returncode: 1 args: ['git']> after the delegated VCS command.

Documentation

Docstrings and pydocstyle enforcement (#18)

Ruff now enforces pydocstyle with the NumPy convention, and the public modules, functions, tests, and docs configuration were updated with compliant docstrings. This makes the API documentation and doctest surface less dependent on undocumented behavior.

Development

Pytest and Poetry configuration cleanup (#14)

Pytest configuration moved into pyproject.toml, and Poetry development dependencies moved from extras into proper dependency groups. That layout matches Poetry's current model and keeps test configuration next to the rest of the project metadata.

Ruff replaces the older formatting and lint stack (#11, #17)

Formatting, import sorting, and most linting moved to ruff, including ruff format in place of Black. This removed overlapping tooling while keeping fast local checks for a small CLI package.

CI and packaging maintenance (#8, #13)

The release job was split away from normal CI so the PyPI upload image is not pulled during ordinary test runs, and CodeQL configuration was simplified. Python 3.7 support was removed from package metadata and CI.

g 0.0.2 (2022-09-11)

g 0.0.2 moves the package into a standard src/ layout and adopts the first gp-libs documentation helpers. It is an infrastructure release aimed at making the project easier to package, document, and test consistently.

Documentation

gp-libs Sphinx helpers replace fragile local docs wiring (#6)

The changelog now renders with linkify_issues, and autodoc table-of-contents rendering uses the gp-libs Sphinx helper instead of the previous sphinx-autoapi path. The old sphinx-autoapi setup was intentionally removed because it was only carrying TOC behavior and had accumulated import-related workarounds.

The docs also gained an internal API page backed by sphinx.ext.autodoc, which is now the source for API object rendering in the generated site.

Development

Source layout matches modern Python packaging (#7)

The import package moved under src/g, with CI and docs paths updated to match. This keeps installed-package behavior closer to what tests exercise.

Early lint rule coverage (#4, #5)

The development stack added flake8-bugbear and flake8-comprehensions, giving the small codebase better checks for common Python mistakes and simplification opportunities.

g 0.0.1 (2022-08-17)

g 0.0.1 establishes the first real validation baseline for the project. The release adds strict typing, doctests, pytest configuration, and more reliable CI behavior around dependency caching and docs publishing.

Development

Strict typing and doctest coverage (#2)

The project enabled mypy, moved it to strict mode, and added doctest execution for documentation examples. The first typing pass annotated the package and tests so regressions could be caught by CI.

Faster and narrower CI (#2)

GitHub Actions switched to the newer actions/setup-python Poetry cache support, and docs publishing now runs only when the publish condition is triggered. Pytest also gained explicit test paths so collection avoids local virtualenv directories.

Formatting baseline

The codebase was formatted with Black, development package pins were refreshed, and local version files such as .tool-versions and .python-version were added for reproducible contributor setup.

g 0.0.0 (2022-02-26)

g 0.0.0 is the initial project scaffold. It sets up the CLI package, documentation skeleton, and release infrastructure that later versions refine.

Documentation

The first docs site used Sphinx, the Furo theme, and sphinx-autobuild for local authoring.

Development

Initial CI, Codecov, S3, and CloudFront deployment plumbing landed with the package scaffold.