Frédéric Guillot
3bb965913d
refactor(js): create utility functions to manage buttons state
2025-08-02 21:37:16 -07:00
Frédéric Guillot
b505a63f3b
refactor(js): rewrite toast notification implementation
2025-08-02 21:37:16 -07:00
Frédéric Guillot
e9d9256ae2
refactor(js): rename functions to include action suffix
2025-08-02 18:44:12 -07:00
Frédéric Guillot
391792a424
refactor(js): combine handleBookmark
and toggleBookmark
functions
2025-08-02 18:44:12 -07:00
Frédéric Guillot
d2cfca589b
refactor(js): combine handleSaveEntry()
and saveEntry()
functions
2025-08-02 18:44:12 -07:00
Frédéric Guillot
f2e34cf07f
refactor(js): split openOriginalLink()
into smaller functions
2025-08-02 18:44:12 -07:00
Frédéric Guillot
5c3be3e74f
refactor(js): combine handleShare()
and triggerWebShare()
functions
2025-08-02 18:44:12 -07:00
Frédéric Guillot
2e28bf78bd
refactor(js): improve item navigation logic in goToListItem function
2025-08-02 16:12:53 -07:00
Frédéric Guillot
52c1386450
refactor(js): enable touch handlers only on touch devices and fix various issues in WebAuthnHandler
2025-08-02 15:39:01 -07:00
Frédéric Guillot
4910f1f0f4
refactor(js): remove RequestBuilder
2025-08-02 15:14:35 -07:00
Frédéric Guillot
bbe3c2ea71
refactor(js): simplify some functions using modern JavaScript
2025-08-02 14:06:18 -07:00
Frédéric Guillot
b116da85a9
refactor(js): remove bootstrap.js
2025-08-02 13:41:40 -07:00
Frédéric Guillot
07246e2b59
refactor(js): improve menu handlers
2025-08-02 13:09:57 -07:00
Frédéric Guillot
62410659d5
refactor(js): code cleanup and add jshint comments
2025-08-02 12:38:29 -07:00
Frédéric Guillot
3e1a7e411c
feat(js): register the service worker as JavaScript module
2025-08-02 11:26:43 -07:00
Frédéric Guillot
bfbc1c88c3
feat(js): load app.js
using JavaScript module
...
- The JS bundle has its own isolated scope
- There is no need to use IIFEs anymore (Immediately Invoked Function Expressions)
- Modules are executed after the HTML document is fully parsed, similar to `defer` attribute
- There is no need to use `DOMContentLoaded` anymore
- Module scripts inherently run in strict mode (no need to define `use strict` anymore)
2025-08-02 11:07:27 -07:00
Frédéric Guillot
50197c2be3
refactor(js): reorder functions and add comments
2025-08-01 21:56:25 -07:00
Frédéric Guillot
7a25cf5037
fix(js): handle multiple buttons in a single form when showing loading state
2025-08-01 20:53:59 -07:00
Frédéric Guillot
1ec90e34f5
refactor(js): simplify CSRF token retrieval from the document
2025-08-01 20:44:40 -07:00
Frédéric Guillot
5e07278e87
feat(ui): refresh the page when marking as read the last visible entry
2025-08-01 20:16:45 -07:00
Frédéric Guillot
bfd8cb3d22
feat(ui): add icons to main menu
2025-07-30 19:12:50 -07:00
Frédéric Guillot
dc81725788
fix(filter): remove \r\n
in rule parsing
2025-07-16 21:03:53 -07:00
jvoisin
32fbb4e882
fix(ui): improve margins consistency wrt. header/footer
2025-07-08 19:30:13 -07:00
jvoisin
560be66147
refactor(misc): Use proper slog.XXX instead of slog.Any
...
This has close to no impact for now, as our slog.Debug/Info/... are leaking
their parameters to the heap, but using proper typing instead of Any allows
to skip some reflection-based computation, making things marginally faster,
and removing the corresponding heap leak.
2025-06-29 12:30:17 -07:00
jvoisin
93b17af78b
refactor(appjs): no need to check if always present elements are always present
2025-06-20 13:16:57 -07:00
Frédéric Guillot
b0a10f02fd
feat(css): add margin-bottom to input for consistent spacing
2025-06-19 16:35:17 -07:00
Frédéric Guillot
2a9d91c783
feat: add entry filters at the feed level
2025-06-19 15:15:16 -07:00
Frédéric Guillot
e0f7e6f2a8
feat(config)!: remove SERVER_TIMING_HEADER
config option
...
BREAKING CHANGE: This option is not really useful and it's used only on
the unread page.
2025-06-15 14:17:28 -07:00
jvoisin
117c031f1c
feat(integration)!: remove Pocket integration
...
BREAKING CHANGE: Pocket will no longer be available after July 8, 2025.
https://support.mozilla.org/en-US/kb/future-of-pocket#w_when-is-pocket-shutting-down
2025-06-15 13:29:55 -07:00
Frédéric Guillot
70b513b8db
feat(ui): display external URL in single entry view
...
Display the article's external URL directly in the single entry view.
Rationale: On mobile devices, users couldn't see where a link pointed before tapping it.
Previously, the only way to view the external URL was by hovering - an action not available on touch devices.
2025-06-09 21:14:55 -07:00
Frédéric Guillot
8db637cb39
feat(ui): add user setting to control target="_blank"
on links
...
Rationale: Opening links in the current tab is the default browser behavior.
Using `target="_blank"` on external links can lead to accessibility issues and override user preferences. It may also interfere with assistive technologies and expected browser behavior.
To maintain backward compatibility, this option is enabled by default (`true`), which adds `target="_blank"` to links.
2025-06-08 21:07:11 -07:00
Frédéric Guillot
a8bb7a48d7
feat(ui): avoid showing an excessive number of tags
2025-06-08 15:29:09 -07:00
Jesse Jaggars
43d302e768
feat: adding support for saving entries to karakeep
...
Signed-off-by: Jesse Jaggars <jhjaggars@gmail.com>
2025-06-04 21:10:26 -07:00
Frédéric Guillot
bfd8860398
feat(api): add new endpoints to manage API keys
2025-05-25 15:50:13 -07:00
Kelly Norton
09fb05aaaf
feat: add option to always open articles externally
2025-05-24 19:46:01 -07:00
Tianzhi Jin
b65373db7e
feat(webauthn): perfer creation of a client-side discoverable credential
2025-05-22 20:14:00 -07:00
Anton Larionov
553c578f2e
feat(rssbridge): support auth token for RSS-Bridge
2025-05-19 20:47:12 -07:00
Tianzhi Jin
81ec32a8b6
fix(webauthn): correct arg in debug log
2025-05-14 21:01:52 -07:00
Frédéric Guillot
5ae2cbd943
feat(settings): add validation for entry order and categories sorting order
2025-05-11 17:52:59 -07:00
Frédéric Guillot
d33e305af9
fix(api): hide_globally
categories field should be a boolean
2025-04-21 19:43:25 -07:00
Frédéric Guillot
764212f37c
refactor(js): replace DomHelper
methods with standalone functions
2025-04-17 18:15:08 -07:00
Tali Auster
e02b65d4bc
fix: deal with navigator.share exceptions
...
Navigator.share returns a promise that's executed in the background, but
unless we await it explicitly, we won't get the exceptions in the
try/catch block.
2025-04-17 17:07:38 -07:00
Tali Auster
2959a4d2bf
fix: clarify share flow in UI
...
Prior to this commit, to share an entry, a user has to click on the
share link and then copy the URL they are redirected to. The danger is
that they may right-click and copy the share link without actually
clicking on it, and therefore share a link that, when authenticated,
shares the entry, rather than actually sharing the entry.
Here, we avoid this misinterpretation by making sharing into a POST
request and using a form rather than a link.
2025-04-17 17:07:38 -07:00
Frédéric Guillot
ef22e95f8b
feat: implement proxy URL per feed
2025-04-06 21:05:19 -07:00
Frédéric Guillot
535fd050b7
feat: add proxy rotation functionality
2025-04-06 14:59:00 -07:00
Frédéric Guillot
cb695e653a
fix(security): use a more restrictive CSP for untrusted content
2025-03-29 19:49:41 -07:00
Frédéric Guillot
969efd2af7
fix(ui): update share feature to correctly select title element and handle empty title
2025-03-28 15:36:43 -07:00
Frédéric Guillot
87fccfee3a
fix(ui): remove touch-action style because it could cause horizontal scrolling issue
2025-03-28 15:20:31 -07:00
Frédéric Guillot
e643effefa
feat: combine feed icon handlers to use only externalIconID
2025-03-28 14:29:19 -07:00
Frédéric Guillot
c531be8780
fix: update Content-Security-Policy to use 'sandbox' directive
2025-03-28 13:06:59 -07:00