Skip to content

Releases

v0.2.1 - two options, default marked

Choose a tag to compare

@lion231226 lion231226 released this 14 Oct 12:23

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

Choose a tag to compare

@lion231226 lion231226 released this 14 Oct 11:52

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
    listener this is an opaque scope carrier, not the Agent - measured against
    the real cordis runtime)
  • Per-session waiter accounting; waitingTasks is 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: null clears 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

Choose a tag to compare

@lion231226 lion231226 released this 09 Oct 12:25

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), the dsh plugin add install path and the
    current test counts
  • No functional change

v0.1.0

Choose a tag to compare

@lion231226 lion231226 released this 09 Oct 12:14

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