Major UI improvements across the application:
MainWindow:
- Integrate undo stack for field editing
- Dirty state tracking with tab title indicators (*)
- Save/SaveAs prompts on tab close with unsaved changes
- Export menu integration in tab context menu
- Tab management: close all, close left/right of current tab
- Connect export system to tree widget signals
XTreeWidget:
- Add context menus for tree items
- Quick export action for immediate saves
- Export dialog action for format options
- Raw data export for any item
- Batch export for containers
XTreeWidgetItem:
- Add modified state tracking with visual indicator
- Support for marking items as dirty
ImagePreviewWidget:
- Enhanced image display and navigation
- Improved zoom and pan controls
TreeBuilder:
- Better handling of nested data structures
- Improved child node generation
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Extend CLI with comprehensive file parsing capabilities:
New parse command:
- Parse binary files using XScript definitions
- Auto-detect file type or force specific type with -t option
- Output formats: JSON, tree, or table view
Output options:
- JSON (-f json): Machine-readable structured output
- Tree (-f tree): Hierarchical view with colored output
- Table (-f table): Compact tabular format
Additional features:
- Verbose mode (-v) to show hidden fields
- Warnings-only mode (-w) to show blank/zero values
- Nested data expansion in tree view
- Hex formatting for addresses and hashes
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implement a unified export system for extracting data from parsed files:
ExportManager (singleton):
- Centralized export handling for all content types
- Content type detection (image, audio, video, text, binary)
- Batch export support with progress tracking
Format-specific export dialogs:
- ImageExportDialog: PNG, JPEG, BMP, TGA with quality options
- AudioExportDialog: WAV, MP3, OGG with FFmpeg integration
- BinaryExportDialog: Raw data export with optional decompression
- BatchExportDialog: Recursive export with filtering options
- Base ExportDialog class for common functionality
Settings additions:
- FFmpeg path configuration with auto-detection
- Search common install locations and PATH
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implement infrastructure for editing parsed binary fields:
FieldEditCommand (QUndoCommand):
- Undo/redo support for field value changes
- Stores old and new values with field metadata
- Integrates with Qt's undo stack
DirtyStateManager:
- Tracks modified state per-tab
- Emits signals when dirty state changes
- Enables save prompts and tab indicators
ScriptTypeEditorWidget enhancements:
- Add recompilation debouncing (300ms) for responsive editing
- Build form layout only for fields with values (skip unexecuted branches)
- Support edit signals for modified fields
- Improved table and form layout building
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Major improvements to VPP, PEG, and ASM parsers:
vpp.xscript:
- Support all VPP versions (4-10) for Saints Row 1-4 and Red Faction
- Add container type detection (str2, packfile, etc.)
- Improved compression handling (zlib, LZO, auto-detection)
- Better recursive parsing of nested archives
peg.xscript:
- Full PEG texture container parsing
- Support for multiple texture formats (DXT1, DXT3, DXT5, etc.)
- Xbox 360 and PC format variants
asm.xscript:
- Animation state machine container parsing
New format definitions:
- anim.xscript: Animation data
- audio.xscript: Audio containers (bank files)
- mesh.xscript: 3D mesh geometry
- morph.xscript: Morph targets
- rig.xscript: Skeletal rigs
- sim.xscript: Simulation data
- zone.xscript: Level zone data
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
XScript definitions for Dead Rising 2 (Xbox 360) file formats:
- big.xscript: Main archive format with LZX-compressed entries
- tex.xscript: Texture files
- anm.xscript: Animation files
- bcf.xscript, bcs.xscript, bct.xscript: Character format files
- bin.xscript: Generic binary containers
- bik.xscript: Bink video references
- havok.xscript: Havok physics data
The .big archive parser uses deadrising_lzx() to decompress entries
and recursively parses nested archives.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Introduce operation journaling to track how values are read from the
binary stream, enabling future write-back of edited fields.
New components:
- OperationJournal: Records read operations with stream offsets, sizes,
byte order, and original values during parsing
- ReverseEval: Analyzes expressions for invertibility (e.g., x+5 can be
reversed to compute the source field when editing the result)
- Recompiler: Infrastructure for recompiling modified values back to
binary format
Interpreter enhancements:
- Add runTypeInternalWithJournal() for journaled parsing
- Journal scalar reads, byte reads, strings, skip/seek operations
- Add deadrising_lzx() built-in for Dead Rising 2 LZX decompression
- Support _deadrising_lzx_stem context variable for nested archives
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Integrate libmspack's LZX decompressor for Xbox 360 and UE-style
compressed data. This replaces the need for external xcompress64.dll
which was hanging/crashing on certain files.
- Add mspack/ library (lzxd.c decompressor with Gildor's fixes)
- Implement memory-based mspack_system for in-memory decompression
- Support multiple LZX formats: raw streams, Xbox 360 block format,
and Dead Rising 2's per-block format with 4-byte size headers
- Add DecompressDeadRisingLZX() with per-block independent contexts
to handle the block-based compression correctly
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Stripped all platform-specific COD test files (360, PC, PS3, Wii, WiiU).
Will rebuild test suite later with new approach.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Pauses and shows what will be published, requires y/Y to proceed.
If declined, exits gracefully with local files still available.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Calls claude.exe --print with git log to generate professional
release notes. Falls back to basic git log format if unavailable.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Volition VPP: Unified BE/LE types using inheritance pattern
- THQA PAK: Child types now inherit byte order from parent
- Various XScript definition updates and fixes
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Convert match() function calls to if-else chains (match keyword conflict)
- Remove unsupported bracket attributes [table=..., columns=...]
- Expand inline statement with bracket attributes to explicit if block
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Change TreeBuilder m_registry from reference to pointer to allow assignment
- Add default constructor to TreeBuilder for member initialization
- Add Xbox SDK xcompress64 library to xscript-cli linker dependencies
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add CLAUDE.md with project overview and XScript reference
- Remove obsolete ai-commit.sh script
- Clean up duplicate .env entry in .gitignore
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add xscript-cli: Command-line validator for XScript definition files
- Syntax checking and reference validation
- Directory batch processing
- Type listing and info commands
- Add gml_disasm.py: Python disassembler for Avatar GML bytecode
- Update tools.pro for new subprojects
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add log-to-file functionality with configurable path
- Buffer log entries before listeners connect to prevent lost messages
- Add flush mechanism for buffered entries
- Improve utils.h with additional helper functions
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- FMOD: FSB audio bank format support
- THQ: PAK archives, G4RC textures, RAD video, STR strings, GML scripts
- Volition: VPP archives, PEG textures, ASM container format
- Wii: BNR banner format with metadata extraction
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Migrate from bracket attributes to ui() function calls
- Enhance chunk parsing with improved structure definitions
- Add additional metadata fields to chunk handlers
- Update Xbox 360 texture and archive definitions
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Migrate from set_global/get_global to ctx_set/ctx_get
- Replace if-else chains with match() expressions
- Update inline pointer handling patterns
- Improve GfxWorld and asset parsing structures
- Clean up redundant code across 60+ definition files
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Refactor MainWindow to use TreeBuilder for parsed data organization
- Integrate new ListPreviewWidget and TextViewerWidget
- Add Python path auto-detection and scripts directory settings
- Add log-to-file option and improve debug logging feedback
- Improve image format detection (PNG, JPEG, BMP, DDS, TGA, RCB)
- Update app.pro with new source files
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add ListPreviewWidget for displaying parsed list data with table view
- Add TextViewerWidget for text file preview with syntax highlighting
- Add TreeBuilder class to organize parsed data into tree structure
- Enhance HexView with selection support, copy functionality, keyboard navigation
- Enhance ImagePreviewWidget with additional format support and metadata display
- Minor audio preview widget adjustments
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add QuickBMS path setting to Settings class with auto-detection
- Add Tools page in Preferences with QuickBMS configuration UI
- Update Compression class to use configurable path instead of hardcoded
- Add startup prompt if QuickBMS not found, with option to locate
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Reset All Settings button in General preferences
- Clears all settings and restores XPlor Dark theme
- Applies theme change immediately
- Confirmation dialog before reset
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Enhanced compression support
- Log manager improvements
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Enhanced XScript parsing capabilities
- Type registry improvements
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- App metadata defines at top of main.cpp
- Dynamic themed app icon (accent color replaces red)
- Icon refreshes on theme change
- Disabled unimplemented menu actions
- Image preview with theme support
- Updated CLI help text with feature list
- Splash screen integration
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- API token loaded from .env at build time via qmake
- All fields required with validation
- Email validation with regex
- Cleaner UI with placeholder text
- Added .env to gitignore
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Custom painting with theme colors
- Accent stripe at top
- "X" in accent color, "Plor" in text color
- Dynamic version from QCoreApplication
- Dynamic copyright year
- Removed "With Help From" section
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Theme selection (dark/light modes)
- Accent color picker with presets
- Live preview of theme changes
- Settings persistence via QSettings
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- View loaded XScript definitions
- Shows definition name and source path
- Displays load status (success/error)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Waveform visualization with theme accent color
- Playback controls (play/pause, stop, position slider)
- Time display with milliseconds (MM:SS.mmm)
- Position tracking line on waveform
- Volume control
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Custom hex viewer with address, hex, and ASCII columns
- Theme-aware colors for selection and highlights
- Keyboard navigation and selection support
- Scrollable view for large files
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>