Request
Run bd1 and bd1-eurecia from a terminal through Docker Compose, with TTY
interaction only: reports, manual marks, Eurecia preview and push, lint, unit
tests, and the Linux build. No tray, no windows, no X server.
Why
- A simple context: one compose file, one command per action, nothing installed
on the host beyond Docker. No Python version, venv, Tk or tray backend to set
up.
- Isolation: the database and settings live in a named volume, separate from a
BD-1 installed on the host.
- The GUI parts are the platform-specific ones. Keeping them out of this path
removes the desktop complexity for users who only need the reports and the
Eurecia synchronization.
Past days from system logs, no live listener
Without the tray application nothing feeds the database, so the same CLI
should build observations from logs the operating system already writes,
read after the fact from inside the container:
- macOS:
/private/var/log/powermanagement/YYYY.MM.DD.asl, one file per day,
readable by any user, about ten days of history. Its "Display is turned on",
"Display is turned off", wake and sleep entries describe presence; DarkWake
and maintenance sleeps are noise. The folder is bind-mounted read-only into
the container and parsed there, so no host command, no listener, no Input
Monitoring permission and no Gatekeeper step.
- Same idea later for Linux (journald, last) and Windows (event log).
Current state
README development setup:
macOS 26.5, Homebrew Python:
$ python3.13 -m venv .venv
zsh: command not found: python3.13
$ python3 -c "import tkinter"
ModuleNotFoundError: No module named '_tkinter'
No Dockerfile or compose.yml in the repository.
Evidence for the log source, macOS 26.5:
$ ls -la /private/var/log/powermanagement | tail -3
-rw-r--r-- 1 root admin 2340706 Sep 17 23:59 2026.09.17.asl
-rw-r--r-- 1 root admin 1317659 Sep 18 10:04 2026.09.18.asl
-rw-r--r-- 1 root admin 8 Sep 18 10:04 StoreData
$ xxd -l 16 /private/var/log/powermanagement/2026.09.17.asl
00000000: 4153 4c20 4442 0000 0000 0000 0000 0002 ASL DB..........
$ pmset -g log | awk '/^2026-09-17/ && $4=="Notification"' | head -4
2026-09-17 09:11:42 +0200 Notification Display is turned on
2026-09-17 09:11:46 +0200 Notification Display is turned off
2026-09-17 09:11:48 +0200 Notification Display is turned on
2026-09-17 09:12:18 +0200 Notification Display is turned off
A stdlib-only Python reader of the 2026-09-17 file walks 2973 records and
finds 15 "Display is turned on", 15 "Display is turned off", 127 wake and
124 sleep entries.
$ bd1 --report today --date 2026-09-17
2026-09-17: no observations
Request
Run bd1 and bd1-eurecia from a terminal through Docker Compose, with TTY
interaction only: reports, manual marks, Eurecia preview and push, lint, unit
tests, and the Linux build. No tray, no windows, no X server.
Why
on the host beyond Docker. No Python version, venv, Tk or tray backend to set
up.
BD-1 installed on the host.
removes the desktop complexity for users who only need the reports and the
Eurecia synchronization.
Past days from system logs, no live listener
Without the tray application nothing feeds the database, so the same CLI
should build observations from logs the operating system already writes,
read after the fact from inside the container:
/private/var/log/powermanagement/YYYY.MM.DD.asl, one file per day,readable by any user, about ten days of history. Its "Display is turned on",
"Display is turned off", wake and sleep entries describe presence; DarkWake
and maintenance sleeps are noise. The folder is bind-mounted read-only into
the container and parsed there, so no host command, no listener, no Input
Monitoring permission and no Gatekeeper step.
Current state
README development setup:
macOS 26.5, Homebrew Python:
No Dockerfile or compose.yml in the repository.
Evidence for the log source, macOS 26.5:
A stdlib-only Python reader of the 2026-09-17 file walks 2973 records and
finds 15 "Display is turned on", 15 "Display is turned off", 127 wake and
124 sleep entries.