Bug Fixes
- api: bypass image proxy errors (bb22cf2)
- api: disable CORS for articles endpoint (d248eca)
- article: fix bad GQL category ID decoding (b189602)
- article: fix bad UTF8 encoding (4360a91)
- article: fix counter when using full-text (62ec753)
- article: fix mark all as read (3de1802)
- article: improve article creation error mgt (085b65a)
- article: improve error handling (03a4fb4)
- article: improve hydratation trigger (485a3d2)
- articles: fix bulk status update SQL (1039fc4)
- articles: fix category type for markAllArticlesAsRead mutation (01623a9)
- category: trim category name (18183cf)
- doc: fix image locations (23551a3)
- doc: fix image locations (5289aab)
- docker: add API root env value (f99a2fb)
- docker: reset compose configuration (7be8c01)
- docs: fix logo url (55d1e1e)
- download: write error as problem details (a9f7a4e)
- event: fix nil pointer (0a1e7f3)
- exporter: clean image relative name (27caf41)
- exporter: fix export filename (2b96a54)
- fix clean history response (09b7b2a)
- fix healthz endpoint (554808e)
- fix mark all as read counter update (84f2082), closes #21
- fix test (1962c2d)
- fix update for articles without category (f484295)
- fix windows support (09ce837), closes #38
- incoming-webhook: fix Origin script variable (3cf9823)
- incoming-webhook: simple script DoS protection (eb0b7e9)
- integration: fix QR code generated URL (69cdb69)
- integration: fix S3 credentials configuration (096ff52)
- landing: add content dir (6731bfd)
- landing: fix contact form result redirection (80fc188)
- landing: fix contact function (5f3e8b7)
- landing: fix imports (a04ed26)
- landing: fix mail API (82fdcd7)
- landing: fix mail config (6951a9e)
- landing: only use dynamic for authenticated pages (2282ad3)
- lint bookmarklet (0e24f9d)
- lint public js files (fef557e)
- mail: better mail encoding support (f7cf7bf)
- middleware: return JSON error (bda0f2f)
- outgoing-webhook: fix template usage (1860cba)
- rule-engine: use webhook key instead of from (efcbfe6)
- rule: add empty key to rule context (66f4e8f)
- schema: fix "1M article bug" (f9c3135)
- scraper: fallback on excerpt if text is empty (1568aa7)
- scraper: fix nil pointer when scraping title (be4584f)
- scraper: fix oEmbed providers generated list (e1be304)
- scraper: format oEmbed generated file (3079bac)
- scraper: get title from Twitter meta (fa5836d)
- scraper: improve content type check (f8259b8)
- scraper: improve title extraction (93b41cb)
- scripting: use bg context for task execution (1e80f59)
- ui: activate grid mode for offline view (fa3d73e)
- ui: add margin to last article card (93f6ed8)
- ui: add non null assertion (46a64ca)
- ui: avoid error if article URL is bad (e6ecd27)
- ui: block content redraw when staring an article (2df30fa)
- ui: break card title if needed (6dac606)
- ui: bring back route to create article (44e0246)
- ui: bring back route to create article (3151f3b)
- ui: catch Apollo cache error (d1560df)
- ui: catch token expiration on init phase (c9d5f25)
- ui: delay key bind to avoid unbind race condition (ugly) (56018fe)
- ui: dialog z index (d235251)
- ui: disable context reloading on fetching more articles (72bb9ee)
- ui: display article text when no HTML content (1fb5b3d)
- ui: finalize oidc-context removal (d5533bf)
- ui: fix article content duplication due to refresh (e577a98)
- ui: fix article counter on pagination (208d451)
- ui: fix article overflow issue (4eba44e)
- ui: fix AuthN provider multi call (f0364c3)
- ui: fix bad header name (7e02c7d)
- ui: fix boucing call with infinite scroll (205c7d1)
- ui: fix card illustration position (3b8b27e)
- ui: fix category switch order (838ea9a)
- ui: fix center position (d2b3bf4)
- ui: fix code editor (d6e16b3)
- ui: fix components (e6098f2)
- ui: fix context menu visibility issue (6ac7866)
- ui: fix contextual menu click handler (1413043)
- ui: fix crash when outgoing provider is not set (9d32f9d)
- ui: fix dropdown menu click event (4800d5a)
- ui: fix eslint errors (68a789f)
- ui: fix feedpushr logo size (c657c1c)
- ui: fix generic webhook edit form (cc8f54e)
- ui: fix GraphQL cache management (92fd6e6)
- ui: fix help URL (00dcb93)
- ui: fix iframe image aspect ratio (7d2081c), closes #2
- ui: fix image proxy URL encoding (d4fef65)
- ui: fix infinite scroll behavior (a6818b4)
- ui: fix infinite scroll flickering (ae083f9)
- ui: fix invalid_grant exception (de98974)
- ui: fix iOS scrolling issue (91974bb)
- ui: fix keeper config form pre validation (6f1ed43)
- ui: fix lint error (0f442a0)
- ui: fix lint errors (daa1e34)
- ui: fix lint errors (1569a94)
- ui: fix lint errors (8784aeb)
- ui: fix maskable icons (ad71f4e)
- ui: fix more articles loader behavior (edbef3a)
- ui: fix navbar for mobile layout (b2c0858)
- ui: fix new articles component (83c7d48)
- ui: fix next page request with a category (cc5c322)
- ui: fix nono's christmas bug (de9d22a)
- ui: fix offline pagination (96c798f)
- ui: fix outgoing webhook creation (350d0e4)
- ui: fix pocket configuration form (efee7d3)
- ui: fix QR code authn (802a120)
- ui: fix redirection handling (a87687f)
- ui: fix refresh function (b1bb487)
- ui: fix rendering flickering of an article (3403ac3)
- ui: fix responsive image rendering (31136f9)
- ui: fix scroll re-rendering (6af34c3)
- ui: fix scrolling memory (4ae322a)
- ui: fix send link loading state (1e383f7)
- ui: fix settings tabs (884a9f9)
- ui: fix Single Logout support (9882745)
- ui: fix small UX bugs (47f81a4)
- ui: fix state management (d2e025b)
- ui: fix state management on unmounted component (a67abce)
- ui: fix SVG CSS (e6a1a4a)
- ui: fix swipe beahivor (19f7018)
- ui: fix swipe for article cards (13577cb)
- ui: fix theme switcher (9bd8ffc)
- ui: fix too agressive URL cleanup (ae3709d)
- ui: fix undefined on categories badge (49aac4e)
- ui: fix undefined pointer (69c3895)
- ui: force https scheme for article images (76bc85d)
- ui: give focus to the iframe and propagate key events (608a803)
- ui: handle form submit properly (75d69bb)
- ui: handle redirect after login (e7515eb)
- ui: improve article iframe css (e0886a1)
- ui: improve auth error detection (aa55f48)
- ui: improve bookmarklet error report (4638418)
- ui: improve context to avoid useless render (9b40c52)
- ui: improve history behavior (332352d)
- ui: improve iframe creation (3145355)
- ui: improve scroll memory hook (8bb5a21)
- ui: improve search visual on Chrome (186299a)
- ui: increase script size (1f5648e)
- ui: keep device registration alive (52904d1)
- ui: lint (819da7f)
- ui: load more articles properly (4c33601)
- ui: lock properties propagation (62bab74)
- ui: move user plan from device section (ee1e79a)
- ui: move user plan from device section (1669deb)
- ui: new article modal width (a0280bb)
- ui: open article links into a new window (165b3fb)
- ui: push subscription reset on error (8b89e71)
- ui: push subscription reset on error (5a8f01f)
- ui: redirect to about page if no previous run (be536b0)
- ui: remove before install prompt (4aee367)
- ui: remove duplicate articles on network rebounds (d87525e)
- ui: remove illustration lazy loading for UX reason (a05720f)
- ui: remove screen flickering when login (14e9747)
- ui: remove screen flickering when login (5257742)
- ui: remove swipeable item onclick event (6fa96cd)
- ui: revert card image size (cf9adab)
- ui: save article illustration for offline usage (0117fd8)
- ui: set current user as global context (6ee27c3)
- ui: small category fix (63632e6)
- ui: small fix (66a0006)
- ui: small visual improvements (43b9d2a)
- ui: trigger visibility detection after first rendering (66c80f3)
- ui: use crossOrigin for img tags (f8b5237)
- ui: use login fn regarding the auth provider (e0ad9cd)
- ui: use ref for swipeable list item (6ba340c)
- using int instead of uint with graphql (c8db016)
Features
- add API key repository (256b1de)
- add Article repository (b502102)
- add articles creation API endpoint (ee8f26f)
- add Category repository (4af960b)
- add configuration variables to expvars (29070c0)
- add events and metrics systems (25aaae2)
- add gzip middleware (b8e0f2a)
- add hard limitations to ingest API (87f7999)
- add init configuration command (80d6c7f)
- add link to notification (66b013e)
- add OpenID Connect as main AuthN provider (4585920)
- add Sentry support (2943724)
- add User repository (0afc1cd)
- admin: user details query (c8b48a6)
- api-key: add GraphQL endpoints (2f23547)
- api: add CRUD GraphQL API for archivers (20876ec)
- api: add GQL API keys management API (0b8d099)
- api: add GQL category API (979d0b5)
- api: add GQL me query (6217318)
- api: add GQL query for articlesw (27ae47d)
- api: add rate-limiting on ingest API (40e2465)
- api: allows localhost for CORS (816aff7)
- api: article creation accurate resp status (bee9cb4)
- api: finish GQL APIfor articles (556fee2)
- api: limit /varz access for admins (064b470)
- archive-service: add webhook as new archive service provider (f552240)
- archive: add Wallabag archive service (6914e21)
- archiver: add GraphQL endpoints (956b8dc)
- archiver: add Nunux Keeper archive provider (994eba3)
- archiver: customize payload for Webhook (1887af8)
- archiver: set only one default archiver per user (ab1fb38)
- article: add headers to article archive (ae3a4e6)
- article: add new article (44200f9)
- article: full-text search (#22) (4631f6c)
- article: hydrate article on creation (c0771fe)
- article: mark all articles as read (62ba314)
- article: sanitize HTML content (a825aee)
- articles: improve article data extraction (65ae8ca)
- articles: single or multiple articles for ingest endpoint (14a3740)
- article: update article attributes (836d101)
- article: use stars to rate an article (7dd62af), closes #25
- auth: add headers for proxied authentication (#26) (65ece28)
- authn: Basic Autentication support (5dcd1ff)
- avatar: avatar set is customizable (bc4f1bb)
- bookmaklet: base engine (e93a894)
- bookmarklet: add loading indicator (25141e3)
- bookmarklet: display success screen (dff6eb9)
- bookmarklet: finalize bookmarklet (c18a9b2)
- categories: add unread counters (c12fd21), closes #8
- category: add GraphQL endpoints (d0e33e2)
- category: put rule management inside category (9436cbf)
- category: set notification strategy (a3a0ec2)
- CLI params for log configuration (0a05cbc)
- config: configuration refactoring (128a9b4)
- device: automaticaly remove inactive devices (e00d697)
- doc: add french documentation (2ad69a9)
- docs: init documentation (05ddcac)
- download as... (c207485)
- download standalone article copy (75b4da2)
- enable AuthN configuration (bde9670)
- event: add external event broker (60dfbf2)
- event: add user modification event (a8352e1)
- event: emit unregistration events (10a2a5b)
- event: encapsulate payload for external events (858d535)
- exporter: download article as ZIP file (2f9cc8d)
- exporter: download as EPUB file (75a5cd6)
- exporter: merge webarchiver and converter into exporter (9024fcb)
- exporter: PDF and MD support with txtpaper (57f24e2)
- exporter: replace txtpaper by built-in service (0d0c034)
- improve offline support (c021d53)
- improve offline support (dc21e5b)
- improve tests (8486331)
- incoming-webhook: add quota (016b0c6)
- incoming-webhook: add scripting (80ede69)
- incoming-webhook: finalize scripting (36fc441)
- integration: add Pocket support (7c77489)
- integration: add QR code to share incoming webhook configuration (e3237a9)
- integration: create S3 outgoing webhook (289faa9)
- integration: generic webhook refactoring (eaca909)
- integration: outgoing webhook improvements (ce1af55)
- integration: show incoming webhook email (56ed739)
- job: add cleanup job (8570769)
- landing: add landing page (aa677bb)
- landing: enable contact terms and privacy pages (4807498)
- landing: favicon (5bc9453)
- landing: fix WIP status (8d19c64)
- landing: improve SEO (ce2ec48)
- landing: improve SEO (31e15a4)
- landing: use mailgun compatible email API (a7a29f4)
- login: redirect to landing page if no user (642530b)
- mail: add multipart support (efd5dd3)
- mail: send mail to incoming webhook (64bdde6)
- manage internal and external avatar (3f4bdd3)
- manage personal data (5fbfa15)
- metrics: add user and article metrics (e1cc04c)
- minify HTML content (55618ff)
- move GraphQL UI from API to UI (bf14df7)
- new reading flow (#36) (4e9b083)
- new version notification (915870f)
- notification: add rate-limiting (6a75c59)
- notification: improve workflow (ae317d0)
- offline: improve offline user feedback (574fd9a)
- outgoing_webhook: timeout set by the user plan (f2db349)
- outgoing-webhook: add href property to generic webhook (b772f33)
- outgoing-webhook: add origin to readflow provider (6b3fea8)
- outgoing-webhook: add quota checking (befb51d)
- outgoing-webhook: add Readflow provider (8a98f40)
- outgoing-webhook: add Shaarli provider (6ea30e8)
- outgoing-webhook: secrets management (f2bbd2e)
- plan: finalize user plans (a56b099)
- plan: user plans to manage quotas (b995b9d)
- push: add notification push (260ef85)
- review context usage (afc77db)
- rule-engine: add case manipulation functions (cd372b2)
- rule: add API key alias to rule's context (ed9c04d)
- rule: add rule engine (c612417)
- rule: add rules managment (8be8284)
- rules: refactoring of rule's attributes (e7ba822)
- sanitizer: add defaults to the block list (bab4d14)
- sanitizer: block ads and trackers with block-list (764fdee)
- scafolding: initial commit (8251241)
- scraper: add external Web Scraping service (7034bba)
- scraper: add oEmbed content provider support (923c322)
- scraper: add Youtube content provider support (0dd623e)
- scraper: improve scraper (cd8c64e)
- scripting: add disableGlobalNotification fx (d9a96e1)
- send notification only if user is inactive (752eddd)
- service: improve logs (2d2fb08)
- simplify self-hosting setup (ca1adbe)
- starred: mark articles as starred (7e085a5)
- ui: add bookmarklet (c37bdd6)
- ui: add confirmation dialog for "mark all as read" action (e246550)
- ui: add css to article iframe (77854df)
- ui: add download progress indicator (c334e57)
- ui: add grid display mode (d207a9b)
- ui: add lazy image component (65f7f2f)
- ui: add links to the doc (7c3fede)
- ui: add loader while saving an article (8f0c46b)
- ui: add mock AuthN service (2f55d0c)
- ui: add outgoing webhook inline help (e37ad6b)
- ui: add share link for an article (75c0c9b)
- ui: add shortcuts keyboard help (c06b7e1)
- ui: add star button to article page (922038f)
- ui: add swipe gesture for article cards (861afca)
- ui: add Web Share Target support (ad4774a)
- ui: article counter is live updatedw (0380516)
- ui: better display mode managment for articles page (afebe5e)
- ui: card visual refactoring (a5beb9a)
- ui: close notifications when app is visible (8d49fcc)
- ui: code editor for scripting (1f7df21)
- ui: configure category for new article form (58a2541)
- ui: copy API key into the clipboard (6b908bd)
- ui: display article category (94dc92e)
- ui: display version in about page (de753ba)
- ui: edit article (e5c252f)
- ui: enabled service workerw (06164bf)
- ui: feedback when add new article (ed5d614)
- ui: finalize about page (ee509d2)
- ui: finalize dark theme (11364ee)
- ui: fix offline authentication (034e7be)
- ui: go back to the listing after article status update (a1f3509)
- ui: handle pagination for offline articles (493bcb8)
- ui: image lazy loading (42122fb)
- ui: improve grid layout (7f61e08)
- ui: improve keyboard shortcuts (aca3c8e)
- ui: improve loading and reloading behavior (0af7ccf)
- ui: improve mobile ergonomy (e1181a3)
- ui: improve mobile visual (c8d2a47)
- ui: improve offline support (a464339)
- ui: improve pages title (50bc7f2)
- ui: improve PWA manifest (084f52c)
- ui: improve readability style (6f406a8)
- ui: improve readability style (1e294a1)
- ui: improve redirect screen (6b18c41)
- ui: improve responsive design (7359fec)
- ui: improve theme support (14ddf30)
- ui: improve update notification (f350367)
- ui: improve visibility API usage (d305543)
- ui: introduce logo component (5306f3a)
- ui: manage notification in settings screen (#14) (c7a01de)
- ui: memorize page scroll position (af76599)
- ui: memorize scrolling position (c0ea181)
- ui: memorize sort orders (94837f3)
- ui: move about page to modal box (003d31c)
- ui: move UI repo inside main repo (4ad3f99)
- ui: new articles notification bar (1308cbf), closes #5
- ui: new preference settings tab (7dae1d9)
- ui: open articles links into a new window (cccd240)
- ui: prepare TWA support (d9087ff)
- ui: refactore articles context menu (87b6c09)
- ui: refactoring of the "send to" menu (cfa0b66)
- ui: replace message redux state to context state (5a2b98b)
- ui: retrieve the following articles if the current page becomes small (0ba8767)
- ui: set autofocus on first form item (1329000)
- ui: theme support (375a2f0)
- ui: update the status will hide the article (71d7af4)
- ui: use custom notification badge (79232d1)
- ui: use custom swipe component (8fb616d)
- ui: use drawer for all context menu actions (a3fd2d1)
- ui: use drawer menu instead of dropdown menu (28aed8e)
- ui: use keyboard shortcuts for article page (810fc7a)
- ui: use Maxime's artworks (95e5bb2)
- ui: UX update (27df79d)
- use another ports for metrics (2482893)
- use image proxy for article illustration (2002994)
- user: add hash to user details (7fda591)
- user: manage customer id for subscriptions (b2c3127)