Bedrock is a minimal Markdown-focused text editor built with Electron + React + CodeMirror 6.
- Single-window editor
- Open/Save/Save As Markdown files (
.md) - Hybrid Markdown mode (renders structure while editing) + raw mode
- Customizable keybindings (Settings)
- Themes + UI scaling
- Electron E2E pipeline with Playwright traces/screenshots for agent debugging
- Sentry-ready telemetry hooks for main/renderer runtime failures
- Linear + GitHub helper scripts for agent issue and PR workflows
- Install:
pnpm install - Run (dev):
pnpm dev - Lint:
pnpm lint - Typecheck:
pnpm typecheck - Unit tests:
pnpm test:unit - Electron E2E:
pnpm test:e2e - Full local CI pass:
pnpm test - Package/build:
pnpm packagepnpm build
- CI now runs
lint,typecheck,unit, and real Electrone2ejobs - PR flow is optimized for draft PRs with artifact links and agent labels
- Runtime telemetry can be enabled with
SENTRY_DSN - Linear issue creation is available via
pnpm linear:create-issue
See docs/agent-workflow.md for the full agent operating model.
- Main process:
src/main/index.ts- Owns file dialogs + file IO
- Exposes safe operations via IPC handlers
- Preload:
src/main/preload.ts- Exposes a typed
window.electronAPIsurface (no Node integration in renderer)
- Exposes a typed
- Renderer:
src/renderer/app.tsx- Hosts the React app and wires
CodeMirrorEditor
- Hosts the React app and wires
- Editor:
src/renderer/components/CodeMirrorEditor.tsxmounts CodeMirror, reconfigures extensionssrc/renderer/editor/codemirror/*contains CodeMirror extensions (hybrid Markdown decorations, theme, keymaps, commands)
The renderer only talks to Electron via window.electronAPI (typed in src/shared/types.ts).
- Renderer runs without Node integration.
- File system access is confined to the main process.
- External URL opening is validated in main (
http(s)only).