@@ -32,6 +32,10 @@ import type { KeyEvent } from '@opentui/core'
3232// (rendered by the parent), not the section header — this picker is purely a
3333// list of choices grouped by tier. Empty sections are filtered so a model set
3434// with no premium (or no unlimited) entries doesn't render an orphan header.
35+ //
36+ // `label` may be empty: limited-tier users only ever see one section, so the
37+ // "LIMITED" header would just leak the internal tier name without organizing
38+ // anything. Renderer treats an empty label as "no header row".
3539type Section = {
3640 key : 'premium' | 'unlimited' | 'limited'
3741 label : string
@@ -83,6 +87,10 @@ export const FreebuffModelSelector: React.FC = () => {
8387 ( ) => getFreebuffModelsForAccessTier ( accessTier ) ,
8488 [ accessTier ] ,
8589 )
90+ // Limited tier only ever surfaces one model, so a comparative tagline
91+ // ("Most efficient") reads as filler. Hide it; the warning (data-collection)
92+ // is the row's real content.
93+ const showTagline = accessTier !== 'limited'
8694 const availableModelIds = useMemo (
8795 ( ) => availableModels . map ( ( m ) => m . id ) ,
8896 [ availableModels ] ,
@@ -92,7 +100,7 @@ export const FreebuffModelSelector: React.FC = () => {
92100 return [
93101 {
94102 key : 'limited' ,
95- label : 'LIMITED ' ,
103+ label : '' ,
96104 models : availableModels ,
97105 } ,
98106 ] satisfies readonly Section [ ]
@@ -152,7 +160,8 @@ export const FreebuffModelSelector: React.FC = () => {
152160 const maxNameLen = Math . max ( ...availableModels . map ( nameLen ) )
153161
154162 const detailsParts = ( model : FreebuffModelOption ) : number [ ] => {
155- const parts = [ model . tagline . length ]
163+ const parts : number [ ] = [ ]
164+ if ( showTagline ) parts . push ( model . tagline . length )
156165 if ( model . warning ) parts . push ( model . warning . length )
157166 if ( model . availability === 'deployment_hours' ) {
158167 parts . push ( deploymentAvailabilityLabel . length )
@@ -181,9 +190,10 @@ export const FreebuffModelSelector: React.FC = () => {
181190
182191 // Narrow: line 1 = "indicator name · tagline", line 2 (if any) =
183192 // " warning · hours". Compute the max of both so all buttons stay the
184- // same width.
193+ // same width. When taglines are hidden (limited tier), line 1 is just
194+ // "indicator name" with no separator.
185195 const labelLineLen = ( m : FreebuffModelOption ) =>
186- 2 + m . displayName . length + 3 + m . tagline . length
196+ 2 + m . displayName . length + ( showTagline ? 3 + m . tagline . length : 0 )
187197 const detailsLineLen = ( m : FreebuffModelOption ) => {
188198 const parts : number [ ] = [ ]
189199 if ( m . warning ) parts . push ( m . warning . length )
@@ -205,7 +215,7 @@ export const FreebuffModelSelector: React.FC = () => {
205215 ) ,
206216 nameColumnWidth : maxNameLen ,
207217 }
208- } , [ availableModels , contentMaxWidth , deploymentAvailabilityLabel ] )
218+ } , [ availableModels , contentMaxWidth , deploymentAvailabilityLabel , showTagline ] )
209219
210220 const isJoinable = useCallback (
211221 ( modelId : string ) => {
@@ -339,10 +349,12 @@ export const FreebuffModelSelector: React.FC = () => {
339349 { model . displayName }
340350 </ span >
341351 { wrapDetails ? (
342- < span fg = { mutedColor } > · { model . tagline } </ span >
352+ showTagline && < span fg = { mutedColor } > · { model . tagline } </ span >
343353 ) : (
344354 < >
345- < span fg = { mutedColor } > { namePadding + model . tagline } </ span >
355+ { showTagline && (
356+ < span fg = { mutedColor } > { namePadding + model . tagline } </ span >
357+ ) }
346358 { hasWarning && < span fg = { warningColor } > · { model . warning } </ span > }
347359 { hasHours && (
348360 < span fg = { mutedColor } > · { deploymentAvailabilityLabel } </ span >
@@ -382,7 +394,9 @@ export const FreebuffModelSelector: React.FC = () => {
382394 marginTop : sectionIdx === 0 ? 0 : 1 ,
383395 } }
384396 >
385- < text style = { { fg : theme . muted } } > { section . label } </ text >
397+ { section . label && (
398+ < text style = { { fg : theme . muted } } > { section . label } </ text >
399+ ) }
386400 { section . models . map ( renderModelButton ) }
387401 </ box >
388402 ) ) }
0 commit comments