Commit graph

87 commits

Author SHA1 Message Date
Deimos AI
65b22a066f feat(webui): add chats-header-controls x-extension hook point
Adds <x-extension id="chats-header-controls"> to the chats list
section-header-row, enabling plugins to inject controls (sort toggles,
view switches) into the chats header area.

This follows the established x-extension pattern used throughout the
sidebar (sidebar-chats-list-start, sidebar-chats-list-end, etc.) and
aligns with the plugin extension architecture introduced in PR #998.
2026-04-30 14:39:20 +00:00
Tristan (Deimos AI)
bd10a667cb feat: add per-row extension points inside sidebar chat list x-for loop
Adds sidebar-chat-item-start and sidebar-chat-item-end x-extension
points inside the x-for loop in chats-list.html.

Previously only sidebar-chats-list-start/end existed, both outside
the x-for loop. This forced plugins that need per-chat-row UI (e.g.
status indicators, labels, badges) to resort to MutationObserver +
index-based DOM scanning and monkey-patching internal store methods.

With these new extension points, plugins can inject content into
each chat row with access to the reactive Alpine context object
(context.id, context.name, context.running, context.project, etc.)
entirely through declarative Alpine bindings — no DOM scanning,
no method patching, no index arithmetic.
2026-03-29 12:59:46 +00:00
Alessandro
dae502bc1d ux: trigger focus on chat input after new chat and ctx switch 2026-03-27 12:12:26 +01:00
Alessandro
ad736a831e ui: hide unavailable sidebar quick actions
Save Chat, Clear Chat, and Logout used to stay visible as disabled dropdown rows (dimmed). They now use x-show so entries only appear when a chat is selected or the user is logged in.
2026-03-26 12:07:18 +01:00
Alessandro
517c8352c5 fix for dropdown confirm handler 2026-03-26 12:06:17 +01:00
Alessandro
8333f5b276 ui: plus menu for additional chat actions
Replace the paperclip and the separate bottom action row with a single + control that opens an upward panel next to the chat input box. Menu content stays in bottom-actions.html so chat-input-bottom-actions-start / end extension points are unchanged for plugins using these slots.

Added Files to the left sidebar dropdown for easy nav.

polish plus menu for extra chat actions
2026-03-26 11:55:14 +01:00
Alessandro
c7b97c17f0 refactor sidebar header for improved dropdown functionality
- Replace dropdownOpen state management with store-based methods for better state handling.
- Update event listeners for click and keydown actions to utilize the sidebar store.
- Adjust dropdown visibility and close actions to ensure consistent behavior across menu items.
2026-03-25 14:28:23 +01:00
frdel
295f2f6c89 Update header-icons.html 2026-03-24 19:38:09 +01:00
frdel
4d32432d54 Remove memory quick action extension, increase header icons dropdown shadow
- Delete memory-entry.html extension from sidebar quick actions
- Increase dropdown box-shadow from `0 2px 8px rgba(0,0,0,0.1)` to `0 2px 13px 2px rgba(0,0,0,0.3)`
2026-03-24 19:37:33 +01:00
Alessandro
1cc055c7d8 frontend: quick actions redesign; collapsible wrapper 2026-03-24 18:09:48 +01:00
Alessandro
90eba8554d enhance header icons layout; update logo
- Increased the top margin of the left sidebar from 3.5rem to 5rem for improved spacing.
- Refactored header icons section by introducing a new logo bar and reorganizing action buttons for better accessibility and layout consistency.
- Removed redundant logo container and integrated its functionality into the new logo bar.
- Updated styles for buttons and logo to enhance visual appearance and interaction feedback.

adjust left sidebar margin and enhance header icons layout

- Increased the top margin of the left sidebar from 5rem to 6rem for improved spacing.
- Refactored the header icons section by consolidating the logo and toolbar into a single header panel for better accessibility and layout consistency.
- Updated styles for buttons and the logo to enhance visual appearance and interaction feedback.
2026-03-23 17:57:18 +01:00
Alessandro
848937f1ce ui: full logo in sidebar; new chat icon update 2026-03-18 15:58:41 +01:00
frdel
7eb6d5b19a refactor: optimize WebSocket handler lifecycle and fix extension asset path handling
- Change `_active_handlers` from list of tuples to dict mapping paths to handler instances
- Cache handler instances on connect instead of recreating them for each event
- Reuse cached instances in `_dispatch` instead of instantiating new ones
- Remove redundant handler instantiation in `_on_disconnect`
- Add type ignore comments for socketio event decorators
- Fix extension asset path construction to use proper directory variable
2026-03-17 17:00:40 +01:00
Alessandro
e03569ef7d extension friendly bottom and quick actions CSS 2026-03-10 15:26:59 +01:00
frdel
1b89a0d359 Add tool request validation and plugin change notifications
Introduce validate_tool_request() extensible method in agent.py to validate tool request structure (dict with tool_name string and tool_args dict fields) before processing. Add after_plugin_change() helper in helpers/plugins.py that clears cache and sends a frontend reload notification (throttled to display_time interval) with a reload button. Update plugin installer install/delete flows to call after_plugin_change(). Extend notification
2026-03-10 13:08:48 +01:00
frdel
d02dda3667 BIG PYTHON REFACTOR
Python scripts moved out of python/ folder to root to be unified with plugins

+ frontend extension around api calls
2026-03-05 17:28:11 +01:00
Jan Tomášek
0ef4025244
Merge pull request #1186 from keyboardstaff/plugin-scan-plugin
feat: Add Plugin Scanner plugin
2026-03-02 18:48:02 +01:00
frdel
0372c05f2b Move exception handling to extensions
Refactors exception handling to use extension points and plugins. Moves InterventionException and HandledException into python/helpers/errors and routes exceptions from Agent (monologue and outer loops) through extension call points (monologue_exception, message_loop_exception, context_chain_exception) instead of inline handling. Removes inlined retry/critical logic and adds an error_retry plugin (reset counter + retry extension) as the retry implementation; also adds monologue_exception extensions to handle repairable, intervention, and critical exceptions. Adjusts extension hook naming in python/helpers/extension, adds agent-presence guards to several memory extensions, prevents a direct agent.handle_critical_exception call in TaskScheduler, renames a test file location, and fixes a webui modal path.
2026-03-02 16:51:39 +01:00
keyboardstaff
934836a821 feat: add plugin-scan plugin 2026-02-28 00:44:49 -08:00
frdel
5acb733b9e Refactor plugin/project helpers; add plugin UI
Major refactor of plugin and project helper APIs and add a plugin management UI.

Key changes:
- Rename project meta helpers from get_project_meta_folder -> get_project_meta and update callers across many modules (projects, memory, skills_import, secrets, subagents, skills).
- Overhaul python/helpers/plugins.py: introduce PluginMetadata and PluginListItem (Pydantic), new get_plugins_list/get_enhanced_plugins_list, support for reading plugin config (config.json), enable/disable logic (.enabled/.disabled), get_enabled_plugin_paths(), and helpers to find/read/save plugin assets. Plugin discovery now supports webui/main/config detection.
- Use enabled-plugin-aware lookups in subagents, extension loading, and other places (plugins.get_enabled_plugin_paths / get_enhanced_plugins_list used instead of previous list_plugins/get_plugin_paths where appropriate).
- Add API endpoint python/api/plugins_list.py to return JSON plugin lists.
- Add frontend plugin management UI: web components webui/components/plugins/list/plugin-list.html and pluginListStore.js; wire quick-actions button to open the plugins modal.
- Add new webui assets and config pages for example_agent and memory plugins; add plugins/plugin.json metadata for example_agent and memory.
- Memory plugin fixes: updated calls to use get_project_meta and adjusted memory path helpers to use project meta layout.
- File helper: add read_file_json to read JSON files directly.
- run_ui: tightened plugin asset serving security (only serve from plugin webui or plugin extensions/webui), added unified _serve_plugin_asset helper, and load plugin API handlers using enhanced plugin list.
- Small fixes: adjustments to parse_prompt/read_prompt/tool lookup to use updated subagents.get_paths signature, extension loader now uses enabled plugin paths, and web UI extensions JS updated to expect string paths.

These changes centralize project meta handling, improve plugin discovery and enable/disable behavior, and add a basic plugin management UI and API.
2026-02-19 17:20:14 +01:00
Alessandro
d65fada385 add extension points for chat, sidebar, and modal shell
- Introduced new extension points in various chat components: `chat-input`, `chat-top`, and `chat-bar`.
- Added extension points for sidebar components: `sidebar-start`, `sidebar-end`, and others.
- Updated modal structure with extension points for better integration.
- Updated documentation in README.md to reflect current sidebar, input, chat, welcome, and modal surfaces.
- Added tests for web UI extension surfaces to ensure proper integration and functionality.
2026-02-17 18:23:36 +01:00
Alessandro
addd0abeee quick-actions css fix; tooltips in plugins 2026-02-17 14:12:02 +01:00
frdel
39a81d0d5d Refactor memory imports; add Alpine move directives
Cleanup and refactor memory plugin imports to use plugins.memory.helpers.memory directly (remove sys.path hacks) and adjust related tools (memory_load, memory_save, memory_delete, memory_forget). Move the memory quick-action entry to a new start extension file and update quick-actions HTML to remove obsolete extension points and rename the dropdown end id. Update JS extension caller to forward multiple arguments (rest params) and add several Alpine directives (move-to-start, move-to-end, move-to, move-before, move-after) plus selector helpers to support dynamic element repositioning. Also removed an unused python/__init__.py and minor whitespace/comment cleanups.
2026-02-17 11:42:12 +01:00
frdel
3918133cbf plugins - frontend PoC 2026-02-16 20:01:25 +01:00
Alessandro
d69e30adc6 simplification and further memory decoupling
components.js restore
plugins tools fix
restore agent.py
2026-02-15 03:25:33 +01:00
3clyp50
54fb4746a4 initial plugins effort; memory system PoC
plugin manifest update
add memory plugin PoC files
offload memory prompts
cleanup imports
extract memory UI
fix paths
plugin docs
2026-02-14 17:05:37 +01:00
frdel
181135f58a Settings polishing, logout button 2026-02-05 22:02:49 +01:00
3clyp50
817c580b36 no-scrollbar utility class
single scrollbar in modals
2026-02-01 20:28:23 +01:00
frdel
4932e12546 WebSocket merge 2026-02-01 16:07:45 +01:00
frdel
1c83af8837 welcome screen polishing. 2026-01-31 17:47:09 +01:00
frdel
0094aff20f fixing scrolling, markdown, subordinates 2026-01-30 15:21:54 +01:00
frdel
1581d7d12f context.running to identify chat process 2026-01-30 09:54:31 +01:00
frdel
52404a776a preferences polishing 2026-01-29 21:48:55 +01:00
3clyp50
042f2d1393 add "list" to step expansion modes
When you select LIST mode:
applyModeSteps("list", showUtils) is called
- Groups expand because: mode !== "collapsed" → "list" !== "collapsed" ✓
- Steps stay collapsed because: mode === "expanded" → "list" === "expanded" ✗
- During streaming, steps don't auto-expand because the condition checks for detailMode === "current", which is false.

This is why we only need one line for this new modality to work.
2026-01-29 20:00:38 +01:00
frdel
f63df9f4eb chat rendering refactor - work in progress 2026-01-25 19:12:34 +01:00
3clyp50
23beed94de message handling refactor #1 2026-01-23 14:13:02 +01:00
3clyp50
211e9ac3bf confirm handler for restart btn 2026-01-22 09:59:43 +01:00
3clyp50
8e73cbcb1d defaultCollapsed leftover for proc-grp 2026-01-22 09:54:04 +01:00
frdel
be8036d137 preferences labels update 2026-01-21 10:40:51 +01:00
frdel
e81f24ec99 Merge branch 'pr/907' into development 2026-01-20 16:41:02 +01:00
frdel
08693c22f0 fixes - allowed hosts, image get folders, extensions after termination 2026-01-20 16:40:16 +01:00
3clyp50
54248d4937 detail modes for process groups/steps 2026-01-20 14:36:06 +01:00
3clyp50
8d01a9c58d chat-width settings in prefs 2026-01-19 06:01:33 +01:00
3clyp50
31fd28ed9b chat list polish 2026-01-19 01:39:18 +01:00
3clyp50
40770f8c28 remove autoscroll from pref-panel 2026-01-15 14:38:43 +01:00
3clyp50
1e5239b71c rm animation delay on chat-list, user-container 2026-01-15 13:31:06 +01:00
frdel
f11f5da555 UI polishing 2026-01-07 16:59:01 +01:00
frdel
b4c8e66b7f Merge branch 'pr/875' into development 2026-01-07 10:22:08 +01:00
frdel
71147ebf19 remove tooltips from chat list 2026-01-07 10:14:34 +01:00
frdel
94a76cd4f0 new chat icon 2026-01-07 10:08:34 +01:00