Skip to content

v0.8.0

Latest

Choose a tag to compare

@Wecury Wecury released this 07 Sep 18:12
· 1 commit to main since this release
c63774d

Highlights

  • 🟒 Login results land in the panel β€” finishing the login flow now pops a
    green "credential saved" (or yellow failure) notice in the sticky bar, so the
    outcome of a browser sign-in is visible without digging through logs.

  • πŸš€ Nothing blocks the request path any more β€” python/deps probing is fully
    async (no more worst-case ~27s event-loop freezes), and the one-click model &
    reasoning sync answers immediately: the scan runs on the host and the
    result arrives through the status poll, with a steady "scan running" notice.

  • 🧱 A modular host β€” lib/index.js shrank from 650 to 193 lines of pure
    wiring; config, diagnostics, process lifecycle and settings-sync each live in
    their own module. Zero behavior change, verified by a new test suite.

  • πŸ§ͺ First test suite β€” npm test ships 18 node:test cases covering the
    settings.yaml patcher: idempotency, CRLF handling, byte-level preservation
    of comments and unrelated providers, and the verify-after-write round-trip.

  • 🩹 Startup credential validation (ported from upstream 32df4a5) β€” saved
    credentials are checked against the backend at proxy start. A revoked token
    now opens the sign-in window instead of silently serving 401s; an unreachable
    backend keeps serving so a transient outage can't kill DSH autostart. Plus the
    0.7.2 streaming fixes: truncated streams end gracefully and upstream failures
    answer 502 instead of hanging.

Changelog

Features

  • ✨ login: the flow's outcome surfaces in the sticky notice β€” green when a
    credential was saved, yellow on failure; a 10-minute freshness window means a
    panel reopened hours later never replays stale results
  • ✨ sync: effort-scan returns instantly ({ async: true }) and reports via
    /api/status (mirrors start/login); double clicks are refused host-side
    ("a scan is already running")
  • ✨ proxy: validate saved credentials at startup (upstream 32df4a5,
    plugin-adapted: only a definite 401/403 falls back to the browser β€” an
    unreachable backend keeps the saved credential and serves)

Bug Fixes

  • πŸ› proxy: truncated upstream streams finish gracefully β€” a final chunk with
    the observed finish_reason (or stop) plus usage and [DONE], so strict
    clients no longer fail with "Stream ended without finish_reason"; upstream
    failures answer 502 instead of leaving the request hanging (0.7.2)
  • πŸ› panel: info notices tinted with real DSH blue tokens β€” the brand alias is
    near-monochrome, so they previously rendered gray
  • πŸ› panel: boot anchor poll stops once the shell is pinned (ResizeObserver
    takes over); closed-panel status polling slowed from 3s to 10s

Refactoring

  • ♻️ host: index.js split into lib/config.js, lib/diagnostics.js,
    lib/proxy-process.js, lib/effort-scan.js β€” the entry file is a 193-line
    wiring layer only
  • ♻️ panel: styles extracted to lib/panel.css (served via /panel.css),
    dictionaries to lib/panel-i18n.js injected before panel.js
  • ⚑ host: probing rewritten on async spawn with in-flight dedup β€” even a cold
    probe never blocks the event loop
  • πŸ”§ pack: auto-relinks the junction + profile dependency and always writes the
    profile package.json BOM-free β€” the local test loop is now exactly
    "pack + restart"

Tests

  • βœ… npm test: 18 node:test cases for settings-patch.js β€” effort-block
    insertion & indentation, idempotency (NO_CHANGE + already), CRLF
    detection & preservation, byte-for-byte comment/provider preservation, empty
    models: lists, ensureProvider chain creation & name-collision avoidance,
    and the three-round verify-after-write invariant

Full Changelog: v0.7.1...v0.8.0