Commit Graph

7020 Commits

Author SHA1 Message Date
DIYgod 96d087fdbc release(desktop): release v1.13.0 desktop@1.13.0 2026-09-02 09:56:53 +08:00
DIYgod 8d52b91d3e docs(desktop): prepare release inputs 2026-09-02 09:55:07 +08:00
DIYgod 9787707ca3 feat(timeline): support oldest-first unread sorting 2026-09-01 20:26:14 +08:00
DIYgod f82a5dad81 fix(desktop): restore inbox secret copying 2026-09-01 20:11:40 +08:00
DIYgod a2ad2a8922 fix(mobile): preserve timeline position across switches 2026-09-01 18:28:26 +08:00
Komh 3b4c85b51d docs(readme): add Flatpak install method via FlatPark (#5079) 2026-09-01 15:47:25 +08:00
Komh 02efd07710 feat(desktop): build a Linux .deb alongside the AppImage (#5078)
Adds @electron-forge/maker-deb so `electron-forge make` on Linux emits a
.deb next to the existing AppImage.

- forge.config: MakerDeb scoped to linux; `bin` pinned to packagerConfig.name
  so the staging build ("Folo Staging") also resolves; folo:// and follow://
  registered as x-scheme-handler MIME types; Network;News; categories.
- postMake: .deb is renamed to the Folo-<version>-linux-<arch>.deb convention
  but kept out of latest-linux.yml (the electron-updater feed is AppImage-only).
- CI: install fakeroot/dpkg on the Linux leg; upload the .deb as its own
  `linux-x64-deb` artifact; add *.deb to the attestation and release globs.
- pnpm-lock.yaml regenerated with the pinned pnpm@10.17.0. The large churn is
  peer-key reserialization from a newer pnpm than last wrote the lockfile;
  the only functional additions are maker-deb and its electron-installer-debian
  subtree.


Claude-Session: https://claude.ai/code/session_01KeQJNfE1FfJnLMH9psG1jS

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-01 15:23:21 +08:00
DIYgod 78f6bd1b74 fix(mobile): fix settings header safe area and contrast 2026-08-26 11:07:51 +08:00
DIYgod 7c220c69a8 fix(desktop): allow custom URL schemes 2026-08-15 14:51:34 +08:00
DIYgod 3846c90b67 fix(ci): scope release detection to target branch (#5065) 2026-08-01 23:14:33 +08:00
github-actions[bot] 3bc8336562 Merge pull request #5068 from RSSNext/mobile-main
chore(sync): merge mobile-main into dev
2026-08-01 10:37:48 +00:00
DIYgod a580e0a337 Merge pull request #5067 from RSSNext/release/mobile/0.5.8
release(mobile): Release v0.5.8
mobile/v0.5.8
2026-08-01 18:28:33 +08:00
DIYgod f6777ee559 release(mobile): release v0.5.8 2026-08-01 17:45:07 +08:00
DIYgod 6a8c07c000 docs(mobile): prepare release metadata 2026-08-01 17:44:47 +08:00
DIYgod e291c3d1da fix(mobile): comply with Android media permissions policy 2026-08-01 17:41:46 +08:00
DIYgod efafb15d7c Merge pull request #5064 from RSSNext/mobile-main
chore(sync): merge mobile-main into dev
2026-07-31 19:28:49 +08:00
DIYgod 4dea1853b6 release(mobile): Release v0.5.7 mobile/v0.5.7 2026-07-31 19:03:10 +08:00
DIYgod 07dd7e27ab Merge pull request #5063 from RSSNext/mobile-main
chore(sync): merge mobile-main into dev
2026-07-31 18:39:13 +08:00
DIYgod 48ce50d034 release(mobile): Release v0.5.7 (#5061)
* release(desktop): release v1.11.0

* docs(desktop): restore mobile release inputs

* fix(desktop): use js-yaml ESM exports

* fix(desktop): use js-yaml ESM exports

* fix(desktop): package jsdom runtime dependencies

* fix(desktop): package jsdom runtime dependencies

* fix(desktop): use js-yaml ESM exports for Windows metadata

* build(deps): bump actions/setup-node from 6 to 7 (#5046)

Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6 to 7.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix(ssr): escape hydration data in inline scripts

* fix(ssr): restore shared user profiles

* fix: make Codex worktree setup portable

* fix(mobile): restore dark mode text colors

* fix(styles): avoid DaisyUI border token collision

* fix(desktop): restore category chevron rotation

* fix(subscription): recover past-due Stripe checkout

* fix(desktop): dismiss share popover after actions

* fix(mobile): handle RSSHub subscription limit errors

* fix(desktop/ipc): allowlist URL scheme protocols in openURLScheme (#5056)

The 'integration.openURLScheme' IPC method invokes 'shell.openExternal'
with a renderer-supplied string after only checking that it contains
'://'. Electron's documentation explicitly warns that passing untrusted
URLs to 'shell.openExternal' is unsafe: schemes such as 'file://',
'smb://', 'ms-msdt:', 'search-ms:', 'jar:', 'res:', 'javascript:',
'data:' and 'vbscript:' have well-known abuse chains (local file
disclosure, NTLM credential theft over SMB on Windows, MSDT/Follina-style
RCE, etc.). Because the renderer process can also reach this IPC via any
XSS sink in untrusted RSS feed content, the previous validation was not
sufficient.

Replace the substring check with strict URL parsing plus an allowlist of
protocols that match the integration use-cases documented in the UI
(Obsidian, Bear, Drafts, Things, Notion, DEVONthink) plus generic
http/https/mailto. All other protocols are rejected with a clear error.

Adds vitest cases for representative dangerous schemes (verifying that
'shell.openExternal' is never invoked) and for every scheme shipped as a
built-in example, so future regressions on either side are caught.

* chore(ci): format integration URL scheme test

* fix(mobile): use product IDs for Apple IAP verification

* docs(desktop): prepare release inputs

* docs(mobile): prepare release metadata

* release(mobile): release v0.5.7

* docs(mobile): restore desktop release inputs

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Sebastion <sebastion@sebastion.dev>
2026-07-31 18:32:29 +08:00
github-actions[bot] ec8838083e Merge pull request #5062 from RSSNext/main
chore(sync): merge main into dev
2026-07-31 10:16:13 +00:00
DIYgod 0eb0b13dab release(desktop): Release v1.12.0 (#5060)
* release(mobile): release v0.5.6

* docs(mobile): restore desktop release inputs

* fix(desktop): use js-yaml ESM exports

* fix(desktop): package jsdom runtime dependencies

* fix(desktop): use js-yaml ESM exports for Windows metadata

* build(deps): bump actions/setup-node from 6 to 7 (#5046)

Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6 to 7.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix(ssr): escape hydration data in inline scripts

* fix(ssr): restore shared user profiles

* fix: make Codex worktree setup portable

* fix(mobile): restore dark mode text colors

* fix(styles): avoid DaisyUI border token collision

* fix(desktop): restore category chevron rotation

* fix(subscription): recover past-due Stripe checkout

* fix(desktop): dismiss share popover after actions

* fix(mobile): handle RSSHub subscription limit errors

* fix(desktop/ipc): allowlist URL scheme protocols in openURLScheme (#5056)

The 'integration.openURLScheme' IPC method invokes 'shell.openExternal'
with a renderer-supplied string after only checking that it contains
'://'. Electron's documentation explicitly warns that passing untrusted
URLs to 'shell.openExternal' is unsafe: schemes such as 'file://',
'smb://', 'ms-msdt:', 'search-ms:', 'jar:', 'res:', 'javascript:',
'data:' and 'vbscript:' have well-known abuse chains (local file
disclosure, NTLM credential theft over SMB on Windows, MSDT/Follina-style
RCE, etc.). Because the renderer process can also reach this IPC via any
XSS sink in untrusted RSS feed content, the previous validation was not
sufficient.

Replace the substring check with strict URL parsing plus an allowlist of
protocols that match the integration use-cases documented in the UI
(Obsidian, Bear, Drafts, Things, Notion, DEVONthink) plus generic
http/https/mailto. All other protocols are rejected with a clear error.

Adds vitest cases for representative dangerous schemes (verifying that
'shell.openExternal' is never invoked) and for every scheme shipped as a
built-in example, so future regressions on either side are caught.

* chore(ci): format integration URL scheme test

* fix(mobile): use product IDs for Apple IAP verification

* docs(desktop): prepare release inputs

* docs(mobile): prepare release metadata

* release(desktop): release v1.12.0

* docs(desktop): restore mobile release inputs

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Sebastion <sebastion@sebastion.dev>
desktop-build/v123 desktop/v1.12.0
2026-07-31 18:09:55 +08:00
DIYgod 376e6e0343 docs(mobile): restore desktop release inputs 2026-07-31 16:31:48 +08:00
DIYgod eb782e0389 release(mobile): release v0.5.7 2026-07-31 16:31:13 +08:00
DIYgod c8a0aa0b4f docs(desktop): restore mobile release inputs 2026-07-31 16:29:28 +08:00
DIYgod e0c5d6186a release(desktop): release v1.12.0 desktop@1.12.0 2026-07-31 16:28:50 +08:00
DIYgod 8a2babfd4f docs(mobile): prepare release metadata 2026-07-31 16:27:59 +08:00
DIYgod 2d9c026cca docs(desktop): prepare release inputs 2026-07-31 16:27:49 +08:00
DIYgod a27db571b3 fix(mobile): use product IDs for Apple IAP verification 2026-07-30 19:27:59 +08:00
DIYgod dd2c933936 chore(ci): format integration URL scheme test 2026-07-28 13:52:45 +08:00
Sebastion bd91b015ee fix(desktop/ipc): allowlist URL scheme protocols in openURLScheme (#5056)
The 'integration.openURLScheme' IPC method invokes 'shell.openExternal'
with a renderer-supplied string after only checking that it contains
'://'. Electron's documentation explicitly warns that passing untrusted
URLs to 'shell.openExternal' is unsafe: schemes such as 'file://',
'smb://', 'ms-msdt:', 'search-ms:', 'jar:', 'res:', 'javascript:',
'data:' and 'vbscript:' have well-known abuse chains (local file
disclosure, NTLM credential theft over SMB on Windows, MSDT/Follina-style
RCE, etc.). Because the renderer process can also reach this IPC via any
XSS sink in untrusted RSS feed content, the previous validation was not
sufficient.

Replace the substring check with strict URL parsing plus an allowlist of
protocols that match the integration use-cases documented in the UI
(Obsidian, Bear, Drafts, Things, Notion, DEVONthink) plus generic
http/https/mailto. All other protocols are rejected with a clear error.

Adds vitest cases for representative dangerous schemes (verifying that
'shell.openExternal' is never invoked) and for every scheme shipped as a
built-in example, so future regressions on either side are caught.
2026-07-28 13:40:13 +08:00
DIYgod 2350884eae fix(mobile): handle RSSHub subscription limit errors 2026-07-26 07:29:14 +08:00
DIYgod 52f587dacb fix(desktop): dismiss share popover after actions 2026-07-25 20:23:44 +08:00
DIYgod 3d65478fb6 fix(subscription): recover past-due Stripe checkout 2026-07-25 20:22:55 +08:00
DIYgod 22c8a667e6 fix(desktop): restore category chevron rotation 2026-07-25 20:18:50 +08:00
DIYgod 2034702df6 fix(styles): avoid DaisyUI border token collision 2026-07-25 20:17:55 +08:00
DIYgod 764c70b48c fix(mobile): restore dark mode text colors 2026-07-25 18:20:36 +08:00
DIYgod a9e2b1a818 fix: make Codex worktree setup portable 2026-07-25 15:31:42 +08:00
DIYgod 110960a6f0 fix(ssr): restore shared user profiles 2026-07-25 15:06:20 +08:00
DIYgod cf224d63f5 fix(ssr): escape hydration data in inline scripts 2026-07-25 12:38:49 +08:00
dependabot[bot] 773f1bfe21 build(deps): bump actions/setup-node from 6 to 7 (#5046)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6 to 7.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-15 09:00:49 +08:00
DIYgod 192a7139ce fix(desktop): use js-yaml ESM exports for Windows metadata 2026-07-13 13:03:42 +08:00
DIYgod 6000787cb8 fix(desktop): use js-yaml ESM exports for Windows metadata 2026-07-13 13:03:25 +08:00
DIYgod c3eb7285f9 Merge pull request #5044 from RSSNext/main
chore(sync): merge main into dev
2026-07-13 12:37:24 +08:00
DIYgod d7365aebf4 Merge pull request #5041 from RSSNext/release/desktop/1.11.0
release(desktop): Release v1.11.0
desktop/v1.11.0 desktop-build/v122
2026-07-13 12:36:53 +08:00
DIYgod d90cdfe2b3 fix(desktop): package jsdom runtime dependencies 2026-07-13 12:13:57 +08:00
DIYgod 713c53352d fix(desktop): package jsdom runtime dependencies 2026-07-13 12:12:50 +08:00
DIYgod c231c05ed9 Merge pull request #5043 from RSSNext/mobile-main
chore(sync): merge mobile-main into dev
2026-07-13 11:47:28 +08:00
DIYgod 8f7471951d Merge pull request #5042 from RSSNext/release/mobile/0.5.6
release(mobile): Release v0.5.6
mobile/v0.5.6
2026-07-13 11:46:49 +08:00
DIYgod 57fd759f25 fix(desktop): use js-yaml ESM exports 2026-07-13 11:33:09 +08:00
DIYgod d726ccccb2 fix(desktop): use js-yaml ESM exports 2026-07-13 11:32:42 +08:00