The project detail page at /projects/{id} is where you write, switch between files, preview drafts, and publish.

Layout

[Screenshot: the project detail page with the file tree on the left, the editor in the middle, and the Publish button in the header.]

The page has three regions:

  • File tree on the left. One entry per file in the project plus an "Add files" button.
  • Editor in the middle. The markdown for whichever file you have selected.
  • Header across the top. Project name, Description, the "Customize kit" button, and the "Publish" button.

Open a file

Click a file in the tree. The editor swaps to that file's markdown content. The currently selected file gets a highlight.

Each file in the tree shows two extra signals:

  • A status dot that turns ember-coloured when the file has unsaved local changes ("draft") and clears when the file is published.
  • A version chip on the header that shows which published snapshot you are looking at, if any.

Edit a file

Type in the editor. The app debounces your edits and autosaves the draft a moment after you stop typing. You will see the dot turn ember while a save is in flight; it clears when the save finishes.

You do not need to click a "Save" button. The classic save button was removed in favour of debounced autosave.

Switch files mid-edit

Click another file in the tree. Before switching, the editor flushes your current file's draft to the server, so nothing is lost. The new file loads and shows its own draft if any.

Navigate away with unsaved changes

If you have edits that have not yet flushed to the server (debounce window still open), the browser prompts you before you navigate away: "You have unsaved changes. Leave this page?". Click Cancel to stay; click Leave to discard the unflushed edits.

Once the debounce has fired and your draft is on the server, navigation is silent. Your draft is still saved.

Add files to an existing project

Click "Add files" in the file tree. Pick one or more markdown files.

If any of the picked files share a name with a file already in the project, the app asks how to handle it with a dialog:

  • Merge (default): same-named files are overwritten with the new content; other files in the project stay as-is.
  • Replace: the project's existing files are wiped and only the new files remain.

Pick Merge or Replace, then click Apply. Cancel dismisses the dialog without changing anything.

Change render mode for a file

Open the file. The header shows the current render mode (for example, "Prose"). Click it to switch to a different mode. The change is local until you publish.

Delete a file

In the file tree, click the delete icon on a file. A modal asks "Delete file?" with the file's relative path. Confirm to delete; cancel to keep it.

The project's main file cannot be deleted on its own. Delete the project instead, or promote a different file to main first.

Publish

Click "Publish" in the header. The button shows "Publishing..." while the render runs. When it finishes:

  • All file status dots flip back to "published".
  • The version chip on the header bumps to the new snapshot.
  • The project's public page at /view/{id} shows the new content.
  • The brand kit at the moment of publish is snapshotted, so any later kit edits will not retroactively change this published page.

You can publish as many times as you want. Each publish creates a new snapshot you can audit from the kit editor's History drawer.

Preview before publishing

The editor itself does not preview. To see how a draft will look once rendered:

  • Publish, then open the project at /view/{id}.
  • Or open the kit editor (Customize kit button) and use its preview iframe, which renders the latest draft against the current kit.

Cancel an edit

There is no undo button. The editor relies on the browser's native undo (Cmd+Z or Ctrl+Z) for in-session edits, plus the History drawer in the kit editor for kit snapshots. If you want to revert the file content to the last published version, copy the published markdown out of the rendered HTML or recover it from a prior snapshot you saved as a named draft.

An unhandled error has occurred. Reload 🗙

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.