Commit Graph
6 Commits
Author SHA1 Message Date
Joseph MattielloandClaude Opus 5.5 ef772c72a5 ci(app): build librashader from source for Intel macOS, Linux AppImage and .deb
Upstream's x86_64-macos zip holds an arm64 dylib and it publishes no Linux
binary, so shaders only worked on Apple silicon and Windows. A reusable
librashader.yml builds the C API from a pinned tag/commit (archive SHA-256
verified, cargo xtask build --profile optimized --locked) for x86_64 and
aarch64 macOS (MACOSX_DEPLOYMENT_TARGET=11.0) and x86_64/aarch64 Linux on the
Ubuntu 22.04 packaging runners, cached by commit+target+rust, uploaded as
librashader-<triple>.

macOS builds both slices from the same source and lipo-merges them;
check-universal.sh and make-universal.sh lose the arm64-only exception.
AppImage and .deb bundle librashader.so beside the executable (already probed).
CMake gains -DVJ_LIBRASHADER_LIB. The packaged libraries are loaded by CI,
including the x86_64 slice under Rosetta. release.yml leaves librashader-*
intermediates out of the release assets.

Refs #950

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 19:04:56 -04:00
Joseph MattielloandClaude Sonnet 5.5 a4ade7233f fix(app): native menu parity after the BIOS merge, F1 shows the in-window bar on macOS, Linux disc MIME types
The macOS bar mirrors File > Boot BIOS (CD BIOS, cartridge boot ROM, BIOS settings) and the View
items VSync and Library on home screen. F1 toggles the in-window menu bar under a native one, so
anything the native bar lacks stays reachable. .desktop lists the types shared-mime-info already
defines for .cue / .cdi / .chd. Windows clearRecents is a no-op (SHARD_PIDL NULL clears the user's
whole Recent list).

Refs #833

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-13 20:29:12 -04:00
Joseph MattielloandClaude Sonnet 5.5 71a215f1ef feat(app): native OS integration - macOS menu bar and Dock menu, file types, tray, dark title bar
One menu model (app/src/platform/commands.cpp) feeds every native surface: the macOS menu bar
and Dock menu (Objective-C++, replacing SDL's default menu after init and leaving SDL's app
delegate alone), and an optional tray / menu-bar icon through SDL_tray. A click posts a command
event, so nothing runs inside Cocoa's menu-tracking loop.

macOS: native menu bar with Cmd shortcuts (the in-window bar is hidden), Dock menu with recent
games, NSDocumentController recents, App Nap held while a game runs, document types plus an
exported UTI.
Windows: dark title bar, AppUserModelID shared with the installer shortcuts, Explorer / Jump
List recents, per-monitor-v2 + long-path manifest, optional per-user file associations in the
installer.
Linux: shared-mime-info types, MimeType= and desktop Actions, app id as WM_CLASS / Wayland
app_id (was com.provenance-emu.virtualjaguar), mime XML in the .deb and Flatpak.
All: screensaver allowed in the library / while paused and blocked while a game runs
(SDL disables it for the whole run by default), fullscreen state follows the OS, Show in
Finder / Explorer, launcher-argument filter (-psn_).

Tests: platform_unit (model, dispatch, recents, associations, event round trip),
platform_assoc_sync (extension lists and the app id agree across C++, Info.plist, installer,
.desktop, mime XML), native_menu_dump (macOS: builds and checks the real NSMenu).

Refs #833

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-13 20:14:54 -04:00
Joseph MattielloandClaude Sonnet 5.5 19ac80c603 feat(app): Flatpak manifest, offline cheat-data knob and CI bundle
A single manifest (app/packaging/flatpak) builds the checked-out tree offline: SDL3,
Dear ImGui, rcheevos, the librashader headers, slang-shaders, the libretro dats and
the 41 pinned cheat files are hash-pinned sources. New cache variable
VJ_APP_CHEATS_SOURCE_DIR lets VJCheatData take the cheats from a local folder.
render.sh derives the Flathub form (git source) from the same file.

Refs #839

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-13 15:11:26 -04:00
Joseph MattielloandClaude Sonnet 5.5 1a9603c9d6 ci(app): fix first-run package CI failures (yaml parse, appstream, GL test, portable check)
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-12 23:39:11 -04:00
Joseph MattielloandClaude Sonnet 5.5 7aa5f5433d build(app): install layout, icons, and per-platform packaging scripts (#839)
cmake --install now sweeps the bundled data beside the executable (cheats,
libretro-db, shaders, librashader) into <prefix>/bin, with licences and, on
Linux, desktop/appstream/icon files. Scripts assemble the macOS .app (universal
via lipo, Resources base path, hardened runtime + entitlements, notarization
helpers), the DMG, the Inno Setup installer + portable zip, the AppImage and
the .deb. Package-manager manifests are templates rendered by render.sh.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-12 23:27:56 -04:00