commit 702171812eeae00a61b9d7fe53a81e1cd881a11a Author: Raincloud Date: Wed Dec 17 00:43:14 2025 -0700 init diff --git a/.config/GetStructDir.ps1 b/.config/GetStructDir.ps1 new file mode 100644 index 0000000..08be8d6 --- /dev/null +++ b/.config/GetStructDir.ps1 @@ -0,0 +1,68 @@ +# Simple helper script to get structDir from project config.json +# Reads config.json from .config folder in project root + +param( + [string]$ProjectRoot +) + +Set-StrictMode -Version Latest +$ErrorActionPreference = 'Stop' + +if ([string]::IsNullOrWhiteSpace($ProjectRoot)) { + # Try to determine project root from script location + if ($PSScriptRoot) { + $ProjectRoot = Split-Path -Parent $PSScriptRoot + } + elseif ($MyInvocation.MyCommand.Path) { + $ProjectRoot = Split-Path -Parent (Split-Path -Parent $MyInvocation.MyCommand.Path) + } + else { + Write-Error "Unable to determine project root. Please provide -ProjectRoot parameter." + exit 1 + } +} + +$configPath = Join-Path -Path $ProjectRoot -ChildPath '.config\config.json' + +if (-not (Test-Path -LiteralPath $configPath -PathType Leaf)) { + Write-Error "config.json not found at: $configPath" + exit 1 +} + +try { + $config = Get-Content -LiteralPath $configPath -Raw -ErrorAction Stop | ConvertFrom-Json + + if ($config.PSObject.Properties.Name -contains 'structDir') { + $structDir = $config.structDir + if ($null -ne $structDir -and ($structDir -isnot [string] -or $structDir.Trim().Length -gt 0)) { + # If it's an absolute path, resolve it + if ([System.IO.Path]::IsPathRooted($structDir)) { + $resolved = Resolve-Path -LiteralPath $structDir -ErrorAction SilentlyContinue + if ($null -ne $resolved) { + Write-Output $resolved.Path + exit 0 + } + Write-Output $structDir + exit 0 + } + # Relative path - resolve relative to config location + $candidate = Join-Path -Path (Split-Path -Parent $configPath) -ChildPath $structDir + $resolvedCandidate = Resolve-Path -LiteralPath $candidate -ErrorAction SilentlyContinue + if ($null -ne $resolvedCandidate) { + Write-Output $resolvedCandidate.Path + exit 0 + } + Write-Output $candidate + exit 0 + } + } + + # Default: return the directory containing config.json (project root) + Write-Output $ProjectRoot + exit 0 +} +catch { + Write-Error "Failed to read or parse config.json: $($_.Exception.Message)" + exit 1 +} + diff --git a/.config/config.json b/.config/config.json new file mode 100644 index 0000000..71c04d8 --- /dev/null +++ b/.config/config.json @@ -0,0 +1,7 @@ +{ + "dailyFormat": "YYYY-MM-DD", + "structDir": "R:\\Creative\\artsy\\maya\\0 ProjectStructure", + "zipper": "7z", + "compression": 0, + "Max7zInst": 0 +} \ No newline at end of file diff --git a/.cursorindexingignore b/.cursorindexingignore new file mode 100644 index 0000000..953908e --- /dev/null +++ b/.cursorindexingignore @@ -0,0 +1,3 @@ + +# Don't index SpecStory auto-save files, but allow explicit context inclusion via @ references +.specstory/** diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..11db9c3 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,92 @@ +# Git LFS attributes configuration +# All listed file types will be tracked by Git LFS + +# Video files +*.avi filter=lfs diff=lfs merge=lfs -text +*.mkv filter=lfs diff=lfs merge=lfs -text +*.mov filter=lfs diff=lfs merge=lfs -text +*.MOV filter=lfs diff=lfs merge=lfs -text +*.mp4 filter=lfs diff=lfs merge=lfs -text +*.webm filter=lfs diff=lfs merge=lfs -text + +# Image files +*.bmp filter=lfs diff=lfs merge=lfs -text +*.exr filter=lfs diff=lfs merge=lfs -text +*.gif filter=lfs diff=lfs merge=lfs -text +*.hdr filter=lfs diff=lfs merge=lfs -text +*.jpg filter=lfs diff=lfs merge=lfs -text +*.jpeg filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.tga filter=lfs diff=lfs merge=lfs -text +*.tif filter=lfs diff=lfs merge=lfs -text +*.tiff filter=lfs diff=lfs merge=lfs -text +*.webp filter=lfs diff=lfs merge=lfs -text + +# 3D/CG files +*.3ds filter=lfs diff=lfs merge=lfs -text +*.abc filter=lfs diff=lfs merge=lfs -text +*.blend filter=lfs diff=lfs merge=lfs -text +*.blend1 filter=lfs diff=lfs merge=lfs -text +*.blend2 filter=lfs diff=lfs merge=lfs -text +*.bvh filter=lfs diff=lfs merge=lfs -text +*.bvh.gz filter=lfs diff=lfs merge=lfs -text +*.c4d filter=lfs diff=lfs merge=lfs -text +*.dae filter=lfs diff=lfs merge=lfs -text +*.fbx filter=lfs diff=lfs merge=lfs -text +*.fbxkey filter=lfs diff=lfs merge=lfs -text +*.ma filter=lfs diff=lfs merge=lfs -text +*.max filter=lfs diff=lfs merge=lfs -text +*.mb filter=lfs diff=lfs merge=lfs -text +*.obj filter=lfs diff=lfs merge=lfs -text +*.usd filter=lfs diff=lfs merge=lfs -text +*.vdb filter=lfs diff=lfs merge=lfs -text +*.bphys filter=lfs diff=lfs merge=lfs -text +*.bobj filter=lfs diff=lfs merge=lfs -text +*.bvel filter=lfs diff=lfs merge=lfs -text +*.bpointcache filter=lfs diff=lfs merge=lfs -text +*.blob filter=lfs diff=lfs merge=lfs -text + +# Flip Fluids cache files +*.data filter=lfs diff=lfs merge=lfs -text +*.sqlite3 filter=lfs diff=lfs merge=lfs -text + +# Substance files +*.sbs filter=lfs diff=lfs merge=lfs -text +*.sbsar filter=lfs diff=lfs merge=lfs -text +*.spp filter=lfs diff=lfs merge=lfs -text + +# Audio files +*.mp3 filter=lfs diff=lfs merge=lfs -text +*.wav filter=lfs diff=lfs merge=lfs -text + +# Archive/Compression files +*.7z filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.rar filter=lfs diff=lfs merge=lfs -text +*.tar filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text + +# Documents +*.docx filter=lfs diff=lfs merge=lfs -text +*.xlsx filter=lfs diff=lfs merge=lfs -text +*.eps filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text + +# Adobe files +*.aegraphic filter=lfs diff=lfs merge=lfs -text +*.aep filter=lfs diff=lfs merge=lfs -text +*.prel filter=lfs diff=lfs merge=lfs -text +*.prin filter=lfs diff=lfs merge=lfs -text +*.prmf filter=lfs diff=lfs merge=lfs -text +*.prproj filter=lfs diff=lfs merge=lfs -text +*.ai filter=lfs diff=lfs merge=lfs -text +*.psd filter=lfs diff=lfs merge=lfs -text + +# Data files +*.h5 filter=lfs diff=lfs merge=lfs -text +*.hdf5 filter=lfs diff=lfs merge=lfs -text + +# Other +*.uni filter=lfs diff=lfs merge=lfs -text +*.pdn filter=lfs diff=lfs merge=lfs -text \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d0c5b87 --- /dev/null +++ b/.gitignore @@ -0,0 +1,124 @@ +# Blender Studio Git Management - .gitignore + +# Blender auto-save files +*.blend1 +*.blend2 +*.blend3 +*.blend4 +*.blend5 +*.blend6 +*.blend7 +*.blend8 +*.blend9 +*.blend10 +*.blend11 +*.blend12 +*.blend13 +*.blend14 +*.blend15 +*.blend16 +*.blend17 +*.blend18 +*.blend19 +*.blend20 +*.blend21 +*.blend22 +*.blend23 +*.blend24 +*.blend25 +*.blend26 +*.blend27 +*.blend28 +*.blend29 +*.blend30 +*.blend31 +*.blend32 + +# Blender cache and temporary files +*.swp +*.swo +*~ +*.tmp +*.temp + +# OS generated files +.DS_Store +.DS_Store? +._* +.Spotlight-V100 +.Trashes +ehthumbs.db +Thumbs.db +desktop.ini + +# Editor files +.vscode/ +.idea/ +*.swp +*.swo +*~ + +# Large media files (uncomment if you want to exclude rendered outputs) +# *.mp4 +# *.avi +# *.mov +# *.png +# *.jpg +# *.jpeg +# *.exr +# *.hdr +# *.tiff +# *.tga + +# Audio files (uncomment if excluding) +# *.wav +# *.mp3 +# *.aac +# *.ogg + +# Log files +*.log + +# Python cache +__pycache__/ +*.pyc +*.pyo +*.pyd +.Python + +# Node modules (if using any web tools) +node_modules/ + +# Environment files +.env +.env.local +.env.development.local +.env.test.local +.env.production.local + +# Backup files +*.bak +*.backup +*.old + +# Temporary files +temp/ +tmp/ +cache/ + +Renders/** +!Renders/_zipped/ +!Renders/_zipped/** +!Renders/**/ +!Renders/**/*.bat +!Renders/**/*.log +seq/ + +# Premiere +*.prlock +Adobe Premiere Pro Video Previews/ +Adobe Premiere Pro Audio Previews/ +Adobe Premiere Pro (Beta) Video Previews/ +Adobe Premiere Pro (Beta) Audio Previews/ + +Pr/RnR/ \ No newline at end of file diff --git a/.specstory/.gitignore b/.specstory/.gitignore new file mode 100644 index 0000000..a8551fb --- /dev/null +++ b/.specstory/.gitignore @@ -0,0 +1,126 @@ +# Blender Studio Git Management - .gitignore + +# Blender auto-save files +*.blend1 +*.blend2 +*.blend3 +*.blend4 +*.blend5 +*.blend6 +*.blend7 +*.blend8 +*.blend9 +*.blend10 +*.blend11 +*.blend12 +*.blend13 +*.blend14 +*.blend15 +*.blend16 +*.blend17 +*.blend18 +*.blend19 +*.blend20 +*.blend21 +*.blend22 +*.blend23 +*.blend24 +*.blend25 +*.blend26 +*.blend27 +*.blend28 +*.blend29 +*.blend30 +*.blend31 +*.blend32 + +# Blender cache and temporary files +*.swp +*.swo +*~ +*.tmp +*.temp + +# OS generated files +.DS_Store +.DS_Store? +._* +.Spotlight-V100 +.Trashes +ehthumbs.db +Thumbs.db +desktop.ini + +# Editor files +.vscode/ +.idea/ +*.swp +*.swo +*~ + +# Large media files (uncomment if you want to exclude rendered outputs) +# *.mp4 +# *.avi +# *.mov +# *.png +# *.jpg +# *.jpeg +# *.exr +# *.hdr +# *.tiff +# *.tga + +# Audio files (uncomment if excluding) +# *.wav +# *.mp3 +# *.aac +# *.ogg + +# Log files +*.log + +# Python cache +__pycache__/ +*.pyc +*.pyo +*.pyd +.Python + +# Node modules (if using any web tools) +node_modules/ + +# Environment files +.env +.env.local +.env.development.local +.env.test.local +.env.production.local + +# Backup files +*.bak +*.backup +*.old + +# Temporary files +temp/ +tmp/ +cache/ + +Renders/** +!Renders/_zipped/ +!Renders/_zipped/** +!Renders/**/ +!Renders/**/*.bat +!Renders/**/*.log +seq/ + +# Premiere +*.prlock +Adobe Premiere Pro Video Previews/ +Adobe Premiere Pro Audio Previews/ +Adobe Premiere Pro (Beta) Video Previews/ +Adobe Premiere Pro (Beta) Audio Previews/ + +Pr/RnR/ +# SpecStory explanation file +/.what-is-this.md diff --git a/.specstory/.project.json b/.specstory/.project.json new file mode 100644 index 0000000..a65c0cb --- /dev/null +++ b/.specstory/.project.json @@ -0,0 +1,6 @@ +{ + "workspace_id": "21fd-4fae-b376-ff95", + "workspace_id_at": "2025-12-17T07:33:20.399Z", + "project_name": "2025-12-17 Little Reindeer", + "cloud_sync": false +} \ No newline at end of file