feat: plugins for microsoft calendars and contacts#428
Merged
Conversation
Both plugins use the msgraph API over OAuth. The existing contacts plugin is improved and extended, the calendar plugin is newly added with a similar approach to the contacts plugin. The OAuth code for the microsoft login is refactored out of the plugins, so that we can use the same login for both plugins. A basic UI is introduced for the OAuth login, that can be re-used for other OAuths, if needed. This is in particular needed to inform the user *why* a browser window is being opened that requests a login from the user (and also to tell the user when an error occurred). Various improvements: - More logging during authorization - Make clientIdentifier and URLs configurable - Use custom string in the browser message on authorization success - Use explicit /Gonnect path in the redirect url - Adding a basic GUI to login to msgraph - Persist refresh token and use it on startup
mbgonicus
reviewed
Apr 17, 2026
mbgonicus
previously approved these changes
Apr 17, 2026
semantic-release-tokenizer Bot
pushed a commit
that referenced
this pull request
Apr 22, 2026
# [2.2.0-beta.1](v2.1.0...v2.2.0-beta.1) (2026-04-22) ### Bug Fixes * build with certificate patch ([#433](#433)) ([8e8ba1f](8e8ba1f)) * c++ standard and guarding updates ([#422](#422)) ([9e8171b](9e8171b)) * code review loop ([#374](#374)) ([f1c609d](f1c609d)) * disable WMME in pjsip ([#397](#397)) ([a90a80c](a90a80c)) * handle direct pjsip mute again ([#402](#402)) ([0c4609c](0c4609c)) * home/call switch tab notification reset ([#404](#404)) ([95e0a3f](95e0a3f)) * make MWI subscription configurable ([#414](#414)) ([d74c530](d74c530)) * make ReadOnlyConfdSettings treate string lists correctly ([#423](#423)) ([48328e2](48328e2)) * more sip codes lead to auth request ([#379](#379)) ([31ee0cd](31ee0cd)) * mwi recursions ([#405](#405)) ([2a42344](2a42344)) * potential crash on HeadsetDevice destroyed ([#371](#371)) ([65900ab](65900ab)) * raise window after showing it ([#398](#398)) ([4f72dc6](4f72dc6)) * reenable CardDAV plugin ([#406](#406)) ([9b9b136](9b9b136)) * resolve feeder manager deadlock ([#427](#427)) ([9a8d604](9a8d604)) * restore functionality for feeders without network requirements ([#387](#387)) ([01c6494](01c6494)) * tab switch/reset notifications ([9338ed0](9338ed0)) * **ui:** give focus to call screen when startet via enter ([#395](#395)) ([5e5d78e](5e5d78e)) ### Features * adding global shortcuts support for windows ([#399](#399)) ([eb5237e](eb5237e)) * basic MWI support ([#392](#392)) ([8c3c914](8c3c914)) * delete old history entries ([#432](#432)) ([0ee826d](0ee826d)) * display sip registration status ([#375](#375)) ([f9e6567](f9e6567)) * feeder plugin retry mechanism ([#391](#391)) ([e262f3f](e262f3f)) * pause/resume media on windows ([#370](#370)) ([61f3407](61f3407)) * plugins for microsoft calendars and contacts ([#428](#428)) ([e7e8cd9](e7e8cd9)) * pre-fill missing it/es translations ([#377](#377)) ([4428e4e](4428e4e)) * update pjproject to 2.17 ([#435](#435)) ([98c7199](98c7199))
|
🎉 This PR is included in version 2.2.0-beta.1 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
semantic-release-tokenizer Bot
pushed a commit
that referenced
this pull request
Jun 1, 2026
# [2.2.0](v2.1.0...v2.2.0) (2026-06-01) ### Bug Fixes * base edits on SSL default configuration ([#459](#459)) ([6dcbf78](6dcbf78)) * build with certificate patch ([#433](#433)) ([8e8ba1f](8e8ba1f)) * c++ standard and guarding updates ([#422](#422)) ([9e8171b](9e8171b)) * clear out URI encoded number input ([#475](#475)) ([cd1c126](cd1c126)) * code review loop ([#374](#374)) ([f1c609d](f1c609d)) * disable WMME in pjsip ([#397](#397)) ([a90a80c](a90a80c)) * do not show favorites in "most called" list ([#456](#456)) ([8ee676d](8ee676d)) * do not wipe all contact sources on by-source removals ([#450](#450)) ([f89882f](f89882f)) * Ensure correct `tag` value type in flatpak manifest ([#466](#466)) ([3c5412a](3c5412a)) * handle direct pjsip mute again ([#402](#402)) ([0c4609c](0c4609c)) * home/call switch tab notification reset ([#404](#404)) ([95e0a3f](95e0a3f)) * if so configured, do not verify CA even if they are state ([#455](#455)) ([f45a1d8](f45a1d8)) * ignore certain ssl errors when verifyServer is false (webdav) ([#451](#451)) ([428860a](428860a)) * ignore verification ssl errors if verifyServer=false ([#453](#453)) ([be3d71c](be3d71c)) * make MWI subscription configurable ([#414](#414)) ([d74c530](d74c530)) * make ReadOnlyConfdSettings treate string lists correctly ([#423](#423)) ([48328e2](48328e2)) * more sip codes lead to auth request ([#379](#379)) ([31ee0cd](31ee0cd)) * mwi recursions ([#405](#405)) ([2a42344](2a42344)) * potential crash on HeadsetDevice destroyed ([#371](#371)) ([65900ab](65900ab)) * prevent unhold on currently changing call ([#439](#439)) ([f1a05f5](f1a05f5)) * raise window after showing it ([#398](#398)) ([4f72dc6](4f72dc6)) * reenable CardDAV plugin ([#406](#406)) ([9b9b136](9b9b136)) * resolve feeder manager deadlock ([#427](#427)) ([9a8d604](9a8d604)) * restore functionality for feeders without network requirements ([#387](#387)) ([01c6494](01c6494)) * robustness for media and contacts cache ([#471](#471)) ([d879e1b](d879e1b)) * tab switch/reset notifications ([9338ed0](9338ed0)) * **ui:** do not treat room names beginning with digits as phone numbers ([#461](#461)) ([75ed3f2](75ed3f2)) * **ui:** give focus to call screen when startet via enter ([#395](#395)) ([5e5d78e](5e5d78e)) * use verifyServer flag for CA verification with webdav ([#437](#437)) ([c1ab98f](c1ab98f)) ### Features * add Blinkstick busylight support ([#474](#474)) ([af400bd](af400bd)) * add template for 1&1 ([#465](#465)) ([865fcd9](865fcd9)) * adding global shortcuts support for windows ([#399](#399)) ([eb5237e](eb5237e)) * basic MWI support ([#392](#392)) ([8c3c914](8c3c914)) * delete old history entries ([#432](#432)) ([0ee826d](0ee826d)) * display sip registration status ([#375](#375)) ([f9e6567](f9e6567)) * feeder plugin retry mechanism ([#391](#391)) ([e262f3f](e262f3f)) * ical rrule parsing optimization ([#457](#457)) ([c46f066](c46f066)) * **ldap:** configurable contact attribute mapping ([#445](#445)) ([4113384](4113384)) * pause/resume media on windows ([#370](#370)) ([61f3407](61f3407)) * plugins for microsoft calendars and contacts ([#428](#428)) ([e7e8cd9](e7e8cd9)) * pre-fill missing it/es translations ([#377](#377)) ([4428e4e](4428e4e)) * rtt ui integration ([#443](#443)) ([62d48f3](62d48f3)) * **ui:** leave conference via systray menu ([#438](#438)) ([b973bb6](b973bb6)) * update pjproject to 2.17 ([#435](#435)) ([98c7199](98c7199)) * windows signing ([#462](#462)) ([f7dd63a](f7dd63a))
|
🎉 This PR is included in version 2.2.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Both plugins use the msgraph API over OAuth.
The existing contacts plugin is improved and extended, the calendar plugin is newly added with a similar approach to the contacts plugin.
The OAuth code for the microsoft login is refactored out of the plugins, so that we can use the same login for both plugins.
A basic UI is introduced for the OAuth login, that can be re-used for other OAuths, if needed. This is in particular needed to inform the user why a browser window is being opened that requests a login from the user (and also to tell the user when an error occurred).
Various improvements: