The Finally neon F
Field Manual

FINALLY

offline · local · yours — the VR video player that respects your library, your network, and your hands.

covers v0.3.5 · quest + galaxy xr · july 2026

Get Finally on the Meta Horizon Store →

01 · basics

Start here

Point the laser. Pull the trigger. That's most of Finally.

The vault is your library. Open a folder to dig in. Open a title to play. Everything happens inside VR — you only ever drop to a flat screen when you explicitly ask for the 2D file pickers.

InputWhat it does
BMenu on / off — never exits the app
TriggerClick what you point at · open the quick HUD while playing
APlay / pause
Stick ← →Seek

One-controller law. Everything critical in Finally works with a single hand. Left-hand buttons are conveniences, never requirements.

02 · muscle memory

Controls

The full map. B is sacred — it only ever toggles the menu.

ActionInput
Menu on/offB only. Lobby = vault UI; playing = video cockpit
Click / confirmTrigger (when the menu is open)
Play / pauseA — or Trigger when the menu is closed
MuteGrip + A
SeekStick ← → (either hand)
Zoom (immersive)Stick ↕ with the menu closed · range 0.5×–2.6×
Flat: distanceStick ↕ — a physical dolly. Flat video is an object in your room, never a FOV trick
Flat: window sizeGrip + Stick ← → — shrink / enlarge in place
List navigationStick ↕ with the menu open
Prev / next titleGrip + Stick ↓ / ↑
Drag the world (dome)Trigger + Grip — grab-the-world
Dome dolly (VR180 / fisheye)Stick ↕ — push forward leans the scene closer. True translation, not optical zoom
Full resetStick click — zoom 1×, distance home, height and drag zeroed, content on gaze
Eye swapY (left hand) — also the Eyes cell on PLAY
Move the menu panelPoint at it + hold Grip + move your hand
Menu pull / pushWhile grip-holding: Stick ↕ slides it along the ray
Resize the menuWhile grip-holding: Stick ← →

Haptics: a hover tick and a click pulse on the pointing hand, with a VIBE toggle on SETUP. Hard rule: grip away from the panel does nothing — no accidental grabs.

Galaxy XR note. Quest binds the full Touch controller profile. Galaxy XR runs the same map through the standard controller profile — laser, trigger, menu, and transport all behave identically.

03 · the lobby

The Club

♡ FINALLY CLUB — your vault, floating in a neon room (or your real one).

The Club is where you land. Titles list in the center; favorites wear a ; folders glow gold. Aim and trigger to open anything.

The chip row

ChipWhat it does
▲ UP ▼ DNScroll the vault
↻ SCANRescan your sources for new files
◎ ROOMPassthrough — the vault floats in your real room. Saved as your default
✦ WORLDCycle the lobby environment — bundled worlds plus your own (see Worlds)
★ FAVPin the selected title to favorites

Setup without leaving VR

⚙ SETUP opens the sources panel in the same room — no screen switch, no splash. It shows every source Finally knows (auto folder + scans + NAS shares).

Only one door leads out of VR: FOLDERS, which intentionally drops to the 2D library for the Android folder and NAS pickers (those dialogs are system UI and can't render in-headset). Everything else keeps you inside.

LEAVE exits to your headset home — labeled LEAVE → QUEST on Quest and LEAVE → HOME on Galaxy XR. On the empty first run the vault says so: "Vault is empty — tap ⚙ SETUP for sources, or drop files in Movies/Finally and ↻ SCAN."

04 · while playing

The Cockpit

Press B during playback: five pages of controls on one floating panel.

PLAY

The transport. Timeline scrubber, -30s / -5s / PLAY / +5s / +30s (the small step is adjustable in SETUP), ■ STOP, ◆ CLUB to return to the lobby, speed, volume, mute, Eyes (L·R ⇄ R·L), the preset AUTO/MANUAL toggle, passthrough, A·B·C·D loop marks, PREV/NEXT, and the quick lens row (VR180 · VR360 · Flat · SBS · OU · AUTO).

A lighter version of this strip — ◀ CLOSER, FARTHER ▶, ◎ ROOM, speed, volume, loops — summons on a bare Trigger pull, so the common moves never need the full panel.

PLACE / EYES

Where the scene sits and how your eyes meet it. Sliders for scene height, move scene (left/right), distance, zoom, depth position (stereo convergence), eye height align, scene tilt, and screen curve (flat titles only — 0 to ~100° of cylindrical wrap, saved per title). Plus flip left/right, flip up/down, Reset place + eyes, and the full manual lens row — see Lenses.

COLOR / KEY

Brightness, contrast, saturation trims with a one-tap reset — and the entire passthrough keying suite: master passthrough toggle, packed-alpha matte, four-color chroma key with per-color edge controls. Detailed in Your room.

SETUP

Seek step size, menu distance and size, theme, menu spawn (at gaze or fixed origin), default-SBS-for-180 toggle, skip intro, resume on/off, stick zoom direction (pull = smaller by default, flippable), wrist-roll dome tilt, haptics — and the lying-down suite: tilt follow rolls the picture with your head so it stays upright to your face instead of the room (lie on your side; the movie comes with you — menus and laser stay world-anchored), and menu level makes the cockpit spawn gravity-level instead of matching your head tilt.

HELP

The in-headset version of this manual: subjects on the left, article on the right, stick ↕ scrolls. It also hides two extra chapters this page only summarizes — THEORY (teal) and DEEPER (green). See Theory.

Nothing decorative. A cockpit toggle must never be a placebo — if a switch is visible, it does something real. That's a design law, not a promise.

05 · the projection brain

Lenses & projection

Filenames hint the shape. Untagged files use the real frame geometry. Your fixes stick per title — forever.

Every VR video is a flat rectangle of pixels that has to be wrapped back into a world. Get the wrap wrong and the scale, depth, and edges all lie to you. Finally reads the filename, checks the frame, picks a projection — and when it can't know, gives you manual overrides that persist.

The lens family

LensFOVWhat it is
VR180180°Equirectangular half-dome — the standard stitched VR180 format
VR360360°Equirectangular full sphere
FISHEYE180°Plain circular fisheye disk — unstitched lens image
FE190190°190° fisheye — SLR originals and the Canon lens family
MKX200200°SLR MKX lens (plus a RAW variant)
MKX220220°Wider MKX lens
VRCA220°VRCA lens correction
FlatA 2D panel in your room — optionally curved, never warped

180 vs 190 — yes, they're different. Same fisheye disk, different lens coverage. A 190° file played on a 180° mesh looks subtly zoomed-in with warped edges; the reverse looks shrunken. When something's off but you can't name it, audition the lens row.

Canon RF 5.2mm dual-fisheye (rf52) exports are treated as stitched VR180 — Canon's EOS VR Utility outputs equirect, so that's where those files belong.

AUTO, MANUAL, and the consent card

Finally's override system exists to kill a disease other players have: silently forgetting your fixes, or silently fighting the filename. The rules:

  • AUTO (default): identity is re-derived from the filename and frame every open — detector improvements and renames stay live.
  • The first big manual change on a tagged file asks once: OVERRIDE (manual settings for this file) or KEEP AUTO (follow the filename preset).
  • Choose OVERRIDE and your settings beat the filename forever — surviving reopens, rescans, and app updates.
  • AUTO leads both lens rows as the escape hatch — one tap hands the file back to the detector. Nobody gets trapped in MKX land.

06 · reference

Filename tags

Deo-compatible and then some. Tags are case-insensitive; separators are _ - . space ( ) [ ].

Projection / lens

TagsResult
180 vr180 180x180VR180 equirect
360 vr360VR360 equirect
fisheyeFisheye 180°
fisheye190 fe190Fisheye 190°
mkx200 · mkx200rawMKX 200° (raw variant kept distinct)
mkx220MKX 220°
vrca220 vrcaVRCA 220°
rf52 rf5.2 canonrf52 dualfisheyeStitched VR180 (Canon workflow)
flat 2dFlat panel
fb360VR360 (Facebook spatial-audio marker)

Stereo packing

TagsResult
sbs lr 3dh sidebysideSide-by-side
rlSBS with swapped eyes (Deo convention: right eye in the left half)
ou tb tab 3dv overunderOver-under
btOver-under, swapped eyes — unless it's sitting next to a colorimetry token like bt709 / bt2020, which don't count
hsbs half-sbs · hou half-ouHalf-width / half-height variants
monoOne image to both eyes. Whole-token only — Kimono and Monolith are safe

Untagged fisheye-family files default to SBS — that's how the ecosystem ships them.

Extras

TagsResult
_alpha passthroughPassthrough hint — arms the packed-alpha / chroma path
flip fliph · flipvHorizontal / vertical flip

07 · your library

Sources & NAS

Three ways in: the auto folder, any folder you pick, and your NAS over SMB.

The zero-setup path

Drop files into Movies/Finally on the headset and hit ↻ SCAN. Done.

Folders and single files

The 2D library (reached via FOLDERS) adds any folder through the system picker, single files, and sidecar import/export. Clear vault removes library rows only — it never deletes files on disk or NAS.

NAS / PC share (SMB)

Finally treats SMB2/3 as a first-class library source — stream straight off your PC or NAS over Wi-Fi, no copying.

  1. On your computer, share a folder (Windows: Properties → Sharing).
  2. Put some videos in that folder.
  3. Note the PC's IP (e.g. 192.168.1.151) and the share name (e.g. Media) — not the full path.
  4. Headset and PC on the same Wi-Fi / home network.
  5. Turn off any VPN on the PC if connect fails.

Then: 2D library → + Add NAS share → host, share name, an optional Folder (e.g. media/vr — scans just that subfolder instead of crawling a big share), Windows username + password, port 445. Hit Scan and the vault labels those titles NAS · your-host. Credentials are stored encrypted, on-device, keyed to that share — never in plain preferences, never in any cloud.

Network scans also skip music album art automatically (cover.jpg, folder.jpg, fanart, and any thumbnail-sized still) — a share with a music library won't flood your vault with sleeve scans. Folders you add directly keep every still you pointed at.

Share name, not path. The most common connect failure is typing C:\Media where the share name goes. Use the short name only. Second most common: a VPN on the PC eating local discovery.

What plays

Video: mp4 mkv mov webm avi wmv m2ts ts mpg vob 3gp and friends. Stills: jpg png webp heic avif bmp and friends.

Hardware decode up to 8K where the headset allows. Audio decodes in hardware when possible and falls back to FFmpeg software for AC-3, E-AC-3, and DTS — so MKV rips are not silent. Sidecar notes (*.finally.json) carry projection, prefs, and resume position with the title itself, matched by content hash — your fixes travel with the file, not with an account.

08 · mixed reality

Your room

Passthrough puts the video in your actual space. The keying suite makes it belong there.

Toggle ◎ ROOM in the lobby (persisted as your default) or PASSTHRU while playing. Then, on COLOR / KEY:

Chroma key — up to four colors

◆ MULTI-PICK samples a key color from the frame itself — point the laser at the green screen, pull the trigger. Each of the four color slots gets independent tolerance (tight ↔ wide), edge (sharp ↔ feather), and bleed (none ↔ clean) sliders. A pixel is removed when it matches any enabled color.

Packed alpha

Titles tagged _alpha in the SBS fisheye family carry their own transparency matte packed into the frame corners. The ALPHA cell decodes it directly — with optional override sliders for trim, choke, sharpen ↔ feather, and defringe when the source matte needs cleanup.

Rule of the suite: chroma without a color picker is forbidden. You will never be asked to type an RGB value in VR.

09 · environments

Worlds

The lobby dome is an 8K 360 photo — and it's a drop-in slot.

The ✦ WORLD chip cycles the lobby environment through the bundled worlds plus anything you put in Movies/Finally/environments — any equirect 360 image (jpg / png / webp, up to 8192×4096). Drop a skybox in the folder and it's a world. Your selection persists across sessions.

AI skybox generators, panorama apps, and 360 cameras all output exactly this format — your lobby can be anywhere.

10 · stills

Photos

Same vault, same lenses, same dome — full resolution.

Stills live in the library beside videos and project through the identical lens system: a VR180 photo wraps the half-dome, a flat photo is a panel you can place and curve. The transport row politely dims (◆ PHOTO) since speed and seek mean nothing to a photograph. Camera originals render at full sensor resolution on the dome — up to 8192px wide.

11 · playback

Loops, speed & sound

A–B loops, and then some

Set A, then B — hard loop. Add C and Dcascade: A→B jumps to C, C→D jumps back to A, forever. Seek far past an end marker to escape; Clear wipes the marks; loops reset when you change titles.

Speed

0.25× to 3×, pitch-corrected, from the PLAY page or the quick HUD.

Sound

Volume rides the quick HUD and the PLAY page; Grip+A mutes. Multichannel tracks that the headset can't decode in hardware (AC-3, E-AC-3, DTS) fall back to software so they play anyway. Silent MKV is a bug, not a feature.

12 · skins

Themes

Eight cockpit skins. Two of them are love letters to air traffic control.

ThemeCharacter
NightDeep club black, neon accent — the default
ClubWarmer, pinker, stage-lit
DeoFor the switchers — familiar blues
ZNY CenterMustard-on-black ERAM console
N90 TRACONSTARS radar green
Ash AirfoilHouse colors
Boiler UpOld gold and black
Hometown HeroVarsity royal blue and white

13 · devices

Quest vs Galaxy XR

Meta QuestSamsung Galaxy XR
LaunchStraight into the Club (when your vault has titles)Library first — tap ENTER THE CLUB
PassthroughMeta passthrough layerSystem blend-through — same controls, same keying
RefreshMatched to content: 24 fps → 72 Hz, 30 → 90, 60 → 120Same matching with a 72 Hz floor (the micro-OLED panel flickers at 60)
Exit labelLEAVE → QUESTLEAVE → HOME
ControllersTouch — full map incl. Y eye-swapStandard profile — every control still reachable via menu

One vault, one brain, one manual — the app is the same on both. NTSC rates (23.976 / 29.97 / 59.94) count as their round siblings for refresh matching.

14 · troubleshooting

Fix it

SymptomFix
Warped shapePLAY → AUTO to re-detect — or audition the lens row (a "slightly zoomed" fisheye is usually 180 vs 190)
Double visionPLAY → Eyes · or AUTO
Eye strainPLACE / EYES → depth position and eye height · Reset place + eyes
Ends instantlyResume was at the last frame — the next open starts clean
Silent MKVShouldn't happen — software decode covers AC-3 / DTS. Check mute and volume, then report it
NAS won't connectShare name not path · same network · VPN off on the PC · check share permissions
File won't openFinally names the reason in plain language — a truncated download is the usual culprit

Still stuck? coldbricks@gmail.com — reports go to a person, not a queue.


appendix · the teal chapter

Theory of Operation

HELP tells you which button to press. Theory tells you why the picture looks the way it does.

Inside the headset, the HELP page hides two extra chapters: THEORY (teal) and DEEPER (green). They're engineering notes, not marketing — a guided walk from "what is pitch, roll, yaw" all the way down to why the runtime stores your head's orientation as four floats on a 3-sphere. This page keeps the map; the full articles live in the app.

SubjectThe idea
AxesPitch · roll · yaw — aviation named the triad; your headset reports it every frame
6DoFYou move six ways; a video file captured light from one point. Finally locks the projection to your head and refuses to invent rays that were never recorded — honest 6DoF
VisionTwo eyes ~63 mm apart; SBS/OU routes each half-frame to the right one. Swapped eyes = inverted depth = nausea — hence the Eyes control
MappingFlat panel vs equirect dome vs fisheye disk. When shape looks wrong, the map is wrong — not your eyes
PipelineSource → detect → decode → project → compose. No cloud hop anywhere in the chain
DEEPERUnit quaternions, coordinate frames, gimbal lock, and the linear algebra your neck already believes
“A quick word…” — the essay hiding in the THEORY chapter

Somewhere past the pipeline diagrams sits a personal essay: on loving math, on what school did to it, on why SOHCAHTOA was a door and not the house, why JPEG is trigonometry being polite, and why Euler's identity is the reason the dome doesn't jitter when you nod.

It ends like this: "Beauty is not decoration on top of rigor. Beauty is the rigor when you finally see it whole. And please… don't blame SOHCAHTOA for your hatred of math. It was an unfair story. Lol."

— Dave

Read the whole thing in the headset: HELP → THEORY → A word…

15 · the promise

Privacy & about

No account. No cloud. No analytics. Airplane mode is fine.

Your vault, your settings, your NAS credentials — all of it stays on your hardware. The network is used exactly once: to stream from sources you configure, on your network. Full policy: coldbricks.github.io/finally/privacy.

Decode: MediaCodec hardware path with decoder fallback; FFmpeg software audio where hardware can't. Sisters: Finally is built alongside ChloeVibes and ChloeVR in the same shop.

DEVELOPED AND BUILT IN NEW YORK
BY THE PERSON WHO NEEDED A BETTER APP