Commit Graph

4516 Commits

Author SHA1 Message Date
DIYgod 96d087fdbc release(desktop): release v1.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 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 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 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 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 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 764c70b48c fix(mobile): restore dark mode text colors 2026-07-25 18:20:36 +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
DIYgod 192a7139ce fix(desktop): use js-yaml ESM exports for Windows metadata 2026-07-13 13:03:42 +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 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 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
DIYgod 06135760ba docs(mobile): restore desktop release inputs 2026-07-13 11:14:43 +08:00
DIYgod 7c4d51a642 release(mobile): release v0.5.6 2026-07-13 11:14:04 +08:00
DIYgod c3fae852aa docs(desktop): restore mobile release inputs 2026-07-13 11:13:00 +08:00
DIYgod c77e60e161 release(desktop): release v1.11.0 2026-07-13 11:11:44 +08:00
DIYgod ce905f8c5a docs(mobile): prepare release metadata 2026-07-13 11:10:19 +08:00
DIYgod 5318b9e156 docs(desktop): prepare release inputs 2026-07-13 11:10:13 +08:00
DIYgod 212db8a584 fix(mobile): restore push notification registration 2026-07-12 19:43:36 +08:00
DIYgod 451e263db4 chore(sync): merge mobile-main into dev 2026-07-12 18:32:36 +08:00
Tony c3e1c26194 fix(desktop): set referrerpolicy on youtube embed iframes (#5039) 2026-07-12 18:07:09 +08:00
DIYgod cde24e2614 fix(mobile): declare Expo Babel preset 2026-07-11 09:45:08 +08:00
DIYgod c144c36baa fix(mobile): restore scrolled header background 2026-07-11 09:05:16 +08:00
DIYgod 87862b4b93 fix(mobile): prevent timeline view selector overflow 2026-07-11 09:04:44 +08:00
DIYgod 8ae78f747f fix(mobile): restore signed-out launch login 2026-07-11 09:03:59 +08:00
DIYgod 1158281f59 chore(deps): update frontend dependencies (#5038)
* chore(deps): update frontend dependencies

* fix(ci): format OTA verification commands
2026-07-10 22:36:12 +08:00
DIYgod e48a8f4f2e fix(mobile): use folo callback for social auth 2026-07-03 17:41:58 +08:00