Skip to content

Releases: ghostwan/SmartMeet

SmartMeet 0.3.0

Choose a tag to compare

@ghostwan ghostwan released this 28 Sep 08:28

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
    FoundationModels framework (macOS 26+). Fully local, no external binary or
    network call — but with a much narrower context window (~4096 tokens,
    measured empirically), so SummaryGenerator now 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 the copilot CLI
    (GitHub Copilot CLI) over the Agent Client Protocol (copilot --acp,
    JSON-RPC over stdio) instead of the opencode client. Gives an exact
    token count per completion without depending on opencode'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 the accountId right 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.sh now folds each
    release's notes into CHANGELOG.md (never cleared, unlike
    RELEASE_NOTES.md) and bumps the single-source-of-truth VERSION file,
    which Scripts/bundle-app.sh stamps into CFBundleShortVersionString
    (with the git commit count as CFBundleVersion).

  • 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 legacy viewpage.action?pageId=…, and ev...
Read more

SmartMeet 0.2.0

Choose a tag to compare

@ghostwan ghostwan released this 15 Sep 22:59

SmartMeet 0.2.0

Added

  • New summary provider: Apple Intelligence (local), using Apple's on-device
    FoundationModels framework (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 official claude CLI 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.

⚠️ This build isn't notarized by Apple (requires a paid developer
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:

  1. Unpack the .dmg and drag SmartMeet.app into /Applications.
  2. 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.app

SmartMeet 0.1.0

Choose a tag to compare

@ghostwan ghostwan released this 13 Sep 22:12

SmartMeet 0.1.0

⚠️ Cette build n'est pas notariée par Apple (nécessite un compte développeur
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 :

  1. Décompresse le .dmg et glisse SmartMeet.app dans /Applications.
  2. 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.app

Pour lever la quarantaine sinon aller dans Réglages Système -> "SmartMeet.app" a été bloqué pour protéger votre Mac -> Ouvrir quand même.

image