Tags

Tags give the ability to mark specific points in history as being important
  • v0.2.1

    d806f676 · Release 0.2.1 ·
    v0.2.1 — the sound actually comes out
    
    0.2.0 shipped audible proximity feedback that produced nothing audible. The
    synthesiser was correct and the player was healthy; at startup the cue is
    silence, and the silence branch wrote whatever the pipe would accept with no
    pacing, queueing roughly eighteen seconds of it before the first reading
    arrived. Every click then landed behind that backlog. The player now gets a
    bounded buffer and the writer generates from a free-running sample clock, so it
    can never get further ahead than the buffer allows. Measured after: real-time
    throughput, backlog down from 18 s to about 1.3 s.
    
    Four tests now cover the generator without needing a player. The one that
    matters asserts the samples are not all zero — this bug produced valid audio
    nobody could hear, which a code review looks straight through.
    
    Haptics had the same shape of fault on Android and a different cause: passing
    no VibrationAttributes files a pulse as USAGE_TOUCH, which the system discards
    outright when haptic feedback is switched off. Every one of ours was logged as
    "ignored_for_settings, scale: 0.00". Declaring USAGE_ALARM would fire
    regardless, but that setting is the user saying they do not want the phone
    buzzing at them, so the system preference stays authoritative and the UI
    explains the dependency instead. The pulse was also too short to feel on a
    motor with no amplitude control.
    
    Also in this patch: calibration in the app, sound and haptics settings that
    survive a relaunch, and co-travel detection surfaced in the survey.
    
    185 tests.
  • v0.2.0

    v0.2.0 — more than one observer, and something to listen to
  • v0.1.0

    v0.1.0 — first release
    
    A sensor-fusion core in Rust, an Android app, and a Linux CLI sharing one
    filter.
    
    The core carries 109 tests and no dependencies. Every number it produces
    carries its uncertainty, and it declines to answer rather than guess: no fix
    before evidence arrives, no bearing from a narrow sweep, and no distance while
    the posterior is still an annulus centred on the user.
    
    Android runs from 6.0 to 16. Capabilities are probed rather than gated on
    version, and their combination picks a tier — a phone with only a gyroscope
    still recovers direction, because a synthetic aperture needs a stable heading
    rather than a magnetic one.
    
    Verified on a Moto G40 Fusion and on Linux over BlueZ.