Skip to content

Add Achievement Companion#1035

Open
parvagans wants to merge 12 commits into
SteamDeckHomebrew:mainfrom
parvagans:add-achievement-companion
Open

Add Achievement Companion#1035
parvagans wants to merge 12 commits into
SteamDeckHomebrew:mainfrom
parvagans:add-achievement-companion

Conversation

@parvagans
Copy link
Copy Markdown

@parvagans parvagans commented Apr 20, 2026

Add Achievement Companion to Plugin Store

Achievement Companion is a Decky plugin for Steam Deck Game Mode that provides provider-first achievement dashboards for RetroAchievements and Steam.

It adds a controller-friendly and touch-friendly quick-access achievement companion with compact provider dashboards, fullscreen browsing views, recent unlocks, recently played games, profile stats, provider-specific settings, and optional Steam full-library achievement scanning.

For RetroAchievements, the plugin shows profile details, recent achievements, recently played games, completion progress, achievement history, game detail pages, and achievement detail pages where available.

For Steam, the plugin shows profile/account progression, recently played games, recent achievement unlocks, Steam level/badges where available, and cached full-library achievement totals from a manual scan. Steam scans can take several minutes depending on library size, and some skipped or failed games are expected when Steam reports no stats, private data, or unavailable achievement data.

The plugin uses a Python main.py backend for authenticated provider requests and backend-owned credential storage. API keys are not stored in browser localStorage / sessionStorage, and frontend-facing provider config does not expose raw API keys.

Repository:
https://github.com/parvagans/achievement-companion

Release:
https://github.com/parvagans/achievement-companion/releases/tag/v0.2.3

License:
BSD-3-Clause

Task Checklist

Developer

  • I am the original author or an authorized maintainer of this plugin.
  • I have abided by the licenses of the libraries I am utilizing, including attaching license notices where appropriate.
  • Generative AI was NOT used to write a majority of the code I am submitting.

Plugin

  • I have verified that my plugin works properly on the Stable and Beta update channels of SteamOS.
  • I have verified my plugin is unique or provides more/alternative functionality to a plugin already on the store.

Backend

  • No: I am using a custom backend other than Python.
  • No: I am using a tool or software from a 3rd party FOSS project that does not have its dependencies statically linked.
  • No: I am using a custom binary that has all of its dependencies statically linked.

Community

  • I have tested and left feedback on two other pull requests for new or updating plugins.
  • I have commented links to my testing report in this PR.

Testing

  • Tested by a third party on SteamOS Stable or Beta update channel.

@parvagans parvagans requested a review from a team as a code owner April 20, 2026 21:43
@github-actions github-actions Bot added the plugin-addition Adding a plugin to the Plugin Store label Apr 20, 2026
@github-actions
Copy link
Copy Markdown

Issues Found

No issues with your PR description were found.

Next Steps

  1. If we found any issues above, please edit your pull request description to resolve them and leave a comment saying you've done so.
  2. For the quickest review, please see the Community section of the pull request template for how you can help other developers.
  3. Once your description is correct, a maintainer will review your pull request as soon as possible.

Thank you for your contribution! If you need any help, please reach out on our Discord server. ❤️

@parvagans
Copy link
Copy Markdown
Author

parvagans commented Apr 20, 2026

I have personally tested Achievement Companion on Steam Deck Game Mode with Decky Loader on SteamOS Stable. I have not yet personally tested Beta.

After opening the PR branch, I updated the Achievement Companion submodule pointer to commit b599d85d4aab743779b501821a0f97be8275d27e, which adds the store preview image and README screenshots. The plugin version remains 0.2.0.

@parvagans
Copy link
Copy Markdown
Author

Updated the Achievement Companion submodule to v0.2.1.

This patch release includes safety/reliability hardening only:

  • stronger frontend redaction for secret-like fields and URLs
  • corrupted backend config/secrets JSON quarantine and recovery
  • Steam scan overlap prevention
  • dashboard refresh de-duplication
  • reduced duplicate Steam scan progress diagnostics

No credential storage format change was made. API keys remain backend-owned and are not stored in browser localStorage/sessionStorage.

@parvagans
Copy link
Copy Markdown
Author

Updated Achievement Companion to v0.2.2.

Release:
https://github.com/parvagans/achievement-companion/releases/tag/v0.2.2

Hotfix:

  • Fixes Decky backend startup when Decky launches the plugin from outside the plugin directory.
  • Preserves existing provider settings/secrets; no credential reset is required.
  • Confirmed on Steam Deck: backend loads, existing settings are recognized, RetroAchievements refresh completes, and Steam refresh completes.

Release boundary:

  • Decky ZIP remains Decky-only.
  • SteamOS standalone/dev-shell files are excluded from the Decky release ZIP.
  • Packaged package.json is hardened and does not expose SteamOS helper scripts.

PR branch:

  • Submodule now points to v0.2.2: 1de6f6d

@EMERALD0874 EMERALD0874 marked this pull request as draft May 3, 2026 16:08
@EMERALD0874
Copy link
Copy Markdown
Member

Please let us know when you are done updating the plugin. Marking this as draft until you are satisfied with the state of your plugin and ready for a PR.

@parvagans
Copy link
Copy Markdown
Author

Please let us know when you are done updating the plugin. Marking this as draft until you are satisfied with the state of your plugin and ready for a PR.

Thanks. The plugin is currently in a stable state and I am satisfied with this version for the Decky plugin PR.

The recent separation/preparation work was only to keep the Decky plugin path stable while allowing future SteamOS app work to happen separately. That future SteamOS app work is not intended to be part of this PR.

This PR should be considered ready for review as the Decky plugin submission. Please let me know if there are any specific packaging, metadata, or repository changes you would like before review.

@beebls
Copy link
Copy Markdown
Contributor

beebls commented May 6, 2026

You will need to either replace the MIT license with the BSD-3 Clause license or just append it to the bottom of your existing license

@parvagans parvagans marked this pull request as ready for review May 8, 2026 16:38
@parvagans
Copy link
Copy Markdown
Author

You will need to either replace the MIT license with the BSD-3 Clause license or just append it to the bottom of your existing license

Updated Achievement Companion to use BSD-3-Clause as requested.

Changes:

  • Replaced the project LICENSE with BSD-3-Clause.
  • Updated package metadata to "BSD-3-Clause".
  • Updated README license wording.
  • Confirmed Decky release packaging still passes and the packaged package.json reflects BSD-3-Clause.

No runtime/provider behavior changed.

@parvagans parvagans marked this pull request as draft May 13, 2026 17:35
@beebls
Copy link
Copy Markdown
Contributor

beebls commented May 13, 2026

You haven't checked the box that you tested this on SteamOS, can you clarify if you have or not? If not, we'll need you to get someone to test it and verify that it works before we start reviewing.

parvagans and others added 2 commits May 15, 2026 15:04
Updates the Achievement Companion submodule to the v0.2.3 release.

This release includes Decky provider launcher/setup polish, RetroAchievements panel and fullscreen UI refinements, avatar cache-busting, settings back-navigation fixes, Steam provider filter safety, and expanded regression coverage.
@parvagans
Copy link
Copy Markdown
Author

Updated Achievement Companion to v0.2.3.

Release:
https://github.com/parvagans/achievement-companion/releases/tag/v0.2.3

Summary:

  • Polished the Decky provider launcher and provider setup pages.
  • Improved RetroAchievements dashboard, panel game/achievement pages, and fullscreen profile/game/achievement/history pages.
  • Fixed fullscreen Settings back-navigation when opened from fullscreen Profile.
  • Added safe provider avatar cache-busting.
  • Prevented RetroAchievements-only Hardcore/Softcore filters from appearing on Steam game detail pages.
  • Cleaned up duplicated Decky UI helpers and expanded regression coverage.

Validation:

  • npm run typecheck
  • node --import tsx --test tests/createAppServices.test.ts
  • npm run build
  • npm test
  • python -m unittest discover -s tests/python -p "test_*.py"
  • python -c "from pathlib import Path; source = Path('main.py').read_text(); compile(source, 'main.py', 'exec'); print('main.py syntax OK')"
  • npm run package:release
  • npm run check:release

Final counts:

  • JS/TS: 196 passed
  • Python: 142 passed

Copy link
Copy Markdown
Member

@AAGaming00 AAGaming00 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"no controller optimization yet" tells me that you're using mostly standard HTML elements instead of the proper Decky components to ensure your plugin feels in-line with Steam's UI design and navigation systems (and a little code review confirmed that thought in a lot of areas), so I'm going to soft-block this until you get that sorted as I'd rather not be shipping this in its current state with inconsistent UI and navigation support. If you really need this out urgently I'll allow it but I'd rather that fixed first.

@parvagans
Copy link
Copy Markdown
Author

"no controller optimization yet" tells me that you're using mostly standard HTML elements instead of the proper Decky components to ensure your plugin feels in-line with Steam's UI design and navigation systems (and a little code review confirmed that thought in a lot of areas), so I'm going to soft-block this until you get that sorted as I'd rather not be shipping this in its current state with inconsistent UI and navigation support. If you really need this out urgently I'll allow it but I'd rather that fixed first.

Thanks for the detailed feedback — no rush on my side at all. The plugin is still actively being worked on and I’m treating the current PR as an ongoing integration effort rather than something I’m trying to rush through immediately.

Recent updates already moved a large portion of the provider launcher/setup flow onto shared controller-focusable interaction paths with improved back-navigation behavior and more consistent Decky-style surfaces, but I agree there are still remaining areas that need more alignment with proper Decky/Steam navigation and component patterns.

I’ll continue iterating on those areas before pushing for merge approval, and I’m completely fine keeping the PR in draft/soft-blocked state until everything is properly ironed out and feels consistent.

@parvagans
Copy link
Copy Markdown
Author

parvagans commented May 17, 2026

"no controller optimization yet" tells me that you're using mostly standard HTML elements instead of the proper Decky components to ensure your plugin feels in-line with Steam's UI design and navigation systems (and a little code review confirmed that thought in a lot of areas), so I'm going to soft-block this until you get that sorted as I'd rather not be shipping this in its current state with inconsistent UI and navigation support. If you really need this out urgently I'll allow it but I'd rather that fixed first.

Hey, just wanted to follow up — v0.2.4 is now pushed and specifically addresses the controller navigation gaps.
The main changes in this update:

Replaced raw div/button elements with Focusable throughout the full-screen profile, game, and completion progress pages
D-pad left/right navigation now works across all pill action rows, stat grids, achievement filter rows, and mode filter rows via flow-children=left-right
DeckyCompactPillActionGroup and DeckyFullscreenActionRow both wrapped in Focusable for consistent controller focus behaviour
Merged split filter rows into single Focusable grids to fix diagonal D-pad navigation issues

Again, no rush. Happy to keep iterating if there are specific areas you'd like to see improved further before approval.

@github-actions
Copy link
Copy Markdown

This pull request is stale as no updates or testing reports have been posted within the last 7 days. Please ensure you are actively recruiting testers or resolving the issues discussed. If you do not remove the stale label or comment, this will be closed in 7 days. Please close this pull request if you need more time to resolve issues so we can keep our repo healthy.

@github-actions github-actions Bot added the stale label May 25, 2026
@parvagans parvagans marked this pull request as ready for review May 26, 2026 06:58
@github-actions github-actions Bot removed the stale label May 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

plugin-addition Adding a plugin to the Plugin Store

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants