New:
- incremental_svg.py: parse_to_valid(prefix) handles any partial SVG
- Closes open tags, opens quotes, truncates partial tags
- Strips reasoning text and markdown fences from prefix
- stream_to_valid(chunks) generator for incremental updates
- tests/test_incremental_svg.py: 34 test cases including property-based
Fixed (regressions from earlier today):
- test_app.py: pass base_url and api_key to on_generate (new UI fields)
- test_app.py: on_mode_change defaults updated to n=1
- test_renderer.py: mock both resvg and cairosvg since resvg is now primary
- (manual fixes I did as owner, before letting streaming-client start)
All tests: 157 passed, 1 skipped, 0 failed