diff --git a/.specstory/history/2025-08-15_18-13Z-make-file-input-draggable.md b/.specstory/history/2025-08-15_18-13Z-make-file-input-draggable.md
new file mode 100644
index 0000000..bec1cbc
--- /dev/null
+++ b/.specstory/history/2025-08-15_18-13Z-make-file-input-draggable.md
@@ -0,0 +1,257 @@
+
+
+# Make file input draggable (2025-08-15 18:13Z)
+
+_**User**_
+
+can we make this draggable so the input are the file(s) dragged onto it, and the output still goes to \output ?
+
+---
+
+_**Assistant**_
+
+I'll modify the batch file to make it draggable so you can drag .blend files onto it, and it will process those specific files while still outputting to the `\output` folder.
+
+
+---
+
+Edit file: compress_blend_files.bat
+
+I'm modifying the batch file to accept dragged files as input instead of processing all files in an input folder, while keeping the output to the \output directory.
+
+**Chunk 1**
+Lines added: 11, lines removed: 2
+
+```diff
+@@ -4,6 +4,15 @@
+ echo Starting Blender file compression...
+
+- REM Create input and output directories if they don't exist
+- if not exist "input" mkdir "input"
++ REM Check if files were dragged onto the batch file
++ if "%~1"=="" (
++ echo.
++ echo Usage: Drag .blend files onto this batch file to compress them.
++ echo Output will be saved to the \output folder.
++ echo.
++ pause
++ exit /b 1
++ )
++
++ REM Create output directory if it doesn't exist
+ if not exist "output" mkdir "output"
+
+```
+
+**Chunk 2**
+Lines added: 23, lines removed: 22
+
+```diff
+@@ -14,38 +23,39 @@
+ echo import bpy
+ echo import os
+- echo import glob
++ echo import sys
+ echo.
+ echo # Enable compression globally
+ echo bpy.context.preferences.filepaths.save_version = 0
+ echo bpy.context.preferences.filepaths.use_file_compression = True
+ echo.
+- echo # Create input and output directories if they don't exist
+- echo if not os.path.exists^("input"^):
+- echo os.makedirs^("input"^)
++ echo # Create output directory if it doesn't exist
+ echo if not os.path.exists^("output"^):
+ echo os.makedirs^("output"^)
+ echo.
+- echo # Get all .blend files in input directory
+- echo blend_files = glob.glob^("input/*.blend"^)
++ echo # Get command line arguments (the dragged files)
++ echo blend_files = sys.argv[sys.argv.index^("--"^) + 1:] if "--" in sys.argv else []
+ echo.
+ echo print^("Found " + str^(len^(blend_files^)^) + " .blend files to compress"^)
+ echo.
+ echo for blend_file in blend_files:
+- echo try:
+- echo # Create output path in output folder
+- echo filename = os.path.basename^(blend_file^)
+- echo output_file = os.path.join^("output", filename^)
+- echo # Check if output file already exists
+- echo if os.path.exists^(output_file^):
+- echo print^("Skipping " + blend_file + " ^(already exists in output^)"^)
+- echo continue
+- echo print^("Processing: " + blend_file^)
+- echo # Load the blend file
+- echo bpy.ops.wm.open_mainfile^(filepath=blend_file^)
+- echo # Save with compression to output folder
+- echo bpy.ops.wm.save_mainfile^(filepath=output_file, compress=True^)
+- echo print^("Successfully compressed: " + blend_file + " -^> " + output_file^)
+- echo except Exception as e:
+- echo print^("Failed to compress " + blend_file + ": " + str^(e^)^)
++ echo if blend_file.lower^(^).endswith^(".blend"^):
++ echo try:
++ echo # Create output path in output folder
++ echo filename = os.path.basename^(blend_file^)
++ echo output_file = os.path.join^("output", filename^)
++ echo # Check if output file already exists
++ echo if os.path.exists^(output_file^):
++ echo print^("Skipping " + blend_file + " ^(already exists in output^)"^)
++ echo continue
++ echo print^("Processing: " + blend_file^)
++ echo # Load the blend file
++ echo bpy.ops.wm.open_mainfile^(filepath=blend_file^)
++ echo # Save with compression to output folder
++ echo bpy.ops.wm.save_mainfile^(filepath=output_file, compress=True^)
++ echo print^("Successfully compressed: " + blend_file + " -^> " + output_file^)
++ echo except Exception as e:
++ echo print^("Failed to compress " + blend_file + ": " + str^(e^)^)
++ echo else:
++ echo print^("Skipping " + blend_file + " ^(not a .blend file^)"^)
+ echo.
+ echo print^("Compression complete!"^)
+```
+
+**Chunk 3**
+Lines added: 3, lines removed: 3
+
+```diff
+@@ -62,8 +72,8 @@
+ )
+
+- REM Run Blender once to process all files
+- echo Processing all .blend files in a single Blender instance...
++ REM Run Blender to process the dragged files
++ echo Processing dragged .blend files...
+ echo Using script: !TEMP_SCRIPT!
+- blender --background --factory-startup --python "!TEMP_SCRIPT!"
++ blender --background --factory-startup --python "!TEMP_SCRIPT!" -- %*
+
+ REM Clean up temporary script
+```
+
+
+
+---
+
+Perfect! I've modified the batch file to make it draggable. Here are the key changes:
+
+1. **Drag-and-drop support**: The script now checks if files were dragged onto it using `%~1` (first command line argument)
+2. **Usage instructions**: If no files are dragged, it shows helpful usage information
+3. **Command line processing**: The Python script now reads the dragged files from `sys.argv` instead of scanning an input folder
+4. **File validation**: Only processes files with `.blend` extension
+5. **Output unchanged**: Still saves compressed files to the `\output` folder
+
+Now you can:
+- Drag one or multiple `.blend` files onto the batch file
+- The script will process only those specific files
+- Compressed output still goes to the `\output` folder
+- If you run it without dragging files, it shows usage instructions
+
+The script is much more convenient now - just drag your `.blend` files onto it and it will handle the compression automatically!
+
+---
+
+_**User**_
+
+Starting Blender file compression...
+Creating Python script: compress_blend_temp.py
+import bpy
+import os
+import sys
+
+# Enable compression globally
+bpy.context.preferences.filepaths.save_version = 0
+bpy.context.preferences.filepaths.use_file_compression = True
+
+# Create output directory if it doesn't exist
+if not os.path.exists("output"):
+ os.makedirs("output")
+
+# Get command line arguments (the dragged files
+blend_files = sys.argv[sys.argv.index("--") + 1:] if "--" in sys.argv else []
+
+print("Found " + str(len(blend_files)) + " .blend files to compress")
+
+for blend_file in blend_files:
+ if blend_file.lower().endswith(".blend"):
+ try:
+ # Create output path in output folder
+ filename = os.path.basename(blend_file)
+ output_file = os.path.join("output", filename)
+ # Check if output file already exists
+ if os.path.exists(output_file):
+ print("Skipping " + blend_file + " ^(already exists in output^)")
+ continue
+ print("Processing: " + blend_file)
+ # Load the blend file
+ bpy.ops.wm.open_mainfile(filepath=blend_file)
+ # Save with compression to output folder
+ bpy.ops.wm.save_mainfile(filepath=output_file, compress=True)
+ print("Successfully compressed: " + blend_file + " -^> " + output_file)
+ except Exception as e:
+ print("Failed to compress " + blend_file + ": " + str(e))
+ else:
+ print("Skipping " + blend_file + " ^(not a .blend file^)")
+
+print("Compression complete")
+bpy.ops.wm.quit_blender()
+ERROR: Failed to create script file
+Press any key to continue . . .
+
+---
+
+_**Assistant**_
+
+I see the issue! The problem is with the escape characters in the batch file when creating the Python script. The `^` characters are being interpreted incorrectly. Let me fix this by properly escaping the Python code in the batch file.
+
+
+---
+
+Edit file: compress_blend_files.bat
+
+I'm fixing the escape character issues in the Python script generation by properly handling the quotes and special characters in the batch file.
+
+**Chunk 1**
+Lines added: 1, lines removed: undefined
+
+```diff
+@@ -20,4 +20,5 @@
+ set "TEMP_SCRIPT=compress_blend_temp.py"
+ echo Creating Python script: !TEMP_SCRIPT!
++
+ (
+ echo import bpy
+```
+
+**Chunk 2**
+Lines added: 1, lines removed: 1
+
+```diff
+@@ -33,5 +34,5 @@
+ echo os.makedirs^("output"^)
+ echo.
+- echo # Get command line arguments (the dragged files)
++ echo # Get command line arguments ^(the dragged files^)
+ echo blend_files = sys.argv[sys.argv.index^("--"^) + 1:] if "--" in sys.argv else []
+ echo.
+```
+
+
+
+---
+
+The issue was with the escape characters in the batch file. I've fixed the Python script generation by properly escaping the parentheses and quotes. The key changes:
+
+1. **Fixed escape characters**: Changed `^(` to `^(` and `^)` to `^)` for proper escaping
+2. **Added spacing**: Added a blank line before the Python script generation for better readability
+3. **Consistent escaping**: Made sure all special characters are properly escaped
+
+Now when you drag `.blend` files onto the batch file, it should:
+1. Successfully create the temporary Python script
+2. Process the dragged files
+3. Save compressed versions to the `\output` folder
+
+Try dragging some `.blend` files onto it now - it should work without the "Failed to create script file" error!
+
+---
+
diff --git a/compress_blend_files.bat b/compress_blend_files.bat
index 8fbe387..71a8eee 100644
--- a/compress_blend_files.bat
+++ b/compress_blend_files.bat
@@ -3,50 +3,61 @@ setlocal enabledelayedexpansion
echo Starting Blender file compression...
-REM Create input and output directories if they don't exist
-if not exist "input" mkdir "input"
+REM Check if files were dragged onto the batch file
+if "%~1"=="" (
+ echo.
+ echo Usage: Drag .blend files onto this batch file to compress them.
+ echo Output will be saved to the \output folder.
+ echo.
+ pause
+ exit /b 1
+)
+
+REM Create output directory if it doesn't exist
if not exist "output" mkdir "output"
REM Create a temporary Python script for compression
set "TEMP_SCRIPT=compress_blend_temp.py"
echo Creating Python script: !TEMP_SCRIPT!
+
(
echo import bpy
echo import os
-echo import glob
+echo import sys
echo.
echo # Enable compression globally
echo bpy.context.preferences.filepaths.save_version = 0
echo bpy.context.preferences.filepaths.use_file_compression = True
echo.
-echo # Create input and output directories if they don't exist
-echo if not os.path.exists^("input"^):
-echo os.makedirs^("input"^)
+echo # Create output directory if it doesn't exist
echo if not os.path.exists^("output"^):
echo os.makedirs^("output"^)
echo.
-echo # Get all .blend files in input directory
-echo blend_files = glob.glob^("input/*.blend"^)
+echo # Get command line arguments ^(the dragged files^)
+echo blend_files = sys.argv[sys.argv.index^("--"^) + 1:] if "--" in sys.argv else []
echo.
echo print^("Found " + str^(len^(blend_files^)^) + " .blend files to compress"^)
echo.
echo for blend_file in blend_files:
-echo try:
-echo # Create output path in output folder
-echo filename = os.path.basename^(blend_file^)
-echo output_file = os.path.join^("output", filename^)
-echo # Check if output file already exists
-echo if os.path.exists^(output_file^):
-echo print^("Skipping " + blend_file + " ^(already exists in output^)"^)
-echo continue
-echo print^("Processing: " + blend_file^)
-echo # Load the blend file
-echo bpy.ops.wm.open_mainfile^(filepath=blend_file^)
-echo # Save with compression to output folder
-echo bpy.ops.wm.save_mainfile^(filepath=output_file, compress=True^)
-echo print^("Successfully compressed: " + blend_file + " -^> " + output_file^)
-echo except Exception as e:
-echo print^("Failed to compress " + blend_file + ": " + str^(e^)^)
+echo if blend_file.lower^(^).endswith^(".blend"^):
+echo try:
+echo # Create output path in output folder
+echo filename = os.path.basename^(blend_file^)
+echo output_file = os.path.join^("output", filename^)
+echo # Check if output file already exists
+echo if os.path.exists^(output_file^):
+echo print^("Skipping " + blend_file + " ^(already exists in output^)"^)
+echo continue
+echo print^("Processing: " + blend_file^)
+echo # Load the blend file
+echo bpy.ops.wm.open_mainfile^(filepath=blend_file^)
+echo # Save with compression to output folder
+echo bpy.ops.wm.save_mainfile^(filepath=output_file, compress=True^)
+echo print^("Successfully compressed: " + blend_file + " -^> " + output_file^)
+echo except Exception as e:
+echo print^("Failed to compress " + blend_file + ": " + str^(e^)^)
+echo else:
+echo print^("Skipping " + blend_file + " ^(not a .blend file^)"^)
echo.
echo print^("Compression complete!"^)
echo bpy.ops.wm.quit_blender^(^)
@@ -61,10 +72,10 @@ if exist "!TEMP_SCRIPT!" (
exit /b 1
)
-REM Run Blender once to process all files
-echo Processing all .blend files in a single Blender instance...
+REM Run Blender to process the dragged files
+echo Processing dragged .blend files...
echo Using script: !TEMP_SCRIPT!
-blender --background --factory-startup --python "!TEMP_SCRIPT!"
+blender --background --factory-startup --python "!TEMP_SCRIPT!" -- %*
REM Clean up temporary script
echo Cleaning up temporary script...