free-coding-models 0.3.14 → 0.3.16

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/CHANGELOG.md CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  ---
4
4
 
5
+ ## 0.3.15
6
+
7
+ ### Added
8
+ - **GLM-4.7-Flash and GLM-4.5-Flash models**: Added ZAI's free coding models GLM-4.7-Flash and GLM-4.5-Flash to the ZAI provider. Both models are rated S tier with 59.2% SWE-bench scores and are completely free with unlimited API access.
9
+
10
+ ### Changed
11
+ - Added vertical column separators (gentle dark orange) for clearer column separation and removed the horizontal separator line in the main TUI.
12
+
5
13
  ## 0.3.14
6
14
 
7
15
  ### Changed
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "free-coding-models",
3
- "version": "0.3.14",
3
+ "version": "0.3.16",
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",
package/sources.js CHANGED
@@ -248,8 +248,10 @@ export const zai = [
248
248
  // ── S+ tier — SWE-bench Verified ≥70% ──
249
249
  ['zai/glm-5', 'GLM-5', 'S+', '77.8%', '128k'],
250
250
  ['zai/glm-4.7', 'GLM-4.7', 'S+', '73.8%', '200k'],
251
+ ['zai/glm-4.7-flash', 'GLM-4.7-Flash', 'S', '59.2%', '200k'],
251
252
  ['zai/glm-4.5', 'GLM-4.5', 'S+', '75.0%', '128k'],
252
253
  ['zai/glm-4.5-air', 'GLM-4.5-Air', 'S+', '72.0%', '128k'],
254
+ ['zai/glm-4.5-flash', 'GLM-4.5-Flash', 'S', '59.2%', '128k'],
253
255
  ['zai/glm-4.6', 'GLM-4.6', 'S+', '70.0%', '128k'],
254
256
  ]
255
257
 
@@ -54,6 +54,16 @@ const ACTIVE_FILTER_BG_BY_TIER = {
54
54
  'C': [186, 104, 200],
55
55
  }
56
56
 
57
+ // 📖 Import UI configuration for consistent styling
58
+ import { VERTICAL_SEPARATOR, COLUMN_SPACING } from './ui-config.js';
59
+
60
+ // 📖 Column separator (vertical bar) is now defined in ui-config.js
61
+ // const VERTICAL_SEPARATOR = chalk.rgb(255, 140, 0).dim('│');
62
+ // const COL_SEP = ` ${VERTICAL_SEPARATOR} `; // Replaced by imported COLUMN_SPACING
63
+
64
+ // 📖 Column spacing is now defined in ui-config.js
65
+ const COL_SEP = COLUMN_SPACING;
66
+
57
67
  const require = createRequire(import.meta.url)
58
68
  const { version: LOCAL_VERSION } = require('../package.json')
59
69
 
@@ -290,25 +300,9 @@ export function renderTable(results, pendingPings, frame, cursor = null, sortCol
290
300
  const tokensH_c = chalk.dim(tokensH.padEnd(W_TOKENS))
291
301
  // 📖 Usage column removed from UI – no header or separator for it.
292
302
  // Header without Usage column (column order: Rank, Tier, SWE%, CTX, Model, Provider, Latest Ping, Avg Ping, Health, Verdict, Stability, Up%, Used)
293
- lines.push(' ' + rankH_c + ' ' + tierH_c + ' ' + sweH_c + ' ' + ctxH_c + ' ' + modelH_c + ' ' + originH_c + ' ' + pingH_c + ' ' + avgH_c + ' ' + healthH_c + ' ' + verdictH_c + ' ' + stabH_c + ' ' + uptimeH_c + ' ' + tokensH_c)
303
+ lines.push(' ' + rankH_c + COL_SEP + tierH_c + COL_SEP + sweH_c + COL_SEP + ctxH_c + COL_SEP + modelH_c + COL_SEP + originH_c + COL_SEP + pingH_c + COL_SEP + avgH_c + COL_SEP + healthH_c + COL_SEP + verdictH_c + COL_SEP + stabH_c + COL_SEP + uptimeH_c + COL_SEP + tokensH_c)
304
+
294
305
 
295
- // Separator line without Usage column
296
- lines.push(
297
- ' ' +
298
- chalk.dim('─'.repeat(W_RANK)) + ' ' +
299
- chalk.dim('─'.repeat(W_TIER)) + ' ' +
300
- chalk.dim('─'.repeat(W_SWE)) + ' ' +
301
- chalk.dim('─'.repeat(W_CTX)) + ' ' +
302
- '─'.repeat(W_MODEL) + ' ' +
303
- '─'.repeat(W_SOURCE) + ' ' +
304
- chalk.dim('─'.repeat(W_PING)) + ' ' +
305
- chalk.dim('─'.repeat(W_AVG)) + ' ' +
306
- chalk.dim('─'.repeat(W_STATUS)) + ' ' +
307
- chalk.dim('─'.repeat(W_VERDICT)) + ' ' +
308
- chalk.dim('─'.repeat(W_STAB)) + ' ' +
309
- chalk.dim('─'.repeat(W_UPTIME)) + ' ' +
310
- chalk.dim('─'.repeat(W_TOKENS))
311
- )
312
306
 
313
307
  if (sorted.length === 0) {
314
308
  lines.push('')
@@ -559,7 +553,7 @@ export function renderTable(results, pendingPings, frame, cursor = null, sortCol
559
553
  : chalk.dim('0'.padEnd(W_TOKENS))
560
554
 
561
555
  // 📖 Build row with double space between columns (order: Rank, Tier, SWE%, CTX, Model, Provider, Latest Ping, Avg Ping, Health, Verdict, Stability, Up%, Used)
562
- const row = ' ' + num + ' ' + tier + ' ' + sweCell + ' ' + ctxCell + ' ' + nameCell + ' ' + sourceCell + ' ' + pingCell + ' ' + avgCell + ' ' + status + ' ' + speedCell + ' ' + stabCell + ' ' + uptimeCell + ' ' + tokensCell
556
+ const row = ' ' + num + COL_SEP + tier + COL_SEP + sweCell + COL_SEP + ctxCell + COL_SEP + nameCell + COL_SEP + sourceCell + COL_SEP + pingCell + COL_SEP + avgCell + COL_SEP + status + COL_SEP + speedCell + COL_SEP + stabCell + COL_SEP + uptimeCell + COL_SEP + tokensCell
563
557
 
564
558
  if (isCursor) {
565
559
  lines.push(chalk.bgRgb(155, 55, 135)(row))
@@ -0,0 +1,49 @@
1
+ /**
2
+ * @file ui-config.js
3
+ * @description Central configuration for TUI visual styling.
4
+ *
5
+ * @details
6
+ * This module centralizes all visual styling constants for the TUI interface.
7
+ * By keeping colors, separators, and spacing in one place, it becomes easy to
8
+ * customize the look and feel without modifying rendering logic.
9
+ *
10
+ * 📖 Configuration:
11
+ * - BORDER_COLOR: Color of column separators (vertical bars)
12
+ * - BORDER_STYLE: Style of separators (dim, bold, etc.)
13
+ * - HORIZONTAL_SEPARATOR: Character used for horizontal lines
14
+ * - HORIZONTAL_STYLE: Style of horizontal lines
15
+ * - COLUMN_SPACING: Space between columns
16
+ *
17
+ * @see render-table.js - uses these constants for rendering
18
+ * @see tier-colors.js - for tier-specific color definitions
19
+ */
20
+
21
+ import chalk from 'chalk';
22
+
23
+ // 📖 Column separator (vertical bar) configuration
24
+ export const BORDER_COLOR = chalk.rgb(255, 140, 0); // Gentle dark orange
25
+ export const BORDER_STYLE = 'dim'; // Options: 'dim', 'bold', 'underline', 'inverse', etc.
26
+ export const VERTICAL_SEPARATOR = BORDER_COLOR[BORDER_STYLE]('│');
27
+
28
+ // 📖 Horizontal separator configuration
29
+ export const HORIZONTAL_SEPARATOR = '─'; // Unicode horizontal line
30
+ export const HORIZONTAL_STYLE = 'dim'; // Options: 'dim', 'bold', etc.
31
+ export const HORIZONTAL_LINE = chalk[HORIZONTAL_STYLE](HORIZONTAL_SEPARATOR);
32
+
33
+ // 📖 Column spacing configuration
34
+ export const COLUMN_SPACING = ` ${VERTICAL_SEPARATOR} `; // Space around vertical separator
35
+
36
+ // 📖 Optional: Add more UI styling constants here as needed
37
+ export const TABLE_PADDING = 1; // Padding around table edges
38
+
39
+ // 📖 Export all constants for easy import
40
+ export default {
41
+ BORDER_COLOR,
42
+ BORDER_STYLE,
43
+ VERTICAL_SEPARATOR,
44
+ HORIZONTAL_SEPARATOR,
45
+ HORIZONTAL_STYLE,
46
+ HORIZONTAL_LINE,
47
+ COLUMN_SPACING,
48
+ TABLE_PADDING
49
+ };