Commit Graph

3508 Commits

Author SHA1 Message Date
Inverle
bf2de1baea Fix access control in rss and opml actions (#8912)
Due to missing `return` statement while using `redirect: false`, no `exit()` is done during `Minz_Error::error()`

Regression from https://github.com/FreshRSS/FreshRSS/pull/8434
2026-06-05 22:38:17 +02:00
Mass Krdjn
6592f45163 i18n: complete Spanish (es) translation (#8878)
* i18n: complete Spanish (es) translation

* Apply suggestions from pe1uca

Co-authored-by: pe1uca <15692727+pe1uca@users.noreply.github.com>

* make fix-all

---------

Co-authored-by: Mass Krdjn <172580248+masskrdjn@users.noreply.github.com>
Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
Co-authored-by: pe1uca <15692727+pe1uca@users.noreply.github.com>
2026-06-01 16:31:25 +02:00
Mass Krdjn
159894f9f6 i18n: complete Italian (it) translation (#8880)
* i18n: complete Italian (it) translation

* make fix-all

---------

Co-authored-by: Mass Krdjn <172580248+masskrdjn@users.noreply.github.com>
Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-05-25 16:59:49 +02:00
Alexandre Alapetite
542f4920e7 Fix lost elements while parsing search query (#8884)
Fix https://github.com/FreshRSS/FreshRSS/issues/8876
2026-05-24 20:23:58 +02:00
Mass Krdjn
803f92e6d3 i18n: complete Hungarian (hu) translation (#8879)
* i18n: complete Hungarian (hu) translation

* make fix-all

---------

Co-authored-by: Mass Krdjn <172580248+masskrdjn@users.noreply.github.com>
Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-05-24 13:26:31 +02:00
Alexandre Alapetite
4b019ab697 New option to hide badges showing number of unread articles (#8844)
Inspired by @Dan-Q's  *Reducing Phantom Obligation in FreshRSS* https://danq.me/2026/02/06/phantom-obligation-vs-freshrss/

<img width="512" height="105" alt="image" src="https://github.com/user-attachments/assets/df93118b-36f3-4175-a681-b3f81fe63ff2" />

Results in:

<img width="306" height="181" alt="image" src="https://github.com/user-attachments/assets/1c8ccaa6-4fcf-48a4-bf98-0ace43a68861" />

Can be overridden at category and feed levels.
2026-05-20 20:25:20 +02:00
Frans de Jonge
93f989b977 Add a warning message to the API password section, add a log warning when a client uses GET, use POST in sample curl API usage (#8845)
* Add a warning message to the API password section, add a log warning when a client uses GET, use POST in sample curl API usage

References #8834.

* Apply suggestion from @Inverle

Co-authored-by: Inverle <inverle@proton.me>

* Apply suggestion from @Inverle (Polish translation)

Co-authored-by: Inverle <inverle@proton.me>

* French translation

* Dutch translation

* German

* Apply suggestion from @Inverle api via post

Co-authored-by: Inverle <inverle@proton.me>

* Apply suggestion from @Inverle via POST (French)

Co-authored-by: Inverle <inverle@proton.me>

* Add user-agent

* update translation info in README

* avoid phpcs line too long

* also trigger on email as suggested by @Inverle

* i18n: fr typography

* make fix-all

---------

Co-authored-by: Inverle <inverle@proton.me>
Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-05-20 20:09:02 +02:00
Denys Nykula
2000b8dd84 Update Ukrainian translation (#8871)
* Update Ukrainian translation

* Change outer double quotes with inner single quote to single quotes only in Ukrainian translation
2026-05-20 20:01:46 +02:00
Frans de Jonge
a611209a7c Finish Dutch translation (#8868)
* Finish Dutch translation

* 100%
2026-05-20 00:03:54 +02:00
Alexandre Alapetite
8e007af39d Fiix cookies with some browsers (#8867)
Fix https://github.com/FreshRSS/FreshRSS/issues/8850
Fix login with e.g. SeaMonkey
Regression due to https://github.com/FreshRSS/FreshRSS/pull/8778
2026-05-19 23:03:51 +02:00
Alexandre Alapetite
b7c58e590e Add ignore for PHPStan 2.1.55+ (#8864) 2026-05-19 22:07:52 +02:00
Alexandre Alapetite
c3fa374f25 Fix empty entry Generator (#8863)
* Fix empty entry Generator
Fix https://github.com/FreshRSS/FreshRSS/issues/8857
Regression from https://github.com/FreshRSS/FreshRSS/pull/8789
This is due to https://bugs.php.net/bug.php?id=77515

* Use EmptyIterator instead

* Syntax update
2026-05-19 21:45:20 +02:00
McFev
02edc05035 i18n: ru (#8839) (#8861)
* i18n: ru (#8839)

* make fix-all

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-05-19 08:20:15 +02:00
Inverle
51441abf7c Improve Polish translations (#8854)
Adds missing translations (https://github.com/FreshRSS/FreshRSS/issues/8839) and improves some existing ones.

* Add new pl translations

* Consistency: `artykuł` -> `wiadomość`

* Consistency: `ilość` -> `liczba`
2026-05-17 20:25:23 +02:00
IEEE-754
4102417fc1 i18n: Improve Traditional Chinese translations (#8849)
#8839 

**Change(s)**
- Fix some typos
- Revise the translations that I hadn't checked before
- Add some new translations

**File(s) changed**
`app/i18n/zh-TW/{admin,conf,gen,sub,user}.php`
`README.md`
`README.fr.md`
2026-05-16 12:09:37 +02:00
Ciro Mota
e704dea906 feat: Added news Português Brasil translation (#8846)
* feat: Added news Português Brasil translation

* fix: Translation string

* make fix-all

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-05-15 23:43:56 +02:00
Christian Weiske
d017e22a46 i18n(de): Add missing translations (#8840)
Related: https://github.com/FreshRSS/FreshRSS/issues/8839
2026-05-15 13:31:45 +02:00
Alexandre Alapetite
146d5f0d60 Fix ensure maximum number of feeds also with Dynamic OPML (#8832)
Fix https://github.com/FreshRSS/FreshRSS/issues/8822
And also add a warning sign in case of error.
Fix related bug about showing errored categories.
2026-05-15 12:19:40 +02:00
Alexandre Alapetite
66568f0283 TXT import compatibility HTML comments (#8837)
Discard lines starting with `<` for e.g. HTML/XML comments, tags
Compatibility with TXT format of https://atlasflux.saynete.net
Follow-up of https://github.com/FreshRSS/FreshRSS/pull/8818
2026-05-15 12:10:55 +02:00
polybjorn
8863cdcaf8 feat(import): accept .txt URL lists alongside OPML/JSON/ZIP (#8818)
* feat(import): accept .txt URL lists alongside OPML/JSON/ZIP

Detects .txt by extension and wraps the URL list into a minimal OPML
document so the existing import pipeline handles dedup, categories and
feed limits unchanged. Blank lines, `#` comments and a UTF-8 BOM are
skipped; lines that don't parse as URLs are logged and dropped without
aborting the batch.

Works through both `cli/import-for-user.php` and the web import form.

* utf8BOM

* ENT_COMPAT

---------

Co-authored-by: Bjørn A. Andersen <polybjorn@users.noreply.github.com>
Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-05-12 10:52:00 +02:00
polybjorn
d74337deb6 feat(cli): automatic periodic SQLite export with retention (#8819)
Add an opt-in CLI that exports each user's database to
`data/users/<user>/sqlite-backups/<YYYYMMDDTHHMMSSZ>.sqlite` (UTC) and
prunes older files to a configured count. Gated by two new settings,
`auto_sqlite_export.enabled` and `auto_sqlite_export.retention`.

Kept separate from `cli/db-backup.php` / `cli/db-restore.php`, which
stay the fixed-filename migration tool. First step of #8183.

Co-authored-by: Bjørn A. Andersen <polybjorn@users.noreply.github.com>
2026-05-12 08:44:00 +02:00
polybjorn
43b10f1d70 fix(themes): use has-date class for date-aware list layout (#8811)
Replace four :has(~.date) selectors with a has-date modifier class
on .flux_header, mirroring the existing has-thumbnail and has-summary
classes. The condition (whether the date is rendered) is known
server-side and can be exposed on the parent <ul> directly. Same
elements matched in modern browsers. The rules now also apply in
browsers without :has() support, fixing the date column overlapping
the title in SeaMonkey (#6776).

Co-authored-by: Bjørn A. Andersen <polybjorn@users.noreply.github.com>
2026-05-11 20:20:46 +02:00
polybjorn
408419f433 refactor(themes): drop redundant multiline class on title (#8810)
The multiline class on the title <a> existed only so the parent <li>
could detect it via :has(.multiline). The condition (thumbnail or
summary enabled) is already exposed on the parent <ul> by the
has-thumbnail and has-summary classes, so keying the rule on those
directly removes the indirection. Same elements matched in modern
browsers. The rule now also applies where :has() isn't supported,
relevant to #6776.

Co-authored-by: Bjørn A. Andersen <polybjorn@users.noreply.github.com>
2026-05-11 16:12:20 +02:00
polybjorn
b83c8b445e fix(themes): drop topline_website value from <li> class to avoid filter collision (#8800)
When topline_website is "icon", the <li> renders class="item website
icon". Bare .icon rules in Nord and Dark apply a filter that cascades
onto the favicon <img> inside, so article-list favicons render tinted
in icon-only mode. No theme CSS targets the unprefixed value; layout
modes are driven from the parent <ul> (.websiteicon, .websitename).

Co-authored-by: Bjørn A. Andersen <polybjorn@users.noreply.github.com>
2026-05-10 16:47:46 +02:00
Alexandre Alapetite
cb04c6cfaa More feed info: last received date, publication date (#8799)
* More feed info: last received date, publication date
Follow-up of https://github.com/FreshRSS/FreshRSS/pull/8670

* Fix <br />

* Change i18n English
2026-05-10 16:47:24 +02:00
Alexandre Alapetite
c2619d9a26 Fix search in shared user queries (#8789)
The internal search was shown in the UI as the user search.
This was due to the lazy nature of the Generator. Improve the try/catch behaviour at the same time.

How to test:
* Make a user query with a search parameter
* Share the user query as HTML
* Observe the search field (should be empty with this PR,  while it contained the internal search before)
2026-05-08 09:05:55 +02:00
Alexandre Alapetite
a1c637e7ac Preventive measure against search ingestion (#8777)
We were not vulnerable to it, but here is an additional layer of security against search ingestions, in particular in public user queries, where someone could try to ingest a search like `) OR (interesting`
2026-05-08 09:04:57 +02:00
polybjorn
0c93b26cb5 feat(import): support category field in JSON feed import (#8786)
* Extension to JSON imports: interpret
      "origin": {
        "category": "..."
      },
as category for FreshRSS. When importing a new feed configure the feed
into this category. Creates missiong categories on the fly.

* Fix syntax

* fix(import): tighten JSON category import follow-ups

- Use strict comparison `!== false` after `addCategory()` so a (theoretical)
  zero return from auto-increment is not silently treated as failure
  (matches review feedback on #5638).
- Modernise property declaration to typed property syntax, matching the
  surrounding `$entryDAO`/`$feedDAO` style.
- Pass `$username` to `createCategoryDao()` in `importFile()` so CLI
  imports for a non-current user create categories on the right account,
  matching the adjacent entry/feed DAO instantiations.
- Trim the requested category name and skip if it is empty after trim,
  so a whitespace-only `"category"` value falls back to the default
  category instead of creating a junk row with an empty name. Also
  normalises trailing/leading whitespace so `"  Tech News  "` reuses an
  existing `"Tech News"` category.

* Update app/Controllers/importExportController.php

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>

---------

Co-authored-by: Robert Dahlem <robert.dahlem@gmx.net>
Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
Co-authored-by: Bjørn A. Andersen <polybjorn@users.noreply.github.com>
2026-05-04 15:02:03 +02:00
Michael
92e34aec6d i18n(de): Improve German translations (#8704)
* i18n(de): improve German translations

- Fix orthography and grammar (e.g. Authentifizierung→Authentifizierung, Kategory→Kategorie)
- Replace anglicisms with German terms (Hashtags→Tags, Icon→Symbol, Layout→Theme where appropriate)
- Improve clarity and naturalness (e.g. Archivierungsausnahmen→Bereinigungsausnahme, Trägheit→Lazy Load)
- Complete TODO translations (send_referrer_allowlist, when_same_guid_in_category, keep_adding_feed)
- Fix typos (Artikle→Artikel, EAls→Als, Aals→Als)
- Use consistent terminology (Account→Konto, Nutzername→Benutzername, Webseite→Website)

* i18n(de): revert Account→Konto, Nutzername→Benutzername, Icon→Symbol

Keep 'Account' (Konto too bank-like), 'Nutzername' (Nutzer preferred
over Benutzer), and 'Icon' (Symbol sounds dated).

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-05-04 12:45:59 +02:00
polybjorn
2787014bde fix(layout): reserve logo image box via intrinsic dimensions (#8774)
* fix(layout): reserve logo image box via intrinsic dimensions

Add the SVG's intrinsic 1280x256 dimensions to the default
<img class="logo"> in header.phtml and simple.phtml. The
browser uses these to allocate a correctly-proportioned box
from HTML parse time, before CSS is applied; without them, a
cached image can render at native size for a frame on fast
back-to-back navigation. CSS still controls the rendered
height (2rem wide, 24px narrow); width auto-derives from the
intrinsic ratio.

* fix(layout): use rendered logo size for img dimensions

1280 × 256 (the SVG's intrinsic size) replicates the unstyled-frame
flash this PR aims to prevent. 160 × 32 has the same 5:1 ratio and
matches the CSS-rendered size, so the reserved box is correct both
before and after CSS applies.

---------

Co-authored-by: Bjørn A. Andersen <polybjorn@users.noreply.github.com>
2026-05-03 14:23:02 +02:00
Umaid Shahid
52be56ada7 feat(admin): visually dim disabled users in user management table (#8768)
Closes #8765 

Changes proposed in this pull request:

- Add disabled-user CSS class to user rows in the management table when the account is disabled
- Add .disabled-user { opacity: 0.5; } style to base theme to visually dim disabled accounts
- Add entry to CREDITS.md

How to test the feature manually:

1. Go to Administration → User Management
2. Have at least one disabled user account in the list
3. Verify that disabled user rows appear dimmed (50% opacity) compared to active users, without any change in functionality
2026-05-03 14:18:26 +02:00
Alexandre Alapetite
8f317a0c3c Fix headers given to SimplePie, e.g. for HTTP/2 (#8742)
Fix https://github.com/FreshRSS/FreshRSS/issues/8729
Follow-up of https://github.com/FreshRSS/FreshRSS/pull/7983
Related https://github.com/simplepie/simplepie/issues/942
2026-05-02 22:09:04 +02:00
dependabot[bot]
226239d157 Bump phpstan/phpstan from 2.1.46 to 2.1.54 (#8753)
* Bump phpstan/phpstan from 2.1.46 to 2.1.54

---
updated-dependencies:
- dependency-name: phpstan/phpstan
  dependency-version: 2.1.54
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Fixes some PHPStan issues, including compatibility PHP 8.2-
Follow-up of https://github.com/FreshRSS/FreshRSS/pull/8713

Co-authored-by: Copilot <copilot@github.com>

* Bump PHPStan-strict-rules

* Fix PHPStan for PHP 8.3

* Ignore PHPStan warning for PHP 8.2 and PHP 8.3

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
Co-authored-by: Copilot <copilot@github.com>
2026-05-02 21:16:27 +02:00
IEEE-754
da11f4dd8e Add more translations and improve quality (#8748)
**Change(s)**
- Add more translations
- Small fixes

**File(s) changed**
`app/i18n/zh-TW/{admin,gen,index,install,sub}.php`
2026-05-01 22:41:51 +02:00
polybjorn
e416117591 Disable unread counter in tab title and favicon (refresh of #6590) (#8728)
Closes FreshRSS/FreshRSS#6522.

Refresh of FreshRSS/FreshRSS#6590 by @sgzmd, which has been stalled with merge
conflicts since 2024. All original commits are preserved as-is in the history
(authorship intact); this PR adds a merge with current `edge` plus minor fixes.

## Summary

Adds a user setting `show_title_unread` (default `true`, so existing behavior
is preserved) that hides the unread article counter from both the tab title
and the favicon overlay. A single toggle controls both, matching the request
in #6522.

## Screenshots

Toggle in display settings:

<img width="320" height="127" alt="Display settings with new toggle" src="https://github.com/user-attachments/assets/fc78f825-161d-4b47-9b85-08e39554a4b1" />

Tab title and favicon when **enabled** (current behavior):

<img width="253" height="42" alt="Tab title and favicon with unread counter" src="https://github.com/user-attachments/assets/57387600-72e0-4b22-b059-04b5bfea673a" />

Tab title and favicon when **disabled** (new behavior):

<img width="254" height="40" alt="Tab title and favicon without unread counter" src="https://github.com/user-attachments/assets/93ac7997-dd4e-49bc-ab4a-74e4f0d2db1b" />

## Changes on top of #6590

- Resolved merge conflicts with current `edge` (controllers, model, view,
  `config.default.php`, ~25 i18n files, plus the `zh-tw` -> `zh-TW` rename).
- Replaced Czech text mistakenly placed in `de/conf.php` with an English
  `// TODO` marker so a German speaker can translate later.
- Renamed JS context key `show_unread_favicon` -> `show_title_unread` to
  match the backend property and avoid a confusing dual-name for one setting.
- Removed an unused duplicate of `show_title_unread` from `config.default.php`
  (the setting is read via `userConf()`, never `systemConf()`).
- Gated the dynamic title rewrite in `incUnreadsFeed` (`p/scripts/main.js`)
  on the setting. Without this, marking an article read while the setting
  was off would re-add the `(N)` prefix to the tab title.
- Escaped a stray apostrophe in the Occitan translation that broke parsing.
- `make fix-all` re-sorted i18n keys and added `// TODO` placeholders for
  `fi`, `pt-PT`, `uk` (untranslated by the original PR).

## Test plan

- [x] `make test-all` passes (620/620 PHPUnit, phpstan, phpcs, eslint,
      stylelint, markdownlint clean; `bin/typos` failed locally with a binary
      arch mismatch on macOS arm64 - unrelated to this change).
- [x] Manually tested on a real instance: default behavior unchanged;
      toggling the setting hides both the tab title `(N) ` prefix and the
      favicon overlay; toggling back restores both; marking articles read
      while the setting is off does not bring the counter back; opening and
      closing an article preserves the user's choice.

* Make showing the number of unread items in the title configurable.

* Proposed approach to passing show_unread_favicon setting down to client-side code

* Fixes and refactoring

* Updating default config for the user.

When user's config wasn't initialised we are copying it from `config-user.default.php` - if `show_title_unread` is not there, it is assumed to be false, whereas in `config.default.php` it's true by default. This results in inconsistency until user changes the field for the first time in Config->Display.

* Adding translations.

* fix: gate JS title rewrite + drop dead system config entry

The original PR added show_title_unread to both config-user.default.php
(read by userConf, the right place) and config.default.php (read by
systemConf, never used here). Drop the system-level entry.

Also: incUnreadsFeed dynamically rewrites document.title when articles
are marked read/unread. That code path was not gated by the setting, so
toggling the setting off and then marking an article read would re-add
the (N) prefix to the tab title. Skip the document.title / prevTitle
write when context.show_title_unread is false.

* fix: drop README pollution from local make fix-all

`make fix-all` regenerated the README translation tables on macOS, where the
case-insensitive filesystem and an untracked local `app/i18n/nb/` directory
caused the generator to emit `zh-tw` (lowercase) and an `nb` entry. Reset
both README files to upstream/edge so CI can regenerate them cleanly.

* fix: restore zh-TW/conf.php from edge (case-insensitive FS damage)

The macOS case-insensitive filesystem caused the merge to overwrite
upstream/edge's properly-translated zh-TW/conf.php with the older
zh-tw/conf.php content from the PR side, regressing translation
coverage from 94% to 71%. Reset the file to edge's content and re-add
the show_title_unread Traditional Chinese translation.

---------

Co-authored-by: sgzmd <sigizmund@gmail.com>
Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
Co-authored-by: Bjørn A. Andersen <polybjorn@users.noreply.github.com>
2026-04-29 21:35:31 +02:00
IEEE-754
05f18d15f3 i18n: Improve Traditional Chinese translations (#8730)
* Update the zh-tw translation for feedback.php

* Fix translation errors in previous PRs
2026-04-29 16:39:51 +02:00
polybjorn
0376d402b0 fix: use spec-compliant no-referrer meta value (#8725)
`never` was removed from the Referrer Policy spec in 2016 and is
only honoured by current browsers as a legacy alias. Replace with
the spec-compliant `no-referrer` token.

Tested:
- Safari 26 (WebKit): Referer suppressed
- LibreWolf 150 (Gecko): Referer suppressed
- Chromium 149 (Blink): Referer suppressed
- SeaMonkey 2.53.23: ignores meta referrer regardless of value
  (pre-existing, unaffected by this change)

Closes https://github.com/FreshRSS/FreshRSS/issues/8718

Co-authored-by: Bjørn A. Andersen <polybjorn@users.noreply.github.com>
2026-04-29 15:20:12 +02:00
IEEE-754
97fad1ae54 i18n: Improve Traditional Chinese translations (#8723)
* Update the zh-tw translation for conf.php

* Fix translation errors in previous PRs

Also add more new translations.

* make fix-all

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-04-28 09:16:17 +02:00
Alexandre Alapetite
62b7dc37fe Allow extension configurations to use select-input-changer (#8721)
Useful for https://github.com/FreshRSS/Extensions/pull/456
2026-04-28 09:14:09 +02:00
IEEE-754
b070ddac65 i18n: Improve Traditional Chinese translations (#8716)
* Update the zh-tw translation for sub.php

* make fix-all

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-04-25 19:20:20 +02:00
polybjorn
244d916966 fix: do not report PRIORITY_HIDDEN feeds in nbUnreadsPerFeed (#8715)
The sidebar does not render DOM elements for PRIORITY_HIDDEN feeds
(aside_feed.phtml:114), but nbUnreadsPerFeed still reports their unread
counts. In refreshUnreads(), the per-feed tracked count for the missing
element stays at 0 while the server keeps reporting unreads > 0, which
triggers the "new articles available" banner every poll cycle on the
"All articles" view.

Filter hidden feeds from the response, matching the convention already
used in Category.php:42.

Fixes https://github.com/FreshRSS/FreshRSS/issues/8694

Co-authored-by: Bjørn A. Andersen <polybjorn@users.noreply.github.com>
2026-04-24 10:01:49 +02:00
Alexandre Alapetite
497d6a7afb Limit cURL to protocols HTTP, HTTPS (#8713) 2026-04-22 22:27:17 +02:00
IEEE-754
3ec1920cc5 i18n: Improve Traditional Chinese translations (#8712)
* Update the zh-tw translation for admin.php

* Update the zh-tw translation for index.php

* Update the zh-tw translation for user.php

* Correct the typos in install.php

* make fix-all

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-04-22 13:03:48 +02:00
IEEE-754
86ddf7bb48 i18n: Improve Traditional Chinese translations (#8709)
* Update the zh-tw translation for api.php

- Clean up poor quality translations
- Slightly improve translation coverage

**Files changed**
`app/i18n/zh-TW/{api,gen,install}.php`

* make fix-all

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-04-21 21:05:11 +02:00
Alexandre Alapetite
c4c5c72127 Make httpGet() cache nullable (#8705)
Follow-up of https://github.com/FreshRSS/FreshRSS/pull/8700
Useful for https://github.com/FreshRSS/Extensions/pull/456
2026-04-20 21:47:55 +02:00
Alexandre Alapetite
7a9b023dfd Return more info and status from httpGet() (#8700)
Useful for extensions and core code needing HTTP status information.
E.g. https://github.com/FreshRSS/Extensions/pull/458
2026-04-19 11:27:50 +02:00
Chanse Syres
d38e9503bd Completed Latvian (LV) Translations for (sub.php, install.php, index.php, gen.php, feedback.php, conf.php, admin.php) (#6553)
* Completed Latvian translations for FreshRSS (sub.php, install.php, index.php, gen.php, feedback.php, conf.php, admin.php)

* delete // TODO

* delete more // TODO

* Update conf.php

* make fix-all

* make fix-all

---------

Co-authored-by: math-gh <1645099+math-GH@users.noreply.github.com>
Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-04-19 00:32:19 +02:00
pe1uca
6d76dfe822 Improve add feed (#8683)
* Reorder add feed and add category

Implements some suggestions made in https://github.com/FreshRSS/FreshRSS/issues/2014

Changes proposed in this pull request:

- Move "Add feed" as the first section of the Subscriptions add page.  
- Add checkbox "Keep adding feeds" to stay on the "add" page.  

How to test the feature manually:

1. Navigate to the page "Add a feed or category"  
2. See new order.  
3. Type URL of a new feed, select a category, and check "Keep adding feeds "  
4. See FreshRSS confirm the feed was added while staying in the same page.  

* Add checkbox to stay in the add feed page

* Update i18n

* PHP CS

* Manually set i18n progress

* Change i18n

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-04-16 08:23:43 +02:00
Christian Weiske
bf4dcb3ddb Fix German "timeago" translation (#8689)
Related: https://github.com/FreshRSS/FreshRSS/pull/8670
2026-04-09 20:55:10 +02:00
Alexandre Alapetite
d16af9f7df Fix change sorting during paging (#8688)
Continuation ID should be reset when changing sorting order, especially between DESC and ASC but also the other variants.
2026-04-09 09:07:14 +02:00