Account switcher dropdown improvements: - Two-row display: Display Name on top, npub (middle-truncated) below e.g. 'Alice' / 'npub1abc...wxyz · Bunker' - Middle-truncation for npub: shows first 10 + last 6 chars - Resolves display names from DesktopLocalCache user metadata - Confirmation dialog also shows display name - npub-only (view-only) accounts now persist to encrypted storage (ensureCurrentAccountInStorage called in onLoginSuccess) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2.6 KiB
Fix: Relax libicu dependency in .deb packages
Date: 2026-04-27
Issue: #2579
Branch: fix/deb-libicu-dependency
Reference: upstream branch fix-libicu74-dependency
Problem
jpackage runs dpkg-shlibdeps against the bundled JDK's native libs (libfontmanager.so links libicu), pinning Depends: to the build host's libicu version (libicu74 on ubuntu-24.04). Users on Debian 12 (libicu72), Debian 13 (libicu76), Ubuntu 22.04 (libicu70) etc. cannot install.
Neither jpackage nor Compose Desktop DSL expose a way to override auto-generated Depends.
Solution
Post-process the .deb after jpackage: extract, rewrite the libicu dependency to accept any version from libicu66–libicu77, repack.
Changes
1. Add scripts/relax-deb-libicu.sh
Shell script that:
- Takes one or more .deb paths as arguments
- Extracts with
dpkg-deb -R - Uses sed to replace
libicuNN(or alternation) withlibicu66 | libicu67 | libicu70 | libicu72 | libicu74 | libicu76 | libicu77 - Repacks with
dpkg-deb -b - Idempotent — no-op when no libicu dep present
2. Update .github/workflows/build.yml
Add step after "Build Desktop Distribution" for the packageDeb matrix leg:
- name: Relax libicu dependency in .deb
if: matrix.task == 'packageDeb'
run: |
set -euo pipefail
chmod +x scripts/relax-deb-libicu.sh
scripts/relax-deb-libicu.sh desktopApp/build/compose/binaries/main/deb/*.deb
Insert between "Build Desktop Distribution" (line 160) and "Stop Gradle Daemon" (line 162).
3. Update .github/workflows/create-release.yml
Add step after "Build desktop artifacts" for the linux family leg:
- name: Relax libicu dependency in .deb
if: matrix.family == 'linux'
run: |
set -euo pipefail
chmod +x scripts/relax-deb-libicu.sh
scripts/relax-deb-libicu.sh desktopApp/build/compose/binaries/main-release/deb/*.deb
Insert between "Build desktop artifacts" (line 99-104) and "Build portable archives" (line 106).
Note: linux-portable leg doesn't build .deb so no action needed there.
Testing
- Script is idempotent — safe to run on any .deb
- CI will validate on next PR build (ubuntu-latest produces .deb artifact)
- Manual: install resulting .deb on Debian 13 (libicu76) to verify
Unanswered Questions
- Should we also handle RPM libicu deps? (RPM has different dep mechanism, likely not affected since RPM uses
Requires:from bundled libs differently) - Should the libicu version list be externalized to a config file for easier updates? (Probably YAGNI — adding a new version is a one-line sed edit)