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
This commit is contained in:
cottongin
2026-04-06 18:40:04 -04:00
parent c7c6cd979b
commit 872d90d9d9
7 changed files with 221 additions and 55 deletions

View File

@@ -37,6 +37,15 @@ def download(issue_id):
)
@issues_bp.route("/issues/<int:issue_id>/epub")
def epub_file(issue_id):
issue = Issue.query.get_or_404(issue_id)
if not os.path.exists(issue.epub_path):
flash("ePub file not found.", "error")
return redirect(url_for("issues.index"))
return send_file(issue.epub_path, mimetype="application/epub+zip")
@issues_bp.route("/issues/<int:issue_id>/cover")
def cover_image(issue_id):
issue = Issue.query.get_or_404(issue_id)
@@ -73,6 +82,22 @@ def read(issue_id):
)
@issues_bp.route("/issues/<int:issue_id>/delete", methods=["POST"])
def delete(issue_id):
issue = Issue.query.get_or_404(issue_id)
if issue.epub_path and os.path.exists(issue.epub_path):
os.remove(issue.epub_path)
if issue.cover_path and os.path.exists(issue.cover_path):
os.remove(issue.cover_path)
db.session.delete(issue)
db.session.commit()
flash("Issue deleted.")
return redirect(url_for("issues.index"))
@issues_bp.route("/issues/<int:issue_id>/regenerate", methods=["POST"])
def regenerate(issue_id):
issue = Issue.query.get_or_404(issue_id)