{
    "sourceFile": "Documentation/01_User_Guide/02_Features.md",
    "activeCommit": 0,
    "commits": [
        {
            "activePatchIndex": 2,
            "patches": [
                {
                    "date": 1745494307791,
                    "content": "Index: \n===================================================================\n--- \n+++ \n"
                },
                {
                    "date": 1745494347700,
                    "content": "Index: \n===================================================================\n--- \n+++ \n@@ -1,7 +1,7 @@\n # User Guide: Features\r\n \r\n-The Asset Processor Tool provides the following key features:\r\n+This document outlines the key features of the Asset Processor Tool.\r\n \r\n ## Core Processing & Classification\r\n \r\n *   **Preset-Driven:** Uses JSON presets (`presets/`) to define rules for different asset suppliers (e.g., `Poliigon.json`).\r\n@@ -15,4 +15,30 @@\n     *   Applies bit-depth rules (`respect` source or `force_8bit`).\r\n     *   Saves maps in appropriate formats (JPG, PNG, EXR) based on complex rules involving map type (`FORCE_LOSSLESS_MAP_TYPES`), resolution (`RESOLUTION_THRESHOLD_FOR_JPG`), bit depth, and source format.\r\n     *   Calculates basic image statistics (Min/Max/Mean) for a reference resolution.\r\n     *   Calculates and stores the relative aspect ratio change string in metadata (e.g., `EVEN`, `X150`, `Y125`).\r\n+*   **Channel Merging:** Combines channels from different maps into packed textures (e.g., NRMRGH) based on preset rules (`MAP_MERGE_RULES` in `config.py`).\r\n+*   **Metadata Generation:** Creates a `metadata.json` file for each asset containing details about maps, category, archetype, aspect ratio change, processing settings, etc.\r\n+*   **Output Organization:** Creates a clean, structured output directory (`<output_base>/<supplier>/<asset_name>/`).\r\n+*   **Optimized Classification:** Pre-compiles regular expressions from presets for faster file identification.\r\n+\r\n+## Interface & Automation\r\n+\r\n+*   **Dual Interface:** Provides both a user-friendly GUI and a powerful CLI.\r\n+*   **Parallel Processing:** Utilizes multiple CPU cores for faster processing (configurable via `--workers` in CLI or GUI control).\r\n+*   **Skip/Overwrite:** Can skip processing if the output already exists or force reprocessing (`--overwrite` flag / checkbox).\r\n+*   **Directory Monitor:** Includes `monitor.py` script for automated processing of assets dropped into a watched folder.\r\n+*   **Responsive GUI:** Uses background threads (`QThread`, `ProcessPoolExecutor`, `ThreadPoolExecutor`) to keep the UI responsive during intensive operations.\r\n+*   **GUI Features:**\r\n+    *   Drag-and-drop input (ZIPs / folders).\r\n+    *   Integrated preset editor panel.\r\n+    *   Configurable output directory field with browse button.\r\n+    *   Enhanced live preview table showing predicted file status.\r\n+    *   Toggleable preview mode (detailed file list vs simple asset list).\r\n+    *   Toggleable log console panel.\r\n+    *   Progress bar, cancellation button, clear queue button.\r\n+\r\n+## Integration\r\n+\r\n+*   **Blender Integration:** Optionally runs Blender scripts (`create_nodegroups.py`, `create_materials.py`) after asset processing to automate node group and material creation in specified `.blend` files. Available via both CLI and GUI.\r\n+    *   **GUI Controls:** Checkbox to enable/disable Blender integration and input fields with browse buttons for target `.blend` files.\r\n+*   **Docker Support:** Includes a `Dockerfile` for containerized execution.\n\\ No newline at end of file\n"
                },
                {
                    "date": 1745506993446,
                    "content": "Index: \n===================================================================\n--- \n+++ \n@@ -4,9 +4,9 @@\n \r\n ## Core Processing & Classification\r\n \r\n *   **Preset-Driven:** Uses JSON presets (`presets/`) to define rules for different asset suppliers (e.g., `Poliigon.json`).\r\n-*   **Multi-Asset Input Handling:** Correctly identifies and processes multiple distinct assets contained within a single input `.zip` or folder, creating separate outputs for each.\r\n+*   **Multi-Asset Input Handling:** Correctly identifies and processes multiple distinct assets contained within a single input `.zip`, `.rar`, `.7z` archive, or folder, creating separate outputs for each.\r\n *   **File Classification:** Automatically identifies map types (Color, Normal, Roughness, etc.), models, explicitly marked extra files, and unrecognised files based on preset rules.\r\n     *   **Variant Handling:** Map types listed in `RESPECT_VARIANT_MAP_TYPES` (in `config.py`, e.g., `\"COL\"`) always receive a numeric suffix (`-1`, `-2`, etc.). Numbering priority uses preset keyword order first, then alphabetical filename sorting as a tie-breaker. Other map types never receive a suffix.\r\n     *   **16-bit Prioritization:** Correctly identifies and prioritizes 16-bit variants defined in preset `bit_depth_variants` (e.g., `*_NRM16.tif`), ignoring the corresponding 8-bit version (marked as `Ignored` in GUI).\r\n *   **Map Processing:**\r\n"
                }
            ],
            "date": 1745494307791,
            "name": "Commit-0",
            "content": "# User Guide: Features\r\n\r\nThe Asset Processor Tool provides the following key features:\r\n\r\n## Core Processing & Classification\r\n\r\n*   **Preset-Driven:** Uses JSON presets (`presets/`) to define rules for different asset suppliers (e.g., `Poliigon.json`).\r\n*   **Multi-Asset Input Handling:** Correctly identifies and processes multiple distinct assets contained within a single input `.zip` or folder, creating separate outputs for each.\r\n*   **File Classification:** Automatically identifies map types (Color, Normal, Roughness, etc.), models, explicitly marked extra files, and unrecognised files based on preset rules.\r\n    *   **Variant Handling:** Map types listed in `RESPECT_VARIANT_MAP_TYPES` (in `config.py`, e.g., `\"COL\"`) always receive a numeric suffix (`-1`, `-2`, etc.). Numbering priority uses preset keyword order first, then alphabetical filename sorting as a tie-breaker. Other map types never receive a suffix.\r\n    *   **16-bit Prioritization:** Correctly identifies and prioritizes 16-bit variants defined in preset `bit_depth_variants` (e.g., `*_NRM16.tif`), ignoring the corresponding 8-bit version (marked as `Ignored` in GUI).\r\n*   **Map Processing:**\r\n    *   Resizes texture maps to configured resolutions (e.g., 4K, 2K, 1K), avoiding upscaling.\r\n    *   Handles Glossiness map inversion to Roughness.\r\n    *   Applies bit-depth rules (`respect` source or `force_8bit`).\r\n    *   Saves maps in appropriate formats (JPG, PNG, EXR) based on complex rules involving map type (`FORCE_LOSSLESS_MAP_TYPES`), resolution (`RESOLUTION_THRESHOLD_FOR_JPG`), bit depth, and source format.\r\n    *   Calculates basic image statistics (Min/Max/Mean) for a reference resolution.\r\n    *   Calculates and stores the relative aspect ratio change string in metadata (e.g., `EVEN`, `X150`, `Y125`).\r\n"
        }
    ]
}