authorgravatar for git@paperclover.netclover caruso <git@paperclover.net> 2026-09-30 12:13:41-07:00
committergravatar for git@paperclover.netclover caruso <git@paperclover.net> 2026-09-30 13:01:08-07:00
logb84975878e595dee72c6be1246a69dc46154a336
tree2318142403bf210f4d129f71bd156d372b0340c8
parentdf545058d6e66cccbce7f56c1814f5a922c8a6cb
signature Signed by SSH key SHA256:52mNGHRsVFBDED9IAX5pe+LRWUefqTbxEReunq21QvU

feat(release): stable download names, linked from the readme

Assisted-by: claude-opus-5.5

2 files changed, 13 insertions(+), 0 deletions(-)

readme.md+2
...@@ -12,6 +12,8 @@ pen and drawing tools [(WIP)](https://shale.paperclover.net/snowbound/issues/21)...@@ -12,6 +12,8 @@ pen and drawing tools [(WIP)](https://shale.paperclover.net/snowbound/issues/21)
12[(WIP)](https://shale.paperclover.net/snowbound/issues/36), revision12[(WIP)](https://shale.paperclover.net/snowbound/issues/36), revision
13history, multi-machine live collaboration, and much more.13history, multi-machine live collaboration, and much more.
1414
15**Download**: macOS: [Silicon](https://file.paperclover.net/shr/snowbound/download/Snowbound-macos-aarch64.zip) • Linux: [x86_64](https://file.paperclover.net/shr/snowbound/download/snowbound-linux-x86_64), [aarch64](https://file.paperclover.net/shr/snowbound/download/snowbound-linux-aarch64) • Windows: [x64](https://file.paperclover.net/shr/snowbound/download/snowbound-windows-x86_64.exe), [Arm](https://file.paperclover.net/shr/snowbound/download/snowbound-windows-aarch64.exe) • [OS X](https://file.paperclover.net/shr/snowbound/download/Snowbound-macos-10.6.zip)
16
15<!-- Regenerate from the sample notebook (edit it freely in OneNote or Snowbound):17<!-- Regenerate from the sample notebook (edit it freely in OneNote or Snowbound):
16python3 tools/canvas/build_macos.py --release && d=$(mktemp -d) && cp -R docs/sample-notebook/Personal "$d" && target/Snowbound.app/Contents/MacOS/Snowbound --notebook "$d/Personal" --cache "$d/cache" --settings "$d/settings.json" --screenshot docs/screenshot18python3 tools/canvas/build_macos.py --release && d=$(mktemp -d) && cp -R docs/sample-notebook/Personal "$d" && target/Snowbound.app/Contents/MacOS/Snowbound --notebook "$d/Personal" --cache "$d/cache" --settings "$d/settings.json" --screenshot docs/screenshot
17-->19-->
tools/release.py+11
...@@ -234,6 +234,17 @@ def main():...@@ -234,6 +234,17 @@ def main():
234 partial.write_text(json.dumps(moved, indent=2, sort_keys=True) + '\n')234 partial.write_text(json.dumps(moved, indent=2, sort_keys=True) + '\n')
235 os.replace(partial, latest_file)235 os.replace(partial, latest_file)
236 print(f'{latest_file}: {json.dumps(moved, sort_keys=True)}')236 print(f'{latest_file}: {json.dumps(moved, sort_keys=True)}')
237 # Stable names for the readme's download links, always the newest build of each platform.
238 downloads = published / 'download'
239 downloads.mkdir(exist_ok=True)
240 for platform, newest_name in moved.items():
241 if newest_name != name(version):
242 continue
243 file = build['archives'][platform]['file']
244 stable = downloads / file.replace(f'-{name(version)}', '')
245 partial = stable.with_name(f'.{stable.name}.partial')
246 shutil.copy(target / file, partial)
247 os.replace(partial, stable)
237 if not args.dry_run:248 if not args.dry_run:
238 print(f'{URL}{folder(version)}/')249 print(f'{URL}{folder(version)}/')
239250