pip install exiting 0 is not evidence the gateway environment is usable (D-24) — a resolved-but-broken dependency or a stale venv from another Python both look identical to a clean install at the point setup exits. End the target with a cheap positive check instead: collect the test suite (imports every src module each test pulls in) and confirm ruff and mypy resolve inside the venv, the only place either binary exists. Also states explicitly, in a comment, that setup covers the gateway half only — the firmware half needs `source ~/esp-idf/export.sh` in every shell, which a Makefile recipe cannot leave sourced in the caller's shell, so build-firmware sources it itself instead.
65 lines
2.6 KiB
Markdown
65 lines
2.6 KiB
Markdown
# Changelog
|
||
|
||
All notable, user-facing changes to DeskLock are documented in this file.
|
||
|
||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
||
DeskLock is pre-release and unversioned; entries accumulate under **Unreleased**
|
||
until the first tagged release.
|
||
|
||
## [Unreleased]
|
||
|
||
### Changed
|
||
|
||
- One Makefile at the repo root now drives firmware, gateway and sim; `gateway/Makefile` is
|
||
removed. `make test` means the same thing from any directory.
|
||
- Firmware targets source `~/esp-idf/export.sh` themselves, so `idf.py` resolves without
|
||
having to remember. Override the location with `IDF_EXPORT=`.
|
||
- `make setup` now proves the gateway environment actually works instead of trusting a
|
||
clean `pip install` exit code: it collects the test suite and checks `ruff`/`mypy`
|
||
resolve in the venv, and fails the target if any of that is broken (T-47).
|
||
|
||
## [0.2.2] — 2026-07-19
|
||
|
||
### Changed
|
||
|
||
- The gateway's default Tatlock URL is now `http://tatlock:8000` (docker
|
||
container name) — the retiring `tatlock.schweitz.internal` domain is gone
|
||
from config and docs. Deployments setting `DESKLOCK_TATLOCK_BASE_URL` are
|
||
unaffected.
|
||
|
||
## [0.2.1] — 2026-07-15
|
||
|
||
### Fixed
|
||
|
||
- A spoken volume command no longer leaves the face stuck in the thinking
|
||
spinner — the feedback gong is a UI cue and no longer holds the busy state,
|
||
so the return-to-idle isn't swallowed.
|
||
- The butler filler line reads as one phrase instead of two — reworded to "Let
|
||
me check on that, sir." to avoid a text-to-speech pause before "for you".
|
||
|
||
## [0.2.0] — 2026-07-15
|
||
|
||
### Added
|
||
|
||
- After a request, the butler immediately says "Let me check on that for you,
|
||
sir" and keeps a spinner up while it works, so the long wait isn't dead air.
|
||
- Spoken volume commands ("volume up/down", "mute/unmute", "set volume to N",
|
||
"this one goes to eleven") are handled instantly on the gateway, bypassing the
|
||
assistant — no waiting on a reply just to change the volume.
|
||
- Tap the screen to reveal on-screen controls — a microphone button plus volume
|
||
down/up and a live level bar, using Phosphor icon glyphs. Tapping the dimmed
|
||
backdrop dismisses them.
|
||
|
||
### Fixed
|
||
|
||
- Fixed the blue-screen flicker during voice activity — the matrix rain now
|
||
renders as cheap pre-rendered sprites, and the DSI clocks/FIFO are tuned, so
|
||
the display's memory reads are no longer starved by Wi-Fi and audio DMA.
|
||
|
||
### Changed
|
||
|
||
- Volume is now an 0–11 scale (it goes to eleven) with a gong cue on each change
|
||
and a little "11" that floats off the bar at maximum.
|
||
- Matrix rain is drawn from a reused pool of pre-rendered streak sprites instead
|
||
of live text labels, and eases off while the device is listening or speaking.
|