Skip to content

Conversation

@endothermicdev
Copy link
Collaborator

@endothermicdev endothermicdev commented Oct 23, 2025

Important

25.12 FREEZE October 27th: Non-bugfix PRs not ready by this date will wait for 26.03.

RC1 is scheduled on November 10th

The final release is scheduled for December 1st.

Checklist

Before submitting the PR, ensure the following tasks are completed. If an item is not applicable to your PR, please mark it as checked:

  • The changelog has been updated in the relevant commit(s) according to the guidelines.
  • Tests have been added or modified to reflect the changes.
  • Documentation has been reviewed and updated as needed.
  • Related issues have been listed and linked, including any that this PR closes.

Addresses several issues raised in #8439. Still working on a few of them.

@endothermicdev endothermicdev added this to the v25.12 milestone Oct 23, 2025
@endothermicdev endothermicdev marked this pull request as ready for review October 31, 2025 19:43
@endothermicdev endothermicdev force-pushed the reckless-ui-features branch 3 times, most recently from b2ccfc0 to 7ab612f Compare November 7, 2025 16:16
@endothermicdev endothermicdev modified the milestones: v25.12, v26.03 Nov 13, 2025
This doesn't change the argparse behavior with --help/-h, but it does
correct the output in this one case where we must manually call it.
This is needed when installation is managed by an application
that may not have access to the filesystem to clean up manually.
'Reckless listinstalled' will now list all plugins installed and managed
by reckless.
Changelog-Added: reckless: `listinstalled` command lists plugins installed by reckless.
Keep state on the clone and subdirectories so that
subsequent access doesn't try fetching again.
…stall

reckless listavailable sorts through the available sources to
find plugins for which we have installers.

Changelog-Added: reckless gained the 'listavailable' command to list available plugins from reckless' sources.
Requested by @ShahanaFarooqui while accessing reckless via rpc
in order to find out where the plugins are installed and
enabled.
Allows listconfig, listinstalled, and listavailable to be called
via rpc.  Also allow processing non-array result in listconfig output.
@endothermicdev
Copy link
Collaborator Author

Rebased and updated reckless rpc to handle single argument reckless commands (the new listconfig, listavailable, listinstalled) and handle json objects in the result (listconfig output.)

Copy link
Collaborator

@ShahanaFarooqui ShahanaFarooqui left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @endothermicdev, thanks for the PR! I am excited to start integrating reckless with these cool new options into the UI soon. In the meantime, here are the results from my testing of reckless.


1. install "backup" Crashes Lightning Node

After running lightning-cli reckless install "backup", it installs the backup plugin but crashes without any error log:

2025-11-14T05:35:08.692Z DEBUG   plugin-recklessrpc: calling: reckless -v --json -l /home/.lightning --network regtest install backup (null)

Restart keeps repeatedly crashing the CLN node:

2025-11-14T05:36:51.578Z DEBUG   plugin-manager: started(798730) /home/.lightning/reckless/backup/backup.py
2025-11-14T05:36:51.752Z INFO    plugin-backup.py: Could not find backup.lock in the lightning-dir
2025-11-14T05:36:52.757Z INFO    plugin-backup.py: Killing process lightningd (798649)

2. install 1ff0ee6 "clnrod" Ignored the Requested Commit

The plugin installed, but the requested commit 1ff0ee6 was not honored.

3. Installing From GitHub URLs Fails

Reckless is unable to detect the plugin from the provided URL.
Examples:

lightning-cli reckless install "https://github.com/nettijoe96/c-lightning-graphql"
lightning-cli reckless install "https://github.com/nettijoe96/c-lightning-graphql/tree/12888f124bbdf9ffe1fbbd3d7cf0286c66184e8e"

4. listinstalled Reckless Plugin Vs RPC Output

The RPC returns only a string array of plugin names, while the standalone reckless plugin returns full metadata (enabled, entrypoint, installed commit, etc.).It would be useful for the RPC to return the richer JSON structure.

5. Improve listavailable Output Format

Currently it returns a simple text array of plugins. But I would suggest switching to JSON objects so manifest metadata can be also added once available (eg. description, entrypoint, default commit, last updated, language, etc.).

6. Should .remote_sources Be Deleted After listavailable?

7. Plugin Search Priority Is Unclear

Proposed priority:

  • Installed plugins (enabled/disabled)
  • Source URL
  • .remote_sources directory

Step to reproduce:

  • Install "summary" plugin
  • Call listavailable which will create .remote_sources directory
  • Call search "summary" will list it from .remote_sources
  • Manually delete .remote_sources
  • Call search "summary", this time it will list it from the source url https://github.com/lightningd/plugins

8. uninstall "<plugin>" Leaves disable-plugin in Config

The plugin directory is removed, but an entry remains in bitcoin-reckless.conf as disable-plugin=<plugin>, unsure if this is intentional. Though RPC still shows correct enabled/disabled state.

9. Invalid or Missing Subcommands Crash the Process

It should return a structured error instead of crashing.
Example failing commands: search, add, remove, source, source "xyz", update, update "summary"

$ lightning-cli reckless source
{
   "code": -3,
   "message": "the reckless process has crashed"
}

10. reckless help Output Is Not Formatted

11. reckless --version Returns CLN Version

It should return the reckless plugin version instead.

12. Missing Commands in Document Synopsis

The following commands are missing from the documentation synopsis:

search
update
help
listconfig
listavailable
listinstalled

13. Missing Documentation Descriptions

Descriptions are missing for these commands:

listavailable
listinstalled
listconfig

14. Clear Old Reckless Configurations

[UPDATE]: After reconsideration, this feels like a low-priority UI feature. Users should explicitly choose to clear one plugin at a time. A factory-reset-style option may be premature for the UI.


Please note that I haven’t reviewed the code yet. To save time and effort, I’ll begin the code review once these commands have matured and are working as expected.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants