Skip to content

Releases

26.3.1

Choose a tag to compare

@HSMM HSMM released this 09 Nov 16:33

What's new

  • IPv6 next to IPv4 (#11). MacroSIP now registers and calls over IPv6: SIP over UDP, TCP and TLS, and the audio too (c=IN IP6, RTP over IPv6). It works for a server given by an IPv6 address ([2001:db8::1]) or by a host name with IPv6 (AAAA) records. An account at an IPv6 address no longer shows "Reconnecting…" forever.

    Account › Advanced has a new setting, IP protocol:

    • Auto (default): an IP address picks its own protocol; for a host name MacroSIP follows the order macOS returns. If the server does not answer at all, the account tries the other protocol at once and stays on it until the network changes.
    • IPv4 only and IPv6 only fix the protocol. A choice that contradicts the server address is refused with an explanation.

    The protocol never changes during a call. When an account moves between IPv4 and IPv6, it removes its old registration first, so a call is not delivered twice. Accounts over IPv6 use no STUN; ICE works over IPv6 as well.

    After the update: an account in Auto whose server name has both IPv4 and IPv6 addresses may switch to IPv6 when your network has working IPv6. If the PBX does not answer SIP over IPv6, MacroSIP goes back to IPv4 by itself; to keep the old behaviour outright, choose IPv4 only. Accounts whose server is an IPv4 address behave as before.

    Not in this version: NAT64 for IPv4 servers on IPv6-only networks, STUN and TURN over IPv6, servers on link-local addresses (fe80::…).

Not yet checked on a real network: a real IPv6 PBX over UDP, TCP and TLS; the fallback to IPv4 when a firewall drops IPv6; DNS SRV targets with IPv6 addresses only; Asterisk and Kamailio after an account moves between protocols; temporary IPv6 address rotation and network changes during a call; ICE between two hosts with global IPv6 addresses. All of it is covered by loopback tests with stub servers only. After a move, other phones' subscriptions to your presence stay on the old protocol until they expire.

With ad hoc signing macOS asks for microphone access again after each update; allow it once more.

Full Changelog: 26.3.0...26.3.1


Что нового

  • IPv6 наряду с IPv4 (#11). MacroSIP теперь регистрируется и звонит по IPv6: SIP по UDP, TCP и TLS, и звук тоже (c=IN IP6, RTP по IPv6). Работает для сервера, заданного IPv6-адресом ([2001:db8::1]) или именем хоста с IPv6-записями (AAAA). Аккаунт с IPv6-адресом сервера больше не висит в «Переподключение…».

    В Аккаунт › Дополнительно появилась настройка «Протокол IP»:

    • «Авто» (по умолчанию): IP-адрес сам задаёт протокол; для имени хоста MacroSIP берёт порядок, который выдаёт macOS. Если сервер совсем не отвечает, аккаунт сразу пробует другой протокол и остаётся на нём до смены сети.
    • «Только IPv4» и «Только IPv6» фиксируют протокол. Выбор, который противоречит адресу сервера, отклоняется с объяснением.

    Во время звонка протокол не меняется. Когда аккаунт переходит между IPv4 и IPv6, он сначала снимает старую регистрацию, чтобы звонок не пришёл дважды. Аккаунты по IPv6 не используют STUN; ICE работает и по IPv6.

    После обновления: аккаунт в режиме «Авто», у имени сервера которого есть и IPv4-, и IPv6-адреса, может перейти на IPv6, если в вашей сети есть рабочий IPv6. Если АТС не отвечает по SIP через IPv6, MacroSIP сам вернётся на IPv4; чтобы оставить прежнее поведение наверняка, выберите «Только IPv4». Аккаунты, у которых сервер задан IPv4-адресом, работают как раньше.

    В этой версии нет: NAT64 для IPv4-серверов в сетях только с IPv6, STUN и TURN по IPv6, серверов на link-local адресах (fe80::…).

На реальной сети ещё не проверено: настоящая АТС по IPv6 через UDP, TCP и TLS; возврат на IPv4, когда фаервол отбрасывает IPv6; цели DNS SRV только с IPv6-адресами; Asterisk и Kamailio после перехода аккаунта между протоколами; смена временного IPv6-адреса и смена сети во время звонка; ICE между двумя хостами с глобальными IPv6-адресами. Всё это покрыто только тестами на loopback со стабами серверов. После перехода подписки других телефонов на ваше присутствие остаются на старом протоколе, пока не истекут.

При ad hoc подписи macOS после каждого обновления заново спрашивает доступ к микрофону, разрешите его ещё раз.

26.3.0

Choose a tag to compare

@github-actions github-actions released this 05 Nov 18:37

What's new

  • Text messages over SIP (#5). A fourth tab, Messages, lists your conversations and opens each one in place: send and receive MESSAGE requests with text/plain UTF-8 text, Cyrillic included, up to 2800 bytes per message. SMS forwarded by Asterisk chan_dongle arrive as ordinary messages from the phone number that sent them, and a reply goes back through the same account. Conversations are kept between launches (messages.json); unread counts show on the tab and on the Dock icon; every incoming message posts a macOS notification that opens the conversation (none while Do Not Disturb is on), and Settings › Audio › Sound events has an optional "New message" sound. Each outgoing message shows its state: Sending…, Sent, or Not sent with the SIP reason and a Retry link. Sent means that the SIP server or peer accepted the message (a 2xx answer), not that a phone received it. "Send Message" is in the context menus of Contacts and the Call Log. Not in this version: group chat, attachments, typing indicators, end-to-end encryption, SMS concatenation.

    Messages are off until you switch them on in Settings › General (#8); with the switch off nothing about messages appears in the app.

What's fixed

  • The ringtone you choose is the one that rings (#7). Classic, Digital and Soft are three different melodies; a custom AIFF, M4A or MP3 file is converted once and used from then on; a file that cannot be read keeps the previous choice and says why; the preview button plays the real choice at the chosen volume.

Not yet checked on a real network: messages through a live Asterisk/chan_dongle server, MESSAGE over TCP/TLS, and the 401/407 re-send with credentials (all covered by stub tests only). The three melodies were checked by frequency analysis, not by ear.

With ad hoc signing macOS asks for microphone access again after each update; allow it once more.

Full Changelog: 26.2.0...26.3.0


Что нового

  • Текстовые сообщения по SIP (#5). Четвёртая вкладка «Сообщения» показывает переписки и открывает каждую на том же месте: отправка и приём запросов MESSAGE с текстом text/plain в UTF-8, включая кириллицу, до 2800 байт на сообщение. SMS, которые Asterisk пересылает через chan_dongle, приходят как обычные сообщения с номера отправителя, и ответ уходит через тот же аккаунт. Переписки сохраняются между запусками (messages.json); число непрочитанных видно на вкладке и на значке в Dock; каждое входящее сообщение показывает уведомление macOS, которое открывает переписку (при «Не беспокоить» уведомлений нет), а в Настройки › Аудио › Звуки событий есть необязательный звук «Новое сообщение». У каждого исходящего сообщения виден статус: «Отправляется…», «Отправлено» или «Не отправлено» с причиной SIP и ссылкой «Повторить». «Отправлено» означает, что SIP-сервер или абонент принял сообщение (ответ 2xx), а не что оно дошло до телефона. «Написать сообщение» есть в контекстных меню Контактов и Журнала. В этой версии нет: групповых чатов, вложений, индикатора набора, сквозного шифрования, склейки SMS.

    Сообщения выключены, пока вы не включите их в Настройки › Основные (#8); при выключенном переключателе в приложении о сообщениях ничего не видно.

Что исправлено

  • Звонит та мелодия, которую вы выбрали (#7). «Классическая», «Цифровая» и «Мягкая» — три разные мелодии; свой файл AIFF, M4A или MP3 преобразуется один раз и дальше используется; файл, который не удалось прочитать, оставляет прежний выбор и объясняет причину; кнопка прослушивания играет именно выбранное на заданной громкости.

На реальной сети ещё не проверено: сообщения через живой Asterisk/chan_dongle, MESSAGE по TCP/TLS и повторная отправка с учётными данными после 401/407 (всё покрыто только тестами со стабами). Три мелодии проверены частотным анализом, а не на слух.

При ad hoc подписи macOS после каждого обновления заново спрашивает доступ к микрофону, разрешите его ещё раз.

26.2.0

Choose a tag to compare

@github-actions github-actions released this 04 Nov 20:31

What's new

  • Servers on a private network. An account whose server is addressed by a private IP (an office PBX at 10.x, 172.16-31.x, 192.168.x, or a 100.64-127.x VPN address) no longer uses STUN: the first REGISTER carries the Mac's own address instead of the public one, so the server does not have to repair the Contact, and incoming calls also reach a server that does not rewrite it. Servers addressed by a host name keep STUN.
  • Updates are checked at launch as well as once a day. Sparkle shows a window only when an update exists.

What's fixed

  • Stereo recording. The local and the far side were written by two separate recorders and could drift apart: 20 ms after hold and resume, more when one side fell silent. Both files are now written together from the same audio frames and are always of equal length. With the recording notice on, a held call no longer grows the files with silence.
  • The diagnostics archive no longer contains ._* metadata entries, and the first line of the log reports the level that is in force, including debug mode.
  • The status bar with no accounts shows only the gear button; the "Settings… ⌘," link next to it did the same thing.
  • Settings panes that scroll end clear of the toolbar.
  • Screenshots of the global hotkeys, the MicroSIP import and the troubleshooting group are in the README, in English and Russian, light and dark.

Not yet checked on a real network: the STUN change over a VPN or with an office PBX; until the server's first answer the media address is still that of the default route, so a PBX without symmetric RTP may need that answer first.

With ad hoc signing macOS asks for microphone access again after each update; allow it once more.

Full Changelog: 26.1.1...26.2.0


Что нового

  • Серверы в частной сети. Аккаунт, сервер которого задан частным IP-адресом (офисная АТС 10.x, 172.16-31.x, 192.168.x или VPN-адрес 100.64-127.x), больше не использует STUN: первый REGISTER несёт собственный адрес Mac, а не публичный, поэтому серверу не нужно исправлять Contact, а входящие доходят и до сервера, который его не переписывает. Серверы, заданные именем хоста, по-прежнему используют STUN.
  • Обновления проверяются при запуске и раз в сутки. Окно Sparkle появляется только если обновление есть.

Что исправлено

  • Стереозапись. Локальная и дальняя стороны писались двумя отдельными рекордерами и могли расходиться: на 20 мс после удержания и возобновления, больше, если одна сторона замолкала. Теперь оба файла пишутся вместе из одних и тех же аудиокадров и всегда одинаковой длины. При включённом сигнале записи удерживаемый звонок больше не растит файлы тишиной.
  • В архиве диагностики больше нет служебных записей ._*, а первая строка журнала показывает действующий уровень, включая режим отладки.
  • В строке состояния без аккаунтов осталась только шестерёнка; ссылка «Настройки… ⌘,» рядом делала то же самое.
  • Прокручиваемые панели настроек заканчиваются чисто под панелью инструментов.
  • Скриншоты глобальных горячих клавиш, импорта из MicroSIP и устранения неполадок добавлены в README на двух языках, в светлой и тёмной теме.

На реальной сети ещё не проверено: изменение STUN через VPN или с офисной АТС; до первого ответа сервера адрес медиа остаётся адресом маршрута по умолчанию, поэтому АТС без симметричного RTP может понадобиться этот ответ.

При ad hoc подписи macOS после каждого обновления заново спрашивает доступ к микрофону, разрешите его ещё раз.

26.1.1

Choose a tag to compare

@github-actions github-actions released this 04 Nov 11:33

What's fixed

  • Incoming calls no longer fail after launch on servers that rewrite Contact behind NAT or VPN, for example FreePBX or Asterisk with rewrite_contact=yes. The account could show as registered with no registration on the server until the next refresh, up to 5 minutes by default. MacroSIP now checks the server's answer, registers again if the answer does not list the account, and shows it as registered only after that (#3).

With ad hoc signing macOS asks for microphone access again after each update; allow it once more.

Full Changelog: 26.1.0...26.1.1


Что исправлено

  • Входящие звонки больше не теряются после запуска на серверах, которые переписывают Contact за NAT или VPN, например FreePBX или Asterisk с rewrite_contact=yes. Аккаунт мог показываться как зарегистрированный, хотя на сервере регистрации не было до следующей перерегистрации, по умолчанию до 5 минут. Теперь MacroSIP проверяет ответ сервера, регистрируется повторно, если аккаунта в ответе нет, и только после этого показывает его как зарегистрированный (#3).

При ad hoc подписи macOS после каждого обновления заново спрашивает доступ к микрофону, разрешите его ещё раз.

26.1.0

Choose a tag to compare

@github-actions github-actions released this 03 Nov 17:22

What's new

  • Global hotkeys. Answer, hang up and mute from any app, in Settings › Calls. Off by default; ⌃⌥A, ⌃⌥H and ⌃⌥M are offered when you switch them on, and you can change or clear each one. No system permission is needed. macOS does not report a combination that another app also uses, so that app can receive the press too.
  • Import from MicroSIP. Accounts and contacts from MicroSIP.ini and Contacts.xml, in Settings › Accounts, with a preview before anything is written. MicroSIP's stored passwords cannot be read, so imported accounts stay off until you type a password; accounts without a server need none. For scripts and MDM: /Applications/MacroSIP.app/Contents/MacOS/MacroSIP --import-microsip MicroSIP.ini.
  • Debug mode and a diagnostics archive. In Settings › General › Advanced › Troubleshooting. Debug mode takes effect at once, without a restart. Create Archive makes a ZIP with the logs, diagnostics and recent crash reports. Passwords and authentication values are removed from logs and diagnostics; phone numbers and server addresses stay, and crash reports are included as they are, so send it only to someone you trust.

What's fixed

  • Turning an account off and on in one open account menu no longer leaves it on "registering" (#2).
  • A call whose media stops always ends as "connection lost", not with a raw 481 error.
  • The account menu keeps working for as long as it is open.

Documentation

The guide is now a public site in English, Russian and Chinese: https://hsmm.github.io/MacroSIP/wiki/

With ad hoc signing macOS asks for microphone access again after each update; allow it once more.

Full Changelog: 26.0.2...26.1.0


Что нового

  • Глобальные хоткеи. Ответ, сброс и выключение микрофона из любого приложения, в разделе Настройки › Звонки. По умолчанию выключены; при включении предлагаются ⌃⌥A, ⌃⌥H и ⌃⌥M, каждое сочетание можно изменить или убрать. Системные разрешения не нужны. macOS не сообщает, если то же сочетание использует другое приложение, поэтому нажатие может получить и оно.
  • Импорт из MicroSIP. Аккаунты и контакты из MicroSIP.ini и Contacts.xml, в разделе Настройки › Аккаунты, с предварительным просмотром перед записью. Сохранённые пароли MicroSIP прочитать нельзя, поэтому импортированные аккаунты выключены, пока вы не введёте пароль; аккаунтам без сервера он не нужен. Для скриптов и MDM: /Applications/MacroSIP.app/Contents/MacOS/MacroSIP --import-microsip MicroSIP.ini.
  • Режим отладки и архив диагностики. В разделе Настройки › Основные › Дополнительно › Устранение неполадок. Режим отладки включается сразу, без перезапуска. Кнопка создания архива собирает ZIP с логами, диагностикой и недавними отчётами о сбоях. Пароли и данные авторизации удаляются из логов и диагностики; номера телефонов и адреса серверов остаются, а отчёты о сбоях добавляются как есть, поэтому отправляйте архив только тому, кому доверяете.

Что исправлено

  • Если выключить и включить аккаунт в одном открытом меню, он больше не зависает в состоянии «регистрация» (#2).
  • Звонок, в котором пропало медиа, всегда завершается с пометкой «Связь потеряна», а не с технической ошибкой 481.
  • Меню аккаунтов продолжает работать всё время, пока открыто.

Документация

Руководство теперь открыто как сайт на английском, русском и китайском: https://hsmm.github.io/MacroSIP/wiki/

При ad hoc подписи macOS после каждого обновления заново спрашивает доступ к микрофону, разрешите его ещё раз.

26.0.2

Choose a tag to compare

@github-actions github-actions released this 02 Nov 21:35

What's fixed

  • Quitting no longer crashes: the headset-button controller tripped an IOKit assertion ("Manager has already been activated/cancelled") on every quit on macOS 26/27.
  • REGISTER retries after a timeout back off as designed; a request that met one in flight was sent twice and hit PJSIP_EBUSY every time.
  • Hanging up a call that has just ended shows no error.
  • Quieter log: the file follows --log-level (debug lines only at level 4), skips PJSIP's "Ports connection already exists", drops the false "destroy tone port (PJ_EGONE)" warning, and writes REGISTER retries and listener restarts at debug after the first attempts.
  • Release builds compile with Swift 6.3.

Support the project

A Sponsor button and a donate page with QR codes (BTC, USDT TRC-20) are in the README.

With ad hoc signing macOS asks for microphone access again after each update; allow it once more.

Full Changelog: 26.0.1...26.0.2


Исправлено

  • Выход из приложения больше не падает: контроллер кнопок гарнитуры ловил ассерт IOKit («Manager has already been activated/cancelled») при каждом выходе на macOS 26/27.
  • Повторы REGISTER после таймаута идут с задержкой, как задумано; запрос, заставший другой в полёте, отправлялся дважды и каждый раз получал PJSIP_EBUSY.
  • Сброс звонка, который только что завершился сам, не показывает ошибку.
  • Тише лог: файл следует --log-level (отладочные строки только на уровне 4), пропускает «Ports connection already exists» от PJSIP, убрано ложное предупреждение «destroy tone port (PJ_EGONE)», повторы REGISTER и рестарты листенера после первых попыток пишутся на уровне отладки.
  • Release-сборка собирается на Swift 6.3.

Поддержать проект

В README появились кнопка Sponsor и страница донатов с QR-кодами (BTC, USDT TRC-20).

При ad hoc подписи macOS после каждого обновления заново спрашивает доступ к микрофону, разрешите один раз.

26.0.1

Choose a tag to compare

@github-actions github-actions released this 14 Oct 20:03

With ad hoc signing macOS asks for microphone access again after each update; allow it once more.

Full Changelog: 26.0.0...26.0.1

26.0.0

Choose a tag to compare

@github-actions github-actions released this 14 Oct 01:47

With ad hoc signing macOS asks for microphone access again after each update; allow it once more.

Full Changelog: https://github.com/HSMM/MacroSIP/commits/26.0.0