Skip to content

Add showmd extension - #30178

Open
l0kyurue1 wants to merge 3 commits into
raycast:mainfrom
l0kyurue1:ext/showmd
Open

Add showmd extension#30178
l0kyurue1 wants to merge 3 commits into
raycast:mainfrom
l0kyurue1:ext/showmd

Conversation

@l0kyurue1

@l0kyurue1 l0kyurue1 commented Aug 13, 2026

Copy link
Copy Markdown

Description

New extension: ShowMD, a markdown reader and editor that runs on localhost in your browser.

ShowMD is an existing open-source CLI (showmd-cli on npm). It serves a folder or a single file with a rendered read mode, a CodeMirror edit mode, and git-backed save history. This extension drives it from Raycast.

Commands:

  • Open: pick a folder or file with a native dialog, or reopen something from recents.
  • Manage ShowMD: list running windows and their Spaces. Open, restart, or stop them.
  • Edit Settings: a form for ShowMD's color mode, font, browser, port, and update checks.
  • Browse Agent Skills: opens ShowMD's Skills page, starting showmd skills if needed.
  • Open Selected: opens the file or folder selected in Finder or Explorer.
  • Menu Bar (macOS): running windows, recents, start/stop.

Also exposes three extension tools: open-document, list-recents, server-status.

Two things worth flagging for review:

Binary lookup. The extension needs the showmd binary. Raycast does not inherit a login shell's PATH, so src/lib/showmd.ts rebuilds a candidate directory list instead of trusting process.env.PATH. If nothing is found it falls back to npx -y showmd-cli, which works without an install but is slow the first time. A ShowMD Path preference overrides all of it.

Server reuse. A new target is added as a Space to an already-running ShowMD rather than spawning a second server. Turn it off with the Open in Running ShowMD preference.

Source lives at l0kyurue1/showmd under contrib/raycast/. Issues and PRs belong there.

Screencast

raycast-showmd-screencast.mp4

Checklist

- style: format raycast extension with prettier
- chore: brew formula sha for 0.2.0
- chore: drop skill-evals GitHub Actions workflow
- chore: 0.2.0
- chore: clear all oxlint warnings
- fix: prune button state and settings refresh
- fix: rebuild pruned history with fast-export
- test: add skill eval harness and CI lanes
- feat: rewrite the showmd agent skill
- chore(deps-dev): bump dompurify
- fix: keep mermaid source out of the DOM
- docs: point contrib at the Raycast extension
- feat: add the Raycast extension
- test: pin platform in updater handoff test
- feat: add in-place self-update with version handoff
- fix: harden browser launch and SVG rendering
- test: stabilize cross-platform CI checks
- docs: document Spaces and test architecture
- test: enforce test suite boundaries
- feat: dim path prefixes in the sidebar
- fix: preserve history across migration and concurrent saves
- feat: launch and hand off roots from the CLI
- feat: route the client through Space URLs
- feat: serve documents, skills, and agents as Spaces
- refactor: define root identity and Space routing primitives
- chore(deps-dev): bump mermaid (raycast#1)
- refactor: platform spawn fixes behind proc.js seam
- chore: brew formula sha for 0.1.3
- chore: 0.1.3
- docs: prefer installed showmd over npx in skill
- fix: restrict browser setting to plain names
- fix: build update CTA as DOM, not innerHTML
- feat: about showmd link on home page
- fix: split sidebar Open into folder and file
- chore: brew formula sha for 0.1.2
- chore: 0.1.2
- chore: brew formula sha for 0.1.1
- fix: soften update button, sync app row after install
- chore: 0.1.1
- ci: publish to npm on tag
- fix: point npx and upgrade hints at showmd-cli
- chore: brew formula sha for 0.1.0
- chore: publish to npm as showmd-cli
- chore: brew formula and sha bump script
- fix: host-dependent tests and agent project slugs
- ci: test matrix across three OSes and node 20/22/24
- docs: readme, architecture notes and sample
- test: unit, integration and e2e suite
- feat: showmd agent skill
- feat: desktop launcher assets
- feat: browser client
- feat: markdown server and CLI
- chore: project scaffolding
- Initial commit
@raycastbot

Copy link
Copy Markdown
Collaborator

Congratulations on your new Raycast extension! 🚀

We're currently experiencing a high volume of incoming requests. As a result, the initial review may take up to 15 business days.

Once the PR is approved and merged, the extension will be available on our Store.

@greptile-apps

greptile-apps Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

The PR adds the ShowMD extension, integrating its local Markdown server with Raycast.

  • Adds commands for opening documents, browsing skills, managing server instances, editing settings, and menu-bar controls.
  • Adds extension tools for opening documents, listing recents, and reporting server status.
  • Adds binary discovery, exact-port server polling, tests, metadata, and Store documentation.

Confidence Score: 5/5

The PR appears safe to merge because no blocking failure remains.

No blocking failure remains; the previous changelog, ESLint configuration, generated preference typing, and wrong-server polling findings are resolved at the current head.

Important Files Changed

Filename Overview
extensions/showmd/src/lib/showmd.ts Implements ShowMD process discovery, spawning, server registry operations, exact-port readiness polling, settings, and recents.
extensions/showmd/src/lib/raycast-glue.ts Connects Raycast commands to the plain Node ShowMD library and now preserves the spawned port across document and Skills launch flows.
extensions/showmd/package.json Defines the extension metadata, commands, tools, preferences, supported platforms, dependencies, and scripts.
extensions/showmd/test/showmd.test.mjs Covers process spawning, server selection, target opening, Skills behavior, readiness polling, and related helpers.
extensions/showmd/CHANGELOG.md Provides the initial release entry using the required merge-date placeholder.
extensions/showmd/eslint.config.js Wraps the Raycast flat configuration with ESLint's defineConfig API.

Reviews (3): Last reviewed commit: "fix: wait on the spawned port, refresh s..." | Re-trigger Greptile

Comment thread extensions/showmd/CHANGELOG.md Outdated
Comment thread extensions/showmd/eslint.config.js Outdated
Comment thread extensions/showmd/src/lib/raycast-glue.ts Outdated
Comment thread extensions/showmd/src/lib/raycast-glue.ts Outdated
@l0kyurue1
l0kyurue1 marked this pull request as ready for review August 13, 2026 02:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants