Skip to content

Releases: more-14-different/tacky-borders

v1.6.1-runtime.7

v1.6.1-runtime.7 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 21 Sep 12:23

Final defensive cleanup preview

This fork-specific prerelease closes the remaining defensive edge cases on top of runtime
hardening preview 6.

Changes since preview 6

  • Makes UnixStreamSink the sole owner of its completion port while the worker uses a borrowed,
    non-closing handle, eliminating the stale raw-handle race during exceptional worker exits.
  • Preserves the completion-port owner together with pending OVERLAPPED backing storage if a
    catastrophic drain failure prevents proving that every operation completed.
  • Validates Komorebi notification arrays, indexes, and window handles without panicking on schema
    drift or malformed external data.
  • Builds Komorebi focus state transactionally and publishes it only after the entire notification
    has been validated.
  • Adds a malformed-schema regression test and FIFO runtime snapshot barriers to the create/reload
    window tests.

Validation

  • cargo fmt --check passed.
  • cargo check --all-targets passed.
  • All 44 automated tests passed on Windows.
  • cargo clippy --all-targets completed successfully with non-blocking style warnings.
  • cargo build --release passed.
  • The focused Komorebi, IOCP panic/shutdown, and window-runtime regression tests passed.
  • git diff --check passed.

This is an independently maintained prerelease of more-14-different/tacky-borders, not an
upstream luke-you/tacky-borders release.

v1.6.1-runtime.6

v1.6.1-runtime.6 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 21 Sep 09:15

IOCP exceptional-exit cleanup preview

This fork-specific prerelease closes the final exceptional-exit lifetime gap in the Windows Unix
stream sink on top of runtime hardening preview 5.

Changes since preview 5

  • Routes normal shutdown, worker errors, and callback panics through one unconditional IOCP
    cancel-and-drain epilogue before releasing any pending OVERLAPPED storage.
  • Keeps newly issued AcceptEx streams under cleanup ownership before later fallible operations
    and removes streams whose WSARecv fails synchronously without creating a completion.
  • Accounts for completion packets already dequeued in a partially processed IOCP batch before
    canceling and draining operations that remain queued.
  • Ignores late stop packets during cleanup and intentionally preserves pending I/O backing storage
    if a catastrophic drain failure prevents proving that every operation completed.
  • Adds a regression test covering callback panic while a trailing AcceptEx is pending.

Validation

  • cargo fmt --check passed.
  • cargo check --all-targets passed.
  • All 43 automated tests passed on Windows.
  • cargo clippy --all-targets completed successfully with only pre-existing style warnings.
  • cargo build --release passed.
  • git diff --check passed.

This is an independently maintained prerelease of more-14-different/tacky-borders, not an
upstream luke-you/tacky-borders release.

v1.6.1-runtime.5

v1.6.1-runtime.5 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 21 Sep 08:23

Final lifecycle cleanup preview

This fork-specific prerelease completes the final lifecycle cleanup on top of runtime hardening
preview 4.

Changes since preview 4

  • Drains canceled IOCP operations without a deadline before releasing their OVERLAPPED storage
    and buffers, with a shared stop flag as a fallback if posting the stop packet fails.
  • Hardens config watching for notification-buffer overflow and atomic-save rename/replace patterns,
    expands the buffer, and performs an interruptible debounce before reloading.
  • Moves background-service joins to a shutdown coordinator while keeping the UI message pump alive,
    then finalizes border destruction and process exit on the runtime owner thread.
  • Makes theme settling stop-aware and always resolves ThemeWatcher and DisplayAdaptersWatcher worker
    ownership even when stop-event signaling fails.
  • Adds focused lifecycle regression coverage for pending watcher reads, atomic config replacement,
    notification overflow, and Unix stream shutdown with pending I/O.

Validation

  • cargo fmt --check passed.
  • cargo check --all-targets passed.
  • All 42 automated tests passed on Windows.
  • cargo clippy --all-targets completed successfully with only pre-existing style warnings.
  • cargo build --release passed.
  • git diff --check passed.

This is an independently maintained prerelease of more-14-different/tacky-borders, not an
upstream luke-you/tacky-borders release.

v1.6.1-runtime.4

v1.6.1-runtime.4 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 21 Sep 03:38

Final lifecycle hardening preview

This fork-specific prerelease completes the Phase 9.1 lifecycle hardening on top of runtime
hardening preview 3.

Changes since preview 3

  • Reworks the config watcher around overlapped ReadDirectoryChangesW I/O with dedicated change
    and stop events, removing the shutdown race between checking the stop flag and entering a
    synchronous directory read.
  • Cancels and drains the exact pending watcher request before its notification buffer,
    OVERLAPPED, or handles are released.
  • Adds a finite IPC send timeout alongside the existing receive timeout so a client that stops
    reading responses cannot hold daemon shutdown open indefinitely.
  • Limits malformed-config error dialogs to one active worker while continuing to log every parse
    failure.
  • Owns and joins the config reload management worker during shutdown, preventing late reload work
    from recreating borders or background services after teardown starts.

Validation

  • cargo fmt --check passed.
  • cargo check --all-targets passed.
  • All 38 automated tests passed on Windows.
  • cargo clippy --all-targets completed successfully with only pre-existing style warnings.
  • cargo build --release passed.
  • git diff --check passed.

This is an independently maintained prerelease of more-14-different/tacky-borders, not an
upstream luke-you/tacky-borders release.

v1.6.1-runtime.3

v1.6.1-runtime.3 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 20 Sep 20:02

Background-service lifecycle hardening preview

This fork-specific prerelease completes the Phase 9 lifecycle hardening on top of runtime
hardening preview 2.

Changes since preview 2

  • Routes config watcher, tray, and IPC reload requests through a serialized, coalescing management
    worker so a config watcher can never destroy and join itself.
  • Adds an explicit stop, cancellation, unpark, and join protocol for config watchers while keeping
    malformed-config recovery observable by the existing watcher.
  • Owns and stops the komorebi subscription retry thread, replacing its fixed 15-second sleep with
    an interruptible wait so repeated enable/disable cycles cannot accumulate workers.
  • Tracks IPC client workers, gives idle sockets a finite read timeout, and joins all clients during
    server shutdown. Reload acknowledgements are written before reload work is scheduled.
  • Replaces fixed 50 ms integration-test sleeps with border-count predicate waits and diagnostic
    timeouts.
  • Adds two unit tests covering config reload request coalescing and restart after completion.

Validation

  • cargo fmt --check passed.
  • cargo check --all-targets passed.
  • All 38 automated tests passed on Windows.
  • cargo clippy --all-targets completed successfully with only pre-existing style warnings.
  • cargo build --release passed.
  • git diff --check passed.

This is an independently maintained prerelease of more-14-different/tacky-borders, not an
upstream luke-you/tacky-borders release.

v1.6.1-runtime.2

v1.6.1-runtime.2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 20 Sep 18:19

Runtime hardening preview 2

This fork-specific prerelease contains the Phase 8 runtime and graphics hardening from preview 1,
plus fixes found during real debug use on Windows.

Changes since preview 1

  • Makes border and runtime timer teardown idempotent and treats already-fired or never-armed
    one-shot timers as normal cleanup state. This removes repeated misleading
    The operation completed successfully. (0x00000000) error logs when windows close.
  • Preserves foreground state received during delayed border initialization without attempting to
    render before the backend exists.
  • Stops retrying render and resize operations when their objects are temporarily uninitialized;
    device-loss and render-target recovery paths continue to retry normally.
  • Adds run-debug.ps1 for rebuild-and-restart development and run-release.ps1 for restarting an
    existing release build.
  • Documents the executable-independent configuration location and why the only config copy should
    not live under target.

Validation

  • cargo fmt --check passed.
  • cargo check --all-targets passed.
  • All 36 automated tests passed on Windows.
  • A real top-level test window produced the expected border-count transition (9 -> 10 -> 9)
    across creation and destruction, with no new error log entries.

This is an independently maintained prerelease of more-14-different/tacky-borders, not an
upstream luke-you/tacky-borders release.

v1.6.1-runtime.1 — Runtime hardening preview 1

Choose a tag to compare

Runtime hardening preview 1

This is the first independently maintained runtime-hardening release of the
more-14-different/tacky-borders fork. It is based on upstream v1.6.0 plus the later per-side
border-offset change and remains compatible with the existing configuration format and CLI.

Highlights

  • Centralizes live border ownership, animation scheduling, lifecycle reconciliation, foreground
    state, and graphics mutation on the UI runtime thread.
  • Replaces per-border animation workers and polling threads with runtime timers and EnumWindows
    snapshot reconciliation.
  • Coalesces reorder and location-change storms without losing their trailing state.
  • Prevents an unelevated process from repeatedly attempting to decorate elevated windows.
  • Routes IPC, komorebi, display-adapter, and window events through typed runtime commands.
  • Hardens DirectX recovery for render-target loss and same-adapter device removal/reset.
  • Uses RAII guards for Direct2D multithread locks, draw sessions, and DirectComposition surface
    draw sessions.

Validation

  • 36 automated tests passed on Windows.
  • Debug and release builds completed successfully.
  • V2 -> Legacy -> V2 transitions completed without graphics recovery loops.
  • 5,000 location changes, 5,000 reorder events, IPC traffic, and repeated reloads completed without
    linear handle or thread growth.
  • Unelevated runtime behavior was checked against an elevated application window.

Physical GPU reset, monitor dock/undock, and sleep/resume fault injection were not performed for
this preview.

This is a fork-specific prerelease, not an upstream luke-you/tacky-borders release.