Skip to content

Comments

Modernization phase 1.4#210

Merged
oberstet merged 27 commits intocrossbario:masterfrom
oberstet:modernization-phase-1.4
Dec 9, 2025
Merged

Modernization phase 1.4#210
oberstet merged 27 commits intocrossbario:masterfrom
oberstet:modernization-phase-1.4

Conversation

@oberstet
Copy link
Contributor

@oberstet oberstet commented Dec 5, 2025

Description

fixes #209


Related Issue(s)

Closes or relates to #209


Checklist

  • I have referenced relevant issue numbers above
  • I have performed a self-review of my code and it follows
    the style guidelines of this project
  • I have added new or used existing tests that prove my fix
    is effective or that my feature works
  • I have added necessary documentation (if appropriate) and
    updated the changelog
  • I have added an AI assistance disclosure file (required!)
    in this PR

- Replace setuptools build backend with hatchling
- Remove [tool.setuptools.*] configuration
- Add [tool.hatch.build.*] configuration
- sdist now includes all git-tracked files by default (fixes crossbario#208)

This fixes the issue where tests/conftest.py and tests/util.py were
missing from the source distribution, which prevented downstream
packagers (Gentoo) from running tests.

Note: This work was completed with AI assistance (Claude Code).
Version 25.12.1 was already published to PyPI with setuptools-based
setup.py. This release (25.12.2) is the first using the hatchling
build backend with pyproject.toml-only configuration.

Note: This work was completed with AI assistance (Claude Code).
Without this, pushing a version tag (e.g., v25.12.2) would not trigger
the main workflow, which means the release workflow (triggered via
workflow_run) would never run for tagged releases.

Flow:
1. Merge PR to master → main.yml runs → release.yml → development release
2. Push version tag → main.yml runs on tag → release.yml → stable release to PyPI

Note: This work was completed with AI assistance (Claude Code).
- Add autobahn_logo_blue.svg to docs/_graphics/ (source)
- Add _build-images just recipe to optimize SVGs using scour
- Update docs recipe to call _build-images before sphinx-build
- Add html_logo to conf.py pointing to optimized logo
- Add docs/_static/img/ to .gitignore (generated files)

The logo is optimized from 2671 bytes to ~573 bytes (21.5% of original)
using scour's SVG optimization options.

Note: This work was completed with AI assistance (Claude Code).
- Update conf.py with additional extensions (sphinx.ext.ifconfig, sphinx.ext.doctest)
- Standardize project metadata and copyright format
- Add docs-spelling just recipe for spell checking

Note: This work was completed with AI assistance (Claude Code).
- Create docs/ai/index.rst to collect AI-related docs in toctree
- Update docs/index.rst to link to ai/index instead of individual files

This organizes AI policy documentation under a dedicated section.

Note: This work was completed with AI assistance (Claude Code).
- Update .ai submodule to include OVERVIEW.md with wamp-xbr section
- Add OVERVIEW.md symlink to project root (via just setup-repo)
- Add docs/OVERVIEW.md symlink for Sphinx documentation
- Add OVERVIEW.md to docs toctree

OVERVIEW.md provides context about the WAMP project ecosystem.

Note: This work was completed with AI assistance (Claude Code).
- Add sync-images recipe to copy logo/favicon from autobahn-python
- Update conf.py with Autobahn Medium Blue (#027eae) brand colors
- Add html_favicon setting for browser tab icon
- Add pygments_dark_style for dark mode code highlighting
- Update docs recipe to depend on sync-images

Part of docs consistency effort across WAMP Python projects.

Note: This work was completed with AI assistance (Claude Code).
- Add docs/autoapi/ and .build/ to .gitignore
- Remove manual api entry from index.rst (autoapi_add_toctree_entry=True)

Note: This work was completed with AI assistance (Claude Code).
- Add private-members and special-members to autoapi_options
- Update page title to "Twisted-asyncio Networking Helper Library"

Note: This work was completed with AI assistance (Claude Code).
- Create symlink to .ai/AI_ACKNOWLEDGEMENT.md
- Reference in docs/ai/index.rst toctree

Note: This work was completed with AI assistance (Claude Code).
Add standard documentation sections:
- installation.rst
- getting-started.rst
- changelog.rst
- contributing.rst

Update index.rst with standardized ToC order:
Overview, Installation, Getting Started, Programming Guide,
Releases, Changelog, Contributing, WAMP Projects, AI Policy

Note: This work was completed with AI assistance (Claude Code).
- Add YAML-formatted SPDX license metadata header to LICENSE
- Add copyright/trademark footer to docs/index.rst
- MIT license year based on first git commit (2015)

Note: This work was completed with AI assistance (Claude Code).
- Add root-level CONTRIBUTING.md with contribution guidelines
- Update docs/contributing.rst to include CONTRIBUTING.md via MyST parser
- Single source of truth for contribution documentation

Note: This work was completed with AI assistance (Claude Code).
Standardize documentation page titles across the WAMP project group:
- Rename 'Overview' page to 'Introduction'
- Rename 'Package Releases' page to 'Release Notes'

Note: This work was completed with AI assistance (Claude Code).
- Migrate changelog content from releases.rst to changelog.rst
- Transform releases.rst into release artifact index with links to:
  - GitHub releases
  - PyPI packages
  - RTD documentation
- Add missing changelog entries for 25.9.1, 25.9.2, 25.12.1
  (reconstructed from git history)
- Add Release Workflow documentation for maintainers
- Add justfile recipes:
  - prepare-changelog: Generate changelog entry from git history
  - draft-release: Check/generate release entry templates
  - prepare-release: Validate release readiness (tests, docs, versions)

Note: This work was completed with AI assistance (Claude Code).
Add RST anchor targets (e.g., `.. _v25.12.1:`) before each version
section heading. This ensures stable, semantic HTML anchor IDs
(e.g., #v25.12.1) instead of auto-generated #id1, #id2, etc.

Anchor naming convention:
- releases.rst: `.. _v<version>:` (e.g., `.. _v25.12.1:`)
- changelog.rst: `.. _changelog-<version>:` (e.g., `.. _changelog-25.12.1:`)

Note: This work was completed with AI assistance (Claude Code).
- Update .cicd submodule to include sphinx_auto_section_anchors extension
- Add extension to docs/conf.py with path to .cicd/scripts
- Remove manual anchor targets from releases.rst and changelog.rst
  (now auto-generated by the extension)
- Keep explicit anchors for non-version sections (release-workflow, etc.)

The extension automatically generates slug-based anchors like crossbario#25-12-1
for version headings, eliminating the need for manual `.. _v25.12.1:`
targets in RST files.

Note: This work was completed with AI assistance (Claude Code).
This ensures the sphinx_auto_section_anchors extension overwrites
auto-generated ids (id1, id2, etc.) with slug-based anchors like
crossbario#25-12-1 instead of #id3.

Note: This work was completed with AI assistance (Claude Code).
The api.rst file was not linked in the toctree. Its content (API
reference documentation) has been merged into the beginning of
programming-guide.rst, providing a single consolidated guide.

Note: This work was completed with AI assistance (Claude Code).
- Add blank lines before subheadings (fixes Sphinx rendering)
- Add Step 4: Disable Git Hooks (if needed)
- Add Step 6: Enable Git Hooks (if previously disabled)
- Renumber remaining steps accordingly

Note: This work was completed with AI assistance (Claude Code).
- Add 6 core badges: PyPI, Python, CI, Docs (RTD), License, Downloads
- Apply consistent badge format to both README.md and docs/index.rst
- Use RTD native badge for documentation status

Note: This work was completed with AI assistance (Claude Code).
Pull in wamp-cicd commit 08c9305 which removes unused variable
in sphinx_auto_section_anchors.py (F841 linting error).

Note: This work was completed with AI assistance (Claude Code).
Set override_image_directive=False in sphinxcontrib-images config
to preserve standard RST image directive :target: option support.

This fixes badge substitutions in docs/index.rst that require the
:target: option for clickable badge links.

Note: This work was completed with AI assistance (Claude Code).
- Add explanatory comment for override_image_directive=False setting
  explaining it's required for RST badge :target: option support
- Update sphinx>=8.2.3 in docs optional dependency (highest version
  compatible with furo's sphinx<9.0 constraint)

Note: This work was completed with AI assistance (Claude Code).
@oberstet oberstet merged commit 9d1cb8a into crossbario:master Dec 9, 2025
7 checks passed
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.

Phase 1.4: Packaging Tool Modernization

1 participant