Skip to content

Commit 5fdd8ef

Browse files
arimxyerclaude
andauthored
Fix help text alignment, remove redundant --pick flag, drop Aider agent (#27)
- Remove phantom 'e' key from Status tab help (never implemented) - Add n/N search match navigation to Agents tab help (undocumented) - Remove redundant --pick/-p flag from agents CLI (default behavior) - Remove Aider from agent catalog (unused) - Add Shell Completions section to README - Update CLI CLAUDE.md with completions command and benchmarks symlink - Remove stale --pick reference from README - Bump version to 0.11.2 Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 162522c commit 5fdd8ef

12 files changed

Lines changed: 27 additions & 48 deletions

File tree

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "modelsdev"
3-
version = "0.11.1"
3+
version = "0.11.2"
44
edition = "2021"
55
description = "A fast TUI and CLI for browsing AI models, benchmarks, and coding agents"
66
license = "MIT"

README.md

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
TUI and CLI for browsing AI models, benchmarks, coding agents, and statuses for AI providers.
1010

1111
- **Models Tab**: Browse 3,000+ models across 85+ providers from [models.dev](https://models.dev) with capability indicators, adaptive layouts, and provider categorization
12-
- **Agents Tab**: Track AI coding assistants (Claude Code, Aider, Cursor, etc.) with version detection, changelogs, and GitHub integration
12+
- **Agents Tab**: Track AI coding assistants (Claude Code, Cursor, Codex, etc.) with version detection, changelogs, and GitHub integration
1313
- **Benchmarks Tab**: Compare model performance across 15+ benchmarks from [Artificial Analysis](https://artificialanalysis.ai), with head-to-head tables, scatter plots, radar charts, and creator filtering
1414
- **Status Tab**: Monitor provider health with live incident tracking and scheduled maintenance across 21+ providers
1515

@@ -412,7 +412,6 @@ agents claude --version 1.0.170 # Specific version
412412

413413
```bash
414414
agents claude --list # List all versions
415-
agents claude --pick # Alias for the interactive release browser
416415
```
417416

418417
In the release browser:
@@ -452,6 +451,14 @@ models providers
452451
models providers --json
453452
```
454453

454+
#### Shell Completions
455+
456+
```bash
457+
models completions bash
458+
models completions fish
459+
models completions zsh
460+
```
461+
455462
#### Show model details
456463

457464
```bash

data/agents.json

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -23,26 +23,6 @@
2323
"homepage": "https://claude.ai/code",
2424
"docs": "https://docs.anthropic.com/en/docs/claude-code"
2525
},
26-
"aider": {
27-
"name": "Aider",
28-
"repo": "paul-gauthier/aider",
29-
"categories": ["cli"],
30-
"installation_method": "cli",
31-
"pricing": {
32-
"model": "free",
33-
"free_tier": true,
34-
"usage_notes": "Free tool, pay for underlying model API"
35-
},
36-
"supported_providers": ["openai", "anthropic", "openrouter", "ollama"],
37-
"platform_support": ["macos", "linux", "windows"],
38-
"open_source": true,
39-
"cli_binary": "aider",
40-
"version_command": ["--version"],
41-
"version_regex": "aider v([0-9]+\\.[0-9]+\\.[0-9]+)",
42-
"config_files": ["~/.aider.conf.yml", ".aider.conf.yml"],
43-
"homepage": "https://aider.chat",
44-
"docs": "https://aider.chat/docs"
45-
},
4626
"cursor": {
4727
"name": "Cursor",
4828
"repo": "getcursor/cursor",

src/agents/detect.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ mod tests {
116116
Some("1.0.30".to_string())
117117
);
118118
assert_eq!(
119-
extract_version("aider v0.82.1", None),
119+
extract_version("opencode v0.82.1", None),
120120
Some("0.82.1".to_string())
121121
);
122122
assert_eq!(

src/agents/health.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,13 +116,12 @@ mod tests {
116116

117117
#[test]
118118
fn unmapped_agents_return_none() {
119-
assert!(service_mapping_for_agent("aider").is_none());
120119
assert!(service_mapping_for_agent("opencode").is_none());
121120
}
122121

123122
#[test]
124123
fn resolve_returns_none_for_unmapped() {
125-
assert!(resolve_agent_service_health("aider", &[]).is_none());
124+
assert!(resolve_agent_service_health("opencode", &[]).is_none());
126125
}
127126

128127
#[test]

src/agents/loader.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,6 @@ mod tests {
2727
assert!(agents.schema_version >= 1);
2828
assert!(!agents.agents.is_empty());
2929
assert!(agents.agents.contains_key("claude-code"));
30-
assert!(agents.agents.contains_key("aider"));
30+
assert!(agents.agents.contains_key("cursor"));
3131
}
3232
}

src/cli/CLAUDE.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# CLI Module — Architecture & Patterns
22

33
## Module Purpose
4-
Subcommands for models, benchmarks, agents: thin clap wrappers (`list.rs`, `search.rs`, `show.rs`, `benchmarks.rs`) that delegate to interactive pickers or direct output. Binary aliases support `models <cmd>` and `agents <cmd>` (detected via argv[0]).
4+
Subcommands for models, benchmarks, agents: thin clap wrappers (`list.rs`, `search.rs`, `show.rs`, `benchmarks.rs`) that delegate to interactive pickers or direct output. Binary aliases support `models <cmd>`, `agents <cmd>`, and `benchmarks <cmd>` (detected via argv[0]).
55

66
## Shared Picker Infrastructure (`picker.rs`)
77

@@ -31,6 +31,8 @@ All 3 pickers (models, benchmarks, agents) follow the same lifecycle:
3131
- `models list` — filters + sort, delegates to picker or table output
3232
- `models search <query>` — keyword match, interactive picker for selection
3333
- `models show <name>` — single-model detail view with benchmarks/capabilities
34+
- `models providers` — list all providers, supports --json
35+
- `models completions <shell>` — generate shell completions (bash/fish/zsh/elvish/powershell)
3436
- `models benchmarks` — interactive picker, can output JSON via --json
3537
- `agents status|latest|list-sources` — table output; `agents status` sorts by most recently updated and includes a "Status" column with service health icons
3638
- `agents <tool>` — release browser with changelog search (agents_ui.rs)

src/cli/agents.rs

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,14 @@ use tokio::sync::RwLock;
1212
agents <tool> Browse releases for a tool
1313
agents <tool> --latest Show latest changelog directly
1414
agents <tool> --list, -l List all versions
15-
agents <tool> --pick, -p Alias for the interactive release browser
1615
agents <tool> --version <v> Show changelog for a specific version
1716
agents <tool> --web, -w Open releases page in browser
1817
1918
\x1b[1;4mExamples:\x1b[0m
2019
agents claude Browse Claude Code releases
2120
agents claude --latest Latest Claude Code changelog
2221
agents cursor --list All Cursor versions
23-
agents aider --pick Open the interactive release browser")]
22+
agents cursor --version 1.0.0 Show a specific Cursor version")]
2423
pub struct AgentsCli {
2524
#[command(subcommand)]
2625
pub command: Option<AgentsCommand>,
@@ -45,7 +44,6 @@ pub struct ToolArgs {
4544
pub tool: String,
4645
pub latest: bool,
4746
pub list: bool,
48-
pub pick: bool,
4947
pub version: Option<String>,
5048
pub web: bool,
5149
}
@@ -58,7 +56,6 @@ impl ToolArgs {
5856
let tool = args[0].clone();
5957
let mut latest = false;
6058
let mut list = false;
61-
let mut pick = false;
6259
let mut version = None;
6360
let mut web = false;
6461

@@ -67,7 +64,6 @@ impl ToolArgs {
6764
match args[i].as_str() {
6865
"--latest" => latest = true,
6966
"--list" | "-l" => list = true,
70-
"--pick" | "-p" => pick = true,
7167
"--web" | "-w" => web = true,
7268
"--version" => {
7369
i += 1;
@@ -83,19 +79,18 @@ impl ToolArgs {
8379
}
8480

8581
// Mutual exclusivity
86-
let mode_count = [latest, list, pick, version.is_some()]
82+
let mode_count = [latest, list, version.is_some()]
8783
.iter()
8884
.filter(|&&v| v)
8985
.count();
9086
if mode_count > 1 {
91-
anyhow::bail!("--latest, --list, --pick, and --version are mutually exclusive");
87+
anyhow::bail!("--latest, --list, and --version are mutually exclusive");
9288
}
9389

9490
Ok(Self {
9591
tool,
9692
latest,
9793
list,
98-
pick,
9994
version,
10095
web,
10196
})
@@ -786,10 +781,6 @@ fn run_tool(args: ToolArgs) -> Result<()> {
786781
return run_version_list(&entry.agent, &github);
787782
}
788783

789-
if args.pick {
790-
return run_release_browser(&entry, &github);
791-
}
792-
793784
if args.latest {
794785
return print_specific_or_latest_release(&entry.agent.name, &github, None);
795786
}
@@ -1146,16 +1137,15 @@ mod tests {
11461137
assert_eq!(parsed.tool, "claude");
11471138
assert!(parsed.latest);
11481139
assert!(!parsed.list);
1149-
assert!(!parsed.pick);
11501140
assert!(parsed.version.is_none());
11511141
}
11521142

11531143
#[test]
1154-
fn tool_args_rejects_conflicting_latest_and_pick() {
1144+
fn tool_args_rejects_conflicting_latest_and_list() {
11551145
let err = ToolArgs::parse_from(vec![
11561146
"claude".to_string(),
11571147
"--latest".to_string(),
1158-
"--pick".to_string(),
1148+
"--list".to_string(),
11591149
])
11601150
.unwrap_err()
11611151
.to_string();

src/config.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,6 @@ mod tests {
221221
assert!(config.is_tracked("claude-code"));
222222
assert!(config.is_tracked("codex"));
223223
// Not in default list
224-
assert!(!config.is_tracked("aider"));
225224
assert!(!config.is_tracked("cursor"));
226225
}
227226

0 commit comments

Comments
 (0)