mirror of
https://github.com/agoramachina/claude-exporter.git
synced 2026-07-09 15:59:52 +00:00
Multiple files had drifted out of sync over recent commits. Brought
Firefox in line with Chrome (canonical copy per CLAUDE.md):
- popup.html: removed Chrome typo "dd" after --error-text: #ff9999;
- popup.html: synced firefox label { margin: 6px 0 } -> 6px (chrome's value)
- browse.html: synced firefox td { padding: 15px } -> 15px 20px
- browse.html: removed stale .btn-view CSS from firefox (the v1.10.9
cleanup only touched chrome)
- browse.html: bumped firefox body min-width 1140 -> 1200 and added
min-width: 1200px to .container to match chrome's recent tweak
- browse.js: synced firefox tooltip label "Now using" -> "Currently"
- options.html: synced firefox width: 800px -> 810px
- content.js: removed firefox-only [Claude Exporter] debug console.log
lines at top of file
Legitimate differences left alone:
- background.js: chrome MV3 scripting.executeScript vs firefox MV2
tabs.executeScript loop (per CLAUDE.md API differences)
- popup.js: chrome.tabs.* (chrome) vs browser.tabs.* (firefox idiom)
Uncertain (left for direction):
- browse.js exportConversation toast handling differs (chrome emits
inline showToast per branch; firefox has them removed with a
"Toast handled below after timestamp save" comment, but no
unified toast was found later in the function)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
224 lines
No EOL
5.7 KiB
HTML
224 lines
No EOL
5.7 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<style>
|
|
/* Dark mode by default */
|
|
:root {
|
|
--bg-color: #1e1e1e;
|
|
--text-color: #e0e0e0;
|
|
--border-color: #3a3a3a;
|
|
--primary-color: #6b52e8;
|
|
--primary-hover: #7d66f0;
|
|
--secondary-color: #32b34a;
|
|
--secondary-hover: #3cc752;
|
|
--disabled-bg: #3a3a3a;
|
|
--success-bg: #1a4d2e;
|
|
--success-text: #90ee90;
|
|
--error-bg: #4d1a1a;
|
|
--error-text: #ff9999;
|
|
--info-bg: #1a3d4d;
|
|
--info-text: #87ceeb;
|
|
--link-color: #8b7aff;
|
|
}
|
|
|
|
/* Light mode when system prefers light */
|
|
:root[data-theme="light"] {
|
|
--bg-color: #f6f7f9;
|
|
--text-color: #2c313a;
|
|
--border-color: #e2e4e9;
|
|
--primary-color: #5d44e8;
|
|
--primary-hover: #4a35ba;
|
|
--secondary-color: #10b981;
|
|
--secondary-hover: #059669;
|
|
--disabled-bg: #e9ecef;
|
|
--success-bg: #d1fae5;
|
|
--success-text: #065f46;
|
|
--error-bg: #fee2e2;
|
|
--error-text: #991b1b;
|
|
--info-bg: #e0f2fe;
|
|
--info-text: #075985;
|
|
--link-color: #5d44e8;
|
|
}
|
|
|
|
body {
|
|
width: 275px;
|
|
padding: 8px;
|
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
margin: 0;
|
|
background-color: var(--bg-color);
|
|
color: var(--text-color);
|
|
min-height: 0;
|
|
max-height: 600px;
|
|
overflow-y: auto;
|
|
}
|
|
h2 {
|
|
margin-top: 0;
|
|
color: var(--text-color);
|
|
font-size: 16px;
|
|
}
|
|
button {
|
|
width: 100%;
|
|
padding: 8px;
|
|
margin: 4px 0;
|
|
border: none;
|
|
border-radius: 4px;
|
|
background: var(--primary-color);
|
|
color: white;
|
|
font-size: 13px;
|
|
cursor: pointer;
|
|
transition: background 0.2s;
|
|
}
|
|
button:hover {
|
|
background: var(--primary-hover);
|
|
}
|
|
button:disabled {
|
|
background: var(--disabled-bg);
|
|
cursor: not-allowed;
|
|
color: #999;
|
|
}
|
|
#browseConversations {
|
|
background: var(--secondary-color);
|
|
margin-top: 6px;
|
|
}
|
|
#browseConversations:hover {
|
|
background: var(--secondary-hover);
|
|
}
|
|
.status {
|
|
margin: 6px 0;
|
|
padding: 8px;
|
|
border-radius: 4px;
|
|
font-size: 12px;
|
|
}
|
|
.success {
|
|
background: var(--success-bg);
|
|
color: var(--success-text);
|
|
}
|
|
.error {
|
|
background: var(--error-bg);
|
|
color: var(--error-text);
|
|
}
|
|
.info {
|
|
background: var(--info-bg);
|
|
color: var(--info-text);
|
|
}
|
|
.info a {
|
|
color: var(--link-color);
|
|
}
|
|
.options {
|
|
margin: 8px 0;
|
|
}
|
|
label {
|
|
display: block;
|
|
margin: 6px;
|
|
font-size: 12px;
|
|
color: var(--text-color);
|
|
}
|
|
input[type="checkbox"] {
|
|
margin-right: 5px;
|
|
}
|
|
select {
|
|
width: 100%;
|
|
padding: 4px;
|
|
margin-top: 3px;
|
|
border: 1px solid var(--border-color);
|
|
border-radius: 3px;
|
|
background-color: var(--bg-color);
|
|
color: var(--text-color);
|
|
font-size: 12px;
|
|
}
|
|
#popup-header {
|
|
margin: -8px -8px 8px -8px;
|
|
padding: 14px 16px;
|
|
background: linear-gradient(135deg, var(--primary-color), var(--primary-hover));
|
|
text-align: center;
|
|
}
|
|
#header-title {
|
|
color: white;
|
|
font-size: 15px;
|
|
font-weight: 600;
|
|
letter-spacing: 0.3px;
|
|
}
|
|
#header-version {
|
|
color: rgba(255, 255, 255, 0.7);
|
|
font-size: 11px;
|
|
margin-top: 3px;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div id="popup-header">
|
|
<div id="header-title">Claude Exporter</div>
|
|
<div id="header-version"></div>
|
|
</div>
|
|
<div style="padding: 0 5px;">
|
|
<div class="options">
|
|
<!-- Chat Export Options -->
|
|
<div class="export-row">
|
|
<label>
|
|
Chat format:
|
|
<select id="format">
|
|
<option value="json">JSON</option>
|
|
<option value="markdown">Markdown</option>
|
|
<option value="text">Plain Text</option>
|
|
</select>
|
|
</label>
|
|
|
|
<label title="Include the conversation messages in the exported file">
|
|
<input type="checkbox" id="includeChats" checked>
|
|
Chats
|
|
</label>
|
|
|
|
<label title="Include extended thinking blocks in the exported conversation">
|
|
<input type="checkbox" id="includeThinking">
|
|
Extended Thinking
|
|
</label>
|
|
|
|
<label title="Add conversation metadata (name, date, model, etc.) at the top of exported files">
|
|
<input type="checkbox" id="includeMetadata">
|
|
Metadata
|
|
</label>
|
|
</div>
|
|
|
|
<!-- Artifact Export Options -->
|
|
<div class="export-row" style="margin-top: 12px;">
|
|
<label>
|
|
Artifact format:
|
|
<select id="artifactFormat">
|
|
<option value="original">Original</option>
|
|
<option value="markdown">Markdown</option>
|
|
<option value="text">Plain Text</option>
|
|
<option value="json">JSON</option>
|
|
</select>
|
|
</label>
|
|
|
|
<label title="Include artifacts (code, documents, etc.) directly within the conversation text">
|
|
<input type="checkbox" id="includeArtifacts">
|
|
Inline Artifacts
|
|
</label>
|
|
|
|
<label title="Extract artifacts as separate files in nested folders">
|
|
<input type="checkbox" id="extractArtifacts">
|
|
Nested Artifacts
|
|
</label>
|
|
|
|
<label title="Flatten artifact structure (no subfolders, with conversation name prefix)">
|
|
<input type="checkbox" id="flattenArtifacts">
|
|
Flat Artifacts
|
|
</label>
|
|
</div>
|
|
</div>
|
|
|
|
<button id="exportCurrent">Export Current Conversation</button>
|
|
<button id="exportAll">Export All Conversations</button>
|
|
|
|
<button id="browseConversations">Browse All Conversations</button>
|
|
|
|
<div id="status"></div>
|
|
</div>
|
|
|
|
<script src="popup-theme.js"></script>
|
|
<script src="utils.js"></script>
|
|
<script src="popup.js"></script>
|
|
</body>
|
|
</html> |