This commit is contained in:
2025-11-18 21:36:37 -07:00
commit e746d560d1
8 changed files with 500 additions and 0 deletions

68
.config/GetStructDir.ps1 Normal file
View File

@@ -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
}

7
.config/config.json Normal file
View File

@@ -0,0 +1,7 @@
{
"dailyFormat": "YYYY-MM-DD",
"zipper": "7z",
"compression": 9,
"Max7zInst": 0
}

3
.cursorindexingignore Normal file
View File

@@ -0,0 +1,3 @@
# Don't index SpecStory auto-save files, but allow explicit context inclusion via @ references
.specstory/**

83
.gitattributes vendored Normal file
View File

@@ -0,0 +1,83 @@
# 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
# 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

131
.gitignore vendored Normal file
View File

@@ -0,0 +1,131 @@
# 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
# Blender internal cache files
*.bpy
*.bmesh
*.bvh
*.bobj
*.bphys
# 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/

133
.specstory/.gitignore vendored Normal file
View File

@@ -0,0 +1,133 @@
# 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
# Blender internal cache files
*.bpy
*.bmesh
*.bvh
*.bobj
*.bphys
# 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

6
.specstory/.project.json Normal file
View File

@@ -0,0 +1,6 @@
{
"workspace_id": "d80a-ff45-2eb7-40e7",
"workspace_id_at": "2025-11-19T04:18:27.709Z",
"project_name": "2025-11-18 context soydrag",
"cloud_sync": false
}

View File

@@ -0,0 +1,69 @@
# SpecStory Artifacts Directory
This directory is automatically created and maintained by the SpecStory extension to preserve your AI chat history.
## What's Here?
- `.specstory/history`: Contains auto-saved markdown files of your AI coding sessions
- Each file represents a separate AI chat session
- If you enable auto-save, files are automatically updated as you work
- You can enable/disable the auto-save feature in the SpecStory settings, it is disabled by default
- `.specstory/.project.json`: Contains the persistent project identity for the current workspace
- This file is only present if you enable AI rules derivation
- This is used to provide consistent project identity of your project, even as the workspace is moved or renamed
- `.specstory/ai_rules_backups`: Contains backups of the `.cursor/rules/derived-cursor-rules.mdc` or the `.github/copilot-instructions.md` file
- Backups are automatically created each time the `.cursor/rules/derived-cursor-rules.mdc` or the `.github/copilot-instructions.md` file is updated
- You can enable/disable the AI Rules derivation feature in the SpecStory settings, it is disabled by default
- `.specstory/.gitignore`: Contains directives to exclude non-essential contents of the `.specstory` directory from version control
- Add `/history` to exclude the auto-saved chat history from version control
## Valuable Uses
- Capture: Keep your context window up-to-date when starting new Chat/Composer sessions via @ references
- Search: For previous prompts and code snippets
- Learn: Meta-analyze your patterns and learn from your past experiences
- Derive: Keep the AI on course with your past decisions by automatically deriving rules from your AI interactions
## Version Control
We recommend keeping this directory under version control to maintain a history of your AI interactions. However, if you prefer not to version these files, you can exclude them by adding this to your `.gitignore`:
```
.specstory/**
```
We recommend __not__ keeping the `.specstory/ai_rules_backups` directory under version control if you are already using git to version your AI rules, and committing regularly. You can exclude it by adding this to your `.gitignore`:
```
.specstory/ai_rules_backups
```
## Searching Your Codebase
When searching your codebase, search results may include your previous AI coding interactions. To focus solely on your actual code files, you can exclude the AI interaction history from search results.
To exclude AI interaction history:
1. Open the "Find in Files" search in Cursor or VSCode (Cmd/Ctrl + Shift + F)
2. Navigate to the "files to exclude" section
3. Add the following pattern:
```
.specstory/*
```
This will ensure your searches only return results from your working codebase files.
## Notes
- Auto-save only works when Cursor or VSCode flushes sqlite database data to disk. This results in a small delay after the AI response is complete before SpecStory can save the history.
## Settings
You can control auto-saving behavior in Cursor or VSCode:
1. Open Cursor/Code → Settings → VS Code Settings (Cmd/Ctrl + ,)
2. Search for "SpecStory"
3. Find "Auto Save" setting to enable/disable
Auto-save occurs when changes are detected in the sqlite database, or every 2 minutes as a safety net.