browse-code 0.2.12__tar.gz → 0.2.14__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 (23) hide show
  1. {browse_code-0.2.12 → browse_code-0.2.14}/PKG-INFO +32 -2
  2. {browse_code-0.2.12 → browse_code-0.2.14}/README.md +31 -1
  3. browse_code-0.2.14/browse_code/__init__.py +1 -0
  4. {browse_code-0.2.12 → browse_code-0.2.14}/browse_code/extension/content.js +10 -0
  5. {browse_code-0.2.12 → browse_code-0.2.14}/browse_code.egg-info/PKG-INFO +32 -2
  6. {browse_code-0.2.12 → browse_code-0.2.14}/setup.py +1 -1
  7. browse_code-0.2.12/browse_code/__init__.py +0 -1
  8. {browse_code-0.2.12 → browse_code-0.2.14}/browse_code/cli.py +0 -0
  9. {browse_code-0.2.12 → browse_code-0.2.14}/browse_code/extension/icon128.png +0 -0
  10. {browse_code-0.2.12 → browse_code-0.2.14}/browse_code/extension/icon16.png +0 -0
  11. {browse_code-0.2.12 → browse_code-0.2.14}/browse_code/extension/icon48.png +0 -0
  12. {browse_code-0.2.12 → browse_code-0.2.14}/browse_code/extension/manifest.json +0 -0
  13. {browse_code-0.2.12 → browse_code-0.2.14}/browse_code/extension/popup.html +0 -0
  14. {browse_code-0.2.12 → browse_code-0.2.14}/browse_code/extension/popup.js +0 -0
  15. {browse_code-0.2.12 → browse_code-0.2.14}/browse_code/extension/spoof.js +0 -0
  16. {browse_code-0.2.12 → browse_code-0.2.14}/browse_code/server.py +0 -0
  17. {browse_code-0.2.12 → browse_code-0.2.14}/browse_code.egg-info/SOURCES.txt +0 -0
  18. {browse_code-0.2.12 → browse_code-0.2.14}/browse_code.egg-info/dependency_links.txt +0 -0
  19. {browse_code-0.2.12 → browse_code-0.2.14}/browse_code.egg-info/entry_points.txt +0 -0
  20. {browse_code-0.2.12 → browse_code-0.2.14}/browse_code.egg-info/requires.txt +0 -0
  21. {browse_code-0.2.12 → browse_code-0.2.14}/browse_code.egg-info/top_level.txt +0 -0
  22. {browse_code-0.2.12 → browse_code-0.2.14}/pyproject.toml +0 -0
  23. {browse_code-0.2.12 → browse_code-0.2.14}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: browse_code
3
- Version: 0.2.12
3
+ Version: 0.2.14
4
4
  Summary: Turn any AI chatbot into an autonomous coding agent
5
5
  Description-Content-Type: text/markdown
6
6
  Requires-Dist: fastapi
@@ -90,7 +90,37 @@ The server starts immediately. Open your AI chat tab and you're ready to go. The
90
90
 
91
91
  ## Features
92
92
 
93
- - **File Operations:** Read, write, and patch files with inline terminal diffs
93
+ - **File Operations:** Read, write, and patch files with beautiful inline terminal diffs:
94
+
95
+ <details>
96
+ <summary>▶️ <code>npm install next react react-dom</code> — <strong>✓ done · 22ms</strong></summary>
97
+
98
+ **STDOUT:**
99
+
100
+ 📝 **Patch File** `portfolio-site/package.json`
101
+
102
+ ```diff
103
+ {
104
+ "name": "portfolio-site",
105
+ "main": "index.js",
106
+ "scripts": {
107
+ - "test": "echo \"Error: no test specified\" && exit 1",
108
+ + "dev": "next dev",
109
+ + "build": "next build",
110
+ + "start": "next start",
111
+ + "lint": "next lint"
112
+ },
113
+ "keywords": [],
114
+ }
115
+ ```
116
+
117
+ ✅ **done · 2ms** — Patch applied successfully to `portfolio-site/package.json`.
118
+
119
+ 📁 **View Directory** `portfolio-site`
120
+ ✅ **done · 195ms** — `portfolio-site/package-lock.json`
121
+
122
+ </details>
123
+
94
124
  - **Code Search:** Search across your entire codebase by keyword
95
125
  - **Terminal Commands:** Run shell commands with full stdout/stderr capture
96
126
  - **Background Processes:** Start, monitor, and kill long-running processes
@@ -76,7 +76,37 @@ The server starts immediately. Open your AI chat tab and you're ready to go. The
76
76
 
77
77
  ## Features
78
78
 
79
- - **File Operations:** Read, write, and patch files with inline terminal diffs
79
+ - **File Operations:** Read, write, and patch files with beautiful inline terminal diffs:
80
+
81
+ <details>
82
+ <summary>▶️ <code>npm install next react react-dom</code> — <strong>✓ done · 22ms</strong></summary>
83
+
84
+ **STDOUT:**
85
+
86
+ 📝 **Patch File** `portfolio-site/package.json`
87
+
88
+ ```diff
89
+ {
90
+ "name": "portfolio-site",
91
+ "main": "index.js",
92
+ "scripts": {
93
+ - "test": "echo \"Error: no test specified\" && exit 1",
94
+ + "dev": "next dev",
95
+ + "build": "next build",
96
+ + "start": "next start",
97
+ + "lint": "next lint"
98
+ },
99
+ "keywords": [],
100
+ }
101
+ ```
102
+
103
+ ✅ **done · 2ms** — Patch applied successfully to `portfolio-site/package.json`.
104
+
105
+ 📁 **View Directory** `portfolio-site`
106
+ ✅ **done · 195ms** — `portfolio-site/package-lock.json`
107
+
108
+ </details>
109
+
80
110
  - **Code Search:** Search across your entire codebase by keyword
81
111
  - **Terminal Commands:** Run shell commands with full stdout/stderr capture
82
112
  - **Background Processes:** Start, monitor, and kill long-running processes
@@ -0,0 +1 @@
1
+ __version__ = "0.2.14"
@@ -8,6 +8,7 @@ if (hostname.includes('gemini.google.com')) {
8
8
  name: "Gemini",
9
9
  inputBox: 'rich-textarea div[contenteditable="true"], div[role="textbox"][contenteditable="true"], .ql-editor, textarea, input',
10
10
  sendBtn: 'button[aria-label*="Send"], button[aria-label*="send"], button[mattooltip*="Send"]',
11
+ stopBtn: 'button[aria-label*="Stop"], button[aria-label*="stop"], button[mattooltip*="Stop"]',
11
12
  responseContainer: 'message-content, model-response, .model-response-text'
12
13
  };
13
14
  } else if (hostname.includes('claude.ai')) {
@@ -15,6 +16,7 @@ if (hostname.includes('gemini.google.com')) {
15
16
  name: "Claude",
16
17
  inputBox: '.ProseMirror[contenteditable="true"]',
17
18
  sendBtn: 'button[aria-label*="Send"], button[aria-label*="send"]',
19
+ stopBtn: 'button[aria-label*="Stop"], button[aria-label*="stop"]',
18
20
  responseContainer: '.font-claude-response, .font-claude-message'
19
21
  };
20
22
  } else if (hostname.includes('huggingface.co')) {
@@ -22,6 +24,7 @@ if (hostname.includes('gemini.google.com')) {
22
24
  name: "HuggingFace",
23
25
  inputBox: 'input[name="prompt"]',
24
26
  sendBtn: 'button[type="submit"]',
27
+ stopBtn: 'button[aria-label*="Stop"], button:contains("Stop")',
25
28
  responseContainer: '.prose, .markdown, .break-words, [class*="message"]'
26
29
  };
27
30
  } else {
@@ -29,6 +32,7 @@ if (hostname.includes('gemini.google.com')) {
29
32
  name: "ChatGPT",
30
33
  inputBox: '#prompt-textarea',
31
34
  sendBtn: '[data-testid="send-button"], button[data-testid*="send"]',
35
+ stopBtn: 'button[aria-label*="Stop"], button[data-testid*="stop"]',
32
36
  responseContainer: '.markdown, .prose'
33
37
  };
34
38
  }
@@ -280,6 +284,12 @@ function processQueue() {
280
284
  const userText = inputBox.tagName === 'INPUT' || inputBox.tagName === 'TEXTAREA' ? inputBox.value : inputBox.textContent;
281
285
  if (userText && userText.trim() !== "") return;
282
286
 
287
+ // Do not inject if the LLM is currently generating (Stop button is visible)
288
+ if (PLATFORM.stopBtn) {
289
+ const stopButton = document.querySelector(PLATFORM.stopBtn);
290
+ if (stopButton) return;
291
+ }
292
+
283
293
  const nextMessage = messageQueue.shift();
284
294
  isInjectingQueue = true;
285
295
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: browse_code
3
- Version: 0.2.12
3
+ Version: 0.2.14
4
4
  Summary: Turn any AI chatbot into an autonomous coding agent
5
5
  Description-Content-Type: text/markdown
6
6
  Requires-Dist: fastapi
@@ -90,7 +90,37 @@ The server starts immediately. Open your AI chat tab and you're ready to go. The
90
90
 
91
91
  ## Features
92
92
 
93
- - **File Operations:** Read, write, and patch files with inline terminal diffs
93
+ - **File Operations:** Read, write, and patch files with beautiful inline terminal diffs:
94
+
95
+ <details>
96
+ <summary>▶️ <code>npm install next react react-dom</code> — <strong>✓ done · 22ms</strong></summary>
97
+
98
+ **STDOUT:**
99
+
100
+ 📝 **Patch File** `portfolio-site/package.json`
101
+
102
+ ```diff
103
+ {
104
+ "name": "portfolio-site",
105
+ "main": "index.js",
106
+ "scripts": {
107
+ - "test": "echo \"Error: no test specified\" && exit 1",
108
+ + "dev": "next dev",
109
+ + "build": "next build",
110
+ + "start": "next start",
111
+ + "lint": "next lint"
112
+ },
113
+ "keywords": [],
114
+ }
115
+ ```
116
+
117
+ ✅ **done · 2ms** — Patch applied successfully to `portfolio-site/package.json`.
118
+
119
+ 📁 **View Directory** `portfolio-site`
120
+ ✅ **done · 195ms** — `portfolio-site/package-lock.json`
121
+
122
+ </details>
123
+
94
124
  - **Code Search:** Search across your entire codebase by keyword
95
125
  - **Terminal Commands:** Run shell commands with full stdout/stderr capture
96
126
  - **Background Processes:** Start, monitor, and kill long-running processes
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name="browse_code",
5
- version="0.2.12",
5
+ version="0.2.14",
6
6
  description="Turn any AI chatbot into an autonomous coding agent",
7
7
  long_description=open("README.md").read(),
8
8
  long_description_content_type="text/markdown",
@@ -1 +0,0 @@
1
- __version__ = "0.2.12"
File without changes