+ Parcel · User guides +
++ Everything you need to{" "} + + Capture + {" "} + with confidence. +
++ Install, permissions, workflows, and integrations — written for + daily macOS use, not just contributors. +
+diff --git a/README.md b/README.md index 5ae1c42..97b59f4 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@
- Website + Website · - Download + Download · Docs · @@ -28,7 +28,7 @@ Contributing
- ++ Parcel freezes every display with ScreenCaptureKit, then lets you choose + a Selection from those pixels — region drag, window snap, + or scroll stitch. +
+ ++ On hotkey, Parcel captures full-resolution images of all displays and + shows them in the Overlay — a borderless full-screen + panel per display. You work on frozen pixels, not a live view. +
++ For tall content that does not fit on screen, choose{" "} + Scroll Capture from the menu bar while the Overlay is + active: +
++ One Overlay panel appears per display. Your Selection is cropped from the + display where you release — pixels stay at native resolution and retina + scale. +
+ ++ The Editor is where you mark up a Capture, tune output, and copy or save. + One render pipeline drives display and export —{" "} + on screen = saved. +
+ +Select a Tool from the toolbar to create Annotations:
++ Switch to Select, click any Annotation, and use the style + bar to change stroke, color, arrow style, censor mode, or fill. Move and + resize with handles. The Layer stack supports reorder via the layers + panel. +
+ ++ Beautify wraps your Canvas with gradient backgrounds, + window chrome, padding, radius, and shadow — plus saved brand kits. + Adjustments run a Core Image chain on the base Capture + (exposure, contrast, saturation, and more). +
++ Copy or save as PNG, JPEG, HEIC, or TIFF. Format and quality live in the + output panel. Re-open any past Capture from history (⌘⇧H) with + annotations and settings intact. +
+ > + ); +} diff --git a/Website/app/docs/getting-started/page.tsx b/Website/app/docs/getting-started/page.tsx new file mode 100644 index 0000000..0e779ae --- /dev/null +++ b/Website/app/docs/getting-started/page.tsx @@ -0,0 +1,81 @@ +import { DocsBreadcrumb, DocsCallout } from "@/components/docs/docs-shell"; +import type { Metadata } from "next"; + +export const metadata: Metadata = { + title: "Quick start", + description: "Install Parcel, grant Screen Recording, and take your first Capture.", +}; + +export default function GettingStartedPage() { + return ( + <> ++ Parcel lives in your menu bar. After install, grant Screen Recording once, + quit and reopen — then press ⌘⇧2 to Capture. +
+ ++ Download the signed Release build from the{" "} + direct download or build from source + with Xcode. Drag Parcel.app to Applications. +
+brew install --cask parcel
+ CGEventTap — so you
+ never need Accessibility access for Capture.
+ + Parcel · User guides +
++ Install, permissions, workflows, and integrations — written for + daily macOS use, not just contributors. +
++ Parcel is a native macOS Capture studio from the{" "} + Parable ecosystem. These guides cover + what end users need — install, permissions, Capture workflows, and + optional upload. +
+ ++ Recommended +
++ Download, grant Screen Recording, and take your first Capture in + under two minutes. +
+ + Read guide+ Reference +
++ Global hotkey, Overlay controls, and Editor commands in one place. +
+ + View shortcuts{page.title}
++ {page.description} +
++ Architecture, parity checklists, and agent guides live in the GitHub + repository: +
++ Parcel is private by default. OCR, face detection, translation, and regex + redaction use Apple on-device frameworks only — no cloud AI, no telemetry. +
+ +Screen Recording
++ Required — ScreenCaptureKit for Capture and recording +
+Accessibility
++ Not used — Carbon hotkeys avoid event taps +
++ Release builds are sandboxed with user-selected file read/write for Save + panels. Upload uses HTTPS to your configured Supabase project only when + you trigger it. +
+ ++ Record a screen region as MP4 with system audio, optional microphone on + macOS 15+, click highlights, trim, and local GIF export. +
+ ++ After stopping, the trim window opens. Set in/out points, then save MP4 + or export a lightweight GIF for sharing. +
+ ++ Default bindings below. Change the Capture hotkey in{" "} + Preferences → Hotkey. +
+ +| + Keys + | ++ Action + | +
|---|---|
| + {row.keys} + | +{row.action} | +
+ Upload is optional. Configure your own Supabase Storage bucket once — + then upload from the Editor and copy a public link. +
+ ++ After marking up a Capture, choose Upload from the Editor toolbar. Parcel + writes to your bucket via the Supabase Storage REST API and copies the + public URL to the clipboard. +
+ ++ Fourteen Tools · One toolbar +
++ Docs +
+ ++
{item.a}
@@ -61,26 +63,47 @@ export function FaqSection() { export function CtaBanner() { return ( -- Free, open source, and built for daily macOS work — private by default. -
-+ Free · Open source · MIT +
++ Private by default. Built for daily macOS work — from the Parable + ecosystem. +
++ Compatible with Apple Silicon and Intel · macOS 13+ +
++
{item.body}
diff --git a/Website/components/guides-grid.tsx b/Website/components/guides-grid.tsx index 8505873..acdf15e 100644 --- a/Website/components/guides-grid.tsx +++ b/Website/components/guides-grid.tsx @@ -1,9 +1,52 @@ "use client"; -import { BookOpen } from "lucide-react"; +import Link from "next/link"; +import { ArrowUpRight, BookOpen } from "lucide-react"; import { motion, useReducedMotion } from "motion/react"; import { SectionHeader } from "@/components/section-header"; -import { guides } from "@/lib/site"; + +const guideLinks = [ + { + title: "Redact sensitive text locally", + body: "Inspect Capture → Recognize Text → Censor Detected Sensitive Text. Regex runs on-device via Vision.", + href: "/docs/editor", + }, + { + title: "Scroll a long page", + body: "In the Overlay choose Scroll Capture, drag a tall region, then add frames from the menu bar and finish.", + href: "/docs/capture", + }, + { + title: "Click-to-edit any annotation", + body: "Switch to Select, click an Annotation, then use the style bar to change stroke, color, arrow style, or censor mode.", + href: "/docs/editor", + }, + { + title: "Record with system audio", + body: "Choose Record Region from the menu bar, drag a Selection in the Overlay, then save. MP4 includes system audio.", + href: "/docs/recording", + }, + { + title: "Translate text on-device", + body: "Inspect Capture → Recognize Text → Translate On-Device. Uses Apple Translation on macOS 26+ — nothing leaves your Mac.", + href: "/docs/privacy", + }, + { + title: "Save a brand kit", + body: "Enable Beautify, tune padding and gradient, then save a named kit from the Beautify panel.", + href: "/docs/editor", + }, + { + title: "Upload to Supabase", + body: "Paste project URL, anon key, and bucket in Preferences. Upload from the Editor copies the link.", + href: "/docs/supabase", + }, + { + title: "Export a recording as GIF", + body: "After stopping a recording, open the trim window and export GIF for lightweight sharing.", + href: "/docs/recording", + }, +] as const; export function GuidesGrid() { const reduce = useReducedMotion(); @@ -11,31 +54,54 @@ export function GuidesGrid() { return (- {guide.body} -
- + ++ {guide.body} +
+ ++ Requirements +
+- Signed Release builds from GitHub Actions. Unzip and drag Parcel to - Applications. +
+ Open the zip and drag Parcel to Applications. Sparkle handles + updates.
-
+
Homebrew
- Once the cask is published to a tap, install with Homebrew.
+
+ Once published to a tap, one command installs Parcel.
Install via cask
- Install via cask
+
+
{HOMEBREW_CMD}
+ {item.body} +
+Required for Capture
Accessibility
-Not required
+Not used by Parcel
{kicker} @@ -22,7 +31,7 @@ export function SectionHeader({ {title} {subtitle && ( -
+
{subtitle}
)} @@ -42,9 +51,9 @@ export function Badge({ className={cn( "inline-flex items-center rounded-full border px-2.5 py-0.5 font-mono text-[11px] uppercase tracking-wide", variant === "violet" && - "border-violet-500/30 bg-violet-500/10 text-violet-300", + "border-[var(--brand-secondary)]/30 bg-[var(--brand-secondary)]/10 text-violet-300", variant === "mint" && - "border-emerald-500/30 bg-emerald-500/10 text-emerald-300", + "border-[var(--brand-accent)]/30 bg-[var(--brand-accent)]/10 text-[var(--brand-accent)]", variant === "default" && "border-border bg-muted/50 text-muted-foreground" )} > diff --git a/Website/components/shortcuts-table.tsx b/Website/components/shortcuts-table.tsx index 6eae4e7..0ee51bd 100644 --- a/Website/components/shortcuts-table.tsx +++ b/Website/components/shortcuts-table.tsx @@ -1,5 +1,7 @@ "use client"; +import Link from "next/link"; +import { ArrowRight } from "lucide-react"; import { motion, useReducedMotion } from "motion/react"; import { SectionHeader } from "@/components/section-header"; import { shortcuts } from "@/lib/site"; @@ -8,39 +10,60 @@ export function ShortcutsTable() { const reduce = useReducedMotion(); return ( -| + | ||
|---|---|---|
| Shortcut | -+ | Action |
| - + {row.keys} | -+ | {row.action} |