free-coding-models 0.5.25 โ 0.5.27
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.
- package/README.md +18 -36
- package/changelog/v0.5.26.md +21 -0
- package/changelog/v0.5.27.md +15 -0
- package/package.json +1 -1
- package/sources.js +100 -29
- package/src/core/benchmark.js +0 -10
- package/src/core/config.js +5 -1
- package/src/core/endpoint-installer.js +1 -2
- package/src/core/legacy-proxy-cleanup.js +2 -2
- package/src/core/provider-metadata.js +72 -18
- package/src/core/quota-capabilities.js +5 -1
- package/src/core/setup.js +5 -4
- package/src/core/tool-bootstrap.js +0 -22
- package/src/core/tool-launchers.js +1 -89
- package/src/core/tool-metadata.js +6 -13
- package/src/core/utils.js +2 -6
- package/src/tui/app.js +5 -6
- package/src/tui/command-palette.js +0 -2
- package/src/tui/key-handler.js +11 -21
- package/src/tui/overlays.js +13 -6
- package/src/tui/theme.js +10 -4
- package/src/tui/tui-filters.js +2 -2
- package/web/dist/assets/{index-BaQs4odm.js โ index-JUPDB-J-.js} +3 -3
- package/web/dist/index.html +1 -1
- package/web/server.js +4 -0
- package/web/src/components/atoms/ProviderLogo.jsx +0 -1
- package/web/src/components/settings/SettingsView.jsx +4 -4
package/web/dist/index.html
CHANGED
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
49
49
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
50
50
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">
|
|
51
|
-
<script type="module" crossorigin src="/assets/index-
|
|
51
|
+
<script type="module" crossorigin src="/assets/index-JUPDB-J-.js"></script>
|
|
52
52
|
<link rel="stylesheet" crossorigin href="/assets/index-avN2GM3H.css">
|
|
53
53
|
</head>
|
|
54
54
|
<body>
|
package/web/server.js
CHANGED
|
@@ -35,6 +35,7 @@ const { version: LOCAL_VERSION } = require('../package.json')
|
|
|
35
35
|
|
|
36
36
|
import { sources, MODELS } from '../sources.js'
|
|
37
37
|
import { loadConfig, getApiKey, saveConfig, isProviderEnabled } from '../src/core/config.js'
|
|
38
|
+
import { getProviderBillingNote, getProviderLabelWithBilling, PROVIDER_METADATA } from '../src/core/provider-metadata.js'
|
|
38
39
|
import { ensureFavoritesConfig } from '../src/core/favorites.js'
|
|
39
40
|
import { ping } from '../src/core/ping.js'
|
|
40
41
|
import { loadChangelog } from '../src/core/changelog-loader.js'
|
|
@@ -318,6 +319,9 @@ function getConfigPayload() {
|
|
|
318
319
|
const rawKey = getApiKey(config, key)
|
|
319
320
|
providers[key] = {
|
|
320
321
|
name: src.name,
|
|
322
|
+
displayName: getProviderLabelWithBilling(key, src.name),
|
|
323
|
+
billingNote: getProviderBillingNote(key),
|
|
324
|
+
paidProviderNote: PROVIDER_METADATA[key]?.paidProviderNote || null,
|
|
321
325
|
hasKey: !!rawKey,
|
|
322
326
|
maskedKey: rawKey ? maskApiKey(rawKey) : null,
|
|
323
327
|
enabled: isProviderEnabled(config, key),
|
|
@@ -75,7 +75,6 @@ const PROVIDER_CONFIG = {
|
|
|
75
75
|
scaleway: { folder: 'scalewaylogo', iconFile: 'ScalewayLogo', iconClass: 'scalewayLogo', hasColor: false, hasText: false, legacy: true, noCaption: true },
|
|
76
76
|
zai: { folder: 'zai', hasColor: false, hasText: true },
|
|
77
77
|
qwen: { folder: 'qwen', hasColor: true, hasText: true },
|
|
78
|
-
gemini: { folder: 'gemini', hasColor: true, hasText: true },
|
|
79
78
|
'opencode-zen': { folder: 'opencode', hasColor: false, hasText: true },
|
|
80
79
|
// ๐ Codestral intentionally reuses Mistral's branding โ the colored Mistral
|
|
81
80
|
// ๐ icon (so the brand association is visible) + the literal caption
|
|
@@ -267,7 +267,7 @@ export default function SettingsView({ onToast, onOpenChangelog, onCheckForUpdat
|
|
|
267
267
|
.filter(([, p]) => {
|
|
268
268
|
if (!searchQuery) return true
|
|
269
269
|
const q = searchQuery.toLowerCase()
|
|
270
|
-
return p.name.toLowerCase().includes(q)
|
|
270
|
+
return `${p.name} ${p.displayName || ''} ${p.billingNote || ''}`.toLowerCase().includes(q)
|
|
271
271
|
})
|
|
272
272
|
.sort((a, b) => a[1].name.localeCompare(b[1].name))
|
|
273
273
|
|
|
@@ -451,8 +451,8 @@ export default function SettingsView({ onToast, onOpenChangelog, onCheckForUpdat
|
|
|
451
451
|
<IconPlug size={20} stroke={1.5} />
|
|
452
452
|
</div>
|
|
453
453
|
<div className={styles.cardInfo}>
|
|
454
|
-
<div className={styles.cardName}>{p.name}</div>
|
|
455
|
-
<div className={styles.cardMeta}>{p.modelCount} models ยท {key}</div>
|
|
454
|
+
<div className={styles.cardName}>{p.displayName || p.name}</div>
|
|
455
|
+
<div className={styles.cardMeta}>{p.modelCount} models ยท {key}{p.billingNote ? ` ยท ${p.billingNote}` : ''}</div>
|
|
456
456
|
</div>
|
|
457
457
|
<span className={`${styles.cardStatus} ${p.hasKey ? styles.statusConfigured : styles.statusMissing}`}>
|
|
458
458
|
{p.hasKey ? (
|
|
@@ -517,7 +517,7 @@ export default function SettingsView({ onToast, onOpenChangelog, onCheckForUpdat
|
|
|
517
517
|
)}
|
|
518
518
|
|
|
519
519
|
<div className={styles.keyGroup}>
|
|
520
|
-
<label className={styles.keyLabel}>{p.hasKey ? 'Update API Key' : 'Add API Key'}</label>
|
|
520
|
+
<label className={styles.keyLabel}>{p.hasKey ? 'Update API Key' : 'Add API Key'}{p.billingNote ? ` ๐ฐ ${p.billingNote}` : ''}</label>
|
|
521
521
|
<div className={styles.keyInputRow}>
|
|
522
522
|
<input
|
|
523
523
|
type="password"
|