aboutsummaryrefslogtreecommitdiff
path: root/p
AgeCommit message (Collapse)Author
2025-12-21Fix dropdown menus in sidebar going under the navigation bar (#8336)Gravatar Inverle
Missed in #8335 because I was testing without having the navigation bar enabled. <img width="674" height="198" alt="image" src="https://github.com/user-attachments/assets/a1db7f95-f1d9-47e5-a572-20892e6c7abc" />
2025-12-21Display sidebar dropdowns above if no space below (#8335)Gravatar Inverle
Closes https://github.com/FreshRSS/FreshRSS/issues/7801
2025-12-17Rework encoding of search filters (#8324)Gravatar Alexandre Alapetite
Rework: * https://github.com/FreshRSS/FreshRSS/pull/8222 now that we have: * https://github.com/FreshRSS/FreshRSS/pull/8293 Follow-up of: * https://github.com/FreshRSS/FreshRSS/pull/8311 * More simplification * Deprecate getRawInput
2025-12-16Bump to API level 4 for Fever; add with_ids so we can mass-change rea… (#8312)Gravatar Andy Valencia
* Bump to API level 4 for Fever; add with_ids so we can mass-change read/unread/saved/unsaved on lists of articles. As discussed in https://github.com/FreshRSS/FreshRSS/issues/8305 A small enhancement to the Fever API to vastly increase efficiency when bulk marking items. - How to test the feature manually: The client at: https://sources.vsta.org:7100/FeedMonkey/file?name=js/Fever.js&ci=tip has code to talk to this API enhancement (when the API level says it's supported). In particular walkArticles(). * Update indentation per PR check on Github * make fix-all * Line length * Fix many typing issues * is_numeric * Update comment --------- Co-authored-by: Andy Valencia <ajv-899-334-8894@vsta.org> Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2025-12-15Reverse hash and nonce (#8320)Gravatar Alexandre Alapetite
Safer password evaluation
2025-12-15Improve scrolling into filter in sidebar (#8307)Gravatar Inverle
Follow-up of https://github.com/FreshRSS/FreshRSS/pull/8281 todo: * [x] Include labels (prefix `t_`) too * [x] Keep sidebar scrollTop when using the nav menu * [ ] ~~Make this work in the reader view's sidebar too~~ for separate PR * [x] Prevent whole page from scrolling on `scrollIntoView()` call, just scroll in the sidebar (probably related: https://github.com/FreshRSS/FreshRSS/pull/8306#issuecomment-3647414618) This TODO will be done in a separate PR since it requires optimizing the sidebar toggle code. edit: it does work on Chrome already though, but only if `#stream` isn't too large / breaks randomly (Firefox is slower it seems)
2025-12-13New links in transitions and jump to next transition (#8294)Gravatar Alexandre Alapetite
Easier to explain graphically: <img width="408" height="266" alt="image" src="https://github.com/user-attachments/assets/0e3724a1-155b-4a87-89b3-cfe8a18cb100" /> The jump to next section ⏭ works when the sorting criterion is a date. Need https://github.com/FreshRSS/FreshRSS/pull/8293
2025-12-13Fix search encoding and quoting (#8311)Gravatar Alexandre Alapetite
Revised the encoding approach for searches: the HTML encoding is done just before its use for DB search. Fix also some cases with wrong quoting. Fix https://github.com/FreshRSS/FreshRSS/pull/8306#issuecomment-3643865439 Follow-up of https://github.com/FreshRSS/FreshRSS/pull/8293
2025-12-11Scroll into filtered feed/category on page load (#8281)Gravatar Inverle
Previously if you were to go to for example *Subscription management* and filter a feed, the feed wouldn't be visible in a sidebar with lots of feeds, since you'd have to scroll to it first. Now, this is no longer the case. Note that if the navigation comes from the sidebar itself, the original behavior remains. (scroll into previous `scrollTop` value of sidebar) Also improves experience of using shift+j/k (see https://github.com/FreshRSS/FreshRSS/pull/8057)
2025-12-09Keep scroll state of page when closing the slider with JS shortcut (#8301)Gravatar Inverle
Follow-up of https://github.com/FreshRSS/FreshRSS/pull/8295
2025-12-09Fix chart resize regression due to chart.js v4 update (#8298)Gravatar Inverle
* Fix chart resize regression due to chart.js v4 update * Update to chart.js v4.5.1 + add .map file for easier debugging https://github.com/chartjs/Chart.js/releases/tag/v4.5.1 * Delete .map file
2025-12-06Improve sidebar toggle button position (#8286)Gravatar maTh
Ref https://github.com/FreshRSS/FreshRSS/pull/8201#issuecomment-3610813235 <img width="422" height="119" alt="grafik" src="https://github.com/user-attachments/assets/0859bf55-d8e6-4401-adda-e854bf41a64a" />
2025-12-04Scaling of user statistics (#8277)Gravatar Alexandre Alapetite
Fix https://github.com/FreshRSS/FreshRSS/issues/8268 To better support user management on FreshRSS instance with many users. SQL speed improved. On a reduced test with 5 users, including some large accounts (PostgreSQL on a very tiny and slow server), improving from ~2.3s to ~1.8s, which gives ~20% speed improvement. Then tested with 1000 users, with only the default feed (on my old desktop computer): ```sh for i in {1..1000}; do ./cli/create-user.php --user=freshrss$i --password=freshrss; done app/actualize_script.php cli/access-permissions.sh ``` SQLite: ```console $ time cli/user-info.php | wc -l 1001 real 0m1.366s user 0m0.908s sys 0m0.475s ``` PostgreSQL: ```console $ time cli/user-info.php | wc -l 1001 real 0m28.498s user 0m12.137s sys 0m2.217s ``` MariaDB: ```console # time ./cli/user-info.php | wc -l 1001 real 0m49.485s user 0m1.276s sys 0m2.258s ``` Yes, SQLite is much faster - not a surprise for such use-cases, where the TCP connection is not re-used. I have added some CLI options to disable some statistics: ```sh cli/user-info.php --no-db-size --no-db-counts ``` For the Web UI, I have disabled detailed user statistics if it takes too long, and retrieve missing user statistics asynchronously via JavaScript. Lazy loading of the user details based on IntersectionObserver, with maximum 10 requests in parallel. Web UI tested on 1000 users as well. Checked with SeaMonkey.
2025-12-04Implement button for toggling sidebar on all views (#8201)Gravatar Inverle
* Implement button for toggling sidebar on all views Closes https://github.com/FreshRSS/FreshRSS/issues/7673, https://github.com/FreshRSS/FreshRSS/issues/7100, https://github.com/FreshRSS/FreshRSS/issues/6119, https://github.com/FreshRSS/FreshRSS/issues/5338, https://github.com/FreshRSS/FreshRSS/issues/2792, https://github.com/FreshRSS/FreshRSS/issues/4224, https://github.com/FreshRSS/FreshRSS/issues/4136 https://github.com/user-attachments/assets/0629e465-6450-440e-b38b-430e9ff73ef9 Keyboard shortcut for doing the same: <kbd>t</kbd> * Partially fix other views Repartition page looks broken on Swage * Correction `close-aside` wasn't meant to be removed * i18n(conf): fr Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr> * make fix-all * Fix settings slider not opening in reader view * make readme --------- Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2025-11-25More visible selected article (#8230)Gravatar Alexandre Alapetite
There was not enough difference between selected and not-selected articles, especially not due to hovering using the same style. Already relevant as is, and more relevant for a future feature depending on selected article. Additional help welcome to further improve the styling, in this PR or a future one, also for the other themes. In this example, the third article is the one selected: <img width="443" height="189" alt="image" src="https://github.com/user-attachments/assets/06168e9f-1b91-47e2-9b64-4fd8ca6c7186" /> * Compensate the increased border-left-width * Implement in Pafat * Implement in Nord * Shorten comment * Implement in Alternative Dark * Implement for Flat * Implement for Swage * Implement in Ansum and Mapco * Call stylelint_fix before rtlcss So that RTLCSS includes the fixes from previous step
2025-11-23Use native CSS instead of SCSS (#8241)Gravatar Alexandre Alapetite
I was tired of having to handle the SCSS themes differently. fix https://github.com/FreshRSS/FreshRSS/issues/7611 Follow-up of https://github.com/FreshRSS/FreshRSS/pull/8200 Convert Ansum and Mapco themes from SCSS to native CSS. The changes are actually quite limited (mostly changing the syntax of the variables and a few other things) Require support for: * https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Nesting * https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Selectors/Nesting_selector * https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/color-mix SCSS and SAAS tools and references are also removed. Tests welcome. The styles are left as individual CSS files as designed originally in SCSS. I expect proper HTTP caching and HTTP/2 to be sufficient instead of aggregating back to a single CSS, but might be done in another PR if needed. At the same time, fixed the fact that we had various whitespace styles in our JSON files, in particular in those themes, sometimes with 2 spaces, or 4 spaces, or tabs. Use tabs everywhere as defined in editorconfig. I would like to merge this one first to complete https://github.com/FreshRSS/FreshRSS/pull/8230 * RTLCSS stringMap https://github.com/FreshRSS/FreshRSS/pull/8241#discussion_r2553175514 https://github.com/MohammadYounes/rtlcss/issues/108#issuecomment-347033134
2025-11-20Misc API: better REST semantics (#8232)Gravatar Alexandre Alapetite
To allow minimal diagnostic from client side
2025-11-11Reduce SCSS: rewrite Swage as CSS (#8200)Gravatar Alexandre Alapetite
* Reduce unused SCSS * Rename Swage .scss to .css * Convert from SCSS to native CSS Contribute to https://github.com/FreshRSS/FreshRSS/issues/7611 Taking advantage of: * https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Nesting * https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Selectors/Nesting_selector * https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Colors/Using_relative_colors#using_math_functions This was mostly to get started and get a better idea of the difficulties. I am happy to see that the differences between the original SCSS and the native CSS are limited. The relevant diff to look at is: https://github.com/FreshRSS/FreshRSS/pull/8200/commits/dd1bc7c663cf7afdde7af3161ddc213d360247ef The main remaining issue is that the *CSS Color Module Level 4, Relative Color* is not mainstream yet, so a small compatibility section is needed with precomputed colour values.
2025-11-11Housekeeping lib_rss.php (#8193)Gravatar Alexandre Alapetite
* Housekeeping lib_rss.php `lib_rss.php` had become much too large, especially after https://github.com/FreshRSS/FreshRSS/pull/7924 Moved most functions to other places. Mostly no change of code otherwise (see comments). * Extension: composer run-script phpstan-third-party
2025-11-08less margin - wrapper div deleted (#8196)Gravatar maTh
Follow up https://github.com/FreshRSS/FreshRSS/pull/8190 and https://github.com/FreshRSS/FreshRSS/pull/8152 before: <img width="1090" height="449" alt="grafik" src="https://github.com/user-attachments/assets/ee6a54a2-3602-4f2c-8eb2-cb186287e245" /> After: <img width="907" height="452" alt="grafik" src="https://github.com/user-attachments/assets/3a3066e5-90e1-4b65-a1c4-18964494f644" />
2025-11-06Replace arrow navigation in theme switcher with `<select>` (#8190)Gravatar Inverle
Follow-up (or replacement) of https://github.com/FreshRSS/FreshRSS/pull/8167 ![gif](https://github.com/user-attachments/assets/96cdeaff-36bc-4d0b-9b75-97bd7ff78ba1)
2025-11-05Fix 7307 - Scroll after load (#7962)Gravatar Tommaso Ferrari
* Fix 7307 - Scroll after load Closes https://github.com/FreshRSS/FreshRSS/issues/7307 - Wrap the body of `loadDynamicTags()` into a Promise - inside `mylabels()`, wait for the promise to complete, then scroll - when `loadDynamicTags()` is not being called, return a self-resolving promise How to test the feature manually: 1. Click on an long article 2. press keyboard shortcut `l` to go to "My labels" 3. page should scroll down 4. the `My labels` popup should be fully visible * Rewritten as async/await * Explicit HTTP Accept application/json --------- Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2025-11-05Custom favicons async/await (#8182)Gravatar Alexandre Alapetite
Rewrote the last Promise pattern of our code-base with an async/await pattern: [custom feed favicons](https://github.com/FreshRSS/FreshRSS/pull/7646) Related to: * https://github.com/FreshRSS/FreshRSS/pull/7962
2025-11-04Better transitions between groups of articles (#8174)Gravatar Alexandre Alapetite
fix https://github.com/FreshRSS/FreshRSS/issues/7520 fix https://github.com/FreshRSS/FreshRSS/issues/8168 fix https://github.com/FreshRSS/FreshRSS/discussions/8172
2025-11-01Fix/improve <textarea> (#8171)Gravatar maTh
## Feed configuration slider: ### Before: <img width="747" height="346" alt="grafik" src="https://github.com/user-attachments/assets/37056ef8-1163-48d1-a3dd-99e745418b2d" /> ### After: <img width="743" height="473" alt="grafik" src="https://github.com/user-attachments/assets/388a0ef6-633e-43ee-8ea5-5cbe7b40e6e4" /> ## CustomCSS, CustomJS extensions ### Before: <img width="762" height="504" alt="grafik" src="https://github.com/user-attachments/assets/279801fb-06a7-477a-81e7-c681087595a5" /> ### After: <img width="767" height="922" alt="grafik" src="https://github.com/user-attachments/assets/ca4cf304-03c7-4028-89d0-1c3094086176" /> And cleaning some CSS * UserCSS+JS: w100 h50 * clean textarea width height * feed config slider * Update base.rtl.css * fix class="valid-json" * padding + vertical-align * fix ansum mapco
2025-10-30Fix `console.log()` spam due to lack of `window.bcrypt` object (#8166)Gravatar Inverle
Harmless bug introduced in https://github.com/FreshRSS/FreshRSS/pull/7877 Before: <img width="1580" height="96" alt="image" src="https://github.com/user-attachments/assets/eaebd4fc-fb40-49ec-83af-43bde3009b00" /> (load *Archiving* page for example, `init_crypto_forms()` is not called on view pages)
2025-10-28Improve theme slider (#8152)Gravatar maTh
Ref https://github.com/FreshRSS/FreshRSS/pull/8149 Ref https://github.com/FreshRSS/FreshRSS/issues/6577 Before <img width="969" height="582" alt="grafik" src="https://github.com/user-attachments/assets/5e1e5e9a-31de-4327-a639-6327d602cf8a" /> After Buttons as navigation elements. Not it is crystal clear that the themes can be changed. The theme counter is a bit more prominent to show the big amount of shipped themes. <img width="1041" height="575" alt="grafik" src="https://github.com/user-attachments/assets/b498e74f-1284-40ad-b871-41ce238a49ff" />
2025-10-26OPML export/import frss:priority (#8158)Gravatar Alexandre Alapetite
Follow-up of https://github.com/FreshRSS/FreshRSS/pull/7583
2025-10-23dark theme background_color (#8140)Gravatar McFev
Added background_color so that the app doesn't blind with white color upon opening.
2025-10-22Configuration → Display → Theme: increase button visibility (#8149)Gravatar Frans de Jonge
Closes https://github.com/FreshRSS/FreshRSS/issues/6577 Maintains a little bit of distinction between hover and non-hover, but the focus is on always making it visible. ### Before <img width="45%" alt="Image" src="https://github.com/user-attachments/assets/4ebbffa3-e90d-42b2-9cdd-536197eabde3" /> ### After Left not hovered, right left arrow hovered. The distinction is obvious enough to show activation when actually hovering; it doesn't show very well on the screenshot. <img width="45%" alt="image" src="https://github.com/user-attachments/assets/74e3da4a-7072-4f27-b435-375d6168181a" /> <img width="45%" alt="image" src="https://github.com/user-attachments/assets/8d0016e1-8cb0-4307-b7d0-8a9d0fdec188" />
2025-10-21Add support for extension compatibility (#8081)Gravatar Alexis Degrugillier
The compatibility does support only a minimum version of FreshRSS. If we need something a bit more clever in the future, it is possible to handle a rule with a bit more complexity. See https://github.com/FreshRSS/FreshRSS/issues/5903 * Update app/Controllers/extensionController.php Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr> * Update app/i18n/pl/admin.php Co-authored-by: Inverle <inverle@proton.me> * Minor move phpstan-type --------- Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr> Co-authored-by: Inverle <inverle@proton.me>
2025-10-17GReader API frss:priority (#7583)Gravatar Alexandre Alapetite
* GReader API frss:priority Experiment with a FreshRSS namespace in the GReader API to see whether there is any interest. fix https://github.com/FreshRSS/FreshRSS/issues/1868 `'frss:priority'` can be: `'important'`, `'main'`, `'category'`, `'feed'` (there is also the value `hidden`, but which is filtered out and as such never sent through the API at the moment) * Add visibility feed https://github.com/FreshRSS/FreshRSS/pull/7972
2025-10-14Option to show user labels instead of tags in RSS share (#8112)Gravatar Alexandre Alapetite
* Option to show user labels instead of tags in RSS share fix https://github.com/FreshRSS/FreshRSS/discussions/8108#discussioncomment-14668813 <img width="711" height="182" alt="image" src="https://github.com/user-attachments/assets/8effb2cd-fffb-4f00-b628-54e963e8b2dc" />
2025-10-14Fix navigating between read feeds using shortcut shift+j/k (#8057)Gravatar Inverle
Before, the shortcuts marked in red and blue behaved the same way (with shift modifier) Specifically <kbd>Shift + J</kbd> had the same behavior as <kbd>Shift + K</kbd> which means it only jumped to unread and not read/unread. <img width="719" height="396" alt="image" src="https://github.com/user-attachments/assets/8ebd1efc-c186-4dcf-9b54-b9acbf3bbbe5" /> Now the shift modifier shortcuts match the behavior of the alt and no modifier shortcuts. <kbd>Shift + K</kbd> was corrected too, but there is no alternative for it yet, since I don't know which default key should be used for it - <kbd>l</kbd> is already taken by *My labels* shortcut
2025-10-04Strengthen some crypto (#8061)Gravatar Alexandre Alapetite
For login, tokens, nonces
2025-10-01API optimisation: more streaming of outputs (#8041)Gravatar Alexandre Alapetite
* API optimisation: more streaming of outputs I spotted a memory issue when testing https://github.com/FreshRSS/FreshRSS/pull/7714 Attempt to stream results more, instead of keeping too much in memory. Could be further improved. * Apply suggestions from code review Co-authored-by: Alexis Degrugillier <aledeg@users.noreply.github.com> * Minor whitespace JSON formatting --------- Co-authored-by: Alexis Degrugillier <aledeg@users.noreply.github.com>
2025-10-01configurable notification timeout (#7942)Gravatar maTh
Ref #7931 Ref #5466 Ref #6409 added configuration in "Display" <img width="636" height="167" alt="grafik" src="https://github.com/user-attachments/assets/7bbc9f26-d91b-4dd2-b715-1d3f9b7a9ad3" /> * i18n: fr * Update app/i18n/pl/conf.php Co-authored-by: Inverle <inverle@proton.me> * make fix-all * max() * Minor whitespace (I am not a fan of excessive vertical indenting) --------- Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr> Co-authored-by: Inverle <inverle@proton.me>
2025-09-30Add hook enums (#8036)Gravatar Alexis Degrugillier
- add an enum to handle hook types (enum are available since PHP 8.1) - change hook calls from string value to enum value
2025-09-30Fix autocomplete issues in change password form (#7812)Gravatar Inverle
## Screenshots <details> <summary>Before</summary> <img width="773" height="652" alt="image" src="https://github.com/user-attachments/assets/89a0e58c-8c4a-41ff-b5d6-3e916079d563" /> </details> <details> <summary>After</summary> <img width="1006" height="646" alt="image" src="https://github.com/user-attachments/assets/f4575103-7365-4870-a170-2742bf10eb27" /> </details> This is an example on Firefox, where the `Master authentication token` field was incorrectly being autofilled. Red borders are indicating that the fields are required. ## List of changes * `required="required"` is now being added to the password fields if the section is open * The `challenge` field is being added if section is open instead of when at least one of the password fields isn't empty due to autocomplete * Added `autocomplete="new-password"` on fields that shouldn't be autocompleted * Unfortunately Chrome requires a workaround with CSS * Not tested on Safari yet * User will be redirected to profile page after successfully changing their password instead of index page ## How to test Autocomplete related changes should be tested on a HTTPS page with saved credentials for FreshRSS
2025-09-30Add new visibility priority *Show in its feed* (#7972)Gravatar Alexandre Alapetite
* Add new visibility priority *Show in its feed* fix https://github.com/FreshRSS/FreshRSS/pull/7970#issuecomment-3293917428 (you can't directly filter a hidden feed, it just shows a 404 page) And add a new visibility *Show in its feed* to show the feed in the list but not its articles. Ensure that visibility *hidden* is not shown to API. * TODO for later * Update app/i18n/pl/sub.php Co-authored-by: Inverle <inverle@proton.me>
2025-09-27Stable IDs during SQL import (#7988)Gravatar Alexandre Alapetite
* Stable IDs during SQL import Follow-up of https://github.com/FreshRSS/FreshRSS/pull/7949 Make sure that the original category IDs, feed IDs, and label IDs are kept identical during an SQL import. Avoid breaking everything referring to categories, feeds, labels by their IDs such as searches and third-party extensions. * Fix export of default category
2025-09-27Fix regression in ext.php (#8021)Gravatar Alexandre Alapetite
fix https://github.com/FreshRSS/Extensions/issues/370 Regression from https://github.com/FreshRSS/FreshRSS/pull/7857
2025-09-27Dark-pink theme: remove white background from configure buttons (#8020)Gravatar Inverle
Before: <img width="273" height="116" alt="image" src="https://github.com/user-attachments/assets/4fb9b1f2-b960-428e-9c3f-84e803cd0afa" /> After: <img width="239" height="111" alt="image" src="https://github.com/user-attachments/assets/7528649b-47f0-4111-8cf8-ac54080d5573" />
2025-09-25fix: anonym. mode: label management link (#8011)Gravatar maTh
Ref: #8001 Changes proposed in this pull request: - do not show the "manage" dropdown menu for labels in anonym. mode (normal view) Before: <img width="304" height="139" alt="grafik" src="https://github.com/user-attachments/assets/2aff0299-febe-41b0-a99a-450559393cd6" /> After: <img width="281" height="121" alt="grafik" src="https://github.com/user-attachments/assets/69ad334e-0a31-4546-9939-9b72306db046" />
2025-09-23Lazy-load `<track src>` (#7997)Gravatar Inverle
Follow-up of #7636 I found it's the only missing element that needs to be lazy loaded by putting HTML of https://github.com/cure53/HTTPLeaks/blob/main/leak.html into a feed
2025-09-21Add option for CSP frame-ancestors (#7857)Gravatar Alexandre Alapetite
* Add option for CSP frame-ancestors https://github.com/FreshRSS/FreshRSS/discussions/7856 * Revert contentSelectorPreviewAction * Same for f.php and api * Fix double init in f.php * No sandbox for API page
2025-09-15Fix another user self-delete regression (#7877)Gravatar Inverle
Regression from #7763 Earlier regression which was fixed before #7626 In addition: * get rid of `data-toggle` (refactor) * show invalid login message if deleting account and entered incorrect password instead of redirect to 403 * remove unused reference to `r` parameter * `forgetOpenCategories()` on login not on any crypto form
2025-09-13Decrease brightness of nav buttons (#7956)Gravatar Inverle
Before <img width="536" height="50" alt="image" src="https://github.com/user-attachments/assets/799fe85b-3141-4f02-b020-ab7b06439ddc" /> After <img width="510" height="46" alt="image" src="https://github.com/user-attachments/assets/780fa55e-e42b-4c4c-8ba9-32b877cf4ddd" />
2025-09-13Fix JS error when navigating to last article with keyboard (#7957)Gravatar Inverle
This error would print in the console if navigating to last article with <kbd>J</kbd> or <kbd>K</kbd> key: <img width="836" height="173" alt="image" src="https://github.com/user-attachments/assets/0ae88d1c-26eb-4ebe-8d15-4bf03c24cef6" /> --- To reproduce the bug: <ol> <li>Select unread + read view, while having all articles marked as read</li> <li>Mark two as unread and go to unread only view</li> <li>Navigate with either <kbd>J</kbd> or <kbd>K</kbd> until you go past the last article or before first article</li> <li>See error in console and no navigation with <code>first_feed()</code> or <code>last_feed()</code></li> </ol> note: I'm not sure if the fix is what the expected behavior is supposed to be
2025-09-10Translate the API information page (#7922)Gravatar Alexis Degrugillier
Closes #6222 Translate the `api/index.php` page * Update app/i18n/pl/api.php Co-authored-by: Inverle <inverle@proton.me> * Update app/i18n/de/api.php Co-authored-by: maTh <1645099+math-GH@users.noreply.github.com> * i18n: fr * <kbd> Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr> --------- Co-authored-by: Inverle <inverle@proton.me> Co-authored-by: maTh <1645099+math-GH@users.noreply.github.com> Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>