Skip to content

Releases: jamesulip/Notero

Notero 1.1.0

Choose a tag to compare

@jamesulip jamesulip released this 08 Sep 14:29

Install

  1. Download Notero-1.1.0.zip and unpack it.
  2. Move Notero.app to /Applications.
  3. For the first launch, right-click Notero → Open. The app is not Developer ID signed, so macOS may block a normal double-click.
  4. Notero requires macOS 15+ and Apple silicon.

On first launch, Notero downloads approximately 1.9 GB of AI model weights from Hugging Face. This is the app's only network request.

What's New

✨ Simple Mode

  • Notero now has two modes, and Simple is the default. It shows your recordings, a Record button, a Transcribe a File button, the transcript and the notes.
  • Advanced shows every control: model tiers, audio controls, the benchmark, decode statistics and transcript revisions. Switch with ⌥⌘A, the mode name at the bottom of the sidebar, or Settings › General › Mode.
  • Drop a file on the window or the Dock icon to transcribe it. Open With › Notero and open -a Notero file.m4a work too.
  • Live text is now off by default. Notero records only and makes the transcript when you stop, so no model loads at launch.
  • The microphone permission is now requested at your first recording instead of on the first-run card.

🎛️ Recording Controls

  • Added a menu bar item with Record, Pause, Resume, Stop and Add a Bookmark, with the recording clock in its menu.
  • Added global shortcuts: ⌃⌥R starts or stops a recording and ⌃⌥P pauses or resumes it, from any app, with no accessibility permission.
  • Added a Pause button (⇧⌘P). The clock, the file and the live text stop, and Resume continues on the same timeline with no gap.

✏️ Transcript Editing

  • Right-click a turn and select Transcribe This Turn Again to redo only that turn. One bad window in a four-hour meeting no longer costs a second decode of the whole meeting.
  • Added File › Export Corrections as References… to write your edits out as a reference set with a scoring summary.
  • Double-click and right-click now act on the whole turn rather than selecting a word.

⚡ Performance

  • Long transcripts open much faster. A 3909-row transcript of a 3 h 51 min meeting is on screen in under a second, and the window no longer waits for it.
  • The info bar, export, search index and editor all read the transcript the same fast way.

🎯 Accuracy

  • Live text now drops words the model places inside a detected pause. On the test clip the word error rate fell from 51.6% to 39.1%.
  • When the room listens through speakers, a room line that repeats a call line is dropped. Remote speech is no longer transcribed twice.

🏷️ Other

  • The Accurate model tier is now called Best, because its accuracy was never measured against Balanced. Your stored setting still selects it.
  • Labels, messages and help text now follow ASD-STE100 Simplified Technical English.

Your existing recordings and notes remain unchanged when updating.

Notero 1.0.1

Choose a tag to compare

@jamesulip jamesulip released this 05 Sep 13:50

Install

  1. Download Notero-1.0.1.zip and unpack it.
  2. Move Notero.app to /Applications.
  3. For the first launch, right-click Notero → Open. The app is not Developer ID signed, so macOS may block a normal double-click.
  4. Notero requires macOS 15+ and Apple silicon.

On first launch, Notero downloads approximately 1.9 GB of AI model weights from Hugging Face. This is the app's only network request.

What's New

🎙️ Improved Audio Recording

  • Record microphone, Mac audio, or both.
  • When recording both, room and call audio are stored on separate channels.
  • Transcripts are generated independently and combined in chronological order.
  • Speakers are identified separately as Room 1, Room 2, Remote 1, Remote 2, etc.
  • You can now select a specific microphone.
  • Added warnings when the selected microphone disconnects.
  • Added clearer audio-permission handling for Mac audio recording.
  • Added a soft limiter to prevent clipping from call audio.

📊 Improved Waveform & Meter

  • Fixed waveform scaling so quiet and loud sections are easier to distinguish.
  • Improved waveform bar spacing and rendering.
  • Added a playhead and progress indicator while the waveform is being generated.
  • Improved the live input meter timing and peak detection.

🛠️ Other

  • Improved audio-device handling during recordings.
  • Improved permission persistence between builds and updates.

Your existing recordings and notes remain unchanged when updating.

Notero 1.0.0

Choose a tag to compare

@jamesulip jamesulip released this 04 Sep 15:39

Install

  1. Download Notero-1.0.0.zip below and unpack it.
  2. Move Notero.app to /Applications.
  3. Right-click the app and select Open for the first start. This app has no
    Developer ID certificate, thus macOS quarantines a bundle that a browser
    downloaded and a double-click gives an error. A right-click and Open is the
    only difference.

Notero needs macOS 15 or later and a Mac with Apple silicon. At the first
start it downloads approximately 1.9 GB of model weights from Hugging Face.
That is the one network request the app makes.


The first release that anyone outside can download. Everything below is in it.

The name

  • The app is Notero. It was Transcriber through the private builds. The
    bundle, the window and the menu carry the new name, and the bundle identifier
    is now local.notero. macOS asks for microphone access one more time after
    the change, because it grants that access per bundle identifier.
  • The Swift modules and ~/Library/Application Support/Transcriber/ keep the
    old name. The directory holds the recordings that the private builds wrote,
    thus a rename there hides them from the app.

Live transcription

  • Each decode now reads 1.5 seconds of committed audio in front of the active
    region. The model therefore does not start cold at a commit boundary. That
    audio is context only. The app drops a word that the model reads again from
    it by time. It drops the boundary word by text when its times drifted. No
    word commits two times.
  • An utterance now ends on the clock of the voice detector and not on the hop.
    After 700 ms of silence, the app decodes all audio up to the pause at one
    time. The agreed prefix commits as usual. The tail commits only if the room
    is still quiet when the decode returns. Before this change, the app saw the
    pause up to 1.5 seconds late and committed the provisional text of the last
    hop. The final second of each utterance was never decoded.
  • The app writes each committed line to the library while the recording runs,
    in batches of approximately one second. After a crash in the middle of a
    meeting, everything up to the last commit is still there. The message on the
    row says so, and Transcribe Again redoes the rest from the working copy.
  • Stop now waits for the decode in flight and examines the tail one more time
    before it commits. Before this change, the app discarded whatever arrived
    after the snapshot.
  • A live segment carries the confidence of the model again. The commit step
    dropped it before.
  • The Stats popover shows the number of closed utterances, final decodes,
    unagreed tail words, forced commits and deduplicated boundary words.

Whole-file transcription

  • A whole-file job now finds the speech and decodes it in 5-minute batches.
    Before this change, the app scanned the complete recording before the first
    call to Whisper, and a long file showed no text for many minutes. The two
    stages stay sequential, thus they do not compete for the Neural Engine.
  • A transcript now appears while a whole-file job runs. The segments of each
    decoded window go into the store as that window finishes. A banner gives the
    stage, the percentage and the time that remains. A job that stops part-way keeps
    what it had, with the label Partial.
  • Speaker identification has three modes in Settings: Off, Fast and Accurate.
    Accurate is the default and examines each turn a second time. Fast does one
    pass and is much quicker on a long recording, but it can merge similar
    voices. The command-line tool takes --fast-diarize for the same purpose.
  • The app stores the duration of each stage with the transcript and shows it in
    the ⓘ popover: Prepare, Find speech, Transcribe, Identify speakers and
    Finalize.
  • The benchmark also reports the tier that finished fastest, with a button to
    select it. A quantized model uses less memory, but it is not the fastest
    model on every generation of Apple silicon.

Speakers and transcripts

  • You can merge two speakers with a right-click in the Speakers pane. You can
    move one turn to a different speaker with a right-click on a transcript line.
    The pane sorts by talk time, draws talk-time bars and marks probable
    fragments.
  • "People in the room" on a recording gives speaker identification a target.
    The target is soft. The app merges clusters that are closer than a relaxed
    distance until it reaches the count. Voices that are clearly different stay
    separate.
  • Transcribe Again names each tier. Identify Speakers Again runs the speaker
    pass alone.
  • Double-click a turn to edit it line by line. An edit keeps the raw model
    output below it, and search and the exports read the edit. You can move a
    line to a different speaker, restore it, or delete it. ⌘Z undoes all edits to
    one turn in one step.
  • A menu in the info bar opens an earlier revision of the transcript.
  • ⌘F finds text in the open transcript and highlights each match in place.
    ⇧⌘F searches the complete library.

Windows, views and controls

  • The window now works down to 300 pt wide. Before this change, the columns
    kept their widths and the window overflowed. That cropped the left edge of
    the sidebar and the right edge of the inspector. The inspector now folds
    below approximately 1060 pt, and its toolbar button gives the reason. The
    sidebar folds below 800 pt. Both return when the window becomes wider, and
    the toolbar toggle still opens the sidebar in a narrow window. The transcript
    header, the info row, the player bar, the buttons and footer of the live
    view, the sidebar filter and the first-run card each have a compact form.
  • Playback keeps the current turn in view. If you scroll by hand, the app stops
    this. The Follow button, or the "Follow playback" pill, starts it again.
  • Settings is a resizable window with General, Audio, Models and Storage panes.
    You can download a model before you need it, with progress, or delete it.
  • "Transcribe while recording" now does what its name says. If it is off, the
    Mac only records during the meeting, and the whole-file pass makes the
    transcript after you stop.
  • Sidebar: double-click a recording, or use Rename, to retitle it in place. An
    Active filter shows what records or transcribes now. The status chip gives
    the time that remains. If you import a file that matches one in the library,
    the app asks before it makes a second copy.
  • Export: Markdown minutes with attendees, summary, action items with
    checkboxes, and then the transcript. The Export menu also gives Copy as Text
    and Copy as Markdown. You can export selected speakers only, or one time
    range only. The app remembers the last format.
  • The app stores a warning about an imperfect job with the recording, and shows
    it in the sidebar, the header and the info popover. A background job that
    fails no longer opens an alert over the current view. The live footer keeps
    the model and the language and moves the engineering numbers into Stats.
  • Meeting workspace: the panel is the system inspector, and you can resize it
    by drag. It remembers its open state separately for a recording and for a
    meeting. Each tab shows a count. A quick-add row at the top takes a note of
    any kind. An empty note kind collapses to one add row.
  • Each speaker has a coloured initials badge. ⌘[ and ⌘] step through the turns.
    ⌥↑ and ⌥↓ change the speed. View › Show Times of Day (⌥⌘T) shows the time of
    day of each turn instead of the offset from the start. Hover on a bookmark
    tick on the waveform to see its label, and click the tick to go there.
  • First run: a card in the empty pane checks microphone access, offers the
    speech model download with progress, and sets the language. It does this
    before your first ⌘R.
  • A model download before a recording, or before a whole-file job, shows a
    progress bar and a percentage instead of a spinner.
  • If you stop a recording under ten seconds, the app asks Keep or Discard.

Releases

  • The app does not update itself. It downloads no code, checks no
    signature and replaces no bundle. It therefore makes one network request
    only: the model download at the first start.
  • Notero ▸ Releases on GitHub… opens the releases page in your browser.
    Settings ▸ About holds the same link, with the version of this copy. To move
    to a newer version, get the zip from that page and replace the app.
  • app/scripts/release.sh builds, packages and publishes a release.
    docs/RELEASE.md gives the procedure.

Tools and the build

  • transcribe --live replays a file through the live path, with --hop,
    --pre-roll, --context, --adaptive-hop and --realtime. --json writes
    a machine-readable report. eval/compare_language.py compares forced tl
    against auto and reports Filipino and English word error rates and a
    code-switch error rate. An adaptive hop is available behind
    SessionConfig.adaptiveHop. The default is off.
  • The build writes the version from app/VERSION and the commit count into the
    bundle. GitHub Actions runs swift build and swift test on each push.
    app/scripts/snap.sh makes a screenshot of the app for a visual check.
    AppState is now several files, one for each concern. You can select several
    sidebar rows and delete them together. A failed recording goes under Needs
    Attention.
  • README.md now shows the app. app/scripts/make-demo-meetings.sh builds the
    three synthetic Taglish meetings behind those screenshots, thus no real
    meeting goes into this repository. Its comments give the CFFIXED_USER_HOME
    route to a demo library that leaves your own recordings alone.