Skip to content

Quilltap 4.9.2

Latest

Choose a tag to compare

@csebold csebold released this 06 Sep 12:49
· 2703 commits to main since this release

Quilltap 4.9.2 Release Notes

Consider the plight of a diligent researcher. You ask the Help dialog where the theme settings have got to, and would it kindly take you there; the character behind the desk rises, consults the appropriate volumes, finds the answer, writes it out fair, hands it to the porter — and the porter, finding no name on the envelope, sets it quietly on a shelf and says nothing to anybody. The character, having received no reply, consults the volumes again. And again. At the third repetition a sensible guard concludes that the poor soul is going in circles and rings down the curtain, at which point the dialog presents you with a spotless and entirely empty answer. Nothing errored. Nothing was lost. Nothing arrived, either, which in a help system is very nearly the same thing.

The porter was within his rights. The help conversation had been running its own private errand loop rather than the one the Salon and the Brahma Console use, and it handed its findings over as unlabelled parcels — tool results with no call to which they might be attached. Eight of the nine provider plugins refuse an unlabelled parcel on principle, and refuse it silently. Only Google, in a spirit of generous informality, would carry the thing anyway, which is why the whole misfortune looked less like a defect than like a question of which character happened to be on duty. The help loop now threads its work through the same fitting used everywhere else: a result with a claim ticket is paired to its call, and one without is announced plainly as a result rather than smuggled in as a tool row.

Google, meanwhile, had troubles of its own, and they were rather the mirror image. Its function-declaration desk keeps a list of paperwork it declines to read, and every schema we send is trimmed against that list before it goes out. additionalProperties was somehow never written down. This mattered not at all for most tools, whose only such notation sits at the top of the form where it is discarded in any case — but the wardrobe tools take a list of operations, and each item on that list carried the offending word one storey down, where the trimming never reached. The result was a flat refusal of the entire turn in under a fifth of a second, before a single token could be spoken, for any Gemini seat with tool use enabled and a wardrobe to its name. The word is now first on the list of things struck out, at every depth, and the sanitiser is held to that promise by a test fed the genuine wardrobe schemas rather than a polite imitation of them.

That the one provider tolerant enough to deliver an unaddressed parcel was also the one fastidious enough to reject a form bearing a single unfamiliar word is the sort of coincidence one does not invent.


What Changed

  • fix (Help): The help chat's agent loop now builds its assistant turn and tool-result rows through the shared tool-call threading helpers, so a result carrying a provider call id is paired to its call by toolCallId and an id-less result is framed as [Tool Result: <name>] user text. Previously it pushed an id-less tool row that every provider plugin but Google drops, so a question needing help_search or help_navigate produced empty turns until the duplicate-call guard ended the loop, and the dialog showed nothing at all. The stuck-loop reminder now tracks the last result directly instead of searching the slate by role. Two regression tests drive a native tool turn through the loop and assert the slate the follow-up request receives. (bug 124)
  • fix (Google provider): additionalProperties is now stripped from function-declaration schemas at every depth, not merely dropped by construction at the top level. A Gemini profile with tool use enabled, in a help chat or in any chat whose character has a wardrobe, previously failed every turn with Invalid JSON payload received. Unknown name "additionalProperties" — the key survived under the wardrobe_wear and wardrobe_take_off operations array items. A regression test runs the real wardrobe schemas through the sanitiser; loading the plugin under Jest required a manual mock for the ESM-only @google/genai SDK. Google plugin 1.1.51. (bug 125)

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.2

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 research done on your behalf ought to reach you.

The envelope has a name on it at last, and the form has been trimmed to fit the desk.

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.2

See the README for setup instructions.