Commit Graph

280 Commits

Author SHA1 Message Date
Ilya Mateyko ab82c4b300 Subscribe to feeds with the Android Share menu 2021-01-02 11:48:07 -08:00
Bogdan Brinza 9a6c80f562
Updating read/star icons to SVGs 2020-12-29 20:47:18 -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 651ee02c11 Allow regular users to change settings via API 2020-12-22 15:20:36 -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 989ca163a3 Add styles for <abbr> HTML tag 2020-12-20 20:24:01 -08:00
Clément Joly f88e93a0b9
Add Server-Timing header to unread page 2020-12-18 15:08:17 -08:00
Frédéric Guillot 2cf9bde1af Show correct User Agent in input placeholders 2020-12-16 21:30:22 -08:00
Frédéric Guillot d70b4d39ab Show Git commit in about page 2020-10-28 21:22:23 -07:00
Frédéric Guillot 99f20868ad go mod tidy + go generate 2020-10-19 22:19:48 -07:00
Richard Schneider cc8eb89ce0
Add keyboard shortcut to scroll current item to the top 2020-10-16 15:44:03 -07:00
Manuel Garrido 84b83fc3c8
Add feed filters (Keeplist and Blocklist) 2020-10-16 14:40:56 -07:00
Frédéric Guillot 6117a2f3cd Proxify articles crawled manually 2020-10-07 22:26:52 -07:00
Tony Wang 37bc451741
Remove plaintext Fever password from database 2020-10-06 21:22:24 -07:00
Richard Schneider 93f90dae68
Add keyboard shortcut to jump to an item's feed page 2020-10-06 18:06:12 -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 16b7b3bc3e http client: remove dependency on global config options 2020-09-27 14:37:46 -07:00
Dave Z 6d25fb715b
Various CSS tweaks and optimizations
Prevent sub and sup from affecting line-height.

Set touch-action on .items to prevent browser navigation.

Move font-family specific CSS to the appropriate file.

Update primary font-family for UI to be even more
compatible with various operating systems.

Make .entry-content font-weight variable depending
on font-family used.
2020-09-26 18:21:26 -07:00
Frédéric Guillot b015887b02 Avoid Javascript minifier to break keyboard shortcuts 2020-09-23 21:01:58 -07:00
Frédéric Guillot 75b11d5744 Rename service worker script to avoid being blocked by uBlock 2020-09-23 20:40:06 -07:00
Frédéric Guillot debbf5a5b0 Enable strict slash to avoid 404 when using trailing slash 2020-09-13 18:02:08 -07:00
Frédéric Guillot a8de067810 go mod tidy + go generate 2020-09-09 23:31:25 -07:00
Kebin Liu cf7712acea
Add HTTP proxy option for subscriptions 2020-09-09 23:28:54 -07:00
Pedro Lucas Porcellis e1c9e6ccb4
Add link to mark a feed as read 2020-08-19 22:17:33 -07:00
Frédéric Guillot eaf1fc896f Redirect to login page if CSRF token is expired
This will force the form to be populated with a valid token.
2020-08-09 13:16:57 -07:00
Frédéric Guillot 943e7a7317 Align entry actions to the left
- Attempt to avoid awkward alignment on smartphone screens
- Keep the read/star actions aligned to the left
- Remove css flex to allow easier override with custom CSS
2020-07-28 22:26:32 -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
Frédéric Guillot 8304666261 Use stdlib constants for HTTP methods instead of strings 2020-06-21 21:21:10 -07:00
Frédéric Guillot 43bf6696d5 Revert "Always align action items to the right even when the window is small "
This reverts commit c9618458cb.
2020-06-17 21:48:07 -07:00
Frédéric Guillot 5e5615a2d1 Add icons to feeds and categories list 2020-06-14 19:22:31 -07:00
Shizun Ge fe8347f32a
Change feed title to a link to original website 2020-06-11 21:07:13 -07:00
Shizun Ge c9618458cb
Always align action items to the right even when the window is small 2020-06-10 20:24:11 -07:00
Frédéric Guillot 6c6ca69141 Add feed option to ignore HTTP cache 2020-06-05 22:04:52 -07:00
Vitor Pellegrino 7fb0bdc9a5
Adds keyboard shortcut for refreshing all feeds
- Binds the 'R' key to trigger a refresh in the background for all
feeds.
- Updates the locale, using the same description as the link in the
feeds page.

Co-authored-by: Vitor Pellegrino <pellegrino@linux.com>
2020-05-26 21:35:44 -07:00
Frédéric Guillot c920a8607c Add CSS styles for textarea 2020-04-25 20:35:29 -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 84229f1af9 Add some CSS tweaks for mobile devices 2020-03-22 16:33:35 -07:00
Frédéric Guillot 3c3241f93c Add SVG icons to entry actions 2020-03-22 15:37:13 -07:00
Frédéric Guillot 05b88c8add Change share uri 2020-03-19 20:56:23 -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
Patrick 3e1e0b604f
Add generic OpenID Connect provider (OAuth2)
This adds the oauth2 provider `oidc`. It needs an additional argument, the OIDC discovery endpoint to figure out where the auth and token URLs are.

Configuration is similar to setting up the Google Authentication with these changes:

 * `OAUTH2_PROVIDER = oidc`
 * `OAUTH2_OIDC_DISCOVERY_ENDPOINT = https://auth.exampe.org/discovery`
2020-03-07 18:45:19 -08:00
Frédéric Guillot 25cc0d2447 Add per-application API Keys 2020-03-01 18:22:45 -08:00
Pavel Borzenkov 7389c79c52 Implement support for authentication via Auth Proxy
Auth Proxy allows to authenticate a user using an HTTP header provided
by an external authentication service. This provides a way to
authenticate users in miniflux using authentication schemes not
supported by miniflux itself (LDAP, non-Google OAuth2 providers, etc.)
and to implement SSO for multiple applications behind single
authentication service.

Auth Proxy header is checked for the '/' endpoint only, as the rest are
protected by the miniflux user/app sessions.

Closes #534

Signed-off-by: Pavel Borzenkov <pavel.borzenkov@gmail.com>
2020-02-24 19:43: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 dc4240e702 Add button to add to Home screen 2020-02-09 11:57:34 -08:00
somini 078f886f39 Align Info and Actionable items separately
Align the information to the left side, and the actionable buttons to
the right.

See https://github.com/miniflux/miniflux/pull/531#issuecomment-578547488
2020-01-28 20:25:10 -08:00
Vincent Bernat 15727f716a Redirect to /unread when getting a 404 for an unread expired entry
Hosted miniflux don't keep read entries for long. If I leave my PC at
home on an unread entry, read everything pending at work and get back
to home later, when I click "next", I get a bare 404 error. I have to
go back to /unread myself. I think it would be more user friendly (but
maybe a bit suprising) to go directly to /unread in this case.
2020-01-24 20:27:50 -08:00
Richard Schneider 476898b1d4 Do not advance to the next item when using the 'v' shortcut on the list of starred items 2020-01-14 11:54:21 -08:00
Richard Schneider 1a78e3a5bc Wrap around when navigating with keyboard shortcuts on a list view 2020-01-10 19:26:45 -08:00
Richard Schneider 6ebb29cd22 Add comments link keyboard shortcut 2020-01-06 22:02:02 -08:00
Frédéric Guillot 08fc32b0e1 Use white background for favicon
Improve legibility when using a dark theme.
2019-12-30 15:51:52 -08:00
Frédéric Guillot 6291b59849 Use V to open original link in current tab
- To avoid a breaking change, keep v to open the original link in new tab.
- People who prefers to open the link in the current tab should use V.
2019-11-29 13:58:47 -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 8028cc764f Wrap attachments into <details> disclosure element 2019-11-29 10:59:05 -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 63a549f0e3 Remove fixed table-layout for entry content 2019-11-17 17:08:20 -08:00
Vincent Bernat 881c0f406b Do not lighten blockquote font color
It is confusing to have blockquote content displayed with a lighter
font color. Usually, quotes are important to the text while reducing
the contrast may hint a user it is not. In my case, I usually skip the
content of the blockquote as it was some additional note in the text.

Without the color change, the blockquote is still indented
differently, with the vertical bar. It should be enough for a user to
identify it as a quote.
2019-11-15 19:52:40 -08:00
Maxim Baz 21f8b03483 Make "v" open link in the current tab on entry page 2019-10-30 20:19:48 -07:00
Maxim Baz e38333e272 Show unread counters on feeds page 2019-10-29 21:44:35 -07:00
Jebbs bf357a0e2d Add toast message for some keyboard shortcuts
Add notification message when using keyboard shortcuts: f, s, and m.
2019-10-06 20:55:15 -07:00
Adam Hess 02dbe3ef2e call preventDefault() when the user is trying to enter a keyboard shortcut
Keyboard shortcuts might conflict with Firefox’s "Find as you type" feature.
2019-10-06 16:24:39 -07:00
Frédéric Guillot e0b600b651 Add CSS tweak and fix typo in variable name 2019-09-25 19:55:55 -07:00
Frédéric Guillot 3379429329 Log image proxy URL in debug mode 2019-09-22 11:38:45 -07:00
Frédéric Guillot bdca3372f9 Add few CSS teaks 2019-09-22 10:50:10 -07:00
Frédéric Guillot afe1faf214 Add theme variants
- Use CSS variables instead of inherence
- Rename default theme to "Light - Serif"
- Rename Black theme to "Dark - Serif"
- Rename "Sans-Serif" theme to "Light - Sans Serif"
- Add "System" theme that use system preferences: Dark or Light
- Add Serif and Sans-Serif variants for each color theme
2019-09-21 20:04:42 -07:00
Peter De Wachter 937492f6f5 Do not buffer responses in the image proxy
The image proxy buffered the whole image before sending it to the
browser. If the image is large and/or hosted on a slow server, this
caused a long delay before the user's browser could display anything.
2019-09-10 20:43:44 -07:00
Frédéric Guillot b94160df72 Update dependencies 2019-09-05 21:53:12 -07:00
Frédéric Guillot 2d27f53941 Replace link border by outline to avoid slight content shift 2019-09-05 21:22:58 -07:00
Frédéric Guillot 77125f45cc Improve import form 2019-08-15 22:21:18 -07:00
Peter De Wachter d882bbca85 Import OPML from URL 2019-08-15 21:58:01 -07:00
Frédéric Guillot 3d19313a7f Add option to disable feeds 2019-07-26 21:24:15 -07:00
Jebbs 17aae72583 Fix regressions introduced in previous JS refactoring 2019-07-25 19:02:39 -07:00
Frédéric Guillot a634839678 Ask for confirmation before clicking on mark all as read 2019-07-17 22:00:00 -07:00
Frédéric Guillot ac3693562b Ask for confirmation before flushing history 2019-07-17 21:40:03 -07:00
Frédéric Guillot 99149d9f2a Refactor confirmation handler 2019-07-17 21:15:30 -07:00
Frédéric Guillot 2b6e17c1ef Refactoring of Javascript code 2019-07-17 20:34:11 -07:00
Matías Lang 34421dcd49 Require confirmation for marking pages as read 2019-07-17 17:44:32 -07:00
Frode Aannevik 48abf57218 Add .search margin-right 2019-07-13 13:11:39 +02:00
Frédéric Guillot 228862fefa Refactor config package
- Parse configuration only once during startup time
- Store configuration values in a global variable
2019-06-02 06:30:08 -07:00
Ben Cohen 04d85b3c63 Flip behavior of j and k keyboard shortcuts 2019-05-26 20:02:52 +02:00
Frédéric Guillot 4295a86e55 Add option to enable/disable keyboard shortcuts 2019-04-28 18:35:58 -07:00
Diego Agulló a6068aae1d Improve page reload when showing unread/all entries
- Show only unread entries = refresh current page
- Show all entries = go to next page
2019-04-04 18:59:04 -07:00
3ddysan fc473f1d11 Add double tap detection for next/previous page navigation 2019-03-11 20:23:19 -07:00
Frédéric Guillot 1634e267b8 Fix typo in stylesheet 2019-02-19 17:57:40 -08:00
Jebbs 267b706544 Sort search results by relevance 2019-02-11 22:20:07 -08:00
Frédéric Guillot 04b6eb509c Rename session cookies 2019-01-21 20:26:46 -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 6f5ef10553 Only attempt to change password if the confirmation field is filled in
Firefox autocompletes the password field (but not the password
confirmation field) for me. This makes it annoying to use the settings
page, because miniflux thinks I'm trying to change my password and
complains that the fields don't match.
2019-01-07 18:25:59 -08:00
Frédéric Guillot a9fad093e6 Move healthcheck endpoint from ui package to httpd service 2018-12-28 13:41:26 -08:00
Frédéric Guillot 078cd0050a Make sure that <strong> elements are bold 2018-12-19 22:30:05 -08:00
Frédéric Guillot e367f4ca21 Show scrollbars only when necessary for <pre> elements 2018-12-16 20:12:26 -08:00
Diego Agulló cf25efb4d9 Allow to switch between unread only and all entries on category/feed views 2018-12-16 16:58:48 -08:00
Frédéric Guillot 43ccaf52af Preserve category selection when no feed is found 2018-12-12 21:31:50 -08:00
Frederic Guillot 59d8e9b95e Update dependencies 2018-12-09 17:59:39 -08:00
Frédéric Guillot 311a133ab8 Refactor manual entry scraper 2018-12-02 20:51:06 -08:00
djbshfbzehr 52de36b158 Apply rewriter rules on manual "Fetch Original Content" 2018-12-02 20:29:44 -08:00
Frédéric Guillot 487852f07e Replace daemon and scheduler package with service package 2018-11-11 15:32:48 -08:00
Frédéric Guillot ca45765c46 Improve logging messages in ui package 2018-11-11 11:47:41 -08:00
Frédéric Guillot 5a69a61d48 Move UI middlewares and routes to ui package 2018-11-11 11:29:12 -08:00
Diego Agulló a70e9d03ff Ignore hotkeys containing Control, Alt or Meta keys
Fixes #260
2018-10-31 13:59:02 +01:00
Frédéric Guillot dc8668b904 Improve logging for OAuth2 callback 2018-10-22 20:49:10 -07:00
Frédéric Guillot f06a19814b Revert "Call preventDefault() when a keyboard shortcut is executed"
This reverts commit 9440bf47a5.
2018-10-22 20:26:17 -07:00
Frédéric Guillot 9440bf47a5 Call preventDefault() when a keyboard shortcut is executed 2018-10-21 18:32:07 -07:00
Carl Helmertz 8c65c78904 NavHandler: Make "g f" go to feed, or list of feeds
When you're reading an entry, you may want to go to the feed first,
before quickly continuing to reading all of the feeds with another "g
f".
2018-10-21 11:53:17 -07:00
Carl Helmertz 15a11c3da9 Unsubscribe from feed through link or "#"
After importing old OPML files, you may discover that many feeds are
obsolete or uninteresting. You list the feeds entries and determine that
you want to unsubscribe. This needs three clicks (edit feed, delete,
confirm) and requires moving the mouse to hit the different targets.

This quickly becomes tiring, if you are up to possibly deleting hundreds
of feeds. One mediation, introduced in this commit, is to add an
unsubscribe link to each feed's entry listing view, and also adding a
keyboard shortcut.

The keyboard shortcut "#" is:
* longer than one keystroke (requires shift)
* hard to type by accident
* used in Google products (thanks for the hint @fguillot)

In an effort to try to reduce the number of accidental feed
unsubscriptions.
2018-10-19 20:05:26 -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 c1fe84521e Fix jshint error introduced in commit d4c1677 2018-10-08 21:09:25 -07:00
Frédéric Guillot d4c1677e38 Change link state when marking all entries as read 2018-10-08 18:49:15 -07:00
Frédéric Guillot 9dc38a0803 Add missing package descriptions for GoDoc 2018-10-08 17:32:17 -07:00
Frédéric Guillot 11dfcdd3d6 Fix typo in license header 2018-10-08 15:50:15 -07:00
Frédéric Guillot 1f58b37a5e Refactor HTTP response builder 2018-10-08 15:31:58 -07:00
Diego Agulló 98206059fc Set focus on article link when pressing prev/next hotkeys
This enhancement offer the possibility to open articles in the background by using the browser hotkey Ctrl+Return or Cmd+Return.
2018-10-01 20:52:51 -07:00
Frédéric Guillot 9d08139f43 Improve request package and add more unit tests 2018-09-23 21:02:26 -07:00
Frédéric Guillot b1e8f534ef Simplify locale package usage (refactoring) 2018-09-22 15:04:55 -07:00
Frédéric Guillot 5d75089127 Use disclosure widget <details> for advanced feed options 2018-09-21 23:11:58 -07:00
Frédéric Guillot beb7a0cfcb Use unique translation IDs instead of English text as key 2018-09-21 22:23:23 -07:00
Patrick 2538eea177 Add the possibility to override default user agent for each feed 2018-09-19 18:19:24 -07:00
Frédéric Guillot c9f9dd3262 Store client IP address in request context 2018-09-09 15:15:14 -07:00
Adam Vigneaux 07cd7d2135 Add "Mark this page as read" to the bottom
This better matches the most common use case for the "Mark this page as
read" link, which is to click it once you have reached the bottom of the
page. Especially on mobile, it can be annoying to scroll to the top of
the page to click the link.
2018-09-08 18:40:23 -07:00
Frédéric Guillot eee1f31903 Refactor HTTP context handling 2018-09-03 14:26:40 -07:00
Dave Z 5341bbcbe2 Add toggle status button to entry page 2018-08-28 20:44:34 -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 551b73acfb Add remove button in feed edit page 2018-08-25 12:21:54 -07:00
dzaikos 4148d8af80 Added remote client IP to login failure error message.
Fixes #205
2018-08-25 02:47:34 -04:00
Frédéric Guillot dbcc5d8a97 Use canonical imports 2018-08-24 21:56:39 -07:00
Frédéric Guillot cfc1f3eb69 Avoid browser caching issues when assets changes 2018-07-22 12:24:46 -07:00
Frédéric Guillot 9f6533ece9 Compress JSON, CSS and Javascript responses 2018-07-19 19:27:05 -07:00
Frédéric Guillot a291d8a38b Improve themes handling
- Store user theme in session
- Logged out users will keep their theme
- Add theme background color to web manifest and meta tag
2018-07-18 22:30:05 -07:00
Frédéric Guillot c1ab27172c Update application icon with different sizes 2018-07-18 21:30:54 -07:00
Frédéric Guillot 73a6e617bb Add few tweaks to the layout
- Increase truncate length to 35 chars for feed titles
- Add bottom margin for main menu in mobile view
- Add tooltip to feed domain in feeds list
2018-07-17 19:01:28 -07:00
Dave Z 3f31744911 Prevent vertical scrolling on swipe 2018-07-17 18:48:56 -07:00
Frédéric Guillot 6aa02680d8 Add service worker to cache feed icons 2018-07-15 21:51:09 -07:00
Frédéric Guillot 3bdb9251da Use passive event listeners for touch events
Avoid this warning in Chrome console: https://www.chromestatus.com/feature/5745543795965952
2018-07-10 20:41:27 -07:00
Frédéric Guillot ca30800e6a Pre-generate themes stylesheets at build time 2018-07-07 11:00:39 -07:00
Frédéric Guillot 34a3fe426b Compress HTML responses to Gzip/Deflate if supported by browser 2018-07-06 20:39:28 -07:00
Frédéric Guillot 53deb0b8cd Refactor assets bundler and split Javascript files 2018-07-05 22:18:51 -07:00
Frédéric Guillot 845cf2adba Remove timestamp from generated files 2018-07-05 12:52:29 -07:00
Frédéric Guillot 6d0dc451e4 Add search form 2018-07-04 22:05:19 -07:00
dzaikos c3628813c6 Keep consistent text size on mobile orientation change
using vendor-specific CSS `*-text-size-adjust`.
2018-07-03 12:51:24 -07:00
Frédéric Guillot cc1e4f916f Avoid Chrome to autocomplete no-login password fields
Browsers always autocomplete saved passwords even with autocomplete="off".

https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion
2018-06-30 18:05:51 -07:00
Frédéric Guillot 240f801755 Always mark the entry as read after fetching the pagination in unread mode 2018-06-30 17:35:06 -07:00
Frédéric Guillot 77947282e4 Make sure we always get the pagination in unread mode 2018-06-29 20:29:04 -07:00
dzaikos 0227bb9828 Set opener to null when opening original URL with JavaScript. 2018-06-28 02:13:53 -04:00
Frédéric Guillot 9d8b5421ed Remove unnecessary style 2018-06-26 23:03:46 -07:00
Frédéric Guillot bddca15b69 Add new fields for feed username/password 2018-06-19 22:58:29 -07:00
Dave Z be95e87e0e Added Sans-Serif theme. 2018-06-19 00:57:30 -04:00