Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
ff294fb
docs: add Starlight documentation site design and implementation plan
isaackogan Oct 20, 2026
14a85fa
docs: scaffold the Starlight documentation site
isaackogan Oct 20, 2026
c110b1b
docs: generate API and protobuf schema reference pages
isaackogan Oct 20, 2026
86b7d30
docs: add content coverage and example compilation checks
isaackogan Oct 20, 2026
58a2a92
docs: write Getting Started, Install, and connection lifecycle pages
isaackogan Oct 20, 2026
7d4ec23
docs: correct reconnect and Euler Stream path behaviour on the connec…
isaackogan Oct 20, 2026
bfe99d1
docs: write configuration pages
isaackogan Oct 20, 2026
cd561d8
docs: write the event catalog and grouped event pages
isaackogan Oct 20, 2026
17d0748
docs: add the sixteenth unmapped event to the catalog
isaackogan Oct 20, 2026
5f1478f
docs: write guides
isaackogan Oct 20, 2026
25dd9cc
docs: fix the recorder output path and gift combo lifecycle in the gu…
isaackogan Oct 20, 2026
05718bd
docs: write advanced, troubleshooting, contributing, and hosting pages
isaackogan Oct 20, 2026
8a14ed8
docs: record the pre-created Worker and the scoped CI token in the de…
isaackogan Oct 20, 2026
98e16f2
docs: correct proxy exception, socket thread, and offline disconnect …
isaackogan Oct 20, 2026
fbaabf8
docs: note that the proxy exception surfaces from direct HttpClientBu…
isaackogan Oct 20, 2026
259d2fd
docs: serve a raster social-preview image from the site
isaackogan Oct 20, 2026
6432c15
docs: add the SEO gate for the built site
isaackogan Oct 20, 2026
99e4f73
docs: inset the logo on the social-preview image
isaackogan Oct 20, 2026
b4e198d
docs: guard the scheduled upstream build until upstream carries the docs
isaackogan Oct 20, 2026
26ddce8
docs: attach the custom domain out of band so CI needs only a Worker-…
isaackogan Oct 20, 2026
bf98880
docs: point the README at the hosted documentation
isaackogan Oct 20, 2026
e89cc76
docs: apply the repository license header to the docs tool sources
isaackogan Oct 20, 2026
df81f81
docs: deploy the site to Cloudflare Workers from GitHub Actions
isaackogan Oct 20, 2026
16d83c5
docs: mark the superseded bootstrap paragraph in the design
isaackogan Oct 20, 2026
2f9034d
docs: keep the Cloudflare account id out of the committed plan
isaackogan Oct 20, 2026
4f64eb5
docs: scrub local paths and process notes from the committed design a…
isaackogan Oct 20, 2026
88f09c3
docs: reconcile page wording with the library's thread, exception, an…
isaackogan Oct 20, 2026
fc126f9
docs: make the scheduled probe explicit about secrets and HTTP status…
isaackogan Oct 20, 2026
5f04af4
docs: keep Javadoc generics escaped in listings and render <pre> bloc…
isaackogan Oct 21, 2026
7c3c4d5
docs: require an event section per class and resolve the README's hos…
isaackogan Oct 21, 2026
00c8374
docs: apply the deferred tool minors from the task reviews
isaackogan Oct 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
128 changes: 128 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
name: Documentation

on:
pull_request:
paths:
- 'docs/**'
- 'API/**'
- 'Client/**'
- 'extension-recorder/**'
- 'extension-collector/**'
- 'README.md'
- '.github/workflows/docs.yml'
push:
branches: [master]
paths:
- 'docs/**'
- 'API/**'
- 'Client/**'
- 'extension-recorder/**'
- 'extension-collector/**'
- 'README.md'
- '.github/workflows/docs.yml'
workflow_dispatch:
schedule:
- cron: '17 6 * * *'

permissions:
contents: read

concurrency:
group: docs-${{ github.ref }}
# A newer pull-request push replaces the running check. Master pushes and scheduled runs share the
# refs/heads/master group and queue instead, so neither cancels the other's deploy mid-upload.
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
upstream:
runs-on: ubuntu-latest
env:
# The scheduled build exists only to deploy; a repository without the Cloudflare secrets skips it.
DEPLOY_ENABLED: ${{ secrets.CLOUDFLARE_API_TOKEN != '' }}
outputs:
has_docs: ${{ steps.probe.outputs.has_docs }}
steps:
- name: Check whether upstream carries the documentation
id: probe
env:
GH_TOKEN: ${{ github.token }}
# A scheduled run builds upstream master, which has nothing to build until docs/ is merged there.
# Only a 404 means "no docs"; any other failure to answer is reported, not treated as a skip.
run: |
if [ "$GITHUB_EVENT_NAME" != "schedule" ]; then
echo "has_docs=true" >> "$GITHUB_OUTPUT"
exit 0
fi
if [ "$DEPLOY_ENABLED" != "true" ]; then
echo "::notice::The Cloudflare deploy secrets are absent; skipping the scheduled build, which exists only to deploy."
echo "has_docs=false" >> "$GITHUB_OUTPUT"
exit 0
fi
status=$(curl -sS -o /dev/null -w '%{http_code}' \
-H "Authorization: Bearer $GH_TOKEN" -H "Accept: application/vnd.github+json" \
https://api.github.com/repos/jwdeveloper/TikTokLiveJava/contents/docs/package.json) || status="curl exit $?"
case "$status" in
200)
echo "has_docs=true" >> "$GITHUB_OUTPUT"
;;
404)
echo "::notice::jwdeveloper/TikTokLiveJava has no docs/package.json yet; skipping the scheduled build."
echo "has_docs=false" >> "$GITHUB_OUTPUT"
;;
*)
echo "::error::Could not check jwdeveloper/TikTokLiveJava for docs/package.json: HTTP $status"
exit 1
;;
esac

build:
needs: upstream
if: needs.upstream.outputs.has_docs == 'true'
runs-on: ubuntu-latest
env:
# Deployment runs only where the Cloudflare secrets exist; forks and pull requests skip it.
DEPLOY_ENABLED: ${{ secrets.CLOUDFLARE_API_TOKEN != '' }}
steps:
- name: Check out upstream master
if: github.event_name == 'schedule'
uses: actions/checkout@v4
with:
repository: jwdeveloper/TikTokLiveJava
ref: master
- name: Check out the repository
if: github.event_name != 'schedule'
uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '17'
cache: maven
- name: Build the library
run: mvn -q -pl API,Client,extension-recorder,extension-collector -am -DskipTests package
- uses: actions/setup-node@v4
with:
node-version: '24'
- name: Install pnpm
run: npm install --global pnpm@10.34.2
- name: Install documentation dependencies
run: pnpm --dir docs install --frozen-lockfile
- name: Test the documentation scripts
run: pnpm --dir docs test
- name: Validate and build documentation
run: pnpm --dir docs build
- name: Verify SEO invariants
run: pnpm --dir docs run seo
- name: Upload site for review
uses: actions/upload-artifact@v4
with:
name: documentation
path: docs/dist
- name: Deploy to Cloudflare Workers
if: github.event_name != 'pull_request' && (github.ref == 'refs/heads/master' || github.event_name == 'schedule') && env.DEPLOY_ENABLED == 'true'
uses: cloudflare/wrangler-action@v4
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
workingDirectory: docs
packageManager: pnpm
command: deploy
10 changes: 9 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -246,4 +246,12 @@ $RECYCLE.BIN/

# End of https://www.gitignore.io/api/osx,linux,python,windows,pycharm,visualstudiocode
/python-app-backend/samconfig.toml
/java-app-backend/BackendFunction/dependency-reduced-pom.xml
/java-app-backend/BackendFunction/dependency-reduced-pom.xml

# Starlight documentation site (docs/)
docs/node_modules/
docs/.astro/
docs/dist/
docs/src/content/docs/api/
docs/src/content/docs/schema/
docs/tools/target/
Loading
Loading