Skip to content
Merged
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
5 changes: 5 additions & 0 deletions docs/comparison.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@ How Carve compares to the markup languages you already know. The short version:
Markdown's reach, Djot's consistency, web-native features by default - without
turning your content into a JavaScript program.

> This page is **Carve-centric**: a feature-by-feature take against Markdown,
> Djot, and MDX. For a broader, neutral survey of the wider lightweight-markup
> landscape (AsciiDoc, reStructuredText, Textile, and more), see
> [Modern Markup Languages Comparison](./markup-languages).

::: tip Legend
✅ native  ·  🧩 plugin / extension needed  ·  ⚠️ partial / convention  ·  ❌ not available
:::
Expand Down
8 changes: 6 additions & 2 deletions docs/dismissed-syntax.md
Original file line number Diff line number Diff line change
Expand Up @@ -254,15 +254,19 @@ syntax — symbol-based, no English keyword, symmetric with the inline

---

## CriticMarkup Integration
## CriticMarkup: doubled-marker form (`{++added++}`)

> The CriticMarkup *feature* was adopted - it is part of the spec (section 4.14)
> with single-character markers. Only the **doubled-marker** form proposed
> below was dismissed. It lives here to record that choice.

**Proposed:**
```
This is {++added++} and {--removed--} text.
This is {~~old~>new~~} replacement.
```

**Status:** Included in spec (section 4.14), but with **single**-character markers (`{+added+}`, `{-removed-}`, `{~old~>new~}`); the doubled-marker form shown above was not adopted.
**Status:** The feature is in the spec (section 4.14), but with **single**-character markers (`{+added+}`, `{-removed-}`, `{~old~>new~}`); the doubled-marker form shown above was not adopted.

**Considerations:**
- Useful for document review workflows
Expand Down
2 changes: 1 addition & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ features:
- title: Visual Mnemonics
details: "/italic/ slashes lean, *bold* asterisks are heavy, _underline_ sits below, ~strikethrough~ runs through. Syntax that looks like its output."
- title: Linear-Time Rigor
details: Djot-style linear-time parsing with no backtracking, unambiguous rules extended with captions, abbreviations, and social conventions.
details: "Djot-style linear-time parsing with no backtracking and unambiguous rules (Djot is the markup Carve builds on), extended with captions, abbreviations, and social conventions."
- title: Ten-Second Rule
details: Learnable in 10 seconds for basic use. Memorable after 10 days without practice. Unambiguous within 10 characters of context.
- title: Captions Everywhere
Expand Down
5 changes: 4 additions & 1 deletion docs/markup-languages.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
# Modern Markup Languages Comparison

A comparison of lightweight markup languages available today.
A broad, neutral survey of the lightweight markup languages available today.

> For a focused, Carve-centric comparison against Markdown, Djot, and MDX, see
> [Carve vs Markdown, Djot & MDX](./comparison).

## Overview

Expand Down
9 changes: 5 additions & 4 deletions docs/security.md
Original file line number Diff line number Diff line change
Expand Up @@ -160,12 +160,13 @@ does not launder an attack:
responsible for inserting it into a trusted context and for the surrounding
Content-Security-Policy.

## Relationship to the spec's SafeMode
## Beyond the baseline: SafeMode and Profiles

The baseline on this page - the URL scheme denylist, the attribute name/value
hardening, and the raw-HTML escape switch - is enforced by all three
implementations (carve-php, carve-js, carve-rs) by default. `SafeMode` /
`Profile` describe a broader, opt-in policy layered ON TOP (scheme allowlists,
hardening, and the raw-HTML escape switch - is the normative default: enforced
by all three implementations (carve-php, carve-js, carve-rs) without any
configuration. `SafeMode` / `Profile` are **optional, implementation-level**
policy objects that layer a broader surface ON TOP (scheme allowlists,
domain allow/deny, `rel=nofollow`, feature restriction, nesting / length
limits); that wider surface is documented in the
[Syntax Specification](./case-study/syntax) and may land incrementally.