Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,11 @@
Markover is an **Early macOS preview** for reviewing Markdown as a document
tree and returning block-level feedback to an agent.

<p align="center">
<img src="./docs/user/assets/markover-review-editor@2x.png" width="920" alt="Markover showing a document inbox, structured Markdown, and an annotation with labeled screenshots.">
</p>
> Markover is free and MIT-licensed. It requires no account, and ordinary
> review data stays in your macOS account.

<p align="center">
<img src="./docs/user/assets/markover-annotation-browser@2x.png" width="920" alt="Markover showing every rendered annotation in the active document.">
<img src="./docs/user/assets/markover-review-editor@2x.png" width="920" alt="Markover showing a document inbox, structured Markdown, and an annotation with labeled screenshots.">
</p>

## Features
Expand Down Expand Up @@ -59,6 +58,9 @@ Discussions](https://github.com/lastobelus/markover/discussions).

## For agents: open a review without installing

> **Use the complete GitHub package URL below.** The public npm package named
> `markover` is an unrelated Markdown-cleanup tool.

Open a document with:

```sh
Expand Down
51 changes: 51 additions & 0 deletions doc/launch/issue-16/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Issue 16 launch-production bundle

This directory contains editable sources for Markover's focused-preview launch
assets. Public copy must stay simple, clear, descriptive, calm, and free of
glazing or large unsupported claims.

## Preparation assets

| Source | Purpose | Published output |
| --- | --- | --- |
| `launch-manifest.json` | Desired repository metadata, profile pins, release gate, and asset hashes | Live GitHub settings after finalization |
| `github-social-preview.svg` | Editable 1280×640 GitHub card | `docs/user/assets/markover-github-social-preview.png` |
| `pages-social-card.svg` | Editable 1200×630 Pages card | `docs/user/assets/markover-pages-social-card.png` |
| `launch-brief.md` | Purpose-built document reviewed in the demo | Demo only |
| `handoff-summary.jq` | Readable projection of real handoff fields | Demo only |
| `demo-storyboard.md` | Recording steps, captions, and transcript source | Final MP4 and Pages transcript |
| `reddit-draft.md` | Ready-to-finalize r/codex copy | Posted by issue 17 |

Build the raster cards on macOS with:

```sh
npm run build:social-cards
```

The build reads the canonical `design/brand/markover-lockup.svg`, embeds it in a
temporary rendering source, and verifies the PNG dimensions and GitHub file-size
limit. `test/launch-assets.test.ts` verifies the committed source and output
hashes against the manifest.

## Finalization gate

Do not publish `reddit-draft.md` or copy its placeholders to a public surface.
`v0.1.3` is the current public Apple Silicon candidate, not the selected final
focused-preview release. Issue 93 must finish the clean-profile batch, issue 11
must accept that evidence, and issue 10 must select the exact release. Then:

1. Set `release.focusedPreviewTag` in the manifest and update every public
launcher URL to that exact tag.
2. Capture the current public landing-page hero as
`current-landing-page.png` for the demo fixture.
3. Run the generic CLI lifecycle and the Codex/T3 Code `AGENTS.md` workflow end
to end, then record the evidence.
4. Record and export the final MP4, poster, and transcript from the verified
selected release.
5. Resolve `[PREVIEW_TAG]` and `[DEMO_URL]`, deploy Pages, and verify public link
previews.
6. Apply the repository settings and profile pins from the manifest only after
the matching default-branch assets are live.

Issue 16 remains open until those steps have final-state evidence. Issue 17 owns
posting to r/codex and operating the feedback round.
74 changes: 74 additions & 0 deletions doc/launch/issue-16/demo-storyboard.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# Markover focused-preview demo storyboard

## Production status

This is the preparation storyboard. `v0.1.3` is the current Apple Silicon
candidate, not the selected final release. Replace `<PREVIEW_TAG>` and
`<REVIEW_ID>` only after issues 93, 11, and 10 complete the clean-profile and
release-selection gate. Record the final video from that build.

## Recording setup

- 1920×1080 at 30 fps, exported as silent H.264 MP4 with fast-start metadata.
- Clean Codex or T3 Code thread, clean Markover review history, and notifications
disabled.
- Only `launch-brief.md`, the public landing-page screenshot, and the filtered
handoff appear.
- Public copy and captions stay simple, clear, descriptive, calm, and free of
glazing or large claims.

## Timeline

### 0:00–0:07 — Open from the agent thread

Prompt the agent:

> Open `doc/launch/issue-16/launch-brief.md` in Markover for review.

Show the agent run the exact command for `<PREVIEW_TAG>`, retain `<REVIEW_ID>`,
and stop. Caption: **Open an agent-written Markdown document.**

### 0:07–0:20 — Ask a screenshot-backed question

In Markover, select the paragraph under **Landing page**. Type “Could we lead
with the block-level review workflow shown in ”, paste
`current-landing-page.png`, and relabel it `current landing page`. Keep the
rewritten `[!current landing page]` reference visible. Caption: **Attach a
question and label its visual context.**

### 0:20–0:31 — Propose an exact source change

Select “Markover works with every coding agent.” and propose:

> Markover is provider-neutral for agents with macOS shell access and verified
> with Codex and T3 Code.

Show the real word-level diff. Caption: **Propose an exact edit without changing
the review target.**

### 0:31–0:43 — Check Markover in the same thread

Return to the agent thread and type:

> Check Markover.

Show the agent invoke `get` with the retained review ID. Briefly show Markover
become read-only/with-agent, then show the real response projected through
`handoff-summary.jq`: review status, question, attachment ID and edited label,
and original/current source proposal. Caption: **Return one structured handoff
to the agent thread.**

### 0:43–0:45 — End card

Show the Markover lockup, **Free, MIT-licensed early preview for Apple Silicon
Macs**, and `github.com/lastobelus/markover`.

## Pages transcript

An agent opens a Markdown launch brief in Markover and waits. The reviewer asks
a question on one exact block, pastes a screenshot, and changes its label to
“current landing page.” On another block, the reviewer proposes an exact source
change, which Markover shows as a word-level diff while preserving the original
document. Back in the same agent thread, the reviewer says “Check Markover.” The
agent retrieves one structured handoff containing the question, labeled
attachment, and source proposal, and Markover marks the review read-only.
8 changes: 8 additions & 0 deletions doc/launch/issue-16/github-social-preview.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
32 changes: 32 additions & 0 deletions doc/launch/issue-16/handoff-summary.jq
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
def reviewed_blocks:
[
..
| objects
| select((.id? // "") | startswith("block-"))
| select(
((.feedback? // "") | length) > 0
or (.sourceEdit? != null)
)
| { id }
+ (if ((.feedback? // "") | length) > 0
then { feedback }
else {}
end)
+ (if ((.attachments? // []) | length) > 0
then {
attachments: [
.attachments[] | { id, label }
]
}
else {}
end)
+ (if .sourceEdit? != null
then { sourceEdit }
else {}
end)
];

{
review: { status: .review.status },
blocks: reviewed_blocks
}
14 changes: 14 additions & 0 deletions doc/launch/issue-16/launch-brief.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Focused preview launch brief

## Landing page

Open with a general description of the product before showing the workflow.

## Agent compatibility

Markover works with every coding agent.

## Preview status

The first public post should describe the current build as an early macOS
preview and ask readers to report the first confusing or broken step.
70 changes: 70 additions & 0 deletions doc/launch/issue-16/launch-manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
{
"issue": 16,
"phase": "focused-preview",
"canonicalDescriptor": "Structured review for Markdown.",
"repository": {
"description": "Local-first macOS app for reviewing agent-produced Markdown and returning structured, block-level feedback to the agent thread.",
"homepage": "https://lastobelus.github.io/markover/",
"topics": [
"markdown",
"document-review",
"annotations",
"ai-agents",
"coding-agents",
"codex",
"local-first",
"macos",
"electron",
"developer-tools"
],
"socialPreview": "docs/user/assets/markover-github-social-preview.png"
},
"profilePins": [
"lastobelus/markover",
"lastobelus/lastCode"
],
"pages": {
"url": "https://lastobelus.github.io/markover/",
"socialCard": "docs/user/assets/markover-pages-social-card.png"
},
"canonicalProductImage": "docs/user/assets/markover-review-editor@2x.png",
"release": {
"currentPublicTag": "v0.1.3",
"focusedPreviewCandidateTag": "v0.1.3",
"focusedPreviewTag": null,
"platform": "macOS 14 Sonoma or newer on Apple Silicon",
"blockedByIssues": [93, 11, 10]
},
"announcement": {
"community": "r/codex",
"title": "I built a little Electron app for reviewing agent-written Markdown block by block",
"postingIssue": 17
},
"assets": {
"canonicalLockup": {
"path": "design/brand/markover-lockup.svg",
"sha256": "47914a9d87e0d0348f2c12a5957db9e07bc15e890db306096496bdffc1b385da"
},
"githubSocialPreview": {
"source": "doc/launch/issue-16/github-social-preview.svg",
"sourceSha256": "650deb7001393089f387832ee874546fee58e908e293226cbc7a42bcdb813431",
"output": "docs/user/assets/markover-github-social-preview.png",
"outputSha256": "9598063f0cdefe022a5da72c1a03d6efbd388c13c4d820298570744e71e031b4",
"width": 1280,
"height": 640,
"maximumBytes": 1000000
},
"pagesSocialCard": {
"source": "doc/launch/issue-16/pages-social-card.svg",
"sourceSha256": "f74fcec7be607fb9b6146a0bb2facecf0b9e349839249181cf1df1cffd7b5654",
"output": "docs/user/assets/markover-pages-social-card.png",
"outputSha256": "f2497ad43da09a8750bdef3bff482431c80e3790968612f2b28a2ac411d0716a",
"width": 1200,
"height": 630
},
"canonicalProductImage": {
"path": "docs/user/assets/markover-review-editor@2x.png",
"sha256": "b42e781cb60923a169ed763a736487fced21d352c893a57da05b9c54a9046839"
}
}
}
8 changes: 8 additions & 0 deletions doc/launch/issue-16/pages-social-card.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
55 changes: 55 additions & 0 deletions doc/launch/issue-16/reddit-draft.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# r/codex focused-preview draft

## Title

I built a little Electron app for reviewing agent-written Markdown block by block

## Body

I kept running into the same problem when an agent produced a long plan or
specification: chat made it hard to keep each note attached to the exact
paragraph, list item, or code block it referred to.

Screenshots made that worse. I wanted to paste several visual references, give
them useful labels, and cite them from a question. I also wanted to propose an
exact edit beside ordinary feedback without losing the original document. When
I came back later, I wanted every note to retain its source context.

I made Markover for that workflow. An agent opens a Markdown file, then stops
while you review it as a document tree. You can add Markdown feedback and
labeled screenshots to individual blocks, or edit a source block to create a
proposal shown as a word-level diff. When you say “Check Markover” in the agent
thread, the agent retrieves one structured handoff containing the original
source, annotations, attachments, proposals, and review context.

The short demo shows that complete loop: **[DEMO_URL]**

Markover is a free, MIT-licensed early preview for Apple Silicon Macs running
macOS 14 Sonoma or newer. It requires no account, and ordinary review data stays
in your macOS account. The generic workflow works with agents that have macOS
shell access; the focused preview is verified with Codex and T3 Code.

The preview currently requires Node.js 22.13.0 or newer. The app is ad-hoc
signed rather than Developer ID signed or notarized, so macOS may ask you to
confirm opening it. The README has the exact command pinned to **[PREVIEW_TAG]**
and explains the full handoff lifecycle:

**https://github.com/lastobelus/markover**

The product page and guide are here:

**https://lastobelus.github.io/markover/**

If this matches your workflow, try it on one real Markdown document and tell me
the first step that is confusing or broken. A reply here is fine for a quick
note. For a reproducible failure, the repository has a structured bug form that
captures the Mac and launch details needed to investigate it.

## Posting checklist

- Replace `[DEMO_URL]` and `[PREVIEW_TAG]` with verified final values.
- Recheck r/codex project-promotion rules on posting day.
- Upload the MP4 natively and select the canonical demo poster if Reddit allows
a custom thumbnail.
- Do not post until issue 16 has final-state evidence and issue 17 authorizes the
announcement window.
Loading