| author | |
| committer | |
| log | b84975878e595dee72c6be1246a69dc46154a336 |
| tree | 2318142403bf210f4d129f71bd156d372b0340c8 |
| parent | df545058d6e66cccbce7f56c1814f5a922c8a6cb |
| signature | Signed by SSH key SHA256:52mNGHRsVFBDED9IAX5pe+LRWUefqTbxEReunq21QvU |
Assisted-by: claude-opus-5.52 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 | 12 | [(WIP)](https://shale.paperclover.net/snowbound/issues/36), revision |
| 13 | 13 | history, multi-machine live collaboration, and much more. |
| 14 | 14 | |
| 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 | 17 | <!-- Regenerate from the sample notebook (edit it freely in OneNote or Snowbound): |
| 16 | 18 | python3 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 | 234 | partial.write_text(json.dumps(moved, indent=2, sort_keys=True) + '\n') |
| 235 | 235 | os.replace(partial, latest_file) |
| 236 | 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 | 248 | if not args.dry_run: |
| 238 | 249 | print(f'{URL}{folder(version)}/') |
| 239 | 250 |