Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
70c385f
chore(go-deps:backend)(deps): bump the go-dependencies group with 2 u…
dependabot[bot] Sep 28, 2026
be11fc7
chore(npm-deps:website)(deps-dev): bump the website-dependencies group
dependabot[bot] Sep 28, 2026
46d572f
chore(npm-deps:frontend)(deps): bump the frontend-dependencies group
dependabot[bot] Sep 28, 2026
b40bdc1
chore:准备 v1.3.39 发布分支
marcomarcogd Sep 29, 2026
65b3fb1
fix:在发布分支恢复 #1231 响应式图片修复
marcomarcogd Sep 29, 2026
c28fb30
fix:补齐论坛懒加载图片和媒体防盗链重试
marcomarcogd Sep 29, 2026
44a198c
Merge pull request #1239 from marcomarcogd/codex/fix-1230-discuz-hotl…
marcomarcogd Sep 29, 2026
26fb154
chore:同步 v1.3.39 发布分支
marcomarcogd Sep 29, 2026
58e10dd
chore:同步 Wails CLI 至 beta.25
marcomarcogd Sep 29, 2026
3a5b2c7
Merge pull request #1232 from DevXDojo/dependabot/go_modules/go-depen…
marcomarcogd Sep 29, 2026
41ac14c
chore:将官网依赖同步到 v1.3.39 发布基线
marcomarcogd Sep 29, 2026
dc84571
Merge pull request #1233 from DevXDojo/dependabot/npm_and_yarn/websit…
marcomarcogd Sep 29, 2026
2907ab4
chore:将前端依赖同步到 v1.3.39 发布基线
marcomarcogd Sep 29, 2026
30f52f9
Merge pull request #1234 from DevXDojo/dependabot/npm_and_yarn/fronte…
marcomarcogd Sep 29, 2026
0bc836d
docs:补充 v1.3.39 图片修复及依赖更新记录
marcomarcogd Sep 29, 2026
613e436
fix: refresh UI after Miniflux sync
HernandoR Oct 2, 2026
530f7f3
chore(go-deps:backend)(deps): bump the go-dependencies group with 4 u…
dependabot[bot] Oct 5, 2026
30d94f3
chore(npm-deps:frontend)(deps): bump the frontend-dependencies group
dependabot[bot] Oct 5, 2026
d4cd5f9
chore(npm-deps:website)(deps-dev): bump the website-dependencies group
dependabot[bot] Oct 5, 2026
1f7ae15
fix: repair reader sync polling state and cover completion
WCY-dt Oct 7, 2026
aaee3c7
chore: reconcile Go dependency update with release baseline
WCY-dt Oct 7, 2026
946d850
chore: reconcile frontend updates with release and Wails beta.27
WCY-dt Oct 7, 2026
e18327a
chore: reconcile website dependency update with release baseline
WCY-dt Oct 7, 2026
6db2d29
Merge pull request #1242 from HernandoR/fix/miniflux-refresh-ui
WCY-dt Oct 7, 2026
df82ea2
Merge pull request #1245 from DevXDojo/dependabot/go_modules/go-depen…
WCY-dt Oct 7, 2026
19ba508
Merge pull request #1246 from DevXDojo/dependabot/npm_and_yarn/fronte…
WCY-dt Oct 7, 2026
6c6c0b1
Merge pull request #1247 from DevXDojo/dependabot/npm_and_yarn/websit…
WCY-dt Oct 7, 2026
6c42d1a
feat: add configurable feed list shortcut (#1235)
WCY-dt Oct 7, 2026
9309bdf
feat: dismiss floating feed list on outside interaction (#1236)
WCY-dt Oct 7, 2026
cdbd959
fix: observe background feed updates continuously (#1229)
WCY-dt Oct 7, 2026
7cb1461
feat: support generic video enclosures and gallery playback (#1244)
WCY-dt Oct 7, 2026
a84dd27
fix: retain generated title translations and guard summary persistence
WCY-dt Oct 7, 2026
7fc1f25
fix: recover reader content after background refresh without restarting
WCY-dt Oct 7, 2026
b8af0ff
feat: enable dragging article images out for saving
WCY-dt Oct 7, 2026
a516b04
chore: patch vulnerable npm transitive dependencies
WCY-dt Oct 7, 2026
11b0a81
test: finalize release regression coverage and frontend contracts
WCY-dt Oct 7, 2026
d561c4f
docs: finalize v1.3.39 changelog
WCY-dt Oct 7, 2026
88e0dc0
fix: prevent translation retry storms and reduce refresh CPU
WCY-dt Oct 7, 2026
646b660
fix(dev): reuse installed frontend dependencies on rebuild
WCY-dt Oct 7, 2026
309f426
fix(translation): queue rate-limited work and resume automatically
WCY-dt Oct 7, 2026
72acb03
fix: restore uninterrupted translation during feed refresh
WCY-dt Oct 7, 2026
2628a3e
fix: use available Google endpoint during translation throttling
WCY-dt Oct 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,37 @@ All notable changes to MrRSS will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [1.3.39] - 2026-10-07

### Added

- Expand or collapse the feed list with a configurable keyboard shortcut (`B` by default), including a shortcut hint on the sidebar button. (#1235)
- Dismiss an unpinned feed list when clicking or focusing outside it, or when the application loses focus. (#1236)
- Extract video enclosures and inline video sources, show generic videos in the multimedia gallery, and play them with native video controls while retaining YouTube and Bilibili embeds. (#1244)
- Allow dragging rendered article images to desktop/file-manager targets using the WebView's image/file download drag support, with safe filenames and the existing media proxy. Availability depends on the platform WebView.

### Fixed

- Avoid reinstalling frontend dependencies during backend development rebuilds, preventing Windows file-lock errors while Vite is running.
- Keep observing background refreshes and detect article saves between progress polls, updating the selected feed/category, articles, and unread counts without losing the current article. (#1229)
- Refresh the interface when either Miniflux or FreshRSS finishes synchronization, repair the polling-state reference, and check sync HTTP responses. (#1242) (@HernandoR)
- Recover empty reader content after feed refresh without restarting; invalidate stale frontend content and retain visible content if a background reload fails.
- Preserve generated title translations during feed refresh and add regression coverage ensuring AI summaries, cached content, and chat history remain intact.
- Avoid repeated automatic title translation after list refresh, retain skipped results, retry failed visible titles with backoff, and respect Google translation rate limits across title/content requests with bounded concurrency and localized feedback.
- Keep rate-limited title, paragraph, and RSS-summary translations queued for automatic retry, prioritize the current article, and cancel obsolete work. Return cached/local reading results immediately during upstream outages, restore normal speed after recovery, and avoid labelling mixed-language articles as skipped.
- Preserve HTTP 429 retry delays from translation providers and propagate AI/list translation throttling instead of storing partially untranslated results as successful translations.
- Fail over between the two built-in Google translation endpoints when one returns HTTP 429, using the configured proxy and retaining the preferred endpoint. Keep cooldowns separate and never change hosts for custom endpoints.
- Resolve responsive `img`/`source` image candidates in the original-page proxy and preserve a valid lead image when full-text extraction contains no images. (#1230, #1231, #1239)
- Promote valid Discuz `zoomfile`/`file` attachments after existing lazy-image attributes in RSS content, full-text extraction, and original pages; preserve relative URLs, HTML entities, and already-proxied resources. (#1230, #1239)
- Retry media GET requests rejected with HTTP 403 once without Referer, including redirects, within the same timeout. Never cache failed or incomplete downloads, and avoid duplicate retries after the fallback is exhausted. (#1230, #1239)

### Changed

- Restore the stable article viewport during bulk refresh: update progress and sidebar counts live, then publish new articles once on completion, avoiding repeated automatic translations of transient rows. Keep detecting short background refreshes between polls. (#1229)
- Reduce refresh CPU and allocations by reusing Chinese conversion dictionaries and image extraction patterns and skipping video parsing for ordinary articles.
- Update gofeed to 1.5.0 and align Wails, its frontend runtime, and the build CLI on beta.27. (#1232, #1234, #1245, #1246)
- Refresh the locked Go, frontend, and website dependencies and apply compatible security updates to vulnerable npm transitive dependencies. (#1233, #1234, #1245, #1246, #1247)

## [1.3.38] - 2026-09-27

### Added
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<strong>English</strong> | <a href="README_zh.md">简体中文</a>
</p>

[![Version](https://img.shields.io/badge/version-1.3.38-blue.svg)](https://github.com/DevXDojo/MrRSS/releases)
[![Version](https://img.shields.io/badge/version-1.3.39-blue.svg)](https://github.com/DevXDojo/MrRSS/releases)
[![License](https://img.shields.io/badge/license-GPLv3-green.svg)](LICENSE)
[![Go](https://img.shields.io/badge/Go-1.27+-00ADD8?logo=go)](https://go.dev/)
[![Wails](https://img.shields.io/badge/Wails-v3%20alpha-red)](https://wails.io/)
Expand Down
2 changes: 1 addition & 1 deletion README_zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<a href="README.md">English</a> | <strong>简体中文</strong>
</p>

[![Version](https://img.shields.io/badge/version-1.3.38-blue.svg)](https://github.com/DevXDojo/MrRSS/releases)
[![Version](https://img.shields.io/badge/version-1.3.39-blue.svg)](https://github.com/DevXDojo/MrRSS/releases)
[![License](https://img.shields.io/badge/license-GPLv3-green.svg)](LICENSE)
[![Go](https://img.shields.io/badge/Go-1.27+-00ADD8?logo=go)](https://go.dev/)
[![Wails](https://img.shields.io/badge/Wails-v3%20alpha-red)](https://wails.io/)
Expand Down
2 changes: 1 addition & 1 deletion Taskfile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ vars:
BIN_DIR: "build/bin"
VITE_PORT: '{{.WAILS_VITE_PORT | default 5173}}'
# Keep this version synchronized with github.com/wailsapp/wails/v3 in go.mod.
WAILS3: go run github.com/wailsapp/wails/v3/cmd/wails3@v3.0.0-beta.23
WAILS3: go run github.com/wailsapp/wails/v3/cmd/wails3@v3.0.0-beta.27

tasks:
build:
Expand Down
3 changes: 2 additions & 1 deletion build/Taskfile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ tasks:
- package.json
- package-lock.json
generates:
- node_modules
# Task checks files, not the directory itself. npm ci writes this marker.
- node_modules/.package-lock.json
preconditions:
- sh: npm version
msg: "Looks like npm isn't installed. Npm is part of the Node installer: https://nodejs.org/en/download/"
Expand Down
4 changes: 2 additions & 2 deletions build/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ info:
description: "A modern, standalone RSS reader" # The application description
copyright: "Copyright © 2026" # Copyright text
comments: "Built with Wails" # Comments
version: "1.3.38" # The application version
version: "1.3.39" # The application version

# iOS build configuration (uncomment to customise iOS project generation)
# Note: Keys under `ios` OVERRIDE values under `info` when set.
Expand All @@ -21,7 +21,7 @@ info:
# # The display name shown under the app icon (CFBundleDisplayName/CFBundleName)
# displayName: "MrRSS"
# # The app version to embed in Info.plist (CFBundleShortVersionString/CFBundleVersion)
# version: "1.3.38"
# version: "1.3.39"
# # The company/organisation name for templates and project settings
# company: "Ch3nyang"
# # Additional comments to embed in Info.plist metadata
Expand Down
4 changes: 2 additions & 2 deletions build/darwin/Info.dev.plist
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@
<key>CFBundleIdentifier</key>
<string>com.mrrss.app</string>
<key>CFBundleVersion</key>
<string>1.3.38</string>
<string>1.3.39</string>
<key>CFBundleGetInfoString</key>
<string>Built with Wails</string>
<key>CFBundleShortVersionString</key>
<string>1.3.38</string>
<string>1.3.39</string>
<key>CFBundleIconFile</key>
<string>icons</string>
<key>LSMinimumSystemVersion</key>
Expand Down
4 changes: 2 additions & 2 deletions build/darwin/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@
<key>CFBundleIdentifier</key>
<string>com.mrrss.app</string>
<key>CFBundleVersion</key>
<string>1.3.38</string>
<string>1.3.39</string>
<key>CFBundleGetInfoString</key>
<string>Built with Wails</string>
<key>CFBundleShortVersionString</key>
<string>1.3.38</string>
<string>1.3.39</string>
<key>CFBundleIconFile</key>
<string>icons</string>
<key>LSMinimumSystemVersion</key>
Expand Down
4 changes: 2 additions & 2 deletions build/darwin/Taskfile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,9 @@ tasks:
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.3.38</string>
<string>1.3.39</string>
<key>CFBundleVersion</key>
<string>1.3.38</string>
<string>1.3.39</string>
<key>LSMinimumSystemVersion</key>
<string>10.13</string>
<key>NSHighResolutionCapable</key>
Expand Down
2 changes: 1 addition & 1 deletion build/darwin/create-dmg.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ set -e

APP_NAME="MrRSS"
# Get version from frontend/package.json if available, otherwise use default
VERSION=$(grep -o '"version"[[:space:]]*:[[:space:]]*"[^"]*"' frontend/package.json 2>/dev/null | head -1 | sed 's/.*"\([^"]*\)".*/\1/' || echo "1.3.38")
VERSION=$(grep -o '"version"[[:space:]]*:[[:space:]]*"[^"]*"' frontend/package.json 2>/dev/null | head -1 | sed 's/.*"\([^"]*\)".*/\1/' || echo "1.3.39")
APP_PUBLISHER="Ch3nyang"
APP_URL="https://github.com/DevXDojo/MrRSS"
APP_DESCRIPTION="A Modern, Cross-Platform Desktop RSS Reader"
Expand Down
4 changes: 2 additions & 2 deletions build/ios/Info.dev.plist
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.3.38-dev</string>
<string>1.3.39-dev</string>
<key>CFBundleVersion</key>
<string>1.3.38</string>
<string>1.3.39</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>MinimumOSVersion</key>
Expand Down
4 changes: 2 additions & 2 deletions build/ios/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.3.38</string>
<string>1.3.39</string>
<key>CFBundleVersion</key>
<string>1.3.38</string>
<string>1.3.39</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>MinimumOSVersion</key>
Expand Down
4 changes: 2 additions & 2 deletions build/ios/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ set -e
# Build configuration
APP_NAME="MrRSS"
BUNDLE_ID="com.mrrss.app"
VERSION="1.3.38"
BUILD_NUMBER="1.3.38"
VERSION="1.3.39"
BUILD_NUMBER="1.3.39"
BUILD_DIR="build/ios"
TARGET="simulator"

Expand Down
2 changes: 1 addition & 1 deletion build/linux/Taskfile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ tasks:
cmds:
- cd {{.BIN_DIR}} && tar -czf {{.APP_NAME}}-{{.VERSION}}-linux-{{.ARCH}}.tar.gz {{.APP_NAME}}
vars:
VERSION: '1.3.38'
VERSION: '1.3.39'
ARCH: '{{.ARCH | default "amd64"}}'

generate:dotdesktop:
Expand Down
2 changes: 1 addition & 1 deletion build/linux/create-appimage.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ set -e

APP_NAME="MrRSS"
# Get version from frontend/package.json if available, otherwise use default
VERSION=$(grep -o '"version"[[:space:]]*:[[:space:]]*"[^"]*"' frontend/package.json 2>/dev/null | head -1 | sed 's/.*"\([^"]*\)".*/\1/' || echo "1.3.38")
VERSION=$(grep -o '"version"[[:space:]]*:[[:space:]]*"[^"]*"' frontend/package.json 2>/dev/null | head -1 | sed 's/.*"\([^"]*\)".*/\1/' || echo "1.3.39")
# Get architecture from environment variable or default to amd64
ARCH=${ARCH:-amd64}
echo "Target architecture: ${ARCH}"
Expand Down
2 changes: 1 addition & 1 deletion build/linux/nfpm/nfpm.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
name: "MrRSS"
arch: ${GOARCH}
platform: "linux"
version: "1.3.38"
version: "1.3.39"
section: "default"
priority: "extra"
maintainer: ${GIT_COMMITTER_NAME} <${GIT_COMMITTER_EMAIL}>
Expand Down
4 changes: 2 additions & 2 deletions build/windows/info.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{
"fixed": {
"file_version": "1.3.38"
"file_version": "1.3.39"
},
"info": {
"0000": {
"ProductVersion": "1.3.38",
"ProductVersion": "1.3.39",
"CompanyName": "Ch3nyang",
"FileDescription": "MrRSS",
"LegalCopyright": "Copyright © 2026",
Expand Down
4 changes: 2 additions & 2 deletions build/windows/installer.nsi
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
; All paths in this script are relative to the script directory.

!define APP_NAME "MrRSS"
!define APP_VERSION "1.3.38"
!define APP_VERSION_NUMERIC "1.3.38.0" ; NSIS requires X.X.X.X format
!define APP_VERSION "1.3.39"
!define APP_VERSION_NUMERIC "1.3.39.0" ; NSIS requires X.X.X.X format
!define APP_PUBLISHER "Ch3nyang"
!define APP_URL "https://github.com/DevXDojo/MrRSS"
!define APP_DESCRIPTION "A Modern, Cross-Platform Desktop RSS Reader"
Expand Down
2 changes: 1 addition & 1 deletion build/windows/nsis/wails_tools.nsh
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
!define INFO_PRODUCTNAME "MrRSS"
!endif
!ifndef INFO_PRODUCTVERSION
!define INFO_PRODUCTVERSION "1.3.38"
!define INFO_PRODUCTVERSION "1.3.39"
!endif
!ifndef INFO_COPYRIGHT
!define INFO_COPYRIGHT "Copyright © 2026"
Expand Down
2 changes: 1 addition & 1 deletion build/windows/wails.exe.manifest
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<assemblyIdentity type="win32" name="com.mrrss.app" version="1.3.38.0" processorArchitecture="*"/>
<assemblyIdentity type="win32" name="com.mrrss.app" version="1.3.39.0" processorArchitecture="*"/>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"/>
Expand Down
2 changes: 1 addition & 1 deletion docs/SERVER_MODE/swagger.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
"name": "GPL-3.0",
"url": "https://www.gnu.org/licenses/gpl-3.0.en.html"
},
"version": "1.3.38"
"version": "1.3.39"
},
"host": "localhost:1234",
"basePath": "/api",
Expand Down
Loading
Loading