Skip to content

Releases: innotelinc/zapit

zapit v1.4.2

Choose a tag to compare

@innotelinc innotelinc released this 07 Sep 12:20

zapit is the TransferOps edge utility of the Innotel Platform Stack — ephemeral, peer-to-peer file transfer with no storage layer.

v1.4.1

Choose a tag to compare

@innotelinc innotelinc released this 04 Sep 02:37

The real-iPhone-icon release 📱✨ — ZapIt on your Home Screen finally shows the logo instead of a screenshot.

What's new

  • Proper iOS app icon — iOS ignores SVG apple-touch-icons (and manifest icons), so iPhone/iPad installs fell back to a blurry page snapshot. The logo is now rasterized to a real 180×180 PNG (icon-180.png) and wired into the head as the apple-touch-icon, with a matching PNG favicon and service-worker cache entry. Re-add to Home Screen to pick up the new icon (delete the old tile first if the snapshot is cached).

Notes

  • Icon rendered from public/icon.svg via librsvg — no visual redesign, same bolt.
  • Web app shell cache bumped to include the new icon.
  • Tests: smoke 44/44.
  • Images: ghcr.io/innotelinc/zapit:1.4.1 (also :latest).

Full Changelog: v1.4.0...v1.4.1

v1.4.0

Choose a tag to compare

@innotelinc innotelinc released this 04 Sep 02:26

The install-on-iPhone + leave-room release 📱 — ZapIt now guides iPhone users onto their Home Screen and lets you disconnect cleanly.

What's new

  • Install works on iPhone/iPad now — Safari never shows an automatic install prompt, which is why the button only appeared on desktop/Android. ZapIt now detects iOS and keeps the header Install button visible, with a tap-by-tap Share → Add to Home Screen guide (it hides itself once you're running from the Home Screen). Desktop/Android keep the native browser prompt.
  • ✕ Leave room — disconnect cleanly when you're done: peers are told you left, the rotation countdown stops, the QR drops back to the bare app address, the ?room= param leaves the URL — and you can pair a new code anytime. No more force-closing the tab.

Notes

  • Wire protocol unchanged — safe in-place upgrade.
  • Server untouched (peer-left already broadcast on socket close); this is client-side only.
  • Tests: browser-sim 28/28, smoke 44/44, infisical 8/8.
  • Images: ghcr.io/innotelinc/zapit:1.4.0 (also :latest).

Full Changelog: v1.3.1...v1.4.0

v1.3.1

Choose a tag to compare

@innotelinc innotelinc released this 04 Sep 01:33

The scan-and-join release 📲 — the QR code now tracks your room, so a phone scan joins instantly without typing the code.

What's new

  • Room-aware QR code — previously the QR always encoded the bare app address; anyone scanning still had to type the room code. Now the QR refreshes automatically the moment a code is entered or paired (typing, Pair, Random, New code, and automatic room rotation) and encodes ?room=<code>, so a scan lands already paired. The QR, the Share button, and the address bar URL always agree.
  • /api/lan accepts ?room= — the server sanitizes the code exactly like the WebSocket join (lowercase, [a-z0-9-] only, 24-char cap) and bakes it into the encoded target, with the same QR customization rules (PUBLIC_URL / QR_URL) respected.

Notes

  • Client-side zero-dependency — QR generation stays server-side via the existing qrcode package.
  • Wire protocol unchanged — safe in-place upgrade.
  • Images: ghcr.io/innotelinc/zapit:1.3.1 (also :latest).

Full Changelog: v1.3.0...v1.3.1

zapit v1.3.0

Choose a tag to compare

@innotelinc innotelinc released this 04 Sep 00:03

The secret-ops + installable release ⚡📲 — Infisical-backed secrets, an installable PWA, and one stack that runs the landing page and the app together.

Highlights

  • Infisical (SecretOps) integrationADMIN_PASSWORD and AUTHENTIK_CLIENT_SECRET now accept infisical:// references, resolved at boot before the admin hash is computed; plain values are mirrored up to Infisical on startup. Zero-dependency client (zapit/infisical.js) with unit tests; the INFISICAL_* env contract is documented in the stack doc.
  • Installable phone app (PWA)manifest.webmanifest + sw.js app shell make ZapIt installable to an iPhone or Android home screen (standalone window). New Share and Install buttons in the header: room-link sharing via the Web Share API with clipboard fallback; install prompt capture with an Add-to-Home-Screen hint. Mobile CSS pass with safe-area insets and 44px touch targets.
  • Landing + app in one Docker stackdeploy/docker-compose.prod.yml now builds and runs both the static landing page (zapit.innotel.us, nginx on 8080) and the ZapIt app (zapp.innotel.us, WebSockets on 5150) from this repo. The app's canonical origin moved to zapp.innotel.us; QR codes, OIDC redirect URIs, and the Authentik blueprint all follow.
  • Container startup fix — the image previously crashed at boot (Cannot find module './infisical') because the Dockerfile never copied the new module; CI only ran live-node tests so the broken image shipped. infisical.js is now in the image and the prod stack boots healthy.
  • Droppy remnants removed — legacy DROPPY_DATA_DIR fallback and README compatibility notes are gone.
  • Repo standardized to the portfolio — attribution guard, themed landing page (TransferOps ⚡), stack role doc, Infisical setup scripts, Pages workflow, and badges all match the other Innotel repos.

Notes

  • App origin change: the transfer app now lives at https://zapp.innotel.us; zapit.innotel.us serves only the landing page. Re-point any bookmarks/shortcuts, and re-apply the Authentik blueprint if you used SSO (redirect URI changed).
  • The prod compose builds from source (up -d --build) rather than pulling the GHCR image.
  • Wire protocol unchanged since v1.2.1 — safe in-place upgrade.
  • Images: ghcr.io/innotelinc/zapit:1.3.0 (also :latest).

Full Changelog: v1.2.1...v1.3.0

zapit v1.2.1

Choose a tag to compare

@innotelinc innotelinc released this 03 Sep 20:35

The gold lightning release ⚡⚡ — Zeus-mode branding across every surface.

Highlights

  • Golden ZAPIT wordmark — uppercase with authority: bold 800 weight, wide tracking,
    gold-sheen shimmer and a breathing glow.
  • The bolt of Zeus — heavier jag with a deep-gold gradient (champagne #fffbeb
    amber #f59e0b → bronze #92400e), glow-pulse, and crackling lightning-tick sparks.
  • App icon — rounded-square tile (/icon.svg) with the golden bolt; wired as the
    favicon everywhere and as the Open Graph / Twitter card image.
  • Gold action surface — Zap it, Pair, and Save all as ZIP wear gold gradients with
    breathing glow; Zing it, Random, and ↻ New code glint gold on hover; the room input
    focuses with a gold ring.
  • Drop zone — the folder emoji is now the animated bolt with lightning ticks; the
    zone flashes gold on drag-over.
  • QR code — framed in a glowing gold border with a lightning bolt twinkling in each
    corner; the enlarged modal gets a gold rim too.
  • Admin page — the card wears the same gold frame with corner lightning, gold Unlock
    button, gold links/inputs — zero cyan remains anywhere.
  • Wordmark logo — standalone animated logo.svg (served at /logo.svg) embedded in
    the READMEs; motion tuned weightier (slower pulse, softer glow ceiling).
  • All animation continues to respect prefers-reduced-motion.

Notes

  • UI/branding only — no wire-protocol changes from v1.2.0; safe drop-in upgrade.
  • Images: ghcr.io/innotelinc/zapit:1.2.1 (also :latest).

Full Changelog: v1.2.0...v1.2.1

zapit v1.2.0

Choose a tag to compare

@innotelinc innotelinc released this 03 Sep 20:03

The zing release ⚡ — flashy new identity, a zing-native wire protocol, and real-world deploy docs.

Highlights

  • Flashy bolt logo — hand-drawn gradient SVG (yellow → cyan → indigo → purple) with a
    glow-pulse animation, twinkling sparks, and a shimmering wordmark on the app and admin
    pages. Matching gradient-bolt favicons. All motion respects prefers-reduced-motion.
  • Zing UI — the text flow is now zing-native: Zap a Zing, Zap it to send
    (breathing glow), Zing it to copy (hover glint).
  • Wire protocol — the 'text' message type is renamed to 'zing'
    ({type:'zing', text, from}; the payload field stays text). Server, client, and tests
    updated together — mixed old-client/new-server rooms are not supported.
  • Deploy bundle — rewritten for the real cross-host topology: zapit publishes 5150 on
    its own host, NPM on a separate box forwards over the LAN by IP (no shared docker
    network, no NPM_NETWORK), including NPM proxy-host/cert instructions and the live
    QR_URL example.

Upgrade notes

  • Breaking: wire protocol 'text''zing' — refresh all open tabs when upgrading.
  • New image: ghcr.io/innotelinc/zapit:1.2.0 (also :latest).
  • Deploy docs: if you used the old NPM_NETWORK compose, switch to the new bundle
    (published port + NPM forward-host by LAN IP).

Full Changelog: v1.1.0...v1.2.0

zapit v1.1.0

Choose a tag to compare

@innotelinc innotelinc released this 03 Sep 19:15

zapit is the new name for droppy ⚡ — same zero-login, P2P file zapping, new identity.

Highlights

  • Renamed droppy → zapit across the app, UI, package metadata, Docker images
    (ghcr.io/innotelinc/zapit), CI, Authentik blueprints, and docs.
  • Customizable QR code — new QR_URL env var sets the link address the QR code
    encodes (vanity domain, alternate proxy entry, pre-filled join link…). Defaults to
    PUBLIC_URL or the LAN URL; the caption and tooltip follow it.
  • DROPPY_DATA_DIR is still honored as a fallback for ZAPIT_DATA_DIR, so existing
    deployments keep their state across the upgrade.

Upgrade notes

  • New image name: ghcr.io/innotelinc/zapit (CI now publishes there on every push).
  • Authentik blueprint env var renamed: DROPPY_CLIENT_IDZAPIT_CLIENT_ID
    (blueprint default client id: zapit).
  • Docker compose service/volume renamed to zapit; re-run docker compose up -d to pick
    up the new container name (old droppy-data volumes are not migrated automatically).
  • Deploy bundle: set PUBLIC_URL=https://zapit.innotel.us (or your domain) and update
    the Nginx Proxy Manager host + DNS to match the new name.

Full Changelog: v1.0.0...v1.1.0

droppy v1.0.0

Choose a tag to compare

@innotelinc innotelinc released this 03 Sep 09:26

First public release. ⚡

Highlights

  • Zero-login transfers — open the URL on two devices, same room code, drop files
  • P2P via WebRTC with automatic server-relay fallback; live mode: p2p / mode: relay indicator
  • Multi-file & folder drops arrive as one ZIP, assembled in the browser (zero dependencies)
  • Text snippets alongside files
  • Room expiry — codes auto-rotate when idle; manual ↻ New code button
  • QR pairing with PUBLIC_URL support (advertise your canonical domain, e.g. https://droppy.innotel.us)
  • Optional Authentik SSO (OIDC + PKCE) with an admin kill-switch persisted across restarts
  • One-click Authentik blueprintGET /api/authentik/blueprint or authentik/blueprint.yaml for GitOps
  • Docker: non-root image, healthcheck, multi-arch (amd64/arm64) builds to GHCR, tests gate every build

Usage

docker run -d -p 5150:5150 -e ADMIN_PASSWORD=secret ghcr.io/innotelinc/droppy:latest

Full docs: droppy/README.md