Changelog

What’s new

Newest first. Every entry below is something you can use in the app right now — no roadmap items, no previews, no “coming soon”. Where a decision has a cost, it is written down next to the feature rather than left for you to discover.

9 August 2026

Latest

You decide how much gets rewritten

Auto Cleanup stops being one hard-coded pass and becomes four levels — and your original words are now kept no matter which one you choose.

Dictation

Auto Cleanup, in four levels

Until now the pipeline had exactly one post-processing pass, hard-coded at roughly medium: strip the fillers, fix the grammar, re-punctuate, re-paragraph. That is the right default and the wrong only option, for two opposite reasons.

Someone dictating a quote, an interview, a legal note or a language exercise needs the words they actually said — a pass that improves those is data loss, and they could not turn it off. Someone firing a rambling memo at a colleague wants the paragraph they wish they had written, and a light touch leaves them editing. Both people are now served by the same app.

Everything below High is defined by what it may not do. Models asked to “clean up” text drift toward summarising it; the failure is silent, and you only notice when a detail you needed has gone. Naming the forbidden operations — do not merge sentences, do not replace a word with a synonym — holds the line far better than asking for a light touch. Every level is also told to keep mixed-language speech in the script it was spoken in, and to preserve emoji, numbers, names and URLs character for character.

None
Exactly what you said, mistakes and all. Skips the model round-trip entirely — choosing it means the rewriter never sees your transcript, not that it sees it and is asked to behave.
Light
Fillers, stutters and superseded self-corrections removed, punctuation added. Grammar, word order and vocabulary untouched.
Medium
The default. Also fixes grammar and tense, splits run-on speech into sentences, breaks it at real topic changes, and formats a dictated list as a list.
High
Reorganises and tightens to roughly 60–75% of the original, without dropping a single distinct point, decision, name, number, date or commitment.

Where Settings → Auto Cleanup

Dictation

“What I actually said” restores the raw transcript

A tool that rewrites your words and throws the original away is asking for a trust it has not earned. The raw transcript is now kept alongside the cleaned one on every recording, and a button in the note editor puts it back.

The raw version is stashed before the cleanup pass runs, not after. That ordering is the whole point: if the polish step times out or the network drops, the un-rewritten transcript is already saved. Losing a recording because an enhancement failed would be the worst trade in the app.

It is stored on your device, keyed to the note, and deliberately kept out of the note record that syncs — carrying a second full copy of every note's text would roughly double sync payloads for something most people reach for once. The button only appears when a raw version actually exists and differs from what you are looking at, so it is never a control that does nothing.

Where Open any note → Transcript → “What I actually said”

2 August 2026

Hold a key. Speak. Keep working.

The Flow Bar: a hold-to-talk pill that drops your words back at the cursor you were already in.

Dictation

The Flow Bar

Hold your key anywhere in Waver and a small dark pill appears at the bottom of the screen with a waveform that moves with your actual voice. Release, and the finished text lands where your cursor was.

The caret is captured before the microphone opens. The moment anything else takes focus — including the bar's own stop button — the field you were typing in loses its selection, and on some browsers loses it irrecoverably. Reading the active element at insertion time works right up until the first person clicks stop instead of releasing the key, which is the bug you then cannot reproduce.

Into a normal field or a rich-text editor the text is inserted at the caret and stays inside that element's own undo stack, so Cmd+Z behaves. If there is nowhere sensible to put it, the bar copies the text to your clipboard and says so rather than dropping it.

The waveform has no CSS transition on it. The value already updates at 60fps from the analyser, and easing it would put lag between the sound and the bar — which is exactly what makes a meter feel fake.

Hold
Press, speak, release. No way to leave it recording by accident.
Tap
Release inside 420ms and it stays listening. Tap again to stop — for the paragraph where holding a key is its own small misery.
Escape
Throws the recording away. Nothing is transcribed, nothing is inserted.
Any other key
A modifier hold cancels the instant another key joins it, because you were reaching for a shortcut, not dictating. Without this the app would hijack every copy and paste on the page.
Losing focus
A blurred window never receives keyup, so switching away finishes the recording instead of leaving it running.

Where Settings → Hold to talk

Dictation

Pick your key — and why it cannot be Fn

Five choices: hold Control (the default), hold Option / Alt, hold Command / Win, Shift + Space, or Option + Space. The two bare-modifier options are what make hold-to-talk possible; the Space combinations are there for anyone who wants an unambiguous chord.

Fn is not on the list, and the settings screen says why rather than letting you discover it. macOS consumes Fn at the system level to remap the function row and never emits a key event for it — no browser, no desktop renderer, no mobile web view ever sees the press. Desktop apps that bind it use a native event tap that needs Accessibility permission and a signed helper. Control is the closest honest analogue: a modifier your finger already rests near, which emits real key events everywhere.

Command is offered but not made the default, because holding it suppresses keyup for other keys on macOS and swallows a lot of system shortcuts. Better to have it available for the people who want it than to hand it to everyone.

Scope, stated plainly: in the browser and the mobile apps this works inside Waver. On the desktop build the same bar runs in an always-on-top window driven by a global shortcut, and pastes into whatever app is in front — so it reaches Mail and Slack too.

Where Settings → Hold to talk → the key grid

26 July 2026

Your dictionary now changes what Waver hears

The biggest accuracy gap in the app is closed: the terms you add are sent with the audio, not just applied to the text afterwards.

Accuracy

The dictionary is sent with your audio

Settings has always had a place to type names Waver kept getting wrong. Those words were passed to the rewrite prompts — and never to speech recognition, the only place they could have changed how a name was heard. So if you added “Sivaraman” because it kept coming back “Shiva Raman”, the polished text was fixed and the raw transcript was still wrong, every single time. That list now goes to the transcriber, before it hears a word.

The reason this matters more than it sounds is what a speech model's prompt field actually is. It is not an instruction field — it is decoder context, and the model conditions on it as if those words had just been spoken. Telling it to “preserve proper nouns exactly as spoken” biases it toward the words preserve, proper and nouns. Putting the actual names in there is what stops Kubernetes coming back as three words that are not words. That is the whole trick behind the dictation tools that feel uncanny on names.

Terms come from four places, in priority order: the ones you pinned, the name you gave at onboarding, terms you added or that were learned from your corrections, and proper nouns harvested from your own recent notes. Harvesting only counts capitalised words that appear mid-sentence — a capital after a full stop is just how sentences start and tells you nothing — and ranks repeat offenders highest, because a name you say often is the name you most need spelled right.

Where Settings → Dictionary

Accuracy

Pinning, and the budget that makes it necessary

Speech recognition reads roughly 200 characters of context and silently truncates the rest — about 48 terms. Once you have a real dictionary that ceiling starts biting, and the term that gets cut is whichever happened to sort last. Which might be the client name you say forty times a day.

The star pins a term to the front of the budget, ahead of everything else including your own name. It is the only priority control here on purpose: a full drag-to-reorder interface for something whose effect you cannot see is busywork. Once your list passes 48 terms the panel says so, so the truncation is never a silent surprise.

Pinning a harvested term also makes it explicit, so it survives you deleting the note it came from. Harvested terms themselves are not listed with delete buttons — they are transient by design, and a delete button that does nothing is worse than no button.

Where Settings → Dictionary → the star beside any term

Accuracy

It learns from the corrections you already make

When you fix a misheard name in a transcript and save, that edit is the highest-quality vocabulary signal that exists — better than any harvesting heuristic, because you were correcting this tool on this word. Waver keeps it, so you never fix it twice.

The filter is deliberately narrow. A diff between two versions of a paragraph contains rewrites, deletions, reordering and typo fixes, and almost none of them are vocabulary. Only the shape a misheard proper noun actually has survives: a single word replaced by a single similar-looking word — same first letter, edit distance under a third of the length, capitalised, three to thirty characters, not a common word, in versions within two words of the same length.

So “Shiva” to “Siva” is learned and “Friday” to “Monday” is not. A dictionary that fills up with sentence fragments is worse than an empty one, because those fragments then bias every future transcription. It can be switched off in one tap if you would rather curate the list yourself.

Where Settings → Dictionary → “Learn from my corrections”

19 July 2026

Say less, get more — and rewrite what you already have

Snippets expand a spoken cue into a whole block of text. Transforms rewrite text you have already got, on demand.

Dictation

Snippets: say the cue, get the block

“My calendar” becomes your booking link. “Standard reply” becomes the paragraph you send four times a day. Expansion happens after transcription and before the text reaches the note, so it works from any recording without you learning a new gesture.

The hard part is not expanding when you did not mean it. A naive replace on a cue like “my calendar” fires inside “I moved my calendar to Tuesday” and quietly drops a booking link into the middle of a sentence — and you do not notice until after you have sent it. So a cue has to own its clause: it fires only at the start of the text or straight after sentence punctuation, and only when the end of the text or more sentence punctuation follows.

That rule costs something. “Send them my calendar” will not expand, and you have to say the cue on its own. It is still the right trade — the recoverable error is repeating yourself, the unrecoverable one is boilerplate appearing mid-sentence in a message you already sent.

Matching ignores case and punctuation, so “calendar.” still fires while “calendars” does not, and longer cues are tried first so a cue of “meeting” can never shadow “meeting recap”. A few useful starters are offered the first time you open the panel — offered, not installed. Text you did not write should not appear in your account, because that is exactly the kind of thing that then appears in a message you send.

Where Settings → Snippets

AI actions

Transforms: four built in, plus your own

Auto Cleanup is a policy — it runs on everything you dictate, at the level you set. A Transform is a decision: you point at some text afterwards and say what you want done to it. Four ship built in, and you can write your own.

Prompt engineer is the highest-leverage one, and the reason is a bit counter-intuitive. Spoken prompts beat typed ones because people include far more context when they are talking — and that context arrives as a wall. This turns it into Role, Task, Context and Format, using only what is actually in your request. If you did not specify something it writes “Not specified” rather than inventing a constraint or a deadline for you.

A custom transform is a name and a prompt, and that is deliberately the whole interface — anything more configurable becomes a thing to learn rather than a thing to use. Write {text} where your text should go, and it can sit in the middle, which matters for any instruction that needs to state its rules after the content.

If a transform fails it says so. Handing back the unchanged text would look exactly like a transform that decided nothing needed changing, and you would never know it broke.

Polish
Tighter and clearer, same voice, same register, every fact and number intact. Not a summary — about the same length or slightly shorter.
Prompt engineer
A rambling ask restructured into Role / Task / Context / Format for an AI assistant.
Make it shorter
Roughly half the length, with every distinct point, name, number and commitment kept.
Turn into a reply
Notes become a message that is ready to send, without inventing a name you were not given.

Where Select text in a note → Transform · manage them in Settings → Transforms

12 July 2026

A meeting recorder that never joins the meeting

Both halves of the call, captured from your machine. No bot in the participant list, no per-platform integration.

Meetings

Nothing joins the call

There are two ways to get a meeting's audio. The common one sends a bot into the call as a participant: it works everywhere, and it announces itself to the room, needs an integration per platform, and dies whenever a lobby screen changes. Waver does the other one — it records the machine. Your microphone for what you say, the system's audio output for what everyone else says, mixed into one track.

In a browser that means the screen-share picker with “share system audio” ticked, which you complete once per session; there is no persistent grant to hand out. Chrome can share a tab's audio or the whole screen's. Firefox is tab-only. Safari exposes the API and then returns no audio track at all, so Waver says so up front instead of promising support and delivering silence.

If system audio is not shared, Waver records your half and tells you it is doing that. A meeting recorder that silently captures one side produces a transcript where the other person never speaks, and you find that out after the meeting you needed it for.

Echo cancellation is switched off on the microphone, which sounds like a bug and is the opposite. Echo cancellation exists to remove the far end's voice from your mic so they do not hear themselves — meaning it actively suppresses exactly the audio a recorder is trying to capture when system audio is unavailable. Leave it on and the other participants get quietly erased.

The mix
One track, not two files. Two would diarise perfectly and also double the upload, double the cost, and need both halves sample-accurate across a network hiccup.
The levels
System audio is attenuated slightly — it arrives at playback level, louder than a mic two feet away, and an unbalanced mix makes the transcriber favour the loud half.
The waveform
Fed by both sources, so it moves when the other person is talking. A meter that only responds to you looks like it stopped recording at the exact moment you care most.
Consent
In the setup flow and again above the recorder. Recording never starts from a background trigger — a human presses the button, every time.

Where Meeting recorder in the app · read more at /meeting-recorder

Meetings

Speaker labels arrive after the meeting, not during

The live transcript deliberately has no names on it. You cannot tell two people from one person who paused until you have heard enough of both — labelling live means guessing and then silently correcting, and a name that changes while you are reading it is worse than no name at all.

So the refined pass runs when you stop, with the whole recording in hand. That is the first honest moment for speaker labels, and it is where the summary, the outline and the action items come from too. It is also why every product that does this well behaves the same way.

While recording you get three tabs — your own notes, the live transcript, and the summary — plus a timer and a waveform. Length caps at 30 minutes, 1 hour, 2 hours (the default) or 3 hours, with a warning five minutes out. On the 30-minute setting the warning moves to two minutes, because five would fire almost immediately.

Anything under about 25 seconds is offered up for deletion rather than transcribed. It is almost always a mis-tap, and spending a transcription on it just fills your list with noise.

Where Meeting recorder → stop → Review

5 July 2026

Two data questions, two separate switches

Whether Waver may learn from your recordings and whether it may store them are different questions, and now they have different answers.

Privacy

Privacy Mode and Cloud Sync are independent

Privacy Mode answers one question: may Waver use what you record to improve the product? Cloud Sync answers another: may Waver store what you record on its servers? Collapsing those into a single “private” switch is the common design and it is wrong in both directions.

With one switch, someone who wants their notes on their phone and their laptop has to accept training to get sync, and someone happy to help improve the product has to accept storage they never wanted. Splitting them means the honest answer — store it so my devices agree, but do not train on it — is finally expressible.

Both at their strictest is zero data retention: nothing kept, nothing learned from. The panel says so, and says the consequence in the same breath — your notes then live on that device only, so clearing the browser's data deletes them. A privacy promise that hides its cost is how people lose work.

The defaults are Privacy Mode on and Cloud Sync on. Private by default; synced by default, because a note-taking app whose notes do not appear on your other device reads as broken rather than as principled.

What Cloud Sync actually does
Gates the server writes. Off, your notes stay in local storage on that device and nothing is uploaded.
What Privacy Mode actually does
Records your intent and travels with every request. Waver has no training pipeline today, and the interface says that rather than glossing it — claiming an opt-out enforces something it does not is the kind of promise that becomes a support thread.
Why the header is always sent
The opt-out flag goes out whether it is on or off. A server that only ever hears from opted-out clients cannot tell “opted in” from “old client that does not know about this header”, and would have to guess. Guessing in that direction is how opt-outs get lost.

Where Settings → Your data

28 June 2026

Emoji you can say out loud

“Fire emoji” becomes 🔥 — deterministically, and only when you clearly asked for it.

Dictation

Spoken emoji

Say “fire emoji” and 🔥 lands in the note. It is a deterministic pass over the finished text: exact, free, instant, and identical whether it runs on the live transcript or the final one.

The obvious approach — asking the transcriber to emit emoji — does not work. It is an acoustic model writing down what was said, and “fire emoji” was said, so it writes “fire emoji”. That is correct transcription and useless dictation. Asking the rewrite model afterwards is worse: non-deterministic, costs a round trip, and it will happily “fix” a note that genuinely discusses emoji.

It only ever fires on an explicit “<name> emoji” phrase. It never guesses that the word fire on its own means 🔥, because someone dictating “we need to fire the contractor” must get the word — and a dictation tool that silently rewrites what you actually said is worse than one that misses a shortcut.

Words that exist only to ask for the emoji are dropped, and words your sentence needs are kept: “add a fire emoji here” gives you “🔥 here”, while “that deserves a clapping emoji” gives you “that deserves a 👏”. Longer names win, so “red heart emoji” beats “heart emoji”. And there is no “no” alias for the cross mark, because “no emoji named that” is ordinary English and would otherwise turn into nonsense.

Where Any recording — nothing to switch on

The order things run in

Six things happen between you speaking and the text appearing

Several of the entries above only make sense in sequence — particularly why snippets expand last, and why your original is saved before anything is allowed to rewrite it.

  1. 01

    Your dictionary goes first

    Pinned terms, your name, everything you added or Waver learned, then proper nouns from your own notes — sent with the audio, before a word is transcribed. This is the step that changes what is heard rather than what is written down afterwards.

  2. 02

    The audio is transcribed

    In whichever of 120+ languages you spoke, in its own script, with mixed-language sentences kept in the language each word was said in.

  3. 03

    Spoken emoji resolve

    A deterministic pass on the raw text. No model involved, so it cannot be talked out of it and cannot rewrite anything else while it is there.

  4. 04

    Your original is stashed

    Before any rewrite runs. If the next step fails, times out or is switched off, the words you actually said are already saved and one tap away.

  5. 05

    Auto Cleanup runs at your level

    None, Light, Medium or High. At None this step is skipped entirely rather than being asked to behave — the rewriter never sees the transcript at all.

  6. 06

    Snippets expand last

    After cleanup, never before. Run them first and the cleanup pass would be handed a booking link or a paragraph you wrote yourself and would cheerfully improve it — the one thing a snippet must never cause.

House rules

What “shipped” means on this page

It is in the app now

Nothing here is a preview or a waitlist. If it is on this page you can open Waver and use it, on every platform it applies to.

The trade-offs are included

Snippets that will not fire mid-sentence, a live transcript with no speaker names, a mic that does not echo-cancel. Each of those costs something, and the cost is stated beside the feature.

Dates, not version numbers

Waver ships continuously to the web and updates the mobile apps over the air, so there is no build number you could match against the app in your hand.

Everywhere you use it

iPhone, iPad, Mac and Windows. Hold-to-talk works inside Waver on iPhone and iPad, and system-wide on the Mac and Windows build. Android is in the works.

Free tier stays free

Unlimited transcription, 10 AI actions a month, no card, and ad-free. Premium unlocks unlimited AI actions from $4.13/mo.

Your data, your call

Privacy Mode and Cloud Sync are separate toggles, and both at their strictest is zero retention. The details are in the privacy policy.

More detail: the meeting recorder, the privacy policy, or tell us what to build next.

Stop typing what you could have just said.

Free forever to start. Unlimited transcription, no card, no ads.