Story 2398: Download Page Integration#2471
Open
julhoang wants to merge 21 commits into
Open
Conversation
jlchilders11
requested changes
May 27, 2026
jlchilders11
left a comment
Collaborator
There was a problem hiding this comment.
Overall, this all looks good! Couple of structural things I'd like to see changed that might make it even better.
4b617a0 to
965a3bb
Compare
… add related tests
bfc1719 to
90d7d16
Compare
julioest
approved these changes
May 30, 2026
jlchilders11
approved these changes
Jun 1, 2026
jlchilders11
left a comment
Collaborator
There was a problem hiding this comment.
Looks good to me, thanks for those adjustments!
This was
linked to
issues
Jun 4, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Issue: #2398
Summary & Context
Wires the V3 release detail page to real data: live downloads, release-notes content, hero action buttons, and a dismissible version-alert banner. Also enriches the "What's new" AI flow with dependency stats and inline-markdown rendering.
Changes
Release detail page — real data integration
release_detail.html):whats_new_itemsand release-notes HTML with live values fromget_v3_context_data_release_highlights_card.htmlfor ungenerated summariesVersion alert banner
_version_alert.htmlwrapping_banner.htmlVersionAlertMixin.get_version_alert_message(Python-side branching/link markup), computed only on the V3 render path_banner.html: add a dismissible close (X) button with@alpinejs/persistsessionStorage scoping,__bodywrapper layout, and no-JS fallback (always visible, no close button)Hero library updates
_hero_library.html:report_url/rss_urlprops andfile-multiple/rssiconshero-library__mainso the version-alert banner renders as the last child of the hero"What's new" AI generation
versions/tasks.py:inline_markdowntemplate filter (whats_new_extras.py) renderingcodeand**bold**spans while escaping all other HTML; apply it to release-highlight descriptionsShared logic & tooling
Version.get_dependency_stats()and reuse it from the view and the AI taskscripts/seed_release_notes_all.pyto seed release-notesRenderedContentfor every local version from the GitHub history sourceStyling
markdown-card.css(custom list markers, inline code styling, wrapping) andrelease-detail.css(fixed-height release-notes card)Tests
Risks & Considerations
inline_markdownonly handles single-backtick code and**bold**; other markdown passes through escaped.get_dependency_statscan raiseBoostImportedDataExceptionwhen imported data is missing; the AI task swallows it, but verify the view path handles versions without dependency data.sessionStoragekeyed by version slug — dismissals reset per session, by design.Testing Instructions
Setup
cy/2397-whatsnew) and run migrations if needed.Release detail page — real data
file-multipleicon), and RSS (rssicon).Version-alert banner
sessionStorage, keyed by version)."What's new" AI generation (
versions/tasks.py)Inline markdown filter
`code`and**bold**, confirm those render as inline code / bold spans.Tests (optional if you want to invoke it manually)
Screenshots
Self-review Checklist
Frontend