Skip to content

v1.2.0: Timeout Optimization & Progress Feedback

Choose a tag to compare

@placenameday placenameday released this 03 Feb 11:54
· 9 commits to master since this release

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

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 TimedText class 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 aichat2md

Fresh Install

# via pip
pip install aichat2md

# via pipx (recommended for macOS)
pipx install aichat2md

Verify

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


🙏 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