release-latex-fork
GitHub用于发布知乎定制 LaTeX Fork 的自动化流程,涵盖合并上游代码、保留特定修改、发布 Maven Central 制品并更新下游依赖。
Trigger Scenarios
Install
npx skills add zly2006/zhihu-plus-plus --skill release-latex-fork -g -y
SKILL.md
Frontmatter
{
"name": "release-latex-fork",
"description": "Release the LaTeX fork used by Zhihu++. Use when merging the latest huarangmeng\/latex release into zly2006\/latex, preserving approved fork deltas, publishing Maven Central artifacts, updating Zhihu's vendored third_party\/markdown and direct LaTeX dependencies, and verifying the app."
}
Release LaTeX Fork
Use this skill for the Zhihu-local LaTeX fork release workflow.
Dependency chain
huarangmeng/latex (upstream)
-> zly2006/latex (published fork)
-> Zhihu/third_party/markdown (vendored hard fork)
-> Zhihu app and shared modules
The old standalone zly2006/Markdown Maven release line is retired. Do not clone,
update, or publish a separate Markdown fork. The required order is:
- Publish the LaTeX fork.
- Update every
io.github.zly2006:latex-*dependency in the Zhihu checkout, includingthird_party/markdown. - Build and format Zhihu.
Inputs
Required:
- Fork checkout:
/Users/zhaoliyan/IdeaProjects/latex - Zhihu checkout:
/Users/zhaoliyan/IdeaProjects/Zhihu - Target version on the fork-owned
0.0.1-alphaNrelease line. Always keep0.0.1and increment onlyN, for example0.0.1-alpha1then0.0.1-alpha2; never adopt the upstream version as the published fork version. - The latest upstream version recorded in a comment immediately above
VERSIONingradle.properties, for example:# Upstream huarangmeng/latex version: 1.4.7.
Optional proxy for Sonatype and repo1 access:
https_proxy=http://127.0.0.1:7890http_proxy=http://127.0.0.1:7890
Guardrails
- Publish under
io.github.zly2006, neverio.github.huarangmeng. - Do not delegate passive Maven Central publication waits unless the available subagent interface can explicitly select the user-approved low-cost model and reasoning level. If model selection is unavailable, state that limitation and keep polling in the primary agent; never assume the inherited/default model is cheap. This still applies when the user previously asked to delegate waiting: disclose the unavailable cost control before spawning instead of silently accepting an unknown-cost worker.
Original versionmeans the upstreamhuarangmeng/latextag.Fork versionmeans the0.0.1-alphaNversion published by zly2006.- Never use destructive git commands on a dirty tree.
- Published modules are
latex-base,latex-parser, andlatex-rendereronly. - Preserve these approved fork deltas:
- removal of 21 bundled renderer font files;
- system font fallback in
defaultLatexFontFamilies(); - no bundled OTF loading in
rememberDefaultOtf(); - publishing metadata for
io.github.zly2006; - parser compatibility fixes explicitly requested for Zhihu content, with focused parser/visitor/renderer tests and documentation.
- Do not change vendored Markdown behavior while bumping LaTeX. Dependency lines
are the only expected
third_party/markdownchanges in a routine release.
Workflow
1. Inspect current versions and upstream
cd /Users/zhaoliyan/IdeaProjects/latex
git fetch origin --tags --prune
git fetch me --prune
git tag -l 'release-*' --sort=-v:refname | head -10
cd /Users/zhaoliyan/IdeaProjects/Zhihu
rg -n 'io.github.zly2006:latex-(base|parser|renderer)' \
app shared third_party/markdown
curl -s https://repo1.maven.org/maven2/io/github/zly2006/latex-renderer/maven-metadata.xml
Record the latest upstream tag, current public fork version, and every consumer that needs a bump.
2. Prepare the release branch
Create the release branch from the latest upstream tag. Carry forward only the approved fork commits; skip changes already present upstream.
cd /Users/zhaoliyan/IdeaProjects/latex
git switch -c release-<fork-version> <latest-upstream-tag>
After carrying changes forward, keep this shape in gradle.properties:
# Upstream huarangmeng/latex version: <upstream-version>
VERSION=0.0.1-alpha<N>
Fresh worktrees must copy local.properties from the main LaTeX checkout before
Gradle publication.
3. Verify the fork diff
git diff --name-status <latest-upstream-tag>...HEAD
git diff --stat <latest-upstream-tag>...HEAD
Review every non-font, non-publishing change as an explicit compatibility delta. Reject unrelated feature work or changes copied from another development tree.
4. Test
Run focused parser tests for compatibility changes, then the release gate:
./gradlew --no-daemon :latex-parser:jvmTest --tests '*RelevantTest*'
./gradlew --no-daemon :latex-renderer:jvmTest
For visible renderer changes, also run the appropriate preview or desktop demo.
5. Publish to Maven Central
Publish in dependency order:
export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890
./gradlew --no-daemon --stacktrace :latex-base:publishAndReleaseToMavenCentral
./gradlew --no-daemon --stacktrace :latex-parser:publishAndReleaseToMavenCentral
./gradlew --no-daemon --stacktrace :latex-renderer:publishAndReleaseToMavenCentral
If Gradle fails while stopping maven-central-build-service after upload, query
the Sonatype deployment and treat PUBLISHED or PUBLISHING as authoritative.
Retry transient SSL failures with the proxy; do not re-version a deployment that
already exists.
6. Verify public artifacts
Check metadata for all three root modules and require HTTP 200 for the Android renderer POM:
curl -s https://repo1.maven.org/maven2/io/github/zly2006/latex-base/maven-metadata.xml
curl -s https://repo1.maven.org/maven2/io/github/zly2006/latex-parser/maven-metadata.xml
curl -s https://repo1.maven.org/maven2/io/github/zly2006/latex-renderer/maven-metadata.xml
curl -sI https://repo1.maven.org/maven2/io/github/zly2006/latex-renderer-android/<version>/latex-renderer-android-<version>.pom | head -1
7. Push the LaTeX fork
After the required code review and approval, commit the release, fast-forward the fork master, and push:
git switch master
git merge --ff-only release-<fork-version>
git push me master
8. Update vendored Markdown and Zhihu
In /Users/zhaoliyan/IdeaProjects/Zhihu, update every matching dependency to the
new fork version. The expected current consumers include:
third_party/markdown/markdown-renderer/build.gradle.ktsapp/build.gradle.ktsshared/build.gradle.kts
Re-run rg after editing so no old zly LaTeX version remains. Then follow the
project-required order:
./gradlew assembleLiteDebug
./gradlew ktlintFormat
Review the complete Zhihu diff and wait for approval before committing. Do not publish Markdown artifacts; the vendored modules build as part of Zhihu.
Final report checklist
- Latest upstream tag and Original version recorded
- Fork version follows
0.0.1-alphaNand is new on Maven Central - Diff contains only approved fork deltas
- Focused compatibility tests pass
-
:latex-renderer:jvmTestpasses - All three root modules and renderer Android artifact are public
- LaTeX fork master is pushed to
me - All Zhihu and
third_party/markdownconsumers use the new version -
assembleLiteDebugpasses beforektlintFormat - Zhihu diff is reviewed before commit
Version History
- ff3c14c Current 2026-08-20 10:52


