{
  "version": "2026-10-03-r31",
  "commit": "c1ce2e1cd08f77a471af641678a916085835c7a3",
  "published": "2026-10-03T06:45:49-07:00",
  "changes": [
    {
      "version": "2026-10-02-r61",
      "kind": "fix",
      "title": "Stop Sharing ends a Live Share instead of starting it again"
    },
    {
      "version": "2026-10-02-r62",
      "kind": "fix",
      "title": "Open Shared Notebook sits in the sidebar's footer and beside Open Existing"
    },
    {
      "version": "2026-10-02-r63",
      "kind": "fix",
      "title": "Live Share codes are Crockford base32, like 7KQ-4MZ-9XR, in place of words"
    },
    {
      "version": "2026-10-02-r64",
      "kind": "fix",
      "title": "Back and Forward find pages by identity, and alerts never show raw I/O errors"
    },
    {
      "version": "2026-10-03-r1",
      "kind": "fix",
      "title": "Menu items, commands and buttons drop their trailing ellipses"
    },
    {
      "version": "2026-10-03-r2",
      "kind": "fix",
      "title": "The Themes dialog and its entry points are Customize Font Styles, with the Styles icon"
    },
    {
      "version": "2026-10-03-r3",
      "kind": "fix",
      "title": "Context menus offer only what applies to what was clicked, disabled when it can't"
    },
    {
      "version": "2026-10-03-r4",
      "kind": "fix",
      "title": "The palette offers Create Page \u201cquery\u201d when nothing matches what was typed"
    },
    {
      "version": "2026-10-03-r5",
      "kind": "fix",
      "title": "The palette's commands include every context menu action on what is shown"
    },
    {
      "version": "2026-10-03-r6",
      "kind": "fix",
      "title": "The font size box takes any size typed and tags the default size and font"
    },
    {
      "version": "2026-10-03-r7",
      "kind": "fix",
      "title": "Icons' arrows and page edges take the label's colour, so they read on any row"
    },
    {
      "version": "2026-10-03-r8",
      "kind": "fix",
      "title": "Dialogs place Cancel and their default button as the platform does, the default outlined"
    },
    {
      "version": "2026-10-03-r9",
      "kind": "fix",
      "title": "Enter in the palette never runs another command than the one typed"
    },
    {
      "version": "2026-10-03-r10",
      "kind": "fix",
      "title": "Lock All Sections, Close This Notebook and Notebook Recycle Bin are disabled where they would do nothing"
    },
    {
      "version": "2026-10-03-r11",
      "kind": "fix",
      "title": "Notebook Properties names a notebook without a colour of its own Default"
    },
    {
      "version": "2026-10-03-r12",
      "kind": "fix",
      "title": "Delete confirmations name the section without its file's extension, and alerts say Couldn't"
    },
    {
      "version": "2026-10-03-r13",
      "kind": "fix",
      "title": "Open Shared Notebook wears the command's icon on the welcome screen and in the sidebar"
    },
    {
      "version": "2026-10-03-r14",
      "kind": "fix",
      "title": "Open Existing is Open Notebook, as its command is named"
    },
    {
      "version": "2026-10-03-r15",
      "kind": "feature",
      "title": "The web build loads behind a shell of the app, with a progress bar"
    },
    {
      "version": "2026-10-03-r16",
      "kind": "other",
      "title": "CI prunes its build cache to 40 GB"
    },
    {
      "version": "2026-10-03-r17",
      "kind": "fix",
      "title": "The Styles gallery leaves out the theme's name above its styles"
    },
    {
      "version": "2026-10-03-r18",
      "kind": "fix",
      "title": "The Themes dialog rules off its own themes from the built-in ones, without the note on editing a copy"
    },
    {
      "version": "2026-10-03-r19",
      "kind": "fix",
      "title": "The Themes dialog says what taking a theme away leaves: the section's theme, the notebook's, or the pages as they are"
    },
    {
      "version": "2026-10-03-r20",
      "kind": "fix",
      "title": "Modern sets its text in automatic colour but for the accented headings"
    },
    {
      "version": "2026-10-03-r21",
      "kind": "fix",
      "title": "The browser build starts with screen reader support on, rather than stopping on a tree sent before the first frame"
    },
    {
      "version": "2026-10-03-r22",
      "kind": "feature",
      "title": "A Canvas 2D renderer where a browser has neither WebGPU nor WebGL 2, and Options' Renderer, which switches live"
    },
    {
      "version": "2026-10-03-r23",
      "kind": "feature",
      "title": "The web build deploys to snowbound.paperclover.net, each build's module and JavaScript in a folder named by their contents"
    },
    {
      "version": "2026-10-03-r24",
      "kind": "fix",
      "title": "The web build leaves developer tools, view source and reloading to the browser, and takes only the chords Snowbound binds"
    },
    {
      "version": "2026-10-03-r25",
      "kind": "feature",
      "title": "A peer's name sits on their caret while they type, then fades to a capped caret"
    },
    {
      "version": "2026-10-03-r26",
      "kind": "feature",
      "title": "The host tells its own sections what guests change at once, and tells guests when its own open section publishes, rather than waiting on the watch;"
    },
    {
      "version": "2026-10-03-r26",
      "kind": "feature",
      "title": "A guest's background settles a report for 20 ms, not a second, since its host sends one a commit;"
    },
    {
      "version": "2026-10-03-r26",
      "kind": "feature",
      "title": "The host sends what each commit changed (Delta: the header, patches and appended bytes), and a guest holding the section takes it on without reading the section again; its own commits apply to what it holds too"
    },
    {
      "version": "2026-10-03-r27",
      "kind": "feature",
      "title": "Live Share links: snowbound.paperclover.net/<code> opens the share in Snowbound"
    },
    {
      "version": "2026-10-03-r28",
      "kind": "feature",
      "title": "Live Share reaches its relay through proxies and networks that refuse WebSockets"
    },
    {
      "version": "2026-10-03-r29",
      "kind": "feature",
      "title": "The avatar stack overlaps the first three and folds the rest into +N; clicking a person goes to their caret"
    },
    {
      "version": "2026-10-03-r30",
      "kind": "feature",
      "title": "Live Share holds a room of thirty: the relay copies presence and a host's news, and guests catch up by changes"
    },
    {
      "version": "2026-10-03-r31",
      "kind": "feature",
      "title": "At most five carets on a page, the rest above or below the view folded into a chip at its edge"
    }
  ],
  "archives": {
    "macos-aarch64": {
      "file": "Snowbound-2026-10-03-r31-macos-aarch64.zip",
      "size": 19846899,
      "sha256": "410f911b0003fcd1cd1c2b72bd56e49e5b20aef21fb1f8ae1aab653eaffe0805",
      "signature": "9a46f95dc2d41f6f49c7fd9cf2d88e5b79955a259544c41157b258c3c5758ef86c65234122ba560890a9a46d3d84a4acdbaf6a494cba054036e8afbcc6b69301"
    },
    "macos-x86_64": {
      "file": "Snowbound-2026-10-03-r31-macos-x86_64.zip",
      "size": 21131135,
      "sha256": "9eb976765ffffbdbe78f3ffe63775c6baf02baf0e326a2e3ff1e6e5d865dc733",
      "signature": "708761bb049a3b16fd8d17a1d656969adcab152052b0f593b67c9578b15eb6c0a8429dfb1b2caa71fe1048e56bb7040e8eaa5cb2c495f019e4172d9f11fd9202"
    },
    "macos-10.6": {
      "file": "Snowbound-2026-10-03-r31-macos-10.6.zip",
      "size": 18041779,
      "sha256": "854c67126da76b46952eccb34603a41157f912917c1c9b250829e3b85006fb6b",
      "signature": "03bb3828aa47cfb244cc1c4d4462574c2b0d2dc715fc455e6c1e850857ba3285c2929bd6f5d52232891ac95c8dc733bda2fdee0a6fc8e22fa251e62e75b36c0f"
    },
    "linux-x86_64": {
      "file": "snowbound-2026-10-03-r31-linux-x86_64",
      "size": 52285944,
      "sha256": "9776579ab4782f32696c0bf223d2c076485a6472deee226efc9ee59c827c664d",
      "signature": "7a7f386978acd7b3e77505be93f8fc7be21974504bc65a16cfec09d353926740e0d6c6e8dc356f54eb38cda484bb4aee596946aa9893b359621e57eb6edc9d04"
    },
    "linux-aarch64": {
      "file": "snowbound-2026-10-03-r31-linux-aarch64",
      "size": 50092256,
      "sha256": "6f1d2db2fdd9a08d821d98151b647c8cd3c0ba9e5c81a47afbc49e642314acbc",
      "signature": "5f99300b2abe46e397a1befe4659414cfef68e24b5a3ae0758073298cfb1e20a9417dfe0ec993208bb0449d4979d4fca9308b2c6616043dd38d60d53bf2b210a"
    },
    "windows-x86_64": {
      "file": "snowbound-2026-10-03-r31-windows-x86_64.exe",
      "size": 45819904,
      "sha256": "4262b3a566cd61a7eea14caab491f22644a54f082b5ebede879a7be97543e661",
      "signature": "142d42dad7ff3528d2c000f7729a5e413351f43e161006f91c0bf18dcafb7e244c9387b950d5f93bae3c31b5afa73a1d2be208910df3cacc6b9c963f9d116c0c"
    },
    "windows-aarch64": {
      "file": "snowbound-2026-10-03-r31-windows-aarch64.exe",
      "size": 43571200,
      "sha256": "bf5f96df80ee5c3b276bfc758f0df36dc0636ce6cf5132dac9b93228ab5ce2ab",
      "signature": "827a0b18443708b1809d2f7ba8e4a3b7ee2d7e95b596e38328d21b0e74ef5e295f32376b93a61ffc816c4abe7e7f047d7436d5bb170a09ad2e8b5218c1cf0f0b"
    }
  }
}
