cottongin
0d1a898caa
feat: add Grimmory/Booklore push integration
...
- Added "Push to Library" button to issues archive
- Implemented direct API upload to Grimmory/Booklore
- Added support for `.env` files via `python-dotenv`
- Handled 409 Conflict for duplicate files gracefully
- Resolved library name to numeric ID for direct uploads
- Fixed SQLAlchemy and ebooklib warnings in tests
- Added comprehensive tests for push functionality
Made-with: Cursor
2026-04-07 02:22:35 -04:00
cottongin
767285119b
feat: improve scheduler UI and align fetch to half-hours with tests
...
Made-with: Cursor
2026-04-06 21:42:49 -04:00
cottongin
e40023b9f9
fix: convert feed timestamps to US/Eastern and add test
...
Made-with: Cursor
2026-04-06 21:39:00 -04:00
cottongin
f7b424b692
fix: use US/Eastern for model datetime defaults and add tests
...
Made-with: Cursor
2026-04-06 21:36:55 -04:00
cottongin
da5792ceae
fix: update regenerate route to use image_paths for mosaic cover
...
Made-with: Cursor
2026-04-06 19:33:09 -04:00
cottongin
9c4fe7a0be
feat: pass image paths to cover generator in scheduler
...
Made-with: Cursor
2026-04-06 19:27:49 -04:00
cottongin
1b9f5324ed
feat: pass image paths to cover generator in publish route
...
Made-with: Cursor
2026-04-06 19:25:14 -04:00
cottongin
362e0c9b8e
feat: implement mosaic cover generation logic
...
Made-with: Cursor
2026-04-06 19:21:55 -04:00
cottongin
33de384ab5
fix: correct conftest import in test_fetcher
...
tests/ has no __init__.py so "from tests.conftest" fails. Use
"from conftest" which pytest resolves automatically.
Made-with: Cursor
2026-04-06 19:02:36 -04:00
cottongin
a017abfa03
test: add obituary headline filtering test
...
Made-with: Cursor
2026-04-06 19:00:30 -04:00
cottongin
9a8b586292
feat(cover): pixel-width headline truncation and larger font
...
Replace character-count truncation (45 chars) with Pillow textbbox
pixel-width measurement. Bump headline font 14→18, line spacing 22→26.
Made-with: Cursor
2026-04-06 18:58:42 -04:00
cottongin
807ab8610d
fix: tighten ePub image spacing — CSS margins, HTML cleanup for empty tags and wrappers
...
Made-with: Cursor
2026-04-06 17:04:40 -04:00
cottongin
49acf09aa1
feat: rewrite cover generation — 480×800 portrait, themed AI backgrounds, two-layer pipeline
...
Made-with: Cursor
2026-04-06 17:02:36 -04:00
cottongin
5c924f7dba
feat: full integration — app.py wiring, scheduler startup, route registration, README
...
- Wire blueprints and scheduler into create_app()
- Add start_scheduler param to skip scheduler in tests
- Fix Setting.get/set to use modern db.session.get()
- Remove unused imports from conftest and models
- Add README with quick start and usage guide
Made-with: Cursor
2026-04-06 15:22:38 -04:00
cottongin
50ff2e1533
feat: APScheduler manager with fetch interval and auto-publish
...
Made-with: Cursor
2026-04-06 15:18:37 -04:00
cottongin
01f8366e85
feat: ePub builder with chapters, images, TOC, cover
...
Made-with: Cursor
2026-04-06 15:17:21 -04:00
cottongin
d88a0817b7
feat: cover generation with Pollinations.ai and text fallback
...
Made-with: Cursor
2026-04-06 15:12:01 -04:00
cottongin
46796b8bf8
feat: RSS fetcher with dedup, image download, HTML rewriting
...
Made-with: Cursor
2026-04-06 15:03:55 -04:00
cottongin
58fe002c6f
feat: image download, resize-to-fit, baseline JPEG conversion
...
Made-with: Cursor
2026-04-06 15:01:03 -04:00
cottongin
b0e1ed20bd
feat: SQLAlchemy models for Article, Image, Issue, Setting
2026-04-06 14:56:45 -04:00
cottongin
88e359069d
scaffold: project structure, config, Flask app factory, test fixtures
...
Made-with: Cursor
2026-04-06 14:54:00 -04:00