free-coding-models 0.5.24 → 0.5.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,6 @@
1
+ # Changelog v0.5.25 - 2026-06-10
2
+
3
+ ### Changed
4
+ - 🆕 badge moved from verdict column to **left of model name** — same slot as ⭐ favorite and 🎯 recommended
5
+ - Priority: ⭐ favorite > 🎯 recommended > 🆕 new — favorite replaces 🆕 when both apply
6
+ - No line shifting: prefix width is subtracted from model name width so columns stay aligned
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "free-coding-models",
3
- "version": "0.5.24",
3
+ "version": "0.5.25",
4
4
  "description": "Find the fastest coding LLM models in seconds — ping free models from multiple providers, pick the best one for OpenCode, Cursor, or any AI coding assistant.",
5
5
  "keywords": [
6
6
  "nvidia",
@@ -651,12 +651,15 @@ export function renderTable({
651
651
  ? providerName.slice(0, 4) + '…'
652
652
  : providerName
653
653
  const source = themeColors.provider(r.providerKey, providerDisplay.padEnd(wSource))
654
- // 📖 Favorites marked with a single no ranking numbers
654
+ // 📖 Prefix: favorite > 🎯 recommended > 🆕 new only one emoji, never shifts the line
655
+ const isNewModel = NEW_MODELS.has(r.modelId) || NEW_MODELS.has(`${r.providerKey}/${r.modelId}`)
655
656
  let favoritePrefix = ''
656
657
  if (r.isRecommended) {
657
658
  favoritePrefix = '🎯 '
658
659
  } else if (r.isFavorite) {
659
660
  favoritePrefix = '⭐ '
661
+ } else if (isNewModel) {
662
+ favoritePrefix = '🆕 '
660
663
  }
661
664
  const prefixDisplayWidth = displayWidth(favoritePrefix)
662
665
  const nameWidth = Math.max(0, W_MODEL - prefixDisplayWidth)
@@ -851,12 +854,7 @@ export function renderTable({
851
854
  verdictColor = (text) => chalk.bold.rgb(...getTierRgb('C'))(text)
852
855
  break
853
856
  }
854
- // 📖 Add NEW badge for recently added models
855
- // 📖 Use padEndDisplay to account for emoji display width (2 cols each) so all rows align
856
- const isNewModel = NEW_MODELS.has(r.modelId) || NEW_MODELS.has(`${r.providerKey}/${r.modelId}`)
857
- const newBadge = isNewModel ? '🆕' : ''
858
- const verdictTextWithBadge = newBadge ? `${newBadge} ${verdictText}` : verdictText
859
- const speedCell = verdictColor(padEndDisplay(verdictTextWithBadge, W_VERDICT))
857
+ const speedCell = verdictColor(padEndDisplay(verdictText, W_VERDICT))
860
858
  const moodCell = padEndDisplay(verdictIcon, W_MOOD)
861
859
 
862
860
  // 📖 Stability column - composite score (0–100) from p95 + jitter + spikes + uptime