feat(updater): hiển thị changelog lấy từ GitHub cho cả hai kênh cập nhật - #53
Merged
Merged
Conversation
Trước đây cập nhật chỉ nói "Có bản mới: 1.6.3" — người dùng phải cài trong khi
không biết bản mới có gì. Release body đã nằm sẵn trong response của
/releases/latest nhưng bị bỏ đi, chỉ lấy tag_name và html_url.
Kênh manual lấy changelog miễn phí: body có sẵn trong response vừa parse, không
thêm request nào. Kênh weekly (stable) thì stable.json chỉ có version, nên phải
hỏi thêm /releases/tags/v{version} — đổi lại stable.json vẫn giữ hai dòng
maintainer sửa tay, không phải nhớ cập nhật changelog lúc promote. Notes của
kênh weekly lưu vào pendingUpdateNotes cạnh pendingUpdateVersion (ghi/xoá cùng
nhau) để sống sót qua lần IME khởi động lại giữa lúc check và lúc mở tab.
Fetch notes là best-effort: mọi lỗi trả nil chứ không throw, vì thiếu changelog
không bao giờ được biến một bản update thật thành .failed — số phiên bản là tin
chính, changelog là phần thêm. Có test pin 404.
Body đến từ mạng nên không tin nó ngắn hay đúng định dạng: lọc git trailer
(Co-Authored-By, Signed-off-by — plumbing của commit, không phải tin cho người
dùng), gộp các dòng trống thừa, cap 4000 ký tự. Quá cap thì link "Xem đầy đủ
thay đổi" dẫn ra trang release, URL suy ra từ version nên kênh weekly cũng có
link mà không phải lưu thêm key.
Render Markdown tối giản: Text chỉ hiểu inline markdown, nên tách ## và - thành
block riêng rồi giao phần inline cho AttributedString — không thêm dependency.
Heading theo đúng luật ATX (phải có dấu cách sau #), nếu không thì dòng mở đầu
bằng "ptrinh#42 sửa lỗi" sẽ bị ăn mất # và in đậm.
Cửa sổ Settings mặc định cao 560 → 660: tab Giới thiệu không có scroll container
và phần cố định của nó đã chiếm gần hết chiều cao, nên hộp changelog là thành
phần duy nhất co được và sẽ bị ép còn một vệt. 660 chỉ áp dụng lần tạo đầu, ai
đã chỉnh kích thước vẫn giữ nguyên.
Blocks parse một lần lúc gán vào @State thay vì parse trong ForEach: body chạy
lại mỗi lần model publish hoặc checking/installing/status đổi.
193 test pass. Layout chưa kiểm tra trực quan — mới đúng về mặt code.
ptrinh
added a commit
that referenced
this pull request
Aug 15, 2026
…B cho fetch changelog Follow-up review PR #53: sanitizeNotes cap 4000 ký tự nhưng chỉ cắt SAU khi URLSession.data(for:) đã buffer toàn bộ body vào RAM. Release body là dữ liệu từ mạng — response thật chỉ vài KB, 1MB "release notes" không phải tin tức. - boundedData(for:cap:) dùng URLSession.bytes: quá cap thì bỏ transfer, trả nil (đúng hợp đồng best-effort của releaseNotes — thiếu changelog không được phá update) - test bằng data: URL, không chạm mạng: dưới cap / quá cap / đúng biên Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01U1mRMMTMr2v7SJQK2ABB9M
xkhanhs
pushed a commit
to xkhanhs/vtx
that referenced
this pull request
Aug 17, 2026
…B cho fetch changelog Follow-up review PR ptrinh#53: sanitizeNotes cap 4000 ký tự nhưng chỉ cắt SAU khi URLSession.data(for:) đã buffer toàn bộ body vào RAM. Release body là dữ liệu từ mạng — response thật chỉ vài KB, 1MB "release notes" không phải tin tức. - boundedData(for:cap:) dùng URLSession.bytes: quá cap thì bỏ transfer, trả nil (đúng hợp đồng best-effort của releaseNotes — thiếu changelog không được phá update) - test bằng data: URL, không chạm mạng: dưới cap / quá cap / đúng biên Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01U1mRMMTMr2v7SJQK2ABB9M (cherry picked from commit 9868bb6)
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.
Thêm changelog để người dùng biết có gì mới khi cập nhật phiên bản.