super-productivity/electron-builder.yaml
Leandro Marques 179700ccda
chore: update electron to v41.x (#7097)
* chore: update electron to v41.1.1

* feat(start-app): clear GPU cache on Electron version change for Linux

* fix(window-decorators): disable custom window title bar for GNOME

This fixes some issues when moving and resizing the window

* refactor: Migrate url.format() (DEP0116) to file:// path approach

* refactor(start-app): remove deprecated protocol.registerFileProtocol in start-app.ts

* feat(electron-builder): update gnome content snap to gnome-42-2204 for improved compatibility and update flatpak permissions

* fix(window-decorators): improve handling of custom window title bar for GNOME

* feat(start-app): implement fallback to X11 in Snap if gnome-42-2204 runtime is unavailable

* chore: update electron to v41.1.1

* chore(package-lock): remove unused dependencies from package-lock.json

* fix(electron): move snap ozone-platform switch before app ready event

app.commandLine.appendSwitch() must be called before Chromium
initializes — after the ready event fires the GPU backend is already
running and the switch is a no-op. Move the Snap X11 fallback (defense-
in-depth for missing gnome-42-2204 runtime) to run synchronously at
startup, alongside the existing gtk-version and speech-dispatcher
switches.

* fix(electron): align IS_GNOME_DESKTOP detection with preload.ts logic

The original implementation only matched Ubuntu's GNOME session
(XDG_CURRENT_DESKTOP contains both 'gnome' AND 'ubuntu'), missing plain
GNOME on Fedora, Arch, etc. The preload.ts isGnomeDesktop() already
used the correct approach: check four environment variables with OR
logic. Align common.const.ts to match, preventing a split-brain where
the main process and renderer disagree on whether the user is on GNOME
— which would produce no title bar at all on non-Ubuntu GNOME desktops.

* fix(electron): restore v41 bump lost in merge and gate title-bar toggle

- Re-apply electron 41.2.0 + minimatch 10.2.5 override (master's 0e9218bd
  reverted the dependabot bump back to 37.10.3 while this branch's
  merge-base still contained 41.2.0, so the pre-merge diff was empty).
- Regenerate root package-lock.json accordingly.
- Drop unrelated esbuild additions from plugin-dev sub-lockfiles.
- misc-settings-form: gate isUseCustomWindowTitleBar on IS_ELECTRON &&
  !IS_GNOME_DESKTOP so the toggle does not appear in the web/PWA build.

---------

Co-authored-by: Johannes Millan <johannes.millan@gmail.com>
2026-04-17 18:12:43 +02:00

166 lines
4.8 KiB
YAML

appId: superProductivity
productName: Super Productivity
artifactName: ${name}-${arch}.${ext}
files:
- electron/**/*
- '!electron/**/*.ts'
- '!electron/**/*.js.map'
- .tmp/angular-dist/**/*
- 'embedded.provisionprofile'
# Exclude Nx binaries - they're build tools, not runtime dependencies
- '!**/@nx/nx-darwin-*/**'
- '!**/@nx/nx-linux-*/**'
- '!**/@nx/nx-win32-*/**'
#afterSign: ./tools/notarizeMacApp.js
directories:
output: './.tmp/app-builds'
win:
target:
- target: nsis
arch:
- arm64
- x64
- target: portable
arch:
- arm64
- x64
publish:
- github
nsis:
# Hardcoded to avoid spaces (SignPath converts spaces to dots). Also referenced in build.yml.
artifactName: Super-Productivity-Setup-${arch}.${ext}
# allow to install to custom location
oneClick: false
allowToChangeInstallationDirectory: true
portable:
artifactName: ${name}-${arch}.${ext}
appx:
applicationId: SuperProductivity
displayName: Super Productivity
publisherDisplayName: johannesjo
publisher: CN=___-___
identityName: ___johannesjo.SuperProductivity
linux:
# Fix for issue #5259: Set executable name without spaces for snap compatibility
executableName: superproductivity
category: Office;ProjectManagement
mimeTypes:
- x-scheme-handler/superproductivity
desktop:
entry:
StartupWMClass: superproductivity
target:
- AppImage
- deb
- snap
- rpm
publish:
- github
rpm:
# Fix for issue #5368: Prevent /usr/lib/.build-id/ collisions with other Electron apps
fpm: ['--rpm-rpmbuild-define=_build_id_links none']
# leads to Error: Please specify executable name as linux.executableName instead of linux.desktop.Exec
# desktop:
# Name: Super Productivity
# Comment: A todo list and time tracking app
# Exec: superProductivity
# Terminal: false
# Type: Application
# Icon: build/icon.png
# GenericName: ToDo List and Time Tracker
snap:
grade: stable
allowNativeWayland: true
autoStart: true
base: core22
confinement: strict
environment:
# Fix for issue #4920: Isolate fontconfig cache to prevent GTK dialog rendering issues
# https://github.com/super-productivity/super-productivity/issues/4920
FC_CACHEDIR: $SNAP_USER_DATA/.cache/fontconfig
plugs:
- default # Includes: home, desktop, desktop-legacy, x11, wayland, etc.
- password-manager-service
- system-observe
- login-session-observe
# Fix for issue #6031: Add filesystem access for local file sync
# https://github.com/super-productivity/super-productivity/issues/6031
- removable-media # Allows sync to external drives/USB storage
# Override electron-builder's hardcoded gnome-3-28-1804 content snap (core20 era)
# with gnome-42-2204 (core22 era) for up-to-date Mesa drivers and GSettings schemas.
# The plug name must match the template key to replace it rather than duplicate it.
# The explicit `content` attribute tells snapd to match the gnome-42-2204 slot.
# Pattern from Tidal HiFi: https://github.com/Mastermindzh/tidal-hifi
# gnome-42-2204 has global auto-connect (granted June 2022).
# Ref: electron-builder#9452, electron-builder#8548 (closed, not planned)
- gnome-3-28-1804:
interface: content
content: gnome-42-2204
target: $SNAP/gnome-platform
default-provider: gnome-42-2204
flatpak:
runtimeVersion: '25.08'
finishArgs:
- --share=network
- --share=ipc
- --socket=x11
- --socket=wayland
- --socket=fallback-x11
- --socket=pulseaudio
- --device=dri
- --filesystem=home
- --talk-name=org.freedesktop.Notifications
- --talk-name=org.kde.StatusNotifierWatcher
- --talk-name=org.gnome.Mutter.IdleMonitor
- --talk-name=org.freedesktop.secrets
- --system-talk-name=org.freedesktop.login1
- --env=XCURSOR_PATH=/run/host/user-share/icons:/run/host/share/icons
- --env=ELECTRON_TRASH=gio
mac:
appId: com.super-productivity.app
type: distribution
category: public.app-category.productivity
entitlements: build/entitlements.mac.plist
entitlementsInherit: build/entitlements.mac.plist
hardenedRuntime: true
gatekeeperAssess: false
provisioningProfile: embedded.provisionprofile
darkModeSupport: true
notarize: true
extendInfo:
ITSAppUsesNonExemptEncryption: false
publish:
- github
target:
# - zip
- target: dmg
arch:
- arm64
- x64
- universal
dmg:
sign: true
publish:
- github
pkg:
publish: never
# HERE: electron-builder.mas.yaml
#mas:
# type: distribution
# category: public.app-category.productivity
# entitlements: build/entitlements.mas.plist
# entitlementsInherit: build/entitlements.mas.inherit.plist
# provisioningProfile: prod.provisionprofile
# icon: build/icon.icns
# hardenedRuntime: true
# publish: never