🚀 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_pdftool - 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,.xlsmfiles - returns JSON 2D arrays - Sheet selection by name or index
- Range queries (e.g.,
A1:D100) - Offset/length pagination for large sheets
get_file_inforeturns 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:
BrokenResourceErrorin 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
whereinstead ofwhich) - Cross-platform
postinstallscript (no more|| true) - Setup script works in
NODE_ENV=productionenvironments
✨ 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 (respectsfileReadLineLimitconfig)
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
- @dasein (PDF support)
- @edgarsskore (Excel support)
Full Changelog: v0.2.23...v0.2.24