feat: Decouple Meticulous shot import from the chosen profile - #1159
Merged
graphefruit merged 1 commit intoJul 27, 2026
Conversation
Follow-up to graphefruit#1130 / graphefruit#1141. The profile select in the "Meticulous Machine" section sets the profile to use live while brewing, but it also silently filtered the shot history offered by "Import a shot". That reads as a filter, which it never looked like in the UI, so the import now always lists every recent shot. 76629e0 already removed the filter from the paging call, but the initial load still passed it, so the first page was profile-scoped while every following page was not. Both now load the full history, and the unused filter parameter is gone from MeticulousDevice.getHistory(). Also reorder the section so "Import a shot" comes first and "Choose profile" second, separated by a compact "or" divider, to make clear that the two are independent rather than one feeding the other. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
Follow-up to #1130 / #1141, addressing the profile-scoped shot history noted there and discussed on Discord ("I think seeing all would be the better solution in the end").
Shot import no longer filters by the chosen profile
Observed: Choosing a profile first caused "Import a shot" to only offer shots pulled with that profile. Nothing in the UI presents the profile select as a filter, so shots that exist on the machine simply appear to be missing.
Cause: The profile select underneath the "Meticulous Machine" section exists to set the profile to use live in the "While Brewing" section. Its value was additionally being resolved to a profile name and passed to the import modal as
profileFilter, which fed the history searchquery.76629e0 already removed the filter from the paging call, but the initial load still passed it. That left the two inconsistent: the first page was profile-scoped while every page loaded on scroll was not, so the list would start narrow and then widen as you scrolled.
Fix: The import modal no longer receives a profile filter at all, so both the initial load and paging list every recent shot. The now-unused
profileFilterparameter is removed fromMeticulousDevice.getHistory()so the coupling cannot be reintroduced by accident. Choosing a profile still does exactly what it did before for the brew itself — it is simply no longer entangled with import.Reordered the section to show the two are independent
With the filtering gone, the ordering was still implying a sequence: pick a profile, then import within it. "Import a shot" now comes first, followed by a compact
ordivider, then "Choose profile".Screenshot
The divider replaces the previous full-width
<hr/>and is styled with rules on both sides of a muted 12px label. It is deliberately not uppercased: every othertext-transformin the app cancels uppercase rather than adding it (ion-buttonis set toinheritspecifically to undo Ionic's Material-mode all-caps), and CSS uppercasing applies blindly to translated strings, which is locale-sensitive. The newORkey is added toen.jsononly, matching how new strings are handled elsewhere.Files changed
brew-brewing-preparation-device.component.ts— stop resolving and passingprofileFilterto the import modalbrew-modal-import-shot-meticulous.component.ts— drop theprofileFilterinput; initial load now matches pagingmeticulousDevice.ts— remove the unusedprofileFilterparameter fromgetHistory()brew-brewing-preparation-device.component.{html,scss}— reorder the two actions, add theordivideren.json— newORkeyVerified with
tsc --noEmitandng build(no new errors or warnings on the touched files); lint and prettier report no new issues.🤖 Generated with Claude Code