v0.9.6 — Studio Fix & Local Vec Optimization
Studio File Browser Fix
The Studio sidebar has been broken since v0.9.0 when Dioxus was upgraded from 0.6 to 0.7. The root cause: Dioxus 0.7 no longer serves files from the assets/ directory directly. The OPFS web worker (opfs-worker.js) and stylesheet (style.css) were silently 404ing, which broke the file browser UI.
The fix moves these files to public/assets/ where Dioxus 0.7 serves them at the same URLs the app expects. Additionally, robots.txt, sitemap.xml, and _redirects move from assets/ to public/, eliminating the manual copy step that was patched into deploy-frontend.yml.
Local Vec Optimization
A new escape analysis pass (collect_escaping_collection_vars) identifies collection variables that never leave the function boundary — they're not returned, not passed to other functions, and not stored in structs. These "local" collections are now stored as plain Vec<T> instead of LogosSeq<T> (the Rc<RefCell<Vec<T>>> wrapper), providing zero-overhead indexing without the indirection and runtime borrow checking of RefCell.
Borrow Parameter Optimization
Readonly Seq<T> parameters now emit &[T] borrows instead of cloning the entire collection. Mutable-only parameters emit &mut [T]. The borrow type propagates through aliases — if a parameter is aliased to a local variable, the local inherits the borrow type. This pairs with the existing call-graph-based readonly analysis to eliminate unnecessary allocations at function boundaries.
Peephole Pattern Updates
The peephole optimizer's slice, push, extend, and drain patterns have been updated to handle both Vec<T> and LogosSeq<T> source types, ensuring optimizations fire regardless of whether a collection was determined to be local or escaping.