Pinning bundle.windows.signCommand in the base tauri.conf.json broke
from-source builds: Tauri tries to invoke a signtool path that only
exists on the maintainer's machine, with a cert thumbprint they don't
have. The build-windows-check CI job already worked around this by
passing --config '{"bundle":{"windows":{"signCommand":null}}}'. If CI
needs that override, every external builder needs it too.
Invert: base config has no signCommand. Local signed builds opt in by
copying tauri.windows.signing.example.json to tauri.windows.signing.json
(gitignored), filling in local values, and running tauri:build:signed-win
which deep-merges the override via --config.
- Remove signCommand from src-tauri/tauri.conf.json
- Add src-tauri/tauri.windows.signing.example.json (template, committed)
- Gitignore src-tauri/tauri.windows.signing.json
- Add npm script tauri:build:signed-win
- Drop the --config signCommand:null workaround from build-windows-check
- Rewrite README signing section to reflect the override flow
Per review feedback: keep a Windows build in the release matrix so
each release still catches Windows-only Rust cfg, Tauri config drift
and NSIS template breakage. The new build-windows-check job has no
releaseId (nothing is uploaded) and overrides signCommand to null
via --config, since the hosted runner has neither the Certum cert
nor SimplySign Desktop.
Signed Windows installers continue to be produced and uploaded
out-of-band by the maintainer. README wording rephrased so it does
not read as a fully automated release pipeline.
Tauri bundle.windows.signCommand calls signtool for the app .exe,
NSIS plugin DLLs, and the final installer in one build pass — all
go out signed with the Certum OV cert.
Object-form signCommand is required: Tauri parses the string form
naively (split_whitespace) and breaks on whitespace in the signtool
path, even with quotes. The object form takes cmd + args[] cleanly.
README adds a maintainer section covering the SimplySign Desktop
prerequisite, the --bundles nsis flag (default 'all' fails because
MSI rejects -dev pre-release identifiers), the signtool verify
command, and a note that target/release/psysonic.exe ends up
unsigned on disk while the installer holds the signed copy.
After #731 the .deb/.rpm/Nix packages follow the session display server,
but AppImage still pins GDK_BACKEND=x11 via its AppRun hook. Document the
asymmetry in the install guidance and complete the #731 changelog entry so
users know which package gives a native-Wayland launch.
TELEMETRY.md captures the standing no-telemetry stance as a standalone
document next to PRIVACY.md. The README Privacy section now links
both: TELEMETRY.md for the policy itself, PRIVACY.md for how each
opt-in integration handles data.
Document where to ask questions, local commands that mirror CI, PR
expectations, caution around disruptive UI, stability of the Tauri
Rust-frontend contract, and impact of on-disk settings changes.
Link the guide from the README Development section.
Restructures the README with a calmer tone and clearer information
architecture:
- new tagline + intro paragraph (less marketing-speak, more honest)
- badge row split into release/community/distribution groups,
with a new Ko-fi support badge
- merged "Server Compatibility" + "Why Psysonic?" into a single
"What is Psysonic?" section
- "Core Features" → "Highlights", restructured into Playback & Queue,
Audio Tools, Library Management, Lyrics & Discovery, a new
Sharing & Social Listening block (Magic Strings + Orbit), and
Personalization & Accessibility
- Orbit is now treated as a current feature (no longer "Upcoming"),
with a banner image and a paragraph about real-world use
- Privacy and Community sections expanded with proper links to
Discord, Telegram, Issues and Ko-fi
- License + Forks-and-Attribution rewritten in a friendlier tone
while still preserving the same intent
Assets:
- public/orbit.png — new Orbit banner
- public/screenshot1.png — refreshed app screenshot
* docs: add NOTICE and TRADEMARK files
Adds a NOTICE.md with the GPLv3 §7(b) attribution-preservation terms
that derivative works must carry forward, and a TRADEMARK.md that
covers the Psysonic name, logo, brand identity, and the names of
original Psysonic features (in particular Orbit) — none of which are
licensed under the GPLv3.
Forks remain free under GPLv3 to reuse the code, but must rename
Psysonic-branded assets and feature names, and must preserve the
attribution that original Psysonic features were designed and
implemented in this project.
* docs(readme): add Forks and Attribution section
Points readers at the GPLv3 freedoms while clarifying the expectations
for forks: keep the project name and feature names as documented in
TRADEMARK.md, preserve attribution as required by NOTICE.md, and do
not present original Psysonic work (such as Orbit) as independent
creations of a fork.
- Add Cachix badge to the top row linking to psysonic.cachix.org
- New NixOS/flakes feature bullet and a dedicated install block with
nix run quickstart, system-config hint, Cachix substituter setup, and
credit + PR link for @cucadmuh
- macOS install block: drop the xattr Gatekeeper workaround (obsolete
since v1.40.0 signed + notarized builds); replace with a note on the
in-app auto-updater
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Document NixOS/Home Manager installation from the upstream flake,
including Cachix substituter/key configuration, apply commands, and pinning.
Also add a README Linux note linking to the new NixOS guide.
Condensed 27 feature bullets to 14 key highlights, replaced exact
theme count with "wide selection", added CLI Control entry, and
removed the completed roadmap section (redundant with features list).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add "Reset to defaults" button to column picker in AlbumTrackList, PlaylistDetail, Favorites (all 8 locales)
- Fix device sync cross-OS status detection: store filenameTemplate in manifest, use it for path computation on import
- Redesign filename template UI: preset buttons (Standard/Multi-Disc/Alt. Folder), clickable token chips ({artist}, {album}, etc.), clear button
- Fix suggestions section in PlaylistDetail missing album column rendering
- Add PRIVACY.md documenting all third-party integrations (Last.fm, LRCLIB, Apple Music, Discord); link from README
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
symphonia-adapter-libopus bundles libopus and compiles it via cmake.
Without cmake installed, cargo build fails with a C compiler error.
Added install instructions for Linux, macOS, and Windows.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Replace single screenshot with 4 new screenshots in README
- Remove old icon.png, logo.png, screenshot.png
- Add missing allow-minimize + allow-toggle-maximize capabilities
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Themes:
- Add Poison (phosphor green on charcoal), Nucleo (warm brass light), Classic Winamp (LCD glow, Winamp yellow/orange) themes
- Overhaul Psychowave — refined deep violet, no longer WIP
- Reorganise ThemePicker into groups: Catppuccin, Nord, Retro, Tokyo Night, Psysonic Themes
- Add --volume-accent CSS var for per-theme volume slider colour override
Queue:
- Full toolbar redesign with centred round buttons (Shuffle/Save/Load/Clear/Gapless/Crossfade)
- Crossfade popover with 1–10 s range slider, right-aligned to avoid viewport overflow
- Queue header: title + count + duration inline in accent colour, close button removed
- Tech info (codec/bitrate) as frosted-glass overlay badge on cover art
UI:
- CoverLightbox shared component for album cover (AlbumHeader) and artist avatar (ArtistDetail)
- NowPlayingDropdown: separate spinning/loading state — button always clickable, icon spins 600 ms min
- Settings: "Experimental" badge on Crossfade and Gapless toggles
- Help page: 2-column grid layout, new Crossfade & Gapless Q&A entry, updated theme/language entries
i18n:
- Full French (fr) and Dutch (nl) translations across all namespaces
- Language selector sorted alphabetically (nl, en, fr, de)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>