Stop losing your best AI conversations. bAInder saves, organises, and lets you search every chat from ChatGPT, Claude, Gemini, Copilot, Perplexity, and DeepSeek — all in a sleek browser side panel, entirely on your device.
Install the extension, hit Save on any conversation, drop it into a topic, and it's yours forever — tagged, searchable, and readable in a clean viewer. No accounts, no cloud sync, no data ever leaves your browser.
🔒 Fully local & private — All data lives in
chrome.storage.local. Nothing is ever transmitted anywhere.
| AI Service | URL |
|---|---|
| 🟢 ChatGPT | chat.openai.com / chatgpt.com |
| 🟠 Claude | claude.ai |
| 🔵 Gemini | gemini.google.com |
| 🔷 Microsoft Copilot | copilot.microsoft.com |
| 🔍 Perplexity | perplexity.ai |
| 🐋 DeepSeek | chat.deepseek.com |
| 💾 One-click Save button | A floating "Save to bAInder" button is injected on every supported AI page. Click it to snapshot the full conversation locally — no copy-paste required. |
| ✂️ Right-click selection save | Highlight any text on a supported AI page, right-click, and choose "Save selection to bAInder". The excerpt is captured as rich Markdown and stored as its own entry. |
| 🔊 Audio interception | Generated audio from ChatGPT and Gemini is automatically captured as a data URI so it remains playable even after the original URL expires. |
| 🖼️ Microsoft Designer image capture | Images generated in Microsoft Copilot's Designer panel are automatically screenshot-captured and attached to the saved chat. |
| 🌳 Hierarchical topic tree | Organise chats into unlimited-depth nested topics with sorted counts, activity sparklines, and pinned favourites. |
| 📁 Full topic management | Add, rename, delete, move (drag-and-drop or menu), merge, and pin topics at any depth. |
| 🏷️ Tags | Add comma-separated tags at save time or later; shown as coloured chips and included in all search and filter operations. |
| ⭐ Star ratings | Rate chats 1–5 stars from the context menu or the Reader header; filter search results by minimum rating. |
| ⏰ Review-by date & stale alerts | Set a review date on any chat; the extension checks daily and shows a |
| 🔍 Powerful full-text search | Debounced live search across titles, content, and tags with snippet previews, topic breadcrumbs, and source badges. |
| 🎯 Advanced filter bar | Narrow results by platform (ChatGPT / Claude / Gemini / Copilot / Perplexity / DeepSeek), date range, topic scope, minimum star rating, or tag name — all combinable. |
| 🕐 Recently saved rail | Horizontal scrollable strip below the search bar showing your eight most recently saved chats as quick-access chips. |
| 📖 Distraction-free Reader | Full custom Markdown renderer — code blocks with syntax highlighting and copy buttons, tables, Mermaid diagrams, images, and audio players — with persistent scroll position so you resume exactly where you left off. |
| 🔢 Message ordinal labels | Every prompt and response in the Reader is labelled P1/R1, P2/R2, … as deep-linkable anchors, making it easy to reference specific turns. Toggle them on or off in Settings. |
| 🖍️ Colour highlights | Select any text in the Reader and apply a colour highlight (yellow, green, blue, red, or purple) with an optional attached note. Highlights survive page reloads. |
| 📝 Sticky notes | Add floating, draggable, resizable Markdown sticky notes anchored anywhere over the chat body. Show or hide the note layer as needed. |
| 🧬 Chat Entities tab | A second panel tab that automatically extracts and indexes ten types of structured content from every saved chat: user prompts, citations, tables, code snippets, diagrams, tool calls, file attachments, images, audio, and Claude/ChatGPT Artifacts. |
| 🔎 Entity navigation | Click any entity card to jump directly to the exact message in the Reader where it appears. |
| 🖼️ Artifact preview & download | Preview Claude Artifacts and ChatGPT Canvas panels in a sandboxed in-panel iframe. Copy the source or download it with the correct file extension. |
| ⚖️ Side-by-side Compare page | Select 2 or more saved chats in multi-select mode and open them in a Compare page — panels scroll in sync, with unique terms highlighted per chat. |
| 📐 Structural analysis | Automated count of headings, code blocks, lists, tables, and words per chat — shown as a comparison card. |
| 🏷️ Topic fingerprint | TF-IDF key-term extraction per chat, with a shared "Common topics" section and per-chat distinctive terms. |
| 🧠 Confidence scoring | Each chat is scored for assertiveness vs hedging; the most definitive answer is flagged and key agreements / divergences are surfaced. |
| 🤖 "Compare with AI" card | One-click compare mechanism to arbitrate between your saved answers on the same topic. |
| 📄 Markdown export | Export any chat, topic, or multi-chat selection as a .md file with YAML frontmatter (title, source, date, tags, rating). |
| 🌐 HTML export | Self-contained .html files with embedded styles — no external dependencies. |
| 🖨️ PDF export | Opens the HTML export in a new tab and triggers the browser's print dialog for immediate PDF saving. |
| 📦 ZIP export | Package an entire topic (or your whole library) as a ZIP of per-chat files plus a README.md and metadata.json. |
| 🤖 JSONL fine-tuning export | Export chats in OpenAI fine-tuning format ({"messages":[{"role":…,"content":…}]}, one line per chat) with an optional custom system message. |
| 📥 Import from ZIP | Restore topics and chats by importing a previously exported ZIP — great for backups or moving between browsers. |
| 📋 Flexible clipboard copy | Copy any chat (or a bulk selection) to the clipboard in Plain text, Markdown, or HTML. Configure separators, emoji stripping, image inclusion, and attachment inclusion in Settings. |
| ☑️ Multi-select & bulk actions | Enable multi-select mode to batch compare, export a digest, copy, or assemble selected chats into a single merged entry — all in a few clicks. |
| 🎨 Themes | Customise the look with ThemeStudioSDK themes, including community presets like Neon, Sci-Fi among others. |
| 📊 Activity sparklines | Per-topic mini bar charts showing weekly save activity over the last six weeks. |
| 💿 Storage usage meter | Bottom-of-panel bar showing how much local storage is in use; turns orange/red when you approach the limit. |
| 🔔 Backup reminder | Configurable banner that reminds you to export a backup ZIP when your last export was too long ago; supports snooze and "never remind" options. |
| ⚙️ Settings panel | Slide-in settings for clipboard format, emoji/image/attachment inclusion, custom chat/turn separators, Reader ordinal labels, log level, and backup reminder interval. |
bAInder supports out-of-the-box theming through ThemeStudioSDK.
- End users can install and apply ThemeStudioSDK themes without changing bAInder source code.
- Theme files are intentionally not stored in this repository.
- ThemeStudioSDK is currently maintained as a separate repository (private for now, planned to be public).
This keeps the core bAInder repository focused on extension functionality while theme packs are managed as a third-party service.
Every AI chat platform saves your conversations — but discovery, organisation, and recall are where they all fall short. Here's how each platform's native features stack up against bAInder.
Legend: ✅ Full ·
Accuracy note: Native platform features change frequently. This table reflects capabilities verified against official documentation as of March 2026.
| Feature | ChatGPT | Gemini | Copilot | Claude | Perplexity | DeepSeek | bAInder |
|---|---|---|---|---|---|---|---|
| Native ChatGPT support | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Native Gemini support | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Native Copilot support | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ |
| Native Claude support | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ |
| Native Perplexity support | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ✅ |
| Native DeepSeek support | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ |
| Single tool covers all 6 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Feature | ChatGPT | Gemini | Copilot | Claude | Perplexity | DeepSeek | bAInder |
|---|---|---|---|---|---|---|---|
| One-click save to local storage | ❌¹ | ❌¹ | ❌¹ | ❌¹ | ❌¹ | ❌¹ | ✅ |
| Clip a highlighted text selection | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Capture generated audio persistently | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Capture AI-generated images persistently | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Works without a cloud account | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Data stays entirely on your device | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
¹ Chats auto-sync to vendor servers. There is no one-click "save a snapshot locally" action.
| Feature | ChatGPT | Gemini | Copilot | Claude | Perplexity | DeepSeek | bAInder |
|---|---|---|---|---|---|---|---|
| Folder / project grouping | ❌ | ❌ | ❌ | ✅ | |||
| Unlimited nested hierarchy | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Drag-and-drop reordering / moving | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Merge topics | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Tags (coloured chips, searchable) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Star ratings (1–5) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Review-by date & overdue alerts | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Pin favourite chats / topics | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
² ChatGPT Projects are flat (no sub-projects), cloud-only, require a ChatGPT account.
³ Claude Projects are flat, cloud-only, max 5 on the free tier.
⁴ Perplexity Collections are flat, server-side only.
⁵ Gemini lets you pin individual chats, but there is no folder structure.
| Feature | ChatGPT | Gemini | Copilot | Claude | Perplexity | DeepSeek | bAInder |
|---|---|---|---|---|---|---|---|
| Full-text search | ✅ | ||||||
| Search across all platforms at once | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Filter by source platform | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Filter by date range | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Search within tags | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Filter results by star rating | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Snippet preview in results | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Recently saved strip | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
⁶ Search covers only that platform's own history.
⁷ Copilot history search is minimal with no content preview.
| Feature | ChatGPT | Gemini | Copilot | Claude | Perplexity | DeepSeek | bAInder |
|---|---|---|---|---|---|---|---|
| Distraction-free clean reader | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Message ordinal labels with deep links | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Persistent scroll position | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Sticky notes (Markdown, draggable) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Colour-highlight passages | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Feature | ChatGPT | Gemini | Copilot | Claude | Perplexity | DeepSeek | bAInder |
|---|---|---|---|---|---|---|---|
| Automatically index all code snippets | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Automatically index all Artifacts / Canvas | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Automatically index tables, diagrams, citations | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Preview Artifacts in a sandboxed panel | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Navigate directly to an entity in the reader | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Feature | ChatGPT | Gemini | Copilot | Claude | Perplexity | bAInder |
|---|---|---|---|---|---|---|
| Side-by-side multi-chat comparison | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Unique-term highlighting across chats | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Structural metrics card | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Confidence / assertiveness scoring | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| One-click "Compare with AI" | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Feature | ChatGPT | Gemini | Copilot | Claude | Perplexity | DeepSeek | bAInder |
|---|---|---|---|---|---|---|---|
| Export to Markdown | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Export to HTML | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | |
| Export to PDF | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Multi-chat digest with table of contents | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| ZIP archive export per topic | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| JSONL fine-tuning export | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Assemble multiple chats into one entry | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Import / restore from ZIP | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Copy to clipboard (plain / Markdown / HTML) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Share conversation via public link | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌⁹ |
⁸ ChatGPT's "Export data" (in Settings) produces a raw JSON/HTML archive of your entire account — not a per-chat usable export.
⁹ By design: bAInder is local-first. Share via ZIP export instead.
| Feature | ChatGPT | Gemini | Copilot | Claude | Perplexity | DeepSeek | bAInder |
|---|---|---|---|---|---|---|---|
| Community theme packs | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Per-topic activity sparklines | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Local storage usage meter | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Backup reminder with configurable interval | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Feature | ChatGPT | Gemini | Copilot | Claude | Perplexity | DeepSeek | bAInder |
|---|---|---|---|---|---|---|---|
| AI cross-chat memory / context | ✅ | ❌ | ✅ | ❌ | ❌ | ❌¹⁰ | |
| Team collaboration on shared projects | 🔒 | ❌ | 🔒 | 🔒 | ❌ | ❌ | ❌ |
| Integration with external services | ✅¹¹ | ❌ | ✅¹² | ❌ | ❌ | ❌ | ❌ |
¹⁰ bAInder organises conversations — it does not add new AI capabilities.
¹¹ ChatGPT Projects connect to Google Drive and Slack.
¹² Copilot integrates deeply with Microsoft 365 (Outlook, Teams, SharePoint).
This section walks through every major feature in the order you would naturally encounter them. Each entry describes what it does, when you'd reach for it, and the exact steps to use it.
Purpose: Snapshot a full AI chat to your local library at any point in the conversation — no copy-paste, no account required.
Use cases: You just got a great debugging session from ChatGPT and want to keep it. You asked Claude to draft a contract clause and want to store the result. You want an offline archive before closing the tab.
UI flow:
- Open any ChatGPT, Claude, Gemini, Copilot, Perplexity, or DeepSeek conversation.
- A floating "💾 Save" button appears in the corner of the page.
- Click it. The bAInder side panel opens (or focuses) and a save dialog appears.
- Type or accept an auto-suggested title, pick a topic from the dropdown, and add optional comma-separated tags.
- Click Save. A green toast confirms success. The chat is now searchable and readable offline.
Purpose: Clip just the relevant part of a conversation — a single code block, a key insight, or a specific answer — without saving the entire thread.
Use cases: You got one amazing paragraph out of a long Claude conversation. You want to save only the SQL query an AI wrote, not the full back-and-forth. You're building a collection of specific prompting techniques.
UI flow:
- Open any supported AI page.
- Select the text you want to keep (click and drag).
- Right-click the selection → click "💾 Save selection to bAInder".
- The selection is saved as its own entry labelled with an Excerpt badge. Assign a title and topic in the same save dialog.
Purpose: Group saved chats into a hierarchical folder structure so you can browse by project, subject, or client rather than scrolling an endless flat list.
Use cases: Separate personal chats from work chats. Create nested topics like Work > Projects > Q1 Planning. Keep all coding sessions under Dev > Debugging.
UI flow:
- Add a topic: Click the + button at the top of the tree → type a name → optionally pick a parent topic.
- Rename / delete / move: Right-click any topic node for the context menu.
- Drag-and-drop move: Drag a topic node and drop it onto another to reparent it instantly.
- Merge topics: Right-click a topic → Merge into… → pick the destination. All chats move and the source topic is removed.
- Pin a topic: Right-click → Pin — pinned topics sort to the top of their level.
- Collapse/expand all: Use the ▲▼ toolbar buttons to collapse or expand the entire tree in one click.
Purpose: Add cross-cutting labels (tags) and a quality score (stars) to make chats easier to filter and prioritise.
Use cases: Tag chats python, debugging, work to find all Python-related sessions across different topics. Rate a particularly useful answer five stars so you can surface your best material quickly.
UI flow:
- Add/edit tags: Right-click a chat → Edit tags → type comma-separated tags → Save. Tags appear as coloured chips on the chat row and in search results.
- Rate a chat: Right-click a chat → Rate → click 1–5 stars. Rating is also editable from the Reader header.
- Filter by rating: In the search filter bar, set Min rating to show only chats at that level or above.
Purpose: Schedule a future date to revisit a chat — useful for decisions you want to re-evaluate, follow-ups, or research you want to update.
Use cases: You saved a blog-post draft from Claude — set a review date for the publish deadline. You compared two AI answers about a fast-moving topic — set a 30-day review to check if the answer has changed.
UI flow:
- Right-click a chat → Set review date → pick a date.
- The extension checks daily in the background. When the date passes, the chat receives a ⚠ badge in the tree.
- Opening the chat in the Reader shows a dismissible overdue banner at the top.
- Right-click the chat → Clear review date to remove the alert.
Purpose: Find any saved chat fast — by any word in its content, by platform, by tag, by date, or by rating — across all six platforms at once.
Use cases: You remember an AI wrote you a great memoize function but you can't remember which chat. You want all your five-star Gemini conversations from last month. You're looking for everything tagged python.
UI flow:
- Click the search bar at the top of the side panel and start typing. Results appear live with keyword-highlighted snippets and topic breadcrumbs.
- Open the filter bar (funnel icon) to:
- Select one or more source platforms as pills.
- Set a From / To date range.
- Restrict to a topic scope.
- Set a minimum star rating.
- Filter by tag name.
- Combine any filters — they stack. A colour-coded badge shows filters are active.
- Click a result card to open the chat in the Reader.
Purpose: Jump back to your last few chats without having to search or navigate the tree.
Use cases: You just saved a chat and want to re-open it immediately. You're saving several chats in a session and want fast access to the most recent ones.
UI flow: The horizontal scrollable strip just below the search bar shows the 8 most recently saved chats as small chips with platform colour dots. Click any chip to open it in the Reader. The rail is hidden until you have at least 3 saved chats.
Purpose: View a saved conversation in a clean, distraction-free page with full Markdown rendering — outside the AI platform's cluttered interface.
Use cases: You want to read a long research session without ads, sidebar menus, and UI chrome. You want to share a clean view of an AI response. You want to navigate directly to a specific prompt by number.
UI flow:
- Click any chat in the side panel tree, or click a chip in the recently saved rail.
- The Reader opens in a new browser tab.
- The header shows: source badge, title, word count, estimated reading time, prompt/response counts, tags, and rating.
- Each user message is labelled P1, P2, … and each assistant reply R1, R2, … You can click a label to get a direct deep-link anchor URL to that specific turn.
- Toggle ordinal labels on/off in the ⚙ Settings panel → Show message ordinals.
- Your scroll position is saved automatically and restored next time you open the same chat.
Purpose: Mark important text in a saved chat with a persistent colour highlight — like a highlighter pen on a printed page — optionally with a note.
Use cases: You're studying an AI-generated explanation and want to call out the key sentence. You're reviewing a long answer and want to mark the parts you agree/disagree with in different colours.
UI flow:
- Open a chat in the Reader.
- Select any text passage.
- A highlight toolbar appears — click a colour swatch (yellow / green / blue / red / purple).
- Optionally type a note in the text box that appears.
- The highlight is saved immediately. It re-applies on every future open of that chat.
- To remove a highlight, click the highlighted text and choose the delete (✕) option.
Purpose: Add free-form Markdown notes that float over the chat — like digital Post-it notes tied to a position on the page.
Use cases: You want to jot down a follow-up question to ask. You want to leave a reminder that a certain code block needs testing. You want to record your own summary of a long analysis.
UI flow:
- Open a chat in the Reader.
- Click the "Add note" button in the Reader toolbar.
- A sticky note appears at the current scroll position. Type Markdown into it — it renders in real time.
- Drag the note by its header to reposition it. Resize by dragging the bottom-right corner.
- Close a note with the ✕ button. Toggle all notes visible/hidden with the note-layer button.
Purpose: Automatically surface all structured content — code, tables, citations, diagrams, images, audio, Artifacts — from your entire library so you can find and reuse them without re-reading chats.
Use cases: You want to find every Python code block you've ever saved from any AI. You want to review all the Mermaid diagrams from a recent architecture session. You want to preview a Claude Artifact without opening the chat.
UI flow:
- Click the Chat Entities tab at the top of the side panel.
- Use the type filter chips to show only the entity types you care about (Code, Table, Diagram, Image, etc.).
- The tree groups entities by type → by chat. Expand a group to see individual entity cards.
- Click any card to open the Reader at exactly the message where that entity appears.
- For Artifacts, click the "Preview" button on the card to load it in a sandboxed panel — then copy its source or download it.
Purpose: Place two or more saved answers to the same question (or related questions) next to each other with automated structural analysis, unique-term highlighting, and confidence scoring.
Use cases: You asked the same question to ChatGPT and Claude and want to see which answer is more complete. You saved a series of progressively refined prompts and want to compare how the answers changed. You want to decide which AI answer to use.
UI flow:
- In the side panel tree, click the "Select" toolbar button to enter multi-select mode.
- Tick the checkboxes next to 2 or more chats.
- Click Compare in the selection bar at the bottom.
- The Compare page opens in a new tab with the chats displayed in synced side-by-side panels.
- Scroll any panel — all panels scroll together.
- View the Structural Analysis card below for counts of headings, code blocks, tables, and words.
- View the Unique Terms panel — words unique to each chat are highlighted inline in their panel.
- View the Topic Fingerprint card for TF-IDF key terms per chat and shared common topics.
- View the Confidence Scoring card to see which chat is most assertive and where the answers agree or diverge.
- Click "Send to AI" in the Compare with AI card to have the comparison prompt auto-injected into a live AI tab.
Purpose: Take saved chats out of the extension for archiving, sharing, or downstream use — including fine-tuning a language model.
Use cases: You want a PDF you can email to a colleague. You want a ZIP backup of an entire research topic. You want Markdown files to commit to a knowledge-base repository. You want a JSONL dataset to fine-tune an AI model.
UI flow — single chat:
- Right-click a chat → Export → choose format: Markdown / HTML / PDF / JSONL.
- For JSONL, optionally add a custom system message in the dialog.
- Click Export — the file downloads immediately.
UI flow — topic or full library:
- Right-click a topic → Export topic → choose Markdown or HTML zip.
- Or click the Export All toolbar button for a full library ZIP.
- The ZIP contains one file per chat plus a
README.mdandmetadata.json.
UI flow — multi-chat digest:
- Enter multi-select mode → select chats → click Export Digest.
- Choose format and optionally enable Table of contents.
- A combined document is downloaded.
Purpose: Restore your library (or part of it) from a previously exported ZIP, including all topic structure and chat content.
Use cases: You're switching browsers or computers. You made a backup before clearing storage. A colleague shared a topic ZIP with you.
UI flow:
- Click the Import ZIP toolbar button (tray-with-arrow icon).
- Pick the
.zipfile from your filesystem. - Review the conflict-resolution options if topics or chat IDs already exist.
- Click Import — the topic tree updates immediately.
Purpose: Act on many chats at once — compare, export a combined document, copy to clipboard, or merge them into a single entry.
Use cases: You want to export a week's worth of research sessions as one structured document. You want to merge several partial coding sessions into one consolidated chat. You want to copy a set of chats to paste into a document editor.
UI flow:
- Click the "Select" button in the side panel toolbar.
- Check the boxes next to the chats you want (up to 100).
- The selection bar appears at the bottom showing the count and action buttons:
- Assemble — merges all selected chats into one new entry (prompts for title and destination topic).
- Export Digest — opens the export dialog for a combined document.
- Copy All — copies all selected chats to the clipboard in your configured format.
- Compare — opens the Compare page.
- Clear — deselects all.
- Cancel — exits multi-select mode.
Purpose: Control exactly how chat content is formatted when you copy it — so it's ready to paste into any tool without manual cleanup.
Use cases: You want clean plain text to paste into an email. You want Markdown to paste into Notion or Obsidian. You want HTML to paste into a rich-text editor. You need to strip emojis for a formal document.
UI flow:
- Open ⚙ Settings (gear icon in the toolbar).
- Under Clipboard:
- Set Format to Plain text / Markdown / HTML.
- Toggle Include emojis, Include images, Include attachments.
- Set a Chat separator (the text or HTML between chats in bulk copies).
- Set a Turn separator (the text between each prompt/response within a chat).
- Click Copy on any chat, or use Copy All in multi-select mode — the output uses your settings automatically.
Purpose: Prompt you to export a ZIP backup on a schedule so you don't lose your library to browser storage clearing.
Use cases: You use bAInder heavily and want a monthly reminder to export a backup. You're cautious about browser profile data and want a frequent reminder (every 7 days). You prefer to manage backups yourself and want to disable the reminder.
UI flow:
- The reminder banner appears automatically in the side panel when your last export was longer ago than the configured interval (default: 30 days).
- Banner buttons: Export now (triggers the full library ZIP export), Remind later (snoozes 7 days), Never remind, Dismiss (snoozes one cycle).
- To change the interval or disable the reminder: ⚙ Settings → Backup reminder section.
Purpose: Change the look of the bAInder side panel to match your taste or browser theme.
Use cases: You prefer a dark high-contrast look (Sci-Fi theme). You want a vivid neon look.
UI flow:
- Click the palette icon in the side panel toolbar.
- Pick a community preset or configure custom CSS variables via the ThemeStudioSDK panel.
- The theme is applied instantly and persists across sessions.
- Go to
chrome://extensionsand enable Developer mode - Click Load unpacked and select the
dist/chromefolder - Pin the bAInder icon to your toolbar and open the side panel
- Go to
edge://extensionsand enable Developer mode - Click Load unpacked and select the
dist/edgefolder - Pin the bAInder icon to your toolbar and open the side panel
npm install
npm run build:all # produces dist/chrome/ and dist/edge/
---
## 🛠️ Contributing & Development
### 🏁 Getting Started
1. **Clone the repository**
```bash
git clone https://github.com/yourusername/bAInder.git
cd bAInder
-
Install dependencies
npm install
-
Start development with watch mode
npm run dev
-
Load the extension in your browser
- Chrome: Open
chrome://extensions, enable Developer mode, click Load unpacked, and selectdist/chrome/ - Edge: Open
edge://extensions, enable Developer mode, click Load unpacked, and selectdist/edge/
- Chrome: Open
npm run build:all # Build extensions for both Chrome and Edge
npm run dev # Start development server with watch mode
npm run test # Run tests with Vitest
npm test -- --watch # Run tests in watch mode
npm run lint # Run ESLintsrc/background/— Extension background scriptssrc/content/— Content scripts injected into web pagessrc/sidepanel/— Side panel UI and logicsrc/reader/— Chat viewer UIsrc/lib/— Core utilities, storage, export/import logictests/— Test files for all modulesdocs/— Documentation and design specs
Run the test suite:
npm testTests use Vitest and cover:
- Chat extraction and parsing
- Data storage and retrieval
- Export/import functionality
- UI components and interactions
- Utility functions
- Linting: ESLint configuration ensures code consistency
- Tests: All new features should include corresponding tests
- UT Coverage gate: 90% minimum code coverage required
- Commits: Follow conventional commit messages for clarity
- Create a feature branch:
git checkout -b feature/your-feature - Make your changes and write tests
- Run
npm run lintandnpm testto verify - Build with
npm run build:allto test in the extension - Commit with descriptive messages
- Push and create a pull request
This project is licensed under the MIT License with Commons Clause — see the LICENSE file for details.
Copyright © 2026 Avraham Y. Kahana
You are free to use, modify, and distribute this software for personal and internal business use, provided you include the original copyright notice and license text. You may not sell the Software or offer it as a commercial product or hosted service whose value derives substantially from the functionality of this Software.
For contribution guidelines, see CONTRIBUTING.md.




