browser-automation-cli 0.7.1__tar.gz → 0.7.2__tar.gz

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.
Files changed (19) hide show
  1. {browser_automation_cli-0.7.1 → browser_automation_cli-0.7.2}/Cargo.lock +1 -1
  2. {browser_automation_cli-0.7.1 → browser_automation_cli-0.7.2}/Cargo.toml +1 -1
  3. {browser_automation_cli-0.7.1 → browser_automation_cli-0.7.2}/PKG-INFO +1 -1
  4. {browser_automation_cli-0.7.1 → browser_automation_cli-0.7.2}/install.sh +1 -1
  5. {browser_automation_cli-0.7.1 → browser_automation_cli-0.7.2}/pyproject.toml +1 -1
  6. {browser_automation_cli-0.7.1 → browser_automation_cli-0.7.2}/src/main.rs +17 -4
  7. {browser_automation_cli-0.7.1 → browser_automation_cli-0.7.2}/.gitignore +0 -0
  8. {browser_automation_cli-0.7.1 → browser_automation_cli-0.7.2}/README.md +0 -0
  9. {browser_automation_cli-0.7.1 → browser_automation_cli-0.7.2}/SKILL.md +0 -0
  10. {browser_automation_cli-0.7.1 → browser_automation_cli-0.7.2}/src/actions.rs +0 -0
  11. {browser_automation_cli-0.7.1 → browser_automation_cli-0.7.2}/src/cdp.rs +0 -0
  12. {browser_automation_cli-0.7.1 → browser_automation_cli-0.7.2}/src/chrome.rs +0 -0
  13. {browser_automation_cli-0.7.1 → browser_automation_cli-0.7.2}/src/daemon_main.rs +0 -0
  14. {browser_automation_cli-0.7.1 → browser_automation_cli-0.7.2}/src/install.rs +0 -0
  15. {browser_automation_cli-0.7.1 → browser_automation_cli-0.7.2}/src/js.rs +0 -0
  16. {browser_automation_cli-0.7.1 → browser_automation_cli-0.7.2}/src/lib.rs +0 -0
  17. {browser_automation_cli-0.7.1 → browser_automation_cli-0.7.2}/src/server.rs +0 -0
  18. {browser_automation_cli-0.7.1 → browser_automation_cli-0.7.2}/src/session.rs +0 -0
  19. {browser_automation_cli-0.7.1 → browser_automation_cli-0.7.2}/src/update.rs +0 -0
@@ -34,7 +34,7 @@ dependencies = [
34
34
 
35
35
  [[package]]
36
36
  name = "browser-cli"
37
- version = "0.7.1"
37
+ version = "0.7.2"
38
38
  dependencies = [
39
39
  "base64",
40
40
  "futures-util",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "browser-cli"
3
- version = "0.7.1"
3
+ version = "0.7.2"
4
4
  edition = "2021"
5
5
  description = "Browser automation daemon + CLI for coding agents. Persistent sessions, no MCP, no extensions."
6
6
  license = "MIT"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: browser-automation-cli
3
- Version: 0.7.1
3
+ Version: 0.7.2
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: 3
6
6
  Classifier: Operating System :: MacOS
@@ -1,7 +1,7 @@
1
1
  #!/bin/sh
2
2
  # Install the Rust browser/browser-daemon binaries from the GitHub release into ~/.local/bin.
3
3
  set -e
4
- V="${BROWSER_CLI_VERSION:-0.7.1}"; OS=$(uname -s | tr A-Z a-z); ARCH=$(uname -m)
4
+ V="${BROWSER_CLI_VERSION:-0.7.2}"; OS=$(uname -s | tr A-Z a-z); ARCH=$(uname -m)
5
5
  URL="https://github.com/jshan9078/browser-automation-cli/releases/download/v$V/browser-cli-$V-$OS-$ARCH.tar.gz"
6
6
  DEST="${BROWSER_CLI_BIN:-$HOME/.local/bin}"; mkdir -p "$DEST"
7
7
  echo "Downloading $URL"; curl -fsSL "$URL" | tar -C "$DEST" -xzf -
@@ -4,7 +4,7 @@ build-backend = "maturin"
4
4
 
5
5
  [project]
6
6
  name = "browser-automation-cli"
7
- version = "0.7.1"
7
+ version = "0.7.2"
8
8
  description = "Browser automation daemon + CLI for coding agents. Persistent sessions, no MCP, no extensions."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -17,7 +17,8 @@ Standalone (no daemon):
17
17
  browser cleanup Kill Chromium processes started by this tool
18
18
  browser --version | update Show version / upgrade (daily PyPI check; BROWSER_NO_UPDATE_CHECK=1 disables)
19
19
  browser install skill [target...] Install the agent skill (SKILL.md) into Claude Code / Codex /
20
- OpenCode skill directories (all detected when no target given)
20
+ OpenCode skill directories (all detected when no target given).
21
+ `browser update` auto-refreshes already-installed skills.
21
22
  browser engine [auto|managed|system|<path>]
22
23
  Which browser to launch: managed = pinned Chrome for Testing,
23
24
  system = your installed Chrome/Edge/Brave/Chromium (no download),
@@ -349,7 +350,15 @@ fn update_cmd() -> i32 {
349
350
  if browser_cli::update::is_newer(latest, browser_cli::update::CURRENT) {
350
351
  println!("{latest} available (you have {}). Upgrading with: uv tool upgrade browser-automation-cli", browser_cli::update::CURRENT);
351
352
  let st = Command::new("uv").args(["tool", "upgrade", "browser-automation-cli"]).status();
352
- match st { Ok(s) if s.success() => { println!("Restart the daemon to use the new version: browser shutdown && browser-daemon &"); 0 } _ => { eprintln!("Upgrade failed; run it manually: uv tool upgrade browser-automation-cli (or pip install -U browser-automation-cli)"); 1 } }
353
+ match st {
354
+ Ok(s) if s.success() => {
355
+ // refresh already-installed agent skills using the upgraded binary (embeds the new SKILL.md)
356
+ if let Ok(exe) = std::env::current_exe() { let _ = Command::new(exe).args(["install", "skill", "--existing"]).status(); }
357
+ println!("Restart the daemon to use the new version: browser shutdown && browser-daemon &");
358
+ 0
359
+ }
360
+ _ => { eprintln!("Upgrade failed; run it manually: uv tool upgrade browser-automation-cli (or pip install -U browser-automation-cli)"); 1 }
361
+ }
353
362
  } else { println!("Up to date ({}).", browser_cli::update::CURRENT); 0 }
354
363
  }
355
364
 
@@ -381,11 +390,15 @@ fn install_skill(args: &[String]) -> i32 {
381
390
  ("codex", home.join(".codex"), home.join(".codex/skills")),
382
391
  ("opencode", home.join(".config/opencode"), home.join(".config/opencode/skills")),
383
392
  ];
393
+ let existing_only = args.iter().any(|a| a == "--existing");
384
394
  let mut targets: Vec<(String, std::path::PathBuf)> = Vec::new();
385
- if args.is_empty() {
395
+ if args.is_empty() || (existing_only && args.len() == 1) {
386
396
  for (name, marker, dir) in known {
387
- if marker.exists() { targets.push((name.to_string(), dir.clone())); }
397
+ // --existing: only agents that already have our skill; else any agent that is installed
398
+ let take = if existing_only { dir.join("browser-cli/SKILL.md").exists() } else { marker.exists() };
399
+ if take { targets.push((name.to_string(), dir.clone())); }
388
400
  }
401
+ if existing_only && targets.is_empty() { return 0; } // nothing previously installed; quietly do nothing
389
402
  if targets.is_empty() {
390
403
  eprintln!("No agent directories found (~/.claude, ~/.codex, ~/.config/opencode).");
391
404
  eprintln!("Pick one explicitly: browser install skill claude|codex|opencode, or pass a skills directory path.");