fixed Chrome manifest

This commit is contained in:
2025-10-18 12:51:23 -05:00
parent 8d3d3c1ebd
commit 6ea10a7615
3 changed files with 166 additions and 22 deletions
+152 -8
View File
@@ -11,7 +11,7 @@ Both versions share 100% of the TypeScript source code, differing only in their
## Project Structure
```
```text
/
├── README.md # This file
├── package.json # pnpm workspace configuration
@@ -48,16 +48,21 @@ Both versions share 100% of the TypeScript source code, differing only in their
Beyond just backing up your data, there are compelling reasons to export your conversations:
### 1. **Access to Discontinued Models**
Some older Claude models (like Claude 3 Sonnet and Claude 3.5 Sonnet) are no longer available on Claude.ai but remain accessible through APIs. By exporting your conversations, you can continue them using these models through other interfaces.
### 2. **Overcome Context Limitations**
Claude.ai doesn't allow you to continue conversations after hitting context length limits. Other applications can implement:
- **Rolling context windows** - Automatically manage context to continue indefinitely
- **Context compression** - Summarize earlier parts to fit more conversation
- **Selective context** - Choose which parts of the conversation to keep in context
### 3. **Escape Platform Restrictions and "Long Conversation" Injections**
Claude.ai uses a fixed system prompt and injects "reminders" that include certain behavioral rules. Recent updates have added restrictions that some users find limiting, such as:
- Injunctions against Claude discussing its inner experiences or consciousness
- Specific formatting restrictions
- Behavioral constraints that may not align with all use cases
@@ -65,13 +70,17 @@ Claude.ai uses a fixed system prompt and injects "reminders" that include certai
With exported conversations, you can continue them in environments with different or customizable system prompts. Using the Anthropic API instead of Claude.ai also avoids "long_conversation_reminder" injections, though it doesn't avoid all injections.
### 4. **Enhanced Features in Other Apps**
Many third-party applications offer features not available on Claude.ai:
- Custom system prompts
- Multi-model conversations
- Integration with external tools and APIs
### 5. **Data Ownership and Portability**
Your conversations are valuable intellectual property. Exporting ensures you:
- Own and control your data
- Can migrate between platforms
- Won't lose access if policies change
@@ -96,6 +105,7 @@ This extension provides several advantages over the official Claude.ai data expo
## Development Setup
### Prerequisites
- Node.js 18+ and pnpm
- Chrome or Firefox browser
- A Claude.ai account
@@ -103,12 +113,14 @@ This extension provides several advantages over the official Claude.ai data expo
### Build from Source
1. **Clone the Repository**
```bash
git clone [repository-url]
cd Claude-Conversation-Exporter-Firefox-TS
```
2. **Install Dependencies**
```bash
pnpm install
```
@@ -116,29 +128,34 @@ This extension provides several advantages over the official Claude.ai data expo
3. **Build the Extension**
For Firefox (TypeScript):
```bash
pnpm build:firefox
# Output: dist/firefox/
```
For Chrome (TypeScript):
```bash
pnpm build:chrome
# Output: dist/chrome/
```
Build both:
```bash
pnpm build
```
4. **Development Mode** (auto-rebuild on changes)
```bash
pnpm dev:firefox # Watch mode for Firefox
pnpm dev:chrome # Watch mode for Chrome
```
5. **Type Checking**
```bash
pnpm type-check # Run TypeScript type checker
```
@@ -164,6 +181,7 @@ This extension provides several advantages over the official Claude.ai data expo
### Configure Your Organization ID
After installation (either browser):
1. Click the extension icon
2. Click "Click here to set it up" or access Options
3. Go to `https://claude.ai/settings/account`
@@ -174,12 +192,14 @@ After installation (either browser):
## Usage
### Export Current Conversation
1. Navigate to any conversation on Claude.ai
2. Click the extension icon
3. Choose your export format and metadata preferences
4. Click "Export Current Conversation"
### Browse All Conversations
1. Click the extension icon
2. Click "Browse All Conversations" (green button)
3. In the browse page, you can:
@@ -190,6 +210,7 @@ After installation (either browser):
- Export all filtered conversations as ZIP
### Bulk Export
1. In the browse page, select your format and filters
2. Click "Export All"
3. A progress dialog will show the export status
@@ -198,17 +219,20 @@ After installation (either browser):
## Export Formats
### JSON
- Complete data including all branches and metadata
- Best for data preservation and programmatic use
- Includes all message versions and conversation branches
### Markdown
- Human-readable format with formatting
- Shows only the current conversation branch
- Includes optional metadata (timestamps, model info)
- Great for documentation or sharing
### Plain Text
- Simple format following Claude's prompt style
- Uses "Human:" and "Assistant:" prefixes (abbreviated to H:/A: after first occurrence)
- Shows only the current conversation branch
@@ -216,7 +240,7 @@ After installation (either browser):
## File Structure
```
```text
claude-exporter/
├── manifest.json # Extension configuration
├── background.js # Background service worker
@@ -235,32 +259,148 @@ claude-exporter/
└── icon128.png # Extension icon (128x128)
```
## Firefox Add-ons (AMO) Submission
To prepare for Firefox Add-ons (addons.mozilla.org) submission:
### 1. Build for Production
```bash
pnpm build:firefox
```
### 2. Create a Source Code Archive
Firefox AMO requires source code submission for extensions that use build tools:
```bash
# Create a source code archive excluding unnecessary files
zip -r claude-exporter-source.zip . \
-x "node_modules/*" \
-x "dist/*" \
-x ".git/*" \
-x "*.DS_Store" \
-x ".vscode/*" \
-x ".idea/*"
```
### 3. Create the Extension Package
```bash
cd dist/firefox
zip -r ../../claude-exporter-firefox.zip .
cd ../..
```
### 4. Prepare Build Instructions
Create a `BUILD.md` file to include with your source:
```markdown
# Build Instructions
## Prerequisites
- Node.js 18 or higher
- pnpm package manager
## Build Steps
1. Install dependencies: `pnpm install`
2. Build Firefox extension: `pnpm build:firefox`
3. Extension output will be in `dist/firefox/`
## Verification
The built extension can be loaded temporarily in Firefox from about:debugging
```
### 5. Prepare Store Listing Assets
You'll need:
- **Screenshots** (1280x800 or 640x400): Take screenshots of the extension in action
- **Icons**: Already included (icon16.png, icon48.png, icon128.png)
- **Description**: Use the features list from this README
- **Category**: Suggested: "Productivity" or "Other"
- **License**: Choose an open source license (MIT, GPL, etc.)
### 6. Privacy Policy
Since the extension accesses Claude.ai data, include in your privacy policy:
- The extension only accesses data when explicitly triggered by the user
- No data is sent to external servers
- All processing happens locally in the browser
- User's Claude.ai authentication is used only for API access
- No telemetry or analytics are collected
### 7. Permissions Justification
Firefox reviewers will want to know why each permission is needed:
- `activeTab`: To interact with the current Claude.ai tab
- `storage`: To save user's organization ID preference
- `tabs`: To identify when user is on Claude.ai
- Host permission for `https://claude.ai/*`: To access Claude.ai API endpoints for exporting conversations
### 8. Submission Process
1. Go to <https://addons.mozilla.org/developers/>
2. Click "Submit a New Add-on"
3. Upload `claude-exporter-firefox.zip`
4. Upload `claude-exporter-source.zip` when prompted
5. Provide the build instructions from step 4
6. Fill in the listing information
7. Submit for review
### 9. Review Notes
In the "Notes to Reviewer" field, mention:
- This extension uses TypeScript and Vite for building
- Build instructions are included with the source code
- The extension uses the MV2 manifest (Firefox standard)
- All API calls are made to claude.ai using the user's existing authentication
- No external servers or services are contacted
## Chrome Web Store Submission
To prepare for Chrome Web Store submission:
### 1. Create a ZIP for Submission
### 1. Build Chrome Extension for Production
```bash
cd claude-export
zip -r claude-exporter.zip claude-exporter/ -x "*.DS_Store" -x "*/.git/*"
pnpm build:chrome
```
### 2. Prepare Store Listing Assets
### 2. Create a ZIP for Submission
```bash
cd dist/chrome
zip -r ../../claude-exporter-chrome.zip .
cd ../..
```
### 3. Prepare Store Listing Assets
You'll need:
- **Screenshots** (1280x800 or 640x400): Take screenshots of the extension in action
- **Promotional Images**: Small tile (440x280), Large tile (920x680) - optional
- **Description**: Use the features list from this README
- **Category**: Suggested: "Productivity" or "Developer Tools"
### 3. Privacy Policy
### 4. Privacy Policy
Since the extension accesses Claude.ai data, you should mention:
- The extension only accesses data when explicitly triggered by the user
- No data is sent to external servers
- All processing happens locally in the browser
- User's Claude.ai authentication is used only for API access
### 4. Permissions Justification
### 5. Permissions Justification
Be ready to explain why each permission is needed:
- `activeTab`: To interact with the current Claude.ai tab
- `storage`: To save user's organization ID
- `scripting`: To inject content scripts for export functionality
@@ -269,19 +409,23 @@ Be ready to explain why each permission is needed:
## Troubleshooting
### "Organization ID not configured"
- Follow the setup steps in the Configuration section
- Make sure you're copying the complete UUID from the URL
### "Not authenticated" error
- Make sure you're logged into Claude.ai
- Try refreshing the Claude.ai page
### Export fails for some conversations
- Some very old conversations might have different data structures
- Check the browser console for specific error messages
- The ZIP export includes a summary file listing any failed exports
### Content Security Policy errors
- Make sure you're using the latest version of the extension
- Try reloading the extension from chrome://extensions/
+2 -2
View File
@@ -30,13 +30,13 @@
"typescript"
],
"author": "",
"license": "MIT",
"license": "",
"packageManager": "pnpm@10.18.1",
"devDependencies": {
"@eslint/js": "^9.38.0",
"@samrum/vite-plugin-web-extension": "^5.1.1",
"@types/firefox-webext-browser": "^143.0.0",
"@types/jszip": "^3.4.1",
"@types/jszip": "^3.4.0",
"@typescript-eslint/eslint-plugin": "^8.46.1",
"@typescript-eslint/parser": "^8.46.1",
"eslint": "^9.38.0",
+12 -12
View File
@@ -6,32 +6,32 @@
"permissions": ["activeTab", "storage", "scripting"],
"host_permissions": ["https://claude.ai/*"],
"action": {
"default_popup": "popup.html",
"default_popup": "src/popup.html",
"default_icon": {
"16": "icon16.png",
"48": "icon48.png",
"128": "icon128.png"
"16": "src/icon16.png",
"48": "src/icon48.png",
"128": "src/icon128.png"
}
},
"content_scripts": [
{
"matches": ["https://claude.ai/*"],
"js": ["content.js"],
"css": ["content.css"]
"js": ["src/content.ts"],
"css": ["src/content-styles.css"]
}
],
"background": {
"service_worker": "background.js"
"service_worker": "src/background.ts"
},
"icons": {
"16": "icon16.png",
"48": "icon48.png",
"128": "icon128.png"
"16": "src/icon16.png",
"48": "src/icon48.png",
"128": "src/icon128.png"
},
"options_page": "options.html",
"options_page": "src/options.html",
"web_accessible_resources": [
{
"resources": ["browse.html"],
"resources": ["src/browse.html"],
"matches": ["<all_urls>"]
}
]