﻿ModeSwitch
License: GNU General Public License, version 3 or later.

The NVIDIA private API ABI, display-to-registry identifier mapping, and
brightness/contrast/gamma curve are adapted from nvBrightness:
Copyright (c) 2025 Pete Batard <pete@akeo.ie>
https://github.com/pbatard/nvBrightness
Source revision: 8ab5d7466fc2db4e76b79a5becb3c218177c7ee3
Original license: GPL-3.0-or-later (included as LICENSE.txt).

Changes: two-mode Win32 interface; per-browser Core Audio control;
display selection; transactional color registry writes; error handling and rollback;
restore-to-normal on deliberate Quit (X hides to tray). NVIDIA's DLL is not distributed.

Reference documentation:
https://learn.microsoft.com/en-us/windows/win32/api/audioclient/nf-audioclient-isimpleaudiovolume-setmastervolume
https://github.com/pbatard/nvBrightness/blob/master/src/nvDisplay.cpp
https://github.com/pbatard/nvBrightness/blob/master/src/nvapi.h

This utility is not affiliated with or endorsed by NVIDIA, Microsoft or Brave.
Source code (GPL-3.0-or-later) of each release: https://modepulse-relay.modepulse.workers.dev/source/BlueAsh-<version>-source.zip
(the newest: https://modepulse-relay.modepulse.workers.dev/source/BlueAsh-source-latest.zip; build steps in source/BUILDING.txt).
No warranty; see LICENSE.txt.

Version 2.0 additions:
System tray lifecycle, NumPad Subtract global hotkey, optional per-user Run
registration, target/shortcut persistence, dark Win32 UI, original vector
application icons, asInvoker manifest and version resources.
Icon SVG sources and all program sources are included under GPL-3.0-or-later.

Additional references:
https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-registerhotkey
https://learn.microsoft.com/en-us/windows/win32/setupapi/run-and-runonce-registry-keys
https://learn.microsoft.com/en-us/windows/apps/package-and-deploy/smartscreen-reputation

Version 2.1 additions:
Editable per-mode gamma and browser volume profiles, validated atomic profile
serialization, reset to original defaults, settings editor, and restore to
user-configured Normal profile on ordinary exit. No automatic updater included.

Version 2.2 additions:
Read-only application log tailer, per-raid deduplication, GameStarting alert
and GameStarted fallback, persistent opt-in settings, synthesized three-note
WAV alert and independent amplitude setting. No third-party sound recordings.
Event marker semantics researched from TarkovMonitor (the-hideout):
https://github.com/the-hideout/TarkovMonitor/blob/3cf361efc49fecf6bffce3cae567f55a303757cd/TarkovMonitor/GameWatcher.cs
Reference project license: GPL-3.0. Native C++ watcher and UI implemented here.
This utility is not affiliated with Battlestate Games.

Version 2.3 additions:
Read-only process-path and BSG/Steam uninstall-registry discovery; delayed
retry for missing Logs, existing valid path preservation, and manual fallback.
Registry location reference: TarkovMonitor GameWatcher.cs (same project above).

Version 2.4 additions:
Configurable global shortcut; four persistent profiles; per-channel brightness,
contrast and gamma; digital vibrance and hue; opt-in process-name/foreground
game selection at FPS transition; legacy settings migration.
DVC/Hue private ABI reference (function identifiers, struct layouts and signatures):
https://github.com/jNizM/NVIDIA_NvAPI/blob/master/src/Class_NvAPI.ahk
Public associated-display-handle identifier confirmed against NVIDIA nvapi_interface.h:
https://github.com/NVIDIA/nvapi/blob/main/nvapi_interface.h
NVIDIA DLLs and SDK source are not bundled. Display output signal settings are not modified.

Version 2.4.1 additions:
Read application and output logs in the newest session with independent cursors
and parsers; suppress cross-file alerts within 30 seconds; copyable watcher
diagnostics without log content. Verified with a user-supplied 1.1.5.1 log excerpt
(the original user log is not redistributed).

Version 2.5.0 additions:
Opt-in Windows process-loopback capture for TslGame.exe; user-calibrated
log-frequency audio similarity detector; foreground suppression, consecutive
match and rearm/cooldown gating; local feature-only persistence. No trained
PUBG classifier or third-party audio samples are bundled. Not endorsed by
KRAFTON or an anti-cheat vendor. Windows runtime/game accuracy unverified.
Public API reference and initialization sequence consulted:
https://learn.microsoft.com/en-us/samples/microsoft/windows-classic-samples/applicationloopbackaudio-sample/
https://github.com/microsoft/Windows-classic-samples/tree/main/Samples/ApplicationLoopback
Capture wrapper and detector are implemented for this utility under GPL-3.0-or-later.

Version 2.5.1 additions:
Renamed Tarkov settings entry points and added three explicit browser shortcuts.
URLs open only after button clicks via the user's Windows default browser.

Version 2.6.0 additions:
Opt-in HWND-scoped Windows.Graphics.Capture; user-selected local grayscale
reference patch; fresh-frame validation and foreground/minimized suspension;
shared audio/screen alert cooldown. No game-memory reading or injection.
Public WinRT ABI GUIDs and method order consulted in Microsoft windows-rs metadata:
https://github.com/microsoft/windows-rs/blob/master/crates/libs/windows/src/Windows/Graphics/Capture/mod.rs
Microsoft windows-rs is MIT or Apache-2.0 licensed. This implementation declares
API signatures and identifiers; no generated implementation is redistributed.
https://learn.microsoft.com/en-us/windows/win32/api/windows.graphics.capture.interop/nf-windows-graphics-capture-interop-igraphicscaptureiteminterop-createforwindow
https://learn.microsoft.com/en-us/uwp/api/windows.graphics.capture.direct3d11captureframepool.createfreethreaded
https://learn.microsoft.com/en-us/uwp/api/windows.graphics.capture.graphicscapturesession.minupdateinterval
No third-party screenshot or trained PUBG classifier is bundled.

Version 2.7.0 additions:
Optional local Windows OCR price worker, native click-through Windows Forms overlay,
explicit PvE/season mode recognition and mode-specific free tarkov.dev JSON catalog.
Source: https://github.com/the-hideout/tarkov-data-manager (schema reference only).
Data attribution: https://tarkov.dev/api/ and https://json.tarkov.dev/endpoints .
No third-party catalog or game screenshots bundled. No affiliation with BSG/tarkov.dev.
The worker is opt-in and uses Windows PowerShell's process-only ExecutionPolicy Bypass
for the bundled script; it does not change the system's execution policy.
PriceHelper.dll is built from the included PriceCore.cs and PriceWindow.cs.
Windows OCR/capture/API/overlay runtime and resource consumption remain unverified.

Map images (maps/<id>.jpg) and markers (maps/markers.json; refreshed at run time) come from the Escape from Tarkov Fandom wiki
interactive maps (https://escapefromtarkov.fandom.com/wiki/Map:Customs etc.), generated by source/build-maps.ps1. Wiki content is
CC BY-SA; each base map keeps its credited author and license (e.g. Monkimonkimonk/Glory4lyfe, Jindouz, xTycho, Re3mr - some CC BY-NC-SA).
Only exits, transits, PMC spawns, bosses and cultists are shown. Personal build; public redistribution not verified.
2.8.0 bundled map screenshots: supplied by the user from Escape from Tarkov Fandom interactive maps. Underlying map artwork/markers retain their original authors and applicable licenses; public redistribution rights have not been verified. Intended here for the requesting user's personal build.
Official maintenance announcements adapter: https://t.me/s/escapefromtarkovEN (public HTML; experimental).
PUBG map labels: matching references maps/pubg/refs/*.gray are 273x273 gray reductions of the official PUBG developer map images (https://github.com/pubg/api-assets, Assets/Maps, used under the PUBG developer Terms of Use / Player-created Content policy). Erangel secret room positions in maps/pubg/Erangel.txt were transcribed from the GGRecon guide map (https://www.ggrecon.com/guides/pubg-erangel-secret-rooms-keys/, 2024-04-24); place names are Korean renderings of the official map labels. No affiliation with KRAFTON/PUBG or GGRecon.
Erangel fixed boat (23) and fixed car (41) spawns in maps/pubg/Erangel.txt: transcribed from a community map image supplied by the user (Erangel callout/fixed-vehicle map, 800 px, same framing as the official map); original author not identified. Secret room coordinates now from pubg-maps.com (Erangel 'Secret Basements', 8192-px coordinates; https://pubg-maps.com/). Personal build.
PUBG map overlay data (maps/pubg/<Map>.txt) now from PUBG Intel (https://www.pubgintel.com/pubg-maps, positions extracted from game files): secret rooms, esports fixed vehicle and boat spawns, for Erangel, Miramar, Taego, Deston, Vikendi, Rondo, Paramo; Deston security rooms and Karakin bunkers from pubg-maps.com. Cross-checked between the two sites (median 4-74 m). No affiliation with KRAFTON/PUBG, PUBG Intel or pubg-maps.com. Personal build.
2.16.17: the setup program carries Microsoft's WebView2 Runtime bootstrapper (MicrosoftEdgeWebview2Setup.exe from go.microsoft.com, Microsoft-signed, run only when the runtime is missing); the quest card offers the same download on click.
2.16.29: the quest card's briefing in the UI language is the game's own quest description text (Battlestate Games), read from the locale files of the SPT project (https://github.com/sp-tarkov/server, project/assets/database/locales/global/<lang>.json) once a day with the quest cache; quests missing there keep the wiki's English briefing. Key pictures (2.16.26) are the Lock Location / Behind the Lock pictures of the key's Escape from Tarkov Wiki page (Fandom, CC BY-SA), loaded by the browser like the quest card's.
2.16.16: Microsoft Edge WebView2 SDK 1.0.4129.50 (NuGet Microsoft.Web.WebView2; companion/Microsoft.Web.WebView2.Core.dll, Microsoft.Web.WebView2.WinForms.dll, WebView2Loader.dll; BSD-style license, companion/WEBVIEW2-LICENSE.txt) hosts the quest card as a page in the WebView2 runtime that ships with Windows, so wiki pictures load as in any browser (the page may load only images from the wiki's image server).
2.16.15: the Tarkov map's quest card shows the Guide section text of the quest's page on the Escape from Tarkov Wiki (Fandom, https://escapefromtarkov.fandom.com, CC BY-SA), fetched through the wiki API when the card opens and cached locally; the card names the source and links the page. Bodyguard counts come from tarkov.dev game data (boss escorts).
2.16.14: deep-zoom matching references (relay/public/pubg/<Map>.u8, downloaded by BlueAsh per map on first use, not bundled) are 4096x4096 green-channel reductions of the same official developer maps (https://github.com/pubg/api-assets, Assets/Maps/<Map>_Main_High_Res.png), made by source/build-pubg-hires.ps1.
Price title OCR (2.13.0): PaddleOCR PP-OCRv5 mobile text-line recognition models (korean_PP-OCRv5_mobile_rec, PP-OCRv5_mobile_rec, en_/latin_/eslav_PP-OCRv5_mobile_rec), official ONNX exports from https://github.com/PaddlePaddle/PaddleOCR (paddle-model-ecology.bj.bcebos.com), Apache License 2.0; run with ONNX Runtime 1.22.0 (Microsoft, MIT License, https://github.com/microsoft/onnxruntime; its LICENSE and ThirdPartyNotices are served with it under /ocr/) and the app-local Microsoft Visual C++ runtime DLLs. Downloaded by BlueAsh on first use from BlueAsh's server (relay/public/ocr, built by source/ocr-models.mjs), not bundled in the exe.
Tarkov exit-marker person silhouette (2.14.3): person-running from Font Awesome Free 6.7.2, Copyright 2024 Fonticons, Inc. Source: https://github.com/FortAwesome/Font-Awesome/blob/6.x/svgs/solid/person-running.svg ; https://fontawesome.com/ . Licensed under Creative Commons Attribution 4.0 International (https://creativecommons.org/licenses/by/4.0/). BlueAsh modifications: normalized SVG geometry to native GDI+ paths, scaled and sheared to fit the narrower parallelogram badge, duplicated and separated silhouettes for cooperative extraction. Original path and attribution retained in source/assets/exit-person.svg. No endorsement by Fonticons, Inc.
Tarkov exit-marker revision (2.14.4): doorway, floor threshold and exiting person reconstructed as native vector geometry from the emergency-exit pictogram image supplied by the requesting user on 2026-10-15. Adaptations: slimmer slanted badge, transit recolour and two-person cooperative variant. The 2.14.3 Font Awesome person path is no longer rendered; its attributed source SVG remains in the repository.
UI font (2.20.0): Pretendard 1.3.9 Regular and Bold, Copyright (c) 2021 Kil Hyung-jin (https://github.com/orioncactus/pretendard), with Reserved Font Name Pretendard. Licensed under the SIL Open Font License 1.1 (source/assets/fonts/Pretendard-OFL.txt). Embedded unmodified in BlueAsh.exe and loaded privately at start (not installed on the PC).
2.23.0: the Fandom map pictures, maps/markers.json, companion/FandomText.tsv and the PUBG reference maps and labels (maps/pubg) are not open source, so they are no longer inside BlueAsh.exe or the published source. BlueAsh downloads them as one data pack from the BlueAsh server and accepts it only with the SHA-256 pinned in the build (source/datapack.h, source/datapack_id.h); their sources and licenses are as listed above.
