Navigate structure
-Move through YAML frontmatter, headings, lists, paragraphs, code, tables and block quotes as a tree.
+Move through YAML frontmatter, headings, lists, paragraphs, code, tables, and block quotes as a tree.
diff --git a/README.md b/README.md index b699d9f1..19e23d64 100644 --- a/README.md +++ b/README.md @@ -14,13 +14,16 @@ For agents
-Markover is an **Early macOS preview** for reviewing Markdown as a document -tree and returning block-level feedback to an agent. It is free and -MIT-licensed, requires no account, and keeps ordinary review data in your -macOS account. +Markover is a macOS app for reviewing Markdown as a document tree and +returning block-level feedback to an agent. Instead of quoting fragments back +into chat, feedback stays attached to the blocks it concerns, and the agent +retrieves the whole review in a single structured handoff. + +Markover is in **early preview**. It is free and MIT-licensed, requires no +account, and keeps ordinary review data in your macOS account. ## Features @@ -35,6 +38,14 @@ macOS account. - One-shot agent handoff containing the exact source, checksum, document tree, annotations, attachments, and review context. +## Try it + +Ask your agent to open a Markdown document in Markover (the command it needs +is below), review the document, then tell the agent "Check Markover." To +review a document without an agent, choose **File → Open Markdown…** in the +app. The [user guide](https://lastobelus.github.io/markover/guide/) covers the +full workflow and keyboard controls. + ## Before you try the early preview - Markover supports macOS 14 Sonoma or newer on Apple Silicon Macs. Native @@ -44,7 +55,8 @@ macOS account. notarized. macOS is expected to block the first launch. - Ordinary review work stays in your macOS account. Markover has no telemetry, analytics, cloud sync, or automatic review upload. -- Unreleased prototype formats may change directly. Released review schemas +- Data formats from unreleased prototype builds may change without migration + support. Released review schemas are converted automatically with an original backup; unknown future versions remain untouched until a compatible Markover release opens them. Back up important review data before changing versions. @@ -70,13 +82,12 @@ The public npm package named `markover` is unrelated to this project. Use the exact GitHub release-package URL above. The command downloads the Apple Silicon app on first use. Native Intel releases -are deferred to the Broad announcement roadmap in -[issue #80](https://github.com/lastobelus/markover/issues/80). -Release launchers produced from the hardened preflight verify its checksum, -bundle identity, version, architecture, Sonoma floor, ad-hoc signature, and -code seal before moving it into the cache. Later commands reuse that validated -version. The launcher returns a review ID, status, and OS-openable custom URL, -then exits without waiting for the review: +are deferred; see [issue #80](https://github.com/lastobelus/markover/issues/80). +The launcher verifies the download's checksum, bundle identity, version, +architecture, minimum macOS version, ad-hoc signature, and code seal before +caching it. Later commands reuse that validated version. The launcher returns +a review ID, a status, and a `markover://` URL that macOS can open, then exits +without waiting for the review: ```json {"reviewId":"mko_8f3a2c","status":"editing","reviewUrl":"markover://review/mko_8f3a2c"} @@ -88,8 +99,8 @@ put the reliable Terminal fallback on its own line: `open 'markover://review/mko_8f3a2c'` -Custom-scheme Markdown links depend on the thread-host; T3 Code and the Codex app do not -currently dispatch them. Then stop. See the dedicated [agent +Some chat apps, including T3 Code and the Codex app, do not currently open +custom-scheme links from Markdown. Then stop. See the dedicated [agent workflow](https://lastobelus.github.io/markover/agents/) for retrieval, reopening, and interpretation guidance. @@ -131,4 +142,4 @@ operations. - [Discussions](https://github.com/lastobelus/markover/discussions) for early ideas, usage questions, and general support - [Report a problem](https://github.com/lastobelus/markover/issues/new?template=bug.yml) - with the smallest sanitized reproduction of a defect + with the smallest sanitized reproduction diff --git a/doc/launch/issue-16/README.md b/doc/launch/issue-16/README.md index a5b0e04d..91d6656a 100644 --- a/doc/launch/issue-16/README.md +++ b/doc/launch/issue-16/README.md @@ -71,6 +71,10 @@ Before publishing any visual: paths, credentials, authorization material, or unrelated application chrome; - run the deterministic checks documented by the media PR before upload. +No canonical review, private path, real repository, real pull request, real +thread identity, credential, notification, unrelated application chrome, or +incidental audio may appear in any published still or recording. + The marker file is the deletion boundary. The staging command refuses to replace an unmarked directory, a symlink, or a fixture whose capture service is still running. diff --git a/doc/launch/issue-16/demo-storyboard.md b/doc/launch/issue-16/demo-storyboard.md index 94acecbe..ccc042a0 100644 --- a/doc/launch/issue-16/demo-storyboard.md +++ b/doc/launch/issue-16/demo-storyboard.md @@ -17,7 +17,7 @@ ### 0:00–0:07 — Open one review from the inbox Show the prepared Inbox with **Needs me** active, then open **Launch readiness -brief** from its review row. Let the three-pane Ember Light layout establish +brief** from its review row. Let the Ember Light Pane layout establish the selected document block and feedback pane. Captions: **Open one review from the inbox.** then **Review agent-written @@ -29,7 +29,7 @@ Select the heading and reveal its feedback with the two fixture-owned images, **workflow overview** and **annotation details**. Keep their rewritten Markdown references visible long enough to read. -Caption: **Attach labeled visual context to one exact block.** +Caption: **Attach labeled screenshots to a single block.** ### 0:15–0:25 — Inspect an exact source change @@ -68,11 +68,6 @@ MIT-licensed macOS early preview**, and `github.com/lastobelus/markover`. ## Pages transcript -Markover opens a sanitized launch brief in an Ember Light review inbox. The -reviewer selects one Markdown block, adds precise feedback, and keeps two -labeled images attached to that context. On the opening paragraph, Markover -shows an exact source proposal as a word-level diff without changing the source -document. The reviewer switches to All annotations to scan the complete review, -then returns to the agent's terminal. One fixture-only command retrieves a -structured handoff containing the feedback, attachment labels, and source -proposal. +Pages uses the text of [demo-transcript.md](demo-transcript.md) verbatim. Do +not maintain a separate transcript here; update that file and sync the site's +inline copy when the demo is re-exported. diff --git a/doc/launch/issue-16/demo-transcript.md b/doc/launch/issue-16/demo-transcript.md index e82b3c3c..2102780a 100644 --- a/doc/launch/issue-16/demo-transcript.md +++ b/doc/launch/issue-16/demo-transcript.md @@ -1,21 +1,31 @@ # Markover focused-preview demo transcript +This file is the canonical transcript. The inline transcript on the Pages demo +section must match the text between the markers below; update both together +when the demo changes. + + + The 44-second silent demo uses burned-in captions and only invented fixture data. Markover starts with a sanitized participant guide, then opens the launch-readiness review from the **Needs me** inbox. The current Ember Light -App header and Left, Center, and Right panes establish the review. The reviewer -sees agent-written Markdown as a document tree with precise feedback and two -labeled images attached to one heading. +App header and Pane layout with Left, Center, and Right panes establish the +review. The reviewer sees agent-written Markdown as a document tree with +feedback and two labeled images attached to one heading. On the opening paragraph, Markover displays an exact word-level source proposal without changing the source document. The reviewer switches to **Projects** and **All annotations** to scan the complete review. -Finally, the fixture-only CLI returns structured JSON containing the review -status, block feedback, attachment IDs and labels, and source proposal. The demo -ends on the canonical Markover lockup, “Structured review for Markdown,” the -free, MIT-licensed macOS early-preview boundary, and the repository address. +Finally, the CLI (running against demo fixture data) returns structured JSON +containing the review status, block feedback, attachment IDs and labels, and +source proposal. The demo ends on the Markover lockup, “Structured review for +Markdown,” and the repository address. + + + +The end card also states the free, MIT-licensed macOS early-preview boundary. No canonical review, private path, real repository, real pull request, real thread identity, credential, notification, unrelated application chrome, or diff --git a/doc/launch/issue-16/focused-preview-copy.md b/doc/launch/issue-16/focused-preview-copy.md index 7a64876f..d91ee62d 100644 --- a/doc/launch/issue-16/focused-preview-copy.md +++ b/doc/launch/issue-16/focused-preview-copy.md @@ -7,31 +7,39 @@ different useful question. ## Coding-agent community -I’m preparing an early macOS preview of Markover, a free MIT-licensed, -local-first app for reviewing agent-written Markdown block by block. It needs -no account: ordinary review data stays in your macOS account. I’m looking for -Codex and coding-agent users willing to test one real document review and -report where the open → annotate → structured handoff loop breaks down—not for -stars. Apple Silicon macOS 14+ only for this preview. [Watch the 44-second +I’m preparing an early macOS preview of Markover, a free, MIT-licensed app +for reviewing agent-written Markdown block by block. It needs no account, and +ordinary review data stays in your macOS account. I’m looking for Codex and +coding-agent users willing to test one real document review and report where the +open → annotate → structured handoff loop breaks down. Apple Silicon +macOS 14+ only for this preview. [Watch the 44-second workflow](https://lastobelus.github.io/markover/#demo). ## Design-partner invitation Could you try one document you already ask an agent to write, then review it in Markover instead of flattening feedback into chat? The early macOS preview -is free, MIT licensed, local-first, and requires no account. I most need the -exact moment the workflow becomes slower or less clear than your current +is free, MIT licensed, requires no account, and keeps ordinary review data in +your macOS account. I most need the exact moment the workflow becomes slower or +less clear than your current process, plus any feedback the agent misinterprets after retrieval. Apple Silicon macOS 14+ only. [Setup and limitations](https://lastobelus.github.io/markover/guide/). ## GitHub repository summary -Markover is a local-first macOS app for reviewing agent-produced Markdown and -returning structured, block-level feedback to the agent thread. The early -preview is free and MIT licensed, requires no account, and currently supports -Apple Silicon macOS 14+. Start with the [current UI and 44-second -demo](https://lastobelus.github.io/markover/#demo), then report concrete -workflow failures in [Discussions](https://github.com/lastobelus/markover/discussions). +Markover is a macOS app for reviewing agent-produced Markdown and returning +structured, block-level feedback to the agent thread. The early preview is +free and MIT licensed, requires no account, keeps ordinary review data in your +macOS account, and currently supports Apple Silicon macOS 14+. Start with the +[current UI and +44-second demo](https://lastobelus.github.io/markover/#demo), then report +concrete workflow failures in [Discussions](https://github.com/lastobelus/markover/discussions). + +One-line variant for the repository About field, which does not render +Markdown links and truncates long descriptions: + +> macOS app for reviewing agent-written Markdown block by block and returning +> structured feedback to the agent. Early preview; Apple Silicon, macOS 14+. Before publishing any draft, issue #17 must replace staging language with the verified release tag, previous known-good release, rollback threshold, support diff --git a/docs/user/agents/index.html b/docs/user/agents/index.html index 59e63f39..0285f2b8 100644 --- a/docs/user/agents/index.html +++ b/docs/user/agents/index.html @@ -104,19 +104,26 @@Run markover help before a pull-request-associated open, get, get-for-review, revise, or done. Its machine-readable pullRequestStatus contract is the source of truth for the live GitHub lookup, status mapping, flags, and lookup-failure behavior.
Give Markover one Markdown path and a short summary of why the document exists and what feedback would help:
+Give Markover a Markdown path and a short summary of why the document exists and what feedback would help:
+open, get, get-for-review, revise, or done that involves a pull request, run markover help. Its machine-readable pullRequestStatus contract defines the live GitHub lookup, status mapping, flags, and lookup-failure behavior.npx --yes \
--package=https://github.com/lastobelus/markover/releases/latest/download/markover-cli.tgz \
markover open ./DOCUMENT.md \
--summary "Review these decisions before implementation."
- When reliable thread metadata is available, pass the best observable requesting-thread or session ID with --thread-id. Use --thread-host-kind for the user-facing product or lookup namespace where the user would look for the thread, and --thread-host-provider for the LLM provider or model family in use rather than an intermediate harness. Pass --thread-host-thread-id only for a distinct host-owned identifier. Try the local hostname command and pass its result as --thread-host-machine. Use recommended product values when they match observable facts, preserve truthful unknown values, and omit anything unavailable rather than guessing.
On first use, the launcher downloads the Apple Silicon app; verifies its checksum, bundle identity, version, architecture, Sonoma floor, ad-hoc signature, and code seal; then atomically caches it. A successful command exits promptly with one JSON value:
+When reliable thread metadata is available:
+--thread-id.--thread-host-kind for the user-facing product or lookup namespace where the user would look for the thread, and --thread-host-provider for the LLM provider or model family in use — not an intermediate harness.--thread-host-thread-id only for a distinct host-owned identifier.hostname command and pass its result as --thread-host-machine.On first use, the launcher downloads the Apple Silicon app; verifies its checksum, bundle identity, version, architecture, minimum macOS version, ad-hoc signature, and code seal; then atomically caches it. A successful command exits promptly with one JSON value:
{"reviewId":"mko_8f3a2c","status":"editing","reviewUrl":"markover://review/mko_8f3a2c"}
Give the reviewer all three opening aids: a best-effort [Open in Markover](<reviewUrl>) link, the raw review ID, and this Terminal fallback alone on its own line:
open 'markover://review/mko_8f3a2c'
- Custom-scheme links work through macOS, but thread-hosts including T3 Code and the Codex app may strip or decline them. The standalone command is the reliable handoff.
+Custom-scheme links work through macOS, but some chat apps, including T3 Code and the Codex app, do not currently open them from Markdown. The standalone command is the reliable handoff.
At any point, an agent can ask Markover for every unresolved review opened by its exact current requesting thread. The result contains review links, document purpose, responsibility, age timestamps, and pull-request association without exposing draft feedback or changing review state.
markover pending --thread-id THREAD_ID --thread-host-kind t3code --thread-host-provider codex
- Pending reviews are a soft gate: planning and implementation can continue, but the agent surfaces every result before merge or final thread completion. Silence and merge do not imply acceptance.
+Pending reviews are a soft gate: planning and implementation can continue, but the agent surfaces every result before merging or finishing the thread. Silence and merge do not imply acceptance.
markover resolve mko_8f3a2c --outcome reviewed-no-notes
markover resolve mko_8f3a2c --outcome accepted-unreviewed
markover unresolve mko_8f3a2c
@@ -208,7 +215,7 @@ The review must be pristine when claimed: no existing feedback, attachments, or source proposals. The returned artifact contains dedicated reviewer instructions under review.agentReviewer.agentGuidance, the effective permission under review.agentReviewer.mode, and reviewer thread provenance when available. The agent returns the complete artifact as one atomic batch; Markover accepts all permitted findings or none.
While the agent is reviewing, the document is read only in Markover and labeled Agent reviewing. After submission it is labeled Reviewed, remains immutable, and appears in history. Markover shows a completion notice with an Open action, including explicit no-findings copy when the reviewer returned an empty result.
+While the agent is reviewing, the document is read only in Markover and labeled Agent reviewing. After submission it is labeled Reviewed, remains immutable, and appears in history. Markover shows a completion notice with an Open action, including an explicit no-findings message when the reviewer returned an empty result.
markover-review1The first release carrying portable v1 must replace the pending entry before publication. Later releases update this table whenever they introduce a review-format version.
+ +Later releases update this table whenever they introduce a review-format version.
Tools can read the same information from the machine-readable catalog.
Markover is an Early macOS preview. It supports macOS 14 Sonoma or newer on Apple Silicon Macs and requires Node.js 22.13.0 or newer for the bootstrap command. Native Intel releases are deferred to the Broad announcement roadmap. You do not need to clone the repository or install an npm package globally.
+Markover is in early preview. It supports macOS 14 Sonoma or newer on Apple Silicon Macs and requires Node.js 22.13.0 or newer for the launcher. Native Intel releases are deferred; see issue #80.
Ordinary review work stays in your macOS account. Markover has no telemetry, analytics, cloud sync, or automatic review upload. Unreleased prototype formats may change directly. Released review schemas are converted automatically with an original backup; unknown future versions remain untouched until a compatible Markover release opens them.
+Ordinary review work stays in your macOS account. Markover has no telemetry, analytics, cloud sync, or automatic review upload. Data formats from unreleased prototype builds may change without migration support. Released review schemas are converted automatically with an original backup; unknown future versions remain untouched until a compatible Markover release opens them.
Before relying on Markover, read Markdown support and preview limitations and Privacy, storage, and recovery. Advanced users can follow the tailnet-only Tailscale Serve example for a manually authorized remote client. Ask usage questions in GitHub Discussions.
Tell your agent which Markdown file you want to review and why the review is useful. The agent opens that file in Markover and gives you a review ID, a best-effort Open in Markover link, and a standalone Terminal command. You do not need to clone the repository, install an npm package globally, or run the agent's launcher command yourself.
To start without an agent, choose File → Open Markdown…. Markover creates a managed local review from the selected snapshot, saves feedback and attachments separately, and restores that review after restart. The original Markdown file is never changed or deleted.
-open 'markover://…' command the agent provides, paste it into Terminal, and press Return. Some thread-hosts do not dispatch custom-scheme links directly. Markover focuses and follows Settings → Incoming reviews → When you open a review link; links switch immediately by default.open 'markover://…' command the agent provides, paste it into Terminal, and press Return. Some chat apps do not open custom-scheme links directly. Whether Markover switches to the incoming review immediately is controlled by Settings → Incoming reviews → When you open a review link; the default is to switch immediately.Agents and tool authors should follow the separate agent workflow for exact commands, review-ID handling, and feedback interpretation.
@@ -139,7 +139,7 @@While Markover is responsive and local storage is healthy, managed review changes are durably saved within a two-second window by default. A normal quit first captures the latest editable reviews and finishes their saves. Exact agent handoffs and reopened reviews are committed before Markover reports success.
+While Markover is responsive and local storage is healthy, managed review changes are durably saved within a two-second window by default. A normal quit first captures the latest editable reviews and finishes their saves. Agent handoffs and reopened reviews are fully saved before Markover reports success.
After an app crash or restart, Markover restores both reviews still being edited and reviews already inflight with an agent. You do not need to retrieve or drain agent reviews before restarting. Attachment bytes are flushed before saved review JSON can refer to them; a crash can leave harmless unreferenced attachment bytes, but not a durable broken reference.
See Privacy, storage, and recovery for the advanced autosave setting, quit choices after a save problem, and backup guidance.
@@ -157,7 +157,7 @@| Key | Action |
|---|---|
| Up / Down | Move between sibling blocks; climb outward at a boundary |
| Up / Down | Move between sibling blocks; at the first or last sibling, continue at the parent's level |
| Left | Select the parent block |
| Right | Select the first child, then the next available sibling |
| Tab / Shift-Tab | Move among the left, center, and right panes |