feat(tracker): add profile-bound API key management and overhaul Settings UI - #212
Merged
Razzmatazzz merged 19 commits intoAug 13, 2026
Conversation
Introduce a versioned local TarkovTracker.org key store with guarded legacy recovery and corruption-aware persistence. Verify PVE, Regular PVP, and Seasonal keys against the org endpoint, bind each key to an exact EFT account/profile/mode identity, and activate only the matching key for the live session. Support assignment, reassignment and swaps, unbinding, removal, account and profile nicknames, protected identifier messages, and fail-closed unknown modes while preserving retired TarkovTracker.io isolation.
Add verified key import, saved-profile scanning, and assigned/unassigned management drawers for TarkovTracker.org. Support exact profile assignment, reassignment and swaps, unbind/remove workflows, account and profile nicknames, protected identifiers, storage warnings, and retired TarkovTracker.io guidance without exposing raw tokens.
…scope Process historical notifications in timestamp order with an isolated watcher and exact account, profile, and game-mode boundaries. Require a matching TarkovTracker.org profile lease before writes, stop cleanly when EFT is active or no valid key is assigned, restore subscriptions in finally paths, and keep replay messages batched, bounded, and visually ordered.
Stop empty startup profile state from rendering a false PVP identity, a broken tarkov.dev player link, or an unnecessary player-name lookup. Refresh the displayed profile only for the same account, profile, and session mode, and preserve the reconciled responsive Settings layout, service guidance, and profile-safe controls.
Upgrade persisted settings before startup reads, render the WebView shell before watcher and update services, and coordinate the optional splash with the first completed UI paint. Suppress live-session notices for offline historical profiles, deduplicate exact session announcements, and let native window state transitions restore the frame, title-bar drag behavior, and prior bounds without flicker.
Reflow Settings cards across one, two, and three columns; tighten card, dialog, and control spacing; and normalize user-facing copy across Settings, Sounds, Stats, and Timers. Add a shared mid-dark dropdown system with viewport-aware height, native MudBlazor positioning, reliable neutral/scroll dismissal, exact scroll preservation, keyboard focus cues, stable responsive resizing, and consistent popover, selection, scrollbar, and child-dialog styling. Keep neutral-click dismissal active through MudBlazor's late focus restoration so closed fields do not retain their focused glow, and make the Active profile label spacing explicit.
Follow-up fixes for PR the-hideout#212's UI Overhaul and API-key storage work. Make Tarkov Tracker progress and Tarkov.dev retrieval messages identify the active EFT session, protect the full tracker API key in progress details, and change localized guidance from set to assign. Reload all Tarkov.dev datasets against one captured session mode, cancel stale requests, clear unknown or superseded snapshots, and publish complete asset sets atomically so Seasonal and Non-Seasonal PVP data cannot mix. Traceability: this completes the behavior left across 57a46fb (feat(ui): overhaul responsive settings and dropdown interactions), f659649 (feat(settings): add guided TarkovTracker key management), 5fbe39d (bugfix(tarkov.dev): handle current API response envelopes), and the immediate diagnostic follow-up 7446f45 (fix(tracker): harden profile activation and diagnostic reporting), on the PR the-hideout#212 reconciliation base e9b70ee. This is the validation follow-up for the reported TM-API-TARKOVDEV-002 and TM-API-TRACKER-001 flow: 7446f45 hardens the underlying failure path, while this commit fixes the remaining session-label, API-key presentation, and mode-specific asset-reload gaps.
Keep the existing JSON settings shape while migrating legacy plaintext tracker tokens to user-scoped DPAPI protection. Protected values remain versioned and fail closed when the current Windows user cannot decrypt them. Preserve exact account, profile, and session binding for verified TarkovTracker.org keys. Prefix-only matching no longer auto-binds a key, manual unbind suppression survives reloads, and explicit assignment clears the suppression without breaking legacy service compatibility.
Clarify tracker-key assignment and import messages so users are told to assign a key rather than set one. Expose a clear MANUAL ASSIGNMENT ONLY badge and guidance for keys intentionally unbound from their previous EFT account, while preserving the existing assign, reassign, and conflict flows.
Preload read-only Tarkov.dev assets from the most recent complete profile recovered from EFT log history, allowing startup verification without launching EFT when prior profile data exists. Publish assets only for the exact account, profile, and session context; cancel stale loads, clear old snapshots on transitions and invalid profiles, refresh replacement application logs through ProfileReady, stop updates on EFT exit, and keep timer registration idempotent. Tracker writes still require a live EFT profile.
Resolve historical task IDs through the catalog for the selected EFT session instead of the live catalog. Move large replay parsing and event processing off the Blazor renderer, preserve chronological ordering, and return immutable replay state so historical playback remains responsive and mode-correct.
Make message expiration state explicit and subscribe the board to one-shot expiry notifications. Re-check expiration when a button is clicked, including after a confirmation dialog, and refresh the board immediately so expired Dashboard actions cannot execute during the redraw interval.
Run WebView2 prerequisite repair and establish the executable base directory before creating MainBlazorUI. Cover skip-splash, minimized, and normal startup paths so the first WebView host is never constructed before its runtime prerequisite is validated.
Razzmatazzz
approved these changes
Aug 13, 2026
Razzmatazzz
left a comment
Member
There was a problem hiding this comment.
Huge PR! The changes look great in the video! Thanks for taking this on!
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR replaces the ambiguous TarkovTracker.org API token workflow with a verified, profile-bound API key system and a complete management interface.
Tarkov Monitor can now visibly and reliably store multiple PVE, PVP, and Seasonal keys, bind each key to an exact EFT account, profile, and game mode, and automatically select the correct key for the active session. It also introduces a responsive Settings overhaul, consistent dropdown and dialog styling, safer historical log replay, and several startup and profile-state fixes.
Startup also feels substantially faster because the interface now renders before watcher and update services finish initializing.
The branch also hardens profile activation and diagnostic reporting, supports clean startup when EFT is not installed, and keeps Tarkov.dev data isolated to the currently active session mode. Repeated profile notifications now share in-flight work, superseded requests are handled as expected state changes, and diagnostics retain endpoint, duration, and privacy-safe failure context.
TarkovTracker.io remains visible as a retired service with guidance directing users to TarkovTracker.org.
Fixes #191
Legacy profile-keyed
.orgupgrade behaviorExisting TarkovTracker.org records from the legacy profile-keyed store are intentionally recovered as Unassigned during upgrade. Tarkov Monitor does not infer ownership from a legacy record or silently bind it to the active session. Users must review the recovered key in Settings and explicitly assign it to the verified EFT account, profile, and game mode before tracker writes resume.
Commit-by-commit summary
e002f15-feat(tracker): store and switch verified org keys by EFT profileAuthor: Giribaldi_TTV
f659649-feat(settings): add guided TarkovTracker key managementAuthor: Giribaldi_TTV
7407d56-bugfix(raw-logs): replay task history chronologically and in profile scopeAuthor: Giribaldi_TTV
1664912-bugfix(settings): handle missing EFT profile identityAuthor: Giribaldi_TTV
ea9f3a3-bugfix(startup): stabilize first paint and window restorationAuthor: Giribaldi_TTV
57a46fb-feat(ui): overhaul responsive settings and dropdown interactionsAuthor: Giribaldi_TTV
e9b70ee-merge(master): reconcile PR 212 with 2.0.5.0Author: Giribaldi_TTV
7446f45-fix(tracker): harden profile activation and diagnostic reportingAuthor: Giribaldi_TTV
216e90b-fix(ui): make session messages and assets deterministicAuthor: Giribaldi_TTV
TM-API-TARKOVDEV-002andTM-API-TRACKER-001.cc748f3-bump needed sdk versionAuthor: Razzmatazz
5d961e5-identify self on connectAuthor: Razzmatazz
Originheader during connection.User-Agent.bf0a282-fix(watcher): treat missing EFT install as idle stateAuthor: Giribaldi_TTV
63d58f0-merge(master): apply current base fixes to PR 212Author: Giribaldi_TTV
master.Changelog
User-visible changes
Internal and technical changes
Originheader.Validation conducted
win-x64runtime target successfully.index.htmlandapp.cssexactly matched the committed source.Follow-up validation required for the reconciled head
The post-reconciliation fixes in
7446f45,216e90b, andbf0a282should be revalidated at63d58f0before release:Author-reported live EFT client testing
The author tested the current branch runtime while actively using Escape from Tarkov over several weeks.
The reported live-use checks included:
A later beta-runtime test did report TM-API-TARKOVDEV-002 and TM-API-TRACKER-001 diagnostics during profile activation. The follow-up commits above address the duplicate player-lookup, superseded-activation, deterministic-message, and session-specific asset-reload paths.
The author reported no errors, unhandled exceptions, or functional issues during the earlier completed live-use period; that statement predates the later beta-runtime report and should not be read as coverage of the post-report fixes.
Validation scope note
The live-client section records author-reported manual usage. It is separate from independently captured local validation. Exhaustive release validation across every possible EFT profile transition, production first-launch migration, network failure, and Seasonal endpoint-write condition remains part of the release process rather than this PR's automated evidence.
Merge-order note
PR #211 and the 2.0.5.0 base changes were reconciled through
e9b70ee. The final branch reconciliation at63d58f0also incorporates the current master commitsc9f7b4eand0cc5107. No outstanding PR #211 merge-order action remains; the branch should only be rechecked ifmasteradvances again.Update for pushed head
5c541ceThis section supersedes the earlier follow-up list for the reconciled head. Six focused commits were added to PR212 and pushed together as the reviewed correction set.
7756b28?fix(security): protect profile-bound tracker tokens with DPAPI7664b14?fix(settings): make tracker key assignment state explicitMANUAL ASSIGNMENT ONLYstate for keys intentionally unbound from their previous EFT account.2884169?fix(tarkov.dev): make session data lifecycle identity-safea2a524a?fix(replay): isolate historical task catalogs and renderer work8fbfa11?fix(ui): reject expired message actions at execution time5c541ce?fix(startup): validate WebView2 before constructing UIRegression and compatibility review
.ioretirement, .NET 10, media-state, logs-folder, overlay, diagnostics, and timestamp-prefixed log handling were checked against the current base and remain present..orgupgrade behavior remains intentional: recovered records are unassigned until the user explicitly assigns them.Validation for pushed head
dotnet build TarkovMonitor.sln -c Release --no-restore: passed with 0 errors and 186 existing project warnings.win-x64single-file runtime with 0 publish errors.git diff --checkpassed before publication.Remaining release boundary
The pushed branch is build- and focused-validation green. The remaining release gate is the organic live EFT matrix: PVE, Seasonal PVP, Non-Seasonal PVP, account switching, EFT shutdown, tracker writes, first-launch migration, and network failure behavior. These require normal user workflows rather than injected triggers.