marker: persist project-wide markers_paused to the .gns3 file

pause/resume was fire-and-forget: the controller sent marker pause/resume but
stored nothing, so the Web UI could only keep a local optimistic flag that was
lost on panel reopen. Treat the mute as a project-level config (like per-marker
enabled): record _markers_paused, persist it in the topology (asdict + load),
and echo it on the project object so the UI renders from server truth.

Because marker pause is a uBridge runtime flag that resets on node restart,
start_all re-applies the mute to freshly started uBridges after a project
reopen — a paused project stays paused across close/reopen.
This commit is contained in:
YueGuobin committed 2026-08-02 22:21:05 +08:00
1 parent 8ba950fa29
commit f7d7ba165a
3 files changed
+21

No files matched your search

+8
View File
@@ -172,6 +172,14 @@ The two levers compose and do not overlap:
| `marker pause` (project) | stop | stop | kept (resume instant) |
| `marker resume` (project) | resume | resume | kept |
The project-wide pause state is **persisted** in the `.gns3` file as
`markers_paused` and echoed on the project object (`GET /v3/projects/{pid}`,
the `asdict()` body), so the Web UI renders the mute button from server truth
rather than a local optimistic flag. Because `marker pause` is a uBridge
runtime flag that resets when a node restarts, `start_all` re-applies the mute
to freshly started uBridges after a project reopen — so a paused project stays
paused across close/reopen.
## API Endpoints
All endpoints require a JWT bearer token (`POST /v3/access/users/authenticate`). The