diff --git a/CLAUDE.md b/CLAUDE.md
index 77da654..28756f2 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -89,6 +89,8 @@ Any export producing more than one file should always create a ZIP — never tri
- `"Claude Exporter"` on the `main` branch (released version)
- `"Claude Exporter Beta"` on the `testing` branch (so the user can tell at a glance which build is loaded)
+The popup header title is populated from `manifest.name` in `popup.js` (`#header-title`), so the popup automatically reads "Claude Exporter Beta" on the testing branch — no separate HTML edit needed.
+
When merging `testing` → `main` for a release, flip both manifest names to drop "Beta" as part of the merge.
## Testing
diff --git a/chrome/browse.html b/chrome/browse.html
index dcaedf8..ebf7a5f 100644
--- a/chrome/browse.html
+++ b/chrome/browse.html
@@ -577,7 +577,15 @@
margin-left: 4px;
font-size: 12px;
color: var(--badge-default);
- opacity: 0.7;
+ }
+
+ .model-bounced.sonnet { color: var(--badge-sonnet); }
+ .model-bounced.haiku { color: var(--badge-haiku); }
+ .model-bounced.opus { color: var(--badge-opus); }
+
+ /* Wrapper that carries the tooltip + cursor so hover works on the badge or asterisk */
+ .model-cell {
+ display: inline-block;
cursor: help;
}
@@ -779,11 +787,6 @@
Advanced Options
→
-
-
- Test connection
-
-
diff --git a/chrome/browse.js b/chrome/browse.js
index 9b2a1e5..8dd34e1 100644
--- a/chrome/browse.js
+++ b/chrome/browse.js
@@ -89,7 +89,7 @@ function getDisplayModel(conv) {
return {
model: useCurrent ? current : original,
other: useCurrent ? original : current,
- otherLabel: useCurrent ? 'Originally' : 'Now using',
+ otherLabel: useCurrent ? 'Originally' : 'Currently',
bounced
};
}
@@ -472,9 +472,10 @@ function displayConversations() {
${escapeHtml(updatedDate)}${escapeHtml(updatedTime)}
${escapeHtml(createdDate)}${escapeHtml(createdTime)}
-
- ${escapeHtml(formatModelName(modelInfo.model))}
- ${modelInfo.bounced ? `* ` : ''}
+ ${modelInfo.bounced
+ ? `${escapeHtml(formatModelName(modelInfo.model))} * `
+ : `${escapeHtml(formatModelName(modelInfo.model))} `
+ }
@@ -1213,25 +1214,6 @@ function setupEventListeners() {
settingsDropdown.classList.remove('open');
});
- // Test connection
- document.getElementById('testConnection').addEventListener('click', async () => {
- const statusEl = document.getElementById('connectionStatus');
- statusEl.textContent = 'Testing...';
- try {
- const response = await sendMessageToClaudeTab('loadConversations', { orgId });
- if (response && response.success) {
- statusEl.textContent = `OK (${response.conversations.length})`;
- statusEl.style.color = '#22c55e';
- } else {
- statusEl.textContent = 'Failed';
- statusEl.style.color = '#ef4444';
- }
- } catch (e) {
- statusEl.textContent = 'Error';
- statusEl.style.color = '#ef4444';
- }
- });
-
// Search input
const searchInput = document.getElementById('searchInput');
searchInput.addEventListener('input', (e) => {
diff --git a/chrome/manifest.json b/chrome/manifest.json
index 9723895..9b4c665 100644
--- a/chrome/manifest.json
+++ b/chrome/manifest.json
@@ -1,7 +1,7 @@
{
"manifest_version": 3,
"name": "Claude Exporter Beta",
- "version": "1.10.1",
+ "version": "1.10.2",
"description": "Export conversations and artifacts from Claude.ai",
"permissions": [
"activeTab",
diff --git a/chrome/popup.js b/chrome/popup.js
index eb034dc..10be7a2 100644
--- a/chrome/popup.js
+++ b/chrome/popup.js
@@ -35,8 +35,10 @@ async function getOrgId() {
}
document.addEventListener('DOMContentLoaded', async () => {
- // Display version from manifest
+ // Pull the popup title + version from the manifest so the testing branch
+ // shows "Claude Exporter Beta" without a separate HTML edit.
const manifest = chrome.runtime.getManifest();
+ document.getElementById('header-title').textContent = manifest.name;
document.getElementById('header-version').textContent = `v${manifest.version}`;
// Handle checkbox dependencies
diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md
index bfa4fe3..9f46bab 100644
--- a/docs/CHANGELOG.md
+++ b/docs/CHANGELOG.md
@@ -1,5 +1,12 @@
# Changelog
+## [1.10.2]
+
+- Removed "Test connection" from the browse settings dropdown — it's already available in Advanced Options (next to Save Settings)
+- Model column "*" bounce marker now matches the badge color per family (Sonnet/Opus/Haiku/default), full opacity
+- Tooltip on bounced model cells now fires when hovering the badge or the asterisk (wrapped in a `.model-cell` with the `title` attribute)
+- Popup header title is now read from `manifest.name`, so the testing branch's "Claude Exporter Beta" appears in the popup automatically. CLAUDE.md updated.
+
## [1.10.1]
- Browse page funnel menu: new "Search projects" option (below the existing status filters, separated by a divider). When selected, the search bar matches against project names (placeholder updates to "Search projects by name...") and the table shows conversations whose project name matches. Status filters do not apply in this mode.
diff --git a/firefox/browse.html b/firefox/browse.html
index 29ebc09..d5510d8 100644
--- a/firefox/browse.html
+++ b/firefox/browse.html
@@ -577,7 +577,15 @@
margin-left: 4px;
font-size: 12px;
color: var(--badge-default);
- opacity: 0.7;
+ }
+
+ .model-bounced.sonnet { color: var(--badge-sonnet); }
+ .model-bounced.haiku { color: var(--badge-haiku); }
+ .model-bounced.opus { color: var(--badge-opus); }
+
+ /* Wrapper that carries the tooltip + cursor so hover works on the badge or asterisk */
+ .model-cell {
+ display: inline-block;
cursor: help;
}
@@ -780,11 +788,6 @@
Advanced Options
→
-
-
- Test connection
-
-
diff --git a/firefox/browse.js b/firefox/browse.js
index 939e07e..ed16012 100644
--- a/firefox/browse.js
+++ b/firefox/browse.js
@@ -472,9 +472,10 @@ function displayConversations() {
${escapeHtml(updatedDate)}${escapeHtml(updatedTime)}
${escapeHtml(createdDate)}${escapeHtml(createdTime)}
-
- ${escapeHtml(formatModelName(modelInfo.model))}
- ${modelInfo.bounced ? `* ` : ''}
+ ${modelInfo.bounced
+ ? `${escapeHtml(formatModelName(modelInfo.model))} * `
+ : `${escapeHtml(formatModelName(modelInfo.model))} `
+ }
@@ -1212,25 +1213,6 @@ function setupEventListeners() {
settingsDropdown.classList.remove('open');
});
- // Test connection
- document.getElementById('testConnection').addEventListener('click', async () => {
- const statusEl = document.getElementById('connectionStatus');
- statusEl.textContent = 'Testing...';
- try {
- const response = await sendMessageToClaudeTab('loadConversations', { orgId });
- if (response && response.success) {
- statusEl.textContent = `OK (${response.conversations.length})`;
- statusEl.style.color = '#22c55e';
- } else {
- statusEl.textContent = 'Failed';
- statusEl.style.color = '#ef4444';
- }
- } catch (e) {
- statusEl.textContent = 'Error';
- statusEl.style.color = '#ef4444';
- }
- });
-
// Search input
const searchInput = document.getElementById('searchInput');
searchInput.addEventListener('input', (e) => {
diff --git a/firefox/manifest.json b/firefox/manifest.json
index fd27635..639f0e1 100644
--- a/firefox/manifest.json
+++ b/firefox/manifest.json
@@ -1,7 +1,7 @@
{
"manifest_version": 2,
"name": "Claude Exporter Beta",
- "version": "1.10.1",
+ "version": "1.10.2",
"description": "Export conversations and artifacts from Claude.ai",
"permissions": [
"activeTab",
diff --git a/firefox/popup.js b/firefox/popup.js
index f110fe3..90dd1ce 100644
--- a/firefox/popup.js
+++ b/firefox/popup.js
@@ -35,8 +35,10 @@ async function getOrgId() {
}
document.addEventListener('DOMContentLoaded', async () => {
- // Display version from manifest
+ // Pull the popup title + version from the manifest so the testing branch
+ // shows "Claude Exporter Beta" without a separate HTML edit.
const manifest = chrome.runtime.getManifest();
+ document.getElementById('header-title').textContent = manifest.name;
document.getElementById('header-version').textContent = `v${manifest.version}`;
// Handle checkbox dependencies