ColumnPad is a Windows desktop writing app for working in side-by-side text columns without losing structure. It combines multi-column writing, workspace tabs, saved layouts, proofing-aware editing, lined-paper mode, list/checklist helpers, and a built-in workflow planner in one offline desktop app.
- Lets you write in multiple independent columns at the same time.
- Saves full workspaces as
.columnpad.jsonso projects reopen exactly as they were. - Supports direct opening of
.txt,.md, layout JSON, and multi-workspace session JSON. - Keeps editing readable with line numbers, word wrap, spell check, proofing-language selection, lined paper, and theme presets.
- Includes a workflow builder for diagramming repeatable processes without relying on paid online workflow tools.
- Multi-column writing with invisible right-edge resize handles.
- Workspace tabs for separate writing sessions.
- Single-text mode and column mode switching.
- Direct open/save for text and markdown documents.
- Workspace session save/load for multiple open tabs.
- Auto-recovery and crash restore.
- Proofing-language selection for WPF spell checking. Availability depends on installed Windows/WPF dictionaries.
- Built-in workflow templates, workflow JSON import/export, drag-based workflow preview, and per-node colour choices.
- Theme persistence: once a user picks
Default Mode,Light Mode, orDark Mode, it stays until changed.
The codebase is intentionally split into simple layers:
src/ColumnPadStudio/The WPF desktop app: windows, controls, view-models, services, assets, and app startup.src/ColumnPadStudio.Domain/Pure domain rules for list markers, checklist metrics, workspace import detection, and workspace constraints.tests/ColumnPadStudio.SmokeTests/Broad app-level behaviour checks for the main view-model and file/session flows.tests/ColumnPadStudio.Domain.Tests/Focused domain-rule checks.
The app does not use a heavy dependency injection container. Startup is deliberately simple:
App.xamlloads shared theme/style resources.MainWindowstarts the app shell.MainWindowloads persisted app preferences.MainWindowoffers auto-recovery if recovery data exists.- If nothing is recovered, a default workspace is created.
src/ColumnPadStudio/MainWindow.xamlMain shell UI: menus, toolbar, workspace tabs, status bar, and column host.src/ColumnPadStudio/MainWindow.xaml.csShell core and column host wiring.src/ColumnPadStudio/MainWindow.FileSession.csplus relatedMainWindow.*.csshell partials File open/save/export/print, recovery lifecycle, workspace sessions, exit-save prompts, view modes, shortcuts, and workspace-tab wiring.src/ColumnPadStudio/MainWindow.EditorSurface.csEditor commands, search, mode switching, theme switching, and shortcuts.src/ColumnPadStudio/MainWindow.Workspaces.csWorkspace-tab lifecycle and rename wiring.src/ColumnPadStudio/ViewModels/MainViewModel.csCore workspace/editor state and column operations.src/ColumnPadStudio/ViewModels/MainViewModel*.csWorkspace/editor state split across core properties, column actions, file-state tracking, document persistence, font/language setup, layout migration, JSON helpers, and schema records.src/ColumnPadStudio/Controls/ColumnEditorControl.xamlplusColumnEditorControl.*.csColumn editor UI, line-number/lined-paper rendering, paste/list handling, and column context menus.src/ColumnPadStudio/ViewModels/WorkflowBuilderViewModel.csplusWorkflowBuilderViewModel.*.csWorkflow builder state split into core selection, library/template actions, node/link editing, and preview wiring.src/ColumnPadStudio/Services/Focused helpers for file workflow, recovery storage, theme resource updates, app preferences, text search, and workflow storage.src/ColumnPadStudio/Resources/Shared WPF resources loaded byApp.xaml.ThemeBrushes.xamlowns theme colours and shared geometry.ControlStyles.xamlowns reusable WPF control templates.MenuStyles.xamlowns shared menu and right-click dropdown styling.
More structure detail: docs/REPOSITORY_STRUCTURE.md
Manual visual QA checklist: docs/UI_QA_CHECKLIST.md
- Windows 10 or Windows 11
- .NET 8 SDK
- Optional: Visual Studio with the .NET Desktop Development workload
Download the latest single-file Windows build from the GitHub Releases page.
The release asset is:
ColumnPadStudio.exe
Place the .exe somewhere permanent, such as C:\Apps\ColumnPad, then run it. If Windows SmartScreen warns on first launch, use More info -> Run anyway only for builds downloaded from this repository.
git clone https://github.com/Awetspoon/ColumnPadStudio.git
cd ColumnPadStudiodotnet run --project .\src\ColumnPadStudio\ColumnPadStudio.csproj -c Releasedotnet build .\ColumnPadStudio.sln -c Releasedotnet run --project .\tests\ColumnPadStudio.Domain.Tests\ColumnPadStudio.Domain.Tests.csproj -c Releasedotnet run --project .\tests\ColumnPadStudio.SmokeTests\ColumnPadStudio.SmokeTests.csproj -c Releasedotnet publish .\src\ColumnPadStudio\ColumnPadStudio.csproj -p:PublishProfile=FolderProfilePublish output:
src/ColumnPadStudio/publish/ColumnPadStudio.exe
The publish profile is configured for:
- self-contained Windows x64 build
- single-file output
- no trimming
- no compression in the bundle
This creates a portable executable, not a signed installer. A public release should still be signed, and an installer can be added later if the app needs Start menu shortcuts, uninstall support, or automatic update plumbing.
src/ColumnPadStudio/- WPF app shell, UI, services, assets, and workflow editorsrc/ColumnPadStudio.Domain/- domain-only rules and parsing helperstests/ColumnPadStudio.SmokeTests/- app-level smoke checkstests/ColumnPadStudio.Domain.Tests/- domain logic checksdocs/- repository notes and screenshotstools/- helper scripts such as branding asset generationCHANGELOG.md- release historyRELEASE_CHECKLIST.md- manual release steps
- Current public releases ship as a portable single
.exe. - Release builds are not code-signed yet, so Windows may show a SmartScreen warning.
- A full installer and automatic updates can be added later if the app needs Start menu shortcuts, uninstall support, or update prompts.
MIT. See LICENSE.
