refactor(studio): say "fine-tunable" consistently for the model capability - #1881
Draft
aray12 wants to merge 1 commit into
Draft
refactor(studio): say "fine-tunable" consistently for the model capability#1881aray12 wants to merge 1 commit into
aray12 wants to merge 1 commit into
Conversation
…ility
The Models page described one predicate with two words. The filter was
labelled "Customizable" while its only option was labelled "Fine-tunable" —
same widget, both vocabularies — and its tooltip explained it a third way.
The card beside it rendered a "Fine-tunable" badge behind a prop named
`showCustomizationBadges`.
Settles on "fine-tunable" for the user-facing model capability. That is
already what the badge, the empty-state picker ("No fine-tunable models
found"), the form, and the tooltip say; "Customization" stays where it names
the customizer service, its jobs, and their parameters, so the UI and the API
diverge deliberately rather than by accident.
Collapses the predicate to one definition. `Boolean(model.fileset)` was
re-implemented inline in WorkspaceBaseModelsRoute and BaseModelCard, neither
importing the `canFineTuneModel` that already existed; both now call it. The
`canCustomize` field on `useModelCustomizationEligibility` was a pure alias of
`canFineTune` with zero production consumers — a synonym that existed only to
let callers pick a vocabulary — and is removed with its test.
Also normalises the label spellings: "Finetuning Type" (CustomModelsDataView,
GrpoParametersSection, CustomizationConfigSidePanel) and "fine-tuneable"
(BaseModelCard stories) join the majority "Fine-tuning Type" /
"Fine-tunable". GrpoParametersSection and TrainingMethodSection are siblings
in one form and had disagreed. The custom-models empty state mixed both words
in a single sentence and is rewritten.
The serialized filter id stays `'customizable'`. It is written into the
`filters` search param, so renaming it would break links users have already
bookmarked or shared; the constant is renamed and commented instead, and the
existing URL round-trip tests still pin the wire value.
Signed-off-by: Alex Ray <alray@nvidia.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.
Summary
The Models page described one predicate with two words. The filter was labelled "Customizable" while its only option was labelled "Fine-tunable" — same widget, both vocabularies — and its tooltip explained it a third way. The card beside it rendered a "Fine-tunable" badge behind a prop named
showCustomizationBadges.This settles on "fine-tunable" for the user-facing model capability and collapses the underlying predicate to a single definition.
Changes
Vocabulary. "Fine-tunable" is already what the badge, the picker empty state ("No fine-tunable models found"), the form, and the tooltip say. "Customization" stays where it names the customizer service, its jobs, and their parameters — so the UI and the API now diverge deliberately rather than by accident.
One predicate, one definition.
Boolean(model.fileset)was re-implemented inline inWorkspaceBaseModelsRouteandBaseModelCard, neither importing thecanFineTuneModelthat already existed. Both now call it.Dead alias removed.
useModelCustomizationEligibilityreturnedcanCustomize: canFineTune— a pure alias with zero production consumers, existing only to let callers pick a vocabulary. Removed, with its test.Spellings normalised. Four spellings collapse to one:
Finetuning TypeCustomModelsDataView,GrpoParametersSection,CustomizationConfigSidePanelfine-tuneable/Fine-TuneableBaseModelCard.stories.tsxStart Fine-TuningNewCustomizationFormGrpoParametersSectionandTrainingMethodSectionare siblings in one form and had disagreed with each other.Mixed sentence rewritten. The custom-models empty state read "Customize a model with fine-tuning to meet your specific needs." with a "Customize Model" button.
The serialized filter id is deliberately not renamed
FINE_TUNABLE_FILTER_IDkeeps its wire value'customizable'. It is written into thefilterssearch param, so renaming it would break links users have already bookmarked or shared. The constant is renamed and commented instead; the existing URL round-trip tests inWorkspaceBaseModelsRoute/index.test.tsxandroutes/utils.test.tsstill pin the wire value.Type of Change
Quality Gates
Note there is no i18n layer in
web/— no i18next, react-intl, or locale JSON — so every user-visible string is an inline literal and this is necessarily a cross-file string change rather than a message-catalog edit.Verification
Signed-off-by:traileruv run pre-commit run -apasses, or any blocked checks are identified belowTargeted validation:
pnpm --filter nemo-studio-ui test— 338 files, 3320 tests passed (full suite, to catch string assertions anywhere)pnpm --filter @nemo/common test— 124 files, 1549 tests passedpnpm --filter nemo-studio-ui typecheck— cleanpnpm --filter nemo-studio-ui lint:fix— cleanuv run pre-commit run -anot run in full; the commit-scoped pre-commit hooks ran and passed on commit.