aaa35b9fix: remove sensitive values from error logs
db1ae2efix: sanitize automatic ESP Sentry events
f78798efeat: harden automatic Sentry events
f326d9bfeat: add reportable config allowlist
004672bMerge pull request #369 from MeticulousHome/disable-debug-shot-telemetry
92693a3Disable debug shot telemetry
dial updated
408921004077 → c3de9fad7e3a
c3de9fadMerge pull request #562 from MeticulousHome/sentry-automatic-events-privacy
5e130713feat: add Dial version metadata to Sentry
b9e1973achore: rotate Sentry client key
ded03f86feat: harden automatic Sentry events
838fc87aMerge pull request #561 from MeticulousHome/disable-debug-shot-telemetry
14597c11Remove debug shot telemetry setting
firmware updated
d28e82aafb43 → 7aa359b23ceb
7aa359bMerge pull request #489 from MeticulousHome/sentry-automatic-events-privacy
576d98erefactor: preserve ESP diagnostic detail
5d5ff75fix: sanitize automatic ESP diagnostics
crash-reporter updated
9c377cac4a53 → c9e74d09514a
c9e74d0Merge pull request #8 from MeticulousHome/sentry-automatic-events-privacy
f4c7c61feat: add privacy-safe crash diagnostics
2026-07-22 01:43:50 - version: 2026M1330-stable
backend updated
1de7a8ca3e95 → 4a3283ff2bc3
4a3283fMerge pull request #368 from MeticulousHome/disable-fluent-bit
9f8772fRemove Fluent Bit service controls
dial updated
315c1699b668 → 408921004077
4089210Merge pull request #560 from MeticulousHome/disable-fluent-bit
ce062daRemove Fluent Bit setting from Dial
2026-07-21 22:47:08 - version: 2026M1329-stable
linux updated
f7e1dec23d55 → 896ed562b8e7
896ed562bMerge pull request #2 from MeticulousHome/nightly
9e14e4a6eset the usbotg1 node as host only on meticulous DT
backend updated
a843576a8fd4 → 1de7a8ca3e95
1de7a8cMerge pull request #367 from MeticulousHome/agent/stable-timezone-retry-limit
d6e58e9Merge pull request #355 from MeticulousHome/fix/timezone-retry-limit
63a76b2Merge branch 'update-channel-follows-image' into stable
c0936fdMerge pull request #352 from MeticulousHome/nightly
90ac3e1chore(bugreport): increase client timeout to 600s when requesting machine logs
4036fe0chore: add logging limits
73e1dc2chore: concentrate all the compose configuration into the compose file
07b8160fix: emmulated files for reports generation and endpoint
bfc9072Add missing UUID dependency
687ccdafix: refresh firmware version before flashing
7babbedMake update channel follow image channel
e5373ccfeat(bug_report): compress report draft on submit request to save space
7599bfffix: consider current debug shot if report is requested during a brew
fba3899fix(reports): mount a volume for the reports dir and set an env var with the docker volume mnt point
4e2a11bchore: add tests to endpoint modifications
a3a15bbfix: allow the PUT method to be used on draft reports updates
1d06ce9feat: add multimedia to the updatable report information, also include the machineID in the /create endpoint response
5c2ffc0feat: add machine status to the user feedback report
dfdf612feat: report creation and serving endpoints change
2d706b1feat(bug_report): Implement the server endpoints to fetch relevant data for the report
96f315erefactor(machine.py): extract get_machine_info function from MachineInfoHandler
37628affeat:(database): create DB migration to add the bug_reports table
2790ba6Sync auto purge setting to firmware
133bf2frun new version of the black formater over everything
412e847update critical dependencies
6768c22ble: fix auto accept
e8c8174ble: register pairing agent to auto accept pairing requests by phones
c35fd96ble: monitor device connect and disconnect
ac9f2e4ble: await setup task immediately after creation
a60c2c9run_emualted: run uv sync before starting the backend
bd6d157Change default sink volume from 70% to 40%
fd949f7fix: add gstreamer1.0-plugins-base-apps for playsound3 gst-play-1.0 backend
c831d82gatt: log communications
ab18406update pyImprov to 0.2.0
77610a1zeroconf: dont pass lists of raw IP addresses
190ff65Add ble gatt unit tests
b1753dfrun_tests: use uv as well
c547b8dfix: use from=\"backend\" for hover seed and on-connect emit
66205edfeat: track profile hover state, emit on connect/create/load, add GET /profile/selected
9c9c95aREADME: update and rename
6b5fb0amachine: run format
09b49e1sound: upgrade to playsound3
97918e2add out folder to gitignore
e249d08fix: move system C library deps to machine group for CI compatibility
bb69085style: run black formatter with line-length 96
94a7db9lint: finally remove all the star imports
6ee169cAdd debian builder script
7691aaadeps: use uv for dependency management
987d817feat(config): sync partial retraction with esp nvs
bbb903cfeat(profile-load): stream simplified profile JSON to ESP32
7592ceedb: fix linting and DB issues
0e3454ddb: fix key error in deletion logic
fcd7155tests: test all database functions - not all tests passing
ca2fdaatests: add machine.py message parsing unit tests
dd26063ci/cd: add unit test running
c2dfffftests: add pytests script
41d9ca8Dockerfile: install dev requirements
c3d902etest: add pytest harness
85c7c31config: move all environment variables into config.py in preparation of mocking
62bdacafix: patch bare NaN tokens in historical shot files
324aa67chore(data.py): decode url encoded strings coming from the ESP
16e4efefix(wifi.py): validate the saved WiFi security type is still valid to connect
25fbc78fix: disable ETag for .zst files served decompressed
cb710e8feat: add 24-hour clock format configuration
27de0d7emulated: move MOTOR_ENERGY_PATH to a env
cabf679hostname: include the serial in the hostname
7fd63bachore(backlight_controller): remove \"jump to target if re-request\" on brightness thread
96b9fdcchore: do not send notification when the ESP restarts unexpectedly
8c314f8fix: set the esp_reset_request flag before calling _connection.reset()
8458171fix: patch Infinity tokens in shot files on access
4add933fix: sanitize Infinity/NaN in setpoint parsing to produce valid JSON
135da60ssh,services: add toggle for fluent-bit
f6c7126fix: check for the real client IP on the X-Real-IP header set by nginx
a9c8c16fix: do not create new logging handlers if there is one alrady created
31e479dchore: use machine name + serial number on usb test
58726e1chore: reframe way of testing usb connection
bd11803fix: check ESP message validity before reporting ESP issued
12921e1fix: expect a restart when updating ESP firmware
43954f6chore: sync python version among developer system, github runner and the Meticulous machine interpreters
2cf5b4dchore: run against play_sound.py
1cbfea8chore: increase motor MAX_ENERGY_ALLOWED threshold to 25000
734b83fFix f-string syntax error in machine.py line 518
f7f5928hore: variable rename and send ESP errors to backend sentry project too
dd2f7dechore: adequate logging of ESP Log messages
44d1ad1feat: add Sentry client for espresso-firmware sentry project
7935814feat: Add ESP monitoring
eb6980dchore: refactor alarms.py - Added 2 new alarms: - ESP_RESTART - ESP_DISCONNECTED - Added the feature to only set alarms for the duration of the session passing the end_time of the alarm as None it will not write an alarm file nor the alarm will be cleared by the AlarmManager - Added `quiet` option to `AlarmManager.setAlarm` to not send a notification to the dial app
3c19fdefeat: add a timeout to the ReadLine.readline fnc
c2e23c0alarms: dont hardcode the path
1db4db4sounds: ensure the sound player is in a lock
4216688fix: add the ESPInfo to the machine attribute
5a59fe8chore: Add all the machine information to debug logs, not only ESPInfo
8b7c870run black and flake8 commands
41bfb1dfix: convert percentage to position for position triggers
56c59e4fix: infinite end time in alarms was not compatible with integer type used in alarm messages
03aa94dchore: use NamedThreads instead of Threads
718ae1achore: sync up shot manager saving data and motor stress analysis
fd9c83afeat: alarms implementation
528e86bfeat: add motor energy compensation for when the machine is OFF
5415262chore: add warning image to notification of stressed motor chore: move all base64 image representations to `images/notificationImages/base64.py` to import from there
4a8d2e6feat: implement motor energy data saving thread to avoid losing it when turning the machine off
a1c7932chore: improve motor energy calculation
01470fffix: change absolute time reference from 4 to 1
dial updated
6aadb620e541 → 315c1699b668
315c169Merge pull request #554 from MeticulousHome/nightly
7acdaadchore(burreport): increase networking timeouts when reporting issues
web-app updated
f16041429cf3 → 0fa5934b219a
0fa5934Merge pull request #4 from MeticulousHome/nightly
b9bc656fix archive.zip download path to avoid cross-site issues
watcher updated
311cf70eb042 → 03ce735ec25c
03ce735Merge pull request #9 from MeticulousHome/nightly
58c85aemove to uv and add deb building
firmware initial
pinned to d28e82aafb43
plotter-ui initial
pinned to a82332b5d16d
2026-02-26 14:23:44 - version: not recorded
linux initial
pinned to f7e1dec23d55
uboot initial
pinned to 00ba0da24a8b
atf initial
pinned to bed39c167c88
imx-mkimage initial
pinned to 71b8c18af93a
debian initial
pinned to db279cf0c71d
backend initial
pinned to a843576a8fd4
dial initial
pinned to 6aadb620e541
web-app initial
pinned to f16041429cf3
watcher initial
pinned to 311cf70eb042
rauc initial
pinned to 269e1721b3c5
hawkbit initial
pinned to 60f34c8cdd0d
psplash initial
pinned to 5b0085b559f1
crash-reporter initial
pinned to 9c377cac4a53
2026-08-26 23:01:52 - version: 2026M1388-beta
meticulous-machine updated
6b66a1e505f3 → 1b06e31415b6
1b06e31Merge pull request #114 from MeticulousHome/backpropagate-stable-to-beta-2026-08-24
7ed4c0aBackpropagate stable into beta (2026-08-24)
1fcc68eMerge pull request #113 from MeticulousHome/fix/hawkbit_channel_revert_stable
ed63adahawkbit: stop reverting the first channel the user picks
backend updated
0d4ab8bbecbb → 1ab14dcebd21
1ab14dcMerge pull request #406 from MeticulousHome/backpropagate-stable-to-beta-2026-08-24
5b9b02bfix: repair tests broken by stable->beta backport merge
bc37751Backpropagate stable into beta
6abfb46Merge pull request #402 from MeticulousHome/feat/cancel_report_collection
81efabbchore: log possible errors/warnings on the bug report generation workflow
9edcd91chore: update log_redactor submodule ref
64e1471feat(bug report): cancel report collection on client disconnect
6835fadMerge pull request #386 from MeticulousHome/fix/gattServer_failure_excepts_beta
7434650Merge pull request #381 from MeticulousHome/feat/date_selector_bug_report
df83004chore: add debug log when requesting a bug report creation
b51556afeat(bug report): add delete method to /reports/draft/[^/]+ endpoint
03a0c76Add issue time report collection
efe971bMerge pull request #385 from MeticulousHome/fix/tests
8f2e5bcfix: gatt server ble service crashes on improve connection failure
295447cMerge pull request #384 from MeticulousHome/chore/sentry_alarm_warning
db55088fix(tests): unreasonably high logger redaction throughput
8ed7216fix: log_redactor_tests fail the whole backend test
24ba748fix(tests) mocks were messing up with data type and some values
2a0b7d9chore(machine): reduce alarm sentry message level to warning
dial updated
da4a98043b45 → 025b3c8d03d1
025b3c8dchore(packages): sync npm turi/ package versions with cargo package version
dd7abb0cchore(version): bump required meticulous-home/espresso-api version to 0.11.5
4327d853feat(bug report): abort in-flight report creation on cancel
310a5ae9chore(bug report): add labels to issue date selectors
79392ab6feat(bug report): use enhanced animations for waiting stages
aaf5c49dfeat(bugreport): use new animations instead of simple spinners on the bug report screen
267d11e5feat(bug report): add cancel report workflow and streamline submission
17f9728achore(bug report ui): limit issue date selector
e90e86ebchore(version): bump required meticulous-home/espresso-api version to 0.11.2
8888dc24fix(bug report): do not allow issue date selection on the future
8b942129chore(bug report): allow user time selection on 30 minute intervals
7fd63bachore(backlight_controller): remove \"jump to target if re-request\" on brightness thread
web-app updated
4061dd0764e3 → b9bc6563c021
b9bc656fix archive.zip download path to avoid cross-site issues
2026-02-26 14:28:45 - version: not recorded
linux updated
f7e1dec23d55 → 9e14e4a6eb19
9e14e4a6eset the usbotg1 node as host only on meticulous DT
backend updated
a843576a8fd4 → 96b9fdcbe5e7
96b9fdcchore: do not send notification when the ESP restarts unexpectedly
8c314f8fix: set the esp_reset_request flag before calling _connection.reset()
8458171fix: patch Infinity tokens in shot files on access
4add933fix: sanitize Infinity/NaN in setpoint parsing to produce valid JSON
135da60ssh,services: add toggle for fluent-bit
f6c7126fix: check for the real client IP on the X-Real-IP header set by nginx
a9c8c16fix: do not create new logging handlers if there is one alrady created
31e479dchore: use machine name + serial number on usb test
58726e1chore: reframe way of testing usb connection
bd11803fix: check ESP message validity before reporting ESP issued
12921e1fix: expect a restart when updating ESP firmware
43954f6chore: sync python version among developer system, github runner and the Meticulous machine interpreters
2cf5b4dchore: run against play_sound.py
1cbfea8chore: increase motor MAX_ENERGY_ALLOWED threshold to 25000
734b83fFix f-string syntax error in machine.py line 518
f7f5928hore: variable rename and send ESP errors to backend sentry project too
dd2f7dechore: adequate logging of ESP Log messages
44d1ad1feat: add Sentry client for espresso-firmware sentry project
7935814feat: Add ESP monitoring
eb6980dchore: refactor alarms.py - Added 2 new alarms: - ESP_RESTART - ESP_DISCONNECTED - Added the feature to only set alarms for the duration of the session passing the end_time of the alarm as None it will not write an alarm file nor the alarm will be cleared by the AlarmManager - Added `quiet` option to `AlarmManager.setAlarm` to not send a notification to the dial app
3c19fdefeat: add a timeout to the ReadLine.readline fnc
c2e23c0alarms: dont hardcode the path
1db4db4sounds: ensure the sound player is in a lock
4216688fix: add the ESPInfo to the machine attribute
5a59fe8chore: Add all the machine information to debug logs, not only ESPInfo
8b7c870run black and flake8 commands
41bfb1dfix: convert percentage to position for position triggers
56c59e4fix: infinite end time in alarms was not compatible with integer type used in alarm messages
03aa94dchore: use NamedThreads instead of Threads
718ae1achore: sync up shot manager saving data and motor stress analysis
fd9c83afeat: alarms implementation
528e86bfeat: add motor energy compensation for when the machine is OFF
5415262chore: add warning image to notification of stressed motor chore: move all base64 image representations to `images/notificationImages/base64.py` to import from there
4a8d2e6feat: implement motor energy data saving thread to avoid losing it when turning the machine off
a1c7932chore: improve motor energy calculation
01470fffix: change absolute time reference from 4 to 1
dial updated
6aadb620e541 → 46794a991b31
46794a99chore(displayalignment): reduce number of vertical lines to 1
2f77dcc4chore(release): v1.102.2 [skip ci]
37f9d784fix(profilehomescreen): add missing useSocket import for profileHover emit
d5e12478Emit profileHover on physical device profile selection
6ef6cfa4chore(release): v1.102.1 [skip ci]
ce7802a2chore(lint): run formater
dc4e7ff1fix(store): add remove and clear actions to profile image adapter
cd569b48fix(hooks): add timeout cleanup to retry logic in usefetchdata
51d76a09fix(idle): reduce polling interval from 2s to 60s during idle screen
3e997f91fix(idlescreen): prevent orphaned timeout chain in screen dim cycle
0e5194d6fix(socket): add cleanup for all socket event listeners
766b1c6efix(socket): fix keyup listener never being removed on cleanup
a6a3bbd7chore(release): v1.102.0 [skip ci]
5200d31afix(heatingscreen): fix glitch if dial app crashes on click to start
1b30195efix(advanced): heading comma on initialsettings array
79a24f50fix(idlescreen): force update brightness to 1 on unmount
4a010824fix(settings): remove deprecated usb key
51b45b9bfeat(config): add telemetry service config
efd2b0acchore(settings): remove usb_mode screen
5d7a6385chore(release): v1.101.2 [skip ci]
8e4f58a0fix(homescreen): keep a quick screen transition on profile request
af5ff35echore(profilehomescreen): handle errors if loadprofile fails
web-app updated
f16041429cf3 → 4061dd0764e3
4061dd0update @meticulous-home/espresso-api
56e37d6add debug archive download button
7dbe1f6fix: needed connection to analytics to modify any setting
watcher updated
311cf70eb042 → e150083e4ed0
e150083move log and status collection into their own files and add compressed archive export
firmware initial
pinned to 6d3b36733e2c
plotter-ui initial
pinned to cec4db6d56aa
2026-02-26 14:23:03 - version: not recorded
linux initial
pinned to f7e1dec23d55
uboot initial
pinned to 00ba0da24a8b
atf initial
pinned to bed39c167c88
imx-mkimage initial
pinned to 71b8c18af93a
debian initial
pinned to db279cf0c71d
backend initial
pinned to a843576a8fd4
dial initial
pinned to 6aadb620e541
web-app initial
pinned to f16041429cf3
watcher initial
pinned to 311cf70eb042
rauc initial
pinned to 269e1721b3c5
hawkbit initial
pinned to 60f34c8cdd0d
psplash initial
pinned to 5b0085b559f1
crash-reporter initial
pinned to 9c377cac4a53
2026-02-26 18:46:11 - version: not recorded
linux initial
pinned to 9e14e4a6eb19
uboot initial
pinned to 00ba0da24a8b
atf initial
pinned to bed39c167c88
imx-mkimage initial
pinned to 71b8c18af93a
debian initial
pinned to db279cf0c71d
backend initial
pinned to 1919d3471ce1
dial initial
pinned to 9e278764e6e8
web-app initial
pinned to 7dbe1f6a0850
watcher initial
pinned to e150083e4ed0
firmware initial
pinned to 30d86debbc93
rauc initial
pinned to 269e1721b3c5
hawkbit initial
pinned to 60f34c8cdd0d
psplash initial
pinned to 5b0085b559f1
plotter-ui initial
pinned to cec4db6d56aa
crash-reporter initial
pinned to 9c377cac4a53
2026-08-26 21:52:05 - version: 2026M1387-nightly
meticulous-machine updated
f10de69275a9 → f87f85fe4bdb
f87f85fMerge pull request #115 from MeticulousHome/backpropagate-beta-to-nightly-2026-08-25
4c1f2a5Merge beta into nightly
1b06e31Merge pull request #114 from MeticulousHome/backpropagate-stable-to-beta-2026-08-24
7ed4c0aBackpropagate stable into beta (2026-08-24)
1fcc68eMerge pull request #113 from MeticulousHome/fix/hawkbit_channel_revert_stable
ed63adahawkbit: stop reverting the first channel the user picks
backend updated
334bb98c7f39 → 7f3d537231b6
7f3d537Merge pull request #408 from MeticulousHome/backpropagate-beta-to-nightly-2026-08-25
8edd9d6Merge beta into nightly
1ab14dcMerge pull request #406 from MeticulousHome/backpropagate-stable-to-beta-2026-08-24
5b9b02bfix: repair tests broken by stable->beta backport merge
bc37751Backpropagate stable into beta
6abfb46Merge pull request #402 from MeticulousHome/feat/cancel_report_collection
81efabbchore: log possible errors/warnings on the bug report generation workflow
9edcd91chore: update log_redactor submodule ref
64e1471feat(bug report): cancel report collection on client disconnect
6835fadMerge pull request #386 from MeticulousHome/fix/gattServer_failure_excepts_beta
7434650Merge pull request #381 from MeticulousHome/feat/date_selector_bug_report
df83004chore: add debug log when requesting a bug report creation
b51556afeat(bug report): add delete method to /reports/draft/[^/]+ endpoint
03a0c76Add issue time report collection
efe971bMerge pull request #385 from MeticulousHome/fix/tests
8f2e5bcfix: gatt server ble service crashes on improve connection failure
295447cMerge pull request #384 from MeticulousHome/chore/sentry_alarm_warning
db55088fix(tests): unreasonably high logger redaction throughput
8ed7216fix: log_redactor_tests fail the whole backend test
24ba748fix(tests) mocks were messing up with data type and some values
2a0b7d9chore(machine): reduce alarm sentry message level to warning
dial updated
386f6adfb284 → d607b24e3a86
d607b24eMerge pull request #595 from MeticulousHome/backpropagate-beta-to-nightly-2026-08-25
281c8a80Merge beta into nightly
025b3c8dchore(packages): sync npm turi/ package versions with cargo package version
dd7abb0cchore(version): bump required meticulous-home/espresso-api version to 0.11.5
4327d853feat(bug report): abort in-flight report creation on cancel
310a5ae9chore(bug report): add labels to issue date selectors
79392ab6feat(bug report): use enhanced animations for waiting stages
aaf5c49dfeat(bugreport): use new animations instead of simple spinners on the bug report screen
267d11e5feat(bug report): add cancel report workflow and streamline submission
17f9728achore(bug report ui): limit issue date selector
e90e86ebchore(version): bump required meticulous-home/espresso-api version to 0.11.2
8888dc24fix(bug report): do not allow issue date selection on the future
8b942129chore(bug report): allow user time selection on 30 minute intervals