Skip to content

Quilltap 4.9.1

Choose a tag to compare

@csebold csebold released this 06 Sep 04:11
· 2748 commits to main since this release

Quilltap 4.9.1 Release Notes

There is a particular species of misfortune that does not announce itself. A door is not slammed; it is merely closed, softly, by a servant who assumed you had seen him do it. The room beyond carries on without you, and you are left to conclude — since nobody has said otherwise — that the party has simply gone dull.

Something very like that had been happening in the Salon. When a chained turn failed outright — a provider erroring, its understudies returning nothing, the whole fallback chain exhausted — the server did the prudent thing and paused the chat rather than blunder onward. Prudent, and entirely silent. If it happened twice in one evening, with the guest pressing Resume in between, the Salon lost the thread altogether: it had changed its own mind about the pause without troubling to inform the copy of the chat it kept consulting, and so the second pause arrived looking exactly like the first and provoked no reaction whatever. The client believed the room was live. The server held it firmly closed. Neither was inclined to bring it up.

The symptoms were maddeningly mild, which is the worst thing symptoms can be. Every message drew precisely one reply and then the room went quiet. A nudge produced a single turn and quiet again. The Skip button appeared for perhaps a third of turns and absented itself for the rest. The sidebar read Pause throughout, with the serene confidence of a footman insisting the drawing room is open while standing in front of the door. Nothing errored, nothing was lost, and nothing in the log recorded any of it — the guard that stopped the chain did so by simply returning, in the manner of a man who leaves a party without saying goodbye. The only remedy was a page reload, which the user had no earthly reason to attempt.

Three corrections, one at each layer. The Salon now reconciles its notion of the pause with the server's on every fetch rather than only when the fetched value changes its mind, and Pause and Resume update that fetched copy as well, so the two can no longer hold different opinions in private. The turn chain no longer stops on a paused chat without saying so: the early return now logs, records itself, and raises the same completion event a mid-chain pause always did — and every such event now carries word of whether a pause was involved, since an error alone cannot tell you that. And when a chain stops on a pause the guest did not ask for, a notice says so, with particular wording when a character's turn was the thing that failed. Rooms run entirely by characters keep their existing dialogue and are not troubled twice.

The Skip button has been given a firmer footing while we were in the neighbourhood. It is now offered whenever the composer will accept your words as some seat at the table — your own character, or one you have taken up by impersonation — rather than only in the narrow moments when the rotation has formally arrived at that seat. The banner says plainly whose turn it actually is. Skipping an impersonated seat works from the Salon at last (the server had always permitted it; the client was being scrupulous on its own initiative), and a skip now lifts a pause before proceeding, exactly as a nudge does. The must-speak guard is untouched and remains the only thing that will withhold the button from you.


What Changed

  • fix (Salon): A chat the server paused twice, with a Resume in between, left the client believing the room was live while the server held it paused — every message drew one reply and no more, and the sidebar read Pause throughout. The pause flag now reconciles with the server's on every fetch, and setPauseState updates the fetched chat object, so local and fetched copies can never drift apart. (bug 123)
  • fix (Salon): A turn chain that stops because the chat is paused now logs, persists a null turn participant, and emits a paused chain-complete instead of returning silently. Every chain-complete carries a paused flag — set for a pause decision and for the chain-error safety stop, clear for an empty-response stop. (bug 123)
  • fix (Salon): A chain that stops on a pause the user did not cause now raises a toast, with specific wording when a character's turn failed. All-character rooms keep their existing pause dialog rather than being told twice. (bug 123)
  • fix (Salon): The Skip button is offered for whatever seat the composer will attribute a typed message to — your own character or an impersonated one — instead of only when the turn rotation has landed on that seat, and the banner names whose turn it is. Skipping an impersonated seat now works from the client, and a skip lifts a pause first, as a nudge does. The must-speak guard is unchanged. (bug 123)

Installation

Desktop App

Download from the quilltap-shell releases page:

macOS:

  1. Download the .dmg file and open it
  2. Drag Quilltap to your Applications folder
  3. Launch Quilltap from Applications

Windows:

  1. Download and run the .exe installer
  2. If SmartScreen warns about an unknown publisher, click "More info" → "Run anyway"
  3. Launch Quilltap from the Start Menu or desktop shortcut

Linux:

  1. Download the .AppImage file, make it executable (chmod +x), and run it
  2. Or install the .deb package: sudo dpkg -i quilltap_*.deb

Node.js (any platform)

npx quilltap

Or install globally:

npm install -g quilltap
quilltap

Open http://localhost:3000 in your browser. Requires Node.js 24+. First run downloads ~150–250 MB and caches locally.

Docker

docker pull foundry9/quilltap:4.9.1

Or use the startup scripts:

# Linux / macOS
curl -fsSL https://raw.githubusercontent.com/foundry-9/quilltap-server/refs/heads/main/scripts/start-quilltap.sh | bash

# Windows (PowerShell)
irm https://raw.githubusercontent.com/foundry-9/quilltap-server/refs/heads/main/scripts/start-quilltap.ps1 | iex

A release in defence of the proposition that a room which has stopped talking ought to say why.

The door is no longer closed quietly behind you.

Installation

Desktop App (recommended)

The Quilltap desktop app (Electron) is available from
quilltap-shell 4.2.0.
Download the release for your platform (macOS, Windows, or Linux).

The quilltap-standalone-*.tar.gz attached to this release is what the
desktop app and the quilltap CLI download and run.

Node.js (any platform)

npm install -g quilltap
quilltap

On first run, the CLI downloads the application files (~150-250 MB)
and caches them locally. Subsequent launches start instantly.

Docker

docker pull foundry9/quilltap:4.9.1

See the README for setup instructions.