Skip to content

Releases: dianlight/srat

Release 2026.7.0-rc11

Choose a tag to compare

@github-actions github-actions released this 12 Jul 09:45

Changelog

🔧 Chore

  • Migrate to TypeScript 7.0 RC (Go-based tsgo compiler):
    • Updated peer dependency to typescript: ^7.0.1-rc
    • Updated @typescript/native-preview to 7.0.0-dev.20260701.1
    • Updated tsconfig.json, migration docs, and instruction files
    • Patches esModuleInterop default and other TS 7.0 defaults

✨ Features

  • HDIdle per-disk model (Lab Mode feature): Replaced the global HDIdle
    enable/disable toggle with a fully per-disk configuration model gated behind
    Lab Mode (experimental_lab_mode=true). Key changes:
    • Per-disk enable/disable: each physical disk has its own HDIdle record
      (enabled: yes|custom|no); the service runs automatically when ≥1 disk is
      enabled. The five global Settings.hdidle_* fields have been removed.
    • Dashboard suggestion badge: HDDs that have not yet been configured show
      an inline "Enable HDIdle?" badge in the disk I/O table (visible only in Lab
      Mode). The badge provides Ignore (persists suggestion_ignored=true)
      and Enable (navigates to the per-disk card in the Volumes page).
    • Non-rotational guard: enabling HDIdle on an SSD/NVMe or a device with
      unknown rotational type opens a confirm dialog; accepting persists
      force_enabled=true so the warning does not repeat. The backend returns
      HTTP 409 if the flag is missing, preventing accidental spindowns of SSDs.
    • Rotational detection: Disk.is_rotational tri-state (HDD/SSD/unknown)
      is now derived from /sys/block/<dev>/queue/rotational (sysfs primary) with
      SMART rotation_rate as fallback. Unknown (e.g. USB enclosures) returns
      nil — treated as non-rotational for safety.
    • Ignore-suggestion endpoint: POST /api/disk/{id}/hdidle/ignore-suggestion
      persists the badge dismissal per disk.
    • Adaptive polling: the monitor goroutine polls every 60s when ≥1 disk is
      spun-up and slows to 5min when all monitored disks are already spun-down.
      The goroutine is never started when zero disks are enabled.
    • readOnly threading: the per-disk settings card now correctly propagates
      the readOnly flag from VolumeDetailsPanel.
  • mDNS Registration: Added optional mDNS registration of the SRAT service for local network discovery. When enabled, the backend registers a _srat._tcp service with the system mDNS responder, advertising the service name, port, and metadata. This allows compatible clients to discover the SRAT service on the local network without manual configuration. The feature is controlled by a new MDNSRegistration boolean setting in the advanced settings section.

🐛 Bug Fixes

  • HDIdle service permanently broken after first Stop(): Stop() no longer
    leaves stopChan non-nil after close. Subsequent Start() calls now succeed
    (idempotent). Fixes a latent bug where the service refused to restart after
    any config PUT.
  • Nested mutex deadlock in GetDeviceStatus, GetProcessStatus, and
    observeDiskActivity: calls to IsRunning() under an existing lock now read
    stopChan directly to avoid the deadlock inherent in re-acquiring an
    RWMutex that is not guaranteed reentrant.
  • GetDeviceConfig returned HTTP 500 when service disabled: the guard
    !s.config.Enabled → ErrorHDIdleNotSupported has been removed. The config
    endpoint is now always available for inspection/configuration regardless of
    whether the monitor goroutine is running.
  • disk_id injected unsanitised into file path: hdidle_handler.go was
    naïvely prefixing every disk_id with /dev/disk/by-id/ without validation.
    Replaced by HDIdleServiceInterface.ResolveDevicePath() which probes three
    candidate paths (absolute /dev/…, by-id, kernel name) and rejects inputs
    containing path-traversal characters.

🔄 Breaking Changes

  • Settings.hdidle_enabled, hdidle_default_idle_time, hdidle_default_command_type,
    hdidle_default_power_condition, and hdidle_ignore_spin_down_detection have
    been removed from the API and the DB (migration 00017 drops the
    corresponding rows from the properties table).
  • POST /api/hdidle/start and POST /api/hdidle/stop have been removed.
    The service lifecycle is now fully automatic (driven by the per-disk records).
  • PATCH /api/disk/{id}/hdidle/config has been removed (it was a dead spec
    entry with no handler).

🏗 Chore

  • DB migration 00017 (drop_global_hdidle_properties): deletes the five
    obsolete global HDIdle property rows. Down migration re-seeds them with their
    original defaults for dev/test rollback.
  • events.PowerEvent now carries a Kind PowerEventKind discriminant field
    (config or status) so subscribers can branch without comparing zero-values.
  • Two new dto.HDIdleDevice fields (SuggestionIgnored, ForceEnabled) and
    matching GORM/generated-layer/converter updates. Schema columns are added by
    GORM AutoMigrate on the next startup — no manual migration needed.
  • openapi.json is not regenerated in this branch — it requires a working
    Go toolchain and go run ./cmd/srat-openapi. CI must run
    go run ./cmd/srat-openapi -dir=backend/docs and
    cd frontend && bun run gen:api before merging to keep generated artifacts in
    sync. Three hand-edited generated files (config_to_dto_conv_gen.go,
    dto_to_dbom_conv_gen.go, g/hdidle_device_config.go) are aligned with their
    source directives — a go generate ./... run will produce the same output.

🔧 Maintenance

  • Multi-variant server release: Release archives now ship three srat-server variants — srat-server-static (fully static, zero shared-library dependencies), srat-server-musl (dynamic linked against musl libc, built via Zig), and srat-server-glib (dynamic linked against glibc, built via CGO). The srat-server entry in the archive is a symlink that defaults to srat-server-static; the upgrade process automatically updates it to the best available variant for the running system (musl → glibc → static). srat-openapi is no longer included in release archives. srat-cli is always statically linked.

What's Changed

  • 📚 docs: auto-fix documentation formatting and TOC by @github-actions[bot] in #670
  • ⬆️ Update @biomejs/biome to v2.4.16 by @renovate[bot] in #673
  • ⬆️ Update dependency npm:@typescript/native-preview to v7.0.0-dev.20260527.2 by @renovate[bot] in #675
  • ⬆️ Update dependency hk to v1.46.0 by @renovate[bot] in #678
  • ⬆️ Update dependency ruff to v0.15.15 by @renovate[bot] in #676
  • ⬆️ Update dependency act to v0.2.89 by @renovate[bot] in #674
  • ⬆️ Update dependency npm:@typescript/native-preview to v7.0.0-dev.20260607.1 by @renovate[bot] in #685
  • ⬆️ Update BackEnd by @renovate[bot] in #683
  • ⬆️ Update dependency go to v1.26.4 by @renovate[bot] in #684
  • ⬆️ Update dependency ruff to v0.15.16 by @renovate[bot] in #686
  • ⬆️ Update FrontEnd by @renovate[bot] in #687
  • ⬆️ Update CI/CD to v7 by @renovate[bot] in #688
  • feat(release): multi-variant server builds (static, musl, glibc) by @dianlight in #672
  • ⬆️ Update ghcr.io/devcontainers/features/copilot-cli Docker tag to v1.1.3 by @renovate[bot] in #677
  • ⬆️ Update CI/CD by @renovate[bot] in #663
  • ⬆️ Update dependency npm:@typescript/native-preview to v7.0.0-dev.20260609.1 by @renovate[bot] in #692
  • fix(hdidle): per-disk rework + review bug fixes by @dianlight in #690
  • ⬆️ Update BackEnd by @renovate[bot] in #693
  • 📚 docs: auto-fix documentation formatting and TOC by @github-actions[bot] in #691
  • ⬆️ Update dependency prettier to v3.8.4 by @renovate[bot] in #697
  • ⬆️ Update BackEnd by @renovate[bot] in #695
  • ⬆️ Update dependency ruff to v0.15.17 by @renovate[bot] in #699
  • ⬆️ Update mcr.microsoft.com/devcontainers/go:2-1.26-bookworm Docker digest to 85fff53 by @renovate[bot] in #694
  • ⬆️ Update dependency npm:@typescript/native-preview to v7.0.0-dev.20260615.1 by @renovate[bot] in #696
  • ⬆️ Update dependency python to v3.14.6 by @renovate[bot] in #698
  • ⬆️ Update dependency hk to v1.48.0 by @renovate[bot] in #700
  • ⬆️ Update dependency npm:doctoc to v2.5.0 by @renovate[bot] in #701
  • ⬆️ Update FrontEnd by @renovate[bot] in #703
  • ⬆️ Update dependency vale to v3.15.1 by @renovate[bot] in #702
  • ⬆️ Update FrontEnd to v20.10.5 by @renovate[bot] in #706
  • ⬆️ Update BackEnd by @renovate[bot] in #707
  • feat: implement server mDNS registration over WebSocket with HA reconnect hardening by @dianlight in #679
  • 📚 docs: auto-fix documentation formatting and TOC by @github-actions[bot] in #708
  • ⬆️ Update CI/CD (major) by @renovate[bot] in #704
  • ⬆️ Update dependency jq to v1.8.2 by @renovate[bot] in #710
  • ⬆️ Update BackEnd by...
Read more

Release 2026.5.0-rc9

Choose a tag to compare

@github-actions github-actions released this 27 May 16:50

Changelog

✨ Features

  • Lab Mode: Added a new "Lab Mode" section in Settings → Advanced with experimental features that can be enabled for testing and feedback.
  • SMART Integration Mode: Replaced the disable_smart boolean toggle with a 3-option smart_mode enum (none, legacy, direct).
    • none: SMART integration disabled.
    • legacy: Uses the smartctl executable (previous default behavior).
    • direct: Uses the libsmartmon_go.so library back end (lab feature, requires lib availability at startup).
    • The direct option is only shown in the UI when experimental lab mode is enabled and libsmartmon_go.so is detected at runtime.
    • Backend detects libsmartmon_go.so availability at startup and exposes lib_smart_available in the settings API response.
    • DB migration 00016 converts existing DisableSmart boolean properties to the new smart_mode string value.

🐛 Bug Fixes

🏗 Chore

  • Static binary portability: Default production builds (CGO_ENABLED=0) are now fully statically linked with zero shared-library dependencies, running unchanged on GNU/Linux systems using either glibc (Debian, Ubuntu) or musl (Alpine). The libsmartmon_go.so lib integration is now gated behind a new smartlib build tag so it no longer forces libdl.so.2 dynamic linking in release binaries. Build with --cgo (which adds -tags smartlib) to opt in to the lib mode.

What's Changed

  • ⬆️ Update dependency ruff to v0.15.13 by @renovate[bot] in #642
  • refactor: migrate Rollbar to Sentry for error tracking and telemetry by @dianlight in #649
  • fix(be): auto-create HA internal shares on startup by @dianlight in #651
  • ⬆️ Lock file maintenance by @renovate[bot] in #648
  • ⬆️ Update mcr.microsoft.com/devcontainers/go:2-1.26-bookworm Docker digest to de99286 by @renovate[bot] in #654
  • ⬆️ Update dependency npm:@typescript/native-preview to v7.0.0-dev.20260517.1 by @renovate[bot] in #655
  • ⬆️ Update actions/checkout to v6 by @renovate[bot] in #656
  • ⬆️ Update CI/CD by @renovate[bot] in #652
  • ⬆️ Update dependency npm:@typescript/native-preview to v7.0.0-dev.20260518.1 by @renovate[bot] in #658
  • ⬆️ Update FrontEnd by @renovate[bot] in #662
  • ⬆️ Update dependency npm:@typescript/native-preview to v7.0.0-dev.20260519.1 by @renovate[bot] in #664
  • ⬆️ Update github.com/oapi-codegen/runtime to v1.4.1 by @renovate[bot] in #661
  • ⬆️ Update dependency ruff to v0.15.14 by @renovate[bot] in #659
  • ⬆️ Update dependency npm:@typescript/native-preview to v7.0.0-dev.20260521.1 by @renovate[bot] in #665
  • ⬆️ Update golang.org/x/sys to v0.45.0 by @renovate[bot] in #666
  • ⬆️ Update dependency npm:@typescript/native-preview to v7.0.0-dev.20260522.1 by @renovate[bot] in #668
  • ⬆️ Update github.com/dianlight/smartmontools-go to v0.4.0 by @renovate[bot] in #669

Full Changelog: 2026.5.0-rc7...2026.5.0-rc9

Release 2026.5.0-rc7

Choose a tag to compare

@github-actions github-actions released this 16 May 16:42

Changelog

What's Changed

  • ⬆️ Update BackEnd by @renovate[bot] in #616
  • ⬆️ Update FrontEnd by @renovate[bot] in #619
  • ⬆️ Update dependency golangci-lint to v2.12.1 by @renovate[bot] in #621
  • ⬆️ Update dependency npm:@typescript/native-preview to v7.0.0-dev.20260505.1 by @renovate[bot] in #618
  • 📚 docs: auto-fix documentation formatting and TOC by @github-actions[bot] in #613
  • ⬆️ Update dependency golangci-lint to v2.12.2 by @renovate[bot] in #622
  • ⬆️ Update dependency npm:@typescript/native-preview to v7.0.0-dev.20260506.1 by @renovate[bot] in #623
  • ⬆️ Update ghcr.io/hassio-addons/base Docker tag to v20.1.1 by @renovate[bot] in #620
  • ⬆️ Update dependency go to v1.26.3 by @renovate[bot] in #617
  • ♻️ refactor(test): migrate frontend test runner from bun:test to Vitest (Task 038) by @dianlight in #615
  • ⬆️ Update golang.org/x/exp to 74f9aab by @renovate[bot] in #627
  • ⬆️ Update dependency npm:@typescript/native-preview to v7.0.0-dev.20260509.2 by @renovate[bot] in #628
  • ⬆️ Update FrontEnd by @renovate[bot] in #630
  • ⬆️ Update dependency hk to v1.45.0 by @renovate[bot] in #631
  • ⬆️ Update mcr.microsoft.com/devcontainers/go Docker tag to v2 by @renovate[bot] in #632
  • ⬆️ Update dependency python to v3.14.5 by @renovate[bot] in #629
  • feat(fe): Dashboard Actions - Mount & Share Wizard by @dianlight in #634
  • ⬆️ Update dependency npm:@typescript/native-preview to v7.0.0-dev.20260510.1 by @renovate[bot] in #635
  • ⬆️ Pin mcr.microsoft.com/devcontainers/go Docker tag to fe5d30e by @renovate[bot] in #626
  • ⬆️ Lock file maintenance by @renovate[bot] in #610
  • refactor(be): optimize disk access patterns + fix SMART DiskId bugs by @dianlight in #637
  • ⬆️ Update bun to v1.3.14 by @renovate[bot] in #638
  • ⬆️ Update dependency npm:@typescript/native-preview to v7.0.0-dev.20260513.1 by @renovate[bot] in #641
  • ⬆️ Update dependency bun to v1.3.14 by @renovate[bot] in #639
  • ⬆️ Update dependency vale to v3.14.2 by @renovate[bot] in #643

Full Changelog: 2026.5.0-rc6...2026.5.0-rc7

Release 2026.5.0-rc6

Choose a tag to compare

@github-actions github-actions released this 04 May 23:09

What's Changed

What's Changed

  • ⬆️ Update dependency act to v0.2.88 by @renovate[bot] in #611
  • ⬆️ Update dependency npm:@typescript/native-preview to v7.0.0-dev.20260501.1 by @renovate[bot] in #612

Full Changelog: 2026.5.0-rc5...2026.5.0-rc6

Release 2026.5.0-rc5

Release 2026.5.0-rc5 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 03 May 13:26

What's Changed

What's Changed

  • 📚 docs: auto-fix documentation formatting and TOC by @github-actions[bot] in #608
  • doc(tooling): corporate proxy SSL fix for hk/PKL/bun + Vitest migration prep by @dianlight in #609

Full Changelog: 2026.04.0-rc4...2026.5.0-rc5

2026.04.0-rc4

2026.04.0-rc4 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 30 Apr 07:07

What's Changed

  • chore: update CHANGELOG for 2026.4.0-rc3 by @dianlight-relase-bot[bot] in #604
  • ⬆️ Update dependency npm:@typescript/native-preview to v7.0.0-dev.20260426.1 by @renovate[bot] in #606
  • ⬆️ Update dependency ruff to v0.15.12 by @renovate[bot] in #607

New Contributors

  • @dianlight-relase-bot[bot] made their first contribution in #604

Full Changelog: 2026.4.0-rc3...2026.4.0-dev.0

Release 2026.4.0-rc3

Choose a tag to compare

@github-actions github-actions released this 29 Apr 21:54
ddca5c0

What's Changed

Note: This section tracks development progress and changes planned for the first Release Candidate (RC). The final release notes will be organized and consolidated once the RC is ready for public testing.

🙏 Thanks

We would like to thank all supporters for their contributions and donations.
With your donations, we are able to continue developing and improving this project. Your support is greatly appreciated.

🔧 Maintenance

  • Backend Code Quality Refactor: We are undertaking a comprehensive refactor to eliminate recurring Go anti-patterns across the codebase. This includes replacing interface{} with any, updating error handling to use errors.AsType[T], modernizing goroutine management with wg.Go, extracting common helper functions, and improving context-aware logging. This refactor will enhance code readability, maintainability, and performance while adhering to modern Go best practices.
  • TypeScript 6.0 Migration: The frontend codebase is being updated for compatibility with TypeScript 6.0 final, including removal of deprecated compiler flags, updating ECMAScript target, enabling new strict flags, and optimizing code for improved type inference. A comprehensive migration guide is being created to document the changes and prepare for the upcoming TypeScript 7.0 Go-based compiler.

What's Changed

  • ⬆️ Update @biomejs/biome to v2.4.12 by @renovate[bot] in #584
  • ⬆️ Update dependency npm:@typescript/native-preview to v7.0.0-dev.20260416.2 by @renovate[bot] in #585
  • ⬆️ Update softprops/action-gh-release to v3 by @renovate[bot] in #569
  • ⬆️ Update dependency ruff to v0.15.11 by @renovate[bot] in #587
  • ⬆️ Update dependency npm:@typescript/native-preview to v7.0.0-dev.20260417.1 by @renovate[bot] in #586
  • 📚 docs: auto-fix documentation formatting and TOC by @github-actions[bot] in #588
  • [REFACTOR] Upgrade MUI to v9 and optimize frontend dependencies by @dianlight in #591
  • ⬆️ Update dependency npm:@typescript/native-preview to v7.0.0-dev.20260420.1 by @renovate[bot] in #590
  • ⬆️ Pin fastify-plugin to 5.1.0 by @renovate[bot] in #593
  • ⬆️ Update ghcr.io/hassio-addons/base Docker tag to v20.1.0 by @renovate[bot] in #577
  • ⬆️ Update dependency npm:@typescript/native-preview to v7.0.0-dev.20260421.1 by @renovate[bot] in #595
  • ⬆️ Update dependency pipx:mypy to v1.20.2 by @renovate[bot] in #596
  • build(deps): bump go.opentelemetry.io/otel from 1.40.0 to 1.41.0 in /backend/src in the go_modules group across 1 directory by @dependabot[bot] in #598
  • ⬆️ Update dependency markdownlint-cli2 to v0.22.1 by @renovate[bot] in #594
  • ⬆️ Lock file maintenance by @renovate[bot] in #571
  • ⬆️ Update FrontEnd by @renovate[bot] in #597
  • 📚 docs: auto-fix documentation formatting and TOC by @github-actions[bot] in #599
  • [REFACTOR] Backend code quality anti-patterns by @dianlight in #600
  • 📚 docs: auto-fix documentation formatting and TOC by @github-actions[bot] in #601
  • refactor(fe/test): short-term stability fixes + Vitest migration task by @dianlight in #602
  • 📚 docs: auto-fix documentation formatting and TOC by @github-actions[bot] in #603

Full Changelog: 2026.4.0-rc2...2026.4.0-rc3

Release 2026.4.0-rc2

Choose a tag to compare

@github-actions github-actions released this 19 Apr 15:25

What's Changed

Note: This section tracks development progress and changes planned for the first Release Candidate (RC). The final release notes will be organized and consolidated once the RC is ready for public testing.

🙏 Thanks

We would like to thank all supporters for their contributions and donations.
With your donations, we are able to continue developing and improving this project. Your support is greatly appreciated.

📅 Roadmap

  • Release Candidate (RC) Planned for March: The first release candidate version is scheduled for March. This RC will stabilize the codebase, finalize the API, and provide a feature-complete version for community testing and feedback before the official stable release.

✨ Features

  • Interface IP Resolution: Samba configuration now resolves network interface names to IP addresses at generation time, ensuring IPv4 preference is honored. The --ipv4-only CLI flag allows disabling IPv6 addresses in the interfaces directive. This prevents issues where interface names could resolve to IPv6 addresses, causing connectivity problems when IPv4 is preferred.
  • HACS Custom Component: Added a Home Assistant custom component (custom_components/srat/) compatible with HACS for direct integration with Home Assistant. Supports UI configuration wizard, Supervisor add-on autodiscovery via slug whitelist, WebSocket-based real-time updates, and exposes sensors compatible with the existing SRAT HA integration (samba status, process status, volume status, disk health, per-disk I/O, and per-partition health). Includes full test suite using pytest-homeassistant-custom-component and Python code quality tooling (ruff, mypy) integrated into CI. Early internal implementation serving as the foundation for upcoming releases.
  • Report Issue on GitHub: Added new "Report Issue" functionality allowing users to easily create GitHub issues with automated diagnostic data collection:
    • Button in top navigation bar to open issue reporting dialog
    • Problem type selector (Frontend UI, HA Integration, Addon, or Samba problems)
    • Markdown-compatible description field
    • Optional data collection: contextual data (URL, navigation history, browser info, console errors), addon logs, and sanitized SRAT configuration
    • Automatic routing to appropriate repository (dianlight/srat or dianlight/hassos-addon) based on problem type
    • Pre-populated GitHub issue URL with diagnostic information
    • Downloads diagnostic files for attachment to the issue
  • Autoupdate with Signature Verification (#358): Implemented a new autoupdate mechanism using minio/selfupdate with cryptographic signature verification:
    • Added --auto-update flag to automatically download and apply updates without user acceptance
    • Updates are signed with minisign (Ed25519) signatures for security
    • Automatic restart when running under s6 supervision
    • Public key is embedded in the binary for signature verification
    • Build workflow automatically signs all release binaries
  • Allow Guest Setting: Added new Allow Guest boolean setting in Settings → General section to enable anonymous guest access to Samba shares. When enabled, configures Samba with guest account = nobody and map to guest = Bad User for secure guest authentication.
  • Enhanced SMART Service #234: Implemented comprehensive SMART disk monitoring and control features including health assessment, temperature monitoring, and attribute tracking.
  • SMB over QUIC Support #227: Added comprehensive support for SMB over QUIC transport protocol with intelligent system detection and automatic fallback to TCP when QUIC is unavailable.
  • Autoupdate Service: Implemented a back-end service for automatic updates from GitHub releases, with support for multiple channels (stable, beta, dev) and local development builds.
  • Telemetry Configuration: Added UI in Settings to configure telemetry modes (Rollbar error tracking), dependent on internet connectivity and user consent.
  • Volume Mount Intelligence: Enriched volume mount structs with partition and filesystem metadata to enable informed NFS vs CIFS export decisions and implemented proper volume-event handling for cache retry and invalidation. (#500)
  • Bidirectional Home Assistant WebSocket: Introduced client-to-server WebSocket messaging, starting with a helo handshake that allows the custom component to announce its identity and version to the backend. (#508)
  • Disable SMART Integration Setting: Added a new setting to disable SMART integration, helping mitigate excessive disk wake-ups in sleeping-disk scenarios. (#499)
  • Home Assistant Repairs Proxy Service: Implemented a backend service to manage Home Assistant repairs via the custom component, with queued commands and lifecycle synchronization over WebSocket. (#518)
  • Overlay Helper System Improvements: Refactored the TourEvents system for better accuracy and type safety, added comprehensive tests, and established frontend maintenance guidelines. (#515)
  • Add repair service and proxy for Home Assistant integration

🐛 Bug Fixes

  • HA Config Flow Discovery Import: Fixed Supervisor discovery flow import errors by using the new HassioServiceInfo module path with a compatibility fallback for older Home Assistant versions.
  • Udev Event Parsing Error Handling: Improved handling of malformed udev events to prevent spurious error reports to Rollbar. Malformed events with invalid environment data are now logged at debug level instead of error level, reducing noise in error tracking while maintaining visibility for legitimate errors.
  • Issue Report Gist Offloading: Fixed oversized issue report URLs by replacing large addon log and console error parameters with Gist links, preventing runaway URL growth when diagnostics are large.
  • Mount Point Type Defaulting: Default missing mount point types on events to avoid NOT NULL constraint failures when persisting mount points.
  • Mount Conversion Type Derivation: Ensure mount conversions derive mount point type from the mount path to prevent missing type values.
  • WebSocket Loading State: Report WebSocket SSE loading as active until the socket is connected, and re-enable loading after disconnects.
  • Deterministic Mount Flag Metadata: Ensure mount-flag metadata for shared options (for example, uid/gid) is derived from a consistent preferred adapter source to avoid nondeterministic descriptions and regex values.
  • Volumes TreeView ID Collisions: Namespace volume tree item IDs by disk to prevent duplicate partition identifiers from crashing the Volumes tab.
  • Disk FSCK Status Population: Populate fsck supported/needed fields in disk stats using filesystem service capability and state information.

🔄 Breaking Changes

  • Update Engine Replacement: Replaced jpillora/overseer with minio/selfupdate for binary updates. The new implementation provides more reliable updates with cryptographic signature verification using minisign. Updates will now properly restart the service when running under s6 supervision.
  • SMB over QUIC Default Behavior Change: The SMB over QUIC feature is now disabled by default. Users must explicitly enable it in the settings to use this functionality. This change aims to enhance security and stability by preventing unintended use of the experimental protocol.
  • Telemetry Service Update: The telemetry service has been updated to use Rollbar for error tracking and monitoring. This change may require users to review their privacy settings and consent to data collection, as Rollbar collects different types of data compared to the previous telemetry solution.
  • Autoupdate Service Modification: The autoupdate service has been modified to support multiple update channels (stable, beta, dev) and local development builds. Users may need to reconfigure their update preferences to align with the new channel system.
  • Disk Health Payload Update: Per-partition disk health now reports filesystem_state and no longer includes the redundant fsck_needed field.
  • Partition Filesystem Support: Per-partition disk health no longer includes fsck_supported; filesystem support is now reported on partitions as filesystem_support.

🔧 Maintenance

  • Custom Component Build Tooling: Added ruff (lint + format) and mypy (type checking) tooling for the HA custom component with pyproject.toml configuration, Makefile targets (make check, make lint, make format, make typecheck), and CI integration in validate-hacs.yaml. Fixed all lint and type issues in existing code.
  • Go 1.26 Migration: Upgraded Go version from 1.25.7 to 1.26.0, adopting new language features:
    • Replaced all pointer.Bool/String/Int/Uint64/Of/Any() calls with Go 1.26's built-in new(expr) syntax (~268 occurrences) and removed the xorcare/pointer dependency
    • Replaced all interface{} with any alias (147 occurrences) following Go modernizer patterns
    • Replaced sync.WaitGroup Add(1)/Done() patterns with WaitGroup.Go() method in production code
  • TypeScript 6.0 Final Migration: Updated frontend TypeScript configuration for compatibility with TypeScript 6.0 final (March 23, 2026) and preparation for TypeScript 7.0 (Go-based):
    • Removed all deprecated compiler flags (experimentalDecorators, useDefineForClassFields, baseUrl, outFile)
    • Updated ECMAScript target from ES2021 to ES2022 for better modern feature alignment
    • Enabled noImplicitOverride strict flag (code already compliant)
    • Code optimizations leveraging TS 6.0 improved type inference (removed 11 ...
Read more

Release 2026.3.0-dev.3

Choose a tag to compare

@github-actions github-actions released this 20 Mar 14:44

What's Changed

Note: This section tracks development progress and changes planned for the first Release Candidate (RC). The final release notes will be organized and consolidated once the RC is ready for public testing.

🙏 Thanks

We would like to thank all supporters for their contributions and donations.
With your donations, we are able to continue developing and improving this project. Your support is greatly appreciated.

📅 Roadmap

  • Release Candidate (RC) Planned for March: The first release candidate version is scheduled for March. This RC will stabilize the codebase, finalize the API, and provide a feature-complete version for community testing and feedback before the official stable release.

✨ Features

  • HACS Custom Component: Added a Home Assistant custom component (custom_components/srat/) compatible with HACS for direct integration with Home Assistant. Supports UI configuration wizard, Supervisor add-on autodiscovery via slug whitelist, WebSocket-based real-time updates, and exposes sensors compatible with the existing SRAT HA integration (samba status, process status, volume status, disk health, per-disk I/O, and per-partition health). Includes full test suite using pytest-homeassistant-custom-component and Python code quality tooling (ruff, mypy) integrated into CI. Early internal implementation serving as the foundation for upcoming releases.

🧑‍🏫 Documentation

🐛 Bug Fixes

  • HA Config Flow Discovery Import: Fixed Supervisor discovery flow import errors by using the new HassioServiceInfo module path with a compatibility fallback for older Home Assistant versions.
  • Udev Event Parsing Error Handling: Improved handling of malformed udev events to prevent spurious error reports to Rollbar. Malformed events with invalid environment data are now logged at debug level instead of error level, reducing noise in error tracking while maintaining visibility for legitimate errors.
  • Issue Report Gist Offloading: Fixed oversized issue report URLs by replacing large addon log and console error parameters with Gist links, preventing runaway URL growth when diagnostics are large.
  • Mount Point Type Defaulting: Default missing mount point types on events to avoid NOT NULL constraint failures when persisting mount points.
  • Mount Conversion Type Derivation: Ensure mount conversions derive mount point type from the mount path to prevent missing type values.
  • WebSocket Loading State: Report WebSocket SSE loading as active until the socket is connected, and re-enable loading after disconnects.
  • Deterministic Mount Flag Metadata: Ensure mount-flag metadata for shared options (for example, uid/gid) is derived from a consistent preferred adapter source to avoid nondeterministic descriptions and regex values.
  • Volumes TreeView ID Collisions: Namespace volume tree item IDs by disk to prevent duplicate partition identifiers from crashing the Volumes tab.
  • Disk FSCK Status Population: Populate fsck supported/needed fields in disk stats using filesystem service capability and state information.

🔄 Breaking Changes

  • Update Engine Replacement: Replaced jpillora/overseer with minio/selfupdate for binary updates. The new implementation provides more reliable updates with cryptographic signature verification using minisign. Updates will now properly restart the service when running under s6 supervision.
  • SMB over QUIC Default Behavior Change: The SMB over QUIC feature is now disabled by default. Users must explicitly enable it in the settings to use this functionality. This change aims to enhance security and stability by preventing unintended use of the experimental protocol.
  • Telemetry Service Update: The telemetry service has been updated to use Rollbar for error tracking and monitoring. This change may require users to review their privacy settings and consent to data collection, as Rollbar collects different types of data compared to the previous telemetry solution.
  • Autoupdate Service Modification: The autoupdate service has been modified to support multiple update channels (stable, beta, dev) and local development builds. Users may need to reconfigure their update preferences to align with the new channel system.
  • Disk Health Payload Update: Per-partition disk health now reports filesystem_state and no longer includes the redundant fsck_needed field.
  • Partition Filesystem Support: Per-partition disk health no longer includes fsck_supported; filesystem support is now reported on partitions as filesystem_support.

🔧 Maintenance

  • Custom Component Build Tooling: Added ruff (lint + format) and mypy (type checking) tooling for the HA custom component with pyproject.toml configuration, Makefile targets (make check, make lint, make format, make typecheck), and CI integration in validate-hacs.yaml. Fixed all lint and type issues in existing code.
  • Go 1.26 Migration: Upgraded Go version from 1.25.7 to 1.26.0, adopting new language features:
    • Replaced all pointer.Bool/String/Int/Uint64/Of/Any() calls with Go 1.26's built-in new(expr) syntax (~268 occurrences) and removed the xorcare/pointer dependency
    • Replaced all interface{} with any alias (147 occurrences) following Go modernizer patterns
    • Replaced sync.WaitGroup Add(1)/Done() patterns with WaitGroup.Go() method in production code
  • Updated dependencies to latest versions to ensure security and compatibility.

✨ Features

  • Report Issue on GitHub: Added new "Report Issue" functionality allowing users to easily create GitHub issues with automated diagnostic data collection:
    • Button in top navigation bar to open issue reporting dialog
    • Problem type selector (Frontend UI, HA Integration, Addon, or Samba problems)
    • Markdown-compatible description field
    • Optional data collection: contextual data (URL, navigation history, browser info, console errors), addon logs, and sanitized SRAT configuration
    • Automatic routing to appropriate repository (dianlight/srat or dianlight/hassos-addon) based on problem type
    • Pre-populated GitHub issue URL with diagnostic information
    • Downloads diagnostic files for attachment to the issue
  • Autoupdate with Signature Verification (#358): Implemented a new autoupdate mechanism using minio/selfupdate with cryptographic signature verification
    • Added --auto-update flag to automatically download and apply updates without user acceptance
    • Updates are signed with minisign (Ed25519) signatures for security
    • Automatic restart when running under s6 supervision
    • Public key is embedded in the binary for signature verification
    • Build workflow automatically signs all release binaries
  • Allow Guest Setting: Added new Allow Guest boolean setting in Settings → General section to enable anonymous guest access to Samba shares. When enabled, configures Samba with guest account = nobody and map to guest = Bad User for secure guest authentication.
  • Enhanced SMART Service #234: Implemented comprehensive SMART disk monitoring and control features:
  • SMB over QUIC Support #227: Added comprehensive support for SMB over QUIC transport protocol with intelligent system detection
  • Autoupdate Service: Implemented a back-end service for automatic updates from GitHub releases, with support for multiple channels and local development builds.
  • Telemetry Configuration: Added UI in Settings to configure telemetry modes, dependent on internet connectivity.
  • Manage local master option (?)
  • Add Rollbar telemetry service for error tracking and monitoring
  • Help screen or overlay help/tour #82
  • Smart Control #100
  • HDD Spin down #101

🏗 Chore

  • Replace snapd osutil dependency with internal mount utilities based on moby/sys/mountinfo
  • Align UI elements to HA #81
  • Create the base documentation #80
  • Display version from ADDON

What's Changed

  • ⬆️ Update oven-sh/setup-bun to 0c5077e by @renovate[bot] in #497
  • ⬆️ Update softprops/action-gh-release to 153bb8e by @renovate[bot] in #503
  • ⬆️ Update FrontEnd by @renovate[bot] in #504
  • 📚 docs: auto-fix documentation formatting and TOC by @github-actions[bot] in #502
  • ⬆️ Update @typescript/native-preview to v7.0.0-dev.20260316.1 by @renovate[bot] in #506
  • ⬆️ Update gitlab.com/tozd/go/errors to v0.11.1 by @renovate[bot] in #507

New Contributors

  • @github-actions[bot] made their first contribution in #502

Full Changelog: 2026.3.0-dev.2...2026.3.0-dev.3

Release 2026.1.0-dev.3

Choose a tag to compare

@github-actions github-actions released this 17 Jan 23:57
faa02f4

What's Changed

  • ⬆️ Update oven-sh/setup-bun digest to b7a1c7c by @renovate[bot] in #368
  • ⬆️ Update BackEnd by @renovate[bot] in #369
  • ⬆️ Update FrontEnd by @renovate[bot] in #370
  • Refactor frontend tests to follow Testing Library best practices - 100% Complete by @Copilot in #367
  • ⬆️ Update @typescript/native-preview to v7.0.0-dev.20260108.1 by @renovate[bot] in #372
  • Implement MSW v2 hybrid mocking infrastructure with WebSocket support and complete test migration (100%) for frontend testing by @Copilot in #373
  • ⬆️ Update golang.org/x/sys to v0.40.0 by @renovate[bot] in #374
  • ⬆️ Pin dependencies by @renovate[bot] in #375
  • ⬆️ Update mlugg/setup-zig digest to e7d1537 by @renovate[bot] in #377
  • ⬆️ Update FrontEnd by @renovate[bot] in #376
  • ⬆️ Update FrontEnd by @renovate[bot] in #380
  • ⬆️ Update BackEnd by @renovate[bot] in #379
  • Fix HDIdle service error logging and add startup performance instrumentation by @Copilot in #378
  • ⬆️ Update FrontEnd by @renovate[bot] in #382
  • ⬆️ Update BackEnd by @renovate[bot] in #383
  • ⬆️ Update actions/setup-go action to v6.2.0 by @renovate[bot] in #386
  • ⬆️ Update FrontEnd by @renovate[bot] in #385
  • Read bun version dynamically from package.json in updateContentCommand.sh by @Copilot in #388
  • ⬆️ Update FrontEnd by @renovate[bot] in #398
  • Add emoticon censoring and copy functionality with maskify-ts and comprehensive regex support by @Copilot in #384
  • ⬆️ Update actions/setup-node digest to 6044e13 by @renovate[bot] in #401
  • ⬆️ Update FrontEnd by @renovate[bot] in #402
  • Replace markdown-link-check with Lychee and add Vale prose linter with GFM support by @Copilot in #381
  • ⬆️ Update lycheeverse/lychee-action action to v2.7.0 by @renovate[bot] in #409
  • ⬆️ Pin dependencies by @renovate[bot] in #405
  • ⬆️ Update oven-sh/setup-bun digest to 3d26778 by @renovate[bot] in #412
  • Add donation button to NavBar with dynamic funding platform support via RTK Query by @Copilot in #404

Full Changelog: 2026.1.0-dev.2...2026.1.0-dev.3

What's Changed

  • ⬆️ Update oven-sh/setup-bun digest to b7a1c7c by @renovate[bot] in #368
  • ⬆️ Update BackEnd by @renovate[bot] in #369
  • ⬆️ Update FrontEnd by @renovate[bot] in #370
  • Refactor frontend tests to follow Testing Library best practices - 100% Complete by @Copilot in #367
  • ⬆️ Update @typescript/native-preview to v7.0.0-dev.20260108.1 by @renovate[bot] in #372
  • Implement MSW v2 hybrid mocking infrastructure with WebSocket support and complete test migration (100%) for frontend testing by @Copilot in #373
  • ⬆️ Update golang.org/x/sys to v0.40.0 by @renovate[bot] in #374
  • ⬆️ Pin dependencies by @renovate[bot] in #375
  • ⬆️ Update mlugg/setup-zig digest to e7d1537 by @renovate[bot] in #377
  • ⬆️ Update FrontEnd by @renovate[bot] in #376
  • ⬆️ Update FrontEnd by @renovate[bot] in #380
  • ⬆️ Update BackEnd by @renovate[bot] in #379
  • Fix HDIdle service error logging and add startup performance instrumentation by @Copilot in #378
  • ⬆️ Update FrontEnd by @renovate[bot] in #382
  • ⬆️ Update BackEnd by @renovate[bot] in #383
  • ⬆️ Update actions/setup-go action to v6.2.0 by @renovate[bot] in #386
  • ⬆️ Update FrontEnd by @renovate[bot] in #385
  • Read bun version dynamically from package.json in updateContentCommand.sh by @Copilot in #388
  • ⬆️ Update FrontEnd by @renovate[bot] in #398
  • Add emoticon censoring and copy functionality with maskify-ts and comprehensive regex support by @Copilot in #384
  • ⬆️ Update actions/setup-node digest to 6044e13 by @renovate[bot] in #401
  • ⬆️ Update FrontEnd by @renovate[bot] in #402
  • Replace markdown-link-check with Lychee and add Vale prose linter with GFM support by @Copilot in #381
  • ⬆️ Update lycheeverse/lychee-action action to v2.7.0 by @renovate[bot] in #409
  • ⬆️ Pin dependencies by @renovate[bot] in #405
  • ⬆️ Update oven-sh/setup-bun digest to 3d26778 by @renovate[bot] in #412
  • Add donation button to NavBar with dynamic funding platform support via RTK Query by @Copilot in #404

Full Changelog: 2026.1.0-dev.2...2026.1.0-dev.3