English | 中文
Fusheng Paoying is a local-first Three.js memory bubble space for browsing personal photos and videos in the browser. It turns selected media files into floating bubbles, lets you open a random memory, and keeps the files on the current device instead of uploading them.
- Local-first photo and video import through the browser file picker.
- Floating Three.js bubble scene with focus, hover, and random-memory interactions.
- Short-term Web/PWA shell with manifest metadata, app icons, and conservative app-shell caching.
- Mobile runtime tuning for touch input, reduced motion, constrained devices, and WebGL recovery.
- Flat, panorama, and cube background upload modes with dimension validation.
- Optional ambient music with attribution stored in the repository.
- Deterministic layout and media helpers covered by Node tests.
Requirements: Node.js 20 or newer.
npm install
npm run devOpen the local Vite URL, choose Add memories, and select image or video files from your device.
- Click Add memories to import photos or videos.
- Click a bubble to focus it, then close the focused view to return to the space.
- Use Random encounter after adding media to open a memory without browsing manually.
- Open settings to change motion strength, bubble size, audio, and background mode.
The app processes selected files in the current browser session. It does not include a server upload path or remote storage.
npm test
npm run build
npm run preview
npm run test:smokeSource files live in src/, static assets live in public/, and tests live in tests/. Generated output in dist/, local scratch work, and personal process notes are ignored.
See docs/platform-support.md for the short-term desktop/mobile/PWA support matrix, release checks, and known platform limits.
public/audio/Dreamy Flashback.mp3: "Dreamy Flashback" by Kevin MacLeod, licensed under Creative Commons Attribution 4.0. See public/audio/CREDITS.md.public/textures/panorama/pond-bridge-night.jpg: "Pond Bridge Night" by Greg Zaal / Poly Haven, licensed as CC0. See public/textures/CREDITS.md.- User-selected photos and videos remain user-provided content and are not committed to this repository.
Before opening a pull request, run:
npm test
npm run buildVisible UI changes should include screenshots or screen recordings in the pull request description.
Released under the MIT License.