Repository navigation
1.2.0 · 2026-10-18
⬇️ Download playguard.zip (2.9 MB) · the app alone (7.4 MB) · how to install
🚀 39 features · 🐞 14 fixes · ✨ 16 polish · 78 commits since v1.1.0
🌟 Highlights
This release is about knowing what needs your attention and finding things faster: a notification bell, a reorganised layout, and a new check of the installed games. It also brings a richer Activity screen and a fuller change history.
-
🔔 Notification bell:
One place for what needs the parent, such as a weak PIN, PlayGuard left open without one, backups, SD-card space, an out-of-date recovery sysmodule or a newer Atmosphère, hekate or firmware. Y opens it, you can ignore a warning or mark everything read, and badges on tabs and rows lead to what to fix. The recovery sysmodule updates from the bell. -
🧭 New layout:
Console, History and PIN tabs replace Tools and Network clock. Each setting sits next to the feature it shapes, and Advanced has a screen of its own. The header shows the version, and the language and theme change with a tap or −. -
📊 Activity:
All games has its own screen, as covers or a list. The screen opens on the last account shown or on a default one. Long play times read in whole hours, and the all-time average is shown over months or years. -
🔍 Check the installed games:
Finds games with broken data, explains the cause and the fix, and repairs them. It remembers its results, keeps a To check section, and
Important
Summary written automatically.
📜 What changed
Every change in 1.2.0 (69 changes)
🚀 Features
- about: PlayGuard's release notes on the same screen as Atmosphère's and hekate's (#211) (6a368b4)
- about: the release notes on the Version row, Ⓐ and a chevron, not a row of their own (#220) (98ca7da)
- about: the release notes on their own screen, laid out as in "What's new" (#217) (be36404)
- activity: a grey controller on a game's cover until its icon arrives (#214) (ae4628c)
- activity: All games on a screen of its own, as covers or a list (#201) (1c7a4c8)
- activity: drop the games to rediscover (#209) (6d03162)
- activity: play time over 100 h in whole hours, the all-time average over months or years (#195) (69591f3)
- activity: start on the account shown last, or on a default one (#198) (5f88b3b)
- compat: firmware 23.0.1 verified on a console (#167) (a3f8802)
- console: the Console tab's notes icons on their rows, their text a press away (#216) (3b98efb)
- dev-builds: a clearer build page, GitHub's Markdown, text from GitHub made safe (#149) (0f325f3)
- dev-builds: a page per build, a loading bar, Find a build, resumed downloads (#147) (44239ec)
- dev-builds: each build on two lines with tags, Y to search (#150) (4f7d8bf)
- dev-builds: go back to the previous build, even when the new one crashes (#148) (a116ddf)
- dev-builds: the first tab lists the repository's releases, not just the latest (#145) (e7eacd3)
- games: the data check remembered, a To check section, games picked for one action (#166) (ea59309)
- games: the Reinstall actions as buttons above the list, and the list sent to a gist (#163) (a04395b)
- games: Tools › Check the installed games: the cause, the fix and the repairs (#69) (bb35936)
- header: the language and the theme in the main screen's header, a tap or − to change them (#189) (4964e7a)
- header: the version in a tag next to the title, the bell, language and theme at the right (#221) (7b4f601)
- history: refused changes, the countdown, day groups, a filter and an export (#159) (fd00eef)
- logs: a log file per run, PlayGuard's own CPU crashes with their backtrace, a fuller report (#157) (cdbe871)
- notices: a notification bell gathers what needs the parent, Y opens it (#155) (97be4df)
- notices: a weak PIN, PlayGuard open without it, backups, SD space, the week, and kinds to turn off (#158) (0338592)
- notices: ignore a warning to do from the bell, mark everything read (#188) (fe4a5b2)
- notices: the bell counts the parental controls, the Console tab the console, in a fixed order (#179) (ff92739)
- notices: the recovery sysmodule out of date, newer Atmosphère, hekate and firmware (#156) (7a386cf)
- pin: the PIN entered once holds until PlayGuard closes, asking again after 5 minutes a switch away (#186) (e307f09)
- play-timer: the week chart opens the per-day editor, one save for several days (#180) (9b9430a)
- rescue: update an out-of-date recovery sysmodule from the notification bell (#164) (88a2c4f)
- rollback: the previous build offered only after a start that did not finish, not with L + R (#218) (ea80f11)
- tools: release notes of Atmosphère, hekate and the firmware (#165) (ddc8ca8)
- ui: a badge on each tab with something to do (#199) (e23c2ef)
- ui: a Console tab and a History tab in place of Tools and Network clock (#178) (36c19b5)
- ui: an open padlock and a crossed-out pencil by the title, a tap goes where they are undone (#212) (ab8a14e)
- ui: each setting next to the feature it shapes, Advanced on a screen of its own (#176) (c7a01bb)
- ui: one meaning per word for the locks, a PIN tab, a chevron on lines that open a screen (#170) (6cc0166)
- ui: the badge on the row to fix, and the tab opens on it (#202) (a494fd2)
- ui: the installed games to check as covers, and All games' chevron (#213) (34b57c8)
🐞 Bug Fixes
- app: the findings of the second review of main (#185) (1dee8b6)
- console: a Diagnostics header above the network clock and the game check (#197) (a987107)
- dev-builds: no error page in a resumed download, requests side by side, a cut install recovered, a digest required (#173) (263e2ae)
- diagnostic: the memory PlayGuard allocated, developer mode logged, the free-communication list one ID per line (#222) (26463a1)
- games: one scan of the installed games at a time, stopped on exit, and the same names as Activity (#171) (475240b)
- i18n: a build without a checksum said to be refused, the public-report notice translated (#181) (c457964)
- markdown: runs of <, & and <scripted are read once, not once per character (#154) (b6c7561)
- play-timer: extra time comes back by itself the next day, no "Keep" to dismiss it with (#182) (fb1f49d)
- play-timer: no PIN, no silent "not applied"; three pctl codes named (#151) (8c271f6)
- rescue: the recovery report proven by the sysmodule, and other security fixes (#175) (7fbf87a)
- security: "Lock and quit" closes the game PlayGuard runs over (#146) (fc60f5f)
- sys-notes: older versions in the tabs left, so an up-to-date console can browse its notes (#196) (e01aed8)
- ui: the focus kept on the screen after a dialog whose opener went (#169) (f84c157)
- ui: the footer clock on one line, the hints whole on the Switch (#200) (db00d83)
✨ Polish
- activity: the games' icons decoded off the UI thread (#210) (47a7895)
- ci: shorter smoke-test pauses, cached packages, and the slow screens' timings in the diagnostic report (#206) (9b88467)
- ci: the smoke test in balanced shards, faster scrolls to a list's end, and no relayout for an unchanged text (#203) (2353adb)
- core: pctl, the recovery sysmodule, the simulator and playstats share what they repeated (#190) (f39766c)
- games: the name and icon of each game read from ns' cache first (#168) (f107fae)
- i18n: borealis' string lookup without an exception per string in English (#207) (bd93f24)
- prefs: Preferences only sets the app up, About holds its updates and help (#187) (f827f98)
- startup: the start-up's SD-card looks before the preferences halved, and each one timed (#215) (e9c1f1b)
- tests: shared test helpers, default suite flags, markdown::parse in steps (#191) (358a223)
- ui: borealis lays out only what changed, and registers a view's XML attributes only when read (#208) (69e2cae)
- ui: shared console actions, the game check's rules under test, smaller notices and main() (#193) (97887fb)
- ui: the change history and All games laid out once, and ccache caches the size of one build (#205) (a10465e)
- ui: the UI thread kept off the SD card: logs in batches, files read in part, config.json first (#172) (ac248cd)
- util: shared date, text, UTF-8, emoji and JSON helpers; dead code out; core headers extern "C" (#177) (d1005c4)
- util: the remaining copies on the shared helpers; the game check's rules and the Activity export out of their screens (#183) (8d00e08)
- util: the remaining hand-written copies on the shared helpers; the GitHub API's URLs and its 401 handled once (#192) (276e5fa)
🛠️ For contributors: tests, docs (5 changes)
🧪 Tests
- fuzz: resource checks for binds, layouts, images and config keys, new suites and seven fuzz targets (#174) (7d76ecc)
- smoke: the notices' ignored screen taken once the list scrolled from its settled layout (#194) (56503fd)
📚 Documentation
📦 Install
-
New install: download
playguard.zip(2.9 MB) and extract it to the root of the SD card.
The app lands insd:/switch/playguard/, its files insd:/config/playguard/. -
Already installed? Update from PlayGuard itself (About › Update), sphaira or the Homebrew App Store. The app alone:
playguard.nro(7.4 MB). -
Locked out?
playguard-rescue.zip(72 KB) is the optional recovery sysmodule, for a forgotten PIN.
Note
Requires custom firmware (Atmosphère). Checked on firmware 21.0.0 → 23.0.1. Compatibility
🔍 Build
Build report (size, tests, coverage, screenshots, toolchain) · SHA256SUMS.txt · provenance: gh attestation verify playguard.nro -R JigSawFr/PlayGuard
Contributors: @JigSawFr