Skip to content

Omakade 1.8: Home, game details, artwork, and session recording - #43

Merged
btsouth merged 36 commits into
mainfrom
codex/feature-quality-local
Sep 9, 2026
Merged

Omakade 1.8: Home, game details, artwork, and session recording#43
btsouth merged 36 commits into
mainfrom
codex/feature-quality-local

Conversation

@btsouth

@btsouth btsouth commented Sep 8, 2026

Copy link
Copy Markdown
Owner

Adds Home and Up Next, discovery filters, richer game details, unified artwork selection, optional session recording, and expanded personal backups. Also fixes ROM Folders visibility, library card stability, controller focus, and launch feedback.

Validation for 5ba99e6:

  • 213/213 isolated tests passed locally and on both architectures in CI. Seven additional UI checks passed against the installed binary.
  • Both package workflows passed install, upgrade, removal, reinstall, and dependency scans. Package checksums and source contents were verified.
  • The maintainer tested controller input and game launch, exit, and return. A real GoldenEye session was checked with the candidate recorder.
  • Backup recovery and disposable backup UI checks passed.

The maintainer approved publication. ARM64 physical testing is explicitly waived for this release; its packages are available with automated validation only. Recording counts emulator process time, including pauses, and requires a recognizable game path. PR #33 remains separate.

Every emulator keeps its own playtime in its own format and several keep none
at all. A small per-user recorder now watches the process table and attributes
sessions to library games by the game image path on the emulator's command
line, covering RetroArch, Dolphin, PCSX2, Cemu, Ryujinx, shadPS4, and
yuzu-family forks like Eden, whether launched from Omakade, a terminal, or a
wrapper script.

Sources that import playtime merge it with recorded sessions as
max(imported, baseline + sessions); the baseline is the imported playtime at
the first sighting and is never raised, so the two counters never double count
and periods without the recorder fall back to the emulator's number. Cemu,
Dolphin, and shadPS4 gain real hours and last-played dates. Sessions carry a
heartbeat, so a recorder crash closes them at the last proven moment, and
elapsed time comes from the monotonic clock so suspended time is not billed.
When an emulator that only writes its own playtime on exit ends a session, the
recorder asks the running window to rescan that source. A Settings toggle
controls the display and the recorder together, and everything stays local.

Ships as omakade-sessiond with a systemd user unit and a data-driven profile
file under /usr/share/omakade so new emulators need no code change. Enable
with systemctl --user enable --now omakade-sessiond.

All 54 automated checks pass.
…d games

The details page already identified games and showed their rating. The IGDB
query now also fetches first release date, genres, summary, and involved
companies, and the persisted entry carries a payload version so identified
games refresh once and pick the new fields up without waiting for the regular
30-day cycle.

A quiet Game info section on game details lists the release date, the original
platform (from the console system itself, or IGDB platform names for sources
like Steam), genre chips, developer and publisher credits, and a one-paragraph
background. Unidentified games show nothing new.

All 54 automated checks pass.
…ity-local

# Conflicts:
#	tests/CoreTests.cpp
@coderabbitai

coderabbitai Bot commented Sep 8, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 106 files, which is 6 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: be259c1d-2296-48fc-a455-86b0edabd315

📥 Commits

Reviewing files that changed from the base of the PR and between b1c8311 and 5ba99e6.

📒 Files selected for processing (106)
  • .github/workflows/release.yml
  • CHANGELOG.md
  • CMakeLists.txt
  • PLAN.md
  • PRIVACY.md
  • README.md
  • docs/BACKUP-FORMAT.md
  • docs/COMPLETION-PLAN.md
  • docs/DISCOVERY-EXPANSION.md
  • docs/FEATURE-QUALITY-PLAN.md
  • docs/HOME-LOCAL-CANDIDATE.md
  • docs/LOCAL-CANDIDATE.md
  • docs/LOCAL-QUALITY-REVIEW.md
  • docs/NAVIGATION-LOCAL-CANDIDATE.md
  • docs/NAVIGATION-REDESIGN-PLAN.md
  • docs/NAVIGATION-REVIEW.md
  • docs/PUBLICATION-CANDIDATE.md
  • docs/PUBLICATION-HISTORY-2026-09-08.md
  • docs/QUALITY-SWEEP.md
  • docs/RECORDING-COVERAGE.md
  • packaging/io.github.tsouth89.Omakade.metainfo.xml
  • packaging/omakade-sessiond.service
  • qml/Main.qml
  • qml/components/ActionMenu.qml
  • qml/components/CouchBrowsePanel.qml
  • qml/components/CouchLibraryView.qml
  • qml/components/GameCard.qml
  • qml/components/GameMetadataEditor.qml
  • qml/components/GlassButton.qml
  • qml/components/LaunchFeedback.qml
  • qml/components/LibraryView.qml
  • qml/components/MenuAction.qml
  • qml/components/SettingsPanel.qml
  • qml/screens/ArtworkEditor.qml
  • qml/screens/BackupEditor.qml
  • qml/screens/GameDetails.qml
  • qml/screens/HomeScreen.qml
  • resources/sessiond-profiles.json
  • src/app/AppSettings.cpp
  • src/app/AppSettings.h
  • src/app/SingleInstance.cpp
  • src/app/SingleInstance.h
  • src/app/main.cpp
  • src/backup/BackupArchive.cpp
  • src/backup/BackupDatabase.cpp
  • src/backup/BackupManager.cpp
  • src/backup/BackupSnapshot.cpp
  • src/library/ArtworkPersistence.h
  • src/library/BattleNetGameModel.cpp
  • src/library/CemuGameModel.cpp
  • src/library/CemuGameModel.h
  • src/library/ConsolePortalModel.cpp
  • src/library/ConsolePortalModel.h
  • src/library/CoverCachePolicy.h
  • src/library/DolphinGameModel.cpp
  • src/library/DolphinGameModel.h
  • src/library/FaugusGameModel.cpp
  • src/library/GameRoles.h
  • src/library/HeroicGameModel.cpp
  • src/library/HomeModel.cpp
  • src/library/HomeModel.h
  • src/library/LibraryFilterModel.cpp
  • src/library/LibraryFilterModel.h
  • src/library/LutrisGameModel.cpp
  • src/library/ManualGameModel.cpp
  • src/library/MockGameModel.cpp
  • src/library/Pcsx2GameModel.cpp
  • src/library/Pcsx2GameModel.h
  • src/library/RetroArchGameModel.cpp
  • src/library/RetroArchGameModel.h
  • src/library/RyujinxGameModel.cpp
  • src/library/RyujinxGameModel.h
  • src/library/SavedFilterRules.h
  • src/library/Shadps4GameModel.cpp
  • src/library/Shadps4GameModel.h
  • src/library/SteamGameModel.cpp
  • src/library/UnifiedGameModel.cpp
  • src/metadata/GameInsightsService.cpp
  • src/metadata/GameInsightsService.h
  • src/metadata/GameMetadata.cpp
  • src/metadata/GameMetadata.h
  • src/metadata/RegionalMetadata.h
  • src/sessiond/main.cpp
  • src/tracking/AppNotify.cpp
  • src/tracking/AppNotify.h
  • src/tracking/PlaySessionStore.cpp
  • src/tracking/PlaySessionStore.h
  • src/tracking/ProcFs.cpp
  • src/tracking/ProcFs.h
  • src/tracking/ProcessMatcher.cpp
  • src/tracking/ProcessMatcher.h
  • src/tracking/SessionDatabase.cpp
  • src/tracking/SessionDatabase.h
  • src/tracking/SessionRecorder.cpp
  • src/tracking/SessionRecorder.h
  • tests/BackupRecoveryTests.cpp
  • tests/CMakeLists.txt
  • tests/CoreTests.cpp
  • tests/fixtures/regional-metadata/README.md
  • tests/fixtures/regional-metadata/regional-ff2.json
  • tests/fixtures/regional-metadata/regional-ff3-jp.json
  • tests/fixtures/regional-metadata/regional-ff3.json
  • tests/fixtures/regional-metadata/regional-paperboy.json
  • tests/fixtures/regional-metadata/regional-starwing.json
  • tests/fixtures/regional-metadata/smw-broad.json
  • tests/fixtures/regional-metadata/smw-exact.json

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • Review on demand using usage pricing

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@btsouth btsouth changed the title Prepare 1.8: Home, regional details, artwork, and session recording Omakade 1.8: Home, game details, artwork, and session recording Sep 9, 2026
@btsouth
btsouth marked this pull request as ready for review September 9, 2026 02:22
@btsouth
btsouth merged commit 5ba99e6 into main Sep 9, 2026
14 of 15 checks passed
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.

1 participant