cottongin
3d36517511
docs: fix gallery and repo URLs
...
- Updated README.md to use the correct htmlpreview URL for Gitea
- Updated docs/gallery.html 'Back to README' link to point to the main repo URL
Made-with: Cursor
2026-04-07 15:37:25 -04:00
cottongin
7339e8c0d6
docs: use htmlpreview for gallery links in README
...
- Replaced local links to docs/gallery.html with htmlpreview.github.io links
- Allows the interactive gallery to be viewed directly from the GitHub repository
Made-with: Cursor
2026-04-07 15:32:22 -04:00
cottongin
202b2c8b35
chore: tweak README
2026-04-07 15:24:37 -04:00
cottongin
0abfe17914
chore: add MIT license
...
- Added MIT license file
- Attributed copyright to cottongin
Made-with: Cursor
2026-04-07 15:10:08 -04:00
cottongin
b0ac44152f
docs: add application screenshots and interactive gallery
...
- Captured clean, full-page screenshots of all major application views
- Added an interactive HTML slide deck gallery for previewing features
- Created a high-resolution mosaic and a smaller preview mosaic
- Generated a Python script to automate mosaic creation
- Updated README.md with prominent links to the gallery and screenshots
- Added accessibility attributes (role="button", tabindex="0") to calendar rows
Made-with: Cursor
2026-04-07 15:03:21 -04:00
cottongin
c5e5836ac1
feat: streamline publish tab and calendar UI
...
- Merged Weekly and Multi-Week tabs into a single "By Week" tab
- Updated calendar to visually indicate days with articles via a dot indicator
- Improved calendar week selection to allow toggling multiple individual weeks
- Enhanced calendar hover states to invert foreground text for readability
- Fixed active tab styling to remove clashing bottom borders and focus outlines
Made-with: Cursor
2026-04-07 12:16:11 -04:00
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
2cf44fe642
chore: add timezone migration script
...
Made-with: Cursor
2026-04-06 21:40:32 -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
7c9c32bd0e
style: vertically center headlines in the bottom box
...
Made-with: Cursor
2026-04-06 20:50:02 -04:00
cottongin
775df4b79e
fix: use Helvetica Bold explicitly instead of Arial
...
Made-with: Cursor
2026-04-06 20:47:06 -04:00
cottongin
856978f3cb
fix: use Arial Bold on macOS to avoid Helvetica.ttc rendering bugs in Pillow
...
Made-with: Cursor
2026-04-06 20:40:19 -04:00
cottongin
38767fbd4b
style: change base cover background to gray
...
Made-with: Cursor
2026-04-06 20:34:17 -04:00
cottongin
9bb01c14f9
fix: change cover background back to white to distinguish text areas from black mosaic gaps
...
Made-with: Cursor
2026-04-06 20:31:47 -04:00
cottongin
e71bac3cce
feat: omit obituaries images from mosaic cover
...
Made-with: Cursor
2026-04-06 20:28:32 -04:00
cottongin
836e4060bb
feat: tweak mosaic cover layout to use black background and bound image area
...
Made-with: Cursor
2026-04-06 20:24:28 -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
bdab628953
feat: update UI labels and remove unused config for mosaic cover
...
Made-with: Cursor
2026-04-06 19:29:59 -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
b2d084cd69
docs: add mosaic cover implementation plan
...
Made-with: Cursor
2026-04-06 19:18:18 -04:00
cottongin
8deb71b81a
docs: add mosaic cover design spec
...
Made-with: Cursor
2026-04-06 19:16:12 -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
67c35f7e9c
feat(cover): filter obituaries from cover headlines
...
Exclude articles categorized as "Obituaries" from the headline list
passed to cover generation. Applied in all three call sites: manual
publish, issue regenerate, and auto-publish scheduler.
Made-with: Cursor
2026-04-06 18:59:51 -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
d6cef67420
Add cover refinements implementation plan
...
Five-task plan covering pixel-width truncation, font size bump,
and obituary filtering across three call sites.
Made-with: Cursor
2026-04-06 18:56:38 -04:00
cottongin
c4300b02b8
Add cover refinements design spec
...
Spec for three cover generation improvements: omit obituaries
from headlines, increase font size, and use pixel-width truncation.
Made-with: Cursor
2026-04-06 18:54:49 -04:00
cottongin
872d90d9d9
fix: delete issues, ePub reader (JSZip, linear cover, fonts), Pico dialog, UI polish
...
- Add POST /issues/<id>/delete route with file cleanup
- Fix ePub reader: add JSZip dependency, make cover linear in spine,
inject system fonts into rendition
- Replace browser confirm() with Pico CSS dialog component
- Fix dashboard button sizing and consistency
- Add favicon, override Pico font stack to suppress Firefox warnings
- Compact issue action buttons
Made-with: Cursor
2026-04-06 18:40:04 -04:00
cottongin
c7c6cd979b
chore: add run.py entrypoint, update .gitignore and README
...
Moved the app entrypoint from app.py __main__ block to a dedicated
run.py. Updated .gitignore to exclude editor, superpowers, and OS files.
Made-with: Cursor
2026-04-06 18:39:49 -04:00
cottongin
45e94d68da
style: UI consistency — tab bar, calendar, button classes, consistent element sizing
...
Made-with: Cursor
2026-04-06 17:41:21 -04:00
cottongin
8d58fa92b6
feat: in-app ePub reader with epub.js, TOC sidebar, chapter navigation
...
Made-with: Cursor
2026-04-06 17:39:37 -04:00
cottongin
5ca7156723
feat: publish UI rewrite — tabs, calendar widget, multi-week and single-article support
...
Made-with: Cursor
2026-04-06 17:06:52 -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
5fec07c287
feat: add COVER_SIZE config, issue_type column to Issue model
...
Made-with: Cursor
2026-04-06 16:59:27 -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
ec9f31f072
feat: complete web UI — dashboard, articles, publish, settings, issues
...
Made-with: Cursor
2026-04-06 15:21:18 -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