Releases: p-to-q/flatus
Release list
flatus v0.2.2
flatus v0.2.2
flatus is a small thing that lives in your menubar and occasionally farts.
It is also, by acoustic accident, tied to the same general speaker-clearing
story that makes the Apple Watch water-eject reference so hard to ignore.
This release is not about expanding that premise. It is about making the
desktop app feel more recoverable, more legible, more coherent, and easier
to keep shipping.
Highlights
Menubar recovery is much safer
The biggest product fix in this release is not glamorous, but it matters:
if the status-bar icon disappears, the app now has real recovery behavior.
- Reopening
flatusfrom Applications or Spotlight brings back the main window. - The app now reasserts or rebuilds the tray icon on resume, reopen, and
main-window show instead of assuming the original menubar item survived. - First-launch and in-window help copy now explain the recovery path plainly.
This closes one of the most dangerous user-facing dead ends in the desktop shell.
Desktop audio now has a proper debug path
This release keeps a real Export audio debug path for engineering use,
without leaving it as a front-and-center product control. The export can be
triggered from the menubar menu and from a hidden window affordance. It writes:
- the exact WAV used by desktop manual playback
- a JSON report with personality, seed, pressure, and current output-device info
That gives us a reproducible way to investigate the remaining Apple speaker
listening question without guessing from memory or chat logs.
Visual polish tightened again
The desktop window and public visuals continue the paper-and-ink direction,
but with cleaner execution:
- the paper grain is scaled up again so it reads as an intentional substrate
instead of tiny background noise - the hero banner wordmark and strapline are sharper and easier to read
biblicalwas pushed further toward an edited, academic-looking figure- website typography and section hierarchy are more internally consistent
- the desktop title row now sits more calmly against the
single / shuffle
control
Product changes
- Desktop main-window support copy now includes the recovery path for a missing
tray icon. How to fartaligns more cleanly with its adjacent play-mode control.- The desktop window texture is enlarged for a softer, more tactile read.
- Banner text now prioritizes crisp legibility over atmospheric glow.
- Homepage subheads, captions, specimen descriptions, and install notes now
speak in a more consistent typographic voice.
Engineering changes
- Added tray recovery logic that:
- reuses an existing tray when possible
- forces it visible again
- rebinds left-click menu behavior
- rebuilds the tray if it is missing from app state
- Added desktop audio-debug bundle export from the Tauri layer.
- Added
docs/test/as a place to keep release-relevant investigation notes
that should survive beyond chat history. - Regenerated public raster assets and DMG background outputs from the current
SVG / scripted sources.
Audio note
We also recorded the current state of the unresolved desktop audio question.
At the moment:
- exported desktop debug WAV playback appears to match desktop real-time
playback closely enough that this is not yet isolated to the real-time
output path alone - the app is not currently known to perform deliberate app-level band splitting
- some of the “two-band” character may belong to the current timbre design
itself, with Apple laptop speakers possibly exaggerating it further
That issue remains open, but it is no longer buried.
See:
docs/test/2026-05-14-desktop-audio-notes.mddocs/AUDIO_BASELINE.md
Known limits
- macOS only
- Apple Silicon desktop build
- still unsigned
- the desktop audio character for the rougher personalities is under active
evaluation, even though the rest of the desktop shell is ready to ship
Assets
flatus_0.2.2_aarch64.dmgflatus-v0.2.2-aarch64.app.zip
Full Changelog: v0.2.1...v0.2.2
Full Changelog: v0.2.1...v0.2.2
flatus v0.2.1
flatus v0.2.1 is a maintenance release that tightens the desktop product surface before the next phase.
Highlights:
- Desktop manual playback now matches the website specimen reference, with legacy auto-play migrated off so local listening checks stop picking up a second accidental voice.
- The desktop window is calmer and more robust: seed and personality edits are quiet again, preview renders are race-safe, and failed settings writes now fall back to the last saved snapshot.
- The transparent macOS window path is corrected for rounded edges, and the version mark in the window now links back to the project.
- README now leads with the product voice, includes an early Personality section, and uses a fresh screenshot of the current window.
- DMG visuals were rebuilt from the latest SVG, including the bundled retina TIFF background used by Finder.
Known limits:
- macOS Apple Silicon only.
- Unsigned build; first launch may require clearing quarantine with
xattr -cr /Applications/flatus.app.
Full Changelog: v0.2.0...v0.2.1
flatus v0.2.0
flatus v0.2.0
A small apparatus for moving air.
First user-facing release of the desktop shell. If you tried v0.1.x and the
window felt frozen, the first-launch card refused to leave, or the tray menu
felt unresponsive — this is the release that fixes that. The synthesis core
(fart-synth, the CLI, the website instrument) is unchanged and still
byte-identical to the published golden fixtures.
What changed for users
- First launch behaves. Click looks good once and the card is gone for
good; it only comes back when you press Show help again. Fart nowis responsive. From either the tray menu or the window, the
click returns immediately; audio renders and plays on a background thread
so the UI never blocks.- Audible previews. Editing the seed, rolling a new seed, or switching
personality now plays the same three-event session you'd get fromFart now, so you can audition voices without ever opening the menu. - No more "two voices" overlap. Manual and background fires now share one
output mutex, so they queue instead of mixing into a confused stack. - Larger, brighter preview waveform. The in-window scope now matches the
website instrument: same palette, same two-pass glow, fills the visible
height even on quiet buffers. - Menubar icon fits the menubar. The italic
fplus three brand grains,
drawn at the right size for a 22 px template image (the previous glyph was
getting clipped at the top).
Install
-
macOS Apple Silicon DMG: download
flatus_0.2.0_aarch64.dmgfrom this
release and dragflatus.appinto/Applications. -
One-liner installer (handles quarantine xattr too):
curl -fsSL https://flatus.vercel.app/install.sh | bash
The .app is still unsigned. On macOS 15+ the first launch may need
xattr -cr /Applications/flatus.app once; see the README's First launch
section.
Verification
cargo check --workspacecargo testpnpm --dir apps/desktop tauri build
Known limits
- macOS Apple Silicon only for the packaged app.
- Notarization is not yet in the pipeline.
- CLI on Linux/Windows still works from source (
cargo install --path crates/fart-synth).
What's Changed
- fix: point download links at v0.1.0-pre.3 tag by @Jah-yee in #9
- docs: fix dead v0.3 archive link and stale CHANGELOG sections by @Jah-yee in #10
- web: catalog-aesthetic polish — folio numerals, asterism, lettrine by @Jah-yee in #11
- feat: macOS install one-liner + paper-grain polish + xattr docs by @Jah-yee in #12
Full Changelog: v0.1.0-pre.3...v0.2.0
v0.1.0-pre.3
What's Changed
- docs+web: audit fixes — honest CLI, deploy-safe banner, real screenshots, README clarity by @Jah-yee in #4
- desktop: real macOS user-idle detection via IOHIDSystem by @Jah-yee in #2
- ci: add Linux to tauri matrix (deb + AppImage) by @Jah-yee in #3
- v0.3: WASM browser synth + new homepage + DMG polish by @Jah-yee in #5
- docs: v0.4 realism plan + brand kit + research curation by @Jah-yee in #6
- v0.4 realism: aperiodic tremor + brown noise + bubble bursts by @Jah-yee in #7
- v0.1.0-pre.3: paper-aesthetic visuals + shippable DMG + on-brand icon set by @Jah-yee in #8
Full Changelog: v0.1.0-pre.2...v0.1.0-pre.3
v0.1.0-pre.2 — first green build
flatus v0.1.0-pre.2
A small apparatus for moving air.
Second pre-release. This is the first one that actually builds green on both macOS and Linux CI and produces a launchable unsigned .app. v0.1.0-pre.1 was the scaffold drop — comedy and architecture were in place, but the wiring needed work before anything compiled end-to-end.
Same shape as pre.1 (CLI + Tauri menubar shell + four personalities + determinism contract). Difference is: now you can clone, install Rust, run cargo install --path crates/fart-synth, and actually get a working binary.
What landed in this drop
Merged via #1:
- Synth (
crates/fart-synth) — compile and clippy fixes (TickResultEq derive onf32, decay rate that made pressure unreachable, Mulberry32 hex constant, SHA-256 separator grouping, struct-update syntax in tests). All 24 tests pass;cargo clippy --all-targets -- -D warningsclean. - Cross-platform determinism — every transcendental (
tanh/sin/cos/powf/sqrt/ln) now routes through thelibmcrate instead off32stdlib methods. Stdlib defers to platformlibm, which gives different LSBs on Applelibmvs glibc; the "byte-identical WAV" contract intests/goldenwas structurally unreachable until this fix. Bothmacos-latestandubuntu-latestnow agree on the goldens. - Desktop shell (
apps/desktop) — Tauri v2 API alignment:tauri::include_image!for the tray icon (lifetime fix),show_menu_on_left_clickrename, removed invalidbundle.infoPlistconfig.LSUIElementis already enforced at runtime byActivationPolicy::Accessory, so the dock-icon hide still works. - CI —
target/release/bundle/macos/is the actual.applocation (workspace root target dir, not per-crate). EmptyAPPLE_SIGNING_IDENTITYenv removed so unsigned builds genuinely skipcodesign. - Goldens — regenerated under
libm; manifest SHA-256s repinned. Determinism test green on both platforms. - Banner —
docs/banner.svgredesigned for depth: dark warm-cool canvas, radial bloom on each grain, integrated[p → q]motif, paper-noise overlay.
Status
- 🟡 Unsigned, ad-hoc. macOS Gatekeeper blocks the first launch — right-click → Open.
- 🟡 macOS Apple Silicon only. Intel + universal binary deferred to v0.2.
- 🟢 CLI works on Linux in principle (the
fart-synthcrate has no macOS-specific deps); the Tauri shell is macOS-first in v0.1. Linux CI builds the synth and runs the test suite. - ⏳ No signing / notarization. v0.2 work, gated on Apple Developer ID.
Install
git clone https://github.com/p-to-q/flatus
cd flatus
chmod +x scripts/*.sh
scripts/doctor.sh # verify prereqs
cargo install --path crates/fart-synth # gives you `fart` and `generate-goldens`
fart --personality biblicalMenubar app (unsigned — right-click → Open the first time):
cd apps/desktop
pnpm install
pnpm tauri build
open ../../target/release/bundle/macos/flatus.appA pre-built unsigned flatus.app is attached below as an artifact for the macOS-Apple-Silicon case where you'd rather not compile from source.
Roadmap into v0.2
- Replace the
business_hours()activity stub with realIOHIDIdleTimepolling. - Linux Tauri build in CI matrix.
apps/webWeb Audio re-implementation (honestly labelled as a reimpl, not wasm).- Universal
(arm64 + x86_64)macOS binary. - Real artwork icon, README screenshots / GIF.
- Apple Developer ID signing + notarization (gated on cert availability).
v0.1.0-pre.1 first proof
flatus v0.1.0-pre.1
A small apparatus for moving air.
First public pre-release. This is the comedy-first drop: the joke, the architecture, the receipts. No signed .app, no notarization, no crates.io publish — those come at v0.2, once we know anyone wanted this.
What ships
fart-synth— a Rust synthesis crate. 7-D parameter space, four personality-conditioned Gaussian distributions, mulberry32 seeded PRNG, RBJ biquad BPF/HPF/LPF, Paul Kellet pink noise, granular envelope, asymmetric tanh waveshaper, comb-filter wetness, dBFS-capped soft limiter.fart— aclap+cpalCLI.fart --personality biblical.fart --render out.wav.fart --seed 42.flatus-desktop— a Tauri v2 menubar shell.ActivationPolicy::Accessory+LSUIElement=true(no dock icon). Left-click the tray → fart now. Right-click → settings (volume, personality, output, quiet hours).apps/web— a static landing page (no audio yet).skills/fart— a Claude Skill that wraps the CLI.docs/ACOUSTICS.md— citation-backed plausibility writeup. Apple's patent family (US 9,451,354 et seq.), the JASA flatulence paper, Chirone 1988, an honest A/B/C plausibility table. The "we're actually serious" leg.- CI — GitHub Actions matrix (macOS + Linux):
fmt --check,clippy -D warnings,test, build, CLI smoke test. The macOS job also builds an unsigned.appand uploads it as an artifact. - Determinism contract —
cargo run --bin generate-goldensthencargo test --test goldenenforces byte-identical re-rendering across builds. Thetests/plausibility.rscompanion test asserts in-band/above-band spectral energy ratio ≥ 6, backing the headline acoustic claim.
Personalities (the bestiary)
| Name | Voice |
|---|---|
polite-cough |
short, dry, plausibly deniable |
default |
the canon |
biblical |
slow, low, devastating |
silent-but-deadly |
exactly what it says |
Install (from source, this pre-release)
git clone https://github.com/p-to-q/flatus
cd flatus
chmod +x scripts/*.sh
scripts/doctor.sh # confirm your machine has the prereqs
cargo install --path crates/fart-synth
fart --personality biblicalMenubar app (unsigned — right-click → Open the first time):
cd apps/desktop
pnpm install
pnpm tauri build
open src-tauri/target/release/bundle/macos/flatus.appKnown limits in this pre-release
- 🔴 Unsigned / unnotarized. macOS Gatekeeper will block first launch. Right-click → Open. See
SECURITY.md. - 🔴 macOS Apple Silicon only. Intel + universal binary in a follow-up.
⚠️ Activity detection is stubbed.apps/desktop/src-tauri/src/main.rs::business_hours()uses UTC wall-clock as a proxy. v0.2 will replace withIOHIDIdleTime.⚠️ The "165 Hz" Apple Watch number is community lore. Apple has never published a frequency. We don't quote it as fact; seedocs/ACOUSTICS.md§1.⚠️ No clinical efficacy. The cleaning is a maybe. The comedy is a definitely. Seedocs/ACOUSTICS.md§8.⚠️ Firstcargo buildon a clean machine may surface 1–2 small fixes. The scaffold was authored without a local Rust compiler. If you hit something, open an issue.
Roadmap
- First release
- Cease-and-desist from Apple's lawyers (re: US 9,451,354 et seq.)
- Speaker manufacturer warranty claims department
- IRB approval for the cleaning-efficacy study
- Bluetooth headphone hearing-protection litigation
- Notarized DMG (we'll get to it)
- Updated fart physics
Acknowledgements
OpenWhip — voice template for the README, install-path template for the CLI, tray-UX template. Hundred Rabbits, Ink & Switch, Folk Computer — repo discipline. Apple Watch water-eject — the acoustic precedent.
License
Apache-2.0.
A [p → q] project. We're interested in the arrow. Q.E.D.