Skip to content

Add per-tab fleet filters#506

Open
flesher wants to merge 18 commits into
mainfrom
issue-491
Open

Add per-tab fleet filters#506
flesher wants to merge 18 commits into
mainfrom
issue-491

Conversation

@flesher

@flesher flesher commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

Reviewable diff: +1982/-372 across 50 files (excludes generated, test, and story files).

Summary
Adds URL-backed, per-tab filtering for Sites, Buildings, Racks, and Groups so the fleet views follow the Miners tab filter order while only exposing filters that apply to each entity type. The request contracts now carry issue-component and fleet-list telemetry range filters, unassigned location selections round-trip through URL params as null, and list row shapes now expose shared placement refs where parent placement exists: miners include site/building/rack/groups, racks include site/building, buildings include site, and sites keep an empty root placement shape. Non-goals: this does not redesign table layouts, add browser E2E coverage.

How It Works

flowchart LR
  UI["Filter chips + URL params"] --> API["Typed list request filters"]
  API --> Handlers["RPC handlers parse issue, location, telemetry filters"]
  Handlers --> Rollups["Sites/Buildings reuse authorized rollup stats"]
  Handlers --> Collections["Racks/Groups apply SQL filters and telemetry joins"]
  Handlers --> Placement["Entity rows embed PlacementRefs"]
  Rollups --> Rows["Filtered rows with list stats"]
  Collections --> Rows
  Placement --> Rows
Loading

The client keeps filter state in URL params, maps issue and telemetry chips into typed proto request fields, and uses null only as the URL sentinel for unassigned site/building/rack values. Server handlers validate the new fields, reuse a shared fleetlistfilter parser/matcher for rollup-backed issue and telemetry predicates, and push rack/group site, building, zone, issue, and telemetry filters into the collection SQL path so list and count queries stay aligned. Miner, rack, building, and site read rows now use common.v1.PlacementRefs for parent placement metadata while blank/unassigned UI cells continue rendering from missing refs.

Areas Of The Code Involved

Area / package / file What changed Why it matters for review
proto/* Adds fleet telemetry range filters, list request fields, and shared ResourceRef / PlacementRefs messages on miner/rack/building/site rows API contract for cross-tab filters and placement IDs
server/internal/domain/fleetlistfilter Shared parsing and matching for issue-component and telemetry predicates Central validation and rollup filter semantics
server/internal/domain/{sites,buildings} Applies stats-backed filters after authorized rollup population Preserves existing stats visibility boundaries
server/internal/domain/stores/sqlstores Adds rack/group site filters, telemetry SQL joins/predicates, and parent label joins for placement refs Keeps pagination/count behavior consistent and supplies placement IDs
server/internal/domain/fleetmanagement Emits snapshot placement refs and reads site context from the placement site ref Keeps miner list/export/resource-context behavior aligned with the new contract
server/internal/handlers/{buildings,deviceset} Translates site/building/rack parent IDs and labels into PlacementRefs Keeps read RPCs consistent across entity tabs
client/src/protoFleet/features/* Adds tab-specific filter chips, URL handling, unassigned options, saved-view integration, and placement-ref rendering helpers User-facing filter behavior
Generated files Regenerated protobuf/sqlc outputs for touched contracts Generated - skip unless contract output looks stale

Key Technical Decisions & Trade-Offs

Decision Trade-off
Represent unassigned URL selections as null Stable/deep-linkable URLs without showing sentinel values in tables
Reuse rollup stats for sites/buildings filtering Avoids duplicating aggregate SQL but filters after authorized stats are populated
Push collection telemetry filters into SQL Preserves rack/group pagination and count consistency
Use shared refs for miner/rack/building/site placement metadata One row-shape convention instead of carrying parallel label/id fields
Extend FilterChipsBar with numeric range categories Reuses the existing filter UX across all fleet tabs

Testing & Validation

  • just lint
  • ./node_modules/.bin/tsc --noEmit
  • ./node_modules/.bin/vitest filterUrlParams savedViews viewSummary telemetryFilterBounds minerTableColumnPreferences FilterChipsBar Filters NestedDropdownFilter --run
  • ./node_modules/.bin/vitest run src/protoFleet/features/fleetManagement/components/MinerActionsMenu/bulkRenamePreview.test.ts src/protoFleet/features/fleetManagement/components/MinerActionsMenu/BulkWorkerNameModal.test.tsx
  • DB_PASSWORD=fleet go test ./internal/domain/fleetlistfilter ./internal/domain/buildings ./internal/domain/sites ./internal/domain/collection ./internal/domain/fleetmanagement ./internal/handlers/buildings ./internal/handlers/sites ./internal/handlers/deviceset
  • DB_PASSWORD=fleet go test ./internal/domain/fleetmanagement ./internal/domain/stores/sqlstores
  • DB_PASSWORD=fleet go test ./internal/handlers/buildings ./internal/handlers/deviceset ./internal/domain/stores/sqlstores
  • DB_PASSWORD=fleet go test ./internal/domain/buildings ./internal/domain/collection
  • DB_PASSWORD=fleet go test ./internal/domain/fleetmanagement ./internal/domain/stores/sqlstores -run 'TestService_ListMinerStateSnapshots_ShouldPopulateGroupRefs|TestService_ListMinerStateSnapshots_ShouldPopulateRackRef|TestCollectionStore_GetGroupRefsForDevices|TestCollectionStore_GetRackDetailsForDevices'
  • go test ./internal/domain/stores/sqlstores -run 'TestBuildCollectionListQuery|TestBuildCollectionCountQuery|TestResolveCollectionSort'
  • buf lint
  • buf generate; cd server && just gen
  • git diff --check
  • rustup update stable; literal just test-contract gets past the Cargo edition blocker but hits the repo's existing macOS Docker exec format error, so I built the Linux ASIC-rs plugin with just _asicrs-build-docker and ran the contract-test body manually, passing TestAntminerStock, TestAntminerVNish, and TestWhatsMinerStock.

Copilot AI review requested due to automatic review settings June 18, 2026 19:54
@flesher flesher requested a review from a team as a code owner June 18, 2026 19:54
@github-actions github-actions Bot added javascript Pull requests that update javascript code client server shared labels Jun 18, 2026
@github-actions

github-actions Bot commented Jun 18, 2026

Copy link
Copy Markdown

🔐 Codex Security Review

Note: This is an automated security-focused code review generated by Codex.
It should be used as a supplementary check alongside human review.
False positives are possible - use your judgment.

Scope summary

  • Reviewed pull request diff only (1e923eb43ca2722b661a0ea0ecadecb41bed08c3...5482a8fa4bed52a5babc5243ee73b9f1fa604515, exact PR three-dot diff)
  • Model: gpt-5.5

💡 Click "edited" above to see previous reviews for this PR.


Review Summary

Overall Risk: MEDIUM

Findings

[MEDIUM] MinerStateSnapshot Placement Fields Were Removed Instead Of Deprecated/Dual-Populated

  • Category: Protobuf
  • Location: proto/fleetmanagement/v1/fleetmanagement.proto:141
  • Description: The PR reserves previously populated response fields group_labels, rack_label, site_id, site_label, and building_label, then replaces them with common.v1.PlacementRefs placement = 28. The server now only fills placement for site/building/group/rack data.
  • Impact: Existing generated clients, rolling deploys, or external consumers expecting the old fields will silently receive empty placement/group labels after the server upgrade. New clients talking to an older server will also see empty placement. This breaks API compatibility for miner list grouping, filtering, display, and exports even though wire decoding itself remains safe.
  • Recommendation: Keep the old fields at their original numbers as deprecated and dual-populate them alongside placement for at least one release, or explicitly version this as a breaking API change and coordinate client/server rollout.

Notes

No auth bypass, SQL injection, command injection, plugin boundary, network discovery, frontend XSS, infrastructure, Rust, or cryptostealing/pool-hijack issues were found in the reviewed diff. The new dynamic SQL paths use fixed column mappings with parameterized values, and the new list filters include size and finite-number validation.


Generated by Codex Security Review |
Triggered by: @flesher |
Review workflow run

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds URL-backed, per-tab fleet filtering (Sites/Buildings/Racks/Groups) with shared issue-component + telemetry range filter semantics, and plumbs the new filter fields through proto contracts, server handlers/domain logic, SQL-backed collection queries, and the ProtoFleet UI (chips, saved views).

Changes:

  • Extend protobuf contracts to carry issue-component filters and fleet list telemetry range filters across fleet tabs.
  • Add a shared server-side fleetlistfilter parser/matcher, apply it to rollup-backed Sites/Buildings lists, and push rack/group filters (site/building/zone + telemetry) into SQL list/count paths.
  • Update ProtoFleet UI to persist per-tab filters in URL params (including “unassigned” as null), add numeric-range filter chips, and include the new filters in saved views.

Reviewed changes

Copilot reviewed 46 out of 57 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
server/sqlc/queries/device_set.sql Add building label to rack-details batch query for miner snapshots.
server/internal/handlers/sites/handler.go Parse new issue/telemetry filters and pass into domain ListSites.
server/internal/handlers/deviceset/handler_test.go Add handler tests covering site + telemetry filter validation and behavior.
server/internal/handlers/deviceset/convert.go Validate new site_ids cap; parse/validate telemetry ranges into store filter.
server/internal/handlers/buildings/handler.go Parse new issue/telemetry filters and pass into domain ListBuildings.
server/internal/domain/stores/sqlstores/collection.go Populate rack details with building label.
server/internal/domain/stores/sqlstores/collection_sort.go Add site predicates for racks; add telemetry aggregation join + range predicates for list/count queries.
server/internal/domain/stores/sqlstores/collection_sort_test.go Add query-builder tests for site + telemetry filters and arg ordering.
server/internal/domain/stores/interfaces/collection.go Extend DeviceSetFilter (site + telemetry ranges) and rack-details struct (building label).
server/internal/domain/sites/service.go Apply fleetlistfilter matching to authorized list stats for Sites.
server/internal/domain/sites/service_stats_test.go Update Sites stats tests for new ListSites signature.
server/internal/domain/fleetmanagement/service.go Include building_label in miner snapshot population.
server/internal/domain/fleetlistfilter/filter.go New shared parser/matcher for issue-component + telemetry range filters.
server/internal/domain/fleetlistfilter/filter_test.go Unit tests for filter parsing and matching semantics.
server/internal/domain/collection/service.go Validate new site_ids filter ownership and enforce type constraints.
server/internal/domain/buildings/service.go Apply fleetlistfilter matching to authorized list stats for Buildings.
server/internal/domain/buildings/service_test.go Update Buildings service tests for new signature.
server/internal/domain/buildings/service_stats_test.go Update Buildings stats tests for new signature.
server/generated/sqlc/device_set.sql.go Generated — sqlc output for rack-details query updates (building label).
server/generated/grpc/common/v1/fleet_list_stats.pb.go Generated — adds telemetry filter enum/message types.
proto/sites/v1/sites.proto Add issue-component + telemetry range filters to ListSitesRequest.
proto/fleetmanagement/v1/fleetmanagement.proto Add building_label to MinerStateSnapshot.
proto/device_set/v1/device_set.proto Add rack site_ids/include_no_site and telemetry range filters to ListDeviceSetsRequest.
proto/common/v1/fleet_list_stats.proto Add FleetListTelemetryField + FleetListTelemetryRangeFilter.
proto/buildings/v1/buildings.proto Add issue-component + telemetry range filters to ListBuildingsRequest.
client/src/shared/components/List/Filters/FilterChipsBar.tsx Support numeric-range filter categories + modal chips in shared filter bar.
client/src/protoFleet/hooks/useDeviceSetListState.ts Thread additional list filters (site/unassigned/telemetry) into list requests.
client/src/protoFleet/features/groupManagement/pages/GroupsPage.tsx URL-backed issue + telemetry filters for Groups list, wired to shared chips UI.
client/src/protoFleet/features/fleetManagement/views/viewSummary.ts Render null URL sentinel as “Unassigned” in view summaries.
client/src/protoFleet/features/fleetManagement/views/savedViews.ts Include Buildings/Sites tab filter keys (incl. telemetry) in saved views.
client/src/protoFleet/features/fleetManagement/views/savedViews.test.ts Add coverage for Buildings/Sites saved-view key scoping.
client/src/protoFleet/features/fleetManagement/utils/telemetryFilterBounds.ts Add mapping from UI telemetry keys to fleet-list telemetry enum.
client/src/protoFleet/features/fleetManagement/utils/filterUrlParams.ts Add null sentinel handling for unassigned; add telemetry range URL encode/decode helpers.
client/src/protoFleet/features/fleetManagement/utils/filterUrlParams.test.ts Add tests for unassigned placement URL encoding/decoding.
client/src/protoFleet/features/fleetManagement/pages/RacksPage.tsx Move racks filters to URL-backed site/building/unassigned + telemetry; update chips UI.
client/src/protoFleet/features/fleetManagement/pages/FleetSitesPage.tsx Add URL-backed issue + telemetry filters and filtered-list fetching for Sites page.
client/src/protoFleet/features/fleetManagement/pages/FleetBuildingsPage.tsx Add URL-backed site/unassigned + issue + telemetry filters and updated empty states.
client/src/protoFleet/features/fleetManagement/components/MinerList/stories/statusMocks.ts Story data update for new buildingLabel field.
client/src/protoFleet/features/fleetManagement/components/MinerList/stories/mocks.ts Story data update for new buildingLabel field.
client/src/protoFleet/features/fleetManagement/components/MinerList/minerTableColumnPreferences.ts Make site/building/rack columns configurable for miners table.
client/src/protoFleet/features/fleetManagement/components/MinerList/minerTableColumnPreferences.test.ts Update tests for the new configurable miner columns.
client/src/protoFleet/features/fleetManagement/components/MinerList/MinerList.tsx Add site/building/rack dropdown filters and support “Unassigned” sentinel values.
client/src/protoFleet/features/fleetManagement/components/MinerList/minerColConfig.tsx Add renderer for site/building/rack columns.
client/src/protoFleet/features/fleetManagement/components/MinerList/constants.ts Add new miner columns (site/building/rack) and titles.
client/src/protoFleet/features/fleetManagement/components/Fleet/Fleet.tsx Provide available site/building label sources to saved-views context; fetch buildings list for labels.
client/src/protoFleet/api/useDeviceSets.ts Add telemetry + site/unassigned filter fields to listGroups/listRacks calls.
client/src/protoFleet/api/sites.ts Add ListSites request filter inputs (issues + telemetry).
client/src/protoFleet/api/generated/sites/v1/sites_pb.ts Generated — sites contract updates.
client/src/protoFleet/api/generated/common/v1/fleet_list_stats_pb.ts Generated — telemetry filter enum/message types.
client/src/protoFleet/api/generated/buildings/v1/buildings_pb.ts Generated — buildings contract updates.
client/src/protoFleet/api/buildings.ts Add ListBuildings request filter inputs (issues + telemetry).

Comment thread server/sqlc/queries/device_set.sql
Comment thread server/internal/domain/fleetlistfilter/filter.go Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0f2ee7f6b6

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread server/internal/domain/buildings/service.go Outdated
Comment thread server/internal/domain/sites/service.go Outdated
@flesher

flesher commented Jun 18, 2026

Copy link
Copy Markdown
Contributor Author

🤖 Addressed the security review findings in b934004: active Sites/Buildings stats filters now fail closed to empty rows when no returned rows are stats-authorized, and telemetry range filters now require successful telemetry rollups instead of silently turning telemetry failures into empty filtered results. Unfiltered list stats keep the previous best-effort telemetry behavior. Added focused Sites/Buildings coverage for both cases.

Posted by Codex (GPT-5) on behalf of Flesher

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b934004ccc

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread client/src/protoFleet/features/fleetManagement/views/savedViews.ts Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 05c268a53e

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread client/src/protoFleet/features/groupManagement/pages/GroupsPage.tsx

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5d8142cc19

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread client/src/protoFleet/features/fleetManagement/views/savedViews.ts Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: dca96576a9

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread client/src/protoFleet/features/fleetManagement/pages/FleetBuildingsPage.tsx Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0b9407376f

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread client/src/protoFleet/features/fleetManagement/pages/FleetSitesPage.tsx Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: df54d42050

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread server/internal/domain/sites/service.go
Comment thread server/internal/domain/buildings/service.go

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ff328d2835

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread server/internal/domain/fleetmanagement/service.go

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 73199f6f07

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread client/src/protoFleet/features/fleetManagement/pages/FleetSitesPage.tsx Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ff06a168c7

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread server/internal/domain/buildings/service.go

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3e485e22b1

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

hashrate: { min: 0, max: 1000, unit: "TH/s", label: "Hashrate" },
efficiency: { min: 0, max: 100, unit: "J/TH", label: "Efficiency" },
power: { min: 0, max: 50, unit: "kW", label: "Power" },

P2 Badge Use aggregate-safe telemetry bounds

These bounds are shared by the Sites, Buildings, Racks, and Groups filter chips, but hashrate and power are aggregate fields on those pages. NumericRangeModal validates against these maxima, so an operator trying to filter a site/building/rack by a realistic aggregate such as power_min=500 kW or hashrate_min=5000 TH/s cannot apply the filter even though the backend accepts and evaluates those aggregate totals; use separate aggregate bounds or loosen these before reusing the per-miner limits on list-level filters.

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 971539ba9b

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread server/internal/domain/stores/sqlstores/collection_sort.go Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6a3df674dd

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread server/internal/handlers/deviceset/handler_test.go Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: af0c3ae734

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread client/src/protoFleet/features/fleetManagement/pages/FleetBuildingsPage.tsx Outdated
Comment thread client/src/protoFleet/features/fleetManagement/pages/FleetSitesPage.tsx Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review


P2 Badge Include direct no-building miners in building-unassigned filter

When the Miners Building filter is set to Unassigned, the client sends only includeNoBuilding, but this server branch only matches miners with a rack membership whose device_set_rack.building_id is NULL. An unracked miner with device.building_id IS NULL renders blank in the new Building column yet is excluded by that same Unassigned building filter unless the user also selects the Rack Unassigned bucket, so the filter hides rows that appear to belong to the selected bucket. Include the direct device.building_id IS NULL case in this predicate.

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

client javascript Pull requests that update javascript code server shared

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants