ChangeLog 76 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561
  1. Version 2.1.3 (April 27, 2024)
  2. ------------------------------
  3. * `api`: `rand.Intn(math.MaxInt64)` causes tests to fail on 32-bit architectures (use `rand.Int()` instead)
  4. * `ci`: use `docker/metadata-action` instead of deprecated shell-scripts
  5. * `database`: remove `entries_feed_url_idx` index because entry URLs can exceeds btree index size limit
  6. * `finder`: find feeds from YouTube playlist
  7. * `http/response`: add brotli compression support
  8. * `integration/matrix`: fix function name in comment
  9. * `packaging`: specify container registry explicitly (e.g., Podman does not use `docker.io` by default)
  10. * `packaging`: use `make miniflux` instead of duplicating `go build` arguments (this leverages Go's PIE build mode)
  11. * `reader/fetcher`: add brotli content encoding support
  12. * `reader/processor`: minimize feed entries HTML content
  13. * `reader/rewrite`: add a rule for `oglaf.com`
  14. * `storage`: change `GetReadTime()` function to use `entries_feed_id_hash_key` index
  15. * `ui`: add seek and speed controls to media player
  16. * `ui`: add tag entries page
  17. * `ui`: fix JavaScript error when clicking on unread counter
  18. * `ui`: use `FORCE_REFRESH_INTERVAL` config for category refresh
  19. * Bump `github.com/tdewolff/minify/v2` from `2.20.19` to `2.20.20`
  20. * Bump `golang.org/x/net` from `0.22.0` to `0.24.0`
  21. * Bump `golang.org/x/term` from `0.18.0` to `0.19.0`
  22. * Bump `golang.org/x/oauth2` from `0.18.0` to `0.19.0`
  23. * Bump `github.com/yuin/goldmark` from `1.7.0` to `1.7.1`
  24. Version 2.1.2 (March 30, 2024)
  25. ------------------------------
  26. * `api`: rewrite API integration tests without build tags
  27. * `ci`: add basic ESLinter checks
  28. * `ci`: enable go-critic linter and fix various issues detected
  29. * `ci`: fix JavaScript linter path in GitHub Actions
  30. * `cli`: avoid misleading error message when creating an admin user automatically
  31. * `config`: add `FILTER_ENTRY_MAX_AGE_DAYS` option
  32. * `config`: bump the number of simultaneous workers
  33. * `config`: rename `PROXY_*` options to `MEDIA_PROXY_*`
  34. * `config`: use `crypto.GenerateRandomBytes` instead of doing it by hand
  35. * `http/request`: refactor conditions to be more idiomatic
  36. * `http/response`: remove legacy `X-XSS-Protection` header
  37. * `integration/rssbrige`: fix rssbrige import
  38. * `integration/shaarli`: factorize the header+payload concatenation as data
  39. * `integration/shaarli`: no need to base64-encode then remove the padding when we can simply encode without padding
  40. * `integration/shaarli`: the JWT token was declared as using HS256 as algorithm, but was using HS512
  41. * `integration/webhook`: add category title to request body
  42. * `locale`: update Turkish translations
  43. * `man page`: sort config options in alphabetical order
  44. * `mediaproxy`: reduce the internal indentation of `ProxifiedUrl` by inverting some conditions
  45. * `mediaproxy`: simplify and refactor the package
  46. * `model`: replace` Optional{Int,Int64,Float64}` with a generic function `OptionalNumber()`
  47. * `model`: use struct embedding for `FeedCreationRequestFromSubscriptionDiscovery` to reduce code duplication
  48. * `reader/atom`: avoid debug message when the date is empty
  49. * `reader/atom`: change `if !a { a = } if !a {a = }` constructs into `if !a { a = ; if !a {a = }}` to reduce the number of comparisons and improve readability
  50. * `reader/atom`: Move the population of the feed's entries into a new function, to make BuildFeed easier to understand/separate concerns/implementation details
  51. * `reader/atom`: refactor Atom parser to use an adapter
  52. * `reader/atom`: use `sort+compact` instead of `compact+sort` to remove duplicates
  53. * `reader/atom`: when detecting the format, detect its version as well
  54. * `reader/encoding`: inline a one-liner function
  55. * `reader/handler`: fix force refresh feature
  56. * `reader/json`: refactor JSON Feed parser to use an adapter
  57. * `reader/media`: remove a superfluous error-check: `strconv.ParseInt` returns `0` when passed an empty string
  58. * `reader/media`: simplify switch-case by moving a common condition above it
  59. * `reader/processor`: compile block/keep regex only once per feed
  60. * `reader/rdf`: refactor RDF parser to use an adapter
  61. * `reader/rewrite`: inline some one-line functions
  62. * `reader/rewrite`: simplify `removeClickbait`
  63. * `reader/rewrite`: transform a free-standing function into a method
  64. * `reader/rewrite`: use a proper constant instead of a magic number in `applyFuncOnTextContent`
  65. * `reader/rss`: add support for `<media:category>` element
  66. * `reader/rss`: don't add empty tags to RSS items
  67. * `reader/rss`: refactor RSS parser to use a default namespace to avoid some limitations of the Go XML parser
  68. * `reader/rss`: refactor RSS Parser to use an adapter
  69. * `reader/rss`: remove some duplicated code in RSS parser
  70. * `reader`: ensure that enclosure URLs are always absolute
  71. * `reader`: move iTunes and GooglePlay XML definitions to their own packages
  72. * `reader`: parse podcast categories
  73. * `reader`: remove trailing space in `SiteURL` and `FeedURL`
  74. * `storage`: do not store empty tags
  75. * `storage`: simplify `removeDuplicates()` to use a `sort`+`compact` construct instead of doing it by hand with a hashmap
  76. * `storage`: Use plain strings concatenation instead of building an array and then joining it
  77. * `timezone`: make sure the tests pass when the timezone database is not installed on the host
  78. * `ui/css`: align `min-width` with the other `min-width` values
  79. * `ui/css`: fix regression: "Add to Home Screen" button is unreadable
  80. * `ui/js`: don't use lambdas to return a function, use directly the function instead
  81. * `ui/js`: enable trusted-types
  82. * `ui/js`: fix download button loading label
  83. * `ui/js`: fix JavaScript error on the login page when the user not authenticated
  84. * `ui/js`: inline one-line functions
  85. * `ui/js`: inline some `querySelectorAll` calls
  86. * `ui/js`: reduce the scope of some variables
  87. * `ui/js`: remove a hack for "Chrome 67 and earlier" since it was released in 2018
  88. * `ui/js`: replace `DomHelper.findParent` with `.closest`
  89. * `ui/js`: replace `let` with `const`
  90. * `ui/js`: simplify `DomHelper.getVisibleElements` by using a `filter` instead of a loop with an index
  91. * `ui/js`: use a `Set` instead of an array in a `KeyboardHandler`'s member
  92. * `ui/js`: use some ternaries where it makes sense
  93. * `ui/static`: make use of `HashFromBytes` everywhere
  94. * `ui/static`: set minifier ECMAScript version
  95. * `ui`: add keyboard shortcuts for scrolling to top/bottom of the item list
  96. * `ui`: add media player control playback speed
  97. * `ui`: remove unused variables and improve JSON decoding in `saveEnclosureProgression()`
  98. * `validator`: display an error message on edit feed page when the feed URL is not unique
  99. * Bump `github.com/coreos/go-oidc/v3` from `3.9.0` to `3.10.0`
  100. * Bump `github.com/go-webauthn/webauthn` from `0.10.1` to `0.10.2`
  101. * Bump `github.com/tdewolff/minify/v2` from `2.20.18` to `2.20.19`
  102. * Bump `google.golang.org/protobuf` from `1.32.0` to `1.33.0`
  103. Version 2.1.1 (March 10, 2024)
  104. -----------------------------
  105. * Move search form to a dedicated page
  106. * Add Readeck integration
  107. * Add feed option to disable HTTP/2 to avoid fingerprinting
  108. * Add `Enter` key as a hotkey to open selected item
  109. * Proxify `video` element `poster` attribute
  110. * Add a couple of new possible locations for feeds
  111. * Hugo likes to generate `index.xml`
  112. * `feed.atom` and `feed.rss` are used by enterprise-scale/old-school gigantic CMS
  113. * Fix categories import from Thunderbird's OPML
  114. * Fix logo misalignment when using languages that are more verbose than English
  115. * Google Reader: Do not return a 500 error when no items is returned
  116. * Handle RDF feeds with duplicated `<title>` elements
  117. * Sort integrations alphabetically
  118. * Add more URL validation in media proxy
  119. * Add unit test to ensure each translation has the correct number of plurals
  120. * Add missing plurals for some languages
  121. * Makefile: quiet `git describe` and `rev-parse` stderr: When building from a tarball instead of a cloned git repo, there would be two `fatal: not a git repository` errors emitted even though the build succeeds. This is because of how `VERSION` and `COMMIT` are set in the Makefile. This PR suppresses the stderr for these variable assignments.
  122. * Makefile: do not force `CGO_ENABLED=0` for `miniflux` target
  123. * Add GitHub Action pipeline to build packages on-demand
  124. * Remove Golint (deprecated), use `staticcheck` and `golangci-lint` instead
  125. * Build amd64/arm64 Debian packages with CGO disabled
  126. * Update `go.mod` and add `.exe` suffix to Windows binary
  127. * Add a couple of fuzzers
  128. * Fix CodeQL workflow
  129. * Code and performance improvements:
  130. * Use an `io.ReadSeeker` instead of an `io.Reader` to parse feeds
  131. * Speed up the sanitizer:
  132. - Allow Youtube URLs to start with `www`
  133. - Use `strings.Builder` instead of a `bytes.Buffer`
  134. - Use a `strings.NewReader` instead of a `bytes.NewBufferString`
  135. - Sprinkles a couple of `continue` to make the code-flow more obvious
  136. - Inline calls to `inList`, and put their parameters in the right order
  137. - Simplify `isPixelTracker`
  138. - Simplify `isValidIframeSource`, by extracting the hostname and comparing it directly, instead of using the full url and checking if it starts with multiple variations of the same one (`//`, `http:`, `https://` multiplied by `/www.`)
  139. - Add a benchmark
  140. - Instead of having to allocate a ~100 keys map containing possibly dynamic values (at least to the go compiler), allocate it once in a global variable. This significantly speeds things up, by reducing the garbage
  141. - Use constant time access for maps instead of iterating on them
  142. - Build a ~large whitelist map inline instead of constructing it item by item (and remove a duplicate key/value pair)
  143. - Use `slices` instead of hand-rolled loops
  144. collector/allocator involvements.
  145. * Reuse a `Reader` instead of copying to a buffer when parsing an Atom feed
  146. * Preallocate memory when exporting to OPML: This should marginally increase performance when exporting a large amount of feeds to OPML
  147. * Delay call of `view.New` after logging the user in: There is no need to do extra work like creating a session and its associated view until the user has been properly identified and as many possibly-failing sql request have been successfully run
  148. * Use constant-time comparison for anti-csrf tokens: This is probably completely overkill, but since anti-csrf tokens are secrets, they should be compared against untrusted inputs in constant time
  149. * Simplify and optimize `genericProxyRewriter`
  150. - Reduce the amount of nested loops: it's preferable to search the whole page once and filter on it (even with filters that should always be false), than searching it again for every element we're looking for.
  151. - Factorize the proxying conditions into a `shouldProxy` function to reduce the copy-pasta.
  152. * Speed up `removeUnlikelyCandidates`: `.Not` returns a brand new `Selection`, copied element by element
  153. * Improve `EstimateReadingTime`'s speed by a factor 7
  154. - Refactorise the tests and add some
  155. - Use 250 signs instead of the whole text
  156. - Only check for Korean, Chinese and Japanese script
  157. - Add a benchmark
  158. - Use a more idiomatic control flow
  159. * Don't compute reading-time when unused: If the user doesn't display reading times, there is no need to compute them. This should speed things up a bit, since `whatlanggo.Detect` is abysmally slow.
  160. * Simplify `username` generation for the integration tests: No need to generate random numbers 10 times, generate a single big-enough one. A single int64 should be more than enough
  161. * Add missing regex anchor detected by CodeQL
  162. * Don't mix up slices capacity and length
  163. * Use prepared statements for intervals, `ArchiveEntries` and `updateEnclosures`
  164. * Use modern for-loops introduced with Go 1.22
  165. * Remove a superfluous condition: No need to check if the length of `line` is positive since we're checking afterwards that it contains the `=` sign
  166. * Close resources as soon as possible, instead of using `defer()` in a loop
  167. * Remove superfluous escaping in a regex
  168. * Use `strings.ReplaceAll` instead of `strings.Replace(…, -1)`
  169. * Use `strings.EqualFold` instead of `strings.ToLower(…) ==`
  170. * Use `.WriteString(` instead of `.Write([]byte(…`
  171. * Use `%q` instead of `"%s"`
  172. * Make `internal/worker/worker.go` read-only
  173. * Use a switch-case construct in `internal/locale/plural.go` instead of an avalanche of `if`
  174. * Template functions: simplify `formatFileSize` and `duration` implementation
  175. * Inline some templating functions
  176. * Make use of `printer.Print` when possible
  177. * Add a `printer.Print` to `internal/locale/printer.go`: No need to use variadic functions with string format interpolation to generate static strings
  178. * Minor code simplification in `internal/ui/view/view.go`: No need to create the map item by item when we can create it in one go
  179. * Build the map inline in `CountAllFeeds()`: No need to build an empty map to then add more fields in it one by one
  180. * Miscellaneous improvements to `internal/reader/subscription/finder.go`:
  181. - Surface `localizedError` in `FindSubscriptionsFromWellKnownURLs` via `slog`
  182. - Use an inline declaration for new subscriptions, like done elsewhere in the
  183. file, if only for consistency's sake
  184. - Preallocate the `subscriptions` slice when using an RSS-bridge,
  185. * Use an update-where for `MarkCategoryAsRead` instead of a subquery
  186. * Simplify `CleanOldUserSessions`' query: No need for a subquery, filtering on `created_at` directly is enough
  187. * Simplify `cleanupEntries`' query
  188. - `NOT (hash=ANY(%4))` can be expressed as `hash NOT IN $4`
  189. - There is no need for a subquery operating on the same table, moving the conditions out is equivalent.
  190. * Reformat `ArchiveEntries`'s query for consistency's sake and replace the `=ANY` with an `IN`
  191. * Reformat the query in `GetEntryIDs` and `GetReadTime`'s query for consistency's sake
  192. * Simplify `WeeklyFeedEntryCount`: No need for a `BETWEEN`: we want to filter on entries published in the last week, no need to express is as "entries published between now and last week", "entries published after last week" is enough
  193. * Add some tests for `add_image_title`
  194. * Remove `github.com/google/uuid` dependencies: Replace it with a hand-rolled implementation. Heck, an UUID isn't even a requirement according to Omnivore API docs
  195. * Simplify `internal/reader/icon/finder.go`:
  196. - Use a simple regex to parse data uri instead of a hand-rolled parser, and document what fields are considered mandatory.
  197. - Use case-insensitive matching to find (fav)icons, instead of doing the same query twice with different letter cases
  198. - Add `apple-touch-icon-precomposed.png` as a fallback `favicon`
  199. - Reorder the queries to have `icon` first, since it seems to be the most popular one. It used to be last, meaning that pages had to be parsed completely 4 times, instead of one now.
  200. - Minor factorisation in `findIconURLsFromHTMLDocument`
  201. * Small refactoring of `internal/reader/date/parser.go`:
  202. - Split dates formats into those that require local times and those who don't, so that there is no need to have a switch-case in the for loop with around 250 iterations at most.
  203. - Be more strict when it comes to timezones, previously invalid ones like -13 were accepted. Also add a test for this.
  204. - Bail out early if the date is an empty string.
  205. * Make use of Go ≥ 1.21 slices package instead of hand-rolled loops
  206. * Reorder the fields of the `Entry` struct to save some memory
  207. * Dependencies update:
  208. * Bump `golang.org/x/oauth2` from `0.17.0` to `0.18.0`
  209. * Bump `github.com/prometheus/client_golang` from `1.18.0` to `1.19.0`
  210. * Bump `github.com/tdewolff/minify/v2` from `2.20.16` to `2.20.18`
  211. * Bump `github.com/PuerkitoBio/goquery` from `1.8.1` to `1.9.1`
  212. * Bump `golang.org/x/crypto` from `0.19.0` to `0.20.0`
  213. * Bump `github.com/go-jose/go-jose/v3` from `3.0.1` to `3.0.3`
  214. Version 2.1.0 (February 17, 2024)
  215. ---------------------------------
  216. * Add Linkwarden integration
  217. * Add LinkAce integration
  218. * Add `FORCE_REFRESH_INTERVAL` config option
  219. * Add `item-meta-info-reading-time` CSS class
  220. * Add `add_dynamic_iframe` rewrite function
  221. * Add attribute `data-original-mos` to `add_dynamic_image` rewrite candidates
  222. * Update entry processor to allow blocking/keeping entries by tags and/or authors
  223. * Change default `Accept` header when fetching feeds
  224. * Rewrite relative RSS Bridge URL to absolute URL
  225. * Use numeric user ID in Alpine and distroless container image (avoid `securityContext` error in Kubernetes)
  226. * Always try to use HTTP/2 when fetching feeds if available
  227. * Add `type` attribute in OPML export as per OPML 2.0 specs
  228. * Fix missing translation argument for the key `error.unable_to_parse_feed`
  229. * Fix Debian package builder when using Go 1.22 and `armhf` architecture
  230. * Fix typo in log message
  231. * Fix incorrect label shown when saving an article
  232. * Fix incorrect condition in refresh feeds cli
  233. * Fix incorrect label `for` attribute
  234. * Add missing label ID for custom CSS field
  235. * Accessibility improvements:
  236. * Add workaround for macOS VoiceOver that didn't announce `details` and `summary` when expanded
  237. * Add `alert` role to alert message element
  238. * Add a `h2` heading to the article element so that the screen reader users can navigate the article through the heading level
  239. * Add an `aria-label` attribute for the article element for screen readers
  240. * Remove the icon image `alt` attribute in feeds list to prevent screen reader to announce it before entry title
  241. * Add `sr-only` CSS class for screen reader users (provides more context)
  242. * Differentiate between buttons and links
  243. * Change links that could perform actions to buttons
  244. * Improve translation of hidden Aria elements
  245. * Remove the redundant article role
  246. * Add a search landmark for the search form so that the screen reader users can navigate to it
  247. * Add skip to content link
  248. * Add `nav` landmark to page header links
  249. * Limit feed/category entry pagination to unread entries when coming from unread entry list
  250. * Update German translation
  251. * Update GitHub Actions to Go 1.22
  252. * Bump `golang.org/x/term` from `0.16.0` to `0.17.0`
  253. * Bump `github.com/google/uuid` from `1.5.0` to `1.6.0`
  254. * Bump `github.com/yuin/goldmark` from `1.6.0` to `1.7.0`
  255. * Bump `golang.org/x/oauth2` from `0.15.0` to `0.17.0`
  256. * Bump `github.com/tdewolff/minify/v2` from `2.20.10` to `2.20.12`
  257. * Bump `golang.org/x/term` from `0.15.0` to `0.16.0`
  258. * Bump `github.com/prometheus/client_golang` from `1.17.0` to `1.18.0`
  259. * Bump `github.com/tdewolff/minify/v2` from `2.20.9` to `2.20.16`
  260. * Bump `golang.org/x/crypto` from `0.16.0` to `0.19.0`
  261. * Bump `github.com/go-webauthn/webauthn` from `0.9.4` to` 0.10.1`
  262. * Bump `golang.org/x/net` from `0.20.0` to `0.21.0`
  263. Version 2.0.51 (December 13, 2023)
  264. ----------------------------------
  265. * Add Omnivore integration
  266. * Fixes for the regressions introduced in version 2.0.50:
  267. * Ensure all HTML documents are encoded in UTF-8
  268. * Send default User-Agent and HTTP caching headers when making HTTP requests
  269. * Allow Youtube links to be opened outside the `iframe` (avoid `ERR_BLOCKED_BY_RESPONSE` error)
  270. * Fix inaccessible metrics endpoint when listening on Unix socket
  271. * Allow renaming and moving feed at the same time in the Google Reader API
  272. * Log `nb_jobs` only when number of jobs is larger than 0 in background scheduler
  273. * Deduplicate feed URLs when parsing HTML document during discovery process
  274. * Calculate a virtual weekly count based on the average updating frequency (`POLLING_SCHEDULER=entry_frequency`)
  275. * Update GitHub Actions workflow to be able to run the linter and tests on-demand
  276. * Add `SCHEDULER_ROUND_ROBIN_MIN_INTERVAL` config option
  277. * Add links to GitHub for the commit hash and the version in the about page
  278. * Use "starred" rather than "bookmarked" in English translation
  279. * Update Chinese (CN & TW) translation
  280. * Bump `github.com/google/uuid` from `1.4.0` to `1.5.0`
  281. * Bump `github.com/coreos/go-oidc/v3` from `3.7.0` to `3.9.0`
  282. * Bump `github.com/tdewolff/minify/v2` from `2.20.6` to `2.20.9`
  283. * Bump `github.com/go-webauthn/webauthn` from `0.8.6` to `0.9.4`
  284. * Bump `golang.org/x/oauth2` from `0.14.0` to `0.15.0`
  285. Version 2.0.50 (November 12, 2023)
  286. ----------------------------------
  287. * Add WebAuthn / Passkey integration
  288. * Add RSS-Bridge integration
  289. * Take RSS TTL field into consideration to schedule next check date
  290. * Show number of visible entries instead of number of read entries in feed list
  291. * OpenID Connect: Redirect to configured user home page after successful authentication
  292. * Google Reader API fixes:
  293. * `user/{userID}/state/com.google/read` is missing in categories section for read entries
  294. * Take `ExcludeTargets` into consideration in feed stream handler
  295. * Allow iframes pointing to Twitch videos
  296. * Filter feed entries based on URL or title
  297. * Take into consideration `hide_globally` property defined for categories in `/v1/entries` API endpoint
  298. * Add category ID to webhooks request body
  299. * Update date parser to parse more invalid date formats
  300. * Refactor feed discovery handler, and avoid an extra HTTP request if the URL provided is the feed
  301. * Refactor HTTP Client and `LocalizedError` packages
  302. * Refactor Batch Builder, and prevent accidental and excessive refreshes from the web UI
  303. * Refactor icon finder:
  304. - Continue the discovery process when the feed icon is invalid
  305. - Search all icons from the HTML document and do not stop on the first one
  306. * Add support for SVG icons with data URL without encoding
  307. * Expose `next_check_at` in the web ui and API
  308. * Add database indexes to improve performance
  309. * Change log level to warning for failed feeds refresh in cronjob
  310. * Do not log website without icon as warning
  311. * Add GitHub workflow to build binaries
  312. * Add GitHub extensions to devcontainer
  313. * Make sure to pull the latest base image when building the Docker image
  314. * Strip version prefix when building Debian package
  315. * Add `github-cli` and `docker-outside-of-docker` features to devcontainer
  316. * Bump `golang.org/x/*` dependencies
  317. * Bump `github.com/gorilla/mux` from `1.8.0` to `1.8.1`
  318. * Bump `github.com/tdewolff/minify/v2` from `2.19.9` to `2.20.6`
  319. * Bump `github.com/yuin/goldmark` from `1.5.6` to `1.6.0`
  320. * Bump `github.com/coreos/go-oidc/v3` from `3.6.0` to `3.7.0`
  321. Version 2.0.49 (October 15, 2023)
  322. ---------------------------------
  323. * Implement structured logging using `log/slog` package. New config options available:
  324. * `LOG_FORMAT`: `json` or `text`
  325. * `LOG_LEVEL`: `debug`, `info`, `warning`, or `error`
  326. * `LOG_FILE`: `sdterr`, `stdout`, or a file path
  327. * The `DEBUG` option is now deprecated in favor of `LOG_LEVEL`
  328. * API Improvements:
  329. * Add endpoint `/v1/version`
  330. * Add endpoint `PUT /v1/entries` to update entry title and content
  331. * Add endpoint `/v1/icons/{iconID}`
  332. * Add endpoint `/v1/flush-history` to flush history
  333. * Make the category optional when creating feeds for API clients who don't support categories
  334. * Add enclosures to `GET /v1/entries` endpoint
  335. * Add `published_after`, `published_before`, `changed_after` and `changed_before` options to `/v1/entries` endpoint
  336. * Telegram integration improvements:
  337. * Replace feed HTML link with a button to avoid page preview issues
  338. * Add the possibility to disable buttons
  339. * Add Bruno Miniflux API collection in `contrib` folder (Bruno is an open source alternative to Postman/Insomnia)
  340. * Add command line argument to export user feeds as OPML
  341. * Add new rewrite rules `add_hn_links_using_hack` and `add_hn_links_using_opener` to open HN comments with iOS apps
  342. * Fix timestamp format for `Expires` response header
  343. * Fix Javascript error when reading time option is disabled
  344. * Fix Apprise logic to handle feed service URLs
  345. * Fix missing word in force refresh message
  346. * Remove deprecated `PreferServerCipherSuites` TLS option
  347. * Replace `github.com/rylans/getlang` with `github.com/abadojack/whatlanggo` because `getlang` doesn't seems to be updated anymore
  348. * Bump `github.com/mccutchen/go-httpbin/v2` from `2.11.0` to `2.11.1`
  349. * Bump `golang.org/x/*` dependencies
  350. Version 2.0.48 (September 15, 2023)
  351. -----------------------------------
  352. * Add generic webhook integration
  353. * Send webhook events when new entries are detected
  354. * Send wehbook events when saving an entry
  355. * Sign the outgoing requests with HMAC-SHA256
  356. * Improve Telegram integration
  357. * Add built-in Telegram client
  358. * Remove dependency on `go-telegram-bot-api` library
  359. * Add new options:
  360. * Optional topic ID
  361. * Disable page preview
  362. * Disable notifications
  363. * Add new button to go to article
  364. * Improve Matrix integration
  365. * Add built-in Matrix client
  366. * Remove dependency on `gomatrix` library
  367. * Send HTML formatted messages to Matrix
  368. * OpenID Connect authentication improvements:
  369. * Add OAuth2 PKCE support
  370. * Add `profile` scope to OIDC integration to support accounts without email address
  371. * Prevent empty username when using the OIDC integration
  372. * Add `factor` for `entry_frequency` scheduler:
  373. * Allow the user to increase the frequency of the `entry_frequency`
  374. scheduler by a configurable factor in order to shorten the time between
  375. updates.
  376. * Fix: status bar is unreadable when using PWA in dark mode on Firefox Android
  377. * Group form fields into fieldsets to improve page layout
  378. * Update Russian translation
  379. * Make sure icon URLs are always absolute
  380. * Add Apprise service URLs per feed
  381. * Trim `username` and `password` form fields
  382. * Strip HTML tags from DublinCore Creator tags
  383. * Fix scroll up behavior on Firefox Android
  384. * Add missing `return` statement in `fetchContent` UI handler
  385. * Add `replace_title` rewrite rule to adjust entry titles
  386. * Fix Pocket integration redirect URL and Google Reader API HREF
  387. * Fix feed `hide_globally` property to use it with third-party clients.
  388. Version 2.0.47 (August 20, 2023)
  389. --------------------------------
  390. * Update rules for `webtoons.com`
  391. * Use HTTP client from the standard library for third-party integrations
  392. * Rename internal `url` package to `urllib` to avoid overlap with `net/url`
  393. * Add Shaarli integration
  394. * Add Shiori integration
  395. * Add Apprise integration
  396. * Add Readwise Reader integration
  397. * Consider base path when generating third-party services API endpoint
  398. * Use podcast duration tag as reading time
  399. * Move internal packages to an `internal` folder
  400. * For reference: <https://go.dev/doc/go1.4#internalpackages>
  401. * Rename Miniflux package name to follow Go module naming convention
  402. * For reference: <https://go.dev/ref/mod#major-version-suffixes>
  403. * Update RockyLinux image from 8 to 9 (used to build RPM package)
  404. * Add force refresh in feed edit and feed entries page
  405. * Use Odysee video duration as read time
  406. * Upgrade to Go 1.21
  407. * Use details disclosure element to show the list of third-party services
  408. * Use Web Share API for sharing entry
  409. * Add a workaround for parsing some invalid date format
  410. * Add Thunder Client API collection into contrib folder
  411. * Add new API endpoint: `/entries/{entryID}/save`
  412. * Trigger Docker and packages workflows only for semantic tags
  413. * Go module versioning expect Git tags to start with the letter v.
  414. * The goal is to keep the existing naming convention for generated artifacts and
  415. have proper versioning for the Go module.
  416. * Bump `golang.org/x/*` dependencies
  417. * Bump `github.com/yuin/goldmark`
  418. * Bump `github.com/tdewolff/minify/v2`
  419. * Bump `github.com/mccutchen/go-httpbin/v2`
  420. Version 2.0.46 (July 21, 2023)
  421. ------------------------------
  422. * Add scraper and rewrite rules for Webtoons
  423. * Fix regression in integration page and simplify SQL query
  424. * Wallabag integration: add more information in log messages
  425. * Add support for custom Youtube embed URL
  426. * Fix accessibility issues in modal component
  427. * Fix modal aria role
  428. * Trap focusing with tab / shift+tab inside the modal
  429. * Restore keyboard focus when closing modal
  430. * Automatically move keyboard focus to first focusable element unless specified otherwise
  431. * Keyboard shortcut help modal: move keyboard focus to modal title
  432. * Keyboard shortcut help modal: change close control from link to button
  433. * Add Notion integration
  434. * Update `golang.org/x/*` dependencies and `go-oidc` to v3.6.0
  435. * Improve responsive design
  436. * Add user setting for marking entry as read on view
  437. * Improve Russian translation
  438. * Add the possibility to run cleanup tasks from the command line
  439. * Add the possibility to run Miniflux as a cronjob
  440. * Use `go-httpbin` to run tests locally and avoid remote calls to `httpbin.org`
  441. * Display tags when viewing entries
  442. * Update categories API endpoint to return `total_unread` and `feed_count`
  443. * Improve date parser to handle various broken date formats
  444. * Avoid `pq: time zone displacement out of range` errors
  445. * Improve entry existance check to make better use of index
  446. * Add unique index `enclosures_user_entry_url_idx`
  447. * Add mark as unread for Linkding integration
  448. * Add sub-folder support for Wallabag integration
  449. * Use RockyLinux to build RPM package
  450. * Disable CGO when building RPM package
  451. * Disable CGO when building Docker images
  452. Version 2.0.45 (June 21, 2023)
  453. ------------------------------
  454. * Add media player to listen to audio and video podcasts with the possiblity to resume to last playback position
  455. * Add default tag names for Linkding integration
  456. * Mark only globally visible entries when marking all entries from UI
  457. * Use image included in feed as feed icon when available
  458. * Order history by `changed_at` and `published_at`
  459. * Remove title attribute from entry title links
  460. * Fix reading time that is not aligned correctly with the latest version of Safari
  461. * Use glyphs of the same size on keyboard shortcuts page
  462. * Add maskable versions of the PWA icon
  463. * Replace copyright header with SPDX identifier
  464. * Remove the "í" letter from the Portuguese "lido" word
  465. * Increase golangci-lint timeout value
  466. * Bump `github.com/tdewolff/minify/v2`, `github.com/prometheus/client_golang`, `golang.org/x/*` dependencies
  467. Version 2.0.44 (May 6, 2023)
  468. ----------------------------
  469. * Add link to the URL rewrite rules documentation
  470. * Update scraping rules for `ilpost.it`
  471. * Update rewrite rules for `theverge.com`
  472. * Add a rewrite rule to remove clickbait titles
  473. * Make sure `PROXY_IMAGES` option is backward compatible with `PROXY_OPTION` and `PROXY_MEDIA_TYPES`
  474. * Add new rule to remove tables
  475. * Add support for searching well-known URLs in subdirectory
  476. * Add CSS `word-wrap` rule to break very long entry title into multiple lines
  477. * Add swipe as option for gesture navigation between entries. There are now 3 possible choices: `none`, `double-tap`, and `swipe`.
  478. * Prefer typographic punctuation in English translation
  479. * Process older entries first:
  480. - Feed entries are usually ordered from most to least recent.
  481. - Processing older entries first ensures that their creation timestamp
  482. is lower than that of newer entries.
  483. - This is useful when we order by creation, because then we get a
  484. consistent timeline.
  485. * Fix Grafana dashboard
  486. * Push Docker images to `Quay.io` (RedHat)
  487. * Bump `golang.org/x/*`, `github.com/lib/pq`, `mvdan.cc/xurls/v2` and `github.com/prometheus/client_golang` dependencies
  488. Version 2.0.43 (March 16, 2023)
  489. -------------------------------
  490. * Avoid XSS when opening a broken image due to unescaped ServerError in proxy handler (CVE-2023-27592)
  491. Creating an RSS feed item with the inline description containing an `<img>` tag
  492. with a `srcset` attribute pointing to an invalid URL like
  493. `http:a<script>alert(1)</script>`, we can coerce the proxy handler into an error
  494. condition where the invalid URL is returned unescaped and in full.
  495. This results in JavaScript execution on the Miniflux instance as soon as the
  496. user is convinced to open the broken image.
  497. * Use `r.RemoteAddr` to check `/metrics` endpoint network access (CVE-2023-27591)
  498. HTTP headers like `X-Forwarded-For` or `X-Real-Ip` can be easily spoofed. As
  499. such, it cannot be used to test if the client IP is allowed.
  500. The recommendation is to use HTTP Basic authentication to protect the
  501. metrics endpoint, or run Miniflux behind a trusted reverse-proxy.
  502. * Add HTTP Basic authentication for `/metrics` endpoint
  503. * Add proxy support for several media types
  504. * Parse feed categories from RSS, Atom and JSON feeds
  505. * Ignore empty link when discovering feeds
  506. * Disable CGO explicitly to make sure the binary is statically linked
  507. * Add CSS classes to differentiate between category/feed/entry view and icons
  508. * Add rewrite and scraper rules for `blog.cloudflare.com`
  509. * Add `color-scheme` to themes
  510. * Add new keyboard shortcut to toggle open/close entry attachments section
  511. * Sanitizer: allow `id` attribute in `<sup>` element
  512. * Add Indonesian Language
  513. * Update translations
  514. * Update Docker Compose examples:
  515. - Run the application in one command
  516. - Bring back the health check condition to `depends_on`
  517. - Remove deprecated `version` element
  518. * Update scraping rules for `ilpost.it`
  519. * Bump `github.com/PuerkitoBio/goquery` from `1.8.0` to `1.8.1`
  520. * Bump `github.com/tdewolff/minify/v2` from `2.12.4` to `2.12.5`
  521. * Bump `github.com/yuin/goldmark` from `1.5.3` to `1.5.4`
  522. * Bump `golang.org/x/*` dependencies
  523. Version 2.0.42 (January 29, 2023)
  524. ---------------------------------
  525. * Fix header items wrapping
  526. * Add option to enable or disable double tap
  527. * Improve PWA display mode label in settings page
  528. * Bump `golang.org/x/*` dependencies
  529. * Update translations
  530. * Add scraping rule for `ilpost.it`
  531. * Update reading time HTML element after fetching the original web page
  532. * Add category feeds refresh feature
  533. Version 2.0.41 (December 10, 2022)
  534. ----------------------------------
  535. * Reverted PR #1290 (follow the only link) because it leads to several panics/segfaults that prevent feed updates
  536. * Disable double-tap mobile gesture if swipe gesture is disabled
  537. * Skip integrations if there are no entries to push
  538. * Enable TLS-ALPN-01 challenge for ACME
  539. - This type of challenge works purely at the TLS layer and is compatible
  540. with SNI proxies. The existing HTTP-01 challenge support has been left
  541. as-is.
  542. * Preconfigure Miniflux for GitHub Codespaces
  543. * Updated `golang.org/x/net/*` dependencies
  544. Version 2.0.40 (November 13, 2022)
  545. ----------------------------------
  546. * Update dependencies
  547. * Pin Postgres image version in Docker Compose examples to avoid unexpected upgrades
  548. * Make English and Spanish translation more consistent:
  549. - Use "Feed" everywhere instead of "Subscription"
  550. - Use "Entry" instead of "Article"
  551. * Allow Content-Type and Accept headers in CORS policy
  552. * Use dirs file for Debian package
  553. * Use custom home page in PWA manifest
  554. * Fix scraper rule that could be incorrect when there is a redirect
  555. * Improve web scraper to fetch the only link present as workaround to some landing pages
  556. * Add Matrix bot integration
  557. * Proxify images in API responses
  558. * Add new options in user preferences to configure sorting of entries in the category page
  559. * Remove dependency on `github.com/mitchellh/go-server-timing`
  560. * Add support for the `continuation` parameter and result for Google Reader API ID calls
  561. * Use automatic variable for build target file names
  562. * Add rewrite rule for `recalbox.com`
  563. * Improve Dutch translation
  564. Version 2.0.39 (October 16, 2022)
  565. ---------------------------------
  566. * Add support for date filtering in Google Reader API item ID calls
  567. * Handle RSS entries with only a GUID permalink
  568. * Go API Client: Accept endpoint URLs ending with `/v1/`
  569. * CORS API headers: Allow `Basic` authorization header
  570. * Log feed URL when submitting a subscription that returns an error
  571. * Update `make run` command to execute migrations automatically
  572. * Add option to send only the URL to Wallabag
  573. * Do not convert anchors to absolute links
  574. * Add config option to use a custom image proxy URL
  575. * Allow zoom on mobile devices
  576. * Add scraping rules for `theverge.com`, `royalroad.com`, `swordscomic.com`, and `smbc-comics.com`
  577. * Add Ukrainian translation
  578. * Update `golang.org/x/*` dependencies
  579. * Bump `github.com/tdewolff/minify/v2` from `2.12.0` to `2.12.4`
  580. * Bump `github.com/yuin/goldmark` from `1.4.13` to `1.5.2`
  581. * Bump `github.com/lib/pq` from `1.10.6` to `1.10.7`
  582. Version 2.0.38 (August 13, 2022)
  583. --------------------------------
  584. * Rename default branch from master to main
  585. * Update GitHub Actions
  586. * Bump `github.com/prometheus/client_golang` from `1.12.2` to `1.13.0`
  587. * Fix some linter issues
  588. * Handle Atom links with a text/html type defined
  589. * Add `parse_markdown` rewrite function
  590. * Build RPM and Debian packages automatically using GitHub Actions
  591. * Add `explosm.net` scraper rule
  592. * Make default home page configurable
  593. * Add title attribute to entry links because text could be truncated
  594. * Highlight categories with unread entries
  595. * Allow option to order by title and author in API entry endpoint
  596. * Update Russian translation
  597. * Make reading speed user-configurable
  598. * Added translation for Hindi language used in India
  599. * Add rewrite rules for article URL before fetching content
  600. * Bump `github.com/tdewolff/minify/v2` from `2.11.7` to `2.12.0`
  601. * Support other repo owners in GitHub Docker Action
  602. * Proxify empty URL should not crash
  603. * Avoid stretched image if specified width is larger than Miniflux's layout
  604. * Add support for OPML files with several nested outlines
  605. * sanitizer: handle image URLs in `srcset` attribute with comma
  606. * Allow `width` and `height` attributes for `img` tags
  607. * Document that `-config-dump` command line argument shows sensitive info
  608. * Add System-V init service in contrib folder
  609. * Fix syntax error in `RequestBuilder.getCsrfToken()` method
  610. Version 2.0.37 (May 27, 2022)
  611. -----------------------------
  612. * Add rewrite rule to decode base64 content
  613. * Add Linkding integration
  614. * Add comment button to Telegram message
  615. * Add API endpoint to fetch unread and read counters
  616. * Fixes logic bug in Google Reader API sanity check
  617. * Reduce number of CORS preflight check to save network brandwidth
  618. * Add Espial integration
  619. * Allow API search for entries which are not starred
  620. * Try to use outermost element text when title is empty
  621. * Make swipe gestures feel more natural
  622. - Removes opacity transition when swiping an article read/unread
  623. - Adds "resistance" to the swiped entry when the 75px threshold is
  624. reached
  625. - Fixes an issue in which a swiped article couldn't be moved <15px
  626. * Add support for feed streams to Google Reader API IDs API
  627. * Fix invalid parsing of icon data URL
  628. * Add Traditional Chinese translation
  629. * Add distroless Docker image variant
  630. * Add Go 1.18 to GitHub Action
  631. * Bump `github.com/tdewolff/minify/v2` from `2.10.0` to `2.11`
  632. * Bump `github.com/prometheus/client_golang` from `1.12.1` to `1.12.2`
  633. * Bump `github.com/lib/pq` from `1.10.4` to `1.10.6`
  634. Version 2.0.36 (March 8, 2022)
  635. ------------------------------
  636. * Gray out pagination buttons when they are not applicable
  637. * Use truncated entry description as title if unavailable
  638. * Do not fallback to InnerXML if XHTML title is empty
  639. * Add `+` keyboard shortcut for new subscription page
  640. * Add `(+)` action next to Feeds to quickly add new feeds
  641. * Fix unstar not working via Google Reader API
  642. * Remove circles in front of page header list items
  643. * Fix CSS hover style for links styled as buttons
  644. * Avoid showing `undefined` when clicking on read/unread
  645. * Add new keyboard shortcut `M` to toggle read/unread, and go to previous item
  646. * Add several icons to menus according to their roles
  647. * Add missing event argument to `onClick()` function call
  648. * Add links to scraper/rewrite/filtering docs when editing feeds
  649. * Add a rewrite rule for Castopod episodes
  650. * Fix regression: reset touch-item if not in `/unread` page
  651. * Add API endpoint to fetch original article
  652. * Show the category first in feed settings
  653. * Add pagination on top of all entries
  654. * Display Go version in "About" page
  655. * Bump `mvdan.cc/xurls/v2` from 2.3.0 to 2.4.0
  656. * Bump `github.com/prometheus/client_golang` from 1.11.0 to 1.12.1
  657. * Bump `github.com/tdewolff/minify/v2` from 2.9.28 to 2.10.0
  658. Version 2.0.35 (January 21, 2022)
  659. ---------------------------------
  660. * Set `read-all` permission to `GITHUB_TOKEN` for GitHub Actions
  661. * Pin `jshint` version in linter job
  662. * Fix incorrect conversion between integer types
  663. * Add new GitHub Actions workflows: CodeQL and Scorecards analysis
  664. * Handle Atom feeds with space around CDATA
  665. * Bump `github.com/tdewolff/minify/v2` from 2.9.22 to 2.9.28
  666. * Add Documentation directive to Systemd service
  667. * Do not reset `touch-item` if successfully swiped
  668. * Add support for multiple authors in Atom feeds
  669. * Omit `User-Agent` header in image proxy to avoid being blocked
  670. * Use custom feed user agent to fetch website icon
  671. * Make default Invidious instance configurable
  672. * Add new rewrite rule `add_youtube_video_from_id` to add Youtube videos in Quanta articles
  673. * Add scrape and rewrite rules for `quantamagazine.org`
  674. * Expose entry unshare link in the entry and list views
  675. * Add Google Reader API implementation (experimental)
  676. * Add `Content-Security-Policy` header to feed icon and image proxy endpoints
  677. - SVG images could contain Javascript. This CSP blocks inline script.
  678. - Feed icons are served using `<img>` tag and Javascript is not interpreted.
  679. * Add Finnish translation
  680. * Add scraper rule for `ikiwiki.iki.fi`
  681. * Remove `SystemCallFilter` from `miniflux.service`
  682. * Fix minor typo in French translation
  683. Version 2.0.34 (December 16, 2021)
  684. ----------------------------------
  685. * Add rewrite rule for comics website http://monkeyuser.com
  686. * Add `<head>` tag to OPML export
  687. * Tighten Systemd sandboxing and update comments in `miniflux.service`
  688. * Add `RuntimeDirectory` to Systemd service
  689. * Order disabled feeds at the end of the list
  690. * Add support for theme color based on preferred color scheme of OS
  691. * Bump `github.com/lib/pq` from 1.10.3 to 1.10.4
  692. * Bump `github.com/PuerkitoBio/goquery` from 1.7.1 to 1.8.0
  693. * Fix typos in `model/icon.go`
  694. * Add `data-srcset` support to `add_dynamic_image rewrite` rewrite rule
  695. * Fix Docker Compose example files compatibility to v3
  696. * Added the `role="article"` to `<article>` elements for better accessibility with screen readers
  697. * Redact secrets shown on the about page
  698. * Handle `srcset` images with no space after comma
  699. * Hide the logout link when using auth proxy
  700. * Fix wrong CSS variable
  701. * Change `-config-dump` command to use `KEY=VALUE` format
  702. Version 2.0.33 (September 25, 2021)
  703. -----------------------------------
  704. * Build RPM and Debian package with PIE mode enabled
  705. * Add CSS rule to hide `<template>` tag in old browsers
  706. * Bump `github.com/tdewolff/minify/v2 from 2.9.21 to 2.9.22`
  707. * Bump `github.com/lib/pq from 1.10.2 to 1.10.3`
  708. * Remove `RequestURI()` hack
  709. * Improve `zh_CN` translation
  710. * Add ability to change entry sort order in the UI
  711. * Add minor improvements in integration package
  712. * Add Telegram integration
  713. * Add rewrite rule to remove DOM elements
  714. * Add proxy argument to `scraper.Fetch()`
  715. * Add mime type `application/feed+json` to discover JSON Feed v1.1
  716. * Update scraper rule for `theregister.com`
  717. * Add Go 1.17 to GitHub Actions
  718. * Display option to hide feed only when category is not already hidden
  719. * Add option to hide feeds from the global Unread list
  720. Version 2.0.32 (August 14, 2021)
  721. --------------------------------
  722. * Bump `github.com/tdewolff/minify/v2` from 2.9.17 to 2.9.21
  723. * Bump `mvdan.cc/xurls/v2` from 2.2.0 to 2.3.0
  724. * Bump `github.com/PuerkitoBio/goquery` from 1.6.1 to 1.7.1
  725. * Bump `github.com/prometheus/client_golang` from 1.10.0 to 1.11.0
  726. * Add `/rss/` to the list of well known URLs during feed discovery
  727. * Use `authors` entry for JSON 1.1 feeds
  728. * Added Greek translation
  729. * Added the ability to mark an entire category as read in the web ui
  730. * Added "in" in "logged in" for en_US `tooltip.logged_user`
  731. * Added option to hide categories from the global unread list
  732. * Show "saving" labels for entry status button
  733. * Golang client: Try to parse response body on `InternalServerError` errors
  734. * contrib: Add support for a $MINIFLUX_IMAGE env var in docker-compose
  735. * contrib: Bump docker-compose version to 3.4
  736. Version 2.0.31 (June 6, 2021)
  737. -----------------------------
  738. * Expose comments_url entry field in Golang API client
  739. * Use unique file names for cache busting instead of query string
  740. * Highlight and sort feeds with unread entries in feeds list
  741. * Mark items as read on click/middle click of external links
  742. * Fix: Firefox on Windows does not show the active link as bold
  743. * Avoid extra HTTP request for fetching custom stylesheet
  744. * Remove invalid CSRF HTML meta tag
  745. * Add lang attribute to root HTML tag
  746. * Use runes instead of bytes to truncate JSON feed titles (avoid breaking Unicode strings)
  747. * Expose changed_at time through the API
  748. * Add new config option CLEANUP_ARCHIVE_BATCH_SIZE
  749. * Add new option DATABASE_CONNECTION_LIFETIME
  750. * Add database stats to Prometheus exporter
  751. * Add Systemd watchdog
  752. * Avoid custom stylesheet to be cached by third-party CDN
  753. * Update a shared entry label translation in zh_CN
  754. * Bump github.com/tdewolff/minify/v2 from 2.9.16 to 2.9.17
  755. * Bump github.com/lib/pq from 1.10.1 to 1.10.2
  756. Version 2.0.30 (May 7, 2021)
  757. ----------------------------
  758. * Security fix: any user can delete any feed (Regression introduced in commit 51fb949)
  759. * Fix password reset via CLI
  760. * Increase default batch size value
  761. * Handle RSS feed title with encoded Unicode entities
  762. * Show number of unread per category in category list instead of number of feeds
  763. * Bump github.com/lib/pq from 1.10.0 to 1.10.1
  764. * Filtering doesn't work when selecting from multiple found feeds
  765. * Bump github.com/tdewolff/minify/v2 from 2.9.15 to 2.9.16
  766. * Use an appropriate color for visited links on dark theme
  767. * Fix typo in reader/json/doc.go
  768. * Create SECURITY.md
  769. * Setup golangci-lint Github Action
  770. * Add per feed cookies option
  771. * Bump github.com/prometheus/client_golang from 1.9.0 to 1.10.0
  772. * Bump github.com/tdewolff/minify/v2 from 2.9.13 to 2.9.15
  773. Version 2.0.29 (Mar 21, 2021)
  774. -----------------------------
  775. * Miniflux requires at least Go 1.16 now
  776. * Improved support of Atom text constructs
  777. - Improve handling of CDATA in text elements
  778. - Omit XHTML root element because it should not be part of the content
  779. - Fix incorrect parsing of HTML elements
  780. * Handle RDF feed with HTML encoded entry title
  781. * Add Turkish language
  782. * Improve deletion of feeds with lots of entries
  783. * Add support of Systemd readiness notification using the sd_notify protocol
  784. * Remove feed_icons service worker cache because it's causing more problems than it solves (and HTTP cache seems faster)
  785. * Add basic PWA offline page
  786. - Add basic offline mode when using the service worker
  787. - Starting in Chrome 93, offline mode is going to be a requirement to install the PWA
  788. * Replace icon for "Add to home screen" button
  789. * Use SVG icons for "toast" notifications
  790. * Use SVG sprite for icons instead of inline elements
  791. * Reset scroll position on mark page as read
  792. * Add link to mark all feed entries as read
  793. * Make web app display mode configurable (The change is visible after reinstalling the web app)
  794. * Handle RSS feeds with CDATA in author item element
  795. * Add read time on the article page
  796. * Avoid showing a broken image when there is no feed icon
  797. * Add option to allow self-signed or invalid certificates
  798. * Add new config option to scrape YouTube's website to get video duration as read time (disabled by default)
  799. * Send full article content to Wallabag
  800. * Add more extensive health check support
  801. - Improve endpoint to test database connection
  802. - Add new cli argument: -healthcheck
  803. - Update Docker Compose examples
  804. * Update iframe "allow list" to support Bilibili videos
  805. * Remove completely generated files and use embed package to bundle JS/CSS/Images/Translations files into the final binary
  806. * Remove deprecated io/ioutil package
  807. * Show Postgres version in "About" page
  808. Version 2.0.28 (Feb 15, 2021)
  809. -----------------------------
  810. * Add HTTP header "Referrer-Policy: no-referrer"
  811. * Handle entry title with double encoded entities
  812. * Add Open Containers annotations to Docker image
  813. * Remove iframe inner HTML contents (iframe element never has fallback content)
  814. * Update date parser to fix another time zone issue
  815. * Update German translation for blocklist and keeplist
  816. * Validate Keep list and Block list rules syntax
  817. * Add support for IPv6 with zone index
  818. * Allow images with data URLs
  819. * Limit full-text search indexation to first 500K characters (tsvector has a size limit of 1MB)
  820. * Change PWA display mode to standalone
  821. * ETag value is not set correctly in HTTP client (regression)
  822. * Add database backed Let's Encrypt certificate cache
  823. * Add global option POLLING_PARSING_ERROR_LIMIT
  824. * Update systemd service file comments to use `systemctl edit` for editing
  825. * Update Go version to 1.15 in go.mod
  826. * Don't discard the "Fetch via Proxy" option
  827. * Update man page to show the default values
  828. * Add PostgreSQL indices
  829. * Add API endpoints to get feeds and entries of a category
  830. * Create feed query builder
  831. * Bump github.com/PuerkitoBio/goquery from 1.6.0 to 1.6.1
  832. * Show global options in the about page
  833. * Update man page to mention -1 can be used for CLEANUP_ARCHIVE_* options
  834. Version 2.0.27 (Jan 9, 2021)
  835. ----------------------------
  836. * Add spellcheck="false" to input fields
  837. * Refactoring of entry, feed, category, and user validation
  838. * Avoid stripping tags for entry title
  839. * Add the possibility to subscribe to feeds with the Android Share menu
  840. * API improvements:
  841. - Change feed creation request to allow setting most fields via API
  842. - Allow regular users to change settings via API
  843. - Make user fields editable via API
  844. - Renaming non-existent category via API should return a 404
  845. * Update Systemd service file:
  846. - Add capability CAP_NET_BIND_SERVICE (allow the process to listen on privileged ports)
  847. - Enable a private /tmp for $CERT_CACHE (required when using Let's Encrypt)
  848. * Update read/star icons to SVGs
  849. * Add autocomplete="username" to HTML forms
  850. * Improve user mass delete to use fewer Goroutines
  851. * Use SQL transaction when creating user sessions and users
  852. * Remove extra column (HSTORE field) from users table and migrate key/value pairs to specific columns
  853. * Bump github.com/prometheus/client_golang from 1.8.0 to 1.9.0
  854. * Bump github.com/lib/pq from 1.8.0 to 1.9.0
  855. * Add styles for <abbr> HTML tag
  856. * Refactor SQL migrations:
  857. - Avoid embedding SQL files into binary
  858. - Allow more flexible changes by using Go functions
  859. * Add Server-Timing header to unread page
  860. * Show correct User Agent in input placeholders
  861. * Add autocomplete attribute to login form
  862. * Add Grafana dashboard in contrib folder
  863. Version 2.0.26 (Dec 5, 2020)
  864. ----------------------------
  865. * Use created_at instead of published_at for archiving entries
  866. * Add created_at field for entries
  867. * Handle invalid feeds with relative URLs
  868. * Add API routes for "mark all as read"
  869. * Add support for setting a global default User-Agent
  870. * Add rewrite rule "replace" for custom search and replace
  871. * Calculate reading time during feed processing
  872. * Handle various invalid dates
  873. * systemd: keep /run writeable
  874. * debian package: add missing post-install script
  875. * Do not follow redirects when trying known feed URLs
  876. * Trim spaces around icon URLs
  877. * Reinstate EXPOSE instruction in Dockerfile
  878. * Update German and Portuguese translations
  879. Version 2.0.25 (Nov 3, 2020)
  880. ----------------------------
  881. * Rename "original" link to be more explicit
  882. * Do not escape HTML for Atom 1.0 text content during parsing (Avoid HTML entities issues)
  883. * Do not use charset.NewReader if the body is a valid UTF-8 document
  884. * Restore the ability to use a proxy for all HTTP requests (see https://golang.org/pkg/net/http/#ProxyFromEnvironment)
  885. * Show Git commit in about page
  886. * Publish Docker images to GitHub Container Registry
  887. * Added few Docker Compose examples in contrib folder
  888. * Added Ansible Role + Playbook for Miniflux in contrib folder
  889. * Add rewrite rule to use noscript content for images rendered with Javascript
  890. * Bump github.com/prometheus/client_golang from 1.7.1 to 1.8.0
  891. * Update contributor link and Godoc badge for API client
  892. * Move Debian package builder to main repository
  893. * Move RPM build files to main repository
  894. * Add GitHub Action to generate Docker images
  895. * Build multi-platform images with Docker Buildx
  896. * Add keyboard shortcut to scroll current item to the top
  897. * Add feed filters (Keeplist and Blocklist)
  898. * Do not proxy image with a data URL
  899. * Bump github.com/PuerkitoBio/goquery from 1.5.1 to 1.6.0
  900. * Proxify articles crawled manually
  901. * Proxify images defined in srcset attribute
  902. * Remove plaintext Fever password from database
  903. * Add keyboard shortcut to jump to an item's feed page
  904. * Add option for swipe gesture on entries on mobile
  905. Version 2.0.24 (Oct 3, 2020)
  906. ----------------------------
  907. * Add rewrite rule to fix Medium.com images
  908. * Update sanitizer to support responsive images:
  909. - Add support for picture HTML tag
  910. - Add support for srcset, media, and sizes attributes to img and source tags
  911. * Enhance man page formatting
  912. * Add Prometheus exporter
  913. * Remove dependency on global config options in HTTP client
  914. * API:
  915. - Avoid database lookup if empty credentials are provided
  916. - Add the possibility to filter entries by category ID
  917. - Add the possibility to filter entries by a list of statuses
  918. * Add Feed ID in worker error logs
  919. * Tweak default HTTP client transport timeout values to reduce the number of file descriptors
  920. * CSS tweaks and optimizations:
  921. - Prevent sub and sup from affecting line-height
  922. - Set touch-action on .items to prevent browser navigation
  923. - Move font-family specific CSS to the appropriate file
  924. - Update primary font-family for UI to be even more compatible with various operating systems
  925. - Make .entry-content font-weight variable depending on font-family used
  926. * Avoid Javascript minifier to break keyboard shortcuts
  927. * Rename service worker script to avoid being blocked by uBlock
  928. * Update date parser to handle Pacific Daylight Time in addition to Pacific Standard Time
  929. * Create index to speed up bookmark page
  930. * Do not try to update a duplicated feed after a refresh
  931. * Use a transaction to refresh and create entries
  932. * Speed up entries clean up with an index and a goroutine
  933. * Avoid the accumulation of enclosures by keeping only what is referenced in the feed
  934. * Add workarounds for parsing an invalid date
  935. * Archive older entries first
  936. * Update API client to support more filters
  937. * Avoid duplication between get feed entries and get entries API endpoints
  938. * Enable strict slash to avoid a page not found (404) when using a trailing slash in the URLs
  939. * Add a submit button to each section of the integration page
  940. * Reload page after making page as read when showing unread entries
  941. * Add option to archive unread entries
  942. * Add option to enable maintenance mode
  943. * Add HTTP proxy option for subscriptions
  944. * Make add_invidious_video rule applicable for different invidious instances
  945. * Fix reading time for jp, ko and zh languages
  946. * Update POLLING_SCHEDULER description in man page
  947. * Bump gorilla/mux from 1.7.4 to 1.8.0
  948. * Add link to mark a feed as read
  949. Version 2.0.23 (Aug 15, 2020)
  950. -----------------------------
  951. * Try known URLs when discovering subscriptions
  952. * Add workarounds to find YouTube channel feeds (YouTube doesn't expose RSS links anymore for new-style URLs)
  953. * Increase HTTP server timeout values
  954. * Use stdlib constants for HTTP methods instead of strings
  955. * Add support for RTL feed content
  956. * Ignore <media:title> to avoid overriding the default title if they are different
  957. * Add support for secret keys exposed as a file (useful for containerized environments)
  958. * Display recent entries first in search results
  959. * Do not archive shared items
  960. * Add option to change the number of entries per page
  961. * Add Brazilian Portuguese (pt_BR) translation
  962. * Add reading time for entries
  963. * Redirect to login page if CSRF token is expired
  964. * Fever API:
  965. - Use getEntryIDs instead of getEntries to reduce memory consumption
  966. - Fix max_id argument logic to follow the specs
  967. - Improve logging
  968. - Do not send articles to external services when unsaving an item
  969. - Create index to speed up API calls
  970. - Log client IP in middleware
  971. * API client: Do not return body for response with no content
  972. * REST API:
  973. - Delete users asynchronously (Deleting large users might lock the tables)
  974. - Add CORS support
  975. * Align entry actions to the left
  976. - Attempt to avoid awkward alignment on smartphone screens
  977. - Keep the read/star actions aligned to the left
  978. - Remove CSS flex to allow easier override with custom CSS
  979. * Upgrade Postgres client library
  980. * Upgrade CI checks to Go 1.15
  981. Version 2.0.22 (Jun 19, 2020)
  982. -----------------------------
  983. * Remove child-src CSP policy (deprecated)
  984. * Add /version endpoint
  985. * Add the ability to use custom css
  986. * Handle more invalid dates
  987. * Add CSS styles for textarea
  988. * Add index to speed up slow query
  989. * Speed up feed list page rendering
  990. * Add alternative scheduler based on the number of entries
  991. * Setup Dependabot on GitHub
  992. * Update Docker image to Alpine 3.12
  993. * Add feed option to ignore HTTP cache
  994. * Fix some Italian and German translations
  995. * Added scraper rule for RayWenderlich.com, TheOatmeal.com, financialsamurai.com, dilbert.com and turnoff.us
  996. * Replace link to categories by a link to the list of entries in "Category > Feeds" page
  997. * Change feed title to a link to the original website
  998. * Add icons to feeds and categories list
  999. * Update dependencies and remove vendor folder
  1000. Version 2.0.21 (Mar 28, 2020)
  1001. -----------------------------
  1002. * Add SVG icons to entry actions
  1003. * Add support for Invidious
  1004. - Embed Invidious player for invidio.us feeds
  1005. - Add new rewrite rule to use Invidious player for Youtube feeds
  1006. * Check during application startup if the database schema is up to date
  1007. * Change default theme for public pages to "System Serif"
  1008. * Add feature to share an article (create a public link of a feed entry)
  1009. * Fix SQL injection in full-text search rank ordering
  1010. * Add generic OpenID Connect provider (OAuth2)
  1011. * Use more secure TLS configuration for autocert server (increase SSL Labs score from B to A+)
  1012. * Add feature to create per-application API Keys
  1013. * Add Go 1.14 to GitHub Actions
  1014. * Add scraper rule for wdwnt.com
  1015. * Add API client function to refresh all feeds
  1016. * Add API endpoint to refresh all feeds
  1017. * Add Auth Proxy authentication
  1018. * Use rel=prev/next on pagination links
  1019. Version 2.0.20 (Feb 15, 2020)
  1020. -----------------------------
  1021. * Add Japanese translation
  1022. * History: show entries in the order in which they were read
  1023. * Add button to add to Home screen
  1024. * Ignore enclosures without URL
  1025. * Correct spelling of "toggle"
  1026. * List view: align information to the left side, and the actionable buttons to the right
  1027. * Redirect to /unread when getting a 404 for an unread expired entry
  1028. * Do not advance to the next item when using the 'v' shortcut on the list of starred items
  1029. * Wrap around when navigating with keyboard shortcuts on a list view
  1030. * Remove unused Feed.Entries and Entry.Category from API client
  1031. * Add comments link keyboard shortcut
  1032. * Allow application/xhtml+xml links as comments URL in Atom replies
  1033. * Allow only absolute URLs in comments URL
  1034. * Use internal XML workarounds to detect feed format
  1035. * Make menu consistent across feed pages
  1036. * Make sure external URLs are not encoded incorrectly by Go template engine
  1037. * Make sure whitelisted URI schemes are handled properly by the sanitizer
  1038. * Use white background for favicon (Improve legibility when using a dark theme)
  1039. * Remove dependency on Sed to build Docker images
  1040. * Normalize URL query string before executing HTTP requests
  1041. * Improve Dublin Core support for RDF feeds
  1042. * Improve Podcast support (iTunes and Google Play feeds)
  1043. * Add support for Atom 0.3
  1044. * Add support for Atom "replies" link relation
  1045. * Return outer HTML when scraping elements
  1046. * Update scraper rule for "Le Monde"
  1047. * Filter valid XML characters for UTF-8 XML documents before decoding
  1048. * Trim spaces for RDF entry links
  1049. Version 2.0.19 (Dec 1, 2019)
  1050. ----------------------------
  1051. * Add shortcut "V" to open original link in current tab
  1052. * Add the possibility to add rules during feed creation
  1053. * Wrap attachments into <details> disclosure element
  1054. * Show attachment size on entry page
  1055. * Add support of RSS Media elements (group, description, peer link, and thumbnails)
  1056. * Add rewrite functions: convert_text_link and nl2br
  1057. * Add scraper rule for openingsource.org
  1058. * Add Makefile target to build only amd64 Docker image
  1059. * Make sure to remove integration settings when removing a user
  1060. * Add API parameter to filter entries by category
  1061. * Display list of feeds per category
  1062. * Show the number of read and unread entries for each feed
  1063. * Make sure settings menu is consistent
  1064. * Remove fixed table-layout for entry content
  1065. * Update autocert lib because ACME v1 is EOL
  1066. * Do not lighten blockquote font color
  1067. * Update de_DE translation
  1068. * Send a response when changing status of removed entries in Fever API
  1069. * Add meta tag to disable Google Translate
  1070. * Improve storage module
  1071. * Improve XML decoder to remove illegal characters
  1072. * Compare Fever token case-insensitively
  1073. * Make sure integration tests are marked as failed in Github Actions
  1074. * Add new formats to date parser
  1075. * Add notification message when using keyboard shortcuts: f, s, and m.
  1076. * Avoid keyboard shortcuts to conflict with Firefox’s "Find as you type" feature
  1077. Version 2.0.18 (Sep 25, 2019)
  1078. -----------------------------
  1079. * Add Docker image variant for arm32v7
  1080. * Add theme variants
  1081. - Use CSS variables instead of inherence
  1082. - Rename default theme to "Light - Serif"
  1083. - Rename Black theme to "Dark - Serif"
  1084. - Rename "Sans-Serif" theme to "Light - Sans Serif"
  1085. - Add "System" theme that use system preferences: Dark or Light
  1086. - Add Serif and Sans-Serif variants for each color theme
  1087. * Avoid constraint error when having duplicate entries during feed creation
  1088. * Disable strict XML parsing
  1089. * Ignore invalid content type
  1090. * Update man page
  1091. * Replace Travis by GitHub Actions
  1092. * Rename cleanup config variables and deprecate old ones
  1093. - CLEANUP_FREQUENCY_HOURS instead of CLEANUP_FREQUENCY
  1094. - CLEANUP_ARCHIVE_READ_DAYS instead of ARCHIVE_READ_DAYS
  1095. * Make configurable the number of days to remove old sessions
  1096. * Add native lazy loading for images and iframes
  1097. * Do not buffer responses in the image proxy
  1098. * Update dependencies
  1099. * Add Go 1.13 to test matrix
  1100. * Replace link border by outline to avoid slight content shift
  1101. * New rewrite function: add_mailto_subject
  1102. * Import OPML from URL
  1103. * Fix HTML injection in addImageTitle
  1104. * Accept HTML entities when parsing XML
  1105. Version 2.0.17 (Aug 3, 2019)
  1106. ----------------------------
  1107. * Update Docker image to Alpine Linux 3.10.1
  1108. * Pass auth header to manifest request (crossorigin attribute)
  1109. * Sort feed categories before serialization
  1110. * Fix syntax errors in man page
  1111. * Add .search margin-right
  1112. * Ask for confirmation before flushing history, marking page as read, and mark all as read
  1113. * Add option to disable feeds
  1114. Version 2.0.16 (Jun 8, 2019)
  1115. ----------------------------
  1116. * Add option to toggle date/time in log messages
  1117. * Add optional config file parser in addition to environment variables
  1118. * Make HTTP Client timeout and max body size configurable
  1119. * Refactor config package:
  1120. - Parse configuration only once during startup time
  1121. - Store configuration values in a global variable
  1122. * Flip behavior of j and k keyboard shortcuts
  1123. * Bump Postgresql client library to v1.1.1 to bring in SCRAM-SHA-256 authentication
  1124. * Add option to enable/disable keyboard shortcuts
  1125. * Add missing translation
  1126. * Improve page reload when showing unread/all entries:
  1127. - Show only unread entries = refresh current page
  1128. - Show all entries = go to next page
  1129. * Always display feed entries even when there is a feed error
  1130. * Use loading label instead of saving when submitting login form
  1131. * Add OPML v1 support during importation
  1132. * Add 'allow-popups' to iframe sandbox permissions
  1133. Version 2.0.15 (Mar 16, 2019)
  1134. -----------------------------
  1135. * Move Dockerfile to main repo
  1136. * Change location of the binary from /usr/local/bin to /usr/bin in Docker image
  1137. * Add double tap detection for next/previous page navigation
  1138. * Allow users to disable auto-remove
  1139. * Make parser compatible with Go 1.12
  1140. * Add Golang 1.12 to CI
  1141. * Use feed ID instead of user ID to check entry URLs presence
  1142. * Fix typo in stylesheet
  1143. * Sort search results by relevance
  1144. * Use preferably the published date for Atom feeds
  1145. * Add Spanish translation
  1146. * Rename session cookies
  1147. * Handle the case when application session is expired and not user session
  1148. Version 2.0.14 (Jan 13, 2019)
  1149. -----------------------------
  1150. * Only attempt to change password if the confirmation field is filled in (Firefox)
  1151. * Remove URL from client user agent
  1152. * Make the feed list order case-insensitive
  1153. * Handle XHTML Summary elements for Atom feeds
  1154. * Make UTF-8 the default encoding for XML feeds
  1155. * Add more targets to Makefile
  1156. * Add -mod=vendor in Makefile
  1157. * Move health check endpoint from ui package to httpd service
  1158. * Add workaround for non GMT dates (RFC822, RFC850, and RFC1123)
  1159. * Make sure `<strong>` elements are bold
  1160. * Show scrollbars only when necessary for <pre> elements
  1161. * Add Italian translation
  1162. * Allow to switch between unread only and all entries on category/feed views
  1163. * Add function storage.UpdateFeedError()
  1164. * Add BBC News scraping rule
  1165. * Ignore JSON feeds from EnsureUnicode()
  1166. * Preserve category selection when no feed is found
  1167. * Update XML encoding regex to take single quotes into consideration
  1168. * Send cli errors to stderr
  1169. * Update dependencies
  1170. * Make password prompt compatible with Windows
  1171. * Make configurable the number of days to archive read items
  1172. * Change log level to debug when starting workers
  1173. * Do not show $DATABASE_URL warning when showing application info
  1174. * Move image proxy filter to template functions
  1175. * Update scraper rule for lemonde.fr
  1176. * Refactor manual entry scraper
  1177. * Apply rewriter rules on manual "Fetch Original Content"
  1178. * Add Makefile target for current OS and architecture
  1179. * Improve Makefile
  1180. Version 2.0.13 (Nov 25, 2018)
  1181. -----------------------------
  1182. * Add man page
  1183. * Add support for Systemd Socket Activation (experimental)
  1184. * Add the possibility to listen on Unix sockets
  1185. * Add config options to disable HTTP and scheduler services
  1186. * Archive more read entries in cleanup job
  1187. * Change default database connection string (backward compatible)
  1188. * Improve logging messages in ui package
  1189. * Improve overall Simplified Chinese translations
  1190. * Improve time since post date displays:
  1191. - "15 days" now is "15 days" rather than "3 weeks" ago
  1192. - "32 days" is now "1 month" rather than "2 months" ago
  1193. - "366 days" is now "1 year" rather than "2 years" ago
  1194. * Allow the scraper to parse XHTML documents
  1195. * Remove charset=utf-8 from JSON responses
  1196. * Ignore hotkeys containing Control, Alt or Meta keys
  1197. * Handle more encoding conversion edge cases
  1198. * Disable go test caching
  1199. * Avoid duplication of ldflags in Makefile
  1200. * Fix wrong translation key for category pages
  1201. * Code refactoring:
  1202. - Simplify application HTTP middlewares
  1203. - Replace daemon and scheduler package with service package
  1204. - Move UI middlewares and routes to ui package
  1205. - Move API middleware and routes to api package
  1206. - Move Fever middleware and routes to fever package
  1207. Version 2.0.12 (Oct 26, 2018)
  1208. -----------------------------
  1209. * Add OpenBSD build
  1210. * Improve logging for OAuth2 callback
  1211. * Make "g f" go to feed, or list of feeds
  1212. * Add more details in feed storage errors to facilitate debugging
  1213. * Add entries storage error to feed errors count
  1214. * Set arbitrary maximum size for tsvector column
  1215. * Unsubscribe from feed through link or "#"
  1216. * Simplify feed entries filtering
  1217. * Simplify feed fetcher
  1218. * Simplify feed parser and format detection
  1219. * Improve unit tests in url package
  1220. * Add short cli flags -i and -v
  1221. * Convert text links and line feeds to HTML in YouTube channels
  1222. * Change link state when marking all entries as read
  1223. * Add missing package descriptions for GoDoc
  1224. * Fix typo in license header
  1225. * Refactor HTTP response builder
  1226. * Improve Fever API performances when marking a feed or group as read
  1227. * Set focus on article link when pressing prev/next hotkeys
  1228. * Improve request package and add more unit tests
  1229. * Add more unit tests for config package
  1230. * Simplify locale package usage (refactoring)
  1231. * Translate application in Russian
  1232. * Use disclosure widget <details> for advanced feed options
  1233. * Use unique translation IDs instead of English text as key
  1234. * Add more unit tests for template functions
  1235. * Fix invalid output when truncating Unicode text in templates
  1236. * Add the possibility to override default user agent for each feed
  1237. * Split Makefile linux targets by architecture
  1238. * Add compiler, Arch, and OS to info command
  1239. * Avoid line break between emoji and (un)read/(un)star links
  1240. * Build Docker image for multiple architectures (amd64, arm32v6, arm64v8)
  1241. Version 2.0.11 (Sep 11, 2018)
  1242. -----------------------------
  1243. * Set cookie flag `SameSite` to Lax mode
  1244. * Use predefined ciphers when TLS is configured
  1245. * Avoid displaying an error when shutting down the daemon
  1246. * Add "Mark this page as read" to the bottom
  1247. * Store client IP address in request context
  1248. * Refactor HTTP context handling
  1249. * Make user creation via environment variables idempotent
  1250. * Use regular text version of ✔︎ instead of emoji version on iOS
  1251. * Add toggle status button to entry page
  1252. * Migrate to Go Modules and Go 1.11
  1253. * Show count of feeds with permanent errors in header menu
  1254. * Display remote client IP in logs when having a login failure (Fail2Ban)
  1255. * Add remove button in feed edit page
  1256. * Split integration tests into multiple files
  1257. * Update scraper rule for heise.de
  1258. * Expose real error messages for internal server API errors
  1259. * Move Golang API client in project source tree (the separate project is deprecated)
  1260. * Use canonical imports
  1261. * Add Procfile
  1262. * Create database package (refactoring)
  1263. * Update user agent with new website URL
  1264. * Update German translation
  1265. Version 2.0.10 (July 22, 2018)
  1266. ------------------------------
  1267. * Avoid browser caching issues when assets changes
  1268. * Add Gzip/Deflate compression for HTML, JSON, CSS and Javascript responses
  1269. * Improve themes handling
  1270. * Store user theme in session
  1271. * Logged out users will keep their theme
  1272. * Add theme background color to web manifest and meta tag
  1273. * Update application icon with different sizes
  1274. * Add support for published tag in Atom feeds
  1275. * Add tooltip to feed domain in feeds list (title attribute)
  1276. * Prevent vertical scrolling on swipe
  1277. * Show feed title instead of domain in items list
  1278. * Add service worker to cache feed icons
  1279. * Make image proxy configurable via IMAGE_PROXY environment variable:
  1280. * none = No proxy
  1281. * http-only = Proxy only non-HTTPS images (default)
  1282. * all = Proxy everything
  1283. * Add alt attribute for feed icons
  1284. * Update CI jshint check
  1285. * Add embedly.com to iframe whitelist
  1286. * Use passive event listeners for touch events
  1287. * Add `add_dynamic_image` rewriter for JavaScript-loaded images
  1288. * Change feed password field type to text to avoid auto-completion with Firefox
  1289. * Using autocomplete="off" or autocomplete="new-password" doesn't change anything
  1290. * Changing the input ID doesn't change anything
  1291. * Using a different input name doesn't change anything
  1292. * Only Chrome supports autocomplete="new-password"
  1293. * Add base URL validation
  1294. * Update default stylesheet name in HTML layout
  1295. * Pre-generate themes stylesheets at build time
  1296. * Update vendor dependencies
  1297. * Refactor assets bundler and split Javascript files
  1298. * Run sanitizer after all processing and entry content rewrite
  1299. * Remove timestamp from generated files
  1300. * Add support for protocol relative YouTube URLs
  1301. * Add Postgres full-text search for entries
  1302. * Add search form in user interface
  1303. * Add search parameter to the API
  1304. * Improve Dutch locales
  1305. * Sandbox iframes when sanitizing
  1306. * Keep consistent text size on mobile orientation change
  1307. * Change permission of /etc/miniflux.conf to 600 instead of 644 in RPM package
  1308. * Add tzdata package to Docker image
  1309. * Update Docker image to Alpine Linux 3.8
  1310. Version 2.0.9 (July 1, 2018)
  1311. ----------------------------
  1312. * Avoid Chrome to autocomplete no-login password fields
  1313. * Add cli flag to reset all feed errors
  1314. * Do not ignore errored feeds when a user refresh feeds manually
  1315. * Add specific 404 and 401 error messages
  1316. * Strip binaries to reduce size
  1317. * Make sure we always get the pagination in unread mode
  1318. * Fix incorrect data value when toggling bookmark flag on entry page
  1319. * Set opener to null when opening original URL with JavaScript
  1320. * Remove unnecessary style
  1321. * Refactor AddImageTitle rewriter
  1322. * Only processes images with `src` **and** `title` attributes (others are ignored)
  1323. * Processes **all** images in the document (not just the first one)
  1324. * Wraps the image and its title attribute in a `figure` tag with the title attribute's contents in a `figcaption` tag
  1325. * Improve sanitizer to remove `style`, `noscript` and `script` tag contents
  1326. * Improve feed and user API updates with optional values
  1327. * Add new fields for feed username/password
  1328. * Improve memory usage debug log
  1329. * Disable keep-alive for HTTP client
  1330. * Close HTTP response body even for failed requests
  1331. * Add Sans-Serif theme
  1332. * Rewrite iframe Youtube URLs to https://www.youtube-nocookie.com
  1333. * Add more filters for API call `/entries`:
  1334. * before (unix timestamp)
  1335. * before_entry_id (int64)
  1336. * after (unix timestamp)
  1337. * after_entry_id (int64)
  1338. * starred (boolean)
  1339. * Rewrite individual entry pagination SQL queries
  1340. * Simplify entry query builder
  1341. * Prevent items from sticking on touchend
  1342. * Extended horizontal overflow to feed and category views
  1343. * Translate missing strings
  1344. * Update German translation
  1345. Version 2.0.8 (June 4, 2018)
  1346. ----------------------------
  1347. * Add Pocket integration
  1348. * Rewrite RealIP() to avoid returning an empty string
  1349. * Convert IP field from text to inet type
  1350. * Improve error handling in integration clients
  1351. * Make unread counter clickable
  1352. * Archive read entries automatically after 60 days
  1353. * Hide horizontal overflow when swiping articles on touch devices
  1354. * Add API endpoint to get logged user
  1355. * Fever API: Return response with an empty list if there is no item
  1356. * Handle feeds with dates formatted as Unix timestamp
  1357. Version 2.0.7 (May 7, 2018)
  1358. ---------------------------
  1359. * Add API endpoint to import OPML file
  1360. * Make sure to close request body in HTTP client
  1361. * Do not show save link if no integration is configured
  1362. * Make sure integrations are configured before to make any HTTP requests
  1363. * Avoid people to unlink their OAuth2 account without having a local password
  1364. * Do not use shared variable to translate templates (avoid concurrency issue)
  1365. * Use vanilla HTTP handlers (refactoring)
  1366. * Move HTTP client to its own package (refactoring)
  1367. * Add middleware to read X-Forwarded-Proto header (refactoring)
  1368. * Use Gorilla middleware (refactoring)
  1369. * Scrape parent element for iframe
  1370. * Add SoundCloud and Bandcamp iframe sources
  1371. Version 2.0.6 (Apr 20, 2018)
  1372. ----------------------------
  1373. * Improve graceful shutdown
  1374. * Simplify Heroku deployment
  1375. * Display memory usage and some metrics in logs
  1376. * Increase read/write timeout for HTTP server
  1377. * Add support for Dublin Core date in RDF feeds
  1378. * Do not return an error if the user session is not found
  1379. * Handle some non-english date formats
  1380. * Add missing French translation
  1381. * Rename RSS parser getters
  1382. * Get the right comments URL when having multiple namespaces
  1383. * Ignore caching headers for feeds that send "Expires: 0"
  1384. * Update translations
  1385. Version 2.0.5 (Apr 7, 2018)
  1386. ---------------------------
  1387. * Avoid unread counter to be off by one when reading an entry
  1388. * Add Comments URL to entries
  1389. * Add FreeBSD build target
  1390. * Handle RSS author elements with inner HTML
  1391. * Fix typo in translations
  1392. * Add Dutch translation
  1393. * Convert enclosure size field to bigint
  1394. * Switch CI to Go v1.10
  1395. * Fix broken OPML import when compiling with Go 1.10
  1396. Version 2.0.4 (Mar 5, 2018)
  1397. ---------------------------
  1398. * Add Simplified Chinese translation
  1399. * Add Nunux Keeper integration
  1400. * Filter the list of timezones
  1401. * Add timezone to entries dates for REST and Fever API
  1402. * Show last login and session creation date in current timezone
  1403. * Fix typo in edit user template
  1404. * Improve parser error messages
  1405. * Remove parentheses around feed error messages
  1406. * Support localized feed errors generated by background workers
  1407. * Print info message if DATABASE_URL is not set
  1408. Version 2.0.3 (Feb 19, 2018)
  1409. ----------------------------
  1410. * Add Polish translation
  1411. * Change color of <q> tags for black theme
  1412. * Add database indexes (don't forget to run database migrations)
  1413. * Handle Atom feeds with HTML title
  1414. * Strip invalid XML characters to avoid parsing errors
  1415. * Improve error handling for HTTP client
  1416. Version 2.0.2 (Feb 5, 2018)
  1417. ---------------------------
  1418. * Add support for Let's Encrypt http-01 challenge
  1419. * Move template functions outside engine (refactoring)
  1420. * Take timezone into consideration when calculating relative time
  1421. * Add support for HTTP Strict Transport Security header
  1422. * Add support for base URLs with subfolders
  1423. * Add missing about menu in settings
  1424. * Show API URL endpoints in user interface
  1425. * Do not update entry date while refreshing a feed
  1426. * Add flag to toggle debug logging
  1427. * Improve unread counter updates
  1428. Version 2.0.1 (Jan 22, 2018)
  1429. ----------------------------
  1430. * Change user agent (People are blocking the crawler with mod_security)
  1431. * Move environment variables to config package (refactoring)
  1432. * Add build targets for all ARM architectures
  1433. * Do not crawl existing entry URLs
  1434. * Show translated login page in user language when logged out
  1435. * Handle more encoding edge cases:
  1436. - Feeds with charset specified only in Content-Type header and not in XML document
  1437. - Feeds with charset specified in both places
  1438. - Feeds with charset specified only in XML document and not in HTTP header
  1439. * Add German translation
  1440. * Add mark as read/unread link on list items
  1441. * Add API endpoint for OPML export
  1442. Version 2.0.0 (Jan 11, 2018)
  1443. ----------------------------
  1444. * Initial release of Miniflux 2.