You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Phase A gel-physics rewrite made the background feel over-engineered: too coherent under input, too noisy/flashy in rendering, and then too still after coefficient tuning. TinyVectors needs a product-level feel contract before more physics changes.
TinyVectors is an expressive Svelte/SvelteKit background system, not a physics demo. Inputs should bias an already-pleasant ambient flow; they should not seize control of the blobs.
Linear: TIN-853
Feel Contract
Pleasant by default: idle blobs always drift/breathe subtly, never freeze and never jitter.
Inputs are bias fields: device gravity, pointer, and scroll influence the existing flow instead of replacing it.
Gravity is a slow directional bias: tilt should make blobs lean/pool/drift, not behave like marbles falling.
Pointer is local and soft: nearby blobs should react more than distant blobs, with no event capture by the visual layer.
Scroll is transient: scroll should create a decaying impulse/stickiness, not permanent acceleration.
Gel/fluid is visual language: use low-cost inertia, soft repulsion/attraction, and shape deformation rather than a heavyweight fluid simulation.
App-safe by default: SSR-safe, reduced-motion aware, listener-clean, no layout jank, and small enough for in-house SvelteKit backgrounds.
Problem
The Phase A gel-physics rewrite made the background feel over-engineered: too coherent under input, too noisy/flashy in rendering, and then too still after coefficient tuning. TinyVectors needs a product-level feel contract before more physics changes.
TinyVectors is an expressive Svelte/SvelteKit background system, not a physics demo. Inputs should bias an already-pleasant ambient flow; they should not seize control of the blobs.
Linear: TIN-853
Feel Contract
Scope
Non-Goals