Internal tools for speeding up Support workflows.
The current app is Topaz tzlog Reader, a local tool for reviewing Topaz .tzlog
support downloads, finding likely error patterns, and building paste-ready Support
reports.
- Reads individual
.tzlogfiles, folders of logs, or support archives. - Extracts
.zip,.tar,.tar.gz, and.tgzarchives. - Finds
.tzlogfiles inside extracted support folders. - Pulls system information from logs:
- user OS inferred from the log path
- Topaz Photo version
- activation email, when present
- OS, CPU, RAM, indexed GPUs, and GPU VRAM
- Pulls issue log details, including Crashpad session IDs.
- Scans issue logs for likely notable error patterns.
- Tracks reviewed error patterns in a local bank for reuse and trend checks.
- Saves report text files next to the processed logs.
- Copies reports to the clipboard on macOS and Windows when possible.
- Python 3.10 or newer.
- Tkinter for the desktop GUI. It is included with most Python installs.
- Node.js 18 or newer for the web UI.
The Python tools currently use only the standard library. requirements.txt is
kept for the setup workflow, but it does not install any third-party packages.
From the repository root:
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txtNo npm install step is required for the web UI because it uses only built-in
Node modules.
The web UI is the easiest way to run the current app.
cd tools/tzLogReader
npm run startIf your environment exposes Python as python instead of python3, set
PYTHON=python before starting the server. You can also provide a launcher
command with arguments such as PYTHON="py -3" or a quoted full path.
Then open:
http://127.0.0.1:8765
Optional: run on a different port.
PORT=9000 npm run start- Paste the path to a support folder or supported archive in Support Download.
- Click Run Step 1.
- Review the discovered
.tzlogfiles and generated system information. - Click Use next to the issue-specific log, or paste an issue log/folder path in Issue Log.
- Click Scan for Errors.
- Select useful candidate patterns and click Add Selected to Step 3.
- Optionally record selected patterns into the error bank for future trend checks.
- Click Build Report.
- Click Copy Report and paste the output into the Support workflow.
The app writes:
support_system_information.txtsupport_full_tzlog_report.txt
When archives are extracted, reports are written into the extracted archive folder. Otherwise, they are written next to the selected input path.
From the repository root:
python tools/tzLogReader/tzlog_reader.pyDesktop GUI flow:
- Choose a support folder or archive.
- Run Step 1 to extract archives, list logs, copy system info, and save
support_system_information.txt. - Select the issue-specific
.tzlogfile or folder. - Scan/review notable error messages, or add reviewed patterns manually.
- Build the Crashpad report.
The final report is copied to the clipboard when possible and saved as
support_full_tzlog_report.txt.
Run with a path to a .tzlog file, folder, or supported archive:
python tools/tzLogReader/tzlog_reader.py path/to/support-folder-or-archiveThe CLI prints the system information report, copies it when possible, saves it, then prompts for the issue log path.
JSON output is available:
python tools/tzLogReader/tzlog_reader.py path/to/logs --jsonMulti-log session scanning is available:
python tools/tzLogReader/tzlog_reader.py path/to/support-folder-or-archive --session-scanThis groups discovered .tzlog files into launch sessions, sorts them
chronologically, and assigns each session a typed status so the same engine can
be reused by CLI, web, and downstream automation workflows.
The session engine also records explicit termination analysis, distinguishing confirmed crash evidence, probable abrupt termination, forced quit, incomplete log capture, and graceful shutdown so support workflows can avoid mislabeling every incomplete log as a crash.
The engine also supports an external, rule-driven issue classifier. Rules are stored in the data file below so Support can tune classifications without changing parser code:
tools/tzLogReader/issue_rules.json
The classifier loads those rules and attaches machine-readable issue matches to session results, including a category, severity, and recommended follow-up information.
View saved error-pattern trends:
python tools/tzLogReader/tzlog_reader.py --error-bank-statsReviewed notable error patterns are stored locally in:
tools/tzLogReader/support_error_bank.json
The bank stores normalized patterns and per-date counts, not raw user-specific log lines.
tools/tzLogReader/
tzlog_reader.py CLI entry point and desktop GUI launcher
gui_app.py Tkinter desktop GUI
server.js local Node web server
web_bridge.py JSON bridge between the web UI and Python parser
analysis_model.py typed internal analysis model for sessions and archives
log_parser.py archive extraction, typed tzlog parsing, report formatting
issue_classifier.py rule-based session issue classification layer
issue_rules.json external support-facing issue rule definitions
error_scanner.py notable error candidate detection
error_message_bank.py local normalized pattern bank
web/ browser UI assets
SYSTEM INFORMATION:
User OS: Windows
Topaz Photo version: 1.3.3
User email (activation): user@example.com
OS: Windows Version 11.240000
CPU: Intel(R) Core(TM) i5-6400 CPU @ 2.70GHz
RAM: 15.9 GB Total / 7.2 GB Used
Indexed GPUs:
- Index 0: Default GPU | VRAM: 2.0 GB Total / 0.0 GB Used
ISSUE LOG INFORMATION:
Log file: 2026-05-12-10-38-58.tzlog
Crashpad session ID: abc123
NOTABLE ERROR MESSAGES:
- Example error line from the issue log