Skip to content

Releases: GiulioMagini/MeigRSS

v3.0.0

Choose a tag to compare

@GiulioMagini GiulioMagini released this 31 Jul 11:23
  • Conditional requests. ETag and Last-Modified are stored per feed and sent back as If-None-Match and If-Modified-Since. A server with nothing new answers 304 and sends no body at all.
  • Compressed transfers. gzip and Brotli are negotiated and decompressed transparently.
  • Identifiable User-Agent, carrying the application version, so an administrator reading the logs can tell what is knocking.
  • Rate limiting (429). The feed is paused instead of being retried straight away, and when the server states how long to wait through Retry-After, that delay is honoured - both as a number of seconds and as an HTTP date.
  • Gone feeds (410). Paused rather than requested forever.
  • Permanent redirects (301, 308). Followed once, then the feed URL is rewritten to its new address so the detour is not paid again at every update. Temporary redirects leave the stored URL untouched.
  • Accept header declaring the feed formats MeigRSS understands, which avoids servers that hand back the HTML page instead of the feed.
  • No duplicate request when adding a RSS feed. Validating the URL already downloads the RSS feed; that content is now reused when the feed is saved, so adding a feed costs one request instead of two.
  • Feeds that publish the whole article are now used directly. When a feed carries the complete text (RSS content:encoded, Atom content), MeigRSS stores it at import time. The article opens instantly, no request ever reaches the origin site, and it works even on feeds with full text download turned off.
  • Manual full text editing. Expanded articles have a new Edit full text button that turns the article area into an editable box, with Save and Cancel. It is always available - including on feeds with scraping disabled and on articles with no text at all. Closing the article discards unsaved changes. Saving a non-empty text stops automatic scraping for that article, so what you wrote is never silently overwritten; saving an empty text clears the field and lets scraping take over again.
  • AI summaries no longer depend on the scraper. The Generate AI summary button now only requires the article to have a full text, whatever its origin. Previously it stayed greyed out on any feed with full text download disabled, even when the text was there.
  • Show full article is no longer disabled on feeds with scraping turned off.
  • Import a folder of .eml files in one go. A new Folder mode collects every EML in the selected folder and ignores everything else. All the newsletters are imported under the same feed in a single operation, with titles taken from the message subject and falling back to the file name.
  • Result summary. After the import you get counts for newsletters imported and skipped, split by reason: already in the archive, no HTML content, or not recognised as a valid email.
  • Limits per upload: 500 files, 5 MB per file, 100 MB in total.
  • Newsletters in non-UTF-8 encodings are no longer corrupted. EML files are now uploaded as raw bytes instead of text decoded by the browser, so messages whose MIME headers declare ISO-8859-1 or a similar charset keep their accented characters. This affected the single-file import too, and it was permanent: the corrupted text went straight into the database. Newsletters imported with earlier versions are not repaired automatically — re-import them to fix them.
  • Large backups can be restored again. The feed import endpoint accepted at most 2 MB, which a JSON export containing many archived newsletters exceeds easily. The limit is now 256 MB. Since exporting has no limit of its own, a large archive could previously be exported but never imported back.
  • Polling timers are cleared on navigation. Leaving and re-entering the article list left the previous update timer running, so timers accumulated over a session and kept calling the API in parallel.

v2.0.3

Choose a tag to compare

@GiulioMagini GiulioMagini released this 27 Jul 15:56
  • Adding loading screen to import newsletter and export pages

v2.0.2

Choose a tag to compare

@GiulioMagini GiulioMagini released this 26 Jul 15:52
  • Adding loading screen for feed and categories page and cleaning unused variables in FE

v2.0.1

Choose a tag to compare

@GiulioMagini GiulioMagini released this 26 Jul 10:43
  • Set cache of FE static files to "no-cache". The speed of loading pages is quite the same, and solves the problem of using the program, in alternation, in two distinct location (2 program files, 2 databases, 1 browser with cache), or having FE modifications and reload the program with the older cache
  • Set option to cargo compiler to recompile the program when static file are changed. In this way the program puts the new static files into the program even if you are changing only FE files

v2.0.0

Choose a tag to compare

@GiulioMagini GiulioMagini released this 25 Jul 17:19
  • Added support for OPML files: now the program can import and export OPML files (the import works only for feeds, web feeds and categories; favorites and settings are only exportable and importable using JSON files)
  • Added web scraping with GET call from the program: now the user can choose to scrape sites with normal calls or use scraping API like before (when sites returns error 403, or content is loaded with JS into the website)

v1.1.0

Choose a tag to compare

@GiulioMagini GiulioMagini released this 22 Jul 11:03
  • Added /yyyy-mm-dd/slug and /dd-mm-yyyy/slug as formats for web feeds
  • Added gemini 3.6 flash instead gemini 3.5 flash as API

v1.0.1

Choose a tag to compare

@GiulioMagini GiulioMagini released this 21 Jul 12:03
  • Extended date-based URL detection for web feeds

Web feed article detection previously recognized only the /yyyy/mm/dd/slug URL layout with zero-padded numeric dates. A survey of major international publishers showed several other common layouts were being missed, causing valid articles to be skipped during scans.

This release extends the URL matcher to support four date layouts:

/yyyy/mm/dd/slug — zero-padded numeric
/yyyy/m/d/slug — non-padded numeric
/yyyy/mmm/dd/slug — 3-letter English month abbreviation
/yyyymmdd-slug — compact 8-digit date prefixing the slug

Month and day are now normalized to zero-padded numeric form internally, so extracted dates stay consistent (YYYY-MM-DD) regardless of the source layout, and retention handling is unaffected.

The matcher remains dependency-free (no regex crate) and cross-platform. Query strings and fragments are ignored when matching, so tracking parameters no longer produce duplicate articles.

  • Added corrections from cargo clippy and fixing bug of web feed not taken link because using relative urls instead of absolute urls. Now they are all taken correctly.

v1.0.0 - Initial Release

Choose a tag to compare

@GiulioMagini GiulioMagini released this 20 Jul 08:45

First stable release of MeigRSS, an RSS reader built with Rust and Svelte, featuring multi-language content support and AI-powered summarization of feed items.