Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2482 commits
Select commit Hold shift + click to select a range
80a93a9
refactor(themes): centralize sidebar width via --width-aside token (#…
polybjorn May 2, 2026
161e4e0
docs: mention db-backup.php and simplify git update steps (#8763)
polybjorn May 2, 2026
8f317a0
Fix headers given to SimplePie, e.g. for HTTP/2 (#8742)
Alkarex May 2, 2026
b08c4ef
docs: standardise English heading style and surface hidden pages (#8766)
polybjorn May 2, 2026
3a7431c
fix(i18n): validate language directory names against gen.lang.* keys …
polybjorn May 2, 2026
c43930c
fix(js): stop sidebar auto-reopening on page navigation (#8773)
polybjorn May 3, 2026
4b96b01
chore(docs): upgrade Jekyll 3 to 4 and Ruby to 3.4.9 (#8772)
polybjorn May 3, 2026
52be56a
feat(admin): visually dim disabled users in user management table (#8…
umaidshahid May 3, 2026
2787014
fix(layout): reserve logo image box via intrinsic dimensions (#8774)
polybjorn May 3, 2026
1d7f52e
Changelog
Alkarex May 3, 2026
944f9c8
fix(themes): remove dropdown-close backdrop in Nord wide view (#8781)
polybjorn May 4, 2026
3f134bc
fix(themes): scope Mapco and Ansum aside transition to width (#8785)
polybjorn May 4, 2026
4d2b5fb
fix(themes): swap header item border to inset box-shadow (#8784)
polybjorn May 4, 2026
92e34ae
i18n(de): Improve German translations (#8704)
michi-onl May 4, 2026
0c93b26
feat(import): support category field in JSON feed import (#8786)
polybjorn May 4, 2026
d03efae
Changelog
Alkarex May 8, 2026
a1c637e
Preventive measure against search ingestion (#8777)
Alkarex May 8, 2026
bbb28b5
Fix reauth with legacy cookie (#8778)
Alkarex May 8, 2026
c2619d9
Fix search in shared user queries (#8789)
Alkarex May 8, 2026
6850620
Changelog
Alkarex May 8, 2026
f7d39cd
chore(deps): bump fast-uri from 3.1.0 to 3.1.2 (#8798)
dependabot[bot] May 9, 2026
376ce66
Release 1.29.0
Alkarex May 10, 2026
9a50be1
Credits
Alkarex May 10, 2026
cedf339
Start 1.29.1
Alkarex May 10, 2026
cb04c6c
More feed info: last received date, publication date (#8799)
Alkarex May 10, 2026
b83c8b4
fix(themes): drop topline_website value from <li> class to avoid filt…
polybjorn May 10, 2026
9ff4aec
fix(themes): show feed name at narrow widths when configured (#8801)
polybjorn May 10, 2026
1936306
chore(themes): rename "Nord theme" to "Nord" (#8805)
polybjorn May 10, 2026
408419f
refactor(themes): drop redundant multiline class on title (#8810)
polybjorn May 11, 2026
1ff27fe
fix(themes): replace #load_more loading-state GIF with a CSS spinner …
polybjorn May 11, 2026
af6a500
fix(themes): cap website column at narrow when feed name is shown (#8…
polybjorn May 11, 2026
1020652
refactor(themes): drop redundant :has() in dropdown label selector (#…
polybjorn May 11, 2026
43b10f1
fix(themes): use has-date class for date-aware list layout (#8811)
polybjorn May 11, 2026
769c87c
chore(themes): remove loader.gif and convert remaining consumers to t…
polybjorn May 11, 2026
bcf8045
fix(theme): inherit font-family on form controls (#8816)
polybjorn May 11, 2026
557e190
docs: add FeedFlow and FluentFlame Reader to APIs & native apps (#8820)
polybjorn May 12, 2026
d74337d
feat(cli): automatic periodic SQLite export with retention (#8819)
polybjorn May 12, 2026
8863cdc
feat(import): accept .txt URL lists alongside OPML/JSON/ZIP (#8818)
polybjorn May 12, 2026
fcc129f
Reduce sidebar animation duration from 200ms to 100ms (#8830)
Frenzie May 14, 2026
3a69692
Fix click mark as read (#8817)
Alkarex May 14, 2026
3feb7ae
docs: normalize APIs & native apps table glyphs to monochrome (#8821)
polybjorn May 14, 2026
6946b21
docs: sync French README content with English (#8831)
polybjorn May 14, 2026
98eaed7
revert(themes): hide feed name at narrow viewports (#8838)
polybjorn May 15, 2026
9a28f61
Keep mobile article navigation at the bottom (#8833)
mzl2233 May 15, 2026
66568f0
TXT import compatibility HTML comments (#8837)
Alkarex May 15, 2026
1ac1d8c
Fix LibOPML warnings (#8652)
Alkarex May 15, 2026
146d5f0
Fix ensure maximum number of feeds also with Dynamic OPML (#8832)
Alkarex May 15, 2026
d017e22
i18n(de): Add missing translations (#8840)
cweiske May 15, 2026
bdf02e6
fix(theme): hide Swage logo in reader view to prevent overlap (#8842)
polybjorn May 15, 2026
e704dea
feat: Added news Português Brasil translation (#8846)
ciro-mota May 15, 2026
4102417
i18n: Improve Traditional Chinese translations (#8849)
IEEE-754 May 16, 2026
401fe12
Sync lib_opml (no change) (#8853)
Alkarex May 17, 2026
51441ab
Improve Polish translations (#8854)
Inverle May 17, 2026
ae79f48
chore(deps-dev): bump faraday (#8858)
dependabot[bot] May 18, 2026
02edc05
i18n: ru (#8839) (#8861)
McFev May 19, 2026
c3fa374
Fix empty entry Generator (#8863)
Alkarex May 19, 2026
b7c58e5
Add ignore for PHPStan 2.1.55+ (#8864)
Alkarex May 19, 2026
8e007af
Fiix cookies with some browsers (#8867)
Alkarex May 19, 2026
a611209
Finish Dutch translation (#8868)
Frenzie May 19, 2026
4c0b733
Changelog, credits
Alkarex May 20, 2026
b2c5011
Release 1.29.1
Alkarex May 20, 2026
8bd486c
Start 1.29.2
Alkarex May 20, 2026
2000b8d
Update Ukrainian translation (#8871)
nykula May 20, 2026
93f989b
Add a warning message to the API password section, add a log warning …
Frenzie May 20, 2026
be36061
refactor(themes): convert .horizontal-list from display:table to flex…
polybjorn May 20, 2026
4b019ab
New option to hide badges showing number of unread articles (#8844)
Alkarex May 20, 2026
2a35723
Changelog
Alkarex May 20, 2026
c222a84
refactor(themes): convert article-row inner layout to CSS Grid (#8824)
polybjorn May 20, 2026
5bddc6b
feat(cli): add reconfigure-user.php to read/write per-user config att…
juherr May 24, 2026
803f92e
i18n: complete Hungarian (hu) translation (#8879)
masskrdjn May 24, 2026
63b1065
docs: add masskrdjn to credits (#8883)
masskrdjn May 24, 2026
542f492
Fix lost elements while parsing search query (#8884)
Alkarex May 24, 2026
8aa1b0a
Changelog
Alkarex May 24, 2026
f910dce
Add Julien Herr to CREDITS.md (#8885)
juherr May 24, 2026
159894f
i18n: complete Italian (it) translation (#8880)
masskrdjn May 25, 2026
ff2add1
SimplePie: Fix wrong player_parent logic leading to invalid type (#8893)
Alkarex May 26, 2026
a499778
SimplePie: XML_OPTION_PARSE_HUGE (#8894)
Alkarex May 26, 2026
3996c8f
Changelog
Alkarex May 26, 2026
7cbf597
Add Kidd Lee to CREDITS.md (#8895)
LeeXiaolan May 27, 2026
c5d3954
Update security policy due to many duplicated AI reports (#8900)
Alkarex May 31, 2026
6592f45
i18n: complete Spanish (es) translation (#8878)
masskrdjn Jun 1, 2026
7d1a76d
chore(deps): bump ruby/setup-ruby from 1.306.0 to 1.310.0 (#8905)
dependabot[bot] Jun 3, 2026
232eee3
chore(deps-dev): bump the stylelint group with 2 updates (#8904)
dependabot[bot] Jun 3, 2026
f04788c
chore(deps-dev): bump phpstan/phpstan from 2.1.55 to 2.2.1 (#8906)
dependabot[bot] Jun 3, 2026
7d7e502
chore(deps): update phpmailer/phpmailer requirement from 7.0.2 to 7.1…
dependabot[bot] Jun 3, 2026
10a976e
fix(themes): padding for .nav_menu in Alternative-Dark, Flat, and Nor…
satyvm Jun 4, 2026
48cf86e
Apache condition mod_remoteip (#8890)
Alkarex Jun 5, 2026
aaae9ee
Always jump article to top when header is offscreen, also when 'Stick…
Frenzie Jun 5, 2026
bf2de1b
Fix access control in `rss` and `opml` actions (#8912)
Inverle Jun 5, 2026
5e18e96
Set limits for regex during search (#8913)
Inverle Jun 5, 2026
d40917b
Bump SimplePie (fix PHP 8.5 bug) (#8918)
Alkarex Jun 11, 2026
8e27fb1
Docker Alpine 3.24.0 (#8916)
Alkarex Jun 11, 2026
941f30b
Fix PHPStan 2.2.2 in CLI (#8911)
Alkarex Jun 11, 2026
2578bef
Add FriRSS to the list of clients (#8920)
Fripix Jun 13, 2026
0d5cc03
Self-hosted web frontend for FreshRSS (Google Reader API), as discuss…
Fripix Jun 13, 2026
1349c7c
SimplePie: Disallow `javascript:` URI protocol (#8263)
Inverle Jun 13, 2026
53ca983
Complete the Persian translation (#8923)
mohammadlashkari Jun 14, 2026
c33356c
Changelog
Alkarex Jun 14, 2026
9db1ea4
Update credits (#8924)
mohammadlashkari Jun 15, 2026
d257166
chore(deps): bump markdown-it and markdownlint-cli (#8926)
dependabot[bot] Jun 17, 2026
7c49294
chore: Fix README CLI typos (#8932)
jeremy-code Jun 20, 2026
5c5b0b9
fix(themes): keep article nav bar pinned to bottom in iOS standalone …
Otolock Jun 20, 2026
bcf5362
Revert "fix(themes): keep article nav bar pinned to bottom in iOS sta…
Otolock Jun 21, 2026
80d1db8
docs: mention THIRDPARTY_EXTENSIONS_PATH override in extension instal…
salvador-castro Jun 21, 2026
521981a
Document PHP-FPM write restrictions for data path (#8936)
nathanpixodeo Jun 22, 2026
6f1b66e
chore(deps-dev): bump faraday (#8939)
dependabot[bot] Jun 23, 2026
69eff07
chore(deps): bump concurrent-ruby (#8940)
dependabot[bot] Jun 23, 2026
931d62a
Use timing safe comparison for tokens everywhere (#8945)
Inverle Jun 27, 2026
3161fd1
fix: move disable button before remove button in user management (#8944)
ThomasVermeer Jun 27, 2026
d9dc140
Minor bump SimplePie (#8947)
Alkarex Jun 27, 2026
dcec27c
Add SSRF mitigations using `filter_var` and `CURLOPT_RESOLVE` (#8400)
Inverle Jun 28, 2026
6984c22
Fix feed dropdown bugs due to hash desync (#8949)
Inverle Jun 28, 2026
ddf2976
chore(deps): bump actions/checkout from 6 to 7 (#8963)
dependabot[bot] Jul 1, 2026
334796d
chore(deps): bump actions/cache from 5 to 6 (#8961)
dependabot[bot] Jul 1, 2026
e8bcb40
chore(deps): bump ruby/setup-ruby from 1.310.0 to 1.315.0 (#8959)
dependabot[bot] Jul 1, 2026
abd683e
chore(deps-dev): bump the stylelint group with 2 updates (#8958)
dependabot[bot] Jul 1, 2026
93e8394
chore(deps-dev): bump phpstan/phpstan from 2.2.2 to 2.2.3 (#8962)
dependabot[bot] Jul 1, 2026
c90c86a
chore(deps-dev): bump phpstan/phpstan-phpunit from 2.0.16 to 2.0.17 (…
dependabot[bot] Jul 1, 2026
a3badc2
Fix bad header filtering bypass (#8964)
Inverle Jul 2, 2026
339d5c7
Minor Minz_Extension typing (#8952)
Alkarex Jul 2, 2026
2e6e571
Worked on Turkish translation (#8966)
utkutibet Jul 3, 2026
8a5f7d2
Remove `.DS_Store` files and update `.gitignore` (#8971)
Inverle Jul 3, 2026
9b43639
Fix slider not reinitializing after form submit (#8973)
Inverle Jul 4, 2026
da52ac4
Translated remaining Turkish strings (#8970)
utkutibet Jul 4, 2026
44b5c13
i18n: Update el (Greek) translations (#8977)
Divinelink Jul 4, 2026
13c2b68
Keep scroll position of slider after form submit (#8974)
Inverle Jul 4, 2026
c90e48f
Report new articles count per feed in actualize_script output (#8948)
JamBalaya56562 Jul 4, 2026
6351a71
cli/health.php: output a diagnostic when the health check fails (#8980)
JamBalaya56562 Jul 4, 2026
988c678
Fever API: log the client IP address on authentication failure (#8981)
JamBalaya56562 Jul 4, 2026
cf2ceaf
OPML: include each feed's refresh interval (TTL) in export/import (#8…
JamBalaya56562 Jul 4, 2026
ffc5a96
Migrate markdownlint-cli to markdownlint-cli2 (single config file) (#…
JamBalaya56562 Jul 5, 2026
56d31c5
Improve turkish translation 3 (#8989)
utkutibet Jul 5, 2026
612ac4f
Notifications: pluralize the "new articles" count message (#8988)
Frenzie Jul 6, 2026
c3d0bd5
Clarify in docs `favicons/` should not be skipped during backup (#8992)
Inverle Jul 6, 2026
241c7fb
Respect simplepie_syslog_enabled for cache-hit debug logs (#8986)
JamBalaya56562 Jul 6, 2026
cb13091
Fix GH issue links with label filter in docs (#8993)
Inverle Jul 6, 2026
310bcb5
Add read status hook for entries (#8995)
JamBalaya56562 Jul 7, 2026
271257b
Fix statistics repartition averages (#8996)
JamBalaya56562 Jul 7, 2026
2188070
Add option to keep or reset article sort order when navigating (#8969)
iatman Jul 7, 2026
5014915
Fix article hover date visibility (#8997)
JamBalaya56562 Jul 7, 2026
ce7a196
Remove unused simple layout (#8998)
JamBalaya56562 Jul 7, 2026
f201061
Feeds tree: sort feed names with locale-aware collation (#8985)
JamBalaya56562 Jul 7, 2026
0b018ad
Clariffied netnews wire podcast compatibility (#8991)
Cactys12 Jul 7, 2026
6908d99
Fix `.dockerignore` being ignored during build in CI (#9001)
Inverle Jul 8, 2026
7744f1f
WebSub: ignore http/https scheme difference in Self URL comparison (#…
JamBalaya56562 Jul 9, 2026
143cb09
Minz: Skip loading JS/CSS asset if it's already in the list (#9000)
Inverle Jul 9, 2026
f7c4fbe
Redirect after saving user CSS/JS so changes apply immediately (#9006)
TowyTowy Jul 9, 2026
3d04c8e
Prefer OS-bundled Japanese fonts when UI language is Japanese (#9002)
JamBalaya56562 Jul 9, 2026
ad78838
Keep search and state filters when marking articles as read (#9007)
TowyTowy Jul 9, 2026
0f0b696
Display slider after submit for all buttons in feed/update.phtml (#8999)
Inverle Jul 11, 2026
e95243a
Document OIDC token endpoint authentication method (#9027)
Elgeryy1 Jul 11, 2026
e24ac6f
Sort labels with locale-aware collation (#9023)
Elgeryy1 Jul 11, 2026
4b378eb
Improve Greek (el) translation (#9038)
chrislongros Jul 12, 2026
9f40a9b
Add Christos Longros to CREDITS.md (#9040)
chrislongros Jul 12, 2026
4cb2bb5
i18n: Improve Traditional Chinese translations (#9037)
IEEE-754 Jul 12, 2026
8aa8655
fix(js): use Event() constructor instead of deprecated initEvent() (#…
TowyTowy Jul 12, 2026
28bc73a
Dispatch a JS event when an entry finishes being marked read/unread (…
Elgeryy1 Jul 12, 2026
5f94330
Mailer: allow disabling SMTPAutoTLS via config (#9026)
Elgeryy1 Jul 12, 2026
c1e7112
Mirror the official Fever API documentation (#9014)
Elgeryy1 Jul 12, 2026
260f907
Fix: --db-prefix silently drops following CLI flags (#9042)
Stunkymonkey Jul 13, 2026
cf298e2
Docker: use double quotes for CRON_MIN examples (#9011)
Elgeryy1 Jul 15, 2026
9f90d4f
Warn during install if document root does not point to ./p (#9010)
Elgeryy1 Jul 18, 2026
d2ee8f3
Add LinkAce as a sharing service (#9024)
Elgeryy1 Jul 18, 2026
1944b97
Use :user-invalid instead of :invalid for form field styling (#9025)
Elgeryy1 Jul 18, 2026
8e8c8d2
Document TT-RSS article migration (#9062)
Elgeryy1 Jul 18, 2026
44c6de6
Add Nextcloud Bookmarks sharing service (#9032)
Elgeryy1 Jul 18, 2026
9567dfc
i18n: Improve Japanese(ja) translations and formatting (#9064)
gshimo Jul 18, 2026
124dec5
Check GMP during 32-bit installation (#9046)
Elgeryy1 Jul 18, 2026
94ff6e4
Stop the unread-count poller after the session ends (#9065)
featurecreep-cron Jul 18, 2026
c15171e
Fix actualize mutex collision across instances (#9045)
Elgeryy1 Jul 18, 2026
f4fc014
Improve extension list fetch diagnostics (#9055)
Elgeryy1 Jul 18, 2026
7321c1e
Add log search to the logs page (#9059)
Elgeryy1 Jul 18, 2026
7c7fc8b
Fix outdated username length hint on registration and install forms (…
Elgeryy1 Jul 18, 2026
bffd20b
Simplepie: fix sanitizer whitelist stripping order (#9066)
Frenzie Jul 19, 2026
88acb5b
Document HTTP proxy tunnelling option (#9054)
Elgeryy1 Jul 19, 2026
c5fc194
Detect JSON feeds from .json URLs (#9058)
Elgeryy1 Jul 20, 2026
30968c4
Document OpenBSD httpd API configuration (#9061)
Elgeryy1 Jul 20, 2026
b12ec4f
Show only one representation per media:group (#9009)
TowyTowy Jul 20, 2026
1b8eb17
Add per-feed option to show or hide enclosures (#9015)
Elgeryy1 Jul 20, 2026
909cb06
Add Cron to CREDITS (#9068)
featurecreep-cron Jul 21, 2026
630b68a
i18n: Improve Traditional Chinese translations (#9069)
IEEE-754 Jul 21, 2026
9e92ace
Fix extension settings cancel action (#9053)
Elgeryy1 Jul 21, 2026
46f5e13
Refresh only feeds in the current view (#9060)
Elgeryy1 Jul 21, 2026
6996447
Allow selecting a category in feed add URLs (#9047)
Elgeryy1 Jul 21, 2026
8c5bd58
Fix SQL errors breaking regex search on MySQL / MariaDB (#9036)
TowyTowy Jul 21, 2026
f2e97b6
Redirect away from wrong URL paths to fix displaying of relative URLs…
Inverle Jul 22, 2026
818bc98
Security: public OPML should not contain cURL parameters (#9070)
Alkarex Jul 23, 2026
48abfd5
Improve SSRF mitigations by restricting `CURLOPT_PROXY` (#8950)
Inverle Jul 23, 2026
d519a8a
AI skills: suggestion to limit the number of PRs (#9141)
Frenzie Jul 23, 2026
6e7bd22
Fix weird hover issues on overflowing .item-element.title (#9140)
Frenzie Jul 23, 2026
2ff32b0
Move article header/footer options from Reading to Display configurat…
Elgeryy1 Jul 23, 2026
9b40f04
Fix tagging an already-tagged entry on PostgreSQL (#9136)
Elgeryy1 Jul 23, 2026
0dc3431
Preserve negative timezone offsets in date intervals (#9071)
Elgeryy1 Jul 23, 2026
ccf7c7a
Clarify archiving/purge documentation (#9135)
Elgeryy1 Jul 23, 2026
5b98895
Log failed CSS content retrievals (#9077)
Elgeryy1 Jul 23, 2026
a8a4264
Add remote IP address to warning on form login (#8942)
jeremy-code Jul 24, 2026
9789aa2
Add link to cloud providers list and Chatons directory (#8965)
bossaarebecca-alt Jul 24, 2026
0947822
Docker/OIDC: redirect to a default URL on expired auth state instead …
featurecreep-cron Jul 24, 2026
1460e75
Fix auto-share shortcut on first use (#9072)
Elgeryy1 Jul 24, 2026
1b7178a
Security: apply encodeURIComponent to share template (#9146)
Alkarex Jul 28, 2026
3976121
chore(deps): bump postcss from 8.5.15 to 8.5.24 (#9148)
dependabot[bot] Jul 28, 2026
0348521
i18n: update de (#9149)
math-GH Jul 29, 2026
7afef6f
CI: attach provenance and SBOM attestations to the published image (#…
kobihikri Jul 29, 2026
1884db7
New CSS class alert-info (#9145)
Alkarex Jul 29, 2026
36d973a
Filter global view feed list by state and search (#9132)
Elgeryy1 Jul 29, 2026
f3b8538
Use global view when searching from subscription page (#9144)
Alkarex Jul 29, 2026
dd2ef8f
Group export feeds by category (#9079)
Elgeryy1 Jul 29, 2026
0acc713
docs(credits): add Kobi Hikri (#9151)
kobihikri Jul 29, 2026
2a42d79
Fix sharing menu conflicts with extensions (#9074)
Elgeryy1 Jul 30, 2026
f35c970
Exclude hidden feeds from global view counts (#9152)
JamBalaya56562 Jul 30, 2026
4546ed1
Add Jam Balaya to CREDITS (#9153)
JamBalaya56562 Jul 30, 2026
ccff81e
Docker dev newest: PHP 8.6 (#9155)
Alkarex Aug 1, 2026
e39b589
Ignore empty categories when sizing export feed selector (#9154)
JamBalaya56562 Aug 1, 2026
6ef1b93
chore(deps): bump actions/setup-node from 6 to 7 (#9162)
dependabot[bot] Aug 1, 2026
3b9b453
chore(deps): bump ruby/setup-ruby from 1.315.0 to 1.321.0 (#9165)
dependabot[bot] Aug 1, 2026
1dced38
Fix PHPStan 2.2.7 (#9156)
Alkarex Aug 1, 2026
6ec69fa
chore(deps-dev): bump stylelint in the stylelint group (#9158)
dependabot[bot] Aug 1, 2026
ee6dd7b
chore(deps-dev): bump markdownlint-cli2 from 0.23.0 to 0.23.2 (#9159)
dependabot[bot] Aug 1, 2026
0cf8815
Fix HTML injection via decoded website attribute in feed menu (#9170)
Inverle Aug 2, 2026
fa8e8a4
Fix “mark as read older than…” widening the active search (#9173)
TowyTowy Aug 4, 2026
d1999fc
chore(deps): bump fast-uri from 3.1.2 to 3.1.5 (#9176)
dependabot[bot] Aug 5, 2026
551427c
Issue #9166: Detect JSON Feed URLs when subscribing via the API (#9167)
jbrayton Aug 5, 2026
e1ce0b0
Sanitize all fields during JSON import (#9168)
Inverle Aug 5, 2026
6bd14a6
Refactor to use CSRF field directly instead of borrowing it from a fo…
Inverle Aug 5, 2026
324c1e3
Bump neostandard and blocked eslint (#9178)
Alkarex Aug 7, 2026
cb482dd
Bump globals and @eslint/js (#9181)
Alkarex Aug 7, 2026
704678f
chore(deps-dev): bump squizlabs/php_codesniffer (#9179)
dependabot[bot] Aug 7, 2026
acef1de
Security: Use hash_equals() for GReader API token comparison (#9183)
Alkarex Aug 8, 2026
c7b4328
docs: Prefer public PRs when submitting security fixes (#9184)
Inverle Aug 9, 2026
1146d05
Allow modifiers for open website shortcut (#9186)
Inverle Aug 9, 2026
ae67297
Fix saving user queries (#9190)
Alkarex Aug 9, 2026
484e4f7
Add CHANGELOG entry for GHSA-p83h-r2jw-9whg fix (#9183) (#9193)
senti-man Aug 10, 2026
bf16d81
Add sungju Kim to CREDITS.md (#9194)
senti-man Aug 10, 2026
ceb497f
Block CGNAT (RFC6598) and NAT64 (RFC6052) ranges in SSRF guard (#9195)
0xdeadrelay Aug 11, 2026
d677efb
Add 0xdeadrelay to CREDITS.md (#9196)
0xdeadrelay Aug 11, 2026
f3d3d98
i18n: add Lithuanian translation (#9201)
georatas Aug 12, 2026
7529c71
Fix path disclosure in cache error message (#9206)
Inverle Aug 14, 2026
994ae75
Order categories during OPML import/export according to position (#9203)
Inverle Aug 14, 2026
4023406
Add Docker access log toggle (#9191)
fzlzjerry Aug 14, 2026
24039af
Remove stale dynamic favicon links (#9127)
Elgeryy1 Aug 14, 2026
55c0c05
i18n: manually review Lithuanian (lt) translation (#9213)
georatas Aug 16, 2026
9f00a04
Pin the docker publish actions and scope two workflow tokens (#9200)
Totara-thib Aug 16, 2026
06faa02
Refactor user query translation keys (#9049)
Elgeryy1 Aug 17, 2026
48ece42
Improve aside keyboard navigation (#9202)
Inverle Aug 17, 2026
2ceb78f
Dev updates: composer, hadolint, typos... (#9219)
Alkarex Aug 18, 2026
c7e6ab7
Disallow fetching of non remote uri (#9215)
Inverle Aug 19, 2026
adfea90
i18n(id): complete Indonesian translation (#9220)
ihsanarifr Aug 19, 2026
a84c0a8
Fix all broken links in the entire repository (#9207)
Inverle Aug 19, 2026
3d59aeb
i18n: Improve Traditional Chinese translations (#9223)
IEEE-754 Aug 19, 2026
95842d8
Fix only the last <media:credit> being written to the RSS output (#9174)
TowyTowy Aug 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .devcontainer/.htaccess
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Require all denied
38 changes: 38 additions & 0 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
FROM alpine:3.24

ENV TZ=UTC
SHELL ["/bin/ash", "-eo", "pipefail", "-c"]

RUN apk add --no-cache \
tzdata \
apache2 php-apache2 \
php php-curl php-gmp php-intl php-mbstring php-xml php-zip \
php-ctype php-dom php-fileinfo php-iconv php-json php-opcache php-openssl php-phar php-session php-simplexml php-xmlreader php-xmlwriter php-xml php-tokenizer php-zlib \
php-pdo_sqlite php-pdo_mysql php-pdo_pgsql \
bash composer curl docker-cli-buildx git gpg make nodejs npm shellcheck shfmt sudo

RUN \
# Disable unwanted Apache modules and configurations
rm -f /etc/apache2/conf.d/languages.conf /etc/apache2/conf.d/info.conf \
/etc/apache2/conf.d/status.conf /etc/apache2/conf.d/userdir.conf && \
sed -r -i "/^\s*LoadModule .*mod_(alias|autoindex|negotiation|status).so$/s/^/#/" \
/etc/apache2/httpd.conf && \
sed -r -i "/^\s*(CustomLog|ErrorLog|Listen) /s/^/#/" \
/etc/apache2/httpd.conf && \
# Enable required Apache modules
sed -r -i "/^\s*#\s*LoadModule .*mod_(deflate|expires|filter|headers|mime|remoteip|setenvif).so$/s/^\s*#//" \
/etc/apache2/httpd.conf

RUN adduser --ingroup www-data --disabled-password developer && \
echo "developer ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/developer

ENV COPY_LOG_TO_SYSLOG=On
ENV COPY_SYSLOG_TO_STDERR=On
ENV CRON_MIN=''
ENV DATA_PATH=''
ENV ENABLE_ACCESS_LOG=1
ENV FRESHRSS_ENV='development'
ENV LISTEN='0.0.0.0:8080'
ENV TRUSTED_PROXY=0

EXPOSE 8080
24 changes: 24 additions & 0 deletions .devcontainer/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Dev Container for FreshRSS

This is a [Development Container](https://containers.dev) to provide a one-click full development environment
with all the needed tools and configurations, to develop and test [FreshRSS](https://github.com/FreshRSS/FreshRSS/).

It can be used on your local machine (see for instance the [Dev Containers extension for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers)),
or as [GitHub Codespaces](https://github.com/features/codespaces) simply in a Web browser:

[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://github.com/codespaces/new?hide_repo_select=true&ref=edge&repo=6322699)

## Test instance of FreshRSS

A test instance of FreshRSS is automatically started as visible from the *Ports* tab: check the *Local Address* column, and click on the *Open in browser* 🌐 icon.
It runs the FreshRSS code that you are currently editing.

Apache logs can be seen in `/var/log/apache2/access.log` and `/var/log/apache2/error.log`.

## Software tests

Running the tests can be done directly from the built-in terminal, e.g.:

```sh
make test-all
```
44 changes: 44 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
// For format details, see https://aka.ms/devcontainer.json
{
"name": "FreshRSS-dev-Alpine",
"build": {
"dockerfile": "Dockerfile"
},
"containerEnv": {
"DATA_PATH": "/home/developer/freshrss-data"
},
"customizations": {
"codespaces": {
"openFiles": [
".devcontainer/README.md"
]
},
"vscode": {
"extensions": [
"bmewburn.vscode-intelephense-client",
"DavidAnson.vscode-markdownlint",
"dbaeumer.vscode-eslint",
"eamodio.gitlens",
"EditorConfig.EditorConfig",
"foxundermoon.shell-format",
"GitHub.vscode-pull-request-github",
"mrmlnc.vscode-apache",
"ms-azuretools.vscode-docker",
"redhat.vscode-yaml",
"timonwong.shellcheck",
"ValeryanM.vscode-phpsab"
]
}
},
"forwardPorts": [
8080
],
"portsAttributes": {
"8080": {
"label": "FreshRSS Apache",
"onAutoForward": "notify"
}
},
"remoteUser": "developer",
"postCreateCommand": "sudo .devcontainer/postCreateCommand.sh"
}
12 changes: 12 additions & 0 deletions .devcontainer/postCreateCommand.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/bin/sh

ln -s "$(pwd)" /var/www/FreshRSS

cp ./Docker/*.Apache.conf /etc/apache2/conf.d/

./Docker/entrypoint.sh

chown -R developer:www-data /home/developer/freshrss-data
chmod -R g+rwX /home/developer/freshrss-data

httpd -c 'ErrorLog "/var/log/apache2/error.log"' -c 'CustomLog "/var/log/apache2/access.log" combined_proxy'
5 changes: 5 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
/.devcontainer/
/.git/
/.github/
/bin/
/data/
/docs/
/extensions/node_modules/
/extensions/vendor/
/node_modules/
/tests/**/*.sqlite
/vendor/
14 changes: 13 additions & 1 deletion .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true

[*.{css,scss}]
[*.css]
indent_style = tab

[*.{html,php,phtml}]
Expand All @@ -15,10 +15,22 @@ indent_style = tab
[*.js]
indent_style = tab

[*.{json,jsonc}]
indent_style = tab

[*.md]
indent_size = 4
indent_style = tab

[*.neon]
indent_style = tab

[*.sh]
indent_style = tab

[*.svg]
indent_style = tab

[*.xml]
indent_style = tab

Expand Down
3 changes: 0 additions & 3 deletions .eslintignore

This file was deleted.

26 changes: 0 additions & 26 deletions .eslintrc.json

This file was deleted.

2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,5 @@
*.png -text
*.waff -text
*.waff2 -text

/.github/ export-ignore
1 change: 1 addition & 0 deletions .github/.htaccess
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Require all denied
36 changes: 0 additions & 36 deletions .github/ISSUE_TEMPLATE/bug_report.md

This file was deleted.

56 changes: 56 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report_form.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: Bug Report
description: Create a report to help us improve
type: Bug
title: "[Bug] "
labels: ["Bug (unconfirmed)"]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report to help FreshRSS improve!
- type: textarea
id: description
attributes:
label: Describe the bug
description: "A clear and concise description of what the bug is.\n\nIf applicable, add screenshots to help explain your problem."
validations:
required: true
- type: textarea
id: reproduce
attributes:
label: To Reproduce
description: Steps to reproduce the behavior. (Screenshots could help to explain the steps.)
placeholder: "1. Go to '…'\n2. Click on '…'\n3. Scroll down to '…'\n4. See error"
value: "1. Go to '…'\n2. Click on '…'\n3. Scroll down to '…'\n4. See error"
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected behavior
description: A clear and concise description of what you expected to happen.
validations:
required: false
- type: input
id: freshRSS
attributes:
label: FreshRSS version
description: Which FreshRSS version is installed?
placeholder: e.g. 1.23.1
validations:
required: true
- type: textarea
id: environment
attributes:
label: System information
description: Please complete the following information
value: "- Database version: [e.g. SQLite, PostgreSQL 17]\n- PHP version: [e.g. PHP 8.2]\n- Installation type: [e.g. Docker, Docker image source, git, Yunohost]\n- Web server type: [e.g. Apache, nginx]\n- Device: [e.g. iPhone13]\n- OS: [e.g. Ubuntu 24.04, Win11, MacOS14]\n- Browser: [e.g. Firefox 134]"
validations:
required: true
- type: textarea
id: context
attributes:
label: Additional context
description: Add any other context about the problem here.
validations:
required: false
20 changes: 0 additions & 20 deletions .github/ISSUE_TEMPLATE/feature_request.md

This file was deleted.

41 changes: 41 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: Feature Request
description: Suggest an idea for FreshRSS
type: Feature
title: "[Feature] "
labels: ["Feature Request"]
body:
- type: textarea
id: description
attributes:
label: Is your feature request related to a problem? Please describe.
description: "A clear and concise description of what the problem is. Ex. I’m always frustrated when […]"
validations:
required: true
- type: textarea
id: usecase
attributes:
label: Use case
description: "A clear and concise description how you work with FreshRSS. Please support with examples."
validations:
required: false
- type: textarea
id: solution
attributes:
label: Describe the solution you’d like
description: "A clear and concise description of what you want to happen."
validations:
required: true
- type: textarea
id: alternatives
attributes:
label: Describe alternatives you’ve considered
description: "A clear and concise description of any alternative solutions or features you’ve considered."
validations:
required: false
- type: textarea
id: context
attributes:
label: Additional context
description: "Add any other context or screenshots about the feature request here."
validations:
required: false
Loading