Allow display_time=0 to create persistent grouped toasts that remain until dismissed or replaced.
Show immediate grouped Preparing download and Downloading feedback for backup ZIPs and file-browser directory/bulk ZIP downloads, with error replacement and focused static coverage.
Use the Settings modal action order across plugin settings and related edit/create modals so primary actions appear before Cancel while preserving existing handlers and state logic.
Route Office canvas renames through the document store so dirty or missing-on-disk Markdown sessions can be materialized at the new path without hitting the generic workdir filesystem rename endpoint. Add regression coverage for missing draft materialization, dirty markdown rename, and the custom rename hook contract.
Adds a branded file-browser toolbar with current-folder search, visible selection, and selection status.
Introduces bulk copy paths, ZIP download, and delete actions backed by dedicated API handlers so selected files are processed as one browser operation.
Add a pencil action beside Save that reuses the existing file browser rename modal for open Office documents. Preserve document metadata after filesystem renames, retarget active LibreOffice desktop sessions to the new path, and cover the rename flow in Office regression tests.
Expose a directory-only Download ZIP action in the file browser menu and make folder downloads use a stable .zip filename from the existing download endpoint.
Move Remote Link and Space Agent into the sidebar dropdown while removing their right-canvas rail actions.
Rename Scheduler-facing UI to Tasks and collapse Chat Actions behind a persisted dropdown accordion.
Unify skill handling layer and raise the active skills cap to 20.
The Skills UI now presents a simpler checklist-style flow for selecting active
skills, with live chat activation and saved defaults using the same visible list.
Skill contents can be opened in a read-only Ace viewer via the existing markdown
modal.
Add a shared safe markdown pipeline for plugin READMEs and docs.
- vendor DOMPurify and introduce a shared safe-markdown helper
- centralize GitHub README link/image rebasing, including repo routes like `releases`
- sanitize rendered HTML before all plugin-related x-html sinks
- apply the shared renderer to Plugin Hub README, installed plugin README, and markdown modal docs
- preserve target/rel handling for external links
- Updated margin in memory-dashboard.html for better layout consistency.
- Modified padding in scheduler-modal.html to enhance visual spacing.
- Simplified padding in modals.css for a cleaner modal appearance.
- Removed unnecessary margin-top in settings.css to streamline styling.
Expose plugin config management and improve UI/UX. Backend: add plugins API actions list_configs and delete_config (with validation and file deletion), and refine find_plugin_assets to infer project/agent from paths when wildcards are used. Frontend: update download endpoints to /api/download_work_dir_file, redesign plugin-configs list layout, add delete confirmation and show action, and adjust styles. Enhance plugin-settings-store with unsaved-changes detection, scope-change confirmation, config listing and deletion via the new API, and settings snapshot lifecycle. Also update message path replacement to use the /api prefix.
Accept upstream's architectural refactors:
- Settings UI sections moved from Python to frontend components
- User data consolidated under /usr directory
- Inline settings modal replaced by stacked modal system
- settings.js removed (moved to component stores)
Conflicts resolved by accepting upstream for all 5 files.
Our skills/backup features will be re-implemented using the new architecture.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Added method to merge sidebar tasks into the scheduler store, preserving object references
- Updated showTaskDetail to sync with sidebar when the task list is empty (the empty array was causing the Task not found error. Tasks are now available on page load
- Simplified task detail opening logic by integrating it into the `settingsModalStore`
- Updated the visibility condition for the task detail view in `scheduler-task-detail.html` to rely solely on the selected task state
rm attributes from components
simplify task display logic
settings components init
scheduler componentize
- Removed the inline scheduler settings script from `index.html` and replaced it with a new component structure in `scheduler-settings.html`, `scheduler-task-editor.html`, `scheduler-task-list.html`, and `scheduler-task-detail.html`.
- Introduced a dedicated `scheduler-store.js` to manage state and logic for the scheduler, enhancing maintainability and separation of concerns.
- Updated the `index.js` to remove the now obsolete `openTaskDetail` function, integrating task detail handling within the new store.
- Removed the deprecated `scheduler.js` file, consolidating functionality into the new component architecture.
settings modal store rename
- Replaced all instances of `$store.settingsModalStore` with `$store.settingsStore` across various settings components.
scheduler tab content x-if
Modified buildPayloadFromEditingTask() to only include project fields when creating a new task (isCreating === true), not when updating an existing one