Skip to content

Releases

TrailCamHub v0.1.8

Choose a tag to compare

@github-actions github-actions released this 14 Nov 17:32
6a069f7

What's Changed

  • Compare the C6 firmware version as numbers by @ThomasPohl in #183
  • Review nits: idle vs. stall timeout, log file number range, comment by @ThomasPohl in #184
  • Show the web UI address and password in status; web_password setting by @ThomasPohl in #185
  • Add health_url and web_password to the list of settings by @ThomasPohl in #188
  • Build the heartbeat with build_request by @ThomasPohl in #186
  • Document where the discovery ID and the PRE_LOGIN header come from by @ThomasPohl in #187
  • Make the camera login configurable (camera_user, camera_password) by @ThomasPohl in #190
  • Move the media-list page logic out of camera_protocol.cpp by @ThomasPohl in #191
  • Redact the camera screen code and passwords from logged answers by @ThomasPohl in #192
  • Camera state from the device info via an allowlist by @ThomasPohl in #202
  • Keep the Telegram bot token out of the HTTP client log by @ThomasPohl in #203
  • Bound the check-in back-off at 12 hours with Telegram by @ThomasPohl in #204
  • WebDAV videos over the modem: setting webdav_videos by @ThomasPohl in #205
  • Web installer for every board; keep a connected hub awake by @ThomasPohl in #206
  • Camera mock on an ESP32-WROOM, stage 1 (#122) by @ThomasPohl in #208
  • Board: ESP32-WROOM-32D with SPI microSD (#77) by @ThomasPohl in #209
  • Docs: split the README into focused documents by @ThomasPohl in #210
  • USB dev container: hide the host's pts, shm and mqueue under /dev/host by @ThomasPohl in #189
  • Document the SD formats, tasks, memory and design decisions by @ThomasPohl in #215
  • Run the host tests with ASan and UBSan in CI by @ThomasPohl in #214
  • Keep the catalog through a power loss and save it less often by @ThomasPohl in #212
  • Limit thumbnail records kept in RAM to 256 KB by @ThomasPohl in #213
  • Move the thumbnail queue out of camera_protocol.cpp by @ThomasPohl in #216
  • Use one JSON escaper in the uplink by @ThomasPohl in #217
  • ci: publish the installer build store as a single commit by @ThomasPohl in #225
  • ci: publish tag builds on the installer and make every deploy go live by @ThomasPohl in #226
  • Add the camera action layer: actions, answers by their own field, confirmation gate by @ThomasPohl in #227
  • Camera actions from the web UI and Telegram, one shared request path by @ThomasPohl in #230
  • ci: bump actions/cache restore/save to v5 (Node 24) by @ThomasPohl in #233
  • Bring the camera action stack (#228, #229, #230) onto main by @ThomasPohl in #231
  • CI: static RAM per board and clang-tidy on the host-testable files by @ThomasPohl in #234
  • Kconfig: options in their components, menu "TrailCamHub" by @ThomasPohl in #235
  • Trace each cycle: number in the log, heap and stack minimum, cycles.jsonl by @ThomasPohl in #236
  • Rename the project to trailcamhub by @ThomasPohl in #238
  • Thumbnail record: one block of the record's size, no abort without memory by @ThomasPohl in #241
  • HTTP: one block for the response body, no abort without memory by @ThomasPohl in #243
  • Check-in without PSRAM: 40 recordings at a time, free the request before the response by @ThomasPohl in #245
  • WROOM-32D: allocate the TLS buffers per record by @ThomasPohl in #246
  • Check-in: let the hub limit the thumbnail uploads by @ThomasPohl in #247
  • WROOM-32D: ask for 2 thumbnail uploads, show the heap usable for data by @ThomasPohl in #248
  • Cycle trace and status: report the heap that data can use by @ThomasPohl in #249
  • docs: wiring diagram for the ESP32-WROOM-32D microSD reader by @ThomasPohl in #237

Full Changelog: v0.1.6...v0.1.8

TrailCamHub v0.1.7

Choose a tag to compare

@github-actions github-actions released this 14 Nov 17:18
6a069f7

What's Changed

  • Compare the C6 firmware version as numbers by @ThomasPohl in #183
  • Review nits: idle vs. stall timeout, log file number range, comment by @ThomasPohl in #184
  • Show the web UI address and password in status; web_password setting by @ThomasPohl in #185
  • Add health_url and web_password to the list of settings by @ThomasPohl in #188
  • Build the heartbeat with build_request by @ThomasPohl in #186
  • Document where the discovery ID and the PRE_LOGIN header come from by @ThomasPohl in #187
  • Make the camera login configurable (camera_user, camera_password) by @ThomasPohl in #190
  • Move the media-list page logic out of camera_protocol.cpp by @ThomasPohl in #191
  • Redact the camera screen code and passwords from logged answers by @ThomasPohl in #192
  • Camera state from the device info via an allowlist by @ThomasPohl in #202
  • Keep the Telegram bot token out of the HTTP client log by @ThomasPohl in #203
  • Bound the check-in back-off at 12 hours with Telegram by @ThomasPohl in #204
  • WebDAV videos over the modem: setting webdav_videos by @ThomasPohl in #205
  • Web installer for every board; keep a connected hub awake by @ThomasPohl in #206
  • Camera mock on an ESP32-WROOM, stage 1 (#122) by @ThomasPohl in #208
  • Board: ESP32-WROOM-32D with SPI microSD (#77) by @ThomasPohl in #209
  • Docs: split the README into focused documents by @ThomasPohl in #210
  • USB dev container: hide the host's pts, shm and mqueue under /dev/host by @ThomasPohl in #189
  • Document the SD formats, tasks, memory and design decisions by @ThomasPohl in #215
  • Run the host tests with ASan and UBSan in CI by @ThomasPohl in #214
  • Keep the catalog through a power loss and save it less often by @ThomasPohl in #212
  • Limit thumbnail records kept in RAM to 256 KB by @ThomasPohl in #213
  • Move the thumbnail queue out of camera_protocol.cpp by @ThomasPohl in #216
  • Use one JSON escaper in the uplink by @ThomasPohl in #217
  • ci: publish the installer build store as a single commit by @ThomasPohl in #225
  • ci: publish tag builds on the installer and make every deploy go live by @ThomasPohl in #226
  • Add the camera action layer: actions, answers by their own field, confirmation gate by @ThomasPohl in #227
  • Camera actions from the web UI and Telegram, one shared request path by @ThomasPohl in #230
  • ci: bump actions/cache restore/save to v5 (Node 24) by @ThomasPohl in #233
  • Bring the camera action stack (#228, #229, #230) onto main by @ThomasPohl in #231
  • CI: static RAM per board and clang-tidy on the host-testable files by @ThomasPohl in #234
  • Kconfig: options in their components, menu "TrailCamHub" by @ThomasPohl in #235
  • Trace each cycle: number in the log, heap and stack minimum, cycles.jsonl by @ThomasPohl in #236
  • Rename the project to trailcamhub by @ThomasPohl in #238
  • Thumbnail record: one block of the record's size, no abort without memory by @ThomasPohl in #241
  • HTTP: one block for the response body, no abort without memory by @ThomasPohl in #243
  • Check-in without PSRAM: 40 recordings at a time, free the request before the response by @ThomasPohl in #245
  • WROOM-32D: allocate the TLS buffers per record by @ThomasPohl in #246
  • Check-in: let the hub limit the thumbnail uploads by @ThomasPohl in #247
  • WROOM-32D: ask for 2 thumbnail uploads, show the heap usable for data by @ThomasPohl in #248
  • Cycle trace and status: report the heap that data can use by @ThomasPohl in #249
  • docs: wiring diagram for the ESP32-WROOM-32D microSD reader by @ThomasPohl in #237

Full Changelog: v0.1.6...v0.1.7

TrailCamHub v0.1.6

Choose a tag to compare

@github-actions github-actions released this 09 Nov 12:24
e78804e

What's Changed

  • Web installer: fix the serial console disconnect, release the port for the installer by @ThomasPohl in #169
  • Web installer: keep the serial console's position while scrolled up by @ThomasPohl in #171
  • Remember a refused SIM PIN and accept 4-digit PINs only by @ThomasPohl in #172
  • Clearer modem logs and an early end without a SIM card by @ThomasPohl in #173
  • Put the modem into flight mode after a power-on or reset by @ThomasPohl in #174
  • Faster video uploads: no modem sleep while uploading, larger TCP windows by @ThomasPohl in #175
  • Choose the mode at run time; boards.json for the boards and their capabilities by @ThomasPohl in #176
  • Sync over Ethernet; support the Waveshare ESP32-S3-ETH (W5500) by @ThomasPohl in #177
  • Push to a WebDAV folder or to Telegram directly by @ThomasPohl in #178
  • Web UI on the home Wi-Fi, trailcamhub.local, health check pings by @ThomasPohl in #179
  • Installer: setup assistant, advanced tools and support package by @ThomasPohl in #181
  • Add README badges by @ThomasPohl in #182

Full Changelog: v0.1.5...v0.1.6

TrailCamHub v0.1.5

Choose a tag to compare

@github-actions github-actions released this 08 Nov 18:48

What's Changed

Full Changelog: v0.1.3...v0.1.5

TrailCamHub v0.1.4

Choose a tag to compare

@github-actions github-actions released this 08 Nov 18:14
5d2f740

What's Changed

  • Camera protocol: docs, ARTEMIS client, and the web installer by @ThomasPohl in #13
  • Docs/protocol analysis by @ThomasPohl in #14
  • Typisiertes Medienlisten-Modell (cmdId 768) by @ThomasPohl in #15
  • Web-Installer: Live-Protokoll-Ansicht by @ThomasPohl in #18
  • CI: Actions auf Node-24-Versionen anheben (checkout/artifact/deploy-pages) by @ThomasPohl in #19
  • Thumbnail-Bulk-Transport: Reassembly + Fenster-ACK (772) by @ThomasPohl in #20
  • Docs: Roadmap für Onboarding/Setup-Vereinfachung by @ThomasPohl in #21
  • Thumbnails auf SD-Karte + Pro-Kamera-Katalog (einfache DB) by @ThomasPohl in #22
  • Thumbnails mit Aufnahmedatum datieren by @ThomasPohl in #23
  • Update CI actions and documentation for ESP-IDF 5.5.6 by @HeikoGr in #24
  • Add AWS SAM backend with OIDC deployment by @ThomasPohl in #27
  • Add Telegram Mini App with CI and Pages deployment by @ThomasPohl in #26
  • Hub: triggered scans, settings via web installer, backend uplink by @ThomasPohl in #28
  • Several cameras per hub: hub keys, batch check-in, camera picker by @ThomasPohl in #30
  • Backend: deploy into AWS projects (access key instead of OIDC, token without SSM) by @ThomasPohl in #31
  • Backend deploy: report SAM and CloudFormation errors as annotations by @ThomasPohl in #39
  • Bootstrap: allow the execution role to expand the SAM transform by @ThomasPohl in #40
  • Session: neutral request and status interface for front ends by @ThomasPohl in #29
  • SD card: SPI mode, sd_log, sdkconfig split into common and per-target files by @HeikoGr in #33
  • Merge #32 and initialize the network stack in app_main by @ThomasPohl in #41
  • camera_link: video download via playback stream, photo streaming to SD, robustness fixes by @HeikoGr in #32
  • Board: LilyGO T-Dongle-C5 with display and button (on the session interface of #29) by @HeikoGr in #34
  • Merge #36 (ESP32-P4-NANO) after #34 and resolve the conflicts by @ThomasPohl in #42
  • Board: Waveshare ESP32-P4-NANO with Ethernet uplink (based on #32 and #33) by @HeikoGr in #36
  • Board: LilyGO T-Dongle-S3 (stacked on the T-Dongle-C5 PR) by @HeikoGr in #35
  • web_ui: access point with a page for status, files and the live log (stacked on #34) by @HeikoGr in #37
  • Merge #38 (console diagnostics) after #37 and resolve the conflicts by @ThomasPohl in #43
  • hub_console: USB-Serial-JTAG port, richer status and diagnostic commands (stacked on #34) by @HeikoGr in #38
  • camera_link: log in with the current time instead of a fixed one by @HeikoGr in #46
  • web_ui: Ethernet web UI for the P4 with MP4 download, browsing and clock sync by @HeikoGr in #47
  • web: group captures and show thumbnail preview in the live protocol view by @ThomasPohl in #44
  • backend: register hubs through the Lambda function by @ThomasPohl in #45
  • backend: register-hub uses the AWS CLI's region by default by @ThomasPohl in #71
  • web: remember device setup values in the browser by @ThomasPohl in #72
  • hub_console: keep the console task stack in internal RAM by @ThomasPohl in #73
  • camera_wifi: ignore late disconnect events of the previous network by @ThomasPohl in #74
  • app: show the backend's error message on failed requests by @ThomasPohl in #78
  • web: add Clear and Copy buttons to the serial console by @ThomasPohl in #80
  • media_store: date SD files with the real UTC instant of the recording by @ThomasPohl in #82
  • app: show media times as the camera's wall clock by @ThomasPohl in #83
  • Add CLAUDE.md with git setup and project conventions by @ThomasPohl in #84
  • Use-case profile, wake-up schedule and deep sleep (#56, #81) by @ThomasPohl in #86
  • Key the hub catalog by mediaId by @ThomasPohl in #88
  • End the camera session when the media list fails (no SD card) by @HeikoGr in #90
  • Web UI: CSRF protection, and a password over Ethernet by @HeikoGr in #91
  • sd_log: host tests for file naming, pruning and line cutting by @HeikoGr in #92
  • time_sync.h: plain C API with its own source enum by @HeikoGr in #93
  • Define the front-end phase once in session_controller by @HeikoGr in #96
  • Show failed and stopped searches on the display and in the web UI by @HeikoGr in #97
  • Name the hub SD files by mediaId by @ThomasPohl in #98
  • Read the thumbnail media id at offset 0x28 by @ThomasPohl in #112
  • Dev container: CI tools, ESP-IDF in every shell, USB access to boards by @HeikoGr in #95
  • camera_link: move the handshake out of camera_protocol.cpp by @HeikoGr in #107
  • camera_link: collect the video download figures in VideoTransferStats by @HeikoGr in #108
  • web_ui: keep a landscape video and its controls inside the viewer by @HeikoGr in #110
  • Merge #111 (PlaybackDownload) into main by @ThomasPohl in #116
  • camera_link: move the video download by playback into PlaybackDownload by @HeikoGr in #111
  • Document the camera's delete and format commands by @HeikoGr in #115
  • docs: follow-ups to the camera delete and format notes by @ThomasPohl in #120
  • Add a console command that lists the media on the camera by @HeikoGr in #119
  • Read all pages of the camera's media list in a scan by @ThomasPohl in #124
  • Count only new media frames as progress for the session watchdog by @ThomasPohl in #125
  • Report a camlist listing as listed, not as a scan by @ThomasPohl in #127
  • Session Results to main by @ThomasPohl in #128
  • Merge the session result work into main by @ThomasPohl in #129
  • Report the camera's SD card state in the check-in and show it in the app by @ThomasPohl in #130
  • Read several cameras in one scan by @ThomasPohl in #131
  • Merge the multi-camera scan into main by @ThomasPohl in #132
  • Telegram bot: webhook, notifications and pairing by QR code by @ThomasPohl in #133
  • Measure the hub battery (MAX17048) and send it in the check-in by @ThomasPohl in #137
  • Download and upload videos on request by @ThomasPohl in #139
  • Firmware updates through the check-in (OTA with rollback) by @ThomasPohl in #140
  • Backend uplink over the A7670E cellular modem (USB host, PPP) by @ThomasPohl in #141
  • CI: cache compiler output in the ESP-IDF builds by @ThomasPohl in #162
  • Give the default event loop task a larger stack by @ThomasPohl in #165

New Contributors

Full Changelog: https://github.com/ThomasPohl/TrailCamHub/commits/v0.1.4

TrailCamHub v0.1.3

Choose a tag to compare

@github-actions github-actions released this 08 Nov 13:08
5d2f740

What's Changed

  • Camera protocol: docs, ARTEMIS client, and the web installer by @ThomasPohl in #13
  • Docs/protocol analysis by @ThomasPohl in #14
  • Typisiertes Medienlisten-Modell (cmdId 768) by @ThomasPohl in #15
  • Web-Installer: Live-Protokoll-Ansicht by @ThomasPohl in #18
  • CI: Actions auf Node-24-Versionen anheben (checkout/artifact/deploy-pages) by @ThomasPohl in #19
  • Thumbnail-Bulk-Transport: Reassembly + Fenster-ACK (772) by @ThomasPohl in #20
  • Docs: Roadmap für Onboarding/Setup-Vereinfachung by @ThomasPohl in #21
  • Thumbnails auf SD-Karte + Pro-Kamera-Katalog (einfache DB) by @ThomasPohl in #22
  • Thumbnails mit Aufnahmedatum datieren by @ThomasPohl in #23
  • Update CI actions and documentation for ESP-IDF 5.5.6 by @HeikoGr in #24
  • Add AWS SAM backend with OIDC deployment by @ThomasPohl in #27
  • Add Telegram Mini App with CI and Pages deployment by @ThomasPohl in #26
  • Hub: triggered scans, settings via web installer, backend uplink by @ThomasPohl in #28
  • Several cameras per hub: hub keys, batch check-in, camera picker by @ThomasPohl in #30
  • Backend: deploy into AWS projects (access key instead of OIDC, token without SSM) by @ThomasPohl in #31
  • Backend deploy: report SAM and CloudFormation errors as annotations by @ThomasPohl in #39
  • Bootstrap: allow the execution role to expand the SAM transform by @ThomasPohl in #40
  • Session: neutral request and status interface for front ends by @ThomasPohl in #29
  • SD card: SPI mode, sd_log, sdkconfig split into common and per-target files by @HeikoGr in #33
  • Merge #32 and initialize the network stack in app_main by @ThomasPohl in #41
  • camera_link: video download via playback stream, photo streaming to SD, robustness fixes by @HeikoGr in #32
  • Board: LilyGO T-Dongle-C5 with display and button (on the session interface of #29) by @HeikoGr in #34
  • Merge #36 (ESP32-P4-NANO) after #34 and resolve the conflicts by @ThomasPohl in #42
  • Board: Waveshare ESP32-P4-NANO with Ethernet uplink (based on #32 and #33) by @HeikoGr in #36
  • Board: LilyGO T-Dongle-S3 (stacked on the T-Dongle-C5 PR) by @HeikoGr in #35
  • web_ui: access point with a page for status, files and the live log (stacked on #34) by @HeikoGr in #37
  • Merge #38 (console diagnostics) after #37 and resolve the conflicts by @ThomasPohl in #43
  • hub_console: USB-Serial-JTAG port, richer status and diagnostic commands (stacked on #34) by @HeikoGr in #38
  • camera_link: log in with the current time instead of a fixed one by @HeikoGr in #46
  • web_ui: Ethernet web UI for the P4 with MP4 download, browsing and clock sync by @HeikoGr in #47
  • web: group captures and show thumbnail preview in the live protocol view by @ThomasPohl in #44
  • backend: register hubs through the Lambda function by @ThomasPohl in #45
  • backend: register-hub uses the AWS CLI's region by default by @ThomasPohl in #71
  • web: remember device setup values in the browser by @ThomasPohl in #72
  • hub_console: keep the console task stack in internal RAM by @ThomasPohl in #73
  • camera_wifi: ignore late disconnect events of the previous network by @ThomasPohl in #74
  • app: show the backend's error message on failed requests by @ThomasPohl in #78
  • web: add Clear and Copy buttons to the serial console by @ThomasPohl in #80
  • media_store: date SD files with the real UTC instant of the recording by @ThomasPohl in #82
  • app: show media times as the camera's wall clock by @ThomasPohl in #83
  • Add CLAUDE.md with git setup and project conventions by @ThomasPohl in #84
  • Use-case profile, wake-up schedule and deep sleep (#56, #81) by @ThomasPohl in #86
  • Key the hub catalog by mediaId by @ThomasPohl in #88
  • End the camera session when the media list fails (no SD card) by @HeikoGr in #90
  • Web UI: CSRF protection, and a password over Ethernet by @HeikoGr in #91
  • sd_log: host tests for file naming, pruning and line cutting by @HeikoGr in #92
  • time_sync.h: plain C API with its own source enum by @HeikoGr in #93
  • Define the front-end phase once in session_controller by @HeikoGr in #96
  • Show failed and stopped searches on the display and in the web UI by @HeikoGr in #97
  • Name the hub SD files by mediaId by @ThomasPohl in #98
  • Read the thumbnail media id at offset 0x28 by @ThomasPohl in #112
  • Dev container: CI tools, ESP-IDF in every shell, USB access to boards by @HeikoGr in #95
  • camera_link: move the handshake out of camera_protocol.cpp by @HeikoGr in #107
  • camera_link: collect the video download figures in VideoTransferStats by @HeikoGr in #108
  • web_ui: keep a landscape video and its controls inside the viewer by @HeikoGr in #110
  • Merge #111 (PlaybackDownload) into main by @ThomasPohl in #116
  • camera_link: move the video download by playback into PlaybackDownload by @HeikoGr in #111
  • Document the camera's delete and format commands by @HeikoGr in #115
  • docs: follow-ups to the camera delete and format notes by @ThomasPohl in #120
  • Add a console command that lists the media on the camera by @HeikoGr in #119
  • Read all pages of the camera's media list in a scan by @ThomasPohl in #124
  • Count only new media frames as progress for the session watchdog by @ThomasPohl in #125
  • Report a camlist listing as listed, not as a scan by @ThomasPohl in #127
  • Session Results to main by @ThomasPohl in #128
  • Merge the session result work into main by @ThomasPohl in #129
  • Report the camera's SD card state in the check-in and show it in the app by @ThomasPohl in #130
  • Read several cameras in one scan by @ThomasPohl in #131
  • Merge the multi-camera scan into main by @ThomasPohl in #132
  • Telegram bot: webhook, notifications and pairing by QR code by @ThomasPohl in #133
  • Measure the hub battery (MAX17048) and send it in the check-in by @ThomasPohl in #137
  • Download and upload videos on request by @ThomasPohl in #139
  • Firmware updates through the check-in (OTA with rollback) by @ThomasPohl in #140
  • Backend uplink over the A7670E cellular modem (USB host, PPP) by @ThomasPohl in #141
  • CI: cache compiler output in the ESP-IDF builds by @ThomasPohl in #162
  • Give the default event loop task a larger stack by @ThomasPohl in #165

New Contributors

Full Changelog: https://github.com/ThomasPohl/TrailCamHub/commits/v0.1.3

TrailCamHub v0.1.2

Choose a tag to compare

@github-actions github-actions released this 08 Nov 08:07

Full Changelog: v0.1.0...v0.1.2

TrailCamHub v0.1.1

Choose a tag to compare

@github-actions github-actions released this 08 Nov 07:29

Full Changelog: v0.1.0...v0.1.1

TrailCamHub v0.1.0

Choose a tag to compare

@github-actions github-actions released this 08 Nov 07:25

What's Changed

  • Camera protocol: docs, ARTEMIS client, and the web installer by @ThomasPohl in #13
  • Docs/protocol analysis by @ThomasPohl in #14
  • Typisiertes Medienlisten-Modell (cmdId 768) by @ThomasPohl in #15
  • Web-Installer: Live-Protokoll-Ansicht by @ThomasPohl in #18
  • CI: Actions auf Node-24-Versionen anheben (checkout/artifact/deploy-pages) by @ThomasPohl in #19
  • Thumbnail-Bulk-Transport: Reassembly + Fenster-ACK (772) by @ThomasPohl in #20
  • Docs: Roadmap für Onboarding/Setup-Vereinfachung by @ThomasPohl in #21
  • Thumbnails auf SD-Karte + Pro-Kamera-Katalog (einfache DB) by @ThomasPohl in #22
  • Thumbnails mit Aufnahmedatum datieren by @ThomasPohl in #23
  • Update CI actions and documentation for ESP-IDF 5.5.6 by @HeikoGr in #24
  • Add AWS SAM backend with OIDC deployment by @ThomasPohl in #27
  • Add Telegram Mini App with CI and Pages deployment by @ThomasPohl in #26
  • Hub: triggered scans, settings via web installer, backend uplink by @ThomasPohl in #28
  • Several cameras per hub: hub keys, batch check-in, camera picker by @ThomasPohl in #30
  • Backend: deploy into AWS projects (access key instead of OIDC, token without SSM) by @ThomasPohl in #31
  • Backend deploy: report SAM and CloudFormation errors as annotations by @ThomasPohl in #39
  • Bootstrap: allow the execution role to expand the SAM transform by @ThomasPohl in #40
  • Session: neutral request and status interface for front ends by @ThomasPohl in #29
  • SD card: SPI mode, sd_log, sdkconfig split into common and per-target files by @HeikoGr in #33
  • Merge #32 and initialize the network stack in app_main by @ThomasPohl in #41
  • camera_link: video download via playback stream, photo streaming to SD, robustness fixes by @HeikoGr in #32
  • Board: LilyGO T-Dongle-C5 with display and button (on the session interface of #29) by @HeikoGr in #34
  • Merge #36 (ESP32-P4-NANO) after #34 and resolve the conflicts by @ThomasPohl in #42
  • Board: Waveshare ESP32-P4-NANO with Ethernet uplink (based on #32 and #33) by @HeikoGr in #36
  • Board: LilyGO T-Dongle-S3 (stacked on the T-Dongle-C5 PR) by @HeikoGr in #35
  • web_ui: access point with a page for status, files and the live log (stacked on #34) by @HeikoGr in #37
  • Merge #38 (console diagnostics) after #37 and resolve the conflicts by @ThomasPohl in #43
  • hub_console: USB-Serial-JTAG port, richer status and diagnostic commands (stacked on #34) by @HeikoGr in #38
  • camera_link: log in with the current time instead of a fixed one by @HeikoGr in #46
  • web_ui: Ethernet web UI for the P4 with MP4 download, browsing and clock sync by @HeikoGr in #47
  • web: group captures and show thumbnail preview in the live protocol view by @ThomasPohl in #44
  • backend: register hubs through the Lambda function by @ThomasPohl in #45
  • backend: register-hub uses the AWS CLI's region by default by @ThomasPohl in #71
  • web: remember device setup values in the browser by @ThomasPohl in #72
  • hub_console: keep the console task stack in internal RAM by @ThomasPohl in #73
  • camera_wifi: ignore late disconnect events of the previous network by @ThomasPohl in #74
  • app: show the backend's error message on failed requests by @ThomasPohl in #78
  • web: add Clear and Copy buttons to the serial console by @ThomasPohl in #80
  • media_store: date SD files with the real UTC instant of the recording by @ThomasPohl in #82
  • app: show media times as the camera's wall clock by @ThomasPohl in #83
  • Add CLAUDE.md with git setup and project conventions by @ThomasPohl in #84
  • Use-case profile, wake-up schedule and deep sleep (#56, #81) by @ThomasPohl in #86
  • Key the hub catalog by mediaId by @ThomasPohl in #88
  • End the camera session when the media list fails (no SD card) by @HeikoGr in #90
  • Web UI: CSRF protection, and a password over Ethernet by @HeikoGr in #91
  • sd_log: host tests for file naming, pruning and line cutting by @HeikoGr in #92
  • time_sync.h: plain C API with its own source enum by @HeikoGr in #93
  • Define the front-end phase once in session_controller by @HeikoGr in #96
  • Show failed and stopped searches on the display and in the web UI by @HeikoGr in #97
  • Name the hub SD files by mediaId by @ThomasPohl in #98
  • Read the thumbnail media id at offset 0x28 by @ThomasPohl in #112
  • Dev container: CI tools, ESP-IDF in every shell, USB access to boards by @HeikoGr in #95
  • camera_link: move the handshake out of camera_protocol.cpp by @HeikoGr in #107
  • camera_link: collect the video download figures in VideoTransferStats by @HeikoGr in #108
  • web_ui: keep a landscape video and its controls inside the viewer by @HeikoGr in #110
  • Merge #111 (PlaybackDownload) into main by @ThomasPohl in #116
  • camera_link: move the video download by playback into PlaybackDownload by @HeikoGr in #111
  • Document the camera's delete and format commands by @HeikoGr in #115
  • docs: follow-ups to the camera delete and format notes by @ThomasPohl in #120
  • Add a console command that lists the media on the camera by @HeikoGr in #119
  • Read all pages of the camera's media list in a scan by @ThomasPohl in #124
  • Count only new media frames as progress for the session watchdog by @ThomasPohl in #125
  • Report a camlist listing as listed, not as a scan by @ThomasPohl in #127
  • Session Results to main by @ThomasPohl in #128
  • Merge the session result work into main by @ThomasPohl in #129
  • Report the camera's SD card state in the check-in and show it in the app by @ThomasPohl in #130
  • Read several cameras in one scan by @ThomasPohl in #131
  • Merge the multi-camera scan into main by @ThomasPohl in #132
  • Telegram bot: webhook, notifications and pairing by QR code by @ThomasPohl in #133
  • Measure the hub battery (MAX17048) and send it in the check-in by @ThomasPohl in #137
  • Download and upload videos on request by @ThomasPohl in #139
  • Firmware updates through the check-in (OTA with rollback) by @ThomasPohl in #140
  • Backend uplink over the A7670E cellular modem (USB host, PPP) by @ThomasPohl in #141

New Contributors

Full Changelog: https://github.com/ThomasPohl/TrailCamHub/commits/v0.1.0