Skip to content

Changelog

Jumpstile edited this page Jun 20, 2026 · 32 revisions

Changelog

Full version history is maintained in TeknoParrot-Manager-CHANGELOG.txt, included in every release ZIP and in the repository.


v0.99.1 BETA (2026-06-20)

  • Fix: the third-party FFB plugin setup (mode 7) could crash with an unhandled "Value cannot be null" error right after FFB Blaster setup aborted (e.g. no FFB Blaster field found, or no membership). Root cause: a PowerShell pipeline quirk where an empty-array return value is silently turned into $null once captured by a plain variable assignment. Fixed at every affected return point, plus a defensive guard added at the actual crash site.
  • Fix: the same quirk meant pressing "A) All unextracted games" in the AutoSync picker silently extracted nothing instead of extracting everything. Fixed the same way.
  • Fix: Remove-PostgresPartialInstall (used before a fresh PostgreSQL install attempt) now verifies a matched registry entry's install location before uninstalling it, and only stops/removes a service with the exact expected name -- closes a theoretical gap where an unrelated standalone PostgreSQL 8.3 install could have been caught by cleanup. Found via external security review; no evidence this was ever actually triggered.

v0.99 BETA (2026-06-19)

  • New: Postgres Setup (mode 11). Installs and configures the local PostgreSQL 8.3 database that some Incredible Technologies games need (Golden Tee Live, Power Putt Live, Silver Strike Bowling Live, Target Toss Pro, Orange County Choppers Pinball). Detects which of your registered games need it automatically -- no manual list to maintain. Never reinstalls PostgreSQL if it's already installed, and never recreates or restores over a database that already exists. For older game profiles that predate TeknoParrot's own "Automatically create Database" feature, creates the database and restores that game's bundled backup itself; for newer profiles, just fills in the connection settings. Installing PostgreSQL itself requires running the script as Administrator -- the first feature in this script that does.
  • New: Postgres database backups. Every Postgres setup run backs up every existing database first. Restore them via mode 9 (Restore Backup), alongside the TeknoParrot UserProfiles and LaunchBox library backup choices.
  • New: the database password is encrypted with Windows DPAPI before being saved -- the first secret this script has ever stored.

v0.98 BETA (2026-06-19)

  • New: direct LaunchBox integration. The script can now write registered games straight into LaunchBox's own library files -- no import wizard needed. Checks LaunchBox/BigBox are closed first, backs up every file it's about to change into Scripts\LaunchBoxBackups\, and never duplicates a game already present. The first time you use it, choose how TeknoParrot games should appear: mixed into your existing Arcade platform, a separate "TeknoParrot" platform, a platform with a name you choose, or both at once. See Register#launchbox and Restore Backup.
  • New: a "LaunchBox library backup" option under mode 9 restores the exact LaunchBox files the direct integration last changed.
  • Fix: the LaunchBox manual-import reference file had its ApplicationPath pointing at the game's executable. Confirmed against a real working LaunchBox installation that this is wrong -- LaunchBox's own TeknoParrot emulator entry launches by profile (--profile=%romfile%.xml), so the path it needs is the GameProfile XML itself. Also fixed the printed import-wizard instructions, which told users to import *.exe files; the correct target is the UserProfiles\*.xml profile files.

v0.97 BETA (2026-06-18)

  • Every binary downloaded from a third party (Eggman dat ZIP, BepInEx release ZIP, both FFBArcadePlugin DLLs) now has its source URL, filename, version (where known), and SHA256 logged to TeknoParrot-Manager.log -- an audit trail, not a verification gate, since none of these sources publish checksums to check against.
  • ReShade setup now checks the Authenticode signature on your ReShade64.dll/ReShade32.dll before deploying them, since ReShade's own installer is code-signed. An invalid or missing signature is shown with a plain-English explanation plus the raw status, but does not block setup.

v0.96 BETA (2026-06-18)

  • ACTION REQUIRED now includes a GAME-SPECIFIC SETUP NOTES section for any registered game with special setup notes in the community compatibility database (eggmansworld.github.io/TeknoParrot) -- shows the expected executable name and the full notes text, word-wrapped and separated game-by-game.
  • Saving the ACTION REQUIRED summary now opens a Save dialog instead of always writing silently to TeknoParrot-Manager-ActionItems.txt next to the script. Skipped automatically in unattended runs and preview/dry-run mode.
  • Internal: extracted the eggmansworld.github.io fetch-and-parse logic into a shared Get-EggmanGameData helper, reused by both the BepInEx required-games list and the new setup-notes lookup.

v0.95 BETA (2026-06-18)

  • Library health check (mode 10) now also reports dgVoodoo2 coverage -- which registered games import a legacy DX8/DDraw/Glide API but don't have the matching DLL deployed yet, checked locally with no network access.
  • Also reports, purely informationally, how many registered games have ReShade or BepInEx installed (not flagged as a gap to fix).
  • Fixed a pre-existing stale "mode 6" reference for dgVoodoo2 setup in the README (it's mode 5).

v0.94 BETA (2026-06-18)

  • The extraction summary now shows how many games a preview run would extract.
  • Library health check (mode 10) now also reports GPU fix and FFB Blaster coverage -- which registered games are eligible but don't have it applied yet, checked locally with no network access.
  • Crosshair setup (mode 3) remembers your last P1/P2 choice and offers it as a default.

v0.93 BETA (2026-06-18)

After AutoSync/Register's preview/dry-run mode finishes, the script now asks "Apply these changes for real now?" instead of requiring a manual re-run. Answering Y silently re-enters the same mode for real; N returns to the menu unchanged.


v0.92 BETA (2026-06-18)

Preview / dry-run mode. AutoSync and Register only can now show what they would do (extractions, registrations, repairs, control propagation) without writing anything -- answer Y to the new "Run in PREVIEW mode first?" prompt, or pass -DryRun on the command line. No backup is created and the LaunchBox/HyperSpin export, thumbnail download, and GPU fix follow-up offers are skipped in preview mode.

Live BepInEx game list. The BepInEx Update Check menu (mode 8) now shows a live-fetched example list of games known to require BepInEx instead of a hardcoded one that could go stale.


v0.91 BETA (2026-06-18)

Security hardening. A deep manual code review (whole script, not just recent additions) plus PSScriptAnalyzer and Microsoft InjectionHunter found and fixed four real issues, none known to be exploited:

  • Path traversal in Invoke-FFBPluginSetup (untrusted destination filename from a live-fetched file).
  • Path traversal in Invoke-BepInExUpdateCheck (untrusted filename from the GitHub Releases API).
  • Path traversal in the Eggman dat downloader's default save path (same root cause).
  • Malformed \\?\ long-path prefix for UNC destination paths in Expand-ZipFileSafe.

All four fixed and verified with synthetic tests.


v0.90 BETA (2026-06-18)

New automatic check: known GPU-vendor incompatibilities

Went back through eggmansworld.github.io/TeknoParrot's structured per-vendor GPU status fields (a clean enum, not free text) and found 16 games confirmed not to work on AMD and 45 on Intel (verified directly against the live data; NVIDIA has none).

Every AutoSync/Register run now silently auto-detects your GPU vendor and flags any registered game confirmed broken on that vendor in ACTION REQUIRED. Informational only -- no fix to apply, just earlier confirmation that something is a known limitation rather than a setup mistake.


v0.89 BETA (2026-06-18)

Verified the v0.88 compatibility tables against the new structured replacement for the old game notes document (eggmansworld.github.io/TeknoParrot) and found two genuinely new cases:

  • Yu-Gi-Oh! Duel Terminal 6 (YugiohDT6U) -- its own 64-character path limit.
  • Tekken Tag Tournament 2 (ttt2) -- needs EBOOT.BIN at CRC32 3DD05100, not 919F19EC. The version-pin check is now generalized to any per-game filename, not just iDmacDrv32.dll.

Other CRC mentions in the new source describe known-valid alternate file versions or antivirus false positives, not "broken version" cases -- not added.


v0.88 BETA (2026-06-18)

New feature: BepInEx update check (mode 8)

Checks every registered game that already has BepInEx installed against the latest stable release on GitHub and offers a single batched update. Never installs BepInEx fresh, never touches a 32-bit install, never uses a pre-release build. Backs up the existing install before overwriting anything.

Baked into the script: two automatic compatibility checks

These used to live only in a separate game-notes document that won't be available going forward. They now run automatically on every AutoSync/Register run as new ACTION REQUIRED items, with step-by-step fix instructions:

  • Raw Thrills path-length limits -- specific older titles fail to launch if their install path is too long for that engine era. The script tells you the exact short folder name to rename to.
  • iDmacDrv32.dll version pins -- five BlazBlue-series games need a specific OLDER DLL version (a newer one causes a coin error). The script checks the CRC32 and tells you the required version and where to get it.

Documentation fixes: README.md (the GitHub homepage) was missing the entire Force Feedback section from v0.87 -- fixed, along with several stale mode-number references and a factual error in the staging-folder network-drive rule.


v0.87 BETA (2026-06-17)

New feature: FFB Setup (mode 7)

Two independent force feedback mechanisms, both optional:

  • FFB Blaster -- TeknoParrot's own built-in force feedback. Paywalled (requires a paid membership), field discovered dynamically, backed up before writing.
  • Third-party plugin (mightymikem/FFBArcadePlugin) -- free, no subscription, the per-game DLL table and DLLs are fetched live from GitHub every run.

Real overlap between the two turned out to be substantial (roughly half the third-party table also has a native FFB Blaster field). Too many for a per-game prompt, so the script lists every overlapping game once and asks a single question: keep native for all of them, or use the plugin for all of them. See FFB Setup for full details.

Menu reorder: modes renumbered so related features sit together -- see the updated tables on Home and Quick Start.

Bug fix: the Eggman dat collection's source repo (Eggmansworld/Datfiles) posted its final release and moved to Eggmansworld/TeknoParrot, which uses date-based release tags instead of a fixed tag. The script now queries that repo's "latest" release instead -- dat downloads would otherwise have silently stopped working.


v0.86 BETA (2026-06-17)

Bug fix: silently-dropped games when a sibling sharing their exe was already registered

For shared-executable games (Raw Thrills' sdaemon.exe and similar), a folder whose name didn't fuzzy-match well used to be skipped entirely if ANY sibling sharing that exe was already registered -- even though the folder's own game was a different title that was never actually registered. It vanished completely: not registered, not flagged, not even logged. Found from a real run where X-Games Snowboarder and Winter X Games never appeared anywhere. Fixed: only the folder's own best-guess candidate being already registered now counts as "handled".


v0.85 BETA (2026-06-17)

Bug fix + four follow-on enhancements

  • Fixed a false-positive "duplicate profile" report that could affect shared-executable games (NESiCAxLive's game.exe and similar). A folder whose own name didn't fuzzy-match well would incidentally mark unrelated already-registered titles as "claimed" while scanning the shared candidate pool; when that title's own folder was processed later, it got wrongly flagged as a conflict even though it was already correctly registered. One real run hit ~140 false positives from this. Now fixed by snapshotting which codes existed before the run started.
  • dgVoodoo2 per-game config override: dgVoodoo2Presets\<ProfileCode>.conf overrides the global config for one game, always overwriting (unlike the global conf, which never overwrites).
  • Interactive duplicate-profile resolution: right after registration, genuine same-run conflicts (e.g. multiple ROM revisions sharing one profile) can now be resolved on the spot with [K]eep / [S]witch / [Q]uit, instead of requiring a trip to TeknoParrotUI.
  • New mode 8: Library health check -- read-only, reports valid/broken/empty profile counts. No extraction, registration, repair, or network access.
  • Bounded timeout on the GPU-vendor detection WMI query, consistent with the v0.83 network-drive fix.

v0.84 BETA (2026-06-17)

New feature: per-game ReShade presets

  • Mode 5 (ReShade setup) previously applied one preset choice to every selected game in a run. Added ReShadePresets\<ProfileCode>.ini: a file named by profile code overrides the global preset for that one game only, falling back to the global choice for every other selected game.
  • Same convention as CustomThumbnails\<ProfileCode>.png -- validated against registered profiles, with a WRONG NAME warning for typos.
  • The end-of-run summary now reports how many games received a per-game override.

v0.83 BETA (2026-06-17)

External code review follow-up (third pass)

  • Test-IsNetworkPath used a WMI query (Get-CimInstance -ClassName Win32_LogicalDisk) to classify drive letters. WMI queries against a mapped network drive that has dropped off the network or gone to sleep can hang 20-30 seconds before timing out, stalling the script at startup during the drive scan. Replaced with [System.IO.DriveInfo]::GetDrives(), which classifies drive type via a local Win32 call instead of a WMI round-trip.
  • Confirmed as a false positive: a report that docs still showed v0.81 after the v0.82 bump. Verified against origin/main and the v0.82 release asset -- everything was already correctly at v0.82.

v0.82 BETA (2026-06-17)

External code review follow-up (second pass)

  • Get-ReShadeLatestVersion's regex required exactly three dot-separated version components. Verified live against reshade.me -- it currently serves a 3-part version, so today's behavior was correct, but the regex would have silently truncated a future 4-part release instead of erroring. The capture group now accepts an optional fourth segment.
  • Reviewed and confirmed as already correct: XXE prevention, zip-slip guards, XPath literal escaping, atomic writes, HTML encoding in the crosshair preview, List[T] usage, and the HyperSpin single-element-array unwrap handling.

v0.81 BETA (2026-06-17)

External security review follow-up

  • Fixed recurring version drift: the GitHub API User-Agent header was hardcoded to a stale TeknoParrot-Manager/0.76 in two places (same class of bug fixed once before at v0.71). All GitHub API calls and the startup banner/log now read from a single version variable.
  • Hardened profile discovery against the upstream teknogods/TeknoParrotUI repository ever renaming its default branch: the script now queries the repo's actual default branch via the GitHub API instead of hardcoding "master", falling back to "master" if that lookup fails.
  • Reviewed and confirmed as non-issues: crosshair preview HTML generation already HTML-encodes filenames/titles; config and overrides JSON parsing already tolerates missing properties and validates required fields.

v0.80 BETA (2026-06-17)

Registration fix: duplicate profile codes no longer silently dropped

  • Fixed a bug where games whose executable name (or dat/folder match) resolves to a TeknoParrot profile code already claimed by another folder in the same run were silently dropped -- no entry in Registered, Already, Ambiguous, or Unmatched. This hit any game with several on-disk variants sharing one generic exe name and one TeknoParrot profile (multiple Virtua Fighter 5 Lindbergh ROM revisions, multiple Taiko no Tatsujin versions, multiple Star Wars Battle Pod releases).
  • These "duplicate profile code" conflicts now appear in the REGISTER THESE GAMES IN TEKNOPARROTUI action item, naming which folder already holds the profile.

v0.79 BETA (2026-06-17)

Full bug/vulnerability sweep + documentation accuracy pass

  • Saved configuration with a blank TeknoParrot root or games install folder is now treated as corrupt and falls through to manual prompts, instead of silently reusing empty values.
  • AutoSync: added a path-containment guard on the resolved extraction folder before destructive use, matching the defense-in-depth pattern already used everywhere else a script-controlled folder is joined with an externally-influenced name.
  • Verified BOM-less UTF-8 writes, -LiteralPath usage, backup-before-destructive-operation, and error-handling conventions hold with zero exceptions across the full script.
  • Fixed stale version numbers in project docs.

v0.78 BETA (2026-06-16)

Bug sweep follow-up (low-severity nits)

  • PCSX2.ini is now backed up (.bak_<timestamp>) before Crosshair setup rewrites its cursor_path entries, same as other config/profile writes.
  • Added guard comments above every backup/restore pipeline explaining why -LiteralPath is unnecessary there today (the pipeline already passes resolved file objects, bypassing wildcard expansion) and flagging that it must be added back if a future refactor swaps the source for raw path strings.

v0.77 BETA (2026-06-16)

Bug/vulnerability sweep fixes

  • GPU fix setup (mode 7) now backs up UserProfiles to FullBackup\GpuFix_<timestamp> before writing vendor-fix fields. Previously this mode had no backup step at all when reached directly from the main menu.
  • HyperSpin export's final write is now atomic, with a Delete+Move fallback for environments where File.Replace's 3-argument overload throws.
  • Fixed a stale User-Agent version literal sent with GitHub API requests.

v0.76 BETA (2026-06-16)

Control propagation safety

  • Before the "Propagate controls now?" prompt, the script lists each reference game's carried aim-mode settings (relative input, sensitivity, hide-cursor, "Use Keyboard/Button For Axis") alongside its bound count and device, since these settings copy to every other game of that type.
  • Added automatic red WARNING flags for known device-mismatch patterns: "Use Keyboard/Button For Axis" = True on a driving reference, "Use Relative Input" = True on a lightgun reference, and any carried sensitivity value of 0. All three usually mean the reference game was bound with a substitute device (keyboard/mouse) rather than its real hardware. See Register for details.

v0.74 BETA (2026-06-16)

README restructure (no script changes)

  • Added Who is this for? section near the top so readers can immediately judge whether the script suits their setup.
  • Condensed How fuzzy matching works to a plain decision table. Full algorithm details moved to a new appendix at the end of the README.

v0.73 BETA (2026-06-16)

Download retry logic

  • Added retry loops (up to 3 attempts) to all four network download sites: the GitHub profile-set query, the Eggman dat release query, the Eggman dat ZIP download fallback, and the thumbnail download loop. 5xx/connection errors retry with a delay; 4xx errors (e.g. rate-limits, 404) fall through immediately without retrying.

v0.72 BETA (2026-06-16)

Comment audit pass 2 + bug/security hardening

  • Log writes now use BOM-less UTF-8 consistently (previously used the system default encoding, which silently corrupted non-ASCII game names/paths in the log).
  • HyperSpin export and config load both hardened against PS 5.1's ConvertFrom-Json returning $null instead of an empty array/object for empty input.
  • AutoSync failure-path cleanup now guards against an empty extraction path before Remove-Item.

v0.71 BETA (2026-06-16)

Comment audit, bug fixes, and security hardening

  • Corrupt UserProfile XMLs and corrupted HyperSpin JSON files were previously skipped silently; both now log the failure before continuing.
  • Added IsNullOrWhiteSpace guards before Get-ChildItem -LiteralPath calls in the AutoSync game pickers, replacing a hard crash on an empty path with a graceful "no ZIPs found" message.

v0.70 BETA (2026-06-16)

Full code review -- bug fixes, security fixes, and documentation corrections

  • Critical fix: config saves from ReShade/dgVoodoo2 setup (modes 5/6) were silently dropping the Eggman dat fields (EggmanDatZip, DatFilePath, SupplementaryDatPath, IncludeSupplementary) on every write, permanently disabling dat-based registration after running either mode.
  • Security: XPath field-name interpolation in cursor-hide and input-API setters is now escaped consistently via ConvertTo-XPathStringLiteral, matching the existing GPU-fix pattern.
  • Fixed a NAS ZIP size comparison that mismatched types for files over 2.1 GB in PS 5.1.
  • README/QuickStart corrections: ReShade DLLs are not bundled in the release ZIP (users must obtain them from reshade.me); fixed a wrong config filename reference; documented that spinner is never auto-detected and must be set via familyOverride.

v0.69 BETA (2026-06-14)

Bug fix: supplementary ZIP source prompt now re-appears after a prior skip

  • Fixed the supplementary source prompt being silently skipped when the user had previously pressed Enter to skip it. The v0.68 fix saved an empty string to suppress re-prompting, but this left users with no way to add a supplementary source on a later run without editing the config JSON manually. The prompt now fires whenever the supplementary path is not configured (null or empty), regardless of prior skips.

v0.68 BETA (2026-06-14)

Bug fixes: AutoSync crash and ZIP source paths not saved between runs

  • Fixed a crash at AutoSync startup: the queue-status header used (if ...) inline as a cmdlet argument, which PowerShell 5.1 does not allow. Changed to $(if ...) subexpression syntax.
  • Fixed the main collection ZIP folder and supplementary ZIP folder not being remembered between runs. Both are prompted inside the main menu loop after the initial config save runs, so they were always written as null/empty. A config re-save now fires immediately after the paths are captured.
  • Fixed the supplementary folder prompt repeating every run when the user had explicitly skipped it. A deliberate skip (pressing Enter) is now saved as an empty string and distinguished from "never asked" so the prompt does not reappear.

v0.67 BETA (2026-06-14)

Bug fix: D (Done) with empty queue now works correctly

  • Pressing D with no games in the queue now proceeds correctly instead of blocking with "Queue is empty." D always means "proceed with what I selected" -- an empty queue extracts zero games. Use A to extract everything.
  • In the combined picker (main + supplementary), selecting games from the main collection but nothing from supplementary now correctly skips supplementary extraction. Previously D with an empty supplementary queue would extract all supplementary games.
  • Expand-ZipFileSafe archive handle leak fixed: ZipFile::OpenRead is now inside the try block so a failure cannot leak the handle.

v0.66 BETA (2026-06-14)

AutoSync: combined picker, extraction progress bar, network staging

  • Game selection now combines the main collection and supplementary library into one A-Z list. Supplementary entries are marked [+] and the header shows per-source counts. No more two separate menus back to back.
  • A real-time progress bar now shows file count and percentage during each extraction. Previously the screen showed a blinking cursor with no feedback.
  • The staging folder can now be on a network drive. The previous hard error is replaced by a write-speed benchmark: the script measures throughput, rates it, and asks Y/N whether to proceed.
  • Supplementary source validation now runs before the picker so errors appear before you're asked to make a selection.

v0.65 BETA (2026-06-14)

Bug fix: AutoSync supplementary source prompt now shown correctly

  • The supplementary ZIP folder prompt was being suppressed when the user accepted a saved configuration that predated the supplementary feature. Users with an existing config that had no supplementary folder set would never be asked to configure one. Fixed so the prompt now appears whenever the supplementary source is not configured, mirroring the behaviour of the main collection prompt. In Unattended mode the prompt is still skipped (configure it interactively first).

v0.64 BETA (2026-06-14)

Registration improvements: .xbe/.dll scanning and profile code fuzzy pass

  • .xbe and .dll files are now included when scanning for game executables. Sega Chihiro games emulated via cxbxr (Virtua Cop 3, OutRun 2, Ollie King, etc.) use .xbe files; Konami PC arcade games (DanceDanceRevolution 2013, Steel Chronicle, Silent Scope Bone Eater, Metal Gear Arcade, Love Plus Arcade) use a game-specific .dll. Both were previously invisible to the scanner.
  • A third registration pass now Dice-matches normalised folder names against normalised GameProfile code names. This catches games with an empty <ExecutableName> in their profile (BladeStrangers, LuigisMansion, MaiMaiGreen, PokkenTournament, ProjectDiva, SonicDashExtreme, StreetFighterVTypeArcade, HydroThunder, and others) that fell through the exe-index and dat passes.

Security / reliability

  • TLS protocol now uses bitwise OR so existing protocols (e.g. TLS 1.3) are preserved rather than replaced. Redundant per-function TLS lines removed.
  • Eggman dat download fallback updated from deprecated WebClient.DownloadFile to Invoke-WebRequest.
  • dgVoodoo2 API scan now logs profile parse errors instead of discarding them silently.

v0.63 BETA (2026-06-14)

AutoSync ZIP source: subdirectory hint and clearer prompts

  • When the configured ZIP source folder contains no ZIP files at the top level, AutoSync now scans one level of subdirectories and lists any that do contain ZIPs — so you can immediately see the correct path to enter. This covers both interactive and unattended mode, and applies to the main collection source and the supplementary source.
  • The ZIP source path prompts now include a note that the path must point directly at the folder containing the ZIP files (not a parent folder), plus an example path.

v0.62 BETA (2026-06-14)

Supplementary game library support in AutoSync

  • AutoSync now supports a second optional ZIP source folder for the TeknoParrot Supplementary collection. When configured, a separate game picker and extraction pass runs after the main collection, both extracting into the same staging folder and sharing the same sync-state file. The supplementary ZIP source is saved to config so subsequent runs use it automatically without re-prompting.

v0.61 BETA (2026-06-14)

EggmanDat URL validation fix

  • Fixed a regex bug in Get-EggmanDatRelease that caused every automatic Eggman dat download attempt to fail with "unexpected download URL format". The pattern required at least one character before github.com, so standard GitHub release URLs (https://github.com/...) were rejected. Changed quantifier from + to * so bare github.com and subdomain URLs (e.g. objects.githubusercontent.com) are both accepted.

v0.60 BETA (2026-06-14)

Global error handler

  • The main menu loop is now wrapped in a top-level try/catch. Any unhandled exception is caught, logged in full to TeknoParrot-Manager.log, and shown on screen with a "FATAL ERROR" banner and a prompt before the script exits. Previously such exceptions produced a raw PowerShell red-text dump with no log entry.

v0.59 BETA (2026-06-14)

GitHub profile set resolution, supplementary dat as priority overrides

  • The script now fetches the full list of GameProfile XML filenames from the teknogods/TeknoParrotUI GitHub repository before every registration run. The fetched set is used to validate and resolve dat profile codes before they are written to UserProfiles.
  • Supplementary dat entries can now act as priority overrides: when the main dat has no match but the supplementary dat does, the supplementary profile code is used.

For older versions see the full CHANGELOG in the repository.

TeknoParrot Manager

Home

Getting started

Modes

Reference


Releases

Clone this wiki locally