v1.2.0: Timeout Optimization & Progress Feedback
aichat2md v1.2.0 Release Notes
Release Date: 2026-02-03
PyPI: https://pypi.org/project/aichat2md/1.2.0/
GitHub: https://github.com/placenameday/aichat2md/releases/tag/v1.2.0
🎯 Overview
v1.2.0 resolves timeout issues with large conversations and slow networks, while adding real-time progress feedback for better UX.
✨ New Features
1. Extended Timeouts
- Playwright extraction: 30s → 60s (handles slow-loading pages)
- API processing: Dynamic timeout based on content size
- Formula:
60s + 1s per 100 chars, max 600s - 5K chars: 110s
- 15K chars: 210s
- 50K chars: 560s
- Formula:
2. Progress Feedback
- Real-time animated spinner during long operations
- Elapsed time display in clean
[Xs]format - Time positioned after spinner (not at end)
- Estimated time shown for API calls
Before:
📡 Extracting from URL: https://...
[30s silent wait]
✗ Timeout 30000ms exceeded
After:
⠋ [23s] Extracting from URL (up to 60s): https://...
✓ Extracted 15697 characters
⠙ [108s] Structurizing 15697 chars with DeepSeek (~216s)
✓ Structurized
🐛 Bug Fixes
- Fixed: Playwright timeout on Gemini share links (slow page loads)
- Fixed: API timeout on large conversations (15K+ characters)
- Fixed: No user feedback during long operations
🔧 Technical Changes
Dependencies
- Added:
yaspin>=3.0.0(progress spinner) - Existing:
playwright>=1.40.0,requests>=2.31.0
Implementation
- New
TimedTextclass for dynamic time display - Dynamic timeout calculation in
structurizer.py - Increased default timeout in
playwright_extractor.py - Spinner integration in
cli.py
Testing
- All 11 tests pass
- Verified with Gemini 15K+ char conversations
- Backward compatible (yaspin silent in test env)
📦 Installation
Upgrade
pip install --upgrade aichat2mdFresh Install
# via pip
pip install aichat2md
# via pipx (recommended for macOS)
pipx install aichat2mdVerify
aichat2md --version
# Should output: aichat2md 1.2.0🚀 Usage
No changes to CLI interface. All improvements are automatic:
# Works with slow networks now
aichat2md https://gemini.google.com/share/xxx
# Shows progress for large conversations
aichat2md https://chatgpt.com/share/yyy
# Dynamic timeout scales with content size
aichat2md large_conversation.webarchive📊 Performance
Timeout Coverage
- Fast scenarios (< 5K chars): 60s Playwright + ~110s API = ~170s total
- Medium scenarios (15K chars): 60s Playwright + ~216s API = ~276s total
- Large scenarios (50K chars): 60s Playwright + ~560s API = ~620s total
User Feedback
- Real-time progress updates every 100ms
- Clear expectations with estimated times
- Visual confirmation of active processing
🔗 Links
- PyPI: https://pypi.org/project/aichat2md/
- GitHub: https://github.com/placenameday/aichat2md
- Issues: https://github.com/placenameday/aichat2md/issues
- Documentation: See README.md
🙏 Credits
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
📝 Changelog
[1.2.0] - 2026-02-03
Added
- Dynamic API timeout based on content size
- Progress spinner with elapsed time
- Custom TimedText class for clean time display
Changed
- Playwright timeout: 30s → 60s
- API timeout: 60s fixed → dynamic (60 + len/100, max 600s)
Fixed
- Timeout errors on large Gemini conversations
- Timeout errors on slow-loading pages
- Missing user feedback during long operations
Dependencies
- Added yaspin>=3.0.0
🔜 Next Release
Planned for future versions:
- Streaming API support
- Batch processing mode
- Custom timeout configuration
- Progress bar for multi-file processing