mirror of
https://github.com/cline/cline.git
synced 2026-10-31 02:42:02 +08:00
* fix(vscode): restore legacy workflow invocation and management UI - Expand /workflow slash commands typed with the legacy .md filename spelling (what the autocomplete menu inserts) and mid-message, and honor the user's workflow enable/disable toggles, instead of only expanding a leading extension-less /name via the SDK resolver. - Restore the Workflows tab in the rules modal (view, toggle, create, edit, delete; enterprise section) that was dropped in the SDK-backed extension while all its gRPC handlers remained wired. * chore: add changeset for workflow fixes * fix(vscode): refresh workflow toggles on webview launch The slash command menu is driven by workflowToggles state, but nothing refreshed it at startup in the SDK-backed extension (only opening the rules modal or creating a rule file did), so workflows never appeared in the chat autocomplete until the user opened the modal. Legacy refreshed toggles on task init. * feat(vscode): move Workflows tab last and add deprecation warning Workflows tab now appears after Rules/Hooks/Skills, and its view leads with a warning banner: workflows are being deprecated in favor of skills, with a docs link. * chore: update changeset for workflow deprecation notice * fix(vscode): address review findings on workflow expansion - Honor remoteWorkflowToggles (and locked alwaysEnabled remote workflows) when building the disabled set, so disabled enterprise workflows no longer expand. - Treat a workflow as disabled only when no scope has it enabled, so a disabled workspace file no longer shadows a same-named enabled global one (legacy expanded the enabled scope). - Strip all workflow extensions the SDK discovers (.md/.markdown/.txt) when matching typed commands, not just .md. - Re-read toggle state after the async directory scan in refreshWorkflowToggles so a toggle flipped mid-scan is not overwritten by the stale snapshot. * fix(vscode): map workflow toggles to records so frontmatter names are governed Compute the disabled set from the discovered workflow records (listRecords) instead of toggle-path basenames alone: a file's toggle is matched by its basename and disables the record's actual command name, so a frontmatter 'name' that differs from the filename is still governed by the Workflows toggle. Remote-config-materialized records are governed by the name-keyed remote toggles (locked alwaysEnabled remain on). * fix(vscode): harden workflow toggle-name mapping for expansion - A command name shared by several records now counts as enabled when any record is enabled, so a disabled local workflow can no longer suppress an enabled or locked (alwaysEnabled) enterprise workflow. - Remote toggles/locks are matched via a sanitizeSegment-compatible key, so config names that get rewritten during materialization (e.g. 'Org Standards' -> org-standards.md) still govern expansion. - Typed filenames (e.g. /my-workflow.md from autocomplete) now resolve to workflows whose frontmatter renames the command, via the record's file basename. * fix(vscode): govern each workflow command by its own record's toggle Key the disabled set by exact command name and decide each record independently instead of OR-aggregating by canonical name: distinct commands whose names only differ by case or extension (e.g. a local 'Release' and a remote 'release') no longer influence each other, so an enabled local workflow cannot keep a disabled enterprise workflow expandable, and a disabled one cannot suppress a locked enterprise workflow. * fix(vscode): exact remote-name sanitization and keep mid-scan toggle additions - Port @cline/shared's sanitizeSegment verbatim (incl. the 80-char cap) for remote workflow name comparison, so long enterprise workflow names cannot bypass a disabled toggle after filename truncation. - The post-scan toggle merge now also keeps entries added while the scan was running (e.g. a workflow created via the modal), instead of pruning them with the deleted files. * fix(vscode): handle mid-scan deletions and sanitized remote-name collisions - The post-scan toggle merge now also drops entries that were removed from state while the scan ran, so a workflow deleted mid-refresh is not restored by the stale scan result. - Remote toggle names that sanitize to the same materialized name merge as enabled-if-any-enabled instead of last-write-wins. * fix(vscode): serialize workflow toggle refreshes Queue refreshWorkflowToggles runs on a promise chain so overlapping refreshes (webview launch, modal open, file create/delete) cannot interleave scans and writes. Combined with the post-scan merge for direct toggle flips, this closes the remaining stale-refresh races. * fix(vscode): key remote workflow toggles off the materialized filename The materializer names remote workflow files from the config name, so derive the remote toggle key from the file basename instead of the parsed command name; a frontmatter alias can no longer bypass a disabled remote toggle.