Skip to content

# Release Notes - v0.2.24

Latest

Choose a tag to compare

@wonderwhy-er wonderwhy-er released this 17 Dec 09:58
· 25 commits to main since this release

🚀 Major New Features

Full PDF Support (#283)

Desktop Commander now has comprehensive PDF capabilities - read, create, and modify PDF files directly.

Reading PDFs:

  • Extract text content as markdown with page structure
  • Extract embedded images from PDFs
  • Page-based pagination (offset/length work as page numbers)
  • Performance optimized for partial page reading

Creating PDFs:

  • Convert markdown to PDF with write_pdf tool
  • Supports headers, lists, code blocks, tables
  • HTML/CSS styling and inline SVG supported
  • Control page breaks with <div style="page-break-before: always;"></div>

Modifying PDFs:

  • Delete specific pages by index
  • Insert new pages from markdown or other PDFs
  • Merge and split documents
  • Editing existing page content is possible but results in loss of styling - not recommended at this stage

Safety: When modifying PDFs, Desktop Commander creates a new output file, leaving your original untouched in case you need to revert.


Full Excel/Spreadsheet Support (#282)

Complete Excel file handling with a new file handler architecture.

Reading Excel Files:

  • Read .xlsx, .xls, .xlsm files - returns JSON 2D arrays
  • Sheet selection by name or index
  • Range queries (e.g., A1:D100)
  • Offset/length pagination for large sheets
  • get_file_info returns sheet metadata (names, row/column counts)

Creating Excel Files:

  • Write spreadsheets from JSON 2D arrays
  • Multi-sheet support with {SheetName: [[...]]}
  • Automatic column width handling

Modifying Excel Files:

  • Edit specific cell ranges with edit_block
  • Update individual cells or ranges
  • Preserve existing sheets while modifying

Searching Excel Files:

  • Content search works inside Excel files
  • Find data across sheets

Examples:

// Read specific sheet and range
read_file("data.xlsx", { sheet: "Sales", range: "A1:D100" })

// Edit cells
edit_block("data.xlsx", { range: "Sheet1!C1:C10", content: [["New"], ["Values"]] })

🔒 Privacy Policy Update (#287)

Based on user feedback, we've significantly updated our privacy policy to be more transparent and accurate.

Corrections Made:

  • Fixed incorrect statements about UUIDs and personally identifiable information (PII)
  • Clarified that client IDs are pseudonymous identifiers (cannot directly identify you, but allow usage pattern analysis)

New Transparency:

  • Clear explanation of exactly what we collect and don't collect
  • Explicit statement that we don't have access to IP addresses
  • Added dedicated contact email: privacy@desktopcommander.app

Your Rights Section Added:

  • How to exercise your privacy rights (disable telemetry)
  • Why UUID-based data requests cannot be processed (privacy by design - we can't verify identity)
  • Automatic 14-month data retention with auto-deletion
  • If you uninstall and delete config, stored analytics cannot be linked back to you

Read the full policy: PRIVACY.md


🐛 Critical Bug Fixes

Fixed MCP Protocol Violation During Startup (#285)

The MCP protocol requires the client to send the first message. Desktop Commander was writing to stdout before the client's initialization request, breaking protocol handshake with clients like langchain-mcp-adapters.

What Was Broken:

  • BrokenResourceError in langchain-mcp-adapters
  • Server startup logs corrupting the MCP handshake
  • Feature flag async operations logging after client started closing

What's Fixed:

  • Transport created before config loading to capture all output
  • Log messages buffered until client is initialized
  • Feature flag operations no longer log during startup
  • Clean process exit with .unref() on refresh intervals

Windows Build Compatibility (#286)

  • Fixed ripgrep detection on Windows (uses where instead of which)
  • Cross-platform postinstall script (no more || true)
  • Setup script works in NODE_ENV=production environments

✨ Enhancements

Process Output Pagination (#290)

Terminal process outputs now support file-like pagination to prevent context overflow.

New Parameters:

  • offset: Start line (0 for new output, positive for absolute, negative for tail)
  • length: Max lines to read (respects fileReadLineLimit config)

Examples:

offset: 0, length: 100    → First 100 NEW lines since last read
offset: 500, length: 50   → Lines 500-549 (absolute position)
offset: -20               → Last 20 lines (tail)
offset: -50, length: 10   → 10 lines starting 50 from end

Also fixed bug where completed process output was missed when process finished between snapshot and poll.


Better Mount Detection (#289)

Improved detection of mounted filesystems for more reliable allowed directory validation.


📝 Other Changes

  • Disabled Use Case Collection (#288) - Removed anonymous use case telemetry
  • README Cleanup (#292) - Documentation improvements
  • Updated MCPB Manifest - Extension metadata updates

Contributors

Full Changelog: v0.2.23...v0.2.24