Releases: ExponentiallyDigital/cfg-pia-wg
Release list
v0.7.08 (build 368)
2026-08-05 v0.7.08 build 368
- REL: Updated
./scripts/update-shas.shto stop using API returned "latest" SHA version (setup java's tag was touched today returning v1.4.5 instead of v5.7.0!), now pulls all versions, sorts, and picks highest release. - REL:
release.ymlnow usespubspec.yamlto parse current build and release.
2026-08-05 v0.7.07 build 367
- DOC: Added "GB" to "...8, 16, 32, 64 RAM configuations..." in BUILDING.md
- DOC: Split out backlog from
CHANGELOG.mdtoBACKLOG.md. - REL: Added URL redirect from https://exponentiallydigital.com/cfg-pia-wg/changelog to https://github.com/ExponentiallyDigital/cfg-pia-wg/blob/main/CHANGELOG.md
- REL: Added
promote.yml, promotes PS aab frominternaltrack toproduction. - REL: Parse changelog entries by matching against the pushed tag, sort by type and insert as GH release text.
- REL: Updated
release.yalto push aab to PS via API. - REL: Updated scripts/update-shas.sh
- TST: Added
test/release/release-notes.shto test new automated GH release notes, run from repo root.
2026-08-03 v0.7.06 build 366
- REL: Buildchain updated with
flutter pub upgrade --major-versions&.\android\gradlew -p android :dependencies :app:dependencies --write-locks - REL: Upgraded Flutter to 3.44.8 from 3.44.5 with
flutter upgrade --force
v0.7.05 build 365
2026-08-03 v0.7.05 build 365
- CHG: updated SHAs.
- CHG: updated
android\app\build.gradle.ktstobase.archivesName.set("cfg_pia_wg") // this sets the name of the .AAB output file. - CHG: removed postscript from in-app LICENSE display.
- DOC: updated CHANGELOG format.
- DOC: added how to upgrade dependency versions in BUILDING.md "4.1.2. When to regenerate lockfiles"
- REL: updated dependencies:
dartssh22.22.5 &jni1.0.3 - REL: tagged for release.
2026-08-03 v0.7.04 build 364
- REL: renamed app from cfg_pia_wireguard -> cfg_pia_wg (must use underscores, cannot use hyphens)
- update
pubspec.yaml-> name: cfg_pia_wg - search and replace in .dart files -> "import 'package:cfg_pia_wg/"
- update
android/settings.gradle.kts-> rootProject.name = "cfg_pia_wg" - check tests run and app compiles
- update
.github\workflows\release.yml-> mv build/app/outputs/bundle/release/cfg_pia_wg-release.aab - update
scripts\build.ps1-
$TARGET_APK = "build/cfg_pia_wg-v$ {VERSION}_release.apk" -
$APK_RELEASE = "build/cfg_pia_wg-v$ {VERSION}_release.apk" - $AAB_RELEASE = "build/app/outputs/bundle/release/cfg_pia_wg-release.aab"
-
- update
scripts\build.sh- TARGET_APK="build/cfg_pia_wg-v${VERSION}_release.apk"
- APK_RELEASE="build/cfg_pia_wg-v${VERSION}_release.apk"
- AAB_RELEASE="build/app/outputs/bundle/release/cfg_pia_wg-release.aab"
- save and exit VS Code, check tests run and app compiles with .\scripts\build all
- check app builds on GitHub dev branch
- update
- FIX: can't paste into password fields, and can't "q"uit debug running in any screen showing password fields, also causing screen
D/EGL_emulation(24795): app_time_stats: avg=499.58ms min=498.77ms max=500.27ms count=3count to increment; revert build 363 changes tolib\widgets\common_fields.dartandlib\watchdog_dialog.dart. Tested and now operating correctly: can "q"uit debugger, no incrementing count and can paste.
2026-08-03 v0.7.03 build 363
- FIX: Disabled ability to copy a password when the field is revealed. (Didn't check could paste, which is now broken when testing build 364, reverted changes in build 364)
2026-08-03 v0.7.02 build 362
- DOC: Update readme with the new name of the command-line tool -
cfg-pia-wg. - FIX: Updated
pubspec.yaml- app name was showing incorrectly in launchers, updated from "Configure PIA WireGuard" to "cfg-pia-wg". - DOC: Spellcheck ARCHITECTURE, CHANGELOG, and README.md.
- DOC: Replace ipv4.icanhazip.com in architecture.md, now using ping targets.
- DOC: Add to README.md that screenshots are disabled.
- DOC: Update security.md hotlink for reporting an issue, fix US spellings, remove Inactivity session self-destruct.
- CHG: Router IP address, 192.168.1.1 by default (matches SVG examples) and retained when entered.
- DOC: Add copies of all Claude plans to repo.
- GUI: Display the quad 9 default DNS addresses next to the Cloudflare ones in generate.
- GUI: Suggested DNS address help text is truncated.
- BLD: Added a warning to understand what the build optimisation script does before use.
- DOC: clarified README.md reason for
JFFSpartition enablement for storage of the watchdog script and settings between reboots. - REL: Drop debug and release builds from Actions workflows, update README.md to account for this
- DOC: added TOC and section numbering to TESTING.md
- ARC: per TESTING.md, the architecture only deploys
/jffs/scripts/services-startand/jffs/scripts/watchdog_wgcN.shto NVRAM. Other files are written to volatile storage:/tmp/watchdog_wgcN.log,/tmp/watchdog_last_ping_success_wgcN, and/tmp/watchdog_backoff_wgcN. This reduces NVRAM write wear. The watchdog log is not persistent and is rotated at midnight to reduce volatile storage. - DOC: added note to test that VPN is active after a firmware update (JFFS may be recreated by flashing process).
- GUI: enlarge WireGuard Configuration prompt for PIA credentials so that you can see the example DNS addresses; display is truncated.
- DOC: Update privacy.html to note that URLs in About screen go to locations on the Internet.
- INF: log message "kernel: jffs2: warning: (27325) jffs2_sum_write_data: Summary too big (-32 data, -877 pad) in eraseblock at 00280000", only seen once. No activity from app or script around that time. Checked deployed artifact sizes: 8,346 bytes (watchdog script), 205 bytes (services-start), 2,719 bytes (pia_ca.rsa.4096.crt), 181 bytes (cron entries) -> 11,451 bytes total used by app (typical). Web searches show that this can be ignored: created during NVRAM housekeeping. Likely occurred as a result of extensive app testing.
- ARC: check all non-critical data written to tmp, not JFFS
v0.7.01 build 361
Changes:
- REL: deploy to 'production' on Google Play Store
- CHG: add updated watchdog modal screenshot to Play Store
- REL: create a GitHub Actions release and verify build data in the new "About" screen
- CHG: removed Watchdog DISABLE and ENABLE menu options + services, rolled capability to CREATE/EDIT
- CHG: renamed watchdog "EDIT" button to "CREATE/EDIT"
- CHG: PIA username/password now cached while the app is running, no need to keep entering it (this matches the router username/pwd caching)
- CHG: pdated text displayed when editing a watchdog slot
- GUI: app name had reverted from yesterday's backed-out changes -> cfg-pia-wg
- DOC: updated app name in README
- GUI: updated text when deleting a watchdog
- CHG: updated watchdog modal screenshot in docs
- DOC: updated Watchdog functionality changes
- CHG: no message is written to the router log if you edit and save the watchdog's
cronIntervalMinutes- the cron job is updated, cosmetic - DOC: updated
(FLAG_SECURE)entry in README - DOC: updated Privacy Policy noting in-app links to the app's source code & documentation
v0.6.28
v0.6.21 build 351
2026-07-27 v0.6.21 build 351
- ADD: update-shas.ps1 now uses a 24-hour cache
- ADD: update-shas.ps1 added
-ForceRefreshswitch - FIX: update-shas.ps1 trailing comments
Full Changelog: v0.6.20...v0.6.21
v0.6.20 build 350
2026-07-20 v0.6.20 build 350
- ADD: added updating of dependencies to build.ps1/.sh (NB major versions are not upgraded automatically)
- ADD: allow copy/paste from router log
- ADD: COPY button to the router log display screen
- MOD: optimised, and reduced size of kWatchdogScriptTemplate by 123 chars
- ADD: watchdog shell script now checks for Internet access before attempting repair
- CHG: router watchdog shell script does not ping secondary target if primary is successful
- FIX: updating the watchdog timeout in the UI did not update a pre-existing cron schedule
- FIX: if you created a VPN via the watchdog interface, it was showing as enabled when it was not. Removed reminder to set it to active; when saving, the watchdog script is deployed and runs immediately.
v0.6.18
2026-07-06 v0.6.18 build 348
- set minSdk = 24 (Android 24, Android 7.0 Nougat) in android\app\build.gradle.kts
- source code grammer and spelling (non functional changes)
- reverted internal name space to "com.exponentiallydigital.pia_wireguard_cfga" in MainActivity.kt, proguard-rules.pro, build.gradle.kts, and settings.gradle.kts. This was part of the rename several commits ago but I found that this would have forced a complete restart of the Google Play closed test.
- updated actions/setup-java SHA to latest version
- updated dependency locks with "cd android; ./gradlew dependencies --write-locks"
- updated BUILDING.md to note how to upgrade flutter packages to their latest compatible build
v0.6.17
v0.6.17 build 347 temporary change to allow screenshots to be taken (to allow Android testers to prove that they have the app installed and are testing it - "SwapTest - 12 Testers" & "Testnest")
v0.6.16 build 346
- updated GitHub actions dependency versions
- modified readme formatting, added build chain details, normalised brand name convention
v0.6.14 build 344 security FIX
After auditing the router's file system, it was found that /usr/sbin/curl writes a command-line history to /jffs/curllst with 666 (!) file permissions. This log file is also rotated and may exist as /jffs/curllst.1. There appears to be no way to stop this file from being generated/used, so the bash script empties the file after every curl execution with an echo -n > /jffs/curllst ;)