Skip to content

Releases

JACoB 0.2.21-alpha

JACoB 0.2.21-alpha Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 26 Oct 00:46

JACoB 0.2.21-alpha

SDK 16 adds a separate large local storage service for custom tabs.

  • Elite.storage uses the saved tab ID as its private namespace.
  • 128 MiB default quota; 256/512/1024 MiB increases require explicit user approval.
  • 32 MiB maximum object size with chunked binary transfer hidden behind Blob/ArrayBuffer APIs.
  • putJSON, getJSON, putMany, paged list, usage reporting, delete and clear helpers.
  • Large storage is a new Community Tab capability and permission.
  • Tab updates retain local storage; copies/remixes start empty; removing a tab removes its large storage.
  • Community submissions never include local stored data.
  • Elite.store remains unchanged at 512 KiB/value and 2 MiB/tab for small JSON state.

JACoB 0.2.20-alpha

JACoB 0.2.20-alpha Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 19 Oct 18:07

JACoB 0.2.20 Alpha · SDK 15

Steam Deck Vulkan HUD orientation hotfix

  • Corrects the Steam Deck Vulkan HUD Y-axis transform so JACoB's top-left overlay coordinate system maps to the screen correctly.
  • Fixes vertically inverted text, QR codes, and other HUD geometry on the native Steam Deck Vulkan renderer.
  • Restores the startup pairing QR to its intended upper-right position.
  • Windows HUD behavior is unchanged.
  • Adds a regression test that fails if the inverted Vulkan shader transform returns.

SDK

  • SDK/protocol version remains 15.
  • No custom-tab API changes are required.

JACoB 0.2.19-alpha

JACoB 0.2.19-alpha Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 17 Oct 18:38

JACoB 0.2.19 Alpha · SDK 15

Native clipboard

  • Adds Elite.clipboard.info() and Elite.clipboard.writeText(text) for host-native text copying while Elite remains focused.
  • Clipboard access is write-only, bounded to 16 KiB, local-host-only, and protected by its own per-tab permission. Existing clipboard contents are never exposed to tabs.
  • Windows uses Win32 Unicode clipboard APIs. Linux uses the active wl-copy, xclip, or xsel session backend when available.
  • Includes an importable native clipboard diagnostics/example tab and SDK tests.

One-scan startup pairing

  • During a LAN-enabled JACoB startup, the HUD waits for an Elite-sized surface and then shows a SCAN TO PAIR JACoB QR for a full 30 seconds.
  • The QR contains a random 192-bit, one-time token. It never contains the reusable pairing key.
  • Scanning it enrolls an ordinary non-admin, non-remembered browser credential and immediately redirects into JACoB. The QR disappears after a successful scan and the token expires after first use or 30 seconds.
  • The startup QR uses the same Windows and Steam Deck/Linux HUD layer system as custom-tab overlays and stays isolated on an internal JACoB layer.

SDK

  • SDK/protocol version is now 15.
  • Browser, installed Markdown reference, packaged reference, and security notes are refreshed for 0.2.19.

JACoB 0.2.18-alpha

JACoB 0.2.18-alpha Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 17 Oct 15:13
acfc953

JACoB 0.2.18 Alpha

This release is mostly about getting Steam Deck support onto solid ground and cleaning up a lot of the plumbing underneath JACoB.

The big change is the new Steam Deck HUD system. JACoB now renders HUD elements directly through a Vulkan layer inside Elite instead of relying on Decky/CEF overlays. This fixes the scaling, transparency, focus, and composition problems we were fighting with the old approach.

Vision also now gets a clean copy of the Elite frame before the JACoB HUD is drawn. That means the player can see a HUD on screen while Vision, OCR, and Game View still receive the untouched game image.

Steam Deck

  • New Vulkan-based in-game HUD renderer
  • HUD works correctly through Gamescope at the Deck's native 1280×800 resolution
  • JACoB HUD elements are excluded from Vision and OCR captures
  • Decky Loader is no longer required
  • New shared Vulkan transport between Elite and the JACoB core
  • Steam launch integration starts JACoB alongside Elite
  • Desktop Mode can launch JACoB independently for setup, pairing, and configuration
  • Old Decky HUD installations are cleaned up during installation/update
  • Bundled OCR runtime for Steam Deck
  • Gamescope/PipeWire and X11 capture remain available as fallback paths

HUD / Overlay

The Steam Deck renderer now uses the same HUD2 scene system as the rest of JACoB, including:

  • Text
  • Lines and polylines
  • Rectangles, circles, and polygons
  • Reticles, brackets, chevrons, arcs, and rings
  • Metrics, panels, and progress indicators
  • Opacity, glow, outline, shadow, dash, font weight, and other HUD effects
  • Pixel and normalized coordinate spaces
  • HUD themes including cockpit, clean, legacy, and high-contrast

This gives custom tabs a much more reliable base for things like race guidance, mining overlays, navigation tools, targeting aids, and other in-game displays.

Vision

Vision on Steam Deck now prefers the Vulkan pre-HUD capture path when the renderer is active.

The important result is simple:

What the commander sees: Elite + JACoB HUD
What Vision sees: Elite only

Custom tabs still never receive raw screenshots. They request analysis through JACoB and receive only the resulting data.

General

  • Continued cleanup of Linux and Steam Deck platform code
  • Improved Steam Deck installation and update behavior
  • Better Desktop Mode browser launching
  • Preserved user settings and custom tabs during managed reinstall/update
  • Additional HUD transport and renderer tests
  • Updated Steam Deck packaging and build pipeline

This is still an alpha release. The Steam Deck Vulkan renderer has now been tested successfully in Elite, including simultaneous on-screen HUD rendering and clean Vision capture.

JACoB 0.2.17-alpha

JACoB 0.2.17-alpha Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 15 Oct 11:18
c6174c4

JACoB 0.2.17-alpha — Steam Deck recovery build

This release repairs the Steam Deck/Linux package path and adds the first working Deck Vision capture backend.

Steam Deck

  • Linux release binaries are now built natively on Linux with CGO enabled.
  • Restores the existing X11/XWayland + Gamescope HUD backend that previous release builds accidentally excluded.
  • Adds verified Elite-window capture through X11/XComposite for Game View and Vision on Steam Deck/Linux.
  • Capture reuses JACoB's Elite foreground verification and never falls back to desktop/monitor capture.
  • Adds a .flatpak Steam Deck installer bundle. Open it in Discover, install, and launch once; it installs the native core and configures Elite's Steam launch options automatically.
  • The native JACoB core still runs outside the Flatpak sandbox so uinput, Gamescope overlays, journal discovery and in-app updates retain their normal host access.

Notes

  • OCR remains platform-dependent; this release targets canonical frame capture and Vision analysis first.
  • The X11/XComposite capture path is intended for Steam Deck Gaming Mode's Gamescope/XWayland stack. It should fail closed if Elite cannot be positively identified.

Steam Deck field hotfix

  • HUD windows now use Gamescope's normal secondary STEAM_GAME=359320 window path instead of competing with Mangoapp for the single GAMESCOPE_EXTERNAL_OVERLAY slot.
  • Linux input focus verification now has a native X11/Gamescope probe, including XGetInputFocus fallback for Proton child windows, while still failing closed when another app is positively focused.
  • Steam Deck launcher marks the JACoB process with the Elite app id for diagnostics.
  • Flatpak packaging disables unnecessary debug-symbol splitting of the prebuilt Go executable.

JACoB 0.2.16-alpha — HUD2 / SDK13

Pre-release

Choose a tag to compare

@github-actions github-actions released this 12 Oct 16:26

JACoB 0.2.16-alpha — SDK13 / HUD2

This release replaces the Windows HUD's legacy color-key renderer with a per-pixel alpha GDI+ renderer and adds the first HUD2 semantic scene system.

HUD2

  • True per-pixel transparency on Windows.
  • Antialiased text and vector geometry.
  • Cached render surface to avoid reallocating the HUD every update.
  • Fractional opacity, glow, text outline, drop shadow, font weight, italics, dashed lines, and rounded rectangles.
  • Scene themes: legacy, cockpit, clean, and highcontrast.
  • Semantic roles for consistent tab styling.
  • Semantic primitives: metric, panel, progress, reticle, bracket, chevron, arc, and ring.
  • Existing SDK12 overlay scenes remain valid.
  • New HUD Studio tab for visual verification and tuning.

Cleanup and validation

  • Overlay validation is centralized before platform rendering.
  • Common semantic primitives are expanded in shared core code so platform renderers stay smaller.
  • Windows surface allocation is cached and only rebuilt when the Elite client size changes.
  • Added focused tests for color parsing, backward compatibility, semantic expansion, theme validation, and HUD2 capability metadata.
  • Hotpatch workflow validates formatting, JavaScript syntax, go vet, full tests, Windows builds, installer build, and git diff --check before committing.

This is still an alpha release. Use HUD Studio first before converting production tabs to heavier glow/effect use.

JACoB 0.2.15-alpha

JACoB 0.2.15-alpha Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 11 Oct 14:05

JACoB 0.2.15-alpha

Hotpatch against the 0.2.14-alpha / SDK 11 distribution.

  • Adds persistent manual overrides for the Elite journal folder, the user bindings folder, and one or more shipped ControlSchemes folders. The Settings UI validates paths before saving them. Environment-variable overrides remain supported and take precedence.
  • Manual path storage and tests are Unicode-safe, including Cyrillic directory names.
  • Keeps the existing international keyboard design: physical controls use layout-independent scan-code tokens, Windows text entry resolves characters through Elite's active keyboard layout and falls back to Unicode input. Adds Cyrillic UTF-16 regression coverage.
  • Replaces the short Tutorial with a setup walk-through covering core connection, paths, live journal/state, bindings/input, visual services, LAN, and a bundled Diagnostics custom tab.
  • Adds the bundled JACoB Diagnostics tab, installed or refreshed from the Tutorial. It demonstrates the SDK from the same sandbox used by third-party tabs without exporting the scoped Game View media URL.
  • Fixes the Windows Graphics Capture privacy border remaining around borderless Elite after Game View stops. The WGC session now closes after about two seconds without capture requests.
  • Normal Windows updates no longer run firewall repair, request administrator elevation, or show PowerShell consoles. Network Doctor checks run hidden; firewall elevation occurs only after the user explicitly chooses Repair firewall (admin) and JACoB explains the exact rule being changed.
  • Adds Connected devices in Settings. First-time LAN pairing now exchanges the current pair key for a unique per-device credential stored in an HttpOnly SameSite cookie; the server stores only a SHA-256 credential hash. Pair keys rotate on normal JACoB restarts.
  • Host-only Remember me persists that device credential for up to 180 days of inactivity. Unremembered devices are session-scoped and removed after disconnect grace. Host-only Admin grants host-reserved JACoB actions to that device, while device trust management remains physically host-only. Devices can be revoked at any time. Pair enrollment is rate-limited per remote address.
  • Bumps the custom-tab API to SDK 12 with Elite.macros. The Macro Manager is intentionally constrained to quality-of-life use: logistics/menu-navigation built-ins, a 12-step custom limit, no loops or conditionals, recorder-to-macro capture with truncation, a host-accepted responsible-use agreement before edits/custom macros, and host-side serialized execution. Existing SDK 11 namespaces remain compatible.
  • Expands persistent diagnostics: rotating jacob.log now records process/config/service startup, network/firewall/profile snapshots, WebSocket/device lifecycle, recorder and macro lifecycle, API errors, video-stream lifecycle, and Windows Graphics Capture session creation/rebuild/release without logging credentials, typed text, or journal payloads. update.log now rotates and records PID-stamped update stages, service state, actual TCP listener endpoints, Windows network/firewall state, and the no-firewall-mutation policy. LAN-enabled Windows updates verify that the new PID owns a non-loopback listener before declaring success.

JACoB 0.2.14-alpha

JACoB 0.2.14-alpha Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 Oct 19:51

JACoB 0.2.14-alpha — Spatial Mapper / SDK 11

Spatial core

JACoB now has a generic local spatial-mapping service built on the existing Elite-only Vision capture boundary.

  • Persistent visual feature tracks are generated inside the core. Tabs never receive frame pixels or descriptors.
  • Scene-local right-handed coordinates use metres once a range-bearing observation establishes scale.
  • spatial.observe accepts a normalized screen bearing plus an optional metric range and turns semantic targets into 3-D landmarks.
  • Repeated range-bearing observations correct camera drift.
  • Visual tracks are triangulated into anonymous 3-D map points once enough metric baseline exists.
  • Imported scenes can re-associate low-information internal feature signatures and relocalize against their saved map.
  • spatial.project projects a saved 3-D landmark back into canonical Elite-frame coordinates for HUD sighting cues.
  • Scene export/import is JSON-safe so a custom tab can persist a map with Elite.store.

SDK 11

New tab API:

const scene = await Elite.spatial.begin({ horizontalFovDeg: 80, maxWidth: 480 });
await Elite.spatial.update(scene.scene);

await Elite.spatial.observe(scene.scene, {
  landmark: 'rock-17',
  screen: { x: 0.61, y: 0.44 },
  rangeM: 1284,
  confidence: 0.96
});

const pose = await Elite.spatial.pose(scene.scene);
const aim = await Elite.spatial.project(scene.scene, { landmark: 'rock-17' });
const saved = await Elite.spatial.export(scene.scene);

Spatial methods use the existing Vision custom-tab permission. No new capture permission or desktop capture path is introduced.

Important behavior

The first release is intentionally confidence-aware. It does not claim centimetre-level SLAM. Metric scale is established by range observations, visual odometry carries the scene between anchors, and repeated known landmarks tighten the solution. Tabs should use the returned pose.confidence, trackingQuality, and scene state before drawing strong guidance cues.

SDK 11 utility services

The same SDK 11 release now also includes reusable services extracted from the BOXEL/map-anchor work:

  • Elite.net.fetchQueued() and Elite.net.fetchBatch() provide core-wide polite request scheduling, bounded retries, conditional GET caching, and ordered batches.
  • Elite.galaxy parses procedural names, decodes/encodes ID64 values, changes a boxel sequence number, and exposes base/parent/physical boxel hierarchy geometry.
  • ID64 values cross the SDK boundary as decimal strings so JavaScript cannot round them.
  • Elite.store.update() uses compare-and-set retries; Elite.store.batch() commits a set/delete group atomically.
  • Elite.catalog.system.get() adds a provider-explicit shared system lookup/cache. SDK 11 initially supports Spansh.
  • Elite.video.close(element) explicitly detaches an active game-view stream from an element and closes that browser stream request.

JACoB 0.2.13-alpha

JACoB 0.2.13-alpha Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 Oct 17:30

JACoB 0.2.13-alpha — LAN Network Doctor

Mobile/LAN reliability

  • Adds a host-only Network Doctor for listener, bind, LAN-address, Windows network-profile, and firewall diagnostics.
  • Windows installs and managed updates reconcile a scoped inbound rule for JACoB.exe: TCP 6626, LocalSubnet, Private/Domain profiles only, with Public networks excluded.
  • Firewall repair is UAC-assisted and can also be run from Settings → LAN access.
  • JACoB now ranks the default-route/private IPv4 address first instead of presenting VPN/WSL/virtual adapters as equally useful mobile addresses.
  • LAN diagnostics warn when JACOB_LAN and the effective bind contradict each other.
  • Link-local IPv4 addresses are no longer advertised as mobile connection candidates.

Pairing UI

  • Replaces the oversized single QR with two compact local QRs: one for the mobile Connect URL and one for the separate pairing key.
  • Keeps the pairing token out of the URL.
  • Fixes the static Copy button wiring regression in the LAN card.
  • Mobile browsers now distinguish a page that is reachable but unpaired from a fully offline connection.

SDK/API version remains 10.

JACoB 0.2.12.1-alpha

JACoB 0.2.12.1-alpha Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 Oct 12:00

JACoB 0.2.12.1-alpha — SDK 10 reliability hotfix

Automatic update handoff

  • The automatic installer now requires the old JACoB process to actually stop before replacing files.
  • If graceful shutdown stalls, it terminates the requesting PID and then removes any stale JACoB.exe instance.
  • The installer verifies that the JACoB port is free before launching the replacement core.
  • The replacement core must report the expected version and its exact process ID.
  • Failed startup restores the previous executable and verifies that the previous version comes back online.
  • Automatic updates preserve the active data directory and capture/privacy choice.
  • Managed automatic updates refuse portable copies when source-path information is available.
  • %APPDATA%\JACoB\update.log records each handoff step.
  • The installer remains compatible with 0.2.11/0.2.12 cores that use the older update argument set.

Tab HUD ownership

  • Saved-tab overlays are owned by the tab:<id> namespace.
  • Deleting/removing a tab clears the parent layer and every child layer, including Vision debug HUDs.
  • Reloading an edited saved tab clears its previous HUD namespace before the new iframe starts.
  • Navigating away from a tab does not clear its HUD, so persistent companion tabs still work.

SDK/API version remains 10.