Skip to content

Releases: joshuakeum9-cell/min

MIN 1.5.0

Choose a tag to compare

@joshuakeum9-cell joshuakeum9-cell released this 08 Sep 00:17

Your meetings can live in a folder you choose, so they reach your other computers by themselves. Plus a pre-release security and privacy audit.

Meetings where you want them

Settings > Where meetings are kept points MIN at any folder. Put it somewhere a cloud program already syncs and every meeting reaches your other computers on its own. MIN finds the ones you already have and offers a button for each: Use Google Drive, Use OneDrive, Use Dropbox.

MIN never signs in to anything. It has no account, no token and no upload code, and it never talks to Google, Microsoft or Dropbox. It writes files to a folder on your hard drive and the sync program you already run does the uploading. Leave the folder alone and nothing of yours leaves the machine at all.

A meeting recorded on one machine now appears on the other by itself. MIN watches the folder, so an arrival redraws the list within seconds and is searchable straight away. Before this there was no watcher at all, and the search index was built once per session, so a meeting that arrived from another computer was invisible to search until you restarted.

Changing the folder moves nothing: meetings already saved stay where they are.

The audit

Two review passes over the whole project before sharing it more widely. What they found, and what changed:

  • A crafted meeting.json could delete any file on disk. Segment audio names were read out of that file and joined onto the meeting folder. The folder was checked; the name was not. The same names also reached a spawned transcriber. Any name that is not a plain .wav inside the folder is now refused, including Windows device names like NUL.wav, with 38 hostile inputs under test.
  • A hostile calendar feed could exhaust memory. Occurrences were capped per event and the download was capped, but not their product. Now capped for a whole feed.
  • The transcript record could be lost. A meeting could be recorded as never transcribed after its audio had already been deleted.
  • The command line tools ignored the folder setting, so transcribe, prompt and the importer worked on a different directory than the app.
  • The Claude Desktop extension declared the wrong Node version and would have installed, then died.
  • The landing page pulled its fonts from Google, handing over the IP address of everyone who came to read that nothing leaves your machine. They are served from the site now.

Install

Windows x64. MIN-Setup.exe installs for the current user, so it never asks for an administrator password. The speech models, 642 MiB, are not in the installer: they download the first time you press Record, once.

The installer is unsigned, so Windows will show "Windows protected your PC": click More info, then Run anyway.

Get-FileHash "MIN-Setup.exe" -Algorithm SHA256
# d25a73987993371ab90d0670208690520980275c4026bf9ee995a8fce0020043, 116,787,988 bytes

min.mcpb is the optional Claude Desktop extension: drag it onto the Claude Desktop window to let Claude search and read your meetings locally, including the one you are in.

Get-FileHash "min.mcpb" -Algorithm SHA256
# 84d6907aec8c9e3592474219b83759245b6efe44b9b8246ec011b42d82d21313, 5,429,170 bytes

A note on the history

Every commit in this repository was rewritten before this release to take personal details out of the test fixtures. Commit hashes and tags therefore differ from any clone made earlier. If you have one, re-clone rather than pull.

MIN 1.4.0

Choose a tag to compare

@joshuakeum9-cell joshuakeum9-cell released this 07 Sep 13:25

MIN now notices when a call starts, and is there for it: meeting detection, a tray icon, and start at sign-in.

Meeting detected

When another app opens your microphone, whether that is Zoom, Teams, Chrome running a call, or anything else, a small strip appears in the top right corner saying "Meeting detected" and naming the app. Take notes starts a note and begins recording. The chevron beside it opens a short menu: Open MIN, Turn off notifications for that app, and Change notification settings.

MIN does not listen for any of this. Windows keeps its own record of which programs have used the microphone and when, the record behind the microphone icon in the system tray and the per-app activity under Settings > Privacy & security > Microphone, and MIN reads that record every few seconds. It never opens the microphone to watch for a meeting, so there is nothing to trust it with that you have not already trusted Windows with. It stays quiet while MIN is already recording, and an app you turn off stays off until you allow it again in Settings.

In the tray, and at sign-in

Closing the window no longer quits MIN: it keeps running in the tray, where it can notice the next call. Quit is on the tray icon. The first time the installed app runs it adds itself to your startup apps, hidden, so it is already in the tray when you sign in. Both are settings, under a new "In the background" section, together with the list of apps you have turned notifications off for and an Allow again button beside each.

Install

Windows x64. MIN-Setup.exe installs for the current user, so it never asks for an administrator password. The speech models, 642 MiB, are not in the installer: they download the first time you press Record, once. Make a throwaway recording before you need one.

The installer is unsigned, so Windows will show "Windows protected your PC": click More info, then Run anyway. Verify the download if you like:

Get-FileHash "MIN-Setup.exe" -Algorithm SHA256
# dea49e56319db868edb2b5c94a98d2bcc0d476530ff611686c4cbe9026327bb7, 116,776,357 bytes

Windows Explorer will show it as 111 MB, because it counts in binary units.

min.mcpb is the optional Claude Desktop extension: drag it onto the Claude Desktop window to let Claude search and read your meetings locally, including the one you are in. Its server is unchanged from 1.3.0; only its version number moved.

Get-FileHash "min.mcpb" -Algorithm SHA256
# dc970678f566545b579fd316cd7b349c7f0686f7168a33e5c27e368ed48345c6, 5,423,849 bytes

MIN 1.3.1

Choose a tag to compare

@joshuakeum9-cell joshuakeum9-cell released this 06 Sep 14:04

One fix over 1.3.0: a note's title now saves as you type it.

The title was written once, at Stop

Nothing listened to the title field. Its value was read exactly once, inside the save that runs when you press Stop. A title typed after that, which is when most people decide what a meeting was about, went nowhere, and a corrected title was corrected only on that screen. For an impromptu note started with + New note and titled afterwards, Home went on saying Untitled.

The title now saves as it is typed, within about half a second or the instant you leave the field, whether the meeting is finished or still being recorded. Going to Home first writes anything you just typed, so the list shows the new name even when you click Home in the same motion. A title typed during a recording also reaches the capture marker, so the Claude Desktop extension's "recording now" row shows it, and a recording cut short is recovered under that name.

The folder on disk keeps the name it was created with, so a renamed meeting can still sit in a folder ending -untitled. Every list reads the title from meeting.json, never from the path, and the README says so.

Install

Windows x64. MIN-Setup.exe installs for the current user, so it never asks for an administrator password. The speech models, 642 MiB, are not in the installer: they download the first time you press Record, once. Make a throwaway recording before you need one.

The installer is unsigned, so Windows will show "Windows protected your PC": click More info, then Run anyway. Verify the download if you like:

Get-FileHash "MIN-Setup.exe" -Algorithm SHA256
# b4266f839747d6fb2d278ac3e732f54b8d015c2f81a5ec1d8237f1b5ed2d0337, 116,763,376 bytes

Windows Explorer will show it as 111 MB, because it counts in binary units.

min.mcpb is the optional Claude Desktop extension: drag it onto the Claude Desktop window to let Claude search and read your meetings locally, including the one you are in. Its server is unchanged from 1.3.0; only its version number moved.

Get-FileHash "min.mcpb" -Algorithm SHA256
# 17b2697ae3f59ee0a86f426abcf91ffd8e99b49a02b3e1237a5a2af0c5e58e54, 5,423,849 bytes

MIN 1.3.0

Choose a tag to compare

@joshuakeum9-cell joshuakeum9-cell released this 06 Sep 04:58

Live transcription works for the first time, the recording is on disk before you stop, Claude Desktop can read a meeting while it is happening, and the home screen looks like it was meant to.

Live transcription, actually

Every earlier build had the live transcript fully built and reachable by nobody. Audio frames reached the main process as an ArrayBuffer, the code read a property that does not exist on one, and the result was an empty frame, which the speech worker takes as "this track has ended". The worker finished within fifty milliseconds of loading its models, restarted, and did it again six times before giving up. If you saw "loading the speech model" flashing over and over, that was it. Not one word was ever transcribed live by a shipped MIN.

Fixed, and proven through the app's own buttons and devices: speech played through the speakers, the first line on screen six seconds after it began, median latency half a second from the end of a phrase to its line appearing. The status line no longer calls silent system audio "wrong device, or muted" every two seconds; that is normal when nothing is playing, and it now says so once.

The recording is on disk before you stop

Audio is written into the meeting's folder as it happens, a few seconds at a time, instead of being held in memory until Stop. A crash, a power cut or a forced Windows restart no longer loses the meeting: the next launch finds the part-written files and finishes them into a normal note, with only the last few seconds missing. A three-hour recording no longer grows to over a gigabyte in memory. MIN also asks Windows to stay awake while recording, so a closed lid does not quietly stop the capture and get counted as recorded time.

Two consequences you will notice: a meeting folder exists from the moment you press Record, and if the folder cannot be written to, Record refuses to start rather than failing at the end.

Ask Claude about the meeting while it is happening

The live transcript and the notes you type are written into the meeting's folder as the meeting runs, and the Claude Desktop extension knows the difference between a finished meeting and one in progress. It lists a live meeting as recording now and, asked to read it, returns what has been said and typed so far and says so, so Claude Desktop can answer "what did she say about the deadline" during the call and read again later for newer lines.

That is the whole of MIN's live assistant: no model of its own, no API, no bill. The subscription you already have, reading a file on your own disk. Two limits, stated plainly: lines are grouped by speaker turn, so one person talking at length is one growing paragraph rather than a bubble per sentence; and Claude Desktop reads when asked, it does not watch the file.

Wear headphones on calls. With speakers, your microphone hears the other side too, and a copy degraded by the room does not match closely enough to be recognised as an echo, so the "You" side picks up garbled duplicates. Headphones keep the two sides clean.

The home screen

Matched against the real thing rather than remembered. Full month names, the times at their proper size, the coloured rules the right shape, and the display type is now Newsreader: the previous face was a condensed design that set the same title 27 percent narrower, which is why "Coming up" and the note title read as squished no matter how the tracking was changed.

  • Coming up shows the next 14 days, five meetings at a time, with back and forward arrows and a Today button once you have paged away. Paging is by meeting, so the card is one height whether a day holds one meeting or nine.
  • "+ New note" is impromptu. It adopts no calendar meeting, and pressing Record no longer attaches one. This is a change from 1.2.0, where every recording took the title of whatever calendar event was nearest, so a scratch note started during a lecture came out titled after the lecture. Clicking a meeting in Coming up is how a note gets attached to it: it opens carrying the title, time and attendees, and does not start recording, so you can open it early and type.
  • A prompt about a minute before a meeting, in the corner, with Take notes. It cannot take focus, so it never pulls you off a call. It does not fire while you are already recording, and it does not skip a meeting for having too few people in it, so a lecture or a one-to-one counts.
  • Move to trash on every note row, from the three dots that appear on hover. It uses the operating system's recycle bin, so it is recoverable, and there is no confirmation dialog, deliberately.

Fixes

  • A live worker that restarted quietly could still report the transcript as complete, and the audio behind the gap was then deleted. Both kinds of restart now keep the audio.
  • Replacing a note you have typed into but never recorded now asks first. Its text lives only in the window until a recording gives it a folder, and the meeting prompt made that loss possible at a moment you did not choose.
  • A muted or unplugged device was writing four events a second into meeting.json for the rest of the meeting.
  • The agenda pager stayed on screen after the agenda it steered was gone; the row menu's key listener outlived the menu and ate one Escape; paging and trashing dropped keyboard focus to the page body.
  • A note started from a Coming up row wrote the calendar event to disk twice.
  • The installer carried 95 packages the app never loads. It is smaller than 1.2.0 despite everything above.
  • A failed settings save is now written to settings.log beside settings.json, with the error the operating system gave. If your calendar address keeps disappearing between launches, that file says why; on a machine with a third-party antivirus the likely answer is a blocked write from an unsigned program, and the fix is an exception for MIN-Notes.exe.
  • The live worker's log lost its first line on every fresh profile; the Claude Desktop extension bundle was a tar with a .mcpb name; the third font shipped without its licence notice.

Install

Windows x64. MIN-Setup.exe installs for the current user, so it never asks for an administrator password. The speech models, 642 MiB, are not in the installer: they download the first time you press Record, once, which is usually the moment a meeting starts. Make a throwaway recording before you need one.

The installer is unsigned, so Windows will show "Windows protected your PC": click More info, then Run anyway. Verify the download if you like:

Get-FileHash "MIN-Setup.exe" -Algorithm SHA256
# 15dd87456a1f8d21881c85d9f2cf3723406101eb71edd976284f3969db0b0840, 116,762,441 bytes

Windows Explorer will show it as 111 MB, because it counts in binary units.

min.mcpb is the optional Claude Desktop extension: drag it onto the Claude Desktop window to let Claude search and read your meetings locally, including the one you are in.

Get-FileHash "min.mcpb" -Algorithm SHA256
# 6d19c81e23c5b365b090061021ae3654ef90c6a69de49728551284fe000cbd92, 5,423,848 bytes

MIN 1.2.0

Choose a tag to compare

@joshuakeum9-cell joshuakeum9-cell released this 05 Sep 11:30

Stop is no longer the end of the meeting, there is a pill that tells you it is recording when MIN is hidden, and the transcript is something you can actually work with.

Stop and Resume

Stop ends the capture, not the note. Press the button again and the recording carries on into the same note as another part of it, whether that is thirty seconds later or the next day. The button says Resume rather than Record whenever that is what it will do, and + New note is how you start a fresh one.

This is a change from 1.1.0, where pressing Record with a note open silently started a second, unrelated note. A meeting you paused for a break came back as two folders you had to reconcile by hand.

Each part keeps its own audio, so a resumed meeting has mic-2.wav alongside mic.wav. The transcript stays one file with one clock running through it, so a line from the second part is stamped where it was actually said. The note header then shows two numbers, and both are true: the duration is the audio that was captured, and the span is the wall-clock window it happened in. A one-hour call stopped for a twenty-minute break is forty minutes of audio inside a sixty-minute span.

Nothing on disk is migrated. A meeting you never resume is written exactly as it always was.

You can see that it is recording

MIN's window is behind Zoom for the whole meeting, which is exactly when every sign inside it is invisible. So there is now a small pill that floats above every other window while a recording runs, with the same two-sided levels the note shows, an elapsed clock and a stop button. Click its face to come back to the note, drag it anywhere and it stays there.

It deliberately cannot take focus, so clicking it never pulls focus off your call. It hides itself again whenever MIN is the window in front, and disappears when the recording ends. If audio ever stops arriving, its bars fall back to a gentle idle rather than freezing and continuing to claim they are live.

In the note itself, a round waveform button beside Record does the same job: grey and still when nothing is being captured, olive-green and moving when it is, and clicking it opens the transcript it has been filling.

A transcript you can work with

The transcript is now a card between your notes and the bottom bar, and it stays put while the notes scroll under it.

  • Search inside it. Matching lines stay, with the match highlighted.
  • Click any line to copy it, in the file's own [hh:mm:ss] Me: format, so what you paste matches what is in transcript.md.
  • Stop and Resume in its footer, alongside a reminder to get consent when transcribing others. That belongs where the recording is visible, not buried in a settings page.

Filler words are dropped as the lines are written. Standalone "uh", "um", "hm" and "erm" only, never inside a real word, so "umbrella" and "hummus" keep their letters and "uh-huh" stays whole. It has its own checkbox in Settings and applies to transcripts made from then on. It may also do very little: Parakeet does not emit many disfluencies to begin with.

Fixes

  • Live transcripts were never saved. The transcript filled in on screen for the whole meeting and then transcript.md was never written, so MIN told you to run the write-up and transcribed the same audio a second time. Fixed, and the audio is now deleted once its transcript is safely on disk, which it never was before.
  • The write-up had nowhere to be pasted back. "Paste the answer back into this note" was an instruction with no destination. There is now a box for it.
  • Settings > About showed a blank version and a blank folder, and the calendar test result went nowhere.
  • Links opened inside MIN. The GitHub link in About rendered a live web page in a frameless window with no address bar. Allow-listed links now open in your real browser and everything else is refused.
  • The transcript's speaker label repeated on every line, the level meter was stuck at a third opacity, and the recording dot in the transcript header never appeared at all.

Install

Windows x64. MIN-Setup.exe installs for the current user, so it never asks for an administrator password. The speech models, 642 MiB, download on first launch.

The installer is unsigned, so Windows will show "Windows protected your PC": click More info, then Run anyway. Verify the download if you like:

Get-FileHash "MIN-Setup.exe" -Algorithm SHA256

min.mcpb is the optional Claude Desktop extension: drag it onto the Claude Desktop window to let Claude search and read your meetings locally.

MIN 1.1.0

Choose a tag to compare

@joshuakeum9-cell joshuakeum9-cell released this 05 Sep 06:06

A real home screen, calendar support, and the transcript you can watch while you talk.

Home

MIN now opens on a home screen instead of a blank textarea. Coming up shows your next meetings grouped by day, with the one happening right now marked. Below it, your past notes grouped by Today / Yesterday / date, each with the people who were there. Search across every note and transcript is pinned at the bottom.

The window is a proper document window now rather than a narrow always-on-top strip.

Connect a calendar

Paste your calendar's secret iCal address in Settings (in Google Calendar: Settings > your calendar > "Secret address in iCal format"). Your meetings then appear on Home, and a recording you start during a meeting takes that meeting's title and attendees automatically, so notes name themselves.

No Google sign-in, no OAuth, no "unverified app" warning, and it works the same for everyone who installs MIN. Recurring events, exceptions and time zones are handled.

Watch the conversation as it happens

The transcript is now a two-sided conversation: whoever else is talking on the left in grey, you on the right in green. It fills in while you are still speaking, about a third of a second after each sentence ends, and pressing Stop gives you the finished transcript immediately instead of transcribing the whole meeting afterwards.

MIN records your microphone and your computer's audio as two separate tracks, so unlike tools that analyse one mixed recording, it never has to guess who was speaking.

Honest about the network

Connecting a calendar means MIN fetches that one address on a timer. Your notes and transcripts are still never uploaded anywhere. The README says so plainly.

Installing

Unsigned, so Windows SmartScreen will say "Windows protected your PC": click More info, then Run anyway.

SHA-256: ffb07d15a9a9591887b54eda72d18e0832f9c6c15b322b36cbfa278e51feee56

First launch downloads 642 MiB of speech models once. After that, recording and transcription work offline.

min.mcpb is optional: a Claude Desktop extension that lets Claude read your meetings.

MIN 1.0.2

Choose a tag to compare

@joshuakeum9-cell joshuakeum9-cell released this 04 Sep 23:40

This is the first release that actually runs. 1.0.0 and 1.0.1 did not start: the window appeared and the app closed immediately. If you tried either, please install this one.

What was wrong

The executable's filename. Windows keeps a compatibility database keyed on program names so old software keeps working, and min.exe is generic enough to match an entry in it. That shim broke Chromium's ability to create child processes, so the GPU, network and renderer processes all died the moment the app started, and the app quit.

Renaming the binary to MIN-Notes.exe fixes it. The app is still MIN: the window, the shortcut and the Start menu entry are unchanged.

Verified by installing this exact file and launching it, rather than by reading a build log.

Also in this release

The security fixes from 1.0.1, which never reached a working build:

  • Model downloads are verified against checksums that ship inside the app. Previously the first download on a new machine pinned itself, so the integrity check the README described did not exist for installed users.
  • The microphone and system audio could stay live if the audio pipeline failed to start while the interface showed nothing recording.
  • A recording that produced no recognised speech had its audio deleted anyway. It is now kept.
  • A failed save discarded the recording. It is now kept in memory.

Installing

Unsigned, so Windows SmartScreen will say "Windows protected your PC". Click More info, then Run anyway.

SHA-256: 65be603a87408f09905393df9dd13bbf9acc003f8adbb1b828cd13c087067282

First launch downloads 642 MiB of speech models once. After that, recording and transcription work offline.

min.mcpb is optional: a Claude Desktop extension that lets Claude read your meetings.

MIN 1.0.1

Choose a tag to compare

@joshuakeum9-cell joshuakeum9-cell released this 04 Sep 22:30

Security release. Recommended for everyone on 1.0.0.

MIN-Setup.exe is the app. Download, double-click, install.

What this fixes

Model downloads are now verified against checksums that ship inside the app. In 1.0.0 the checksum file never reached an installed machine, so the first download on a new PC pinned whatever it received and every later run compared against that. The integrity check the README described did not exist for anyone but the developer. The expected hash for every model file now ships in the app itself and a mismatch is refused.

The microphone could stay live with the interface showing nothing recording. If the audio pipeline failed while starting, the error escaped before the cleanup ran, leaving the microphone and system audio capturing. Fixed, and the audio device is released on the way out.

A recording that produced no recognised speech had its audio deleted anyway while being written as an empty transcript, so the recording was gone and could not be retried. The audio is now kept and the app tells you what happened.

A failed save discarded the recording. The audio is now kept in memory so you can retry.

Also: text from your notes can no longer reach the instruction section of the prompt handed to your AI assistant, the renderer sandbox is back on, and an unused HTTP server dependency tree (219 files) has been removed from the installer.

Verifying

The installer is unsigned, so Windows SmartScreen will say "Windows protected your PC". Click More info, then Run anyway. Some antivirus engines flag unsigned Electron installers.

SHA-256: 65ec8f3ec1b8cabbb8b432d63e2e3b218949a0ea7edfe8c189e307dd654c9a61

That hash is published here, on the same page as the file, so it catches a corrupted download but is not a substitute for a code signature.

First launch downloads 642 MiB of speech models once. After that, recording and transcription work offline.

min.mcpb is optional: a Claude Desktop extension that lets Claude read your meetings directly.

MIN 1.0.0

Choose a tag to compare

@joshuakeum9-cell joshuakeum9-cell released this 04 Sep 20:45

First release.

MIN-Setup.exe is the app. Download, double-click, install.

The installer is unsigned, so Windows SmartScreen will say "Windows protected your PC". Click More info, then Run anyway. Some antivirus engines flag unsigned Electron installers too. You can also build it yourself with npm run dist, which avoids both warnings.

SHA-256: 94baabd2385fc65520bb25455d2dff13e1d70940bf95b99c4906de374a468229

First launch downloads 642 MiB of speech models once. After that, recording and transcription work offline.

min.mcpb is optional: a Claude Desktop extension that lets Claude read your meetings directly. Double-click it, or drag it onto the Claude Desktop window.