Commit graph

198 commits

Author SHA1 Message Date
1pav
0d935a863f
Make web app display mode configurable
The change is visible after reinstalling the web app. 

It's not compatible with all browsers.

See https://developer.mozilla.org/en-US/docs/Web/Manifest/display
2021-02-28 13:29:51 -08:00
Frédéric Guillot
ec3c604a83 Add option to allow self-signed or invalid certificates 2021-02-21 13:58:52 -08:00
Frédéric Guillot
e3c28a6c96 Improve health check endpoint to test database connection 2021-02-19 19:32:13 -08:00
Rogier Lommers
421bb467d0
Show Postgres version in about page 2021-02-16 07:37:24 -08:00
Frédéric Guillot
f29940d784 Rename storage certificate cache
This cache is used only for ACME certificates.

Being explicit is always better.
2021-02-13 14:16:30 -08:00
Frédéric Guillot
9a9a271b1f Limit full-text search indexation to first 500K characters
tsvector has a size limit of 1MB. See https://www.postgresql.org/docs/13/textsearch-limitations.html

Input text is now truncated to avoid this error:

"pq: string is too long for tsvector (1057834 bytes, max 1048575 bytes)"
2021-02-06 14:10:45 -08:00
Dave Marquard
0bece2df7d
Database backed LetsEncrypt certificate cache (#993) 2021-01-29 18:44:40 -08:00
Ilya Mateyko
4464802947 Reformat some Go files
When working on #994 I noticed that some Go files are not formatted with
`gofmt`.

This PR fixes this.
2021-01-27 18:13:58 -08:00
Shizun Ge
7c44238bae
Add global option POLLING_PARSING_ERROR_LIMIT 2021-01-25 21:41:36 -08:00
Shizun Ge
02a4c9db53
Create feed query builder 2021-01-18 13:22:09 -08:00
Frédéric Guillot
4468ef1410 Refactor category validation 2021-01-03 22:50:24 -08:00
Frédéric Guillot
e45cc2d2aa Refactor user validation
Validate each user field for creation/modification via API and web UI
2021-01-03 21:36:35 -08:00
Frédéric Guillot
f0610bdd9c Refactor feed creation to allow setting most fields via API
Allow API clients to create disabled feeds or define field like "ignore_http_cache".
2021-01-02 16:48:22 -08:00
Frédéric Guillot
d3cfa6396d Improve user mass delete 2020-12-22 21:02:10 -08:00
Frédéric Guillot
60a7362327 Use SQL transaction when creating user sessions 2020-12-22 20:28:34 -08:00
Frédéric Guillot
7be9f5989e Use a SQL transaction when creating users 2020-12-22 15:47:35 -08:00
Frédéric Guillot
83f3ccab0e Remove extra column from users table (HSTORE field)
Migrated key/value pairs to specific columns.
2020-12-21 21:35:03 -08:00
Frédéric Guillot
a026efce6e Use created_at instead of published_at for archiving entries 2020-12-02 21:08:55 -08:00
Ben Congdon
49feb1958c
Add created_at field for entries 2020-11-29 17:04:18 -08:00
Frédéric Guillot
de7a613098 Calculate reading time during feed processing
The goal is to speed up the user interface.

Detecting the language based on the content is pretty slow.
2020-11-18 17:43:24 -08:00
Manuel Garrido
84b83fc3c8
Add feed filters (Keeplist and Blocklist) 2020-10-16 14:40:56 -07:00
Tony Wang
37bc451741
Remove plaintext Fever password from database 2020-10-06 21:22:24 -07:00
Philipp Rempe
7da72cf89a Add setting for swipe gesture on entries on mobile 2020-10-04 17:45:18 -07:00
Frédéric Guillot
c394a61a4e Add Prometheus exporter 2020-09-27 20:04:48 -07:00
Frédéric Guillot
0d0395b4e3 Do not try to update a duplicated feed after a refresh 2020-09-20 23:42:18 -07:00
Frédéric Guillot
e6c6ee441a Use a transaction to refresh and create entries
Also includes few database improvements:

- Speed up entries clean up with an index and a goroutine
- Avoid the accumulation of enclosures for some feeds
2020-09-20 23:12:23 -07:00
Frédéric Guillot
ad66250734 Archive older entries first 2020-09-14 20:21:38 -07:00
Frédéric Guillot
55fad7ea27 Avoid duplication between get feed entries and get entries API endpoints 2020-09-13 21:57:55 -07:00
Frédéric Guillot
04c4890124 API: Add the possibility to filter entries by a list of statuses 2020-09-12 21:35:18 -07:00
Frédéric Guillot
13c89c29c5 Add option to archive unread entries 2020-09-12 20:17:52 -07:00
Kebin Liu
cf7712acea
Add HTTP proxy option for subscriptions 2020-09-09 23:28:54 -07:00
Frédéric Guillot
8fb71366f8 API: Delete users asynchronously
Deleting large users might lock the tables in the hosted offering
2020-07-28 20:39:10 -07:00
Maxime Bailleul
ee5a8a05c9 Add reading time for entries 2020-07-16 19:47:41 -07:00
logan
5f266319a3 Add option to change the number of entries per page (fixes #40) 2020-07-08 20:14:31 -07:00
Shizun Ge
e32fa059e5
Do not archive shared items 2020-07-01 20:11:36 -07:00
Sergei O. Udalov
c0e407e156
Display recent entries first in search results 2020-06-30 20:50:34 -07:00
Frédéric Guillot
f52f00abcf Fix regression: the entire hstore field is replaced when updating settings 2020-06-16 20:02:13 -07:00
Frédéric Guillot
6c6ca69141 Add feed option to ignore HTTP cache 2020-06-05 22:04:52 -07:00
Frédéric Guillot
7e5157f218 Rename alternative scheduler to entry_frequency 2020-05-25 15:12:47 -07:00
Shizun Ge
cead85b165
Add alternative scheduler based on the number of entries 2020-05-25 14:06:56 -07:00
Frédéric Guillot
4cdfd64db0 Speed up feed list page rendering 2020-05-22 18:02:49 -07:00
Frédéric Guillot
70c2568af8 Add index to speed up slow query 2020-05-20 18:19:35 -07:00
Frédéric Guillot
eb8d8e84f2 Updating custom css field should also happen when updating the password
Bug introduced in PR #627
2020-04-25 20:26:02 -07:00
Alex McGrath
7accdc4416 Add the ability to use custom css 2020-04-22 20:53:09 -07:00
Frédéric Guillot
9871e4f5d0 Add page to list and remove shared entries 2020-03-22 19:53:44 -07:00
Frédéric Guillot
59c8dac851 Display Feed URL on shared page instead of user feed entries 2020-03-17 20:28:53 -07:00
Lesterpig
41a2b7e58e Add "Share article" feature
A new "shareCode" field is generated for each entry, and allows
unlogged users to access the entry through the /shared endpoint.
This feature is particularly useful to share articles from miniflux
to third-party users without having them to visit the original source.

The image proxy is disabled and special cache headers are proposed in
the shared page to avoid denial of service.
2020-03-17 20:09:46 -07:00
Frédéric Guillot
1b86913c00 Fix SQL injection in full-text search rank ordering
Introduced in commit 267b706544
2020-03-10 21:12:28 -07:00
Frédéric Guillot
25cc0d2447 Add per-application API Keys 2020-03-01 18:22:45 -08:00
Peter De Wachter
2570c3410b
History: show entries in the order in which they were read
Add a changed_at timestamp to the entries table. This field is updated
whenever the entry's metadata changes.
2020-02-10 20:20:03 -08:00
Frédéric Guillot
997e9422eb Ignore enclosures without URL 2020-01-30 21:18:49 -08:00
Benjamin Barenblat
cb494ac416 Correct spelling of “toggle” 2020-01-29 18:36:09 -08:00
Frédéric Guillot
69aa650203 Add the possibility to add rules during feed creation 2019-11-29 11:27:58 -08:00
Frédéric Guillot
7b995044b4 Make sure to remove integration settings when removing a user 2019-11-17 23:11:59 -08:00
Frédéric Guillot
e878dca3d7 Add API parameter to filter entries by category 2019-11-17 23:05:22 -08:00
Frédéric Guillot
fad9ad2be4 Display list of feeds per category 2019-11-17 20:10:44 -08:00
Frédéric Guillot
d3883126bf Improve storage module 2019-10-29 22:59:00 -07:00
Maxim Baz
e38333e272 Show unread counters on feeds page 2019-10-29 21:44:35 -07:00
Tony Wang
7409bba0d8 Compare Fever token case-insensitively 2019-10-21 20:00:16 -07:00
Frédéric Guillot
d610d091fe Avoid constraint error when having duplicate entries
During feed creation, duplicated entries will generate an SQL contraint error.

This change ignore the duplicated entry to avoid showing an error.
2019-09-18 22:53:47 -07:00
Ty Cobb
3a60abbac0 Make configurable the number of days to remove old sessions 2019-09-11 20:10:33 -07:00
Frédéric Guillot
3d19313a7f Add option to disable feeds 2019-07-26 21:24:15 -07:00
Frédéric Guillot
0dff432337 Remove debug timer from most storage functions 2019-04-28 20:21:31 -07:00
Frédéric Guillot
4295a86e55 Add option to enable/disable keyboard shortcuts 2019-04-28 18:35:58 -07:00
Jacob Wahlgren
22b68eefd8 Allow users to disable auto-remove
Adds ARCHIVE_READ_DAYS="-1"
2019-03-10 10:51:21 -07:00
Frédéric Guillot
f3fc8b7072 Use feed ID instead of user ID to check entry URLs presence 2019-02-28 20:43:33 -08:00
Jebbs
267b706544 Sort search results by relevance 2019-02-11 22:20:07 -08:00
Frédéric Guillot
7897d8a8ad Handle the case when application session is expired and not user session 2019-01-21 20:21:05 -08:00
Peter De Wachter
27e79a4693 Make the feed list order case-insensitive 2019-01-07 17:55:57 -08:00
Frédéric Guillot
012138179c Add function storage.UpdateFeedError() 2018-12-15 13:04:38 -08:00
Jebbs
87648490fd Make configurable the number of days to archive read items 2018-12-05 20:35:30 -08:00
Frédéric Guillot
cb037910df Archive more read entries 2018-11-25 15:01:01 -08:00
Frédéric Guillot
f6028f3863 Improve Fever middleware and handle groupID=0 2018-10-26 19:49:49 -07:00
Frédéric Guillot
74c35ad000 Add more details in feed storage errors to facilitate debugging 2018-10-21 11:48:29 -07:00
Frédéric Guillot
a614f98063 Set arbitrary maximum size for tsvector column
- The max size for tsvector is 1 MiB
- We index only the first million of characters,
  it should be enough for most feed entries.
2018-10-19 21:40:59 -07:00
Frédéric Guillot
778346b0b0 Simplify feed fetcher
- Add browser package to handle HTTP errors
- Reduce code duplication
2018-10-14 21:43:48 -07:00
Frédéric Guillot
11dfcdd3d6 Fix typo in license header 2018-10-08 15:50:15 -07:00
Frédéric Guillot
ddfe969d6c Improve Fever API performances when marking a feed or group as read 2018-10-07 12:50:59 -07:00
Patrick
2538eea177 Add the possibility to override default user agent for each feed 2018-09-19 18:19:24 -07:00
Dave Z
9169fbafb2 Show count of feeds with permanent errors in header menu
Only for feeds that reach `maxParsingError` are counted (so transient errors do not trigger counter).
2018-08-26 16:18:07 -07:00
Frédéric Guillot
dbcc5d8a97 Use canonical imports 2018-08-24 21:56:39 -07:00
Frédéric Guillot
cf03e0e338 Create database package (refactoring) 2018-08-01 20:28:45 -07:00
Frédéric Guillot
6d0dc451e4 Add search form 2018-07-04 22:05:19 -07:00
Frédéric Guillot
af15412954 Add full-text search for entries and add search parameter to the API 2018-07-04 17:40:03 -07:00
Frédéric Guillot
5cf504745b Add cli flag to reset all feed errors 2018-06-30 14:22:45 -07:00
Frédéric Guillot
dd78fb4340 Do not ignore errored feeds when a user refresh feeds manually 2018-06-26 23:02:41 -07:00
Frédéric Guillot
bddca15b69 Add new fields for feed username/password 2018-06-19 22:58:29 -07:00
Frédéric Guillot
c5373ff2bf Rewrite individual entry pagination SQL queries 2018-06-09 13:40:20 -07:00
Frédéric Guillot
bd70640794 Simplify entry query builder 2018-06-08 18:24:41 -07:00
Frédéric Guillot
cf7a7e25fb Convert IP field from text to inet type 2018-05-21 19:58:36 -04:00
Allan Reyes
0f3f5e442f Add Pocket integration 2018-05-20 13:31:56 -07:00
Frédéric Guillot
f19ab21b7d Archive read entries automatically after 60 days 2018-05-19 16:45:27 -07:00
Frédéric Guillot
31da4db14f Do not show save link if no integration is configured 2018-04-29 17:43:40 -07:00
Frédéric Guillot
b166ceaea7 Avoid people to unlink their OAuth2 account without having a local password 2018-04-29 17:04:43 -07:00
Frédéric Guillot
f49b42f70f Use vanilla HTTP handlers (refactoring) 2018-04-29 16:35:04 -07:00
Frédéric Guillot
15202b8675 Do not return an error if the user session is not found 2018-04-09 21:52:24 -07:00
Ben Brooks
538d08c16c Add CommentsURL to entry 2018-04-07 13:50:45 -07:00
Frédéric Guillot
482785c5e6 Convert enclosure size field to bigint 2018-03-14 20:09:06 -07:00
Frédéric Guillot
a8be61cdbb Filter the list of timezones 2018-03-04 17:38:08 -08:00
Frédéric Guillot
609c57332e Show last login and session creation date in current timezone 2018-03-04 17:04:31 -08:00