Browse Source

docs(changelog): update release notes for version 2.2.10

Frédéric Guillot 9 months ago
parent
commit
875618d786
1 changed files with 84 additions and 0 deletions
  1. 84 0
      ChangeLog

+ 84 - 0
ChangeLog

@@ -1,3 +1,87 @@
+Version 2.2.10 (June 23, 2025)
+------------------------------
+
+* test(sanitizer): add unit test for 0x0 pixel tracker
+* test(sanitizer): add test case to cover Vimeo iframe rewrite without query string
+* refactor(youtube): Remove a regex and make use of `fetchWatchTime`
+* refactor(youtube): initialize two maps to the proper length
+* refactor(tests): use `b.Loop()` instead of for range `b.N`
+* refactor(server): avoid double call to `Sprintf`
+* refactor(sanitizer): use global variables to avoid recreating slices on every call
+* refactor(sanitizer): use a map for iframe allow list
+* refactor(sanitizer): remove two useless `www.` prefixes
+* refactor(sanitizer): make `isValidAttribute()` check O(1)
+* refactor(rewrite): rename `Rewriter` function to `ApplyContentRewriteRules`
+* refactor(processor): simplify Bilibili processing
+* refactor(processor): remove a useless type declaration
+* refactor(processor): remove a duplicated function call
+* refactor(processor): refactor common code into a `fetchWatchTime` function
+* refactor(processor): move filters to a `filter` package
+* refactor(processor): move `FilterEntryMaxAgeDays` filter to filter package
+* refactor(processor): move `RewriteEntryURL` function to `rewrite` package
+* refactor(processor): minor simplification of a loop
+* refactor(internal): add an `urllib.DomainWithoutWWW` function
+* refactor(http): rename package from `httpd` to `server` for consistency
+* refactor(http): Don't hardcode TLS configuration
+* refactor(filter): avoid code duplication between `IsBlockedEntry` and `IsAllowedEntry` functions
+* refactor(database): drop 3 columns in a single transaction
+* refactor(crypto): use `rand.Text()` instead of a custom implementation
+* refactor(config): remove deprecated config options
+* refactor(appjs): no need to check if always present elements are always present
+* perf(xml): optimized `NewXMLDecoder`
+* perf(xml): optimize XML filtering
+* perf(validator): slightly optimize a regex
+* perf(timezone): cache `getLocation`'s results
+* perf(storage): pre-allocate a slice in `RefreshFeedEntries`
+* perf(storage): optimize away two `Sprintf` calls
+* perf(sanitizer): use a switch-case instead of a map
+* perf(sanitizer): minor simplifications of the sanitizer
+* perf(sanitizer): extract a call to `url.Parse` and make intensive use of it
+* perf(rss): optimize a bit `BuildFeed`
+* perf(rss): early return when looking for an item's author
+* perf(rewrite): make `getPredefinedRewriteRules` O(1)
+* perf(reader): use a non-cryptographic hash when possible
+* perf(reader): optimize `RemoveTrackingParameters`
+* perf(readability): minor regex improvement
+* perf(media): minor regex simplification
+* perf(fetcher): pre-allocate the cipherSuites
+* perf(database): use `TRUNCATE` instead of `DELETE FROM` in migrations
+* perf(database): marginally speeds migrations up
+* perf(api): use `math/rand/v2` instead of `math/rand` for better performance
+* fix(readability): do not remove elements within code blocks
+* fix(karakeep): correct method name and improve error handling in `SaveURL`
+* fix(filter): skip invalid rules instead of exiting the loop
+* feat(ui): display external link in single entry view because the URL was not visible on mobile (no mouse over)
+* feat(ui): avoid showing an excessive number of tags
+* feat(ui): add user setting to control `target="_blank"` on links
+* feat(sanitizer): validate MathML XML namespace
+* feat(sanitizer): consider images of size 0x0 as pixel trackers
+* feat(sanitizer): add validation for empty `width` and `height` attributes in img tags
+* feat(sanitizer): add support for `fetchpriority` and `decoding` attributes in img tags
+* feat(rewrite): add support for YouTube Shorts video URL pattern
+* feat(rewrite): add `parkablogs.com` to the referer override list
+* feat(oidc): use `preferred_username` first instead of `email` claim
+* feat(locale): update Polish translations
+* feat(locale): update locales using machine translation
+* feat(locale): update Indonesian translations
+* feat(locale): update German translations
+* feat(locale): update Chinese translations
+* feat(integration)!: remove Pocket integration (Pocket will no longer be available after July 8, 2025)
+* feat(filter): add `EntryDate=max-age:duration` filter
+* feat(css): add margin-bottom to input for consistent spacing
+* feat(config)!: remove `SERVER_TIMING_HEADER` config option
+* feat: Allow multiple listen addresses
+* feat: adding support for saving entries to Karakeep
+* feat: add entry filters at the feed level
+* docs(readme): document a couple of nifty features
+* docs: add `CONTRIBUTING.md` file
+* chore(template): remove `X-UA-Compatible` meta tag specific to Internet Explorer
+* build(go): bump to go 1.24
+* build(deps): bump `library/alpine` in `/packaging/docker/alpine`
+* build(deps): bump `golang.org/x/net` from `0.40.0` to `0.41.0`
+* build(deps): bump `golang.org/x/image` from `0.27.0` to `0.28.0`
+* build(deps): bump `golang.org/x/crypto` from `0.38.0` to `0.39.0`
+
 Version 2.2.9 (May 26, 2025)
 ----------------------------