Commit graph

268 commits

Author SHA1 Message Date
Rosie Val
cecebe4c69
Merge branch 'revenge-mod:main' into main
Some checks failed
Build / Build (push) Failing after 9s
2026-08-15 13:04:01 -04:00
PalmDevs
9525f98289
fix(plugins/staff-settings): don't show toast at startup 2026-08-14 01:49:27 +07:00
PalmDevs
b1d65fbda2
feat(plugins/recovery): detect freezes much earlier + show stack traces 2026-08-14 01:48:31 +07:00
Rosie Val
533a8f8185 Add channel switching for installed plugins 2026-08-12 16:11:13 -04:00
PalmDevs
858244cab9
fix(plugins/user-badges): make more resilient 2026-08-13 02:18:48 +07:00
PalmDevs
8f028b5a56
fix(plugins/user-badges): update data 2026-08-13 02:06:57 +07:00
PalmDevs
b11c800789
Singularize restore default repositories option 2026-08-13 01:56:47 +07:00
PalmDevs
f4a8c8d30f
Force update the screen when adding default repo 2026-08-13 01:55:57 +07:00
PalmDevs
9959ff7513
Improve relations sheet style and behavior 2026-08-13 01:45:38 +07:00
PalmDevs
4c57f5c257
Merge remote-tracking branch 'origin/main' into plugin-ux-fix 2026-08-13 00:07:07 +07:00
PalmDevs
66465552bb
fix(plugins/settings.plugins): essential plugin tooltip showing up for pending updates + refactor tooltips 2026-08-12 18:02:56 +07:00
PalmDevs
fc41d45f2a
feat(plugins/settings): add donate UI 2026-08-12 16:02:28 +07:00
PalmDevs
095d406779
feat(plugins/settings.plugins): increase auto update intervals 2026-08-12 01:35:49 +07:00
Rosie Val
b6304635e7 Address PR review comments 2026-08-09 14:52:34 -04:00
Rosie Val
f7d769ef18 UI/UX improvements 2026-08-09 03:29:58 -04:00
PalmDevs
5b44ad0846
fix(plugins/recovery): more false freeze detections 2026-08-04 23:54:22 +07:00
PalmDevs
66f1c54b92
fix(plugins/settings.plugins): recovery banner icon color and size 2026-08-04 23:42:47 +07:00
PalmDevs
cad8e1fa7d
chore(plugins): merge error-boundary into recovery 2026-08-04 23:28:16 +07:00
PalmDevs
e47ba711f4
feat(plugins/error-boundary): improve ErrorBoundary screen 2026-08-04 23:27:15 +07:00
PalmDevs
30499d543d
fix(plugins/settings.plugins): check default filters & sort instead of filter size to color the button primary 2026-08-04 23:09:09 +07:00
PalmDevs
54f5d94205
feat: warn user to update loader if native cache format is outdated 2026-08-02 17:10:53 +07:00
PalmDevs
ed9f4dee43
fix(lib/utils/proxy)!: remove proxy patch and isProxy getProxyTarget 2026-08-02 17:03:57 +07:00
PalmDevs
17bb26a2ea
feat(plugins/settings.plugins): make filter button primary when active 2026-08-02 00:13:44 +07:00
PalmDevs
c5c087cec3
chore(plugins/recovery): sync manifest with native 2026-08-02 00:05:45 +07:00
PalmDevs
4426bc54ae
fix(plugins/recovery): lessen freeze detection false positives 2026-08-01 14:52:29 +07:00
PalmDevs
944dbb6838
feat: improve recovery mode + small lib additions
Improved Recovery Mode features generally:
- Ability to view and modify saved states while not actually running any additional plugins
- Better Recovery Mode banner display
- Enter Recovery Mode option in Revenge Settings UI
- Fixed freeze detection false positives

New APIs:
- lib/discord: `disabled` in `DiscordModules.Components.FloatingActionButtonProps`
- lib/modules/native/app: new submodule with `reloadApp()` method

Fixes:
- Use `reloadApp()` instead of `BundleUpdaterManager.reload()`
2026-08-01 01:51:34 +07:00
PalmDevs
1497e8ef8d
feat: app freeze detection and recovery mode
This requires loader support and can only be triggered from a native dialog.
Recovery mode toggle won't be a functionality for now. If there's a use, such as binary searching problematic plugins, then it'll be added (similar to VSCode extension bisect).
2026-07-31 17:46:08 +07:00
PalmDevs
457df3ebb5
fix(plugins/settings.plugins): change button text in plugin failed alert to be more clear 2026-07-31 14:51:20 +07:00
PalmDevs
261a493f4b
fix(plugins/settings.plugins): allow resolving internal plugins when planning installs 2026-07-31 14:51:19 +07:00
PalmDevs
c49f3eb471
fix(lib/discord/common)!: split to own submodules + don't restrict everything to init+ 2026-07-31 14:51:15 +07:00
PalmDevs
217617a663
fix(plugin/settings): remount instead of recomputing SettingHookHarness memos
Recomputing causes a React crash because the harness calls additional hooks for every setting.
When we add/remove setting items, hooks are not called the same amount.

React expects the same amount of hooks to be called after each render, so this breaks adding settings items while in Settings.
We can remount it instead to avoid this crash.
2026-07-31 03:26:04 +07:00
PalmDevs
b258ac70d6
fix(plugins): remove developer-kit
This plugin has been moved to an external repository.
The goal of bundling internal plugins are including what's needed by _the user_ by default.

Developer Kit is not needed by most users, nor is it a "safe" plugin (it exposes a few attack surfaces, even if unlikely to be used).
2026-07-31 02:50:59 +07:00
PalmDevs
0f75551c36
fix(plugins/developer-kit): migrate to FlashList v2 2026-07-31 02:38:46 +07:00
PalmDevs
10371ff000
fix: settings UI refreshing 2026-07-31 02:38:41 +07:00
PalmDevs
2e944b0f25
fix: support 341202+
First Android Static Hermes version incoming, with Metro issues.

- scripts/plugins/hermesc: use hermes-compiler
- plugins/settings: get React Native version correctly
- lib/modules/finders/filters: support null ID in DependencyMap for `withDependencies`
- lib/discord: update filters for 341202+
2026-07-29 21:48:18 +07:00
PalmDevs
89ae4d910c
feat(plugins/settings.plugins): show repo description + add Copy URL option 2026-07-29 21:48:17 +07:00
PalmDevs
0c9cd9f8e3
fix(plugins/settings.plugins): don't restore default repo multiple times 2026-07-29 21:48:16 +07:00
PalmDevs
9e2ac7185d
feat(plugins/settings.plugins): restore default plugin repo when needed 2026-07-28 12:43:55 +07:00
PalmDevs
b250450367
feat(lib/plugins): reexpose EnabledLate flags property as startedLate 2026-07-26 16:01:09 +07:00
PalmDevs
d2c7f47fe7
fix(plugins/settings.plugins): match the version, channel, and repo exactly from the card when installing plugins from the Browse screen 2026-07-26 02:01:58 +07:00
PalmDevs
5432276ab0
fix(plugins/settings.plugins): small errors & inconsistencies
- Soft errors now nudge UI to rerender.
- `runPluginLate` will throw anyway, so early return is cleaner.
- `confirmInstall` returns a `Promise` which the AlertModal should await before closing.
2026-07-26 02:01:57 +07:00
PalmDevs
ff263a2282
chore: remove dead code and correct comments 2026-07-26 02:01:56 +07:00
PalmDevs
da1e34dc62
fix(plugins/settings.plugins): last updated date logic
Only update when repos are actually refreshed, and when no errors occurred.
2026-07-26 02:01:37 +07:00
PalmDevs
2b665164e9
fix(plugin/api.json-storage): handle when plugin hasn't been initialized when clearing storage 2026-07-26 00:54:20 +07:00
PalmDevs
61dad36056
fix(plugins/settings.plugins): cache repo listings when building an alert to confirm an install plan 2026-07-26 00:12:55 +07:00
PalmDevs
41e9186966
fix(plugins/settings.plugins): show toast for errors during missing dependencies installation when enabling plugins 2026-07-26 00:10:03 +07:00
PalmDevs
6e4d128951
fix(plugins/settings.plugins): pending reload uninstall alert text 2026-07-25 23:58:36 +07:00
PalmDevs
eed74947c3
chore: format and fix potential type errors 2026-07-25 23:58:01 +07:00
PalmDevs
9b412a9404
feat!: new repo system + versioning system support + bug fixes
BREAKING CHANGES:
- New versioning system: Allowing any amount of number segments, with prerelease support.
  - Any number of segments is supported: 1, 1.0, 1.0.0, 1.0.0.0, ...
  - Prerelease labels are compared "digit-run", similar to Debian.
  - Plugins must specify a version.
  - User-facing plugins should use CalVer. API plugins should use SemVer.
    Revenge APIs use SemVer while the new `discord` dependency parses the Discord version string directly.
- Dependency is now a Map, with support for version ranges and optional. Suggested URL is removed. (See new repo system)
- Plugins will now have to declare a dependency on `revenge.api` (Revenge API version) and `discord` (Discord version).
- Manifest now requires a format version (currently `1`)

New APIs:
- lib/plugins/utils: Utilities to format versioning

Features:
- New repo system: Repository design is inspired by Linux package repositories.
  - Repos host manifest, versions, channels, download URL/size, and hash for multiple plugins.
  - New dependency system: Plugins are versioned, and shouldn't break when updates come.
    Plugins can now declare dependency on supported Discord/Revenge API versions, so they won't break with auto-updates.
    Dependencies can be optional, but dependency on `revenge.api` and `discord` must be required.
    Dependents are soft-disabled when dependencies don't satisfy. Once satisfied, the plugin can start again.
  - All updates for running plugins REQUIRE a reload to prevent stale linking issues. Both native and JS-side.
  - Update checking is handled entirely by JS. But the native-side still handles installation, indexing, and verification.
  - Local indexes are updated against remote indexes. Dependency checking always uses local indexes.
  - Users can add custom repositories and custom their priority order. URL is the identity.
- Plugins can now have custom data URI icons instead of being restricted to React Native app assets.
- External plugin installs require UI confirmation before installing.
- Pending Update and Pending Reload filters in Plugins page.
- Ability to browse external plugins in repositories. Official repository will be added soon.

Fixes/Refactor:
- Refactored Plugin-related settings to a separate "Plugin Settings" plugin.
- Masonry layout fixes in landscape.
- Updated plugins now show "reload to apply" toast instead.
- Removed dead code.
2026-07-25 23:43:44 +07:00
PalmDevs
fb35d7af95
fix(plugins/api.json-storage): remove entire dir when clearing and only update storage when needed 2026-07-19 20:19:19 +07:00