Repository navigation
Releases: ghostwan/SmartMeet
Release list
SmartMeet 0.3.0
SmartMeet 0.3.0
Added
-
New built-in meeting type, Compte rendu court ("Short summary"): only
three sections (TL;DR, decisions, action items) instead of the usual six,
with instructions telling the model not to restate the same information
across sections — for whoever wants the gist, not an exhaustive account.
Not enabled by default on existing profiles; add it from Settings ›
Types de réunion. -
New Settings › Transcription › Stockage: the folder where every
meeting's audio, transcript and generated minutes are stored on disk can
now be chosen freely instead of always being
~/Library/Application Support/SmartMeet. Global (shared by every
profile, since they all read the same physical store), and only affects
recordings made after the change — existing meetings stay where they are. -
One-to-one minutes can now also be saved as a markdown file to a local
folder, in addition to wherever they're published — a default folder for
the whole profile, overridable per person in Settings > One-to-one. -
Meeting types can now choose the profile's default destination or a specific
parent page for either Notion or Confluence. The review window can override
both service and page for one publication without modifying the type. -
New summary provider:
Apple Intelligence (local), using Apple's on-device
FoundationModelsframework (macOS 26+). Fully local, no external binary or
network call — but with a much narrower context window (~4096 tokens,
measured empirically), soSummaryGeneratornow lets a provider advertise
its own map-reduce chunk-size limit (maxPromptCharacters) instead of
always using the generic 48 000-character threshold. -
New summary provider:
copilot (ACP), talking to thecopilotCLI
(GitHub Copilot CLI) over the Agent Client Protocol (copilot --acp,
JSON-RPC over stdio) instead of theopencodeclient. Gives an exact
token count per completion without depending onopencode's NDJSON
output format. -
The app UI (menu bar, settings, review window, notifications) and all
user-facing error messages are now localized in French, English, Spanish,
Portuguese and Italian, following the system language. macOS permission
prompts (microphone, system audio, calendar, speech recognition) are
localized too. -
The meeting type is now guessed from the meeting's title (calendar event
or conferencing app), e.g. "Daily" or "standup" selects the Daily template,
"retro"/"rétrospective" the Retrospective one, "sync"/"synchro" the Sync
one — including custom templates, matched by name. Only applies as long as
the picker hasn't already been changed by hand. -
Added
SpikeAX, a diagnostic spike (Scripts/bundle-spike.sh SpikeAX) that
dumps Microsoft Teams' accessibility tree, to assess whether per-speaker
names could be derived from Teams during transcription. -
New "One to One" meeting type: picking it prompts for who the 1:1 is with
(suggested from calendar attendees or known people), and the published
Confluence page is restricted to only the current user and that person
(best effort — restricting the other person specifically requires their
email to resolve to a Confluence account, which isn't guaranteed on every
site; the page always stays at least private to the current user). -
SmartMeet now notices when the tracked conferencing app (Teams, Zoom…) has
stopped using the microphone for a while during a recording, and proposes
— via a notification, never automatically — to stop and generate the
minutes. A 90 s grace period absorbs brief interruptions (network hiccup,
muting the app on purpose) so a short cut doesn't end the recording on
your behalf; dismissing the suggestion snoozes it for 5 minutes. New
setting to disable it (on by default): Settings › Meeting detection. -
One-to-one counterpart field (menu bar and review window) now has a
magnifying-glass button next to it to search Confluence accounts directly
by display name, instead of having to know and type their e-mail address.
Picking a result resolves theaccountIdright away, which is also more
reliable at publish time than the e-mail search (some Cloud sites restrict
it for GDPR reasons). -
New Settings › One-to-one tab: recurring 1:1 counterparts are configured
once, each with its own publication destination (a specific Confluence or
Notion page, overriding the meeting type's own destination) and an e-mail
to add as a watcher on every Jira ticket created from their action items.
Recording a one-to-one is now a matter of picking a configured name from a
list — no more retyping an e-mail or destination page every time. -
The review window now offers "Supprimer le local" once a meeting has been
published (Confluence and/or Notion): unlike the existing audio/transcript
cleanup, this also removes the generated minutes and metadata from this
machine entirely — the already-published page is unaffected and stays the
sole remaining copy. -
The review window now lets you confirm who was actually present before
generating the minutes (and correct it before regenerating): the
transcript itself only ever carries audio-track labels ("Moi"/
"Participants") or generic diarization clusters ("Locuteur 2"), never real
names, which was the root cause of decisions and action items sometimes
getting attributed to the wrong person. The confirmed roster is now
passed to the model as a closed, explicit list to attribute statements
against. -
Any meeting type (not just the "One to One" one) can now restrict who is
allowed to view its published Confluence page beyond its author, on top of
whatever the type itself already enforces. A default list of people is
configured per meeting type in Settings › Types de réunion, and stays
editable per meeting from the review window before publication, using the
same Confluence search picker as the one-to-one counterpart. -
The review window now lets you change the minutes' language and regenerate
from there, next to the existing meeting-type picker — no need to redo the
recording to fix a language chosen by mistake, or to get the same minutes
in another language. -
The transcript sheet (review window › "Transcription") is now editable
instead of read-only: a mis-transcribed proper noun or a garbled sentence
can be corrected and saved, then the minutes regenerated straight from the
corrected text ("Enregistrer et régénérer"). -
New "What's New" window, showing the bundled
CHANGELOG.md(always in
English, regardless of the app's own localized UI): opens automatically
the first time a new version is launched, and stays reachable anytime from
a sparkles button in the menu bar.Scripts/release.shnow folds each
release's notes intoCHANGELOG.md(never cleared, unlike
RELEASE_NOTES.md) and bumps the single-source-of-truthVERSIONfile,
whichScripts/bundle-app.shstamps intoCFBundleShortVersionString
(with the git commit count asCFBundleVersion). -
End-of-meeting detection now also considers the calendar event's scheduled
end time as a signal on its own, independent of the conferencing app —
catches a network drop or a call that quietly stays "active" from Core
Audio's point of view well past the meeting's actual end. More
importantly, a suspected end now pauses the recording (releasing the
microphone and system-audio capture) instead of only sending a
notification and continuing to record: a missed or dismissed notification
used to mean hours of pointless dead-air recording. The paused session can
be resumed exactly where it left off, or stopped and its minutes
generated, from either the notification or a persistent in-app banner (for
whoever isn't at their Mac to see the system banner). New hard safety net,
independent of the above and on by default: Settings › Détection des
réunions can cap a recording's total duration (default 4h) — past it, the
session stops and its minutes generate automatically, no confirmation
asked, for the meeting that's simply been forgotten and left running.
Changed
-
One-to-one minutes are now titled "One to one avec {Nom}" (or "with {Name}"
in English) instead of whatever title the model came up with, as soon as
the counterpart is set — consistent and identifiable at a glance across a
list of recurring 1:1s. The one-to-one counterpart is also now
automatically added to the confirmed participants list sent to the model,
instead of only being used for the title and page restriction: no more
re-typing their name a second time in "Participants" to get their
statements correctly attributed. -
The review window's "Créer les tickets Jira" checkbox now defaults to
unchecked instead of checked — creating Jira tickets from action items is
now an explicit, opt-in choice on each publication rather than something
to remember to turn off. -
Settings › One-to-one's restriction field now accepts either a display
name or an e-mail, and its magnifying-glass button searches Confluence
straight off whatever is typed there instead of opening a second, separate
search field. Picking a match also prefills the Jira watcher e-mail below
it if that field was still empty. -
The README now includes English screenshots rendered from isolated mock
profiles and meetings, with no real user data or credentials. -
Confluence destinations are simplified to a default parent page or a
specific page; the previous current-sprint and per-template space concepts
are no longer used. Without a configured parent, SmartMeet targets the
user's personal Confluence space.
Fixed
- A Confluence folder URL (
/wiki/spaces/KEY/folder/12345/Title) entered
as a publication destination — default parent, a meeting type's, or a
one-to-one person's — was rejected: the URL parser only recognized page
URLs (/pages/…) and the legacyviewpage.action?pageId=…, and ev...
SmartMeet 0.2.0
SmartMeet 0.2.0
Added
- New summary provider:
Apple Intelligence (local), using Apple's on-device
FoundationModelsframework (macOS 26+). Fully local, with a smaller context
window handled by provider-specific map-reduce chunking. - New summary provider:
copilot (ACP), talking to GitHub Copilot CLI through
the Agent Client Protocol with structured responses and exact token counts. - New summary provider:
Claude Code, using the officialclaudeCLI in
non-interactive JSON mode and reporting Anthropic token/cache usage. - The app UI, permission prompts, notifications and user-facing errors are
localized in French, English, Spanish, Portuguese and Italian. - Meeting types are inferred from calendar/conferencing titles, including
custom template names. - Added
SpikeAX, a Microsoft Teams accessibility-tree diagnostic spike. - New One-to-One meeting type with participant selection and best-effort
Confluence page restriction to the two participants. - End-of-meeting detection proposes stopping after the conferencing app has
stopped using the microphone for 90 seconds, with a five-minute snooze. - Profiles scope meeting types, vocabulary, known people, transcription and
output languages, behavior preferences, publication services, credentials,
automatic publication and task/ticket settings. - Each profile can now choose which minutes languages appear in the picker.
New profiles offer English only by default; 13 more common spoken languages
can be added under Settings › Minutes. - Each publication service can now independently include or omit the raw
transcript. When enabled, it is appended at the bottom in a collapsed
native accordion on both Confluence and Notion. - Notion can now publish selected action items as tasks in an existing data
source or in a task database created directly from SmartMeet. Tasks carry
compatible owner, due-date and type properties plus a backlink to the
meeting minutes. - Each meeting type can now select its publication service or inherit the
profile default. Confluence-specific parent/space options only appear for
Atlassian destinations, while Notion uses the profile's configured parent.
Changed
- The neutral Generic meeting is the sole type in a fresh profile and is
always displayed first. Other supplied templates are added explicitly from
the+menu, alongside blank custom templates. - Built-in type names are localized in the five UI languages, while custom and
user-renamed names remain verbatim. - Meeting-type settings now show only types added to the active profile.
Supplied types can be removed and re-added without losing edits; resetting
an override is a separate action. - Known people are now scoped per profile rather than shared globally.
- Automatic publication now follows the meeting type's service, then the
profile default or its only configured service when unambiguous. Jira
creation remains specific to Atlassian profiles.
Fixed
- Release builds no longer emit an unsafe-pointer warning from the Core Audio
scalar-property helper. - Notion's connection-test button enables immediately after entering a token,
even when Notion is the profile's only publication service. - Automatic and notification-triggered publication now route through the
meeting type/profile service instead of remaining hard-coded to Atlassian.
account). macOS will show a warning the first time you open it — that's
expected for software distributed outside the App Store, not a sign of
danger.
To open it despite the warning:
- Unpack the
.dmgand dragSmartMeet.appinto/Applications. - Right-click the app → Open, then confirm in the popup (once).
If macOS refuses even that option ("App is damaged" on some versions),
lift the quarantine flag from the command line:
xattr -cr /Applications/SmartMeet.appSmartMeet 0.1.0
SmartMeet 0.1.0
payant). macOS affichera un avertissement à la première ouverture — c'est normal
pour un logiciel distribué hors App Store, pas un signe de danger.
Pour l'ouvrir malgré l'avertissement :
- Décompresse le
.dmget glisseSmartMeet.appdans/Applications. - Clic droit sur l'app → Ouvrir, puis confirme dans la popup (une seule fois).
Si macOS refuse même cette option (« App is damaged » sur certaines versions),
lève la quarantaine en ligne de commande :
xattr -cr /Applications/SmartMeet.appPour lever la quarantaine sinon aller dans Réglages Système -> "SmartMeet.app" a été bloqué pour protéger votre Mac -> Ouvrir quand même.
