MarkRight

Calm, direct tools for writing in one precise markup language.

Workspace

A local-first notebook starts with one visible folder, then stays honest about every break in the path.

The workspace route shifts into the calmer shell by keeping one notebook frame in view and naming each recovery state directly, without pretending unwired file flows already exist.

Route signals

Tone
The page stays low-chrome and local-first, so the notebook context reads before any file action does.
Scope
Route composition explains the workspace truthfully without inventing background sync or hidden file management.
Clarity
Recovery states stay visible, named, and separate from the notebook framing instead of collapsing into one vague empty state.

Notebook framing

The route reads like one quiet notebook surface, not a deck of file cards.

The shared preview foundation is enough to frame the workspace as a local notebook now, so the redesign can stay at the route layer.

That keeps the state honest: the page can explain folder context, blocked access, and failed saves without inventing deeper file behavior.

Local-first notebook

A local-first notebook starts with one visible folder, then stays honest about every break in the path.

This route frames the workspace as one explicit notebook surface with recovery language kept in the open, not behind decorative panels.

Notebook frame

One folder in view, one writing system around it

The calmest workspace pattern here is a direct folder-level frame that makes notebook context legible before any file tree grows around it.

The route stays local-first by naming the notebook root, the current place in the writing flow, and the recovery paths that can interrupt it.

  • One local folder anchors the workspace.
  • Recovery language stays visible beside the notebook frame.
  • Muted borders replace decorative card wrappers.

Current route truth

The page explains what is known, blocked, or recoverable

Framing
Notebook-first
Chrome
Border-led and anti-card
Behavior
No invented fallback flows
Recovery
Named states stay explicit

Recovery states

Every interruption keeps its own name, context, and next step.

State

Unsupported browser

The File System Access path is unavailable in the current browser, so the workspace cannot open a local notebook here.

Move to a supported browser to open a folder, or continue reading and drafting in the other routes until local access is available.

State

No folder selected

The route has no notebook root yet, so the page stays explicit about waiting for one local folder selection.

Choose a local notebook folder when ready. Until then, the route should read as an empty workspace, not a broken one.

State

Permission needed

A known folder exists, but the browser has not granted enough access to read or write the notebook safely.

Ask for permission again and keep the blocked state in view so the user knows the route has context but cannot proceed yet.

State

Restorable folder

A previously used notebook root can be restored, which keeps the route local-first without pretending the folder is already open.

Offer the restore path plainly and make the remembered folder feel like resumable context, not hidden persistence magic.

State

Save error

A write failed, so the page needs to keep the notebook state understandable instead of implying that work is safely on disk.

Keep the failure visible, preserve the current draft context, and make the next retry step obvious.

Boundaries

The redesign lowers the surface noise and keeps the route truthful.

  • The page does not fake file-system actions that are not wired in this worktree.
  • Recovery copy stays explicit so an empty or blocked route never reads like a silent failure.
  • The notebook framing stays responsive by stacking on mobile and widening into open editorial rows on larger screens.
  • Border-led separation keeps the workspace in the same system as the landing page, editor, and shared renderer.