Skip to content

feat(cli): add plugin browser popup with Shift+I install sub-dialog - #2115

Open
ldc111 wants to merge 3 commits into
GCWing:mainfrom
ldc111:main
Open

feat(cli): add plugin browser popup with Shift+I install sub-dialog#2115
ldc111 wants to merge 3 commits into
GCWing:mainfrom
ldc111:main

Conversation

@ldc111

@ldc111 ldc111 commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Add a managed plugin browser popup for both ChatMode and the StartupPage:

list/search/scroll managed plugin packages and toggle activation with

Space, mirroring deveco-code's plugin manager.

Plugins action handler + command palette entry, popup type, render, and

state wired into ChatMode (pending-op + spawned task + poll) and

StartupPage (block_in_place), with the existing toggle refresh flow

New ui/plugin_browser.rs and modes/chat/plugins.rs modules

Install sub-dialog opened with Shift+I: single input accepting an npm

name/@scope/pkg/pkg@version/file://path spec, Tab to toggle user/project

scope, Enter to submit, Esc to go back, with busy + message states

Install dispatch is a placeholder stub returning 'not yet implemented'

until bitfun-core exposes an install API; UI flow is fully exercisable

ldc111 and others added 3 commits August 6, 2026 18:12
Add a managed plugin browser popup for both ChatMode and the StartupPage:
list/search/scroll managed plugin packages and toggle activation with
Space, mirroring deveco-code's plugin manager.

- Plugins action handler + command palette entry, popup type, render, and
  state wired into ChatMode (pending-op + spawned task + poll) and
  StartupPage (block_in_place), with the existing toggle refresh flow
- New ui/plugin_browser.rs and modes/chat/plugins.rs modules
- Install sub-dialog opened with Shift+I: single input accepting an npm
  name/@scope/pkg/pkg@version/file://path spec, Tab to toggle user/project
  scope, Enter to submit, Esc to go back, with busy + message states
- Install dispatch is a placeholder stub returning 'not yet implemented'
  until bitfun-core exposes an install API; UI flow is fully exercisable
The ported plugin browser called bitfun-core directly from ui/plugin_browser.rs,
modes/chat/plugins.rs, and ui/startup.rs, blowing past the TUI backend
direct-call ratchet (budget 0 for new files; startup.rs 18 > 14) and failing
the core-boundaries CI check.

Move all bitfun-core plugin calls (refresh/toggle/install + the core-DTO to
PluginItem projection) into a new cli-local plugin_ops module at
src/apps/cli/src/plugin_ops.rs, which sits outside the boundary-scanned
ui/ and modes/chat/ trees (same pattern as embedded_app_server.rs).
The scanned UI files now consume plain PluginItem/PluginInstallScope/
PluginDisplayStatus types and ops through crate::plugin_ops::, keeping the
ratchet clean:

  plugin_browser.rs  0 (budget 0)
  plugins.rs         0 (budget 0)
  startup.rs        14 (budget 14, unchanged)

Verified: cargo check -p bitfun-cli passes; checkTuiLegacyBackendRatchet
reports 0 failures.
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.

1 participant