docs/public-export.md

Public Export

The public clanky repository is an iOS-free export of the internal full checkout. Do not make the existing private repository public directly: private clanky-ios/ source exists in the current branch history and in old remote branches.

One-Time Remote Setup

Keep the full repository private under an internal name, then publish a fresh public repository from a sanitized export:

# In GitHub, keep or rename the current private full repo as the internal source.
gh repo rename clanky-internal --repo Volpestyle/clanky

# Create a fresh public destination for the sanitized tree.
gh repo create Volpestyle/clanky --public --disable-wiki --disable-issues

Export

The internal full checkout publishes the public snapshot automatically from the Public Export workflow on master pushes. The workflow uses a write deploy key stored as PUBLIC_EXPORT_DEPLOY_KEY on Volpestyle/clanky-internal, clones the public repository, refreshes it through scripts/prepare-public-export.sh, and pushes only when the sanitized public tree changes. The workflow exports the checked-out commit; manual runs default to the local master ref.

To run the same export manually:

./scripts/prepare-public-export.sh ../clanky-public
cd ../clanky-public
git remote add origin git@github.com:Volpestyle/clanky.git # first run only
git push origin master

The script exports the tracked source ref, removes private iOS source and internal-only release/export automation, and commits a sanitized snapshot in the public checkout. This avoids publishing old private refs or historical objects while still preserving a clean public snapshot history.

Public Docs

The internal full checkout publishes generated public docs to the shared Volpestyle/docs GitHub Pages host from .github/workflows/docs-pages.yml. The current Pages lane builds clankvox/apps/docs and publishes it under https://volpestyle.github.io/docs/clankvox/.

The docs workflow uses the shared Volpestyle/docs renderer and guard scripts: source imports are limited to public ClankVox Markdown, and the generated static artifact is scanned before it is pushed to the gh-pages branch. The private clanky-ios/ docs app is not published. A future public iOS landing page should be a curated public page rather than an export of private app docs or source.

The private repository needs a DOCS_PUBLISH_KEY secret with write access to Volpestyle/docs.

Release Lane

The internal full checkout keeps .github/workflows/ios-testflight.yml. On pull requests and master pushes that touch clanky-ios/, clanky-contract/, or the workflow itself, it runs the fast mobile package gate:

cd clanky-ios && pnpm --filter @clanky/mobile check

Manual workflow_dispatch runs also execute the production TestFlight lane after the fast gate:

cd clanky-ios/apps/mobile
pnpm dlx eas-cli@latest build --platform ios --profile production --auto-submit --non-interactive --wait

The private repository needs an EXPO_TOKEN secret with permission to run EAS builds for the volpestyle/clanky-mobile Expo project. Apple/App Store Connect credentials remain managed by EAS and the production submit profile in clanky-ios/apps/mobile/eas.json.

gh secret set EXPO_TOKEN --repo Volpestyle/clanky-internal

Audit Before Public Push

Before the first public push, inspect the export:

cd ../clanky-public
git ls-files | rg '(^|/)clanky-ios(/|$)|^\.github/workflows/(docs-pages|ios-testflight|public-export)\.yml$'
git log --all -- clanky-ios .github/workflows/docs-pages.yml .github/workflows/ios-testflight.yml .github/workflows/public-export.yml

Both commands should produce no output. Run any secret scanning you want against the exported repository before pushing it to a public remote.