Skip to content

ci: timestamp-based releases on PR merge#33

Merged
jschloman merged 3 commits intomainfrom
ci/tag-only-releases
Mar 31, 2026
Merged

ci: timestamp-based releases on PR merge#33
jschloman merged 3 commits intomainfrom
ci/tag-only-releases

Conversation

@jschloman
Copy link
Copy Markdown
Owner

@jschloman jschloman commented Mar 31, 2026

Summary

  • Fixes release workflow that has been failing on every PR merge due to branch protection blocking direct pushes to main
  • Switches trigger from push: branches: [main] to pull_request: types: [closed] with merged == true guard
  • Drops python-semantic-release entirely — on each PR merge, the workflow generates a CalVer timestamp tag (vYYYY.MM.DD, with .N suffix if that date was already released) and creates a GitHub release with auto-generated notes
  • Removes the now-unused [tool.semantic_release] config from pyproject.toml

Test plan

  • Merge this PR and verify the Release workflow creates a v2026.03.31 tag + GitHub release
  • Merge a second PR the same day and verify it creates v2026.03.31.1

🤖 Generated with Claude Code

jschloman and others added 3 commits March 30, 2026 21:37
…ract

Replaces the brief "Plugin System" section with a full "Plugin Architecture"
chapter covering the two foundational principles:

1. Data Sovereignty — each SourcePlugin is the sole authority over its own
   data and has no knowledge of other sources or how its output is joined.
   All cross-source logic lives exclusively in DataBroker.

2. Download-then-Display — collection (CLI script, credentials, HTTP) and
   display (SourcePlugin.load(), zero network I/O) are strictly separated.
   load() raises FileNotFoundError if the local file is absent rather than
   falling back to a live fetch.

Also updates the "Adding a plugin" walkthrough to show the download script
step first, corrects config field types (file_path/dir_path replacing path),
documents the ICON attribute, and notes that paths persist to data/config.json.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replaces the push-to-main release strategy with a tag-only approach to
work within branch protection rules. semantic-release now only computes
the next version (--print); the workflow creates and pushes the tag and
GitHub release directly without any commit to main.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Drops python-semantic-release entirely. On every PR merge to main, the
workflow generates a YYYY.MM.DD tag (with .N suffix if the same date
already has a release) and creates a GitHub release with auto-generated
notes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@jschloman jschloman changed the title ci: tag-only releases triggered on PR merge ci: timestamp-based releases on PR merge Mar 31, 2026
@jschloman jschloman merged commit 7f74f14 into main Mar 31, 2026
2 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.

1 participant