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.

- Markover in Ember Light showing the review inbox, a launch brief in the center document tree, and precise feedback with two labeled attachments. + Markover in Ember Light showing the review inbox, a launch brief in the center document tree, and an annotation with two labeled attachments.

## 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 @@

Review a Markdown document with Markover

Open one review

-

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:

+
Pull-request-associated commands. Before an 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:

+ +

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"}
Retain the review ID. It is the stable identifier for every later operation on this review.

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.

@@ -185,7 +192,7 @@

Record the completed handoff

Check and resolve pending reviews

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 @@

Use an agent as the reviewer

# The reviewer updates feedback and permitted sourceEdit fields in review.json. markover submit mko_8f3a2c --input review.json

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.

diff --git a/docs/user/compatibility/index.html b/docs/user/compatibility/index.html index 593fdbec..4fd5f814 100644 --- a/docs/user/compatibility/index.html +++ b/docs/user/compatibility/index.html @@ -96,7 +96,8 @@

Current catalog

ArtifactVersionFirst compatible release markover-review1Not yet assigned; development under issue #99 -

The 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.

diff --git a/docs/user/guide/index.html b/docs/user/guide/index.html index 1f3772c8..a1f0e7d5 100644 --- a/docs/user/guide/index.html +++ b/docs/user/guide/index.html @@ -102,9 +102,9 @@

Getting started

Before you try the early preview

-

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.

Not Apple-verified. Markover uses a hardened ad-hoc code signature, but it has no authenticated Developer ID publisher and is not notarized. Gatekeeper is expected to block its 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 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.

@@ -112,7 +112,7 @@

Before you try the early preview

Start a review with an agent

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.

-
If the link does not open. Copy the standalone 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.
+
If the link does not open. Copy the standalone 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.
Keep the agent thread available. When your feedback is ready, return to the same conversation and say “Check Markover.”

Agents and tool authors should follow the separate agent workflow for exact commands, review-ID handling, and feedback interpretation.

@@ -139,7 +139,7 @@

Review the document

Durability and recovery

-

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.

What the two-second window does not cover. The guarantee applies to an app-process crash. Power loss, operating-system or hardware failure, and unhealthy or unusually slow storage are outside it. A persistent autosave warning means Markover is retrying or waiting and the normal bound is suspended until storage recovers.

See Privacy, storage, and recovery for the advanced autosave setting, quit choices after a save problem, and backup guidance.

@@ -157,7 +157,7 @@

Keyboard controls

- + diff --git a/docs/user/index.html b/docs/user/index.html index ce581a07..1fcc796d 100644 --- a/docs/user/index.html +++ b/docs/user/index.html @@ -23,13 +23,13 @@ ?.setAttribute('content', appearance === 'dark' ? '#242221' : '#e8e2d8') })() - - Markover — Early macOS preview + + Markover — Structured review for Markdown - - + + @@ -37,8 +37,8 @@ - - + + @@ -136,10 +136,13 @@

See the complete handoff.

Read the transcript -

Markover starts with a sanitized participant guide, then opens the launch-readiness review from the Needs me inbox. The reviewer sees agent-written Markdown as a document tree with precise 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 status, block feedback, attachment labels, and the source proposal. The demo ends on the Markover lockup and repository address.

+

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 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 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.

Open the standalone transcript

-

Free and MIT-licensed early preview. No account required; ordinary review data stays in your macOS account. Requires Apple Silicon macOS 14+ and Node.js 22.13+ for the launcher.

+

Free, MIT-licensed early preview. No account, no telemetry; ordinary review data stays in your macOS account. Requires Apple Silicon, macOS 14+, and Node.js 22.13+ for the launcher.

@@ -147,12 +150,12 @@

See the complete handoff.

01

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.

02

Annotate precisely

-

Attach feedback and screenshots to the exact Markdown block(s) that need attention.

+

Attach feedback and screenshots to the Markdown blocks that need attention.

03 @@ -163,12 +166,12 @@

Return one handoff

-

Agent-friendly by design

-

A review has a clear owner.

+

The workflow

+

At every step, someone owns the review.

  1. Agent opens a Markdown document for review in Markover.

  2. -
  3. Reviewer navigates, annotates, attaches a screenshot… then tells the agent “check markover”.

  4. +
  5. Reviewer navigates, annotates, attaches a screenshot… then tells the agent “Check Markover”.

  6. Agent retrieves one frozen structured handoff from Markover.

@@ -183,7 +186,7 @@

A review has a clear owner.

Markover showing a multi-project document inbox, a structured launch brief, and an annotation editor with two labeled screenshot attachments. -
Review in context. Switch among projects, navigate representative Markdown blocks, and attach labeled screenshots to precise feedback.
+
Review in context. Switch among projects, navigate the document's blocks, and attach labeled screenshots to your feedback.
diff --git a/docs/user/limitations/index.html b/docs/user/limitations/index.html index 001e7561..dcfb9c71 100644 --- a/docs/user/limitations/index.html +++ b/docs/user/limitations/index.html @@ -188,10 +188,10 @@

The original source remains the reference

Early-preview product boundary

    -
  • Markover supports macOS 14 Sonoma or newer on Apple Silicon Macs. Native Intel releases are deferred to the Broad announcement roadmap.
  • +
  • Markover supports macOS 14 Sonoma or newer on Apple Silicon Macs. Native Intel releases are deferred; see issue #80.
  • The launcher requires Node.js 22.13.0 or newer.
  • Current downloads are hardened and ad-hoc signed, but not Apple-verified or notarized.
  • -
  • 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.
  • +
  • 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.
  • Managed reviews and their unused attachments can be moved to the macOS Trash from Markover. Cache management and a complete reset use the procedures in Privacy, storage, and recovery.
diff --git a/docs/user/privacy/index.html b/docs/user/privacy/index.html index 9e6026ac..3a912c68 100644 --- a/docs/user/privacy/index.html +++ b/docs/user/privacy/index.html @@ -91,7 +91,7 @@

Reference

Privacy, storage, and recovery

-

Markover keeps ordinary review work on your Mac. This page explains the account boundary, stored data, deliberate network actions, backups, reinstall, deletion, and reset without requiring implementation knowledge.

+

Markover keeps ordinary review work on your Mac. This page explains the account boundary, stored data, deliberate network actions, backups, reinstall, deletion, and reset.

Local means your macOS account

diff --git a/test/docs-site.test.ts b/test/docs-site.test.ts index 71bc4ac3..e639c71b 100644 --- a/test/docs-site.test.ts +++ b/test/docs-site.test.ts @@ -113,7 +113,7 @@ test('README and Pages share one strongest product image', () => { assert.deepEqual(readmeScreenshots, ['markover-review-editor@2x.png']) assert.match( readme, - /alt="Markover in Ember Light showing the review inbox, a launch brief in the center document tree, and precise feedback with two labeled attachments\."/ + /alt="[^"]*Ember Light[^"]*review inbox[^"]*launch brief[^"]*two labeled attachments\."/ ) assert.match( html, @@ -558,6 +558,7 @@ test('user and developer documentation have explicit audience roots', () => { assert.match(agents, /id="revise"[\s\S]*markover revise/) assert.match(agents, /id="done"[\s\S]*markover done/) assert.match(agents, /pullRequestStatus/) + assert.ok(agents.indexOf('pullRequestStatus') < agents.indexOf('markover open ./DOCUMENT.md')) assert.match(agents, /review\.agentGuidance\.fixedContract/) assert.match(agents, /thread-host-kind/) assert.match(agents, /Validate the handoff before reading it/) @@ -569,6 +570,8 @@ test('the public Tailscale example is additive and keeps local routing private', assert.match(remoteAccess, /tailscale serve status --json/) assert.match(remoteAccess, /tailscale funnel status --json/) assert.match(remoteAccess, /Tailscale 1\.92 or newer/) + assert.match(remoteAccess, /Mac running canonical Markover/) + assert.match(remoteAccess, /in canonical Markover only/) assert.match(remoteAccess, /tailscale version/) assert.match(remoteAccess, /--accept-app-caps=lastobelus\.com\/cap\/markover-remote-client/) assert.match(remoteAccess, /DEDICATED_HTTPS_PORT='replace-with-an-unused-port'/) @@ -578,12 +581,15 @@ test('the public Tailscale example is additive and keeps local routing private', assert.match(remoteAccess, /Funnel has no grant for the Markover port/) assert.doesNotMatch(remoteAccess, /8443/) assert.doesNotMatch(remoteAccess, /https:\/\/[^<\s]*\.ts\.net/) + assert.match(privacy, /configured canonical development app automatically checks/) + assert.match(privacy, /bounded canonical changelist check is automatic/) }) test('the early-preview contract is concise and consistent on user entry paths', () => { for (const source of [html, guide, readme]) { - assert.match(source, /Early macOS preview/) + assert.match(source, /early (?:macOS )?preview/i) } + assert.match(html, /ordinary review data stays in your macOS account/) for (const source of [guide, readme, limitations]) { assert.match(source, /macOS 14 Sonoma/) assert.match(source, /Apple Silicon Macs/) diff --git a/test/launch-assets.test.ts b/test/launch-assets.test.ts index eb7ac1e1..0e7ad6ba 100644 --- a/test/launch-assets.test.ts +++ b/test/launch-assets.test.ts @@ -133,7 +133,29 @@ test('Pages offers an accessible current-UI demo without surprise playback', () const transcript = document.querySelector('#demo-transcript') const disclosure = document.querySelector('.demo-disclosure') assert.ok(transcript) - assert.ok(transcript.textContent.includes('fixture-only CLI')) + const canonicalTranscript = fs.readFileSync( + path.join(issueDirectory, 'demo-transcript.md'), + 'utf8' + ) + const canonicalPagesText = canonicalTranscript.match( + /\s*([\s\S]*?)\s*/ + )?.[1] + assert.ok(canonicalPagesText) + assert.match(canonicalPagesText, /App header and Pane layout with Left, Center, and Right panes/) + assert.doesNotMatch(canonicalPagesText, /three-pane/i) + const normalizeTranscript = (value: string): string => value + .replace(/\*\*/g, '') + .replace(/\s+/g, ' ') + .trim() + const inlinePagesText = [...transcript.querySelectorAll(':scope > p')] + .filter((paragraph) => !paragraph.querySelector('a')) + .map((paragraph) => paragraph.textContent) + .join(' ') + assert.equal( + normalizeTranscript(inlinePagesText), + normalizeTranscript(canonicalPagesText) + ) + assert.match(transcript.textContent, /demo fixture data/) assert.ok(disclosure) assert.equal(transcript.nextElementSibling, disclosure) }) @@ -201,9 +223,19 @@ test('the launch manifest pins every binary and keeps release claims honest', () test('README uses one linked product image and states the preview boundary', () => { const readme = fs.readFileSync(path.join(root, 'README.md'), 'utf8') + const launchCopy = fs.readFileSync(path.join(issueDirectory, 'focused-preview-copy.md'), 'utf8') assert.equal((readme.match(/markover-review-editor@2x\.png/g) ?? []).length, 1) assert.match(readme, /href="https:\/\/lastobelus\.github\.io\/markover\/#demo"/) - assert.match(readme, /free and\s+MIT-licensed, requires no account/) + assert.match(readme, /early preview/i) + assert.match(readme, /free and MIT-licensed/i) + assert.match(readme, /requires no\s+account/i) + assert.match(launchCopy, /ordinary review data stays in your macOS account/) + assert.match(readme, /keeps ordinary review data in your macOS account/) + assert.equal((launchCopy.match(/ordinary review data/g) ?? []).length, 3) + assert.doesNotMatch( + `${readme}\n${launchCopy}`, + /(?:keeps\s+review data|(?
KeyAction
Up / DownMove between sibling blocks; climb outward at a boundary
Up / DownMove between sibling blocks; at the first or last sibling, continue at the parent's level
LeftSelect the parent block
RightSelect the first child, then the next available sibling
Tab / Shift-TabMove among the left, center, and right panes