Chuck and Claude Opus 5.5
0577c807eb
feat(plugins): request_on_demand() / end_on_demand() -- plugins ask for the screen in-process ( #768 )
...
* feat(plugins): request_on_demand() / end_on_demand() -- plugins ask for the screen in-process
Four plugins (birdnet-go, mqtt-notifications, on-air, pomodoro-timer) take
the screen by writing the display_on_demand_request mailbox, which the
display reads once a second while the control socket is up and which stage 5
removes. This is the in-process way in that stage needed.
- BasePlugin.request_on_demand(mode=None, duration=None, pinned=False) and
end_on_demand(), safe from any thread, go through PluginManager to
DisplayController.submit_plugin_on_demand, which only queues (at most 32)
and wakes the render thread through ControlServer.wake(). The render
thread applies them in _drain_control_commands, after socket commands,
through _handle_on_demand_request, so they land within a frame; without a
socket, on the next pending-changes pass.
- A plugin's stop ends only its own session; a mailbox stop still ends any.
- Both answer the request id, or None with no display in the process (web
interface, check_plugin.py), a full queue, or a mock manager -- a plugin's
cue to write the mailbox, which the display still reads.
- docs/PLUGIN_API_REFERENCE.md documents the hasattr pattern for plugins
that must keep working on older cores; IPC_CONTROL_SOCKET.md and the
CHANGELOG are updated.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
* fix(display): wire the on-demand handler only on a manager that has it
Tests and the golden traces stand in simpler plugin managers.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-05 01:39:02 -04:00
..
2026-10-04 13:25:12 -04:00
2026-10-04 23:18:02 -04:00
2026-10-01 10:45:28 -04:00
2026-10-04 23:18:02 -04:00
2026-03-20 15:06:58 -04:00
2026-09-30 10:48:14 -04:00
2026-10-04 22:44:17 -04:00
2026-10-03 13:09:53 -04:00
2026-10-03 12:11:27 -04:00
2026-07-12 10:38:52 -04:00
2026-10-02 18:15:28 -04:00
2026-09-30 10:39:44 -04:00
2026-10-01 20:37:54 -04:00
2026-09-28 08:24:43 -04:00
2026-09-30 10:39:44 -04:00
2026-09-30 10:39:44 -04:00
2026-09-30 10:39:44 -04:00
2026-09-11 10:07:38 -04:00
2026-09-30 11:15:31 -04:00
2026-10-03 22:18:54 -04:00
2026-10-04 20:56:00 -04:00
2026-10-04 20:56:00 -04:00
2026-09-30 10:39:44 -04:00
2026-08-23 11:44:23 -04:00
2026-10-03 22:30:39 -04:00
2026-10-04 22:44:17 -04:00
2026-10-03 22:30:39 -04:00
2026-09-28 08:24:43 -04:00
2026-10-03 22:30:28 -04:00
2026-10-03 22:30:39 -04:00
2026-09-30 10:39:44 -04:00
2026-09-30 10:48:14 -04:00
2026-10-03 22:30:39 -04:00
2026-10-03 22:30:39 -04:00
2026-09-23 10:29:16 -04:00
2026-09-24 17:35:49 -04:00
2026-09-11 10:07:38 -04:00
2026-10-04 15:07:19 -04:00
2026-09-30 10:39:44 -04:00
2026-09-11 10:07:38 -04:00
2026-09-24 17:35:49 -04:00
2026-09-28 10:42:07 -04:00
2026-10-03 22:18:42 -04:00
2026-09-28 10:40:16 -04:00
2026-10-03 13:09:53 -04:00
2026-10-03 13:09:53 -04:00
2026-09-18 09:56:50 -04:00
2026-09-28 11:08:43 -04:00
2026-08-26 10:03:43 -04:00
2026-09-01 09:54:04 -04:00
2026-09-30 10:48:14 -04:00
2026-10-03 14:26:03 -04:00
2026-08-07 16:17:11 -04:00
2026-09-13 11:53:50 -04:00
2026-09-28 10:41:40 -04:00
2026-09-28 10:39:40 -04:00
2026-09-24 15:51:53 -04:00
2026-09-30 09:38:16 -04:00
2026-08-12 08:42:56 -04:00
2026-10-03 22:18:00 -04:00
2026-10-03 14:14:08 -04:00
2026-10-01 10:45:28 -04:00
2026-08-19 12:28:22 -04:00
2026-10-03 22:18:00 -04:00
2026-09-07 13:37:54 -04:00
2026-08-12 08:40:07 -04:00
2026-09-17 12:38:39 -04:00
2026-10-03 14:26:03 -04:00
2026-09-23 12:54:07 -04:00
2026-08-11 14:14:25 -04:00
2026-10-03 14:14:08 -04:00
2026-08-19 17:40:52 -04:00
2026-09-14 09:42:24 -04:00
2026-09-23 16:33:24 -04:00
2026-09-28 08:26:05 -04:00
2026-09-28 10:41:40 -04:00
2026-09-23 12:52:50 -04:00
2026-10-01 08:27:16 -04:00
2026-10-03 22:30:16 -04:00
2026-09-11 10:07:38 -04:00
2026-10-03 22:30:16 -04:00
2026-08-06 14:04:23 -04:00
2026-10-03 22:18:42 -04:00
2026-09-23 12:36:26 -04:00
2026-09-24 17:32:02 -04:00
2026-09-17 16:37:29 -04:00
2026-09-30 10:48:14 -04:00
2026-08-04 13:46:28 -04:00
2026-09-03 16:06:40 -04:00
2026-09-28 10:39:40 -04:00
2026-10-01 10:45:28 -04:00
2026-10-01 08:37:15 -04:00
2026-09-23 16:48:02 -04:00
2026-09-28 15:00:45 -04:00
2026-10-04 22:15:30 -04:00
2026-09-28 08:25:26 -04:00
2026-09-28 09:07:08 -04:00
2026-09-23 10:29:16 -04:00
2026-08-23 11:43:39 -04:00
2026-10-01 16:10:04 -04:00
2026-09-23 10:29:16 -04:00
2026-10-02 22:30:52 -04:00
2026-09-28 08:26:05 -04:00
2026-09-28 10:39:40 -04:00
2026-09-24 17:37:15 -04:00
2026-09-23 12:36:26 -04:00
2026-10-01 20:27:20 -04:00
2026-09-07 13:37:54 -04:00
2026-10-03 22:18:19 -04:00
2026-10-01 14:51:38 -04:00
2026-09-17 16:37:29 -04:00
2026-10-04 17:17:10 -04:00
2026-09-28 10:39:40 -04:00
2026-10-03 11:51:06 -04:00
2026-10-01 16:10:04 -04:00
2026-09-24 17:35:49 -04:00
2026-09-30 11:15:31 -04:00
2026-08-06 14:04:23 -04:00
2026-09-28 10:40:16 -04:00
2026-09-28 10:40:16 -04:00
2026-09-24 17:32:29 -04:00
2026-08-07 13:27:20 -04:00
2026-09-24 17:32:29 -04:00
2026-09-28 10:40:16 -04:00
2026-10-04 22:44:17 -04:00
2026-10-04 15:46:15 -04:00
2026-10-03 14:14:08 -04:00
2026-09-29 11:49:36 -04:00
2026-10-04 18:56:32 -04:00
2026-10-01 10:00:26 -04:00
2026-09-24 17:31:41 -04:00
2026-10-03 14:01:23 -04:00
2026-10-01 10:45:28 -04:00
2026-09-24 17:32:29 -04:00
2026-09-23 16:50:42 -04:00
2026-10-01 20:13:57 -04:00
2026-10-03 11:51:06 -04:00
2026-08-21 14:30:29 -04:00
2026-10-04 22:15:30 -04:00
2026-09-07 13:37:38 -04:00
2026-07-12 10:38:52 -04:00
2026-09-30 21:32:07 -04:00
2026-08-21 15:50:55 -04:00
2026-09-28 11:08:43 -04:00
2026-09-23 12:36:26 -04:00
2026-08-12 14:58:05 -04:00
2026-08-23 11:42:51 -04:00
2026-10-03 13:35:13 -04:00
2026-08-03 16:52:42 -04:00
2026-10-03 13:35:13 -04:00
2026-10-03 13:09:53 -04:00
2026-10-03 13:48:27 -04:00
2026-09-28 15:00:45 -04:00
2026-10-04 20:56:00 -04:00
2026-10-04 22:44:17 -04:00
2026-10-01 10:33:02 -04:00
2026-10-04 22:15:30 -04:00
2026-10-01 10:33:02 -04:00
2026-10-01 20:37:54 -04:00
2026-10-04 22:44:17 -04:00
2026-10-03 22:18:31 -04:00
2026-08-21 15:50:55 -04:00
2026-09-23 10:29:16 -04:00
2026-10-03 14:38:27 -04:00
2026-09-28 15:00:45 -04:00
2026-09-18 11:09:25 -04:00
2026-09-24 17:35:49 -04:00
2026-09-11 08:41:58 -04:00
2026-09-23 12:36:26 -04:00
2026-09-28 10:40:16 -04:00
2026-09-28 08:26:05 -04:00
2026-09-28 08:26:05 -04:00
2026-09-28 10:40:16 -04:00
2026-09-28 10:39:40 -04:00
2026-09-24 17:32:02 -04:00
2026-10-03 22:30:51 -04:00
2026-09-08 08:34:52 -04:00
2026-08-11 16:10:56 -04:00
2026-09-24 19:57:03 -04:00
2026-09-30 09:10:41 -04:00
2026-10-04 19:27:51 -04:00
2026-09-07 13:37:38 -04:00
2026-09-29 17:59:12 -04:00
2026-09-30 10:39:44 -04:00
2026-09-23 10:34:20 -04:00
2026-09-28 10:41:40 -04:00
2026-09-30 10:39:44 -04:00
2026-09-30 10:39:44 -04:00
2026-09-30 10:39:44 -04:00
2026-09-28 10:40:16 -04:00
2026-09-15 19:17:48 -04:00
2026-08-17 15:35:02 -04:00
2026-09-08 08:34:52 -04:00
2026-09-28 15:00:45 -04:00
2026-09-30 09:10:41 -04:00
2026-09-30 09:31:16 -04:00
2026-08-21 16:19:33 -04:00
2026-09-11 08:41:58 -04:00
2026-09-30 09:10:41 -04:00
2026-08-19 12:28:22 -04:00
2026-10-03 22:18:42 -04:00
2026-10-03 22:18:42 -04:00
2026-09-28 08:25:45 -04:00
2026-09-24 17:32:29 -04:00
2026-08-23 11:43:39 -04:00
2026-09-28 10:41:40 -04:00
2026-09-28 08:25:45 -04:00
2026-09-24 17:32:02 -04:00
2026-07-09 07:54:18 -04:00
2026-10-05 01:39:02 -04:00
2026-10-02 13:42:23 -04:00
2026-10-04 20:56:00 -04:00
2026-09-30 10:48:14 -04:00
2026-09-24 17:32:02 -04:00
2026-09-17 16:37:29 -04:00
2026-09-30 10:48:14 -04:00
2026-10-03 22:18:42 -04:00
2026-09-30 20:59:16 -04:00
2026-09-23 12:36:26 -04:00
2026-10-03 14:01:23 -04:00
2026-09-30 10:48:14 -04:00
2026-09-30 10:39:44 -04:00
2026-09-24 15:49:51 -04:00
2026-10-03 13:09:53 -04:00
2026-08-07 13:02:59 -04:00
2026-09-28 08:25:26 -04:00
2026-09-24 17:32:02 -04:00
2026-09-30 10:39:44 -04:00
2026-10-03 14:14:08 -04:00
2026-09-23 16:33:24 -04:00
2026-09-28 10:39:40 -04:00
2026-10-04 13:25:12 -04:00
2026-10-01 15:59:14 -04:00
2026-10-01 20:37:54 -04:00
2026-10-01 15:59:14 -04:00
2026-09-17 16:37:29 -04:00
2026-09-24 17:32:02 -04:00
2026-10-01 14:32:24 -04:00
2026-08-21 16:22:48 -04:00
2026-08-07 10:17:30 -04:00
2026-05-15 10:19:55 -04:00
2026-09-28 10:41:40 -04:00
2026-10-04 22:15:30 -04:00
2026-10-01 14:15:22 -04:00
2026-07-31 09:40:38 -04:00
2026-09-28 08:26:05 -04:00
2026-10-01 09:48:47 -04:00
2026-09-30 20:50:34 -04:00
2026-10-03 22:18:19 -04:00
2026-09-30 21:07:31 -04:00
2026-10-03 14:26:03 -04:00
2026-09-17 16:37:29 -04:00
2026-10-04 14:41:47 -04:00
2026-10-01 20:27:20 -04:00
2026-09-29 12:38:40 -04:00
2026-10-03 22:19:05 -04:00
2026-09-29 12:38:40 -04:00
2026-10-01 10:10:22 -04:00
2026-09-30 09:11:02 -04:00
2026-09-29 12:38:40 -04:00
2026-10-01 10:10:22 -04:00
2026-09-13 11:53:50 -04:00
2026-09-15 15:32:21 -04:00
2026-10-01 10:10:22 -04:00
2026-10-01 10:10:22 -04:00
2026-10-03 14:01:23 -04:00
2026-10-01 20:39:44 -04:00
2026-09-17 16:37:29 -04:00
2026-09-20 18:25:33 -04:00
2026-09-29 12:38:40 -04:00
2026-10-01 10:10:22 -04:00
2026-08-26 11:25:10 -04:00
2026-09-29 09:05:10 -04:00
2026-10-03 22:19:05 -04:00
2026-09-30 21:32:07 -04:00
2026-09-23 16:33:12 -04:00
2026-09-11 10:07:38 -04:00
2026-09-28 08:26:05 -04:00
2026-10-04 15:07:19 -04:00
2026-09-24 17:32:02 -04:00
2026-09-28 10:41:40 -04:00
2026-09-28 15:00:45 -04:00
2026-09-23 16:33:24 -04:00
2026-09-28 08:24:43 -04:00
2026-09-30 10:39:44 -04:00
2026-10-03 22:18:42 -04:00
2026-09-24 17:32:02 -04:00
2026-07-13 09:32:37 -04:00
2026-09-24 17:31:41 -04:00
2026-09-24 17:31:41 -04:00
2026-09-24 15:51:14 -04:00
2026-09-28 10:40:16 -04:00
2026-09-11 08:45:40 -04:00
2026-09-30 10:39:44 -04:00
2026-10-03 14:26:03 -04:00
2026-09-24 17:31:41 -04:00
2026-08-06 14:04:23 -04:00
2026-09-28 08:25:45 -04:00
2026-10-01 20:19:30 -04:00
2026-09-30 10:48:14 -04:00
2026-09-23 12:36:26 -04:00
2026-09-30 15:35:26 -04:00
2026-08-21 14:30:29 -04:00
2026-10-03 13:09:53 -04:00
2026-09-24 17:37:15 -04:00
2026-09-24 17:37:15 -04:00
2026-10-01 08:27:16 -04:00
2026-10-01 08:27:16 -04:00
2026-09-24 19:38:22 -04:00
2026-09-28 08:25:26 -04:00
2026-09-30 20:59:16 -04:00
2026-09-30 20:59:16 -04:00
2026-08-23 11:42:33 -04:00
2026-08-12 14:06:32 -04:00
2026-09-24 17:37:15 -04:00
2026-09-30 21:07:31 -04:00
2026-09-30 21:07:31 -04:00
2026-09-30 20:59:16 -04:00
2026-09-30 21:07:31 -04:00
2026-09-30 21:07:31 -04:00
2026-10-01 09:48:47 -04:00
2026-10-01 08:27:16 -04:00
2026-10-01 09:48:47 -04:00
2026-08-21 15:50:55 -04:00
2026-10-04 20:56:00 -04:00
2026-07-08 09:43:13 -04:00
2026-10-01 09:48:47 -04:00
2026-09-24 17:37:15 -04:00
2026-09-28 10:39:14 -04:00
2026-09-30 09:30:37 -04:00
2026-09-24 19:57:03 -04:00
2026-09-23 16:33:24 -04:00
2026-09-23 12:36:26 -04:00
2026-10-04 20:56:00 -04:00
2026-09-30 15:35:26 -04:00
2026-09-10 17:42:00 -04:00
2026-09-23 12:36:53 -04:00
2026-09-24 15:53:19 -04:00
2026-09-30 09:02:01 -04:00
2026-10-04 20:56:00 -04:00
2026-09-30 10:39:44 -04:00
2026-09-30 10:39:44 -04:00
2026-09-30 09:38:16 -04:00
2026-10-03 13:09:53 -04:00
2026-09-09 16:25:45 -04:00
2026-09-14 09:42:24 -04:00
2026-09-28 10:42:07 -04:00
2026-09-14 12:40:41 -04:00
2026-09-14 12:40:41 -04:00
2026-09-24 17:32:29 -04:00
2026-10-01 15:51:00 -04:00
2026-09-28 08:26:05 -04:00