Repository navigation
Releases
v0.2.1 - two options, default marked
UI simplification.
The popover now lists exactly two options - run always and off-peak only - and marks
whichever one the host-wide default resolves to. A session with no override selects that
row, which is what the removed follow-the-default row used to express; with the default
set to off-peak only, those two rows did the same thing.
Both options now write an explicit per-session override. mode:null stays available in the
API and the request builder still passes it through, but the UI no longer offers it, so a
session that has been chosen once keeps its choice when the default changes.
v0.2.0 - per-session run modes
Per-session run modes.
BREAKING: the mode is no longer one host-wide value. Every session now carries
its own choice, and a task is judged by the session that owns it. Sessions
without an explicit choice follow default, which is where the previous global
value migrates to - so after upgrading, every session that was never configured
individually keeps behaving exactly as before.
- Session resolution reads the injected agent from the event payload (the
listenerthisis an opaque scope carrier, not the Agent - measured against
the real cordis runtime) - Per-session waiter accounting;
waitingTasksis this session's count when
?session=is given and the host-wide count otherwise - State file v2 with v1 migration and an LRU-capped session table
- Write fencing: scope/session validation that can never widen a session write
into a default write, JSON content-type required, 30-minute clock TTL cap mode: nullclears a session's override so it follows the default again- Client: composer control and queue banner act on the current session, the
popover labels the scope of each change, and an older host degrades to
read-only instead of writing a global mode - 513 tests green (author suites 376, independent verification 137)
v0.1.1
Documentation release.
- README.zh.md rewritten to match the English README: the queue banner, the
client-side boundary behaviour (local phase flip, 3-second polling near a
boundary, no negative countdown), thedsh plugin addinstall path and the
current test counts - No functional change
v0.1.0
Initial release.
- A composer control switching between "run always" and "off-peak only"
- Every dsh task, including one already running, pauses when a China peak-price
window starts and resumes at the boundary: Beijing time, Monday to Friday
09:00-12:00 and 14:00-18:00, statutory holidays excluded; weekends and
holidays are idle all day - Built-in 2025 and 2026 statutory holiday calendar taken from the State
Council notices, with an explicit "unknown year" state for 2027 onwards - Host routes for state, mode and a TTL-bounded clock override
- Composer banner announcing the queue and the time work will start
- 403 checks passing across the author suites and the independent verification suite
Install: dsh plugin --profile web add github:lion231226/dsh-peak-hours