Skip to content

feat(settings): attribute override validation, time format preference, and bug fixes#481

Merged
Starosdev merged 31 commits intomasterfrom
develop
Apr 30, 2026
Merged

feat(settings): attribute override validation, time format preference, and bug fixes#481
Starosdev merged 31 commits intomasterfrom
develop

Conversation

@Starosdev
Copy link
Copy Markdown
Owner

Summary

Linked Issues

Closes #476
Closes #475
Closes #472
Closes #443
Closes #418

Test plan

  • CI checks passed on develop
  • Override form blocks submission on all invalid state combinations
  • Gotify HTTP URLs receive disabletls param automatically
  • Time format preference persists across sessions

Starosdev and others added 30 commits April 4, 2026 17:25
The release notes script excluded develop->master PRs to avoid
duplicating individual develop PRs. But when features are pushed
directly to develop (no PR), the integration PR is the only record.
Now captures integration PRs as a primary source and deduplicates
individual develop PRs that are already covered.
- Reset HAS_PROSE_DESC per PR to prevent stale state across iterations
- Guard grep pipelines with || true to survive set -e on no matches
- Categorize chore(deps) as Dependencies and chore(ci/docker) as CI/CD
  instead of silently dropping all chore-prefixed PRs
- Strip \r from PR bodies before parsing (GitHub uses \r\n)
- Bump gh pr list limit from 100 to 200
## Summary

- Close InfluxDB `QueryTableResult` at all 11 query call sites to
prevent HTTP response body leaks on early returns
- Close HTTP response body in `InfluxSetupComplete` health check
- Cap InfluxDB TSM cache memory in omnibus mode (256MB max, 25MB
snapshot threshold) to prevent unbounded growth

## Linked Issues

Closes #419

## Test plan

- [x] `go vet ./webapp/backend/...` passes
- [x] `go test ./webapp/backend/...` passes
- [ ] Deploy to dev environment and monitor memory usage over 24-48
hours
chore(ci): bump GitHub Actions versions
chore(deps): bump frontend dependencies
Replace last(column: "device_wwn") with tail(n: 1) in the device
summary Flux query. After group(columns: ["device_wwn"]), the
device_wwn column moves into the group key and is no longer available
as a regular column, causing last() to fail with "no column device_wwn
exists" on certain InfluxDB configurations. tail(n: 1) achieves the
same result -- selecting the most recent record per device group from
the already time-sorted data -- without referencing a specific column.
…443)

Remove overflow-hidden from the temperature chart card so the shared
tooltip is no longer clipped at the card boundary. This fixes both the
missing spike value (tooltip entries were hidden below the card edge)
and the truncated device label. Add white-space: nowrap scoped to the
temperature chart wrapper to ensure long device names display in full.
)

Gotify deployments on port 80/8080/8008 use plain HTTP, but the shoutrrr
library defaults to HTTPS. normalizeGotifyURL() detects these ports and
injects disabletls=Yes before the URL reaches shoutrrr, so HTTP-only
Gotify installs receive notifications without requiring manual URL changes.

Also documents both HTTPS and HTTP Gotify URL formats in example.scrutiny.yaml.
Increase dialog width from 600px to 800px with 95vw max, and remove
overflow-hidden from the inner container that was clipping the SMART
attribute overrides form fields.
Default action changed from empty string (Custom Threshold) to 'ignore'
so users are not forced to provide threshold values immediately. Adds a
guard in addOverride() and the button disabled condition to block
submission when action is empty but no warn_above/fail_above is set,
matching the backend validation requirement.

Closes #476
… (#480)

## Summary

- Disables Add Override button when action is `force_status` but no
status is selected
- Adds guard in `addOverride()` to abort when `force_status` has no
status
- Adds guard to abort when Custom Threshold has `warn_above >=
fail_above`

Both scenarios were accepted by the frontend but rejected by backend
validation with a 400, unaddressed by the previous fix in #477.

## Linked Issues

Closes #476

## Test plan

- [ ] Select Force Status action, leave status empty — button is
disabled
- [ ] Select Custom Threshold, set warn_above >= fail_above — form does
not submit
- [ ] All previously working override actions (Ignore, valid Force
Status, valid Custom Threshold) still submit successfully
@Starosdev Starosdev added the bug Something isn't working label Apr 30, 2026
@Starosdev Starosdev merged commit 4218085 into master Apr 30, 2026
19 checks passed
Starosdev pushed a commit that referenced this pull request Apr 30, 2026
## [1.52.0](v1.51.0...v1.52.0) (2026-04-30)

### Features

* **settings:** attribute override validation, time format preference, and bug fixes ([#481](#481)) ([4218085](4218085)), closes [#445](#445) [#476](#476) [#480](#480) [#475](#475) [#472](#472) [#443](#443) [#418](#418) [#419](#419) [#423](#423) [#476](#476) [#475](#475) [#472](#472) [#443](#443) [#418](#418)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

1 participant