CallVault v2.3.0
Mostly fixes for what people reported after 2.2.0, plus two new things: calls that were really one conversation can be merged into one recording, and a bug report can now be saved as a file on the phone.
Added
-
Calls that were really one conversation can be merged into one recording. A call drops and you ring each other back; to you that was one conversation, but it arrives as two recordings. Open the ⋮ menu on the call that started it, choose Merge with another call, and tick the ones that continued it — they join in the order you tick them, numbered as you go, so you can see the order before committing to it. It works for any number of calls, and a merged call can be merged again.
The join is lossless and takes a moment: nothing is re-encoded, so the merged recording contains the original audio exactly. The transcript, marks, tags, star and note come across with it, timed to the merged recording, and a mark is dropped at each seam so the joins are somewhere you can jump to.
-
And they can be un-merged again, from the same menu, getting every original call back with the transcript and marks it had. This works because the merged recording physically contains the originals, so taking it apart is an exact cut rather than a reconstruction — which is what makes it safe for a merge to leave you with one recording instead of two copies of everything.
By default the calls a merge was made from are removed, and the dialog says so before you confirm. Settings ▸ Storage ▸ Keep the original calls keeps them on the phone as well; un-merging works the same either way.
-
A bug report can be saved as a file. Share now has Save next to it, which opens Android's own save dialog so you choose the folder and the name. Both halves of the report go into one text file. The report used to exist only in CallVault's private storage, where no file manager — and no
adb pull— can reach it, so the only way to get it off the phone was to send it through another app. Asked for by mirror176 in #28 and #29.
Changed
-
The first-run notice no longer holds you back with a timer. Continue used to stay disabled for five seconds whether or not you had read anything. A forced wait does not make anyone read; it makes them wait, and it charged the time again on every reinstall and every phone someone set up. The notice still has to be scrolled to the end and acknowledged — both of which are the reader's own doing. Reported by mirror176 in #27.
-
What's New says one line per change instead of several paragraphs. The newest release is written out as a scannable list, releases you skipped keep their headline so you can see you missed them, and a link goes to the full release notes on GitHub, where being thorough costs nobody anything. Reported by mirror176 in #27, who had to "parse through" the 2.3.0 note.
-
A journal of the first setup is now always kept, and can be shared. The debug log is off until you switch it on, so the first minutes after an install — when setup either works or does not — were recorded nowhere, and by the time anyone asks for a log the moment has passed. This one is small, narrow and always there: only the steps that get recording working (finding the ADB service, connecting to it, starting the recorder, the grants and the modes), never anything about a call, its audio or its text. It is capped, it stops once a recorder has connected, and Settings ▸ Debug can read, share and delete it whether or not logging was ever switched on.
Fixed
-
A transcription you started no longer posts a "your phone may get warm" notification. You had just confirmed a dialog saying the same thing. Automatic transcriptions — nightly, or after a call — still show it, since nothing else tells you they are running. A run you started that is expected to take eight minutes or more keeps it too: without it Android may stop the job at ten minutes, and a stopped transcription starts again from nothing. Reported by mirror176 in #31.
-
Automatically recorded calls no longer flash "Press to start recording". The recording notification was posted before the service had acted on the call, so for a moment it offered a Record button for a call that was already being recorded — and did the same again as the recording ended. Recording was never affected. Reported by mirror176 in #31.
-
A recorded call shows one notification instead of two. While a phone call was being recorded, "Ready to record calls" stayed in the shade next to the recording notification — saying the app was ready to record while it was already recording. The recording notification now takes its place for the length of the call, and "Ready to record calls" comes back when it ends. Reported by the maintainer while checking #31.
-
Transcription progress no longer stalls at about three quarters and then jumps to the end. The figure between whisper's own reports was drawn on a curve that read 75% at the moment the job was expected to finish, so a quarter of the bar was never used. It now follows the clock to about 90% by the expected finish, and keeps creeping if the job runs long. Summaries get the same fix. Reported by mirror176 in #33.
-
Rotating the phone no longer looks like it restarts a transcription. The percentage is predicted between whisper's own reports, and the clock behind that prediction lived on the screen showing it — so turning the phone threw it away and the figure fell back to 1% and climbed again. The transcription itself was never affected and always finished on time, but there was no way to tell that from the outside. The figure now belongs to the run producing it, and a rotation cannot touch it. Reported by mirror176 in #34.
-
Deleting a call now stops its transcription. The run used to carry on to the end, producing a transcript of a recording that no longer existed — and because one transcription runs at a time, everything queued behind it waited for a result that was thrown away. Deleting the recording now ends its run, and the queue moves straight on. Reported by mirror176 in #35.
-
The microphone indicator no longer stays on after a call. When Android tears a capture down mid-call, CallVault rebuilds it and the recording continues whole — but Android can leave the torn-down capture's microphone marker running, so the green dot stayed lit with nothing recording. Stopping the old capture turned out not to clear it; replacing the background recorder does. A few seconds after a call ends, CallVault now checks for exactly that and, if nothing is recording and the recorder can be brought straight back, replaces it. It never does this during a call, and if the recorder could not come back it leaves the dot rather than risk the next call.
-
CallVault no longer switches off a debugging switch you turned on yourself. Wireless debugging that CallVault enabled is still switched off when it is done with it — but a switch you flipped is yours, and it is left alone. It used to be taken away within a second, with a note suggesting you disable USB debugging instead, which costs you the thing you wanted. Reported by mirror176 in #30, who uses it to reach his phone from a PC.
-
Turning on off-Wi-Fi recording says what actually failed. Every failure produced the same sentence — "connect to Wi-Fi once, then try from Settings" — including on a phone already on Wi-Fi with Wireless debugging on. It now distinguishes Wireless debugging being off, the phone's debugging service being unreachable, and the local port not coming back. Reported by mirror176 in #30.
-
A bug report can be shared without switching logging on first. Share was only offered once a log file existed, so reporting anything meant enabling logging, reproducing, disabling it again — and the most useful half of a report needs none of that. The report always carries the configuration header (mode, transport, which switches are on, whether the recorder is connected) and the setup journal when there is one, so it is now offered whenever logging is off.
-
The log viewer can actually be read. It was a small popup that cut every line off at the right edge, gave no sign it could scroll, opened at the oldest lines and closed when the phone was turned. It now fills the screen, wraps long lines — a switch turns that off for one line per row with sideways scrolling — shows scrollbars, opens at the newest lines and stays open when you rotate.
-
The transcript no longer changes size as you read it. It opened at about half the screen with the playback controls out of sight, grew as you scrolled, collapsed again when the phone was turned and opened full the next time — because its height followed however much of the text had been drawn so far. It is now a stable near-full sheet with the controls where you left them. Reported by mirror176 in #27.
-
Cancelling a transcript deletion puts the transcript back. The sheet closes before the confirmation so the dialog is not sitting on top of the text it is asking about, but saying no then left you back at the list. Reported by mirror176 in #27.
-
Updating the app no longer leaves it unable to record the next call. Installing an update stops CallVault's background services and the privileged recorder that captures the audio, and until now they were only brought back if the update had also cost the app a permission. If it had not — the usual case — nothing restarted them, and a call arriving in that window woke the app, started a recording and produced no file. Found the hard way: a thirteen-minute call, eight minutes after an update, with the call right after it recording perfectly.
-
A line spoken after a long pause is no longer timestamped as if it came before it. Tapping a line in a transcript jumps to that moment in the call — except after a silence, where it could land more than ten seconds early, on the wrong speaker. Reported by a user who noticed it on a call that was transferred, with a long hold in between.
The cause is in the speech detection: it removes the silence before transcribing, and every pause, however long, was being treated as a tenth of a second when the times were mapped back. Times are now put back against the speech that was actually there. Checked against the recording the reporter attached: the line that was stamped at 1:16 is now at 1:28, where it is really said.
-
Playing a voicemail no longer counts as a call that failed to record. CallVault spots app calls by the phone switching its audio into "communication" mode, because Android offers nothing better — but a voicemail app takes that same mode to play through the earpiece. Every voicemail played, and every resume after a pause, was announced as an app call that had gone unrecorded, and was written into the app's health record as a missed call. Reported by a user who found the warnings only stopped when he switched to Shizuku, which turns app-call recording off entirely.
CallVault now checks whether anything on the phone is actually capturing audio for a call before it says a call was missed. It never withholds a recording on that basis — only the warning — so a call can still be recorded even where the check cannot confirm it.
-
An app you have switched off for recording can no longer produce a "call not recorded" warning. The per-app choice was consulted after two of the checks that raise it, so an excluded app still warned you whenever the recorder was not ready or the folder was unwritable.
-
The crackling in call recordings is fixed, and both causes of it are. On phones that could not quite keep up, the recorder threw away a 21-millisecond fragment of the call and joined the audio either side of it — silence sounded fine, but a cut through the middle of a word became a click. Reported by someone who noticed it only when there was speech. Fragments are no longer dropped, and the part of the recorder that reads the microphone now runs on its own, so nothing else being slow can starve it. If a phone still loses audio, the recording says how much rather than hiding it.
-
Switching the recording format to AAC no longer costs you the next call. Choosing a format in the setup wizard kept the previous format's bit rate, which some phones' encoders refuse outright — and a refusal meant a call that recorded nothing at all, silently. The format now brings a workable bit rate with it wherever you choose it, and if a phone still refuses, the recorder tries again at the rate that format is meant for instead of giving up.
-
A recording that never starts now says so. The recorder could accept a call, fail to open the microphone, and leave you with nothing — no error, no file, nothing in the log. It now checks that capture really began and tells you when it did not.
-
CallVault no longer recommends a USB setting that stops Shizuku. Changing the phone's Default USB configuration restarts Android's debugging service, and Shizuku's server stops with it — so the advice that makes recording more reliable for everyone else broke the setup of anyone using Shizuku, as one of them reported. That advice, and the USB debugging switch beside it, are now explained rather than recommended in Shizuku mode. The setting is also never changed during a call, where applying it would have ended the recording in progress.
-
The list keeps your place. Scrolling a long way down, opening a recording and coming back put you at the top of the list again. A Top button also appears once you have scrolled far enough to want it.
-
A recording's Drive badge appears when the copy lands, instead of on the next launch. Copying to Drive happens in the background — after a call, or after a merge — and the list only read the catalogue once, so a recording could sit there looking device-only for as long as the app stayed open.
-
Transcription no longer says a two-minute call will take three hours. The estimate is learned from finished runs, and a check meant to reject an impossible reading let it through on any phone that had not measured one yet — so a single bad reading became that phone's permanent opinion of itself and was quoted back for the next dozen runs.
The way a run was modelled was wrong underneath that, too. It was treated as purely proportional to the length of the call, when a run also loads an 874 MB model before it looks at any audio, and whisper does a full 30 seconds of work on anything shorter than 30 seconds. A ten-second clip therefore measured as a phone six times slower than it is. Both parts are now measured separately, so a short clip and a long call agree about how fast the phone is.
Until a phone has timed one run, the confirmation now says the first one may take a while rather than quoting a figure measured on somebody else's hardware. Estimates already stored are discarded once, because they were measuring a different thing; the next run replaces them.
The quoted time is also rounded up rather than down. Truncating threw away up to 59 seconds on every estimate, on top of an estimate that already aims at the middle — so it was biased short twice over, and a run that overshoots what it promised reads as a hang.
-
Turning the phone no longer throws away what you were doing. Rotating closed the recording you had open and dropped you back at the top of the list — reported by someone who rotates deliberately, to read a longer transcript and get a wider waveform. The same thing quietly cleared a multi-selection part-way through choosing, closed the transcript sheet and its search, and dismissed whichever dialog was open, including the bulk-delete one after you had picked which copies to remove. All of it now survives the turn, and a recording that was playing keeps playing on the screen it belongs to.
-
The app lock no longer asks again every time you rotate. Turning the phone counted as leaving the app, so it demanded a fingerprint each time — while a phone that flips between angles in your hand could ask several times over. It now tells a rotation apart from actually leaving: backgrounding the app, or closing it from recents, still locks it exactly as before.
-
The unlock screen no longer flashes on every open. A card reading "locked", with an Unlock button, was drawn for a moment before the fingerprint prompt appeared and again as it disappeared. That card exists only so a prompt dismissed by accident does not leave force-stopping the app as the only way back in, and it now appears only in that case.
Also in this release: the fixes first built as 2.2.1
A maintenance release built entirely from what people reported after 2.2.0 went out. Nothing here is a new capability; all of it is something that was wrong, or something CallVault could not tell you.
Fixed
-
Opening the app is fast again, and stays fast as your library grows. 2.2.0 re-read the length of every recording the call log could not answer for, every single time the list was drawn — one file open and one media parse each, on the main path. With a few dozen calls the list took long enough that a recording made minutes earlier looked as though it had never happened, and the delay grew with the size of the library rather than staying constant. A recording's length is now read once and remembered, so a list that has been drawn before comes back immediately.
-
CallVault no longer says Drive backup has stopped when it plainly has not. Two people were warned that their recordings were not reaching Google Drive while every one of them was arriving correctly. The sweep skipped over a recording whose Drive copy was already there without recording that it had seen it, and the health check then read that silence as age, and age as failure. A copy that is present is now stamped as present, and the warning needs evidence about the present rather than an absence of recent news.
-
Three places that were still in English regardless of your language. The headings inside an exported transcript, the count of selected apps, and the back button's description now follow the app's language like everything else.
Added
- The debug report now says who is holding the microphone. If the phone shows the green microphone dot when no call is happening, the report lists every audio capture the system currently has open, which application each belongs to, and whether it was ever closed — and separately counts CallVault's own privileged recorder processes, of which exactly one should ever be running. This exists to settle a problem that has so far only been reproducible on someone else's phone.
Documentation
-
The setup wall on OPPO, OnePlus and Realme phones is written down. On ColorOS and OxygenOS the developer option CallVault needs is called Disable system optimization rather than the name every other guide uses, and it is invisible unless the phone's language is set to English — so people reasonably concluded the option had been removed and that CallVault simply did not work on their phone. The README now names both wordings, says where the option hides, and notes that it applies to Shizuku mode too.
-
The in-app "What's new" note had no 2.2.0 entry, so the largest release the app has had announced itself with the note from the release before it.