惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LangChain Blog
博客园 - 司徒正美
美团技术团队
Martin Fowler
Martin Fowler
雷峰网
雷峰网
aimingoo的专栏
aimingoo的专栏
博客园 - 三生石上(FineUI控件)
Vercel News
Vercel News
酷 壳 – CoolShell
酷 壳 – CoolShell
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
爱范儿
爱范儿
U
Unit 42
Y
Y Combinator Blog
月光博客
月光博客
Hugging Face - Blog
Hugging Face - Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
有赞技术团队
有赞技术团队
GbyAI
GbyAI
H
Help Net Security
量子位
Last Week in AI
Last Week in AI
博客园_首页
腾讯CDC
小众软件
小众软件

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
The Tiny UX Detail That Made Me Ditch My AI Export Tool
doremi · 2026-04-29 · via DEV Community

The Tiny UX Detail That Made Me Ditch My AI Export Tool

I was trying to export a 40-message Claude conversation last week. Code blocks, architecture diagrams, a bunch of back-and-forth about rate limiting strategies — the whole deal.

And I found myself staring at a wall of tiny checkboxes. You know the pattern: one checkbox per message, scroll through, tick the ones you want, hope you didn't miss #23 or double-select #24. After the third failed attempt I just gave up and took a screenshot. Which, obviously, is completely useless if you actually need the content.

This is supposed to be 2026. Why am I manually selecting messages like I'm filling out a survey?

The Checkbox Problem Is Actually a Design Problem

Here's what most export tools get wrong: they treat message selection like a form submission. But when you're exporting a conversation, you rarely want specific individual messages. You want a range — from "where we started discussing auth" to "where we landed on the final architecture."

The mental model is "everything between point A and point B." The UI gives you "select each item independently." That mismatch is why the experience feels broken.

I've seen this pattern in a few different AI export tools now. They all do the checkbox thing. And they all make me want to close the tab.

What Actually Works

I switched to this Chrome extension — XWX AI Chat Exporter, if you're curious — and the thing that kept me wasn't the export formats (though having PDF, Markdown, Word, JSON, and clipboard all in one tool is genuinely useful). It was the selection UX.

Instead of checkboxes, it draws a blue dashed box around the message range you want to select. You click anywhere inside the box and it grabs everything in that range. No counting, no "did I get them all," no scroll-through-tick-scroll-back cycle.

It's the difference between:

  • Before: Scroll → tick → scroll → tick → miss one → scroll back → uncheck → re-tick → finally done (maybe)
  • After: See the range → click once → done

The fact that this isn't the default pattern in every export tool is honestly baffling. It's not even a complex feature — it's just... thinking about how people actually use the product.

Why This Matters for Developer Workflows

If you're using AI for actual development work (not just casual chatting), you're exporting specific conversations for specific reasons:

  • That debugging session you want to reference later
  • The architecture discussion you need to share with your team
  • The code review conversation with patterns you want to save

In all of these cases, you want the whole conversation segment, not cherry-picked individual messages. Range selection matches the actual workflow. Checkbox selection fights it.

The Other Stuff

The extension handles all five major AI platforms — ChatGPT, Claude, Gemini, DeepSeek, Grok — which matters because I use different tools for different things. ChatGPT for quick questions, Claude for deep design work, Gemini for fact-checking. Having one export tool instead of five browser extensions cluttering my toolbar is its own small win.

The PDF export is limited to 3 per day on the free tier, but the Markdown export is unlimited and that's what I use 90% of the time anyway. Clean markdown with proper code fences and language tags drops right into my Obsidian vault.

Small Things That Matter

I keep coming back to this because it's a good example of how a single UX decision can make or break a tool. The export functionality itself is table stakes. The selection experience is what determines whether I actually use it.

Makes me wonder how many other tools I've abandoned because of friction I couldn't quite name. Probably more than I'd like to admit.