Repository navigation
Rivet 0.9.0
-
Close the last below-floor commercial capability gap with first-party
native file dialogs on every desktop platform. Windows uses Common Item
Dialogs, macOS uses asynchronous AppKit panels, and Linux uses GTK4 native
choosers with portal delegation. The adapters cover open, save, folder
selection, extension filters, cancellation, and open-file multi-selection
without adding file-picker traffic to RVT1. -
Make Linux a first-class product target everywhere users discover Rivet:
the English and Chinese READMEs now include its badge, requirements,
positioning, and comparison stack; the bilingual landing page includes
GTK4 in both the native-UI feature card and comparison table; and the stale
unsupported-host remediation no longer claims only Windows and macOS can
build. Documentation tests pin all three targets to prevent this class of
omission from returning. -
Fix source-package smoke tests under
set -o pipefail. Archive entries are
now read once and checked from a file, sogrep -qcannot close a repeated
unzippipeline early and turn a successful match into spurious exit 141.
Source releases also explicitly omit native build/output trees (the Racket
packager does not read.gitignore), and the isolated install overrides any
maintainer-machine installation-scope link instead of producing a false
“already installed” result. -
Add first-party plain-text clipboard read/write/change observation across
every desktop adapter. macOS usesNSPasteboardwith main-run-loop
changeCountpolling, Windows usesCF_UNICODETEXTplus a message-only
clipboard owner andWM_CLIPBOARDUPDATE, and Linux uses GTK4/GDK with
asynchronous reads suitable for Wayland ownership transfers. Native
observation stays on the platform UI thread and outside RVT1. -
Complete cross-platform global shortcuts. Linux already binds through the
XDG portal; macOS gainsRivetGlobalShortcuts(Carbon
RegisterEventHotKey, main-thread event loop, explicit duplicate-trigger
refusal — RegisterHotKey provides it on Windows, Carbon does not) and
Windows gainsrivet::system::GlobalShortcuts(RegisterHotKeyon a
message-only window withWM_HOTKEYdispatch). The three adapters share
one activation-callback shape (shortcut id, millisecond timestamp,
portal-only activation token) and direct-registration platforms share a
case-insensitive trigger grammar; ANSI virtual-key codes map through
their Carbon constants because the codes follow the physical QWERTY
layout, not the alphabet. macOS parse and lifecycle tests are in the
Swift suite; the Windows adapter is compile-gated by the WinUI CI host
build. -
Add
docs/commercial-parity.md: the honest scorecard against the Tauri 2
and Electron feature floors (above / at / below / roadmap per
capability), with rules of engagement — a product hand-rolling the same
capability twice is a library gap, below-floor rows outrank new surface
area, and the docs suite keeps the scorecard's tracked capability rows
(global shortcuts, clipboard, native file dialogs, mobile hosts) from
silently disappearing. -
Close the scribble coverage gap: the RVT1 framing and value-codec surface
(rivet/protocol— frames, message-type constants, transport limits,
read/write/encode/decode), application resources (rivet/resources),
the diagnostic sink parameter,install-crash-hook!, the version
predicates, the Ed25519 key/digest/base64 primitives, canonical manifest
payload helpers,verify-update-artifact!,make-install-plan,
current-install-kind, and the missingupdater?predicate now have
manual entries. Every public export is covered and the rendered manual
carries no undefined-tag warnings. -
Documentation drift now fails CI instead of rotting silently. The docs
suite derives the current release version frominfo.rktand rejects a
docs/ci*.mdguide pinning any other tag, and it checks scribble
coverage in both directions: a public export without a manual mention
fails, and a manual entry for a binding that is no longer exported fails
(defstruct* forms synthesize their constructor, predicate, structure-type
binding, and accessors, mirroring the rendered output).