Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
11ddd5b
Delete orphan shortcuts module
Finesssee Oct 10, 2026
af2bb85
Delete orphan status indicators module
Finesssee Oct 10, 2026
9bdedcf
Delete orphan core credentials module
Finesssee Oct 10, 2026
e443ead
Delete unused widget snapshot module
Finesssee Oct 10, 2026
3ed0907
Delete unused session quota module
Finesssee Oct 10, 2026
e3a5e93
Remove unused legacy settings setters and accent color helpers
Finesssee Oct 10, 2026
24d7e70
Delete unused settings status module
Finesssee Oct 10, 2026
d7f87b1
Drop test-only per-provider settings setters
Finesssee Oct 10, 2026
a8b52f8
Remove dead helpers, builders and constants in the core crate
Finesssee Oct 10, 2026
e54a483
Remove test-only helpers with no production caller
Finesssee Oct 10, 2026
46d749f
Drop never-read fields from API key provider info
Finesssee Oct 10, 2026
c3e7d02
Delete test-only Codex host-cost renderer copy from the cost CLI
Finesssee Oct 10, 2026
017bfbf
Pin token account support table
Finesssee Oct 10, 2026
4e0d63a
Build token account support rows from cookie and API-key constructors
Finesssee Oct 10, 2026
19650c7
Pin hook event timestamp formatting
Finesssee Oct 10, 2026
2084afa
Format hook timestamps with chrono
Finesssee Oct 10, 2026
18b16d9
Pin session and weekly forecast series handling
Finesssee Oct 10, 2026
c61d60b
Delete unused forecast copy of persist_recorded_windows
Finesssee Oct 10, 2026
a4ca8a6
Delete never-constructed AccountKeyMismatch burndown error
Finesssee Oct 10, 2026
8a928f7
Drive forecast session and weekly series from one table
Finesssee Oct 10, 2026
fe5e30d
Pin embedded dashboard icon table against the icons dir
Finesssee Oct 10, 2026
6c7ee34
Generate dashboard icon table with a macro
Finesssee Oct 10, 2026
3c0920e
Drop CLI pass-throughs and gate test-only helpers
Finesssee Oct 10, 2026
7da7677
Fill CLI fetch contexts from FetchContext::default
Finesssee Oct 10, 2026
c3a4a27
Share one JSON print helper across CLI commands
Finesssee Oct 10, 2026
789dad8
Drop unused tty RollingBuffer and share DSR and elapsed helpers
Finesssee Oct 10, 2026
7f7f4ee
Pin hooks subcommand help text
Finesssee Oct 10, 2026
947e7b3
Dedupe repeated CLI patterns in cost, account, usage, serve and guard
Finesssee Oct 10, 2026
d94f04e
Share hooks JSON output args and one test-result push
Finesssee Oct 10, 2026
d92616c
Table-drive settings language, theme and clamp tests
Finesssee Oct 10, 2026
f38ff43
Drop module-level dead_code allows and fix what they hid
Finesssee Oct 10, 2026
c71461e
Delete unused host RollingBuffer
Finesssee Oct 10, 2026
ffa33bf
Move inline test modules of large core and CLI files into sibling tes…
Finesssee Oct 10, 2026
fd8f6fd
Split settings persistence, start-at-login and provider accessors out…
Finesssee Oct 10, 2026
3c16178
Split settings tests by topic
Finesssee Oct 10, 2026
e91d8ca
Split serve tests into head-bound and dashboard-route modules
Finesssee Oct 10, 2026
7f7962b
Move forecast history store into its own module
Finesssee Oct 10, 2026
9fdc576
Move tty options and process command-line encoding into submodules
Finesssee Oct 10, 2026
1541dc9
Pin settings parse error strings
Finesssee Oct 10, 2026
f075cf5
Say the saved cost bucket zone is not yet applied
Finesssee Oct 10, 2026
1f94a7d
Move the pace_json doc back above its fn
Finesssee Oct 10, 2026
71fa5e0
Rename stale http proxy test
Finesssee Oct 10, 2026
5cfd13f
Use an escaped newline in the hooks help pin
Finesssee Oct 10, 2026
b28869b
Ignore non-SVG files in the icon pin test
Finesssee Oct 10, 2026
904b14a
Merge remote-tracking branch 'origin/main' into simplify/rust-core-cli
Finesssee Oct 10, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 0 additions & 11 deletions rust/src/agent_sessions/parsers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,6 @@ impl AgentPSOutputParser {
record.source
}

pub fn has_codex_app_server(records: &[AgentProcessRecord]) -> bool {
records.iter().any(|record| {
record.kind == AgentProcessKind::AppServer
&& record.provider == Some(AgentSessionProvider::Codex)
})
}

fn parse_line(line: &str, seen_pids: &mut HashSet<u32>) -> Option<AgentProcessRecord> {
let mut fields = line.split_whitespace();
let pid = fields.next()?.parse::<u32>().ok()?;
Expand Down Expand Up @@ -447,10 +440,6 @@ impl ClaudeSessionProjectMapper {
});
transcripts
}

pub fn newest_transcript(cwd: &str, home_directory: &Path) -> Option<ClaudeTranscript> {
Self::transcripts(cwd, home_directory).into_iter().next()
}
}

impl ClaudeTranscriptMetadataParser {
Expand Down
8 changes: 0 additions & 8 deletions rust/src/agent_sessions/pi_family/roots.rs
Original file line number Diff line number Diff line change
Expand Up @@ -161,14 +161,6 @@ impl DirectoryScanBudget {
retained
}

pub fn visit_entry(&mut self) -> bool {
if !self.has_time_remaining() || self.entries_seen >= self.max_entry_count {
return false;
}
self.entries_seen += 1;
true
}

/// Resolve a path only while the shared scan deadline is live.
///
/// The operation is gated before it starts. If it finishes after expiry,
Expand Down
4 changes: 0 additions & 4 deletions rust/src/agent_sessions/remote.rs
Original file line number Diff line number Diff line change
Expand Up @@ -338,10 +338,6 @@ impl RemoteSessionFetcher {
})?;
Ok(result)
}

pub fn failed_result(host: &str, err: impl std::fmt::Display) -> AgentSessionHostResult {
AgentSessionHostResult::failed(host.to_string(), err)
}
}

impl Default for RemoteSessionFetcher {
Expand Down
15 changes: 0 additions & 15 deletions rust/src/browser/cookie_cache.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,6 @@
//! are session secrets, so they are written through `secure_file` (DPAPI on
//! Windows, staged and published atomically) rather than as plaintext.

// The cache API is currently unused by the crate (reserved for provider
// cookie reuse), so every public item would trip dead_code.
#![allow(
dead_code,
reason = "module reserved: CookieHeaderCache has no callers yet"
)]

use crate::core::ProviderId;
use crate::secure_file;
use chrono::{DateTime, Utc};
Expand Down Expand Up @@ -154,14 +147,6 @@ impl CookieHeaderCache {
.collect::<Vec<_>>()
.join("; ")
}

/// Check if a cached entry exists and is fresh
pub fn has_fresh_cache(provider: ProviderId, max_age_secs: i64) -> bool {
match Self::load(provider) {
Some(entry) => !entry.is_stale(max_age_secs),
None => false,
}
}
}

/// Cookie header cache errors
Expand Down
17 changes: 0 additions & 17 deletions rust/src/browser/cookies.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,6 @@
//! Chromium browsers store cookies in an SQLite database encrypted with DPAPI.
//! Firefox stores cookies in an unencrypted SQLite database.

#![allow(
dead_code,
reason = "the cookie API surface is shared across providers and cfg-split Windows/WSLS code paths, so individual helpers are reached only from their own browser/provider callers"
)]

use std::path::Path;

use aes_gcm::{
Expand Down Expand Up @@ -813,18 +808,6 @@ pub fn get_cookie_header_for_domains(domains: &[&str]) -> Result<String, CookieE
}
}

/// Get a cookie header string for a domain from a specific browser
pub fn get_cookie_header_from_browser(
domain: &str,
browser: &super::detection::DetectedBrowser,
) -> Result<String, CookieError> {
let cookies = CookieExtractor::extract_for_domain(browser, domain)?;
if cookies.is_empty() {
return Err(CookieError::NotFound(domain.to_string()));
}
Ok(CookieExtractor::build_cookie_header(&cookies))
}

#[cfg(test)]
mod tests {
use super::*;
Expand Down
5 changes: 0 additions & 5 deletions rust/src/browser/detection.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,6 @@
//! On native Windows, uses standard AppData paths.
//! On WSL, resolves browser paths via /mnt/c/ to access Windows browser data.

#![allow(
dead_code,
reason = "browser detection types reserved for future cookie-based session management"
)]

use std::path::{Path, PathBuf};

use crate::wsl;
Expand Down
5 changes: 0 additions & 5 deletions rust/src/browser/watchdog.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,6 @@
//! Monitors and manages child web probe processes to prevent orphaned processes.
//! Ensures that browser automation or scraping processes are properly cleaned up.

#![allow(
dead_code,
reason = "watchdog types reserved for future browser-session monitoring integration"
)]

use std::collections::HashMap;
use std::process::Child;
use std::sync::Arc;
Expand Down
52 changes: 19 additions & 33 deletions rust/src/cli/account.rs
Original file line number Diff line number Diff line change
Expand Up @@ -111,17 +111,7 @@ async fn list_accounts(provider_name: &str) -> anyhow::Result<()> {

/// Add a new account
async fn add_account(provider_name: &str, label: &str, token: &str) -> anyhow::Result<()> {
let provider = parse_provider(provider_name)?;

if !TokenAccountSupport::is_supported(provider) {
anyhow::bail!(
"{} does not support token accounts.",
provider.display_name()
);
}

let store = TokenAccountStore::new();
let mut data = store.load_provider(provider)?;
let (provider, store, mut data) = load_supported_accounts(provider_name)?;

// Check for duplicate label
if data
Expand All @@ -142,17 +132,7 @@ async fn add_account(provider_name: &str, label: &str, token: &str) -> anyhow::R

/// Remove an account
async fn remove_account(provider_name: &str, account_ref: &str) -> anyhow::Result<()> {
let provider = parse_provider(provider_name)?;

if !TokenAccountSupport::is_supported(provider) {
anyhow::bail!(
"{} does not support token accounts.",
provider.display_name()
);
}

let store = TokenAccountStore::new();
let mut data = store.load_provider(provider)?;
let (provider, store, mut data) = load_supported_accounts(provider_name)?;

let account = find_account(&data, account_ref)?;
let label = account.label.clone();
Expand All @@ -171,17 +151,7 @@ async fn remove_account(provider_name: &str, account_ref: &str) -> anyhow::Resul

/// Switch active account
async fn switch_account(provider_name: &str, account_ref: &str) -> anyhow::Result<()> {
let provider = parse_provider(provider_name)?;

if !TokenAccountSupport::is_supported(provider) {
anyhow::bail!(
"{} does not support token accounts.",
provider.display_name()
);
}

let store = TokenAccountStore::new();
let mut data = store.load_provider(provider)?;
let (provider, store, mut data) = load_supported_accounts(provider_name)?;

let account = find_account(&data, account_ref)?;
let label = account.label.clone();
Expand All @@ -198,6 +168,22 @@ async fn switch_account(provider_name: &str, account_ref: &str) -> anyhow::Resul
Ok(())
}

/// Resolve a provider that supports token accounts and load its stored accounts.
fn load_supported_accounts(
provider_name: &str,
) -> anyhow::Result<(ProviderId, TokenAccountStore, ProviderAccountData)> {
let provider = parse_provider(provider_name)?;
if !TokenAccountSupport::is_supported(provider) {
anyhow::bail!(
"{} does not support token accounts.",
provider.display_name()
);
}
let store = TokenAccountStore::new();
let data = store.load_provider(provider)?;
Ok((provider, store, data))
}

/// Parse provider name to ProviderId
fn parse_provider(name: &str) -> anyhow::Result<ProviderId> {
ProviderId::from_cli_name(name)
Expand Down
Loading