Back to Drone Zone — deep field
SOURCE / PINNED RELEASE

Made of little things.

Drone Zone — deep field

Release
578f277a8be1
Author-recorded commit
a96742b428de…
License
LICENSE
Author’s source reference
nostr://npub1n8ga89w8h6tvwamxusfyzexw8gjy84yxu9rxgnmk955cxtml4ujswzxydd/wss%3A%2F%2Fgit.napplet.soy%2F/n-9753e6cf3ec

Archive hash verified: f7f3bf8ff3482551. The source-to-build association is the author’s claim; it has not been independently rebuilt.

docs/build-spec.md
# Drone Zone diorama

nappletType: drone-zone-player
purpose: Explore a living, layered galaxy artwork while listening to the linked Drone Zone station.
NAPs used: common, outbox, media, link, theme, config (all optional)
requires: none — the bundled artwork works without a host capability.
SDK helpers: common.decodeNip19; outbox.query; media.createSession/onState/onCapabilities/sendCommand/destroySession; link.open; themeGet/themeOnChanged; config.subscribe/openSettings.
data flow: decode the supplied station address, query its exact kind/author/d-tag through OUTBOX with Wavefunc as a routing hint, parse the newest matching event's JSON streams, immediately request shell-owned live playback with autoplay. Preserve paused sessions when refreshing metadata. The shell handles browser sound activation when required; the napplet reflects its playback state without repeatedly requesting play.
optional fallbacks: decoded static address if common is absent; retry/external station handoff if station lookup fails; Wavefunc link if media is absent; defaults if config/theme are absent; no external link control if link is absent.
relay escape hatches: none.
config schema: motion amount, star density, fog, optical distortion, tape wear; no registration, existing static schema mechanism.
interop: none.
density: 13px controls, 4/8/12px spacing; fine decorative telemetry within the artwork is intentionally smaller. Artwork is edge-to-edge; no app heading.
tiers: tiny=scene/play/reset/zoom; compact=scene/short player/tools; regular=observation overlays/player/telemetry; wide=expanded field and fine route data; short-height=hide secondary readouts.
minimum size: none.
theme: runtime colors cover html/body/root and UI tokens. The photographic artwork retains its original colors like an image viewer; instrument overlays retain the map palette in both runtime themes, as requested.
states: resolving / ready / buffering / playing / paused / lookup error / audio unavailable are honest inline player states. No identity needed.

## Art direction and interaction

The supplied galaxy is bundled at `src/assets/galaxy_1.jpg`. A small local WebGL shader folds the photograph into straight-edged depth slices, with a Canvas 2D fallback. Perspective-projected routes, beacons, glints and foreground stars sit above it. Fog and chromatic displacement are restrained; no strobing. Coordinates and transit progress are an artistic simulation. Scientific annotations identify constants, not measurements inferred from the photograph.

Pointer/touch drag and two-axis wheel scrolling pan the field. Pinch, Ctrl/Meta+wheel and +/- zoom within a bounded range. Pointer motion produces subtle camera drift. Arrow keys work only on the focused artwork. Buttons give keyboard access to observation nodes, home, freeze, and hidden controls. Reduced-motion preference disables ambient motion and distortion by default. Rendering stops in hidden documents; teardown releases subscriptions and GPU resources.

## Source and runtime findings

- NIP-19 decoded with the installed nostr-tools: kind 31237, pubkey `210f31b6019f5ae13c995c8d83faa41a129f1296842e4c3313ab8a4abb09d1a2`, d-tag `960eb2e9-0601-11e8-ae97-52543be04c81`, no embedded relays.
- Station format: https://github.com/zeSchlausKwab/wavefunc/blob/main/SPEC.md — `content.streams[]` contains URL, MIME, quality and primary preference.
- Installed @napplet/nap 0.28.0 ships shell-owned media sessions. The soyLI integration note does not list media among host grants; actual host behavior must be tested and reported. Never emulate a missing streaming grant with app-owned network access.

## Second visual pass

- Thicker hierarchical route strokes, approximately 300 paths across multiple spline families, with real branch endpoints and explicit gaps. Traveling signals disappear while crossing a missing segment.
- Selective highlight expansion in the photograph; muted shadows remain. The photographic patch fades into surrounding deep space as the larger field is explored, avoiding stretched edge pixels.
- Navigation spans ±2400 × ±1550 world units, zoom 0.55×–3.60×. Additional observations and detailed instrument glyphs reward close inspection.
- Map annotations and every in-frame control share the same luminous, fine-line instrument palette and connector motifs. User-requested art direction: photographic overlays remain legible against the dark artwork in either runtime theme, instead of becoming opaque light panels. Runtime colors still paint html/body/root and tint the instrument tokens.
- Auto-tour starts on the principal drawn highway. It follows the same sampled spline as the visible traffic. Dragging, scrolling, zooming, keyboard navigation, home and observation selection stop it; a visible tour control resumes it. Hidden tabs do not advance it. Reduced motion and zero motion intensity prevent automatic movement.
- Existing Nostr/audio boundaries and optional domains do not change.

## Third visual pass — restrained geometry

- Supersedes the second pass's route density and branch endpoints: 65 highways in three coherent families, each with one broad inflection. Lane offsets follow that same sweep. No wandering waypoint noise, local highway loops or visible terminal spurs.
- Each highway uses 2,049 equal-distance samples. Rendering clips outside the viewport without reducing curve resolution. Ends extend to x ±10,000, beyond every permitted view; pan and zoom limits are unchanged.
- Six planetary systems use analytic closed ellipses rotated in three dimensions, perspective camera projection, distinct near/far orbit strokes and shaded bodies traveling on the actual orbital planes. Orbit tessellation increases with magnification.
- Only three highway breaks remain. Paired directional gate symbols sit at exact gap boundaries at every zoom. Ships briefly flare at entry and cross at 22× speed with a short streak, then resume cruise. Integration splits at boundaries to avoid frame-rate-dependent jumps. Motion settings, freeze and reduced-motion handling apply.
- Background slices have variable widths and spacing, finite unequal lengths following a curved envelope with seeded irregularity, and varying parallax depth. Static properties are baked into a tiny local texture; no external assets or dependencies.
- Auto-tour still starts on the principal highway; its excursion is constrained to the navigable portion of the extended route.

## Fourth visual pass — orbital transfers and continuous slices

- All four added assets (`image.png`, `image1.png`, `image2.png`, `image3.png`) are embedded unchanged and used in seven optical callouts, preserving their aspect ratios. Planetary callouts sit outside the orbital rings with fine connector lines. The original galaxy remains the background.
- Each of the six planetary systems borrows one existing lane from the nearest available highway. The lane bends to the instantaneous x/y/z position of an orbiting body and returns to the same highway. A compact C2 deformation preserves position, tangent and curvature at the shoulders. The principal tour lane and total of 65 lanes remain unchanged.
- Transferred lanes use 4,097 samples. A fixed material coordinate preserves traffic and gap identities as the geometry changes. The original orbit function drives both planet and transfer target, preventing drift between them. Freeze, reduced motion and hidden-document handling also freeze the deformation.
- Three transfers have paired hypertravel gates; two original highway gaps have seeded random lengths 3–4× their previous lengths. The initial short principal gap remains. There are six gaps across the atlas; ships retain entry flashes, 22× crossing speed and a normal-speed exit.
- Supersedes the third pass's separated strips and finite bar ends: the background slices are contiguous horizontally and dissolve vertically through an asymmetric Gaussian envelope. Width/depth variation remains, with lower-amplitude seeded irregularity. Static parameters still use the tiny local texture.

## Fifth visual pass — tape wear and a clear central opening

- Two banks of contiguous slices leave the central photograph untouched by the grill effect. Each bank fades outward and vertically. Curved height/depth profiles retain seeded irregularity, with unequal widths and a slow vertical shift of the photograph inside each slice.
- Slice movement is a small rigid translation. Fade the original and shifted image samples by opacity; never interpolate their coordinates or scale them across the fade. This keeps stars from stretching into diagonal smears at the bank edges.
- The final app surface receives adjustable scanlines, translated grain, a slow tracking band and rare short horizontal slips with red/cyan separation. The filter covers Canvas/WebGL artwork and live HTML controls together. SVG displacement runs only during a slip; the continuous texture uses lightweight overlays.
- Tape wear defaults to 45%; zero disables the treatment. The scene options include a live slider and manual Glitch pulse. The existing static runtime settings schema adds a persistent tape-wear preference.
- The scene supplies the effect's clock. Freeze, zero motion, hidden documents and teardown stop its animation. Reduced-motion preferences disable the visual treatment. No new animation loop, timer, dependency, external asset or host capability is added.