Skip to content

Publish the snode list and translations to every repo that consumes them - #68

Merged
Bilb merged 4 commits into
mainfrom
feat/publish-to-every-consumer
Oct 6, 2026
Merged

Bilb merged 4 commits into
mainfrom
feat/publish-to-every-consumer

Conversation

@Bilb

@Bilb Bilb commented Oct 5, 2026 •

Copy link
Copy Markdown
Collaborator

After a weekday queue run, every repo that bundles the service node list or the
translations is at most one pull request away from current.

snode-list

  • Fetches the list from the seed nodes itself (a port of dynamic-assets' populate_cache.ts; output checked byte-for-byte against today's file): at least 20 nodes, every field present, sorted by pubkey_ed25519.
  • Commits it onto session-desktop-dynamic-assets/main, then opens or updates update-dynamic-assets on session-desktop moving the dynamic_assets submodule to that commit, and the iOS copy as before.
  • The Discord summary lists each repo's result, with links in <> so Discord shows no preview.

crowdin-sync

After pushing to session-localization, opens or updates update-localization moving the submodule in:

Repo Base Submodule
session-desktop dev ts/localization
session-app main packages/localization/src/localization-src
session-website main lib/app_localization
session-appium main run/localizer/lib
session-playwright main tests/localization/lib

Bumps clone only .gitmodules and move the gitlink; they follow the existing bot-branch rules. Each repo is its own target, and a bump is skipped (and alerted) when the commit it would point at did not publish.

Only the branches we allow

PUBLISHABLE in shared/github.py lists every branch the App may write per repo: bot branches (force-pushed) and the two direct mains (fast-forward only), plus their rehearsal/ forms. Every push is checked against the clone's own origin, a token is minted only for listed repos, and the publishing API session refuses any call the jobs do not make (merge, review, settings, other repos). Tests cover each refusal; the job tests run through the guard.

Before and after merging

Testing

  • python -m unittest discover -s tests -t .: 748 OK; ruff clean.
  • snode-list --dry-run on angus against the live seeds: 1163 nodes, would push dynamic-assets and open the Desktop and iOS pull requests.

Bilb added 3 commits October 5, 2026 12:07
submodules.bump clones only .gitmodules, moves the gitlink with update-index and
publishes it through publish.pull_request, so the same branch rules apply: rebuilt
from the base, not pushed when unchanged, retired when the base is already there.
…ywhere

snode-list now asks the seed nodes itself, as session-desktop-dynamic-assets'
populate_cache.ts did, and publishes the result in one run: a commit onto
dynamic-assets' main, a pull request bumping Desktop's dynamic_assets submodule to
it, and the iOS copy. iOS no longer gets a list up to 13 hours old.

The Discord summary lists each repo's result, its links in <> so Discord shows no
preview.
crowdin-sync now opens an update-localization pull request in session-desktop,
session-app, session-website, session-appium and session-playwright, moving each
one's submodule to the commit it just pushed to session-localization.
PUBLISHABLE in shared/github.py lists each repo's branches the jobs write, as a bot
branch (force-pushed) or a direct one (fast-forward only). Repo.push checks the clone's
own origin against it, ensure_pull and retire_branch check their branch, a token is
minted only for listed repos, and publish_session refuses every API call publishing
does not make, merging and reviewing included.
@Bilb
Bilb merged commit 8bcabdc into main Oct 6, 2026
3 checks passed
@Bilb
Bilb deleted the feat/publish-to-every-consumer branch October 6, 2026 03:53
hamzajazib pushed a commit to hamzajazib/session-desktop that referenced this pull request Oct 6, 2026
session-ops opens the same update-dynamic-assets and update-localization pull requests
right after publishing to each submodule's repo (session-foundation/session-shared-scripts#68), rather than on a
separate daily schedule.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants