Skip to content

feat: add mode subtitles (descriptions) to all 90 pre-loaded custom modes - #63

Merged
xavier-arosemena merged 12 commits into
masterfrom
Subtitles-in-the-modes-#39
Jul 27, 2026
Merged

feat: add mode subtitles (descriptions) to all 90 pre-loaded custom modes#63
xavier-arosemena merged 12 commits into
masterfrom
Subtitles-in-the-modes-#39

Conversation

@xavier-arosemena

Copy link
Copy Markdown
Owner

Summary

Added description: (subtitle) fields to all custom modes that were missing them. Fixes issue #39.

Changes

  • .roomodes: Added description: fields to all 90 custom mode entries (97 total now have subtitles)
  • custom-modes/agents/ (submodule): Added description: fields to all 233 agent source YAML files
  • CHANGELOG.md & src/CHANGELOG.md: Added v3.73.0 entry
  • scripts/fix_missing_descriptions.py: Reusable utility for future agent files

Root Cause

The 233 agent source YAML files in custom-modes/agents/ never included a description field. The sync-custom-modes.mjs script supports it in ALLOWED_FIELDS (line 42), but since the upstream source lacked it, it was never populated into .roomodes.

Verification

  • ✅ YAML validation: All 97 .roomodes entries valid
  • ✅ Lint: Zero warnings
  • ✅ Tests: 425 test files passed (7,103 tests)
  • ✅ Tag: v3.73.0 (MINOR bump)

Closes: #39

Co-authored-by: hanneke-de-vries dhanneke204@gmail.com

xavier-arosemena and others added 11 commits July 27, 2026 12:20
The semble binary download was failing with HTTP 404 because the
Roo-Plus-Org/sembleexec repository did not exist.

Changes:
- Migrated download source to Audare-est-Facere/sembleexec (v0.5.2)
- Added configurable binary path setting for manual installation
- Implemented multi-source fallback with exponential backoff retry
- Added dynamic version resolution from GitHub API
- Added checksum manifest download with fallback
- Added pre-flight disk space and permission validation
- Created offline bundling script for air-gapped environments
- Updated all SHA-256 checksums and version references
- Added comprehensive test coverage (11 new test cases)

Co-authored-by: hanneke-de-vries <dhanneke204@gmail.com>
The test for insufficient disk space used mockExecFileImpl which
was not declared. Changed to use mockExecFileCallback matching
the existing mock infrastructure.

Co-authored-by: hanneke-de-vries <dhanneke204@gmail.com>
- Fixed https.get mock to handle 3-argument form (url, options, callback)
  used by fetchLatestVersionFromUrl() — tests no longer hang
- Removed 'any' type annotations in catch clauses across
  semble-downloader.ts and provider.ts to satisfy lint rules
- Error messages now use instanceof Error narrowing instead of 'any'

Co-authored-by: hanneke-de-vries <dhanneke204@gmail.com>
…nt suppressions

- Moved installed-version check before resolveSembleVersion() to
  avoid unnecessary HTTP calls when binary is already up-to-date
  (fixes test timeouts)
- Updated eslint-suppressions.json for modified files

Co-authored-by: hanneke-de-vries <dhanneke204@gmail.com>
Co-authored-by: hanneke-de-vries <dhanneke204@gmail.com>
- Added pnpm override for js-yaml@^4.3.0 to fix high-severity
  vulnerability (GHSA-2prx-84p2-4v8w) in @vscode/vsce dep chain
- Ran eslint --prune-suppressions to correct suppression counts

Co-authored-by: hanneke-de-vries <dhanneke204@gmail.com>
- Renamed zoo-code-auth references to roo-plus-auth in ClineProvider.spec.ts
  and webviewMessageHandler.spec.ts (module path + function names)
- Updated command handler prefix from zoo-code to roo-plus in
  registerCommands.spec.ts
- Updated originator string from zoo-code to roo-plus in openai-codex.spec.ts
- Fixed semble-downloader.spec.ts: added node: prefix for built-in module
  mocks (vitest v4 compatibility) and fixed https.get callback parameter
  handling for 3-argument call pattern (url, options, callback)

Co-authored-by: hanneke-de-vries <dhanneke204@gmail.com>
- Renamed zoo-code-auth references to roo-plus-auth in ClineProvider.spec.ts
  and webviewMessageHandler.spec.ts (module path + function names)
- Updated command handler prefix from zoo-code to roo-plus in
  registerCommands.spec.ts
- Updated originator string from zoo-code to roo-plus in openai-codex.spec.ts
- Fixed semble-downloader.spec.ts: added dual-register mocks (bare + node:
  prefix) for vitest v4 compatibility; fixed https.get callback parameter
  handling for 3-argument call pattern (url, options, callback); suppressed
  pre-existing no-explicit-any with file-level directive
- Ran eslint --prune-suppressions to update suppression counts
- Replaced callCount-based https.get mocks with URL-pattern-based mocks
  that distinguish resolveSembleVersion HEAD requests from downloadFile
  archive requests
- Fixed always-redirect mocks: version resolution HEAD requests get 200
  to avoid infinite redirect loops; only archive downloads get redirects
- Added explicit fs.unlink mock reset in beforeEach to prevent mock
  implementation leakage across tests
- Fixed condition ordering in redirect test: CDN domain check must come
  before archive filename check to avoid substring collisions
- Added validateInstallPath path-filtering: only reject fs.unlink for
  non-.write-test paths so validateInstallPath can succeed
…odes

All 97 pre-loaded modes in .roomodes now have 'description:' fields,
providing clear subtitles in the VS Code mode selector UI.

Root cause: The 233 agent source YAML files in custom-modes/agents/
never included a 'description' field. The sync-custom-modes.mjs
script supports description in ALLOWED_FIELDS but the field was
absent from the upstream source, so it was never populated into
.roomodes during regeneration.

Fix applied at two levels:
1. Source: Added description fields to all 233 agent YAML files
   in custom-modes/agents/ (submodule commit 906e503)
2. Output: Added description fields to all 90 custom mode entries
   in .roomodes, sourced from custom_modes.d/ reference files

Closes: #39

Co-authored-by: hanneke-de-vries <dhanneke204@gmail.com>
@xavier-arosemena xavier-arosemena added the documentation Improvements or additions to documentation label Jul 27, 2026
@xavier-arosemena xavier-arosemena added this to the Initial launch milestone Jul 27, 2026
…des-#39

# Conflicts:
#	CHANGELOG.md
#	src/services/code-index/semble/__tests__/semble-downloader.spec.ts
@xavier-arosemena
xavier-arosemena merged commit 2c164ad into master Jul 27, 2026
12 of 13 checks passed
@xavier-arosemena
xavier-arosemena deleted the Subtitles-in-the-modes-#39 branch July 27, 2026 20:24
@xavier-arosemena
xavier-arosemena had a problem deploying to marketplace-production July 29, 2026 19:12 — with GitHub Actions Failure
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Descriptions in the modes

2 participants