Skip to content

Releases: Erik1028/focal

Focal v2.1 - sharper capture, new name and icon

Choose a tag to compare

@Erik1028 Erik1028 released this 04 Jul 07:17

PhoneCam is now Focal — same app, new name and a fresh iPhone‑camera‑style icon.

✨ What's new

🎥 Sharper, lighter capture (v2.1)

  • Frame‑perfect draw loop. The phone now redraws exactly once per camera frame (via requestVideoFrameCallback) instead of up to 2–4× on 120 Hz ProMotion iPhones — less CPU, less battery, smoother capture. A built‑in watchdog guarantees the video can never freeze (it re‑primes the callback, and falls back to the old loop if anything stalls).
  • Snappier server. The virtual‑camera bridge moved its per‑frame colour conversion off the event loop, so incoming video is serviced with less jitter — most noticeable on higher‑resolution / higher‑fps feeds.

🎨 New name & icon

  • Focal, with a realistic camera‑lens icon. Your saved settings, the trusted certificate on your iPhone, and everything else carry over untouched — only the visible name changed.

📦 Install

  • Focal-SingleFile.exe — one file, nothing to unzip. The first run unpacks to %LOCALAPPDATA%\Focal (progress bar, ~20 s); every later run starts instantly. SmartScreen may warn → More info → Run anyway (unsigned, not harmful).
  • Focal-Portable.zip — the classic folder; extract anywhere and run Focal.exe.

Upgrading from PhoneCam? Just run the new app and reload the phone page once (⟳). Your iPhone keeps trusting the same certificate — no re‑setup needed.

PhoneCam v2.0 — left-edge controls, zoom readout, sharper picture

Choose a tag to compare

@Erik1028 Erik1028 released this 04 Jul 05:52

A round-number release: a couple of handy controls plus a small picture-quality bump.

📱 Phone UI

  • Left-edge quick controls. A small cluster (Grid · Mirror · Dim) now lives on the left edge, so in a two-handed landscape grip your left thumb has controls too — the zoom and lens pills are on the right, and the left was empty. Grid and Mirror stay in sync with the same switches in Settings; Dim moved here from the top bar (shown only while streaming), tidying the top-right.
  • Zoom readout. While you pinch or drag the zoom, a big glassy zoom number (e.g. 2.4×) appears and fades — the camera-app touch that was missing.

🎥 Picture quality

Two standard webcam tweaks that make the image a touch crisper at no cost:

  • The stream now hints to the encoder that it's a mostly-static talking head, so it spends its bits on sharpness rather than smoothing.
  • Higher-quality scaling on the zoom/detail/filter path (better interpolation).

For the biggest jump in sharpness, also try Detail zoom (v1.9) and nudge the bitrate up in Settings.

📦 Install

  • PhoneCam-SingleFile.exe — one file, nothing to unzip. SmartScreen may warn → More info → Run anyway (unsigned, not harmful).
  • PhoneCam-Portable.zip — the classic folder; extract and run PhoneCam.exe.

Upgrading? Replace the app and reload the phone page once (⟳).

PhoneCam v1.9 — Detail zoom (hi-res sensor-crop)

Choose a tag to compare

@Erik1028 Erik1028 released this 03 Jul 14:45

Adds Detail zoom — sharper zoom that uses more of the sensor.

🔍 Detail zoom (opt-in)

Normally zoom crops a 1080p frame and upscales it, which gets soft. Detail zoom instead captures the back camera at its maximum resolution and crops the output from that — the same "sensor crop" idea the iPhone's own camera uses for its 2× on the 48MP main sensor. The result is lossless up to the sensor/output ratio (e.g. a 4K capture sent at 1080p gives a clean ~2× before any softening; at 720p output, up to ~3×). Even at 1× the image is a touch crisper (supersampled).

  • Turn it on in Settings ▸ Camera ▸ Detail zoom. It tells you the actual capture size your phone gave, so you can see whether it helped.
  • It's opt-in on purpose: a high-res capture uses more battery and, on some iPhones, the 4K format runs at 30 fps instead of 60. It's a no-op (no downside) on devices that cap the browser camera at 1080p.

The sent resolution and bandwidth are unchanged — only the source the zoom crops from gets bigger.

(This went through an adversarial review; a few edge cases were fixed before release — no 4K frames ever hit the stream, the stats badge shows the true sent size, and a viewer-join race was hardened.)

📦 Install

  • PhoneCam-SingleFile.exe — one file, nothing to unzip. SmartScreen may warn → More info → Run anyway (unsigned, not harmful).
  • PhoneCam-Portable.zip — the classic folder; extract and run PhoneCam.exe.

Upgrading? Replace the app and reload the phone page once (⟳).

PhoneCam v1.8 — Liquid Glass phone UI

Choose a tag to compare

@Erik1028 Erik1028 released this 03 Jul 14:01

A Liquid Glass makeover for the phone camera page.

🪟 Liquid Glass

The floating controls — status pill, stats badge, icon buttons, corner Stop, lens pills, the zoom slider, the toggles, the More sheet, toasts and cards — are retextured as Apple-style Liquid Glass: a stronger frosted blur that picks up and refracts the colours behind it, a bright specular highlight along the top edge, and soft depth. The Start button gets a glossy sheen and the zoom knob a subtle gradient.

Tuned for a real webcam, not just looks:

  • The tint stays dark enough that white text (lens labels, stats) stays readable over any background — bright scenes included.
  • The blur strength is moderated so it doesn't tax the GPU/battery on long streams (the glass re-blurs the live video behind every control, every frame).

Purely visual — nothing about streaming, quality, or the controls changed. All the reliability and design fixes from v1.6–v1.7 are included.

📦 Install

  • PhoneCam-SingleFile.exe — one file, nothing to unzip (first run unpacks ~20 s, later runs instant). SmartScreen may warn → More info → Run anyway (unsigned, not harmful).
  • PhoneCam-Portable.zip — the classic folder; extract anywhere and run PhoneCam.exe.

Upgrading? Replace the app and reload the phone page once (⟳).

PhoneCam v1.7 — phone design polish + camera-blocked recovery card

Choose a tag to compare

@Erik1028 Erik1028 released this 03 Jul 13:44

A phone design polish release — small refinements from a design-focused review of the camera page, plus one real usability fix.

✨ On the phone

  • "Camera blocked" recovery card. If Safari is blocking the camera (once you've tapped "Don't Allow", it never asks again), you no longer hit a dead-end — a persistent card shows the exact steps to fix it (aA → Website Settings → Camera → Allow) until you're back up.
  • The framing grid stays visible over bright scenes. It used to fade out against white/bright video — exactly when you need it. It now has a subtle dark outline.
  • Consistency & feel: the zoom slider now matches the same frosted-glass style as the other edge controls; the corner Stop has a softer red edge; lens pills, toggles and the zoom chip now give a little press animation when tapped; and selection highlights ease in instead of snapping.
  • Small touches: the quality caption under Start gets a ⚙ hint and lines up under the button; a one-time tip points out the corner ■ Stop; and reduced-motion users now get a calmer experience (no shutter flash or focus-ring pop).

No changes to how streaming works — this is all visual/UX. The reliability fixes from v1.6 are included.

📦 Install

  • PhoneCam-SingleFile.exe — one file, nothing to unzip (first run unpacks ~20 s, later runs instant). SmartScreen may warn → More info → Run anyway (unsigned, not harmful).
  • PhoneCam-Portable.zip — the classic folder; extract anywhere and run PhoneCam.exe.

Upgrading? Replace the app and reload the phone page once (⟳).

PhoneCam v1.6 — reliability fixes (vcam reconnect, wake-lock, OBS recovery)

Choose a tag to compare

@Erik1028 Erik1028 released this 03 Jul 13:02

A reliability release — nine bugs found by a whole-codebase adversarial audit, all fixed. No feature changes.

🛠️ What's fixed

  • The virtual camera no longer freezes when the phone reconnects at a different resolution (or you rotate the phone). Previously the webcam was locked to the first resolution it saw, so a Stop→Start at a new quality left Discord/OBS stuck on the last frame until you restarted the app.
  • The phone won't sleep mid-stream anymore. iOS drops the screen wake-lock every time you switch apps or pull down Control Center; it's now re-acquired when you return, so a long unattended stream keeps running.
  • Dim mode's battery saving actually sticks — a camera recovery behind the black overlay used to silently resume the preview; it now stays paused.
  • OBS / the PC preview recover on their own if the video connection drops while the signaling link stays up (previously a frozen browser source until you refreshed it).
  • Auto-bitrate no longer "sticks" low — a temporary congestion dip could get saved as your bitrate and cap the next launch; your slider setting is what persists now.
  • PC app: switching the virtual-camera backend (or regenerating the certificate) can no longer be interrupted into staying down; cleaner startup/shutdown and a "Restarting…" state so a mis-timed click can't derail it.

📦 Install

  • PhoneCam-SingleFile.exe — one file, nothing to unzip (first run unpacks ~20 s, later runs are instant). SmartScreen may warn → More info → Run anyway (unsigned, not harmful).
  • PhoneCam-Portable.zip — the classic folder; extract anywhere and run PhoneCam.exe.

Upgrading? Replace the app and reload the phone page once (⟳).

PhoneCam v1.5 — preview-first PC app (video fills the window, floating controls)

Choose a tag to compare

@Erik1028 Erik1028 released this 03 Jul 05:26

A preview-first PC app — the phone's picture now gets the whole window.

🖥️ Redesigned desktop window

  • The video fills the entire window. The old fixed side panel is gone.
  • Controls float on top as translucent overlays: connection status (top-left), Settings + Fullscreen (top-right), and a Start/Stop button centered at the bottom (red while live).
  • The QR code, setup steps, virtual-camera selector and tools moved into a Settings panel (gear button, or Ctrl+,). It opens automatically on launch so the QR is right there, and tucks itself away once your phone connects — so while you're on a call it's pure preview.
  • Fullscreen (F11) keeps just the floating controls. The third status light now reads "Webcam" (clearer than the old "Viewer" count).

🧪 Hardening

The redesign went through a multi-agent adversarial review; six issues were fixed before release — including the "Webcam" light no longer showing green when no virtual camera exists, a guard against a first-run certificate race, and Escape correctly leaving fullscreen from the Settings panel. (The overlay-over-video layering was verified against the bundled Qt version.)

The phone page is unchanged from v1.4 (corner Stop, double-tap flip, zoom snap, plain status copy, etc.).

📦 Install

  • PhoneCam-SingleFile.exe — one file, nothing to unzip (first run unpacks itself ~20 s, later runs start instantly). SmartScreen may warn → More info → Run anyway (unsigned, not harmful).
  • PhoneCam-Portable.zip — the classic folder; extract anywhere and run PhoneCam.exe.

Upgrading? Replace the app; reload the phone page once (⟳).

PhoneCam v1.4 — intuitive phone UI (corner Stop, gesture flip, zoom snap)

Choose a tag to compare

@Erik1028 Erik1028 released this 02 Jul 17:14

A big phone-UI intuitiveness release — the camera page now behaves the way muscle memory expects, and it's much harder to fumble.

✨ What's new on the phone

  • Stop moved out of harm's way. It's now a small round button in the top-left corner instead of a big red bar under your thumb — so a mounted phone won't get stopped by accident. The big button is Start-only and disappears while you're live.
  • Double-tap flips the camera (front ⇄ back), like every camera app. The lens pills still pick a specific back lens.
  • Zoom snaps to the lens marks. Let go near 1× and you land on a clean 1× (no more awkward 0.97× crop), and the matching lens pill lights up live as you drag or pinch.
  • Tap the zoom readout to jump back to 1× — tap it again to return to your previous zoom.
  • Plainer status text: "waiting for PC…", "LIVE" — no more "waiting for viewer".
  • Quality caption under the dock (e.g. 720p · 30 fps · 8 Mbps) so you can see your settings at a glance; tap it to open Settings.
  • "Mirror" is now "Mirror preview" so it's clear it only flips your screen, not what the PC sees.
  • A one-time hint after 5 minutes points out the dim-mode 🌙 button.

🧪 Hardening

These changes went through a multi-agent adversarial code review; five issues it found were fixed before release — most notably a case where a wrong/stale access key could leave the page stuck with no working Start or Stop button.

📦 Install

Two flavours, no installation either way:

  • PhoneCam-SingleFile.exe — one file, nothing to unzip. First run unpacks itself (~20 s), later runs start instantly. SmartScreen may warn ("Windows protected your PC" → More info → Run anyway; it's unsigned, not harmful).
  • PhoneCam-Portable.zip — the classic folder; extract anywhere and run PhoneCam.exe.

Upgrading? Replace the app and reload the camera page on your phone once (⟳) — it caches aggressively.

PhoneCam v1.3 — phone UI polish: session timer, dim mode, toasts

Choose a tag to compare

@Erik1028 Erik1028 released this 02 Jul 06:05

A phone-side UI polish release — the camera page is nicer to look at and easier to live with during long streams.

✨ New on the phone page

  • Session timer — the stats badge now shows how long you've been live (8.0Mbps · 12:34), and keeps ticking even while no viewer is connected.
  • Connection health at a glance — the throughput number is coloured green / amber / red based on packet loss and latency.
  • Dim mode 🌙 — a moon button appears while streaming; tap it to black out the screen (great for OLED battery life on long calls). A faint clock shows the elapsed time; tap anywhere to wake. The stream and wake-lock keep running the whole time.
  • Toast messages — status messages now float above the dock and fade out on their own, and they're finally visible in landscape too.
  • Organized settings — the More sheet is grouped into Stream / Camera / Image & framing sections and scrolls when it's taller than the screen (landscape phones used to push the top controls off-screen).
  • Snapshot shutter flash, a one-time gesture hint (pinch to zoom · double-tap switches lens · hold to mirror), and a gently pulsing LIVE dot.
  • The reload button hides while streaming so you can't kill the session by accident, and the top bar can no longer overflow on narrow phones.
  • Bitrate up to 40 Mbps — the slider now goes to 40 (was 20), and a hidden server-side cap that silently limited the virtual-camera path to ~10 Mbps is gone. The slider is now the single real control on every path.
  • Auto-macro works again — iPhones only switch to the ultra-wide for close-up subjects when the virtual combo camera is active; the lens picker was pinning the bare wide lens at 1×, which disabled it. The 1× slot now uses the macro-capable virtual camera.

📦 Install

Two flavours, same app — no installation either way:

  • PhoneCam-SingleFile.exe (new) — one file, nothing to unzip. The first run unpacks itself to %LOCALAPPDATA%\PhoneCam (progress bar, ~20 s); every later run starts instantly. Windows SmartScreen may show "Windows protected your PC" — click More info → Run anyway (it's unsigned, not harmful).
  • PhoneCam-Portable.zip — the classic folder; extract anywhere and run PhoneCam.exe.

See the README for the 2-minute setup (certificate + QR code).

Upgrading from v1.2? Just replace the folder and reload the camera page on your phone (it caches aggressively — use ⟳ once after starting the new server).

PhoneCam 1.2

Choose a tag to compare

@Erik1028 Erik1028 released this 02 Jul 05:40

Bug-fix and performance update. Same setup as always — unzip, run PhoneCam.exe (or just replace your existing folder).

🐛 Fixes (phone page)

  • Lens switches no longer pop. v1.1's seamless switch held the last frame, but applied the new lens's crop to it — so every wide↔tele change visibly jumped out and back in. The crop now flips exactly when the new lens's frames arrive: the switch reads as a clean, brief hold.
  • No more frozen viewers from unlucky timing — adjusting zoom/rotation at the exact moment of a lens switch could wire a dead camera track into the stream; the pipeline now waits out the switch.
  • "Camera lost — retrying…" — if a phone call steals the camera mid-switch, the page says so and keeps retrying with backoff instead of freezing silently on "LIVE".
  • Recovery can't leak into a new session — the camera-recovery timer is cancelled on Stop, so a quick Stop→Start no longer risks two competing camera requests (which could leave the lens locked until reload).
  • Honest zoom UI — a failed lens switch no longer leaves the zoom chip showing a value that isn't real, and the front camera no longer offers a fake 0.5× range.

⚡ Performance (PC side)

  • The virtual-camera feed skips a redundant full-frame copy (~14% less conversion cost per frame at 1080p), decoding now overlaps sending instead of waiting for it, and a leftover per-frame preview hook that burned CPU on nothing was removed. Net: more headroom for smooth 1080p60 into Discord on modest CPUs.

Windows 10/11 · phone and PC on the same Wi-Fi · only video is sent. Full setup in the README.

🤖 Release notes generated with Claude Code