mirror of
https://github.com/Glitchy-Sheep/boosty-downloader.git
synced 2026-10-14 21:33:23 +00:00
[PR #180] [MERGED] [downloader] Redesign the check overview: one block, tier ladder, cost of full access #177
Labels
No labels
api-drift
bug
ci
documentation
enhancement
enhancement
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Glitchy-Sheep/boosty-downloader#177
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/Glitchy-Sheep/boosty-downloader/pull/180
Author: @Glitchy-Sheep
Created: 9/13/2026
Status: ✅ Merged
Merged: 9/13/2026
Merged by: @Glitchy-Sheep
Base:
main← Head:feat/check-redesign📝 Commits (5)
8693580feat: Compute what full access to a blog costs4bf0d4dfeat: Draw check, dry-run and run statistics as terminal viewsa3a3db7docs: Describe the check overview block and what it costse7a0cb3feat: Show the check overview as a tier ladder29a4a2bfeat: Show the check overview as a tier ladder📊 Changes
34 files changed (+1388 additions, -569 deletions)
View changed files
📝
CHANGELOG.md(+2 -1)📝
README.md(+1 -1)📝
boosty_downloader/application/blog_overview.py(+215 -7)📝
boosty_downloader/application/use_cases/check_total_posts.py(+1 -1)📝
boosty_downloader/application/use_cases/plan_download.py(+1 -1)➖
boosty_downloader/cli/blog_overview_rendering.py(+0 -115)📝
boosty_downloader/cli/cli_options.py(+9 -0)📝
boosty_downloader/cli/commands/check.py(+12 -6)📝
boosty_downloader/cli/commands/download.py(+8 -8)➖
boosty_downloader/cli/download_plan_rendering.py(+0 -54)➕
boosty_downloader/cli/views/__init__.py(+7 -0)➕
boosty_downloader/cli/views/blog_overview.py(+239 -0)➕
boosty_downloader/cli/views/download_plan.py(+67 -0)➕
boosty_downloader/cli/views/media.py(+55 -0)📝
boosty_downloader/cli/views/run_statistics.py(+27 -27)➕
boosty_downloader/cli/views/text.py(+49 -0)➕
test/fixtures/views/blog_overview_empty.txt(+3 -0)➕
test/fixtures/views/blog_overview_locked.txt(+18 -0)➕
test/fixtures/views/blog_overview_own.txt(+15 -0)➕
test/fixtures/views/blog_overview_posts.txt(+29 -0)...and 14 more files
📄 Description
📝 Summary
Stacked on #179: the diff here is only the redesign. GitHub retargets this PR to
mainonce #179 merges.The overview from #179 was printed as one log record: a
Boosty_Downloader.SUCCESS ✔:prefix, a timestamp and every line indented under them - readable, but scattered. It is now one block between two rules, with aligned tables, and it says what full access to the blog costs.🔧 What changes
On a blog you are not subscribed to, the last line becomes the tier ladder:
To unlock the rest: 199 RUB/mo (Regular) opens 78 posts, 99999 RUB/mo (Billionaire) opens all 79- each rung says what it opens, so a joke-priced top tier cannot hide the cheap one that opens most of the blog. Locked titles are capped at 20 with "and N more"; untitled posts read "(no title)".download --dry-runand the closing run statistics use the same style: a titled rule, aligned tables, a closing rule.🧩 How it works
BlogOverviewnow carriesfull_access_costandremaining_cost(UnlockCost: the tier ladder with cumulative post counts plus one-off purchases) and the author name. Boosty tiers nest - a higher tier opens every lower one - so the ladder counts cumulatively. No human-facing strings live there.cli/views/turnsBlogOverview,DownloadPlanandRunStatisticsinto rich renderables (Rule,Table,Group, no frames). A view never touches the API, the cache or the console.checkanddownloadare the only places that callconsole.print(view)- through the progress reporter's console, so nothing goes through the logger prefix.🧪 Tests
test/fixtures/views/*.txt: plain 80-column renders of the overview (own blog, foreign blog with locked posts, empty blog), the plan and the statistics.UPDATE_GOLDEN=1 uv run pytest test/unit/cli/viewsregenerates them.checkon an own blog and on a foreign one with 79 locked posts and a 99999 RUB gimmick tier,--dry-run, a cached rerun with the statistics block.✅ Checklist
--helpand README if neededdocs/if the download flow or dev process changed## Unreleasedin CHANGELOG.md (or theci/skip-changeloglabel if not user-facing)🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.