Skip to content

refactor: remove explicit ozone-platform default#2506

Open
IsmaelMartinez wants to merge 1 commit into
mainfrom
claude/ozone-flag-auto-nWlFb
Open

refactor: remove explicit ozone-platform default#2506
IsmaelMartinez wants to merge 1 commit into
mainfrom
claude/ozone-flag-auto-nWlFb

Conversation

@IsmaelMartinez
Copy link
Copy Markdown
Owner

@IsmaelMartinez IsmaelMartinez commented May 6, 2026

Summary

The X11 default added in v2.7.4 was a workaround for Electron 38 era native Wayland regressions. With Chromium 140 the --ozone-platform-hint switch defaults to auto upstream (crrev.com/c/6775426), and Electron 38 deprecated the matching ELECTRON_OZONE_PLATFORM_HINT env var (planned breaking change) on the basis that Chromium does the right thing on its own. The cleanest end-state for us is to ship no explicit --ozone-platform value and let Chromium pick the backend per session.

This PR drops both executableArgs entries from package.json (the deb / rpm / AppImage block and the snap block). Users who hit a Wayland-specific regression can still pin --ozone-platform=x11 or force native Wayland with --ozone-platform=wayland from the command line or their .desktop file; both overrides are documented.

The runtime XWayland detection in app/startup/commandLine.js is intentionally unchanged: isXWayland still triggers only when the user explicitly passes --ozone-platform=x11, so the wayland.xwaylandOptimizations opt-in path keeps working for users who need it.

What this means per Electron baseline

On Chromium 140+ (Electron 42+) the implicit --ozone-platform-hint=auto does the work and Wayland sessions get a native Wayland renderer for free.

On the current Electron 41 / Chromium ~138 baseline shipping in 2.9.x, auto is not yet the implicit default, so removing the flag returns the app to whatever Chromium's compiled-in default is on each platform. The cross-distro smoke matrix is the source of truth here.

Cross-distro testing

The smoke workflow now accepts a pr_number (or app_url) input via workflow_dispatch, so this PR's build can be exercised across the full 3 distros × 3 display servers matrix without waiting for a release. To run it manually:

gh workflow run cross-distro-smoke.yml --repo IsmaelMartinez/teams-for-linux \
  --field pr_number=2506

Inputs are validated (pr_number must be a positive integer) and consumed only via env vars in the workflow run script to avoid command injection.

tests/cross-distro/scripts/entrypoint.sh and the README have been updated so the comments no longer claim --ozone-platform=x11 is baked into the AppImage. start-wayland.sh continues to force --ozone-platform=wayland explicitly for the Wayland matrix entry; start-x11.sh and start-xwayland.sh launch with no ozone flag and let Chromium select the backend.

Test plan

  • Trigger cross-distro-smoke.yml with pr_number=2506, confirm all 9 matrix entries pass
  • Manual launch on a native Wayland session (Fedora GNOME, Ubuntu GNOME, KDE Plasma) and confirm the window renders correctly
  • Manual launch on an X11 session and confirm Chromium selects X11 cleanly
  • Override with --ozone-platform=x11 on a Wayland session and confirm wayland.xwaylandOptimizations still behaves as before
  • Verify deb / rpm / AppImage / snap builds no longer carry an --ozone-platform value in their .desktop Exec= lines

Tracking

Community testing for this default change is being gathered in #2508.

Supersedes the previous direction in this PR which tried to switch to --ozone-platform=auto. That value is not accepted by ui/ozone/platform_selection.cc and FATAL-crashed the launcher; the correct expression of the same intent is --ozone-platform-hint=auto, but since Chromium 140 makes that the implicit default anyway, removing the flag entirely is cleaner than carrying a hint that becomes redundant on the next Electron bump.


Generated by Claude Code

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 6, 2026

📦 PR Build Artifacts

Build successful! Download artifacts:

🐧 Linux

x86_64 (447.77 MB) - Contains: .deb, .rpm, .tar.gz, .AppImage

arm64 (438.03 MB) - Contains: .deb, .rpm, .tar.gz, .AppImage

armv7l (415.86 MB) - Contains: .deb, .rpm, .tar.gz, .AppImage

🍎 macOS

x86_64 (129.21 MB) - Contains: .dmg

🪟 Windows

x86_64 (109.58 MB) - Contains: .exe installer


📝 Note: Snap packages (.snap) are built in a separate workflow

View workflow run

🕐 Last updated: 2026-05-16 07:23 UTC

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request changes the default display backend from forcing X11 (--ozone-platform=x11) to automatic detection (--ozone-platform=auto) in the package configuration. Correspondingly, the documentation and troubleshooting guides have been updated to reflect that Chromium will now pick the best backend based on the session, while still providing instructions for manual overrides if issues occur. I have no feedback to provide as there were no review comments.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 6, 2026

📦 PR Snap Build Artifacts

Snap builds successful! Download artifacts:

🐧 Linux Snap Packages

x86_64 (110.69 MB)

arm64 (107.51 MB)

armv7l (101.54 MB)


📝 Note: Other package formats (.deb, .rpm, .AppImage, .dmg, .exe) are built in the main workflow

View workflow run

@isorropisths
Copy link
Copy Markdown

Hmm, using 'auto' or 'wayland' makes the app unlaunchable. GNOME 49.5.

IsmaelMartinez added a commit that referenced this pull request May 7, 2026
#2509)

* feat: default ozone-platform to auto instead of x11

Let Chromium pick the rendering backend per session (Wayland on
Wayland, X11 elsewhere) rather than forcing XWayland everywhere.
Users hitting Wayland regressions can still override with
--ozone-platform=x11 on the command line or in their .desktop file.

Updates the deb/rpm/AppImage and snap executableArgs in package.json
and refreshes the troubleshooting + configuration docs to match the
new default. The XWayland runtime detection in commandLine.js is
unchanged: it still triggers when the user explicitly passes
--ozone-platform=x11.

* docs(roadmap): capture 2026-05-07 ozone-platform default reset session

Bump the Last Updated date and status line, extend the Wayland
Compatibility section with PR #2506 and tracking issue #2508 context,
and add a session outcomes block summarising today's PR open, tracker
creation, and the four targeted pings (#2486, #2345, #2383, #2094).

Closes nothing; the actual default change ships in #2506.

---------

Co-authored-by: Claude <noreply@anthropic.com>
@IsmaelMartinez
Copy link
Copy Markdown
Owner Author

Hi @isorropisths , can you provide some logs and more info? this is mostly a PoC to see if it is better to default to x11 (as we do now) or move to auto (as some people are requesting). I am surprised GNOME 49.5 is not working under wayland as GNOME 49 I think is wayland only. Can you clarify on the "unlaunchable"? Thanks again

@dannytrunk
Copy link
Copy Markdown

With auto I'm getting:
[32196:0508/080540.427030:FATAL:ui/ozone/platform_selection.cc:46] Invalid ozone platform: auto
But wayland works for me.
You probably wanted to use --ozone-platform-hint=auto instead of --ozone-platform=auto I guess?

@farajaahdaf
Copy link
Copy Markdown

Hmm, using 'auto' or 'wayland' makes the app unlaunchable. GNOME 49.5.

Same here on Fedora 43 GNOME (Wayland, Intel Iris Xe). --ozone-platform=auto causes a fatal crash:
FATAL:ui/ozone/platform_selection.cc:46] Invalid ozone platform: auto

Switching to --ozone-platform=wayland fixed both screenshare and camera for me but only after switching from the snap to the RPM package. The snap bundles an old GNOME platform (gnome-3-28-1804) with Mesa
that doesn't support Intel Iris Xe, causing EGL/GPU process failures regardless of the ozone flag. The RPM uses the system Mesa which works fine.

Also confirming your suggestion with --ozone-platform-hint=auto is likely the correct flag here. It tells Electron to auto-detect the appropriate backend (Wayland or X11) rather than forcing one, which is what
this PR intends. Using =auto directly is invalid in this Electron version.

@dannytrunk
Copy link
Copy Markdown

dannytrunk commented May 8, 2026

And just a note: With --ozone-platform-hint=auto teams is crashing for me whenever I try to start a meeting. Not sure if this is related to some other changes since 2.8.0.

@IsmaelMartinez
Copy link
Copy Markdown
Owner Author

Looks like I made a couple of mistakes and chrome and electron using the same flags for different things is confusing this even more.

Chrome removed the --ozone-platform-hint a few versions ago and that caused a lot of issues when we moved to the electron version using it. (in the 2.7.x release - electron 38). As such we had to build for --ozone-platform=x11 .

This was because they changed this platform to auto https://www.electronjs.org/docs/latest/breaking-changes#planned-breaking-api-changes-380
image

A couple of days ago I asked to test with --ozone--platform=auto for some reason that fixes the issue in #2486 (comment) but as you can see there is a typo (the double -- in the middle) what confused me and only saw now.

That message did confused me, as it reads like that value is available... and the cross-distro tests that I got to pick this issues only pull from main, so they didn't report any issues... as main still uses the x11 flag.

Anyway, thanks a lot for your tests. I will just remove that flag (as we had before 2.7.x) and see if the "auto" ozone-platform chrome ships with handles the x11/wayland/xwayland correctly. It might fail, and if it does, then I can also include electron 42 update (just released) in case that ones finally fixes it.

Thanks a lot for testing and apologies for the confusion.

@IsmaelMartinez IsmaelMartinez changed the title feat: default ozone-platform to auto instead of x11 refactor: remove explicit ozone-platform default May 8, 2026
IsmaelMartinez added a commit that referenced this pull request May 8, 2026
PR #2509 ("docs(roadmap): capture 2026-05-07 ozone-platform default reset
session") accidentally bundled a package.json change that flipped the flag
from =x11 to =auto. =auto is not a valid value for --ozone-platform —
Chromium aborts with `FATAL:ui/ozone/platform_selection.cc:46 Invalid ozone
platform: auto`, making every build cut from main since 2026-05-07
unlaunchable on every distro and packaging format.

Restore the working =x11 default. The proper "remove the flag entirely and
let Chromium auto-detect per session" direction is being handled separately
on #2506; this is the minimum patch to keep main releasable until that lands.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@IsmaelMartinez IsmaelMartinez force-pushed the claude/ozone-flag-auto-nWlFb branch from 9bf50cb to 1f98e9c Compare May 8, 2026 08:59
@IsmaelMartinez
Copy link
Copy Markdown
Owner Author

@farajaahdaf / @dannytrunk , I have not removed the flag altogether (like we use to do pre-electron-38) . Can you pick the newest version of it (same comment). Again we might need to upgrade electron to 42, but the smoke test (in all distros) did build fine this time (with this not just main). Thanks in advance!

@dannytrunk
Copy link
Copy Markdown

Looks like it's working fine for me now. At least no more crashes.

@IsmaelMartinez
Copy link
Copy Markdown
Owner Author

@isorropisths and @farajaahdaf , are you able to test that new version?

@dannytrunk , can you provide OS/Distro version where you did test this?

Thanks in advance!

@dannytrunk
Copy link
Copy Markdown

dannytrunk commented May 11, 2026

@IsmaelMartinez Debian 13 with Gnome

@akettmann-apic
Copy link
Copy Markdown

akettmann-apic commented May 12, 2026

I am also experiencing the issue with trying to share giving an error regarding unable to access camera.

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 24.04.4 LTS
Release:	24.04
Codename:	noble

I installed the linked build from the comment above (downloaded, then installed the snap with snap install --dangerous ./path-to-file)

$ snap info teams-for-linux
name:      teams-for-linux
summary:   Teams for Linux
publisher: –
store-url: https://snapcraft.io/teams-for-linux
license:   unset
description: |
  Unofficial Microsoft Teams client for Linux using Electron. It uses the Web App and wraps it as a
  standalone application using Electron.
commands:
  - teams-for-linux
tracking:     latest/stable
refresh-date: today at 11:31 CDT
channels:
  latest/stable:    2.8.0               2026-04-17 (1687) 115MB -
  latest/candidate: 2.9.0               2026-05-06 (1856) 116MB -
  latest/beta:      ↑                                           
  latest/edge:      2.9.0-edge.ga6e5386 2026-05-11 (1886) 116MB -
installed:          2.9.0                            (x1) 116MB -

I am running on a Dell 14 Premium DA14250 laptop.

For extra possible confusion and edge case causing, my only active display is a 4k widescreen over a usbc dock -> HDMI.

The logs I get when I run the application from the CLI are below. After the segfault it crashes.

$ teams-for-linux
MESA-LOADER: failed to open iris (search paths /snap/teams-for-linux/x1/gnome-platform/usr/lib/x86_64-linux-gnu/dri)
failed to load driver: iris
MESA-LOADER: failed to open kms_swrast (search paths /snap/teams-for-linux/x1/gnome-platform/usr/lib/x86_64-linux-gnu/dri)
failed to load driver: kms_swrast
MESA-LOADER: failed to open swrast (search paths /snap/teams-for-linux/x1/gnome-platform/usr/lib/x86_64-linux-gnu/dri)
failed to load swrast driver
No config file found (user or system-wide), using default values
all good with screenSharingThumbnail you aren't using them
all good with disableAutogain you aren't using them
all good with screenLockInhibitionMethod you aren't using them
all good with ssoInTuneEnabled you aren't using them
all good with ssoInTuneAuthUser you aren't using them
all good with videoMenu you aren't using them
Initialising logger with config: {"transports":{"console":{"level":"info"},"file":{"level":false}}}
11:43:13.152 › configPath: /home/[USER]/snap/teams-for-linux/x1/.config/teams-for-linux
11:43:13.155 › [Wayland] Enabling PipeWire for screen sharing
11:43:13.155 › [Wayland] Disabling GPU composition (default)
11:43:13.155 › Disabling GPU support...
dbus-send: /snap/teams-for-linux/x1/lib/x86_64-linux-gnu/libdbus-1.so.3: version `LIBDBUS_PRIVATE_1.12.20' not found (required by dbus-send)
11:43:13.169 › [CustomNotificationManager] Initialized and listening on "notification-show-toast" channel
MESA-LOADER: failed to open iris (search paths /snap/teams-for-linux/x1/gnome-platform/usr/lib/x86_64-linux-gnu/dri)
failed to load driver: iris
MESA-LOADER: failed to open kms_swrast (search paths /snap/teams-for-linux/x1/gnome-platform/usr/lib/x86_64-linux-gnu/dri)
failed to load driver: kms_swrast
MESA-LOADER: failed to open swrast (search paths /snap/teams-for-linux/x1/gnome-platform/usr/lib/x86_64-linux-gnu/dri)
failed to load swrast driver
[9987:0512/114313.172185:ERROR:ui/gtk/gtk_ui.cc:251] Schema org.gnome.desktop.interface does not have key font-antialiasing
MESA-LOADER: failed to open iris (search paths /snap/teams-for-linux/x1/gnome-platform/usr/lib/x86_64-linux-gnu/dri)
failed to load driver: iris
MESA-LOADER: failed to open kms_swrast (search paths /snap/teams-for-linux/x1/gnome-platform/usr/lib/x86_64-linux-gnu/dri)
failed to load driver: kms_swrast
MESA-LOADER: failed to open swrast (search paths /snap/teams-for-linux/x1/gnome-platform/usr/lib/x86_64-linux-gnu/dri)
failed to load swrast driver
[9987:0512/114313.190513:ERROR:dbus/object_proxy.cc:572] Failed to call method: org.freedesktop.Secret.Service.ReadAlias: object_path= /org/freedesktop/secrets: org.freedesktop.DBus.Error.AccessDenied: An AppArmor policy prevents this sender from sending this message to this recipient; type="method_call", sender=":1.160" (uid=1000 pid=9987 comm="/snap/teams-for-linux/x1/teams-for-linux --no-sand" label="snap.teams-for-linux.teams-for-linux (enforce)") interface="org.freedesktop.Secret.Service" member="ReadAlias" error name="(unset)" requested_reply="0" destination="org.freedesktop.secrets" (uid=1000 pid=2965 comm="/usr/bin/gnome-keyring-daemon --foreground --compo" label="unconfined")
Segmentation fault (core dumped)

Happy to provide any additional information, run commands, whatever. I appreciate your efforts, this is pretty far outside of my wheelhouse!

@IsmaelMartinez
Copy link
Copy Markdown
Owner Author

Thanks for testing. The [Wayland] Enabling PipeWire line confirms the new default put you on native Wayland, but the crash signature (MESA-LOADER failing for iris/kms_swrast/swrast, libdbus version mismatch, AppArmor denying secret-service) looks like snap-sandbox issues rather than the ozone flag itself. Wayland mode probably surfaces them where XWayland was glossing over them.

Two quick tests to confirm before I decide whether to hold the snap part of this PR back:

  1. Same snap with teams-for-linux --ozone-platform=x11. If it still segfaults, ozone is not the trigger.
  2. The AppImage from this PR's build artifacts on the same machine. If that launches cleanly, the issue is snap-specific.

Appreciate the help.

@akettmann-apic
Copy link
Copy Markdown

Prep

I uninstalled the (publicly available) snap with
sudo snap remove teams-for-linux

Same from a few days ago

I still had the file from yesterday, so I reinstalled it with:

$ sudo snap install --dangerous temp/teams-for-linux_2.9.0_amd64.snap 
teams-for-linux 2.9.0 installed

then ran it:

$ teams-for-linux --ozone-platform=x11
No config file found (user or system-wide), using default values
all good with screenSharingThumbnail you aren't using them
all good with disableAutogain you aren't using them
all good with screenLockInhibitionMethod you aren't using them
all good with ssoInTuneEnabled you aren't using them
all good with ssoInTuneAuthUser you aren't using them
all good with videoMenu you aren't using them
Initialising logger with config: {"transports":{"console":{"level":"info"},"file":{"level":false}}}
12:07:32.837 › configPath: /home/[USER]/snap/teams-for-linux/x1/.config/teams-for-linux
12:07:32.840 › [Wayland] Enabling PipeWire for screen sharing
12:07:32.840 › [Wayland] Disabling GPU composition (default)
12:07:32.840 › Disabling GPU support...
dbus-send: /snap/teams-for-linux/x1/lib/x86_64-linux-gnu/libdbus-1.so.3: version `LIBDBUS_PRIVATE_1.12.20' not found (required by dbus-send)
12:07:32.866 › [CustomNotificationManager] Initialized and listening on "notification-show-toast" channel

(teams-for-linux:289671): Gtk-WARNING **: 12:07:32.890: Theme parsing error: gtk.css:1413:23: 'font-feature-settings' is not a valid property name

(teams-for-linux:289671): Gtk-WARNING **: 12:07:32.894: Theme parsing error: gtk.css:3286:25: 'font-feature-settings' is not a valid property name

(teams-for-linux:289671): Gtk-WARNING **: 12:07:32.895: Theme parsing error: gtk.css:3748:23: 'font-feature-settings' is not a valid property name
[289671:0515/120732.935269:ERROR:dbus/object_proxy.cc:572] Failed to call method: org.freedesktop.Secret.Service.ReadAlias: object_path= /org/freedesktop/secrets: org.freedesktop.DBus.Error.AccessDenied: An AppArmor policy prevents this sender from sending this message to this recipient; type="method_call", sender=":1.531" (uid=1000 pid=289671 comm="/snap/teams-for-linux/x1/teams-for-linux --no-sand" label="snap.teams-for-linux.teams-for-linux (enforce)") interface="org.freedesktop.Secret.Service" member="ReadAlias" error name="(unset)" requested_reply="0" destination="org.freedesktop.secrets" (uid=1000 pid=2965 comm="/usr/bin/gnome-keyring-daemon --foreground --compo" label="unconfined")
MESA-LOADER: failed to open iris (search paths /snap/teams-for-linux/x1/gnome-platform/usr/lib/x86_64-linux-gnu/dri)
failed to load driver: iris
MESA-LOADER: failed to open kms_swrast (search paths /snap/teams-for-linux/x1/gnome-platform/usr/lib/x86_64-linux-gnu/dri)
failed to load driver: kms_swrast
MESA-LOADER: failed to open swrast (search paths /snap/teams-for-linux/x1/gnome-platform/usr/lib/x86_64-linux-gnu/dri)
failed to load swrast driver
[289671:0515/120733.055941:ERROR:dbus/object_proxy.cc:572] Failed to call method: org.freedesktop.login1.Manager.Inhibit: object_path= /org/freedesktop/login1: org.freedesktop.DBus.Error.AccessDenied: An AppArmor policy prevents this sender from sending this message to this recipient; type="method_call", sender=":1.3166" (uid=1000 pid=289671 comm="/snap/teams-for-linux/x1/teams-for-linux --no-sand" label="snap.teams-for-linux.teams-for-linux (enforce)") interface="org.freedesktop.login1.Manager" member="Inhibit" error name="(unset)" requested_reply="0" destination="org.freedesktop.login1" (uid=0 pid=1550 comm="/usr/lib/systemd/systemd-logind" label="unconfined")
12:07:33.064 › [QuickChat] Quick Chat feature is disabled
12:07:33.065 › [AutoUpdater] Not running as AppImage, auto-updater disabled
12:07:33.065 › [IPC Security] Channel allowlisting enabled
12:07:33.065 › [IPC Security] 66 channels allowlisted

(teams-for-linux:289671): Gtk-WARNING **: 12:07:33.173: Theme parsing error: gtk-dark.css:1413:23: 'font-feature-settings' is not a valid property name

(teams-for-linux:289671): Gtk-WARNING **: 12:07:33.179: Theme parsing error: gtk-dark.css:3286:25: 'font-feature-settings' is not a valid property name

(teams-for-linux:289671): Gtk-WARNING **: 12:07:33.180: Theme parsing error: gtk-dark.css:3748:23: 'font-feature-settings' is not a valid property name
12:07:34.614 › [Renderer] Unhandled rejection: {
  message: '[_getUserIdentifier] user missing. fn:getuid;user:0',
  stack: 'Error: [_getUserIdentifier] user missing. fn:getuid;user:0\n' +
    '    at f (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/async-entry-6fd9ec41e3e7a5d7.js:1206:12261)\n' +
    '    at le (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/async-entry-6fd9ec41e3e7a5d7.js:1:847939)\n' +
    '    at async lF.setLicenseDetails (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/async-entry-6fd9ec41e3e7a5d7.js:101:124337)',
  timestamp: 1778864854613
}
[289671:0515/120736.261244:ERROR:device/udev_linux/udev_watcher.cc:97] Failed to begin udev enumeration.
12:08:23.536 › [Renderer] Unhandled rejection: {
  message: '[_getUserIdentifier] user missing. fn:getuid;user:0',
  stack: 'Error: [_getUserIdentifier] user missing. fn:getuid;user:0\n' +
    '    at f (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/async-entry-6fd9ec41e3e7a5d7.js:1206:12261)\n' +
    '    at le (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/async-entry-6fd9ec41e3e7a5d7.js:1:847939)\n' +
    '    at async lF.setLicenseDetails (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/async-entry-6fd9ec41e3e7a5d7.js:101:124337)',
  timestamp: 1778864903535
}
12:08:23.595 › [Renderer] Unhandled rejection: {
  message: '[_getUserIdentifier] user missing. fn:getSkypeTokenInfoFromDiscoveryResponse;fn:getuid;user:0',
  stack: 'Error: [_getUserIdentifier] user missing. fn:getSkypeTokenInfoFromDiscoveryResponse;fn:getuid;user:0\n' +
    '    at f (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/async-entry-6fd9ec41e3e7a5d7.js:1206:12261)\n' +
    '    at le (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/async-entry-6fd9ec41e3e7a5d7.js:1:847939)\n' +
    '    at async lF.getSkypeTokenInfoFromDiscoveryResponse (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/async-entry-6fd9ec41e3e7a5d7.js:101:114654)',
  timestamp: 1778864903595
}
12:08:23.869 › [Renderer] Unhandled rejection: {
  message: 'Invalid value for user. userName exists: [true], type: [Aad], role: [undefined], profile exists: [true],isAuthenticated: [true]',
  stack: 'Error: Invalid value for user. userName exists: [true], type: [Aad], role: [undefined], profile exists: [true],isAuthenticated: [true]\n' +
    '    at D._validateValue (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/async-entry-6fd9ec41e3e7a5d7.js:1:564388)\n' +
    '    at D.put (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/async-entry-6fd9ec41e3e7a5d7.js:1:556445)\n' +
    '    at O.setUpAccountAfterLogin (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/msal-service-43a78af39e4611e9.js:1:26727)\n' +
    '    at https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/msal-service-43a78af39e4611e9.js:1:27166',
  timestamp: 1778864903868
}
12:08:24.087 › [Renderer] Unhandled rejection: {
  message: '[_getUserIdentifier] User is not authenticated. UserId: [d7ddb9f4...] tenantId: [d521568c...]. fn:getSkypeTokenInfoFromDiscoveryResponse;fn:getuid;user:1',
  stack: 'Error: [_getUserIdentifier] User is not authenticated. UserId: [d7ddb9f4...] tenantId: [d521568c...]. fn:getSkypeTokenInfoFromDiscoveryResponse;fn:getuid;user:1\n' +
    '    at f (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/async-entry-6fd9ec41e3e7a5d7.js:1206:12261)\n' +
    '    at le (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/async-entry-6fd9ec41e3e7a5d7.js:1:847939)\n' +
    '    at async lF.getSkypeTokenInfoFromDiscoveryResponse (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/async-entry-6fd9ec41e3e7a5d7.js:101:114654)',
  timestamp: 1778864904086
}
[290094:0515/120831.163936:ERROR:services/video_capture/video_capture_service_impl.cc:201] Bind context provider failed.
12:08:31.499 › [Renderer] Unhandled rejection: {
  message: '[Authentication][DiscoverV2][regionGtm][796f2038...] authService not found in regionGtms table',
  stack: 'Error: [Authentication][DiscoverV2][regionGtm][796f2038...] authService not found in regionGtms table\n' +
    '    at f (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/async-entry-6fd9ec41e3e7a5d7.js:1206:12261)\n' +
    '    at lF.regionGtm (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/async-entry-6fd9ec41e3e7a5d7.js:101:108087)\n' +
    '    at async E (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/services-user-license-45579289155964a5.js:1:1130)',
  timestamp: 1778864911498
}
12:08:45.299 › [Renderer] Window error: {
  message: "Uncaught TypeError: Cannot read properties of null (reading 'addEventListener')",
  filename: '/snap/teams-for-linux/x1/resources/app.asar/app/browser/tools/shortcuts.js',
  lineno: 65,
  colno: 28,
  errorStack: "TypeError: Cannot read properties of null (reading 'addEventListener')\n" +
    '    at /snap/teams-for-linux/x1/resources/app.asar/app/browser/tools/shortcuts.js:65:28\n' +
    '    at whenIframeReady (/snap/teams-for-linux/x1/resources/app.asar/app/browser/tools/shortcuts.js:79:5)\n' +
    '    at /snap/teams-for-linux/x1/resources/app.asar/app/browser/tools/shortcuts.js:83:22',
  timestamp: 1778864925298
}
12:09:00.007 › [Renderer] Window error: {
  message: 'Uncaught Error: Trying to subscribe to invalid key: ',
  filename: 'https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/902408-83d87beea13336d1.js',
  lineno: 343,
  colno: 32671,
  errorStack: 'Error: Trying to subscribe to invalid key: \n' +
    '    at he.subscribe (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/services-calling-service-adapters-03767759a457a870.js:1:71070)\n' +
    '    at YT.subscribe (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/66845-3179c07ea4fc733b.js:61:38295)\n' +
    '    at https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/66845-3179c07ea4fc733b.js:1:4363\n' +
    '    at Array.map (<anonymous>)\n' +
    '    at Object.next (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/66845-3179c07ea4fc733b.js:1:4354)\n' +
    '    at N.next (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/902408-83d87beea13336d1.js:341:142245)\n' +
    '    at I._next (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/902408-83d87beea13336d1.js:341:141849)\n' +
    '    at I.next (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/902408-83d87beea13336d1.js:341:141477)\n' +
    '    at n._subscribe (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/902408-83d87beea13336d1.js:341:133841)\n' +
    '    at y._trySubscribe (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/902408-83d87beea13336d1.js:341:135866)',
  timestamp: 1778864940006
}
[290158:0515/120907.611252:ERROR:services/video_capture/video_capture_service_impl.cc:201] Bind context provider failed.
12:09:09.101 › [Renderer] Unhandled rejection: { message: 'undefined', stack: null, timestamp: 1778864949101 }
12:09:10.666 › [Renderer] Unhandled rejection: {
  message: 'Missing callStartedAt (state: 3)',
  stack: 'Error: Missing callStartedAt (state: 3)\n' +
    '    at https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/66845-3179c07ea4fc733b.js:47:110372\n' +
    '    at u (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/962128-df48e25c266986a2.js:1:32157)\n' +
    '    at https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/calling-pluginless-d0b3c70b6474490f.js:111:8126\n' +
    '    at https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/calling-pluginless-d0b3c70b6474490f.js:111:7347\n' +
    '    at Array.forEach (<anonymous>)\n' +
    '    at Ar.raiseEvents (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/calling-pluginless-d0b3c70b6474490f.js:111:7306)\n' +
    '    at Ar.raiseChanged (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/calling-pluginless-d0b3c70b6474490f.js:111:8006)\n' +
    '    at Ar.setCallState (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/calling-pluginless-d0b3c70b6474490f.js:154:23233)\n' +
    '    at Object.onCallStatusChanged (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/calling-pluginless-d0b3c70b6474490f.js:153:36895)\n' +
    '    at sF.onCallStatusChanged (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/calling-pluginless-d0b3c70b6474490f.js:124:41947)',
  timestamp: 1778864950665
}
12:09:33.736 › [Renderer] Unhandled rejection: { message: '[object Object]', stack: null, timestamp: 1778864973736 }
12:09:33.741 › [Renderer] Unhandled rejection: {
  message: 'onCommandResult[error.name=Error,error.message=[resolveCallingAppEvent] Error resolving calling app event [eventId=242fa371..., error.name=Error, error.message=[resolve] No deferred resolution found for event [eventId=242fa371..., resolutionType=success]]]::resolveCallingAppEvent::Success',
  stack: 'Error: onCommandResult[error.name=Error,error.message=[resolveCallingAppEvent] Error resolving calling app event [eventId=242fa371..., error.name=Error, error.message=[resolve] No deferred resolution found for event [eventId=242fa371..., resolutionType=success]]]::resolveCallingAppEvent::Success\n' +
    '    at mn (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/async-apps-calling-39aff109a2a5808c.js:1:72311)',
  timestamp: 1778864973741
}

The app started, and I logged in successfully, started a test call, but it was unable to detect any microphones, my camera, and sharing was non-functional in the same way (Share button available, but when I click it, camera not available error in a popup).

Running the AppImage

I am unfamiliar with the details of AppImages, but google tells me they are run like executables.

First

$ ./teams-for-linux-2.9.0.AppImage 
dlopen(): error loading libfuse.so.2

AppImages require FUSE to run. 
You might still be able to extract the contents of this AppImage 
if you run it with the --appimage-extract option. 
See https://github.com/AppImage/AppImageKit/wiki/FUSE 
for more information

So I installed libfuse

$ sudo apt install libfuse2
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Note, selecting 'libfuse2t64' instead of 'libfuse2'
The following NEW packages will be installed:
  libfuse2t64
0 upgraded, 1 newly installed, 0 to remove and 7 not upgraded.
Need to get 89.9 kB of archives.
After this operation, 326 kB of additional disk space will be used.
Get:1 http://us.archive.ubuntu.com/ubuntu noble/universe amd64 libfuse2t64 amd64 2.9.9-8.1build1 [89.9 kB]
Fetched 89.9 kB in 0s (442 kB/s)       
Selecting previously unselected package libfuse2t64:amd64.
(Reading database ... 304311 files and directories currently installed.)
Preparing to unpack .../libfuse2t64_2.9.9-8.1build1_amd64.deb ...
Unpacking libfuse2t64:amd64 (2.9.9-8.1build1) ...
Setting up libfuse2t64:amd64 (2.9.9-8.1build1) ...
Processing triggers for libc-bin (2.39-0ubuntu8.7) ...

Second

$ ./teams-for-linux-2.9.0.AppImage 
[294143:0515/122213.813435:FATAL:sandbox/linux/suid/client/setuid_sandbox_host.cc:166] The SUID sandbox helper binary was found, but is not configured correctly. Rather than run without sandboxing I'm aborting now. You need to make sure that /tmp/.mount_teams-6npqC4/chrome-sandbox is owned by root and has mode 4755.
Trace/breakpoint trap (core dumped)

I am not entirely certain where to go from there honestly. Going to reboot and see if something needs to get rebuilt/rerun after my install of libfuse2 and give it another shot though. Please let me know what else I can do to help.

@akettmann-apic
Copy link
Copy Markdown

No change after reboot.

IsmaelMartinez added a commit that referenced this pull request May 15, 2026
…e x11 default (#2547)

* docs(notifications,wayland): GNOME workaround for #2411, restore ozone x11 default

Documents the GNOME notification-disappearance workaround confirmed on #2411 (notificationMethod electron plus timeoutType never), and corrects four references that claimed the shipped ozone-platform default is auto. package.json lines 102 and 146 still ship --ozone-platform=x11 on every Linux packaging format; PR #2506 is the queued migration to auto and has not landed yet.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs: address Gemini feedback on PR #2547

Switch "centre" to "center" to match the existing American-English
convention in the docs, and drop a redundant "X11 remains the default"
clause from the Wayland admonition.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The X11 default was added in v2.7.4 to mask Electron 38 era native Wayland
regressions. Two upstream changes mean we no longer need to ship an explicit
backend at all: Electron 38 deprecated ELECTRON_OZONE_PLATFORM_HINT (the env
var family DISABLE_WAYLAND belonged to) because Chromium 140 made
--ozone-platform-hint default to "auto", and the Chromium CL behind that
(crrev.com/c/6775426) lets the renderer pick Wayland on Wayland sessions and
X11 otherwise without any flag.

Drop both executableArgs entries from package.json. Users who hit a regression
can still pin x11 or wayland explicitly, documented in troubleshooting.md and
configuration.md. The runtime XWayland detection in commandLine.js is
intentionally unchanged: isXWayland still triggers only on an explicit
--ozone-platform=x11, so the wayland.xwaylandOptimizations opt-in path is
preserved for users who need it.

Update cross-distro test docs and the entrypoint comment to reflect that the
AppImage no longer ships a default. start-wayland.sh continues to force
--ozone-platform=wayland for native Wayland tests; start-x11.sh and
start-xwayland.sh launch with no flag and rely on Chromium's session-based
selection.

Add pr_number and app_url inputs to the cross-distro smoke workflow so the
matrix can be triggered against a PR build's AppImage rather than the latest
release. Inputs are validated and consumed only via env vars to avoid
workflow injection.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@IsmaelMartinez IsmaelMartinez force-pushed the claude/ozone-flag-auto-nWlFb branch from 1f98e9c to be857d4 Compare May 16, 2026 07:15
@sonarqubecloud
Copy link
Copy Markdown

Geek0x0 pushed a commit to Geek0x0/teams-for-linux that referenced this pull request May 19, 2026
…inez#2511)

PR IsmaelMartinez#2509 ("docs(roadmap): capture 2026-05-07 ozone-platform default reset
session") accidentally bundled a package.json change that flipped the flag
from =x11 to =auto. =auto is not a valid value for --ozone-platform —
Chromium aborts with `FATAL:ui/ozone/platform_selection.cc:46 Invalid ozone
platform: auto`, making every build cut from main since 2026-05-07
unlaunchable on every distro and packaging format.

Restore the working =x11 default. The proper "remove the flag entirely and
let Chromium auto-detect per session" direction is being handled separately
on IsmaelMartinez#2506; this is the minimum patch to keep main releasable until that lands.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Geek0x0 pushed a commit to Geek0x0/teams-for-linux that referenced this pull request May 19, 2026
… restore ozone x11 default (IsmaelMartinez#2547)

* docs(notifications,wayland): GNOME workaround for IsmaelMartinez#2411, restore ozone x11 default

Documents the GNOME notification-disappearance workaround confirmed on IsmaelMartinez#2411 (notificationMethod electron plus timeoutType never), and corrects four references that claimed the shipped ozone-platform default is auto. package.json lines 102 and 146 still ship --ozone-platform=x11 on every Linux packaging format; PR IsmaelMartinez#2506 is the queued migration to auto and has not landed yet.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs: address Gemini feedback on PR IsmaelMartinez#2547

Switch "centre" to "center" to match the existing American-English
convention in the docs, and drop a redundant "X11 remains the default"
clause from the Wayland admonition.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants