chore(ci): auto-submit altacv to Typst Universe on release#6
Merged
Conversation
added 3 commits
June 11, 2026 19:51
Append a `submit-to-typst-universe` job that fires whenever release-please cuts a new tag (gated on `release-please.outputs.release_created == 'true'`, downstream of `attach-release-artifacts` so the tarball exists). It opens a PR on typst/packages from a maintainer-owned fork (smur89/packages), branched off the current upstream main so the diff is exactly the new `packages/preview/altacv/<version>/` directory. The job is idempotent — a re-run for an already-submitted version detects the existing open PR and exits cleanly. The PR body mirrors the manual submission template (metadata + submission checklist). Prerequisites — documented in the workflow comment block — are a fork of typst/packages owned by the same account, plus a fine-grained PAT (TYPST_UNIVERSE_TOKEN secret) scoped to the fork with contents + pull-requests write.
The `--search "altacv:${VERSION} in:title is:open"` form treats
`altacv:` as a GitHub-search filter qualifier (not a title
substring), returning zero results and breaking the intended
skip-on-existing-PR behaviour. Replaced with `--head <fork>:altacv-${VERSION}`
which matches PRs by branch name — one branch per version, reliable.
Also dropped the job's `contents: read` permission. The submission
job writes only to external repos (smur89/packages + typst/packages)
via the TYPST_UNIVERSE_TOKEN secret; it never reads the workflow
repo, so `permissions: {}` documents that.
The inline heredoc body inside the workflow's `gh pr create` step was long and tangled bash-escaping (backticks in markdown vs command substitution) with markdown structure. Moved to `.github/typst-universe-pr-body.md` and substituted at submission time via `envsubst` restricted to the three expected variables — incidental $-references in the body cannot accidentally expand. The job now sparse-checks-out only that single file, so we don't pull lib.typ + icons we don't need. The PR body itself is now editable in any markdown tool, with no shell-escape gotchas.
smur89
added a commit
that referenced
this pull request
Jun 11, 2026
The [Typst Universe automated check](typst/packages#5037) on altacv 0.3.0 raised two errors and two warnings. This PR addresses all four; once merged, release-please cuts a 0.3.1 patch with the corrected manifest + README. ## Errors - **`README.md:62`** — `examples/example.typ` and `tests/` are referenced via relative links, but those directories are intentionally excluded from the package bundle (only `typst.toml`, `lib.typ`, `icons/`, `LICENSE`, `README.md` ship). The dangling links failed the bundle integrity check. Replaced with a textual mention plus one link to the source repository. ## Warnings - **`typst.toml:7`** — `description` started with "Typst CV template …"; the [manifest guidelines](https://github.com/typst/packages/blob/main/docs/manifest.md#writing-a-good-description) say the field should generally not contain the word `Typst` (every Universe package is Typst by definition). - **`README.md:9`** — hero image's alt text was just `Preview`. Replaced with a descriptive sentence covering layout and section content for accessibility. ## Follow-up After merge, release-please will open a release PR proposing `0.3.1`. Merging that cuts the tag + release. Submission of `altacv:0.3.1` to typst/packages will: - happen **automatically** if PR #6 (the auto-submit workflow) is already merged, or - be done **manually** via the same flow we used for 0.3.0. We should also **close [typst/packages#5037](typst/packages#5037 once 0.3.1 is submitted — the 0.3.0 directory in that PR has the unfixed README/manifest and cannot be patched in place without inconsistency with the released tarball. Co-authored-by: Shane Murphy <shane@swissborg.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a
submit-to-typst-universejob to.github/workflows/build.ymlthat runs after each release-please tag is cut. It opens a PR on typst/packages submittingaltacv:<version>to Typst Universe — replacing the manual fork-and-PR ritual we just did by hand for 0.3.0.How it works
release-please.outputs.release_created == 'true', downstream ofattach-release-artifactsso the tarball is guaranteed to exist on the release before the submission runs.altacv:<version>), the job exits cleanly. A re-run from the Actions UI won't double-submit.upstream/main(not the fork's main), so the cross-repo diff is just the newpackages/preview/altacv/<version>/directory — no stale fork commits leaking in.One-time setup before this can run
smur89/packages(already done for the 0.3.0 manual submission).smur89/packageswith Contents: read+write and Pull requests: read+write.TYPST_UNIVERSE_TOKENhere onsmur89/alta-typst.These prerequisites are also documented as a comment block above the new job for future reference.
Edge cases not covered
Test plan
TYPST_UNIVERSE_TOKENis added as a secret, the next release of altacv automatically opens a PR on typst/packages.altacv:0.3.0).