Releases: illixion/SpatialStash
Releases · illixion/SpatialStash
0.1.0-6ece8b7a
- Update Xcode on GH runner
- Update screenshots
- build-and-sign: support EXTRA_BUILD_SETTINGS from the signing conf
- Build info: -dirty hash suffix, optional BuildInfo.xcconfig include
- Make remote slideshow window size restoration reliable
- Fix video duration race stalling remote slideshow imageReady
- Unify flip into the adjustments popover; fix JXL background-removal restore
- Fix remote slideshow stalling on animated images in 3D mode
- Prevent blank flash when slideshow switches to animated image or video
- Restore custom window size after visionOS cold relaunch
- Document RoboFrame protocol ref and no-client-advance constraint in CLAUDE.md
- Stop local-advancing remote slideshows; let the server drive switching
- Report video clip length in imageReady so long clips delay the slideshow
- Only send remote slideshow imageReady for active windows
- Make remote slideshow purely server-driven
- Let the server fully track the current tag list
- Advertise raw aspect ratio in slideshowConfig
- Suppress remote viewer spinner while a video is playing
- Prevent native video controls flashing on load when hidden
- Add reshuffle button to remote viewer; simplify tag list button
- Make slideshow tag list per-window and per-profile
- Fix slideshow wedging in .loading after network aborts
- Add video support to the slideshow
- Quick Look 3D: press-grow gesture, progressive load, atomic handoff
- Quick Look 3D: side menu, z-lift over diorama, reduce-motion fade
- Replace 3D thumbnails with long-press Quick Look preview
- Add spatial 3D thumbnail style alongside diorama
- Skip global viewing-mode defaults on restored pop-outs
- Fix visibility reporting across reconnect + flutter
- Hide ornaments on restored pop-out windows
- Debounce ratio-driven slideshowConfig re-sends
- Fix stuck Remote slideshow + send per-window ratio
- Skip resize on 3D adjustment preview branch mount
- Update default values in build script
- Remove unused variable
- Prewarm 3D adjustment preview, hide sharpen when meaningless
- Combine global + per-image adjustments, fix 3D 2D-preview blank
- Skip 3D regen when only opacity / sharpen changes
- Guard mod tag preset binding against stale indices
- Expose slideshow 3D mode in remote preset Display section
- Send lowmem on slideshowConfig (always false here)
- Survive slideshow window close mid-Spatial3DImage generation
- Preserve diorama foreground's full source-frame canvas
- Render diorama layers via GPU-private MTLTextures
- Remove Home Assistant web overlay from the remote viewer
- Trim slideshow look-ahead on system memory warning
- Pause video ornament auto-hide while a menu or popover is open
- Restore 3D adjustment regen against CPU-released image data
- Push slideshow adjustments through Metal shader and Spatial3D bake
- Render slideshow via Metal textures, add animated WebP support
- Promote debug logs to info while in-app console is open
- Gate slideshow imageReady WS event on RealityKit depth-map completion
- Toggle slideshow 3D/Immersive 3D in place instead of regenerating
- Fire slideshow 3D nudge mid-crossfade instead of after it
- Wire slideshow 3D taps through a targeted-entity gesture
- Extend slideshow tap target to the full window
- Let taps through the slideshow 3D layer for ornament toggle + nudge
- Fix slideshow 3D hidden-slot stalls after a missed peek
- Stop slideshow 3D peek shift from clobbering the pre-generated slot
- Add Fully Immersive 3D mode for the photo viewer
- Add slideshow 3D mode with per-mode resolution caps
- Pin auto-3D pill width so button text never wraps
- Clear IPC off-axis blur via 1pt window nudge on tap and resume
- Re-apply
@Observableon RemoteViewerModel subclass - Actively recover the remote channel on scene resume
- Scope setTagList to a session so the server can per-channel it
- Reframe auto-3D pill as a Yes/Never switch prompt
- Decouple spatial 3D source resolution from 2D display cap
- Restyle tab bar ornament with Liquid Glass and crossfade tabs
- Replace chip-based associations with collapsible inline list
- Give tag/performer chips their own focus region and bigger touch target
- Add pinch-and-hold to copy on Stash info window fields
- Keep remote viewer ornament alive while mod tag preset input is open
- Treat last 3D viewing mode as no preference for default-3D
0.1.0-c6a25f65
- Decouple spatial 3D source resolution from 2D display cap
- Restyle tab bar ornament with Liquid Glass and crossfade tabs
- Replace chip-based associations with collapsible inline list
- Give tag/performer chips their own focus region and bigger touch target
- Add pinch-and-hold to copy on Stash info window fields
- Keep remote viewer ornament alive while mod tag preset input is open
- Treat last 3D viewing mode as no preference for default-3D
- Stabilize swipe gesture modifiers so 3D window survives UI auto-hide
0.1.0-b4a5a2ab
- Stabilize swipe gesture modifiers so 3D window survives UI auto-hide
- Add per-image spatial 3D resolution override
- Treat last 2D viewing mode as no preference for default-3D
- Gate photo swipe navigation on window controls visibility
- Push slideshow interval to RoboFrame on slider change
- Hide diorama layers while the history grid is open
- Replace per-window history with shared /history.json store
- Queue slideshow advances instead of flashing failure placeholder
- Await diorama pair before slideshow crossfade
- Lift slideshow overlays above diorama foreground plane
- Probe with ping on scene-phase wake instead of forcing reconnect
- Stop WebSocket reconnect storm at the actual root cause
- Stop WebSocket reconnect storm on instant ENOTCONN
0.1.0-cf67a288
- Add per-image spatial 3D resolution override
- Treat last 2D viewing mode as no preference for default-3D
- Gate photo swipe navigation on window controls visibility
- Push slideshow interval to RoboFrame on slider change
- Hide diorama layers while the history grid is open
- Replace per-window history with shared /history.json store
- Queue slideshow advances instead of flashing failure placeholder
- Await diorama pair before slideshow crossfade
- Lift slideshow overlays above diorama foreground plane
- Probe with ping on scene-phase wake instead of forcing reconnect
- Stop WebSocket reconnect storm at the actual root cause
- Stop WebSocket reconnect storm on instant ENOTCONN
- Preserve source frame size in background removal output
- Skip diorama for transparent-background source images
- Pause photo ornament auto-hide while More menu is open
- Gate demo image source behind explicit user confirmation
- Fix diorama bright halo and include thumbnail diorama cache in clearing
- Improve diorama backdrop by replacing heavy blur with morphological fill
- Park WebSocket reconnects when network path is unsatisfied
- Share one WebSocket across viewer windows via session multiplexing
- Replay slideshowConfig on every WebSocket reconnect
- Rebuild URLSession on every WebSocket reconnect
- Harden WebSocket reconnect for sleep/wake and dead sockets
0.1.0-f748109c
- Preserve source frame size in background removal output
- Skip diorama for transparent-background source images
- Pause photo ornament auto-hide while More menu is open
- Gate demo image source behind explicit user confirmation
- Fix diorama bright halo and include thumbnail diorama cache in clearing
- Improve diorama backdrop by replacing heavy blur with morphological fill
- Park WebSocket reconnects when network path is unsatisfied
- Share one WebSocket across viewer windows via session multiplexing
- Replay slideshowConfig on every WebSocket reconnect
- Rebuild URLSession on every WebSocket reconnect
- Harden WebSocket reconnect for sleep/wake and dead sockets
- Persist thumbnail dioramas to disk and load both layers in parallel
0.1.0-c1c7ad04
- Persist thumbnail dioramas to disk and load both layers in parallel
- Restore always-on thumbnail diorama and gate behind a new setting
- Drop main ornament z-lift and tie viewer/slideshow lift to diorama
- Add Reduce Motion setting that mirrors system Accessibility
- Soften diorama transitions in viewers and tame thumbnail hover scale
- Switch thumbnail diorama to scale-on-hover instead of opacity reveal
- Pin hover content shape on diorama overlay so reveal can activate
- Reveal thumbnail diorama only while gaze is on the cell
- Revert "Crossfade gallery thumbnails into diorama mode"
- Crossfade gallery thumbnails into diorama mode
- Revert "Bump gallery thumbnails to 384px"
- Lift tab bar ornament in z so diorama thumbnails don't poke through
- Bump gallery thumbnails to 384px
- Add gaze-driven diorama parallax to gallery thumbnails
- Restore original display before clearing bg removal for diorama / 3D
- Make background removal mutually exclusive with diorama / 3D
- Decouple diorama generation from gallery swipe animation
- Make diorama default robust against 3D restore prompt
- Promote slideshow settings to global defaults
- Update settings labels
- Add Spatial 3D resolution and Diorama Distance settings
- Fix animation issues with prev/next image switching
- Remove multiplexed WebSocket from Remote API, update mod tag UI
- Fix remote API viewer WS multiplexer ignoring display ID
- Diorama: fix ornament occlusion
- Diorama: adjust distance to 25
- Improve websocket reconnect and file download handling
- Update docs
- Drop the
blockedWS frame parser — block lists are server-only now - Move diorama from enhancement to viewing mode + default mode setting
- Slideshow: hide diorama on menu open + anchor ornament below window
- Diorama: subject color extension via CIMaskedVariableBlur to remove halos
- Downgrade diorama foreground generation log from info to debug
- Diorama: replace CIColorKernel firming with CIColorMatrix; force RGBA8 output
- Diorama: revert foreground to blendWithMask, keep firming + decontamination elsewhere
- Diorama: smoothstep mask firming so foreground composites opaquely
- Diorama: firm up mask interior so foreground composites opaquely
- Fix main app window state being cloned incorrectly, fix slideshow image source confusion for local images
- Diorama: revert to forward parallax, hide while ornament menu is open
- Send imageReady so the orchestrator's readiness barrier closes promptly
- Color decontamination kernel + soften mask refinement
- Diorama: push backdrop behind window plane instead of foreground forward
- Diorama: flood-fill enclosed mask holes, tighten backdrop edge
- Diorama: dilate backdrop mask, bias foreground refinement
- Clamp refined mask to [0,1] to fix deep-fried composite
- Refine Vision mask: morphological close + contrast steepen
- Diorama: blur subject in backdrop layer, lower z, hide on popover
- Add Diorama mode — masked foreground popped forward in z
- Add RCAS sharpen + SSAA, preserve deep color, downsample for bg removal
- Surface WS auth failure and broadcast tag list switches
- Add accessToken to remote viewer config
- Block on cold-start wait during remote-driven force-advance
- Trust the engine's prefetched lookahead on playback advance
- Wake prefetch when a
playbackframe queues a new lookahead - Add ModTagManager: locally-curated mod-tag presets, server-applied
- Treat server as source of truth for tag and blocked lists
- Drop the playVideo / stopVideo RPC pathway
- Play notification sounds via the system alert channel
- Fix remote playback startup race
- Drop wsEndpoint config field, log every WS rx + playback decision
- Allow HTTP for Tailscale-only deployments + verbose WS errors
- Adopt RoboFrame's playback channel protocol
- Sync remote viewer with new RoboFrame WebSocket protocol
- Do not show 3D auto restore for snapped windows
- Sync RoboFrame API with release version
- Add A-B loop feature to 2D video player
- Scope video auto-resume to scene-phase transition window
- Implement remote viewer window management and enhance duplicate handling
- Implement window session management and enhance image processing features
- Update build script
- Use local source for prev/next on local image viewers
- Restore Show Debug Console tab visibility toggle
- Move console log polling off the main thread
- Move Settings tab to rightmost position
- Tie console log capture to open console views
- Make slideshow Display tab toggles update live
- Add Dynamic Brightness toggle to slideshow
- Guarantee slideshow advances at the configured interval
- Track slideshow timer precisely across background cycles
- Sync docs with recent viewer and slideshow changes
- Use generic visionOS destination for build command
- Move sensor emoji to the right of the value
- Auto-dismiss 3D restore prompt after 10s and on image switch
- Share WebSocket connections and sync slideshows locally
- Simplify memory management for slideshows to prevent getting stuck
0.1.0-7e7aa817
- Restore always-on thumbnail diorama and gate behind a new setting
- Drop main ornament z-lift and tie viewer/slideshow lift to diorama
- Add Reduce Motion setting that mirrors system Accessibility
- Soften diorama transitions in viewers and tame thumbnail hover scale
- Switch thumbnail diorama to scale-on-hover instead of opacity reveal
- Pin hover content shape on diorama overlay so reveal can activate
- Reveal thumbnail diorama only while gaze is on the cell
- Revert "Crossfade gallery thumbnails into diorama mode"
- Crossfade gallery thumbnails into diorama mode
- Revert "Bump gallery thumbnails to 384px"
- Lift tab bar ornament in z so diorama thumbnails don't poke through
- Bump gallery thumbnails to 384px
- Add gaze-driven diorama parallax to gallery thumbnails
- Restore original display before clearing bg removal for diorama / 3D
- Make background removal mutually exclusive with diorama / 3D
- Decouple diorama generation from gallery swipe animation
- Make diorama default robust against 3D restore prompt
- Promote slideshow settings to global defaults
- Update settings labels
- Add Spatial 3D resolution and Diorama Distance settings
- Fix animation issues with prev/next image switching
- Remove multiplexed WebSocket from Remote API, update mod tag UI
- Fix remote API viewer WS multiplexer ignoring display ID
- Diorama: fix ornament occlusion
- Diorama: adjust distance to 25
- Improve websocket reconnect and file download handling
- Update docs
- Drop the
blockedWS frame parser — block lists are server-only now - Move diorama from enhancement to viewing mode + default mode setting
- Slideshow: hide diorama on menu open + anchor ornament below window
- Diorama: subject color extension via CIMaskedVariableBlur to remove halos
- Downgrade diorama foreground generation log from info to debug
- Diorama: replace CIColorKernel firming with CIColorMatrix; force RGBA8 output
- Diorama: revert foreground to blendWithMask, keep firming + decontamination elsewhere
- Diorama: smoothstep mask firming so foreground composites opaquely
- Diorama: firm up mask interior so foreground composites opaquely
- Fix main app window state being cloned incorrectly, fix slideshow image source confusion for local images
- Diorama: revert to forward parallax, hide while ornament menu is open
- Send imageReady so the orchestrator's readiness barrier closes promptly
- Color decontamination kernel + soften mask refinement
- Diorama: push backdrop behind window plane instead of foreground forward
- Diorama: flood-fill enclosed mask holes, tighten backdrop edge
- Diorama: dilate backdrop mask, bias foreground refinement
- Clamp refined mask to [0,1] to fix deep-fried composite
- Refine Vision mask: morphological close + contrast steepen
- Diorama: blur subject in backdrop layer, lower z, hide on popover
- Add Diorama mode — masked foreground popped forward in z
- Add RCAS sharpen + SSAA, preserve deep color, downsample for bg removal
- Surface WS auth failure and broadcast tag list switches
- Add accessToken to remote viewer config
- Block on cold-start wait during remote-driven force-advance
- Trust the engine's prefetched lookahead on playback advance
- Wake prefetch when a
playbackframe queues a new lookahead - Add ModTagManager: locally-curated mod-tag presets, server-applied
- Treat server as source of truth for tag and blocked lists
- Drop the playVideo / stopVideo RPC pathway
- Play notification sounds via the system alert channel
- Fix remote playback startup race
- Drop wsEndpoint config field, log every WS rx + playback decision
- Allow HTTP for Tailscale-only deployments + verbose WS errors
- Adopt RoboFrame's playback channel protocol
- Sync remote viewer with new RoboFrame WebSocket protocol
- Do not show 3D auto restore for snapped windows
- Sync RoboFrame API with release version
- Add A-B loop feature to 2D video player
- Scope video auto-resume to scene-phase transition window
- Implement remote viewer window management and enhance duplicate handling
- Implement window session management and enhance image processing features
- Update build script
- Use local source for prev/next on local image viewers
- Restore Show Debug Console tab visibility toggle
- Move console log polling off the main thread
- Move Settings tab to rightmost position
- Tie console log capture to open console views
- Make slideshow Display tab toggles update live
- Add Dynamic Brightness toggle to slideshow
- Guarantee slideshow advances at the configured interval
- Track slideshow timer precisely across background cycles
- Sync docs with recent viewer and slideshow changes
- Use generic visionOS destination for build command
- Move sensor emoji to the right of the value
- Auto-dismiss 3D restore prompt after 10s and on image switch
- Share WebSocket connections and sync slideshows locally
- Simplify memory management for slideshows to prevent getting stuck
- Fix slideshow view tap gesture not toggling ornament visibility
- Use SF 7 symbols for 3D icons
0.1.0-603e37fc
- Fix slideshow view tap gesture not toggling ornament visibility
- Use SF 7 symbols for 3D icons
- Replace auto-3D restore with opt-in prompt pill and fix ornament UX issues
0.1.0-d30792b3
- Consolidate ornament controls with metadata viewing/editing and multi-select
- Handle animated WebP rendering and split 3D auto-restore setting
- Fix incorrect bundle id used
- Fix background unload running when slideshow is paused or not backgrounded
- Restart Ken Burns animation when returning from background
- Replace ad-hoc timer management with state machine in SlideshowEngine
- Fetch tags.json from API endpoint when remote viewer opens
- Refactor slideshow into modular engine with shared tag list management
- Add description to releases
- Add local build script
- Fix GIF slideshow playback and add slideshow button to video ornament
- Add video and animated GIF support to slideshow player
- Refactor slideshow: fix first image display, filter passthrough, local source, and add interval slider
- Fix restore of remote slideshow list on reboot and slideshow history
- Fix extra issues in remote slideshow
- Fix remote slideshow race conditions causing stuck first image and spurious restarts
- Update .gitignore
- Replace rename functionality with copy option for remote slideshow configurations
- Restrict server list overrides to "Server Decides" configuration
- Fix timing issue in remote slideshow search fetch, add default list option
0.1.0-1c1c1dba
- Replace auto-3D restore with opt-in prompt pill and fix ornament UX issues
- Consolidate ornament controls with metadata viewing/editing and multi-select
- Handle animated WebP rendering and split 3D auto-restore setting
- Fix incorrect bundle id used
- Fix background unload running when slideshow is paused or not backgrounded
- Restart Ken Burns animation when returning from background
- Replace ad-hoc timer management with state machine in SlideshowEngine
- Fetch tags.json from API endpoint when remote viewer opens
- Refactor slideshow into modular engine with shared tag list management
- Add description to releases
- Add local build script
- Fix GIF slideshow playback and add slideshow button to video ornament
- Add video and animated GIF support to slideshow player
- Refactor slideshow: fix first image display, filter passthrough, local source, and add interval slider
- Fix restore of remote slideshow list on reboot and slideshow history
- Fix extra issues in remote slideshow
- Fix remote slideshow race conditions causing stuck first image and spurious restarts
- Update .gitignore
- Replace rename functionality with copy option for remote slideshow configurations
- Restrict server list overrides to "Server Decides" configuration