ChangeLog 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543
  1. Version 2.0.23 (Aug 15, 2020)
  2. -----------------------------
  3. * Try known URLs when discovering subscriptions
  4. * Add workarounds to find YouTube channel feeds (YouTube doesn't expose RSS links anymore for new-style URLs)
  5. * Increase HTTP server timeout values
  6. * Use stdlib constants for HTTP methods instead of strings
  7. * Add support for RTL feed content
  8. * Ignore <media:title> to avoid overriding the default title if they are different
  9. * Add support for secret keys exposed as a file (useful for containerized environments)
  10. * Display recent entries first in search results
  11. * Do not archive shared items
  12. * Add option to change the number of entries per page
  13. * Add Brazilian Portuguese (pt_BR) translation
  14. * Add reading time for entries
  15. * Redirect to login page if CSRF token is expired
  16. * Fever API:
  17. - Use getEntryIDs instead of getEntries to reduce memory consumption
  18. - Fix max_id argument logic to follow the specs
  19. - Improve logging
  20. - Do not send articles to external services when unsaving an item
  21. - Create index to speed up API calls
  22. - Log client IP in middleware
  23. * API client: Do not return body for response with no content
  24. * REST API:
  25. - Delete users asynchronously (Deleting large users might lock the tables)
  26. - Add CORS support
  27. * Align entry actions to the left
  28. - Attempt to avoid awkward alignment on smartphone screens
  29. - Keep the read/star actions aligned to the left
  30. - Remove CSS flex to allow easier override with custom CSS
  31. * Upgrade Postgres client library
  32. * Upgrade CI checks to Go 1.15
  33. Version 2.0.22 (Jun 19, 2020)
  34. -----------------------------
  35. * Remove child-src CSP policy (deprecated)
  36. * Add /version endpoint
  37. * Add the ability to use custom css
  38. * Handle more invalid dates
  39. * Add CSS styles for textarea
  40. * Add index to speed up slow query
  41. * Speed up feed list page rendering
  42. * Add alternative scheduler based on the number of entries
  43. * Setup Dependabot on GitHub
  44. * Update Docker image to Alpine 3.12
  45. * Add feed option to ignore HTTP cache
  46. * Fix some Italian and German translations
  47. * Added scraper rule for RayWenderlich.com, TheOatmeal.com, financialsamurai.com, dilbert.com and turnoff.us
  48. * Replace link to categories by a link to the list of entries in "Category > Feeds" page
  49. * Change feed title to a link to the original website
  50. * Add icons to feeds and categories list
  51. * Update dependencies and remove vendor folder
  52. Version 2.0.21 (Mar 28, 2020)
  53. -----------------------------
  54. * Add SVG icons to entry actions
  55. * Add support for Invidious
  56. - Embed Invidious player for invidio.us feeds
  57. - Add new rewrite rule to use Invidious player for Youtube feeds
  58. * Check during application startup if the database schema is up to date
  59. * Change default theme for public pages to "System Serif"
  60. * Add feature to share an article (create a public link of a feed entry)
  61. * Fix SQL injection in full-text search rank ordering
  62. * Add generic OpenID Connect provider (OAuth2)
  63. * Use more secure TLS configuration for autocert server (increase SSL Labs score from B to A+)
  64. * Add feature to create per-application API Keys
  65. * Add Go 1.14 to GitHub Actions
  66. * Add scraper rule for wdwnt.com
  67. * Add API client function to refresh all feeds
  68. * Add API endpoint to refresh all feeds
  69. * Add Auth Proxy authentication
  70. * Use rel=prev/next on pagination links
  71. Version 2.0.20 (Feb 15, 2020)
  72. -----------------------------
  73. * Add Japanese translation
  74. * History: show entries in the order in which they were read
  75. * Add button to add to Home screen
  76. * Ignore enclosures without URL
  77. * Correct spelling of "toggle"
  78. * List view: align information to the left side, and the actionable buttons to the right
  79. * Redirect to /unread when getting a 404 for an unread expired entry
  80. * Do not advance to the next item when using the 'v' shortcut on the list of starred items
  81. * Wrap around when navigating with keyboard shortcuts on a list view
  82. * Remove unused Feed.Entries and Entry.Category from API client
  83. * Add comments link keyboard shortcut
  84. * Allow application/xhtml+xml links as comments URL in Atom replies
  85. * Allow only absolute URLs in comments URL
  86. * Use internal XML workarounds to detect feed format
  87. * Make menu consistent across feed pages
  88. * Make sure external URLs are not encoded incorrectly by Go template engine
  89. * Make sure whitelisted URI schemes are handled properly by the sanitizer
  90. * Use white background for favicon (Improve legibility when using a dark theme)
  91. * Remove dependency on Sed to build Docker images
  92. * Normalize URL query string before executing HTTP requests
  93. * Improve Dublin Core support for RDF feeds
  94. * Improve Podcast support (iTunes and Google Play feeds)
  95. * Add support for Atom 0.3
  96. * Add support for Atom "replies" link relation
  97. * Return outer HTML when scraping elements
  98. * Update scraper rule for "Le Monde"
  99. * Filter valid XML characters for UTF-8 XML documents before decoding
  100. * Trim spaces for RDF entry links
  101. Version 2.0.19 (Dec 1, 2019)
  102. ----------------------------
  103. * Add shortcut "V" to open original link in current tab
  104. * Add the possibility to add rules during feed creation
  105. * Wrap attachments into <details> disclosure element
  106. * Show attachment size on entry page
  107. * Add support of RSS Media elements (group, description, peer link, and thumbnails)
  108. * Add rewrite functions: convert_text_link and nl2br
  109. * Add scraper rule for openingsource.org
  110. * Add Makefile target to build only amd64 Docker image
  111. * Make sure to remove integration settings when removing a user
  112. * Add API parameter to filter entries by category
  113. * Display list of feeds per category
  114. * Show the number of read and unread entries for each feed
  115. * Make sure settings menu is consistent
  116. * Remove fixed table-layout for entry content
  117. * Update autocert lib because ACME v1 is EOL
  118. * Do not lighten blockquote font color
  119. * Update de_DE translation
  120. * Send a response when changing status of removed entries in Fever API
  121. * Add meta tag to disable Google Translate
  122. * Improve storage module
  123. * Improve XML decoder to remove illegal characters
  124. * Compare Fever token case-insensitively
  125. * Make sure integration tests are marked as failed in Github Actions
  126. * Add new formats to date parser
  127. * Add notification message when using keyboard shortcuts: f, s, and m.
  128. * Avoid keyboard shortcuts to conflict with Firefox’s "Find as you type" feature
  129. Version 2.0.18 (Sep 25, 2019)
  130. -----------------------------
  131. * Add Docker image variant for arm32v7
  132. * Add theme variants
  133. - Use CSS variables instead of inherence
  134. - Rename default theme to "Light - Serif"
  135. - Rename Black theme to "Dark - Serif"
  136. - Rename "Sans-Serif" theme to "Light - Sans Serif"
  137. - Add "System" theme that use system preferences: Dark or Light
  138. - Add Serif and Sans-Serif variants for each color theme
  139. * Avoid constraint error when having duplicate entries during feed creation
  140. * Disable strict XML parsing
  141. * Ignore invalid content type
  142. * Update man page
  143. * Replace Travis by GitHub Actions
  144. * Rename cleanup config variables and deprecate old ones
  145. - CLEANUP_FREQUENCY_HOURS instead of CLEANUP_FREQUENCY
  146. - CLEANUP_ARCHIVE_READ_DAYS instead of ARCHIVE_READ_DAYS
  147. * Make configurable the number of days to remove old sessions
  148. * Add native lazy loading for images and iframes
  149. * Do not buffer responses in the image proxy
  150. * Update dependencies
  151. * Add Go 1.13 to test matrix
  152. * Replace link border by outline to avoid slight content shift
  153. * New rewrite function: add_mailto_subject
  154. * Import OPML from URL
  155. * Fix HTML injection in addImageTitle
  156. * Accept HTML entities when parsing XML
  157. Version 2.0.17 (Aug 3, 2019)
  158. ----------------------------
  159. * Update Docker image to Alpine Linux 3.10.1
  160. * Pass auth header to manifest request (crossorigin attribute)
  161. * Sort feed categories before serialization
  162. * Fix syntax errors in man page
  163. * Add .search margin-right
  164. * Ask for confirmation before flushing history, marking page as read, and mark all as read
  165. * Add option to disable feeds
  166. Version 2.0.16 (Jun 8, 2019)
  167. ----------------------------
  168. * Add option to toggle date/time in log messages
  169. * Add optional config file parser in addition to environment variables
  170. * Make HTTP Client timeout and max body size configurable
  171. * Refactor config package:
  172. - Parse configuration only once during startup time
  173. - Store configuration values in a global variable
  174. * Flip behavior of j and k keyboard shortcuts
  175. * Bump Postgresql client library to v1.1.1 to bring in SCRAM-SHA-256 authentication
  176. * Add option to enable/disable keyboard shortcuts
  177. * Add missing translation
  178. * Improve page reload when showing unread/all entries:
  179. - Show only unread entries = refresh current page
  180. - Show all entries = go to next page
  181. * Always display feed entries even when there is a feed error
  182. * Use loading label instead of saving when submitting login form
  183. * Add OPML v1 support during importation
  184. * Add 'allow-popups' to iframe sandbox permissions
  185. Version 2.0.15 (Mar 16, 2019)
  186. -----------------------------
  187. * Move Dockerfile to main repo
  188. * Change location of the binary from /usr/local/bin to /usr/bin in Docker image
  189. * Add double tap detection for next/previous page navigation
  190. * Allow users to disable auto-remove
  191. * Make parser compatible with Go 1.12
  192. * Add Golang 1.12 to CI
  193. * Use feed ID instead of user ID to check entry URLs presence
  194. * Fix typo in stylesheet
  195. * Sort search results by relevance
  196. * Use preferably the published date for Atom feeds
  197. * Add Spanish translation
  198. * Rename session cookies
  199. * Handle the case when application session is expired and not user session
  200. Version 2.0.14 (Jan 13, 2019)
  201. -----------------------------
  202. * Only attempt to change password if the confirmation field is filled in (Firefox)
  203. * Remove URL from client user agent
  204. * Make the feed list order case-insensitive
  205. * Handle XHTML Summary elements for Atom feeds
  206. * Make UTF-8 the default encoding for XML feeds
  207. * Add more targets to Makefile
  208. * Add -mod=vendor in Makefile
  209. * Move health check endpoint from ui package to httpd service
  210. * Add workaround for non GMT dates (RFC822, RFC850, and RFC1123)
  211. * Make sure `<strong>` elements are bold
  212. * Show scrollbars only when necessary for <pre> elements
  213. * Add Italian translation
  214. * Allow to switch between unread only and all entries on category/feed views
  215. * Add function storage.UpdateFeedError()
  216. * Add BBC News scraping rule
  217. * Ignore JSON feeds from EnsureUnicode()
  218. * Preserve category selection when no feed is found
  219. * Update XML encoding regex to take single quotes into consideration
  220. * Send cli errors to stderr
  221. * Update dependencies
  222. * Make password prompt compatible with Windows
  223. * Make configurable the number of days to archive read items
  224. * Change log level to debug when starting workers
  225. * Do not show $DATABASE_URL warning when showing application info
  226. * Move image proxy filter to template functions
  227. * Update scraper rule for lemonde.fr
  228. * Refactor manual entry scraper
  229. * Apply rewriter rules on manual "Fetch Original Content"
  230. * Add Makefile target for current OS and architecture
  231. * Improve Makefile
  232. Version 2.0.13 (Nov 25, 2018)
  233. -----------------------------
  234. * Add man page
  235. * Add support for Systemd Socket Activation (experimental)
  236. * Add the possiblity to listen on Unix sockets
  237. * Add config options to disable HTTP and scheduler services
  238. * Archive more read entries in cleanup job
  239. * Change default database connection string (backward compatible)
  240. * Improve logging messages in ui package
  241. * Improve overall Simplified Chinese translations
  242. * Improve time since post date displays:
  243. - "15 days" now is "15 days" rather than "3 weeks" ago
  244. - "32 days" is now "1 month" rather than "2 months" ago
  245. - "366 days" is now "1 year" rather than "2 years" ago
  246. * Allow the scraper to parse XHTML documents
  247. * Remove charset=utf-8 from JSON responses
  248. * Ignore hotkeys containing Control, Alt or Meta keys
  249. * Handle more encoding conversion edge cases
  250. * Disable go test caching
  251. * Avoid duplication of ldflags in Makefile
  252. * Fix wrong translation key for category pages
  253. * Code refactoring:
  254. - Simplify application HTTP middlewares
  255. - Replace daemon and scheduler package with service package
  256. - Move UI middlewares and routes to ui package
  257. - Move API middleware and routes to api package
  258. - Move Fever middleware and routes to fever package
  259. Version 2.0.12 (Oct 26, 2018)
  260. -----------------------------
  261. * Add OpenBSD build
  262. * Improve logging for OAuth2 callback
  263. * Make "g f" go to feed, or list of feeds
  264. * Add more details in feed storage errors to facilitate debugging
  265. * Add entries storage error to feed errors count
  266. * Set arbitrary maximum size for tsvector column
  267. * Unsubscribe from feed through link or "#"
  268. * Simplify feed entries filtering
  269. * Simplify feed fetcher
  270. * Simplify feed parser and format detection
  271. * Improve unit tests in url package
  272. * Add short cli flags -i and -v
  273. * Convert text links and line feeds to HTML in YouTube channels
  274. * Change link state when marking all entries as read
  275. * Add missing package descriptions for GoDoc
  276. * Fix typo in license header
  277. * Refactor HTTP response builder
  278. * Improve Fever API performances when marking a feed or group as read
  279. * Set focus on article link when pressing prev/next hotkeys
  280. * Improve request package and add more unit tests
  281. * Add more unit tests for config package
  282. * Simplify locale package usage (refactoring)
  283. * Translate application in Russian
  284. * Use disclosure widget <details> for advanced feed options
  285. * Use unique translation IDs instead of English text as key
  286. * Add more unit tests for template functions
  287. * Fix invalid output when truncating Unicode text in templates
  288. * Add the possibility to override default user agent for each feed
  289. * Split Makefile linux targets by architecture
  290. * Add compiler, Arch, and OS to info command
  291. * Avoid line break between emoji and (un)read/(un)star links
  292. * Build Docker image for multiple architectures (amd64, arm32v6, arm64v8)
  293. Version 2.0.11 (Sep 11, 2018)
  294. -----------------------------
  295. * Set cookie flag `SameSite` to Lax mode
  296. * Use predefined ciphers when TLS is configured
  297. * Avoid displaying an error when shutting down the daemon
  298. * Add "Mark this page as read" to the bottom
  299. * Store client IP address in request context
  300. * Refactor HTTP context handling
  301. * Make user creation via environment variables idempotent
  302. * Use regular text version of ✔︎ instead of emoji version on iOS
  303. * Add toggle status button to entry page
  304. * Migrate to Go Modules and Go 1.11
  305. * Show count of feeds with permanent errors in header menu
  306. * Display remote client IP in logs when having a login failure (Fail2Ban)
  307. * Add remove button in feed edit page
  308. * Split integration tests into multiple files
  309. * Update scraper rule for heise.de
  310. * Expose real error messages for internal server API errors
  311. * Move Golang API client in project source tree (the separate project is deprecated)
  312. * Use canonical imports
  313. * Add Procfile
  314. * Create database package (refactoring)
  315. * Update user agent with new website URL
  316. * Update German translation
  317. Version 2.0.10 (July 22, 2018)
  318. ------------------------------
  319. * Avoid browser caching issues when assets changes
  320. * Add Gzip/Deflate compression for HTML, JSON, CSS and Javascript responses
  321. * Improve themes handling
  322. * Store user theme in session
  323. * Logged out users will keep their theme
  324. * Add theme background color to web manifest and meta tag
  325. * Update application icon with different sizes
  326. * Add support for published tag in Atom feeds
  327. * Add tooltip to feed domain in feeds list (title attribute)
  328. * Prevent vertical scrolling on swipe
  329. * Show feed title instead of domain in items list
  330. * Add service worker to cache feed icons
  331. * Make image proxy configurable via IMAGE_PROXY environment variable:
  332. * none = No proxy
  333. * http-only = Proxy only non-HTTPS images (default)
  334. * all = Proxy everything
  335. * Add alt attribute for feed icons
  336. * Update CI jshint check
  337. * Add embedly.com to iframe whitelist
  338. * Use passive event listeners for touch events
  339. * Add `add_dynamic_image` rewriter for JavaScript-loaded images
  340. * Change feed password field type to text to avoid auto-completion with Firefox
  341. * Using autocomplete="off" or autocomplete="new-password" doesn't change anything
  342. * Changing the input ID doesn't change anything
  343. * Using a different input name doesn't change anything
  344. * Only Chrome supports autocomplete="new-password"
  345. * Add base URL validation
  346. * Update default stylesheet name in HTML layout
  347. * Pre-generate themes stylesheets at build time
  348. * Update vendor dependencies
  349. * Refactor assets bundler and split Javascript files
  350. * Run sanitizer after all processing and entry content rewrite
  351. * Remove timestamp from generated files
  352. * Add support for protocol relative YouTube URLs
  353. * Add Postgres full-text search for entries
  354. * Add search form in user interface
  355. * Add search parameter to the API
  356. * Improve Dutch locales
  357. * Sandbox iframes when sanitizing
  358. * Keep consistent text size on mobile orientation change
  359. * Change permission of /etc/miniflux.conf to 600 instead of 644 in RPM package
  360. * Add tzdata package to Docker image
  361. * Update Docker image to Alpine Linux 3.8
  362. Version 2.0.9 (July 1, 2018)
  363. ----------------------------
  364. * Avoid Chrome to autocomplete no-login password fields
  365. * Add cli flag to reset all feed errors
  366. * Do not ignore errored feeds when a user refresh feeds manually
  367. * Add specific 404 and 401 error messages
  368. * Strip binaries to reduce size
  369. * Make sure we always get the pagination in unread mode
  370. * Fix incorrect data value when toggling bookmark flag on entry page
  371. * Set opener to null when opening original URL with JavaScript
  372. * Remove unnecessary style
  373. * Refactor AddImageTitle rewriter
  374. * Only processes images with `src` **and** `title` attributes (others are ignored)
  375. * Processes **all** images in the document (not just the first one)
  376. * Wraps the image and its title attribute in a `figure` tag with the title attribute's contents in a `figcaption` tag
  377. * Improve sanitizer to remove `style`, `noscript` and `script` tag contents
  378. * Improve feed and user API updates with optional values
  379. * Add new fields for feed username/password
  380. * Improve memory usage debug log
  381. * Disable keep-alive for HTTP client
  382. * Close HTTP response body even for failed requests
  383. * Add Sans-Serif theme
  384. * Rewrite iframe Youtube URLs to https://www.youtube-nocookie.com
  385. * Add more filters for API call `/entries`:
  386. * before (unix timestamp)
  387. * before_entry_id (int64)
  388. * after (unix timestamp)
  389. * after_entry_id (int64)
  390. * starred (boolean)
  391. * Rewrite individual entry pagination SQL queries
  392. * Simplify entry query builder
  393. * Prevent items from sticking on touchend
  394. * Extended horizontal overflow to feed and category views
  395. * Translate missing strings
  396. * Update German translation
  397. Version 2.0.8 (June 4, 2018)
  398. ----------------------------
  399. * Add Pocket integration
  400. * Rewrite RealIP() to avoid returning an empty string
  401. * Convert IP field from text to inet type
  402. * Improve error handling in integration clients
  403. * Make unread counter clickable
  404. * Archive read entries automatically after 60 days
  405. * Hide horizontal overflow when swiping articles on touch devices
  406. * Add API endpoint to get logged user
  407. * Fever API: Return response with an empty list if there is no item
  408. * Handle feeds with dates formatted as Unix timestamp
  409. Version 2.0.7 (May 7, 2018)
  410. ---------------------------
  411. * Add API endpoint to import OPML file
  412. * Make sure to close request body in HTTP client
  413. * Do not show save link if no integration is configured
  414. * Make sure integrations are configured before to make any HTTP requests
  415. * Avoid people to unlink their OAuth2 account without having a local password
  416. * Do not use shared variable to translate templates (avoid concurrency issue)
  417. * Use vanilla HTTP handlers (refactoring)
  418. * Move HTTP client to its own package (refactoring)
  419. * Add middleware to read X-Forwarded-Proto header (refactoring)
  420. * Use Gorilla middleware (refactoring)
  421. * Scrape parent element for iframe
  422. * Add SoundCloud and Bandcamp iframe sources
  423. Version 2.0.6 (Apr 20, 2018)
  424. ----------------------------
  425. * Improve graceful shutdown
  426. * Simplify Heroku deployment
  427. * Display memory usage and some metrics in logs
  428. * Increase read/write timeout for HTTP server
  429. * Add support for Dublin Core date in RDF feeds
  430. * Do not return an error if the user session is not found
  431. * Handle some non-english date formats
  432. * Add missing French translation
  433. * Rename RSS parser getters
  434. * Get the right comments URL when having multiple namespaces
  435. * Ignore caching headers for feeds that send "Expires: 0"
  436. * Update translations
  437. Version 2.0.5 (Apr 7, 2018)
  438. ---------------------------
  439. * Avoid unread counter to be off by one when reading an entry
  440. * Add Comments URL to entries
  441. * Add FreeBSD build target
  442. * Handle RSS author elements with inner HTML
  443. * Fix typo in translations
  444. * Add Dutch translation
  445. * Convert enclosure size field to bigint
  446. * Switch CI to Go v1.10
  447. * Fix broken OPML import when compiling with Go 1.10
  448. Version 2.0.4 (Mar 5, 2018)
  449. ---------------------------
  450. * Add Simplified Chinese translation
  451. * Add Nunux Keeper integration
  452. * Filter the list of timezones
  453. * Add timezone to entries dates for REST and Fever API
  454. * Show last login and session creation date in current timezone
  455. * Fix typo in edit user template
  456. * Improve parser error messages
  457. * Remove parentheses around feed error messages
  458. * Support localized feed errors generated by background workers
  459. * Print info message if DATABASE_URL is not set
  460. Version 2.0.3 (Feb 19, 2018)
  461. ----------------------------
  462. * Add Polish translation
  463. * Change color of <q> tags for black theme
  464. * Add database indexes (don't forget to run database migrations)
  465. * Handle Atom feeds with HTML title
  466. * Strip invalid XML characters to avoid parsing errors
  467. * Improve error handling for HTTP client
  468. Version 2.0.2 (Feb 5, 2018)
  469. ---------------------------
  470. * Add support for Let's Encrypt http-01 challenge
  471. * Move template functions outside engine (refactoring)
  472. * Take timezone into consideration when calculating relative time
  473. * Add support for HTTP Strict Transport Security header
  474. * Add support for base URLs with subfolders
  475. * Add missing about menu in settings
  476. * Show API URL endpoints in user interface
  477. * Do not update entry date while refreshing a feed
  478. * Add flag to toggle debug logging
  479. * Improve unread counter updates
  480. Version 2.0.1 (Jan 22, 2018)
  481. ----------------------------
  482. * Change user agent (People are blocking the crawler with mod_security)
  483. * Move environment variables to config package (refactoring)
  484. * Add build targets for all ARM architectures
  485. * Do not crawl existing entry URLs
  486. * Show translated login page in user language when logged out
  487. * Handle more encoding edge cases:
  488. - Feeds with charset specified only in Content-Type header and not in XML document
  489. - Feeds with charset specified in both places
  490. - Feeds with charset specified only in XML document and not in HTTP header
  491. * Add German translation
  492. * Add mark as read/unread link on list items
  493. * Add API endpoint for OPML export
  494. Version 2.0.0 (Jan 11, 2018)
  495. ----------------------------
  496. * Initial release of Miniflux 2.