Skip to content

Releases: pshycodr/phosphor-cam

v1.1.2

Choose a tag to compare

@pshycodr pshycodr released this 05 Oct 13:16

Version: v1.1.2

  • Front camera preview is now mirrored, like a normal selfie camera
  • Photos and videos now save to the same folder
  • Fixed saving on Android
  • New in-app notifications confirm when a photo or video is saved
  • Faster startup: the font is now bundled with the app instead of downloaded from Google Fonts
  • The app now runs only on Android 11 and above
  • Smaller, optimized build and other internal fixes
  • remove incorrect internet permission

Full Changelog: v1.1.1...v1.1.2

v1.1.1

Choose a tag to compare

@pshycodr pshycodr released this 01 Oct 15:08

Patch Release

Enabled R8

Full Changelog: v1.1.0...v1.1.1

v1.1.0

Choose a tag to compare

@pshycodr pshycodr released this 30 Sep 11:57

Release Notes: Off-Main-Thread Rendering

2026-09-30

Highlights

  • Rendering now runs in a Web Worker. All five render modes (ASCII, dither, halftone, voxel, lines) and the full effects pipeline draw on an OffscreenCanvas owned by a worker, so the UI (sliders, buttons, panels) no longer competes with the render loop.
  • Same renderers, same settings. Existing renderers were adapted rather than rewritten. Rendering logic, settings, and the registry are unchanged.
  • Added: footer in the settings panel.

Added

  • Footer in the settings panel.
  • src/worker/render.worker.ts: owns the canvas and runs the render pipeline.
  • src/worker/renderWorkerController.ts: the only main-thread object that talks to the worker (canvas transfer, frame back-pressure, settings sync, capture and text-export requests, stats).
  • src/worker/protocol.ts: typed messages shared by both sides.

Changed

  • Viewport no longer runs useFrameLoop. It creates the canvas and worker on mount, then a small frame pump hands camera frames to the worker. useFrameLoop is no longer used by Viewport.
  • The canvas is created inside an effect instead of JSX. A canvas can only be transferred to a worker once, so this keeps React StrictMode's double mount from throwing InvalidStateError.
  • Canvas resizing goes through the worker. The main thread can no longer set width/height on the transferred canvas.
  • Performance stats (fps, render time) are posted by the worker every ~20 frames instead of being sampled with Math.random().

Full Changelog

url: v1.0.1...v1.1.0

v1.0.1

Choose a tag to compare

@pshycodr pshycodr released this 29 Sep 12:12

Preparing for F-droid release

this only adds fastlane style metadata, everything else remains same

Full Changelog: v1.0.0...v1.0.1

v1.0.0

Choose a tag to compare

@pshycodr pshycodr released this 27 Sep 10:53

Phosphor Cam v1.0.0

The first Android release of Phosphor Cam.

Phosphor Cam is a client-side camera app that transforms live camera input into ASCII, dithering, halftone, lines, and voxel visuals. Everything runs locally in the browser or Android app.

Highlights

  • First Android release powered by Capacitor
  • Live camera rendering with multiple visual modes
  • Video recording of rendered canvas output
  • Save captured images
  • Copy generated ASCII art to the clipboard
  • Firefox and Safari support (thanks to @mmarinero)
  • PWA support
  • Refactored rendering pipeline
  • Refactored state management
  • Fully client-side processing with no backend required

Android

The Android version packages the existing client-side application as a native Android app while keeping the rendering pipeline in the web layer.
The app can run Fully offline

Download

Download Phosphor Cam v1.0.0 for Android

What's Changed

  • Copy visible ASCII art · #1
  • Video recording · #2
  • UI refactor · #3
  • Firefox/Safari support · #5
  • PWA support · #6
  • Rendering pipeline refactor · #8
  • Android app · #9

Full Changelog

https://github.com/pshycodr/phosphor-cam/commits/v1.0.0