Releases: allofmeng/MSL
Release list
v0.0.18
Full Changelog: v0.0.17...v0.0.18
v0.0.17
v0.0.16
v0.0.15
v0.0.14
v0.0.13
v0.0.12
Share a profile as a QR code. Scan it with any phone, on any network, and the profile downloads as a .json — no app, no account.
How it works
The QR carries a link whose fragment is the profile, gzipped and base64url'd. Two things follow from that, and they are the reason for the design:
- A phone camera opens links. Raw JSON in a QR just shows the scanner a wall of text.
- A URL fragment is never sent to the server, so the receiving page is a static decoder — nothing is uploaded, nothing is stored, and no secret sits on the tablet.
Profiles compress hard: every profile bundled with this skin lands between 448 and 1992 bytes against a QR's 2953-byte budget, notes included. Notes are dropped only when a profile overruns, and one too large even without them says so rather than showing a broken code.
The page is self-hosted at qrshare.c48.cal.decentespresso.com, with a mirror on GitHub Pages. Any copy decodes any link, so moving hosts never invalidates a code already out there.
Where to find it
- SHARE, beside RESET and EDIT on the profile screen.
- Share via QR in the long-press menu on a profile row.
Also in this release
- The five assign-to-favourite buttons were sized with Tailwind classes that were never compiled into
app.css, so they had no width or height at all — each shrank to fit its own digit, giving five differently-sized ovals. They are round again.
Full Changelog: v0.0.11...v0.0.12
v0.0.11
Fixes ported from allofmeng/streamline_project, each verified against this fork's code rather than taken on the commit title. Upstream-specific work (DYE2 plugin distribution, their app-update model, docs) was deliberately left out.
Shots
- A shot ended by the profile running out of frames is no longer reported as "Stopped by weight". Duration is the discriminator: a stop-at-weight cuts a shot short, so a shot that ran the profile's full nominal length was ended by the profile whatever the scale reads. The sequencer path and the gateway-mode reconstruction now answer in one vocabulary, so the same shot reads the same on a Bengle and a plain DE1.
- The volume stop reason could never fire with a scale attached, silencing the setup where volume is the only target there is.
- A shot whose decision frame was lost to a socket blip ended with no message at all; a backstop now reports the reconstructed reason.
Settings that would not stick
- The settings page wrote the workflow directly without touching the shared record of what the user last set, so the next boot silently reverted anything changed there.
- Milk stop gained that record too — armed targets only, so switching the stop off no longer erases the tuned temperature — and clamps to the documented 0–80 °C at the API itself.
- Steam duration and flow are recorded before being pushed, so a write that fails in Decaid's queue no longer loses the user's intent.
- Drift is reconciled on incoming shot-settings frames, not only at boot.
Firmware updates
- The screensaver and panel dim no longer cover the progress bar: a flash sleeps the machine for minutes, and that sleep is not an idle machine.
- A cancel that Decaid confirms reads as "cancelled" rather than "update failed"; a cancel request that itself fails puts its button back.
- Settings reads stay off the BLE radio while the flash owns it.
Charts and profile editor
- The scale-sourced GFlow line was drawn past where pressure and flow stop, and on some records across the whole shot. It is now gated on the pour phase like every other trace.
- The expanded charts draw step markers and step their targets, matching the main chart.
- An exit condition the editor cannot write no longer displays as "Pressure is over 0.0 bar".
- A smooth transition plots as the firmware runs it — a linear ramp across the whole frame — so it is finally distinguishable from fast on the opening step.
Reliability
- Renaming a profile sent the wrong payload shape and did not work.
- IndexedDB writes resolve on commit, not on request success, so a write is not reported as saved when the WebView is unloaded before it lands.
- Display and update commands survive a socket that is down instead of being dropped by a 100 ms retry; device and update commands report failure rather than returning silently.
- Confirming a profile guards against a second tap starting a parallel send.
- The device scan is bounded at 20 s and falls back to the device list.
- Settings error text is escaped, and searching for
(no longer throws.
Privacy
- Feedback no longer attaches a contact email or the machine serial to what becomes a public GitHub issue, and the attach toggle now says the logs go to an unlisted Gist linked from that issue.
Full Changelog: v0.0.10...v0.0.11