Repository navigation
Report the eps the semantic map was actually clustered with - #422
Merged
Merged
Conversation
The pair-budget shrink in resolve_cluster_eps applies to every eps, typed
or derived, and where it engages depends on the point cloud. /umap_data
used the shrunk value and discarded it, so on a large album the Cluster
Strength control and the cluster-info modal reported a number the map was
never clustered with.
/umap_data now returns {points, eps, requested_eps}, and /cluster_labels
adds eps. The frontend records the eps each draw used: the spinner keeps
the request, a note beside it shows the strength actually used when the
server shrank it, and the cluster-info modal reads the drawn value rather
than the spinner (which could also be mid-debounce, refused or half-typed).
Fixes #380
Fixes #381
Co-Authored-By: Claude Opus 5.5 <[email protected]>
A derived strength was written into the spinner as a raw float (0.11944), inconsistent with the two decimals its arrows produce. The field now shows formatEps(eps) — two decimals, or two significant figures below 0.1 — and the same formatter is used by the shrink note and the cluster-info modal. The field's value is also what the map and labels are requested at, so the exact value is remembered behind the rounded text and sent until the user edits the field. A stored strength below the floor is shown unrounded, so it never reads as the floor itself while marked unusable. Co-Authored-By: Claude Opus 5.5 <[email protected]>
lstein
enabled auto-merge (squash)
October 6, 2026 18:23
Co-Authored-By: Claude Opus 5.5 <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #380. Fixes #381.
Problem
resolve_cluster_epsshrinks every eps, typed or derived, to fit DBSCAN's neighbor-pair memory budget. Where that kicks in depends on the point cloud./umap_dataclustered with the shrunk value but never returned it. So on a large album tuned to 2.0 the spinner,/get_umap_epsand the cluster-info modal all said 2, while the map was drawn at 1.4. The modal also read the spinner directly, so it could show an unsaved edit, a value the spinner refused, orNaN(#381).Change
/umap_datanow returns{points, eps, requested_eps}instead of a bare array:epsis the value actually clustered with.requested_epsis the query param, else the stored value, ornullwhen derived./cluster_labelsaddseps(additive).umap.js): each draw recordsdrawnEpstogether withpoints. A malformed response throws before anything is assigned.#umapEpsEffectivenote ("map: 1.4") appears only when the server shrank the request. Its tooltip explains why.drawnEps, so it always describes the map the counts beside it come from.docs/developer/api.mdupdated for the new response shape.The auto badge is unchanged. The frontend always sends an explicit
cluster_epsonce the spinner is filled, so/umap_datacan't tell "derived" from "typed"./get_umap_epsstays the source of truth for the badge.Tests
/cluster_labelsagrees. Also covers the stored and derived cases. Existing tests updated for the new shape.umap-effective-eps.test.jscovers the note show/clear cases, the modal vs spinner in each Cluster-info modal reports the spinner's value, not the strength the map was drawn with #381 repro, and a failed redraw. Existing mocks updated.make test: 1291 backend and 989 frontend passing. Lint and format clean.🤖 Generated with Claude Code