Mirror release assets to GitHub releases repo #290

Closed
opened 2026-06-05 13:24:31 +00:00 by steve · 0 comments
Owner

Problem

Release assets publish only to Forgejo. The public distribution repo
github.com/lapis-notes/releases has no mirrored uploads yet.

Goal

Add GitHub Releases publishing alongside existing Forgejo uploads for desktop
and official plugin asset publishers (local scripts + Forgejo CI).

Scope

  • scripts/github-release.mjs GitHub REST uploader
  • scripts/publish-release-assets.mjs dual-destination orchestrator
  • Desktop: release-desktop-local.mjs, release-desktop.yml
  • Plugins: publish-official-plugin-assets.mjs, publish-official-plugin-assets.yml
  • verify-release-assets.mjs, .env.example, spec updates

Non-goals

  • Homebrew tap URL changes (Forgejo remains primary)
  • release.json signed metadata on GitHub
  • Renaming forgejo-assets/ staging directory

Acceptance Criteria

  • Desktop releases upload to Forgejo (v<version>) and GitHub (app-v<version>)
  • Plugin asset batches mirror to lapis-notes/releases with same batch tag
  • Local scripts skip GitHub when GITHUB_RELEASES_TOKEN is unset
  • CI uploads to GitHub when GITHUB_RELEASES_TOKEN secret is configured
  • Script tests cover GitHub uploader and tag mapping helpers
  • Spec documents dual-publish flow and secrets

Implementation Notes

See attached plan: GitHub releases mirroring.

Validation Commands

pnpm test:scripts
pnpm check:all

Follow-up Tasks

Implementation Summary

Added scripts/github-release.mjs and scripts/publish-release-assets.mjs to mirror Forgejo release uploads to github.com/lapis-notes/releases (desktop app-v tags, plugin batch tags unchanged). Wired release-desktop-local.mjs, release-desktop.yml, publish-official-plugin-assets.mjs/.yml, verify-release-assets.mjs, .env.example, and release/plugin-registry specs. Validated with pnpm test:scripts and pnpm check:all.

## Problem Release assets publish only to Forgejo. The public distribution repo `github.com/lapis-notes/releases` has no mirrored uploads yet. ## Goal Add GitHub Releases publishing alongside existing Forgejo uploads for desktop and official plugin asset publishers (local scripts + Forgejo CI). ## Scope - `scripts/github-release.mjs` GitHub REST uploader - `scripts/publish-release-assets.mjs` dual-destination orchestrator - Desktop: `release-desktop-local.mjs`, `release-desktop.yml` - Plugins: `publish-official-plugin-assets.mjs`, `publish-official-plugin-assets.yml` - `verify-release-assets.mjs`, `.env.example`, spec updates ## Non-goals - Homebrew tap URL changes (Forgejo remains primary) - `release.json` signed metadata on GitHub - Renaming `forgejo-assets/` staging directory ## Acceptance Criteria - Desktop releases upload to Forgejo (`v<version>`) and GitHub (`app-v<version>`) - Plugin asset batches mirror to `lapis-notes/releases` with same batch tag - Local scripts skip GitHub when `GITHUB_RELEASES_TOKEN` is unset - CI uploads to GitHub when `GITHUB_RELEASES_TOKEN` secret is configured - Script tests cover GitHub uploader and tag mapping helpers - Spec documents dual-publish flow and secrets ## Implementation Notes See attached plan: GitHub releases mirroring. ## Validation Commands ```sh pnpm test:scripts pnpm check:all ``` ## Related Issues ## Follow-up Tasks ## Implementation Summary Added scripts/github-release.mjs and scripts/publish-release-assets.mjs to mirror Forgejo release uploads to github.com/lapis-notes/releases (desktop app-v<version> tags, plugin batch tags unchanged). Wired release-desktop-local.mjs, release-desktop.yml, publish-official-plugin-assets.mjs/.yml, verify-release-assets.mjs, .env.example, and release/plugin-registry specs. Validated with pnpm test:scripts and pnpm check:all. <!-- backlog:task_id=TASK-RELEASE-001 source_spec=spec/src/80-maintenance/release-management.md -->
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lapis-notes/lapis#290
No description provided.