תכונות, ועד כמה הפורט התקדם
Mila על macOS היא קו הבסיס: כל תכונה למטה היא תכונה שלה, והעמוד הזה
מציין עד כמה OpenMila התקדמה ב-Linux וב-Windows. גרסה
1.9.5-beta.2+port.5,
בעקבות Mila v1.9.5-beta.2.
במבט חטוף
| Capability | Mila macOS | OpenMila Linux | OpenMila Windows |
|---|---|---|---|
| Record mic / system / meeting | baseline | done | written |
| Per-app audio capture | baseline | done | written |
| Hebrew and English transcription | baseline | done | written |
| GPU acceleration (Vulkan) | baseline | done | written |
| Speaker names (diarization) | baseline | done | written |
| Dictation hotkeys | baseline | done | written |
| AI summaries and action items | baseline | done | written |
| Local AI setup (Ollama) | n/a | done | written |
| MCP server for AI tools | baseline | done | written |
| Auto-update | baseline | partial | partial |
| Native installer / package | baseline | done | written |
done נבדק בפועל על אותה מערכת; partial עובד עם מגבלה מוצהרת; written נבנה ועובר ב-CI אך עדיין לא רץ על שולחן עבודה אמיתי של Windows; n/a היא תכונה של הפורט בלבד ש-Mila לא כוללת. הדרישות נמצאות בעמוד ההורדה.
כל תכונה, בפירוט
שורה אחת לכל תכונה של Mila, נוצרת מתוך docs/port/PARITY.md. Mila על macOS היא קו הבסיס בכל שורה, מוצהר כאן פעם אחת ולא נטען מחדש בכל שורה: הפרויקט הזה לא בונה, בודק או מפיץ את Mila עבור macOS, כך שהקריאה הכנה של כל שורה היא "Mila עושה את זה, והנה עד כמה כל פורט התקדם". done דורש ראיה על אותה מערכת: בדיקה, CI, הבדיקה העצמית חסרת הממשק, או הרצה של האפליקציה. אף שורת Windows לא מסומנת done, כי אף אחד עדיין לא הריץ אף אחד מהם על שולחן עבודה של Windows. איפה זה עדיין חסר היום מפרט את הפריטים הפתוחים.
הקלטה ולכידה
| # | יכולת | Mila macOS | OpenMila Linux | OpenMila Windows |
|---|---|---|---|---|
| 1 | Microphone recording, device picker, pinned input, live input level | בסיס | בוצע miniaudio, openmila-cli devices and record |
נכתב same capture code, WASAPI backend |
| 2 | System audio from one chosen app | בסיס | בוצע PipeWire links a capture stream to the chosen application's output ( pw-record --target), with whole-system monitors still offered; verified with openmila-cli app-audio (3.07 s captured from one player, peak 0.78) |
נכתב WASAPI process loopback binds a capture client to the chosen process tree, with the whole-system monitors still offered. It compiles in CI and nothing has run it: no Windows machine has been available to this port |
| 3 | Meeting mode: mic + app audio mixed to one mono 16 kHz WAV | בסיס | בוצעPort/Recording/RecordingSession.swift, RecordingTests |
נכתב |
| 4 | Independent mic / app-audio toggles | בסיס | בוצע | נכתב |
| 5 | Pause and resume with the paused span absent from audio and timer | בסיס | בוצעRecordingTests |
נכתב |
| 6 | Folder and meeting name chosen at record start | בסיס | בוצע | נכתב |
| 7 | Adaptive gain control for quiet mics | בסיס | בוצע upstream's AdaptiveGainController, vDSP calls behind the Accelerate shim |
נכתב |
| 8 | Mic stall watchdog and app-audio restart with backoff | בסיס | בוצע the session watches the frame count every second and restarts a capture that stops moving, with upstream's timeout and its backoff, and reports it when the device cannot be reopened. Upstream's policy types were not compiled off macOS at all before this ( CaptureWatchdogTests) |
בוצע the same code, one watchdog for both systems |
| 9 | Mic bring-up timeout with an error that names the device | בסיס | בוצע | נכתב |
| 10 | Refuse to transcribe an empty capture, duration read from the file | בסיס | בוצע | נכתב |
| 11 | AAC .m4a recordings |
בסיס | בוצע ffmpeg where it is installed, GStreamer otherwise, which a GNOME or KDE install almost always has. Proven by a round trip: WAV to AAC and back transcribes to the same sentence |
חלקי the same two routes are tried, but neither ships in the zip, so it depends on what the machine has |
| 12 | Configurable recordings directory | בסיס | בוצע plain paths, no security-scoped bookmarks |
נכתב |
| 13 | Storage cap, respected by dictation | בסיס | בוצע upstream code, unchanged |
נכתב |
| 14 | Auto-discard accidental clips | בסיס | בוצע upstream code, unchanged |
נכתב |
| 15 | Sleep and screen-lock guard while recording | בסיס | בוצעgnome-session-inhibit, systemd-inhibit fallback |
נכתבSetThreadExecutionState |
| 16 | Crash-recovered WAV header repair | בסיס | בוצע upstream WAVHeaderRepair, WAVHeaderRepairTests runs off macOS |
נכתב |
| 17 | Meeting detection (Zoom, Teams, Meet, Proton Meet) with prompts to start and stop | בסיס | בוצע native apps come from /proc on every session. A meeting in a browser tab is found by window title, from X11 where a display answers and from the accessibility bus on a Wayland session, where the display protocol refuses by design. Verified live: the accessibility walk reads Wayland-native window titles on GNOME 26.04 with the desktop switch still off. Firefox and Chromium publish their windows only once accessibility is on (gsettings set org.gnome.desktop.interface toolkit-accessibility true), and the app says so rather than finding nothing quietly |
נכתב process names via CreateToolhelp32Snapshot, window captions via EnumWindows; Windows places no Wayland-style restriction on reading them, so a tab meeting is detectable on every session. MeetingTitleTests covers the shared patterns on both systems |
| 18 | Live level meters and elapsed clock without re-rendering the app | בסיס | בוצעRecordingMeters, observed by the leaf view only |
נכתב |
תמלול
| # | יכולת | Mila macOS | OpenMila Linux | OpenMila Windows |
|---|---|---|---|---|
| 19 | On-device whisper.cpp, ivrit.ai large-v3 (Hebrew) and large-v3-turbo (English) | בסיס | בוצע built with the Vulkan backend; a real GPU is used, a software Vulkan device is refused because it is slower than the CPU backend, and a machine with neither runs on the CPU. openmila-cli gpu reports what was found. Not yet measured on real GPU hardware |
נכתב the same code, and CI installs the Vulkan SDK so the backend is compiled into the release zip. Never run on a Windows machine, with or without a GPU |
| 20 | CoreML / ANE encoder and its banner | בסיס | לא רלוונטי no ANE; .mlmodelc downloads skipped |
לא רלוונטי |
| 21 | First-launch model download with progress and SHA-256 verification | בסיס | בוצע verified by downloading both models |
נכתב |
| 22 | Model deletion frees the whole install and keeps the choice sane | בסיס | בוצע upstream ModelManager |
נכתב |
| 23 | Recording language Hebrew or English, model routed per language | בסיס | בוצע | נכתב |
| 24 | Remote transcription on any OpenAI-compatible endpoint | בסיס | בוצע upstream code with the port's SecretStore; exercised against scripts/mock-openai-transcription-server.py |
נכתב |
| 25 | Neural VAD (Silero) and hallucination reduction | בסיס | בוצעTranscriptionCore as-is, weights bundled |
נכתב |
| 26 | Live transcription while recording, mic and app audio | בסיס | בוצע | נכתב |
| 27 | Live transcript editing, copy, mid-recording SRT export | בסיס | בוצעPort/App/Sources/Views |
נכתב the app builds on Windows with the WinUI backend (CI packages a zip); nothing has run it |
| 28 | Hardware gate for Live AI on weak machines | בסיס | בוצעSystemCapabilities twin reads RAM and activeProcessorCount |
נכתב |
| 29 | Transcription queue with no stuck items after relaunch | בסיס | בוצע upstream TranscriptionService |
נכתב |
| 30 | Re-transcribe a recording, speaker names re-attached | בסיס | בוצע | נכתב |
| 31 | Import and transcribe existing audio files | בסיס | בוצעFileTranscriber twin; watched-folder import verified word for word |
נכתב |
| 32 | audio_ctx speed-up and beam search 5 |
בסיס | בוצעTranscriptionCore unchanged |
נכתב |
דוברים
| # | יכולת | Mila macOS | OpenMila Linux | OpenMila Windows |
|---|---|---|---|---|
| 33 | Speaker diarization with pyannote, bundled Python runtime, torch on first enable | בסיס | בוצעdiarization/build-bundle-linux.sh, proven by openmila-selftest diarize (torch 2.2.2 installed at runtime, turns returned) |
נכתבbuild-bundle-windows.ps1 builds the runtime in CI (run 35546341637, the first time it has ever been run). Nothing has loaded that runtime or diarized with it |
| 34 | Live speaker labels during recording | בסיס | בוצע upstream LiveSpeakerDiarizer |
נכתב |
| 35 | A colour per speaker | בסיס | בוצע port theme palette |
נכתב the app builds on Windows with the WinUI backend (CI packages a zip); nothing has run it |
| 36 | Speaker directory: name, rename, merge, un-name, naming mid-recording | בסיס | בוצע | נכתב the app builds on Windows with the WinUI backend (CI packages a zip); nothing has run it |
| 37 | Cross-recording voice recognition, opt-in, deletable | בסיס | בוצע upstream OfflineVoiceEmbedder, SpeakerProfileStore |
נכתב |
| 38 | Diarization toggle mid-recording takes effect immediately | בסיס | בוצע | נכתב |
הכתבה
| # | יכולת | Mila macOS | OpenMila Linux | OpenMila Windows |
|---|---|---|---|---|
| 39 | Global hotkeys for English and Hebrew, configurable, conflict-checked | בסיס | בוצעXGrabKey where an X display answers (including XWayland), the XDG GlobalShortcuts portal on a pure Wayland session. Both paths pick themselves and were exercised with openmila-cli hotkey; a key press through the portal still needs a human at a Wayland desktop to confirm |
נכתבRegisterHotKey on a dedicated message thread |
| 40 | Dictation overlay pill with live text, level and busy state | בסיס | בוצע app window; no layer-shell, so it is an ordinary always-on-top window |
נכתב the app builds on Windows with the WinUI backend (CI packages a zip); nothing has run it |
| 41 | Paste at the cursor into the previous app, with clipboard fallback | בסיס | בוצעxdotool or wtype where they are installed, the RemoteDesktop portal on a Wayland session once the user grants it (openmila-cli grant-typing, or the Settings button), and the clipboard with a notification otherwise. Dictation never waits on the consent dialog: without permission it falls back in 0.1 s |
נכתב clipboard plus SendInput Ctrl+V |
| 42 | Dictations saved under History | בסיס | בוצע | נכתב |
יכולות בינה מלאכותית
| # | יכולת | Mila macOS | OpenMila Linux | OpenMila Windows |
|---|---|---|---|---|
| 43 | Providers: Claude, Cursor, Gemini CLIs and any OpenAI-compatible endpoint | בסיס | בוצע real claude CLI produced a summary in 8 s |
נכתב.cmd shims run through cmd /c |
| 44 | Managed Claude install with checksum and signature checks | בסיס | בוצע as the platform allows - the linux-x64 manifest key and the published SHA-256 are verified before anything runs. There is no signature to check: Anthropic signs the macOS binary through Apple's notary service and ships the Linux one unsigned, so the port's SignatureVerifier fails closed rather than pretending to verify |
חלקיwin32-x64 key, Authenticode verified with the signer's name checked; browser sign-in needs a real terminal until a ConPTY path replaces the POSIX pseudo-terminal |
| 45 | Suggested recording names | בסיס | בוצע | נכתב |
| 46 | Automatic summary after each recording, backfill, regenerate, .summary.txt |
בסיס | בוצע | נכתב |
| 47 | Send to LLM with a custom prompt | בסיס | בוצע | נכתב |
| 48 | Live AI rolling summary and action items with a per-recording context box | בסיס | בוצע | נכתב the app builds on Windows with the WinUI backend (CI packages a zip); nothing has run it |
| 49 | AI output language, per-feature prompts with an undo stack | בסיס | בוצע | נכתב the app builds on Windows with the WinUI backend (CI packages a zip); nothing has run it |
| 50 | Every CLI invocation logged with credentials redacted | בסיס | בוצעOpenMilaLogging redacts unless OPENMILA_LOG_PRIVATE=1 |
נכתב |
ספרייה וממשק
| # | יכולת | Mila macOS | OpenMila Linux | OpenMila Windows |
|---|---|---|---|---|
| 51 | Sidebar: Home, All Transcriptions, folders with drag-and-drop, Dictations, watched folders, Recently Deleted | בסיס | בוצע SwiftCrossUI + GTK4 |
נכתב the app builds on Windows with the WinUI backend (CI packages a zip); nothing has run it |
| 52 | Detail view: playback, click to seek, 0.5x-2x speed, transcript follows playback | בסיס | בוצע speed goes through a WSOLA time stretcher, so pitch is preserved ( StretchTests); the stretched audio also transcribes to the same words at 0.75x and 1.5x, which is the intelligibility check a frequency test cannot give |
נכתב the app builds on Windows with the WinUI backend (CI packages a zip); nothing has run it |
| 53 | Post-recording popup and rename sheet with summary and action items | בסיס | בוצע | נכתב the app builds on Windows with the WinUI backend (CI packages a zip); nothing has run it |
| 54 | Right-click context menu on recordings | בסיס | בוצע GTK GtkPopover via a button-3 gesture |
נכתב the app builds on Windows with the WinUI backend (CI packages a zip); nothing has run it |
| 55 | Copy and share transcript with speaker labels, SRT export, timestamps | בסיס | בוצע | נכתב core only |
| 56 | Hebrew RTL rendering per section | בסיס | בוצע Pango handles bidi; direction decided per block by upstream's HebrewDetection |
נכתב the app builds on Windows with the WinUI backend (CI packages a zip); nothing has run it |
| 57 | Hide recents toggle | בסיס | בוצע | נכתב the app builds on Windows with the WinUI backend (CI packages a zip); nothing has run it |
| 58 | Settings with all nine sections | בסיס | בוצע | נכתב the app builds on Windows with the WinUI backend (CI packages a zip); nothing has run it |
| 59 | "What's New" before an update | בסיס | בוצע notes from the GitHub release body |
נכתב the app builds on Windows with the WinUI backend (CI packages a zip); nothing has run it |
| 60 | Main menu commands and keyboard shortcuts | בסיס | בוצע as the platform allows - every command has its keyboard shortcut in the app. There is no menu bar to put them in: GNOME removed the global menu, and a Mac-style menu bar is not a thing a Linux application can have. The shortcuts are listed in Settings instead |
נכתב the app builds on Windows with the WinUI backend (CI packages a zip); nothing has run it |
| 61 | Diagnostic report export, credentials redacted, logs attached | בסיס | בוצעDiagnosticSnapshotProvider twin over the port's own log files |
נכתב |
| 62 | Sidebar material chrome | בסיס | בוצע as the platform allows - layered translucent surfaces stand in for .regularMaterial. The blur behind them is the compositor's to give, and GTK 4 cannot ask for it; the look is close, not identical, and that is where it stops |
נכתב the app builds on Windows with the WinUI backend (CI packages a zip); nothing has run it |
אינטגרציות
| # | יכולת | Mila macOS | OpenMila Linux | OpenMila Windows |
|---|---|---|---|---|
| 63 | iPhone Voice Memos sync | בסיס | בוצע as watched folders - the same start-date and destination rules over any synced directory (iCloud discovery is macOS-only); inotify watcher, per-folder toggles |
נכתבReadDirectoryChangesW |
| 64 | .milaconfig one-click team setup |
בסיס | בוצע the packages declare application/x-milaconfig with a *.milaconfig glob and refresh the MIME database on install and removal, so a double-click opens OpenMila; update-mime-database accepts the definition |
חלקי the app reads a path from argv; the installer has no file association yet |
| 65 | Obsidian export and vault git sync | בסיס | בוצעgit from PATH |
נכתב |
| 66 | MCP server with the consent gate | בסיס | בוצעopenmila-mcp through Claude Code: refused with consent off, listed recordings with it on |
נכתב builds and ships in the Windows zip; nothing has run it there |
| 67 | Self-hosted server docs | בסיס | בוצעdocs/self-hosted-server, docs/openmila/REMOTE_SERVER.md |
בוצע same docs |
עדכונים, הרשאות ומערכת
| # | יכולת | Mila macOS | OpenMila Linux | OpenMila Windows |
|---|---|---|---|---|
| 68 | Auto-update with a beta channel and a pre-release guard | בסיס | בוצע for the AppImage - the check, the beta channel and the pre-release guard, plus an install step that verifies the published SHA-256 and replaces the running AppImage ( SelfUpdateTests); a .deb install is sent to the release page, since that belongs to the package manager |
חלקי the check works; the zip has no self-install |
| 69 | Permission prompts for microphone, screen recording, accessibility | בסיס | לא רלוונטי no per-app permission gates; PipeWire and portal dialogs appear where the session requires them |
לא רלוונטי the microphone privacy setting is the OS's own |
| 70 | Keychain storage for API keys | בסיס | בוצע the desktop keyring through libsecret (GNOME Keyring, KWallet, KeePassXC), with 0600 files where no Secret Service answers ( SecretServiceStoreTests) |
נכתב DPAPI |
| 71 | Privacy-safe logging | בסיס | בוצע | נכתב |
| 72 | Stable code signing so permissions survive updates | בסיס | לא רלוונטי | לא רלוונטי |
איפה זה עדיין חסר היום
ב-Linux
- זיהוי פגישות לא מזהה פגישות בדפדפן בסשן Wayland טהור. אפליקציות טבעיות מזוהות מ-
/procבכל סשן, ופגישה בכרטיסיית דפדפן נקראת מכותרת החלון, שרק X11 ו-XWayland חושפים. לקוח Wayland לא יכול לראות את החלונות של לקוח אחר מעצם התכנון, כך שאין מה לקרוא. - נתיב קיצור הדרך הגלובלי של Wayland עדיין לא אושר על ידי אדם. ה-portal XDG
GlobalShortcutsמחובר ונבחר מעצמו כשאין תצוגת X שעונה, ונבדק עםopenmila-cli hotkey, אבל לחיצת מקש בפועל בשולחן עבודה של Wayland עדיין לא נצפתה. - Vulkan מעולם לא נמדד לזמן. הליבה מקומפלת והבדיקה נבדקת, אבל למחשב הפיתוח אין GPU, כך שאף תמלול לא נמדד על אחד כזה.
- התקנת Claude המנוהלת מאמתת checksum, ואין חתימה לאמת. Anthropic מאשרת (notarize) את הבינארי של macOS דרך Apple ומספקת את זה של Linux ללא חתימה, כך שמאמת הפורט נכשל סגור במקום להעמיד פנים.
- אין סרגל תפריט ב-GNOME. GNOME הסירה את התפריט הגלובלי, וסרגל תפריט בסגנון Mac הוא לא משהו שאפליקציית Linux יכולה לקבל, כך שלכל פקודה יש קיצור מקלדת משלה ובהגדרות מופיעה הרשימה.
- ל-chrome של סרגל הצד אין טשטוש (blur). הטשטוש מאחורי משטח שקוף למחצה הוא תפקיד ה-compositor, ו-GTK 4 לא יכול לבקש אותו. משטחים שקופים למחצה מרובדים מתקרבים לזה, וזה איפה שזה נעצר.
- אין Neural Engine, ולכן אין מקודד CoreML. אין מקבילה לבקש.
ב-Windows
- שום דבר לא הורץ על שולחן עבודה אמיתי. כל מה שמסומן written נבנה ומופץ, וזה כל מה שאפשר לטעון.
- הקלטות
.m4aקומפקטיות תלויות במחשב. גם ffmpeg וגם GStreamer מנוסים, ואף אחד מהם לא מגיע בתוך ה-zip, כך שאם תקבלו.m4aאו WAV תלוי במה שכבר מותקן. - ל-zip הנייד אין התקנה עצמית. בדיקת העדכונים עובדת; התקנת העדכון היא הורדה חדשה.
- התחברות ל-Claude המנוהל דורשת טרמינל אמיתי. Authenticode מאומת עם בדיקת שם החותם, אבל התחברות דרך דפדפן ממתינה לנתיב ConPTY שיחליף את הפסאודו-טרמינל של POSIX.
- אין שיוך קובץ ל-
.milaconfig. האפליקציה קוראת נתיב מהארגומנטים שלה; למתקין אין שיוך לרשום.
איזו גרסת Mila זה תואם
OpenMila נמדדת מול תג מקור אחד בכל פעם. כרגע היא עוקבת אחרי Mila v1.9.5-beta.2 (2026-09-17), כאשר v1.9.4 (2026-09-10), הגרסה היציבה האחרונה מהמקור, נשמרת כבנייה מארכיונית להשוואה זו לצד זו. גרסאות קודמות מאז v1.8.8 מקופלות לתוך הטבלאות למעלה.
כל גרסת OpenMila היא פורט של גרסת Mila אחת, בשם
<mila version>+port.<n>. תכונות,
מודלים והצמדות מנוע עוקבים אחרי המקור: הפורט מוסיף קוד פלטפורמה,
לא תכונות. ראו את יומן השינויים.