Compare commits

61 Commits

Author SHA1 Message Date
lilleman 58392ace7c 12c: a test pins the closer to its list item or blockquote edge, and 4c names the list-item walk's re-scan class
CI / publish (push) Waiting to run
CI / gate (push) Successful in 28s
2026-09-16 20:23:00 +02:00
lilleman 582594a6d6 12c: the block walk matches only list items and blockquotes per line and finds a closer's container by name, replacing the depth guard
CI / gate (push) Successful in 26s
CI / publish (push) Has been skipped
2026-09-16 20:08:49 +02:00
lilleman 356b7512c8 12c: the block walk opens no container past the depth the node walk refuses, and the closer messages name the escape
CI / gate (push) Successful in 25s
CI / publish (push) Has been skipped
2026-09-16 19:40:30 +02:00
lilleman ba91900b89 12c: one block opener speller beside its reader, the line readers split along the union, and AGENTS.md records the leaf body
CI / gate (push) Successful in 26s
CI / publish (push) Has been skipped
2026-09-16 19:21:06 +02:00
lilleman 4aa9e88238 12c: a leaf given a body faults at its opener 2026-09-16 19:19:15 +02:00
lilleman 5bec3fbbb6 12c: the block directive forms read and spell !adf: openers and closers
CI / gate (push) Successful in 26s
CI / publish (push) Has been skipped
2026-09-16 15:46:52 +02:00
lilleman 2f23c13528 Tick 12b, moving its text to todo-history.md
CI / gate (push) Successful in 25s
CI / publish (push) Successful in 4s
2026-09-16 10:28:08 +02:00
lilleman 9ba2d09ee3 12b: the content slot refuses a carried text node's content too, and the reserved-name message names the live fence
CI / gate (push) Successful in 24s
CI / publish (push) Waiting to run
2026-09-16 10:26:12 +02:00
lilleman 65c09bdbae 12b: the inline opener speller takes its reader's name, and todo.md records 12c's collapses
CI / gate (push) Successful in 25s
CI / publish (push) Has been skipped
2026-09-16 10:03:49 +02:00
lilleman 302804cc4e 12b: the inline directive forms read and spell the !adf: prefix
CI / gate (push) Successful in 26s
CI / publish (push) Has been skipped
2026-09-16 09:52:52 +02:00
lilleman fe064efdb9 Tick 12a, moving its text to todo-history.md
CI / gate (push) Successful in 25s
CI / publish (push) Successful in 4s
2026-09-16 09:19:51 +02:00
lilleman 16af0b9592 12a: spec/flavour.md and AGENTS.md spell the !adf: grammar
CI / gate (push) Successful in 24s
CI / publish (push) Successful in 4s
2026-09-16 09:16:13 +02:00
lilleman 4ac4a119e4 Tick 4.3 and 4, moving their text to todo-history.md
CI / gate (push) Successful in 25s
CI / publish (push) Successful in 4s
2026-09-15 22:49:53 +02:00
lilleman ad1f3e996b 4.3: todo.md records the joined-run family and the generalized backtick pass
CI / gate (push) Successful in 25s
CI / publish (push) Successful in 4s
2026-09-15 22:35:48 +02:00
lilleman b6ba440410 4.3: a bare backtick run escapes wherever a later string of its length forms around an escape 2026-09-15 22:28:51 +02:00
lilleman 7d20f3e895 4.3: the ADF generator draws backtick runs beside code spans, and the directive floor's message names what it counts 2026-09-15 22:22:46 +02:00
lilleman 5fe2e6ec42 4.3: the directive floor counts directive-only and carried types in the parsed document, and run parameters name the gate
CI / gate (push) Successful in 25s
CI / publish (push) Has been skipped
2026-09-15 21:48:06 +02:00
lilleman ef71d55c13 4.3: todo.md records the settled harness, floors and breaks, and 12's and 13b's follow-ups
CI / gate (push) Successful in 25s
CI / publish (push) Has been skipped
2026-09-15 21:36:55 +02:00
lilleman a3073c69b2 4.3: under the gate seed the markdown property asserts floors on fixpoint and directive-shaped runs 2026-09-15 21:36:55 +02:00
lilleman 8e7d429379 4.3: the shared property module is property-harness.ts, and the canonical arm filters emit refusals 2026-09-15 21:31:41 +02:00
lilleman 755b5cbe01 4.3: the markdown generator splits into inline, leaf-block and block builders 2026-09-15 21:28:32 +02:00
lilleman fe47e6bc7b 4.3: a link opening a paragraph that reads as a link reference definition rides the carry 2026-09-15 21:22:34 +02:00
lilleman aeb54d98d1 4.3: an escaped backtick run escapes whole, and a lone backtick before one escapes too
CI / gate (push) Successful in 25s
CI / publish (push) Has been skipped
2026-09-15 21:05:16 +02:00
lilleman 4735933d61 4.3: a paragraph line reading as a link reference definition escapes its opening bracket 2026-09-15 21:05:16 +02:00
lilleman ec5c92d4fd 4.3: the markdown property 2026-09-15 21:05:16 +02:00
lilleman fb10a1dc04 Tick 4.4, moving its text to todo-history.md
CI / publish (push) Successful in 3s
CI / gate (push) Successful in 23s
2026-09-15 20:59:55 +02:00
lilleman 2901a28fcb 4.4: a review comment as a real payload
CI / gate (push) Successful in 22s
CI / publish (push) Successful in 4s
2026-09-15 19:21:53 +02:00
lilleman 047827fd86 4.4: the real payloads 2026-09-15 19:18:49 +02:00
lilleman e23fd9495e Settle 4.4's payloads as editor-written on the test site, and let 4.4 follow 12
CI / publish (push) Successful in 4s
CI / gate (push) Successful in 25s
2026-09-15 17:51:57 +02:00
lilleman 10d63ff8e6 Tick 4.2, moving its text to todo-history.md, and give 13b the autolink fixture
CI / gate (push) Successful in 23s
CI / publish (push) Successful in 3s
2026-09-14 23:45:18 +02:00
lilleman f8149321f2 4.2: the review's runner and weight nits
CI / gate (push) Successful in 23s
CI / publish (push) Successful in 4s
2026-09-14 23:43:49 +02:00
lilleman a581e454ae 4.2: the review's generator, runner and pattern fixes
CI / gate (push) Successful in 23s
CI / publish (push) Has been skipped
2026-09-14 23:25:13 +02:00
lilleman 342c2027d8 4.2: a link target's would-be directive escapes inside a directive's content 2026-09-14 23:25:13 +02:00
lilleman fade9f51ea 4.2: generated keys avoid V8's JSON.parse key fault 2026-09-14 23:25:13 +02:00
lilleman b6930b45a4 4.2: an autolink holding a backtick gives way inside a directive's content 2026-09-14 23:25:13 +02:00
lilleman e166e969cb 4.2: the ADF property 2026-09-14 23:25:13 +02:00
lilleman 507f68aa13 4.2: a link target's backtick escapes where it would open a code span inside a directive's content 2026-09-14 23:25:13 +02:00
lilleman a2672bdc5b 4.2: a list whose item holds a whitespace-only line takes the directive form 2026-09-14 23:25:13 +02:00
lilleman 9303235434 4.2: a link's brackets balance inside a directive's content 2026-09-14 23:25:13 +02:00
lilleman eafd863a32 4.2: an empty link destination beside a title spells <> 2026-09-14 23:25:13 +02:00
lilleman 1125715371 Record the autolink backtick answer and the accepted V8 JSON.parse fault in 4.2
CI / publish (push) Successful in 4s
CI / gate (push) Successful in 19s
2026-09-14 22:34:05 +02:00
lilleman 31156f4914 Settle 4.2's generator mix and how the breaks it finds get fixed
CI / publish (push) Successful in 3s
CI / gate (push) Successful in 18s
2026-09-14 20:50:17 +02:00
lilleman 0185879943 Tick 4.1, moving its text to todo-history.md, and record where 4.4's payloads land
CI / publish (push) Successful in 3s
CI / gate (push) Successful in 18s
2026-09-14 20:23:41 +02:00
lilleman 9cd4b33020 4.1: the browser leg compares through toEditorNormal
CI / gate (push) Successful in 17s
CI / publish (push) Successful in 4s
2026-09-14 20:21:32 +02:00
lilleman 758a5724e9 4.1: an iterative canonical serializer
CI / gate (push) Successful in 19s
CI / publish (push) Has been skipped
2026-09-14 20:11:25 +02:00
lilleman 276433d635 4.1: the review's test and comment fixes 2026-09-14 20:11:25 +02:00
lilleman 7672531cdc 4.1: editor-normal and the node accessors 2026-09-14 20:11:25 +02:00
lilleman ec5f80e47f 4.1: a text node carrying attributes never merges 2026-09-14 20:11:25 +02:00
lilleman da58a59f70 Revise 10: an alert-and-callout lossy pair, to and from markdown
CI / publish (push) Successful in 3s
CI / gate (push) Successful in 17s
2026-09-14 19:34:30 +02:00
lilleman 2796487b30 Tick 11, moving its text to todo-history.md, and correct 4.1's text
CI / gate (push) Successful in 16s
CI / publish (push) Has been cancelled
2026-09-14 19:34:02 +02:00
lilleman dcea401ec2 11b: fail on combinators an attribute kind cannot read
CI / gate (push) Successful in 17s
CI / publish (push) Successful in 3s
2026-09-14 17:33:13 +02:00
lilleman 25d851cc67 11b: guard the gate against empty gaps and unread keywords
CI / gate (push) Successful in 17s
CI / publish (push) Has been skipped
2026-09-14 16:54:32 +02:00
lilleman 0f03edc8ef 11b: the gate
CI / gate (push) Successful in 17s
CI / publish (push) Has been skipped
2026-09-14 16:16:49 +02:00
lilleman 37f59cec40 Design 5g: the README's order, badges and tagline
CI / gate (push) Successful in 17s
CI / publish (push) Successful in 3s
2026-09-14 16:11:14 +02:00
lilleman aa34d6e7fd Design 10: adfToPlainMarkdown as a reduction, its mapping and Obsidian's formats
CI / gate (push) Successful in 17s
CI / publish (push) Waiting to run
2026-09-14 15:09:48 +02:00
lilleman 3c1bacace6 Design 12 and 13: settle the !adf: grammar and split both by construct
CI / gate (push) Successful in 17s
CI / publish (push) Has been cancelled
2026-09-14 15:02:16 +02:00
lilleman f8a5d5e9b3 Design 4: fast-check generators on a fixed seed, in four sub-items
CI / gate (push) Successful in 17s
CI / publish (push) Has been cancelled
2026-09-14 15:02:15 +02:00
lilleman c9fb85f9db Tick 11a, moving its text to todo-history.md
CI / gate (push) Successful in 18s
CI / publish (push) Successful in 3s
2026-09-14 15:02:15 +02:00
lilleman 24b2e8cbbe 11a: the vendored schema
CI / gate (push) Successful in 25s
CI / publish (push) Successful in 4s
2026-09-13 15:40:34 +02:00
lilleman f66efabcbb Design 11: vendor Atlassian's ADF schema and gate the node tables against it
CI / publish (push) Successful in 3s
CI / gate (push) Successful in 17s
2026-09-13 15:34:32 +02:00
lilleman e424b35fd6 Settle 0.2.0's order and move 5e to last
CI / gate (push) Successful in 17s
CI / publish (push) Successful in 4s
2026-09-13 15:08:45 +02:00
188 changed files with 14272 additions and 1436 deletions
+43 -21
View File
@@ -23,8 +23,8 @@ backticks read back as a fence — so a parse succeeding does not imply a spella
`corpus/commonmark-spec/exceptions.json` names those.
"Equals" is structural equality over editor-normal ADF — adjacent text nodes with identical marks
merged, JSON number semantics, an empty attrs object, marks array or content array the absent
key — the only domain markdown can restore.
and no attributes merged, JSON number semantics, an empty attrs object, marks array or content
array the absent key — the only domain markdown can restore.
Round-trip equality is a property tested over a corpus, not a claim made in prose.
@@ -43,8 +43,11 @@ Round-trip equality is a property tested over a corpus, not a claim made in pros
## 4. The flavour
- Directives, one grammar for everything markdown lacks: `:::panel info` … `:::` blocks,
`:mention[@Mikael]{id=5b10a2}` inline. Prior art: CommonMark's generic-directives proposal.
- Directives, one grammar for everything markdown lacks, namespaced under `!adf:`: `!adf:panel info`
… `!adf:/panel` blocks, `!adf:mention[@Mikael]{id=5b10a2}` inline, `\!adf:` the one escape. Not
CommonMark's generic-directives proposal: its `:::` claims a form prose writes, and its
fence-length discipline ties a container's opener to its own body, where closing from the opener
nests by itself and leaf versus container falls out of the node's content model.
- Plain CommonMark is a subset, with carve-outs (`spec/flavour.md`): literal text shaped like a
directive, a pipe table or a `~~` pair is claimed — plus one image gap.
- Tables: one header row plus plain inline cells → pipe table; anything richer → directive form.
@@ -63,8 +66,12 @@ module, so entity decoding is complete without one. The CommonMark spec suite is
data and ships vendored at `corpus/commonmark-spec/` rather than as the `commonmark-spec` dev
dependency — that package is CommonJS-only, and Renovate auto-bumping a spec version would silently
point the vendored exception list's example numbers at a renumbered suite. A spec bump is a
deliberate re-pin, exceptions re-derived by hand beside it. `devDependencies`: few, each earning its
keep; they never reach a consumer.
deliberate re-pin, exceptions re-derived by hand beside it. Atlassian's ADF JSON Schemas ship
vendored the same way, at `spec/adf-schema/`, rather than as the `@atlaskit/adf-schema` dev
dependency — CommonJS-only, some fifty packages with React among them, and a release most days for
Renovate to automerge — re-pinned by hand when a payload or a report shows the need.
`devDependencies`: few, each earning its keep; they never reach a consumer. `fast-check` earns its
place shrinking a failing generated document to the nodes that break it.
## 6. The package contract
@@ -94,15 +101,17 @@ against the README's personas.
The emitted markdown and HTML are contracts. After 1.0: previously-emitted output parsing
differently, or not at all, is MAJOR; new syntax while old output still round-trips is MINOR.
Pre-1.0, normal 0.x rules.
Pre-1.0, normal 0.x rules. A spelled node's content model is part of that contract — leaf or
container is the model, not the syntax — so giving a spelled node's model content it had not, or
taking it away, is MAJOR whatever ADF's own schema does.
The error surface is a contract too. `ConvertError` is `{ code, message, path, position? }` — the
code from a closed list a consumer may switch exhaustively, the message free text, the path the
node's place from the document root, the position where a parse read the refusal in its input.
A message names the violation, not the rule alone — a rule by itself states a truth the reader
must invert before it reads as a failure — and where the flavour's claim refuses ordinary prose it
names the escape that unclaims the form claimed: `\:::` for a directive line, `\|` for every pipe
row, `\:` for an inline directive.
names the escape that unclaims the form claimed: `\!adf:` for a directive, block line and inline
alike, `\|` for every pipe row.
Adding, removing or renaming a code is breaking, so a milestone meeting a new failure cause
reuses a code where one fits; the list is complete at `0.1.0`. A code names the
cause; where one cause recurs across node types, across one mark's attributes or across
@@ -112,7 +121,7 @@ direction hits it, `unspellable-link` the destination and the title alike. Where
apart, the line between them is what they name: `unspellable-character` is a character CommonMark
rewrites wherever text holds it, `unspellable-whitespace` the newline no inline directive's
content slot spans, in either direction. A claim code names the spelling claimed, never the node that spelling would have built:
a malformed `:::table` is a `malformed-directive`, and an alignment colon a `malformed-pipe-table` —
a malformed `!adf:table` is a `malformed-directive`, and an alignment colon a `malformed-pipe-table` —
the flavour's own delimiter row is `-` runs, so the grammar refuses the colon rather than ADF's
missing column model doing it. A refusal no spelling recovers from is a gap in the flavour rather
than a code: give the flavour the spelling and the code goes, which the freeze is the last moment
@@ -121,12 +130,14 @@ spelling writes rides the carry with its node. A directive whose name reads back
`unknown-directive-name` rather than a claim code — the spelling is well formed, and telling that
apart from a typo is what a consumer switches on when a later MINOR gives the name meaning. A
reserved name is a known name, so never that code, and the two the flavour reserves part on form:
a form the grammar does not have is a claim code — `::adf`, whose carry is the fence — and a
well-formed form in the wrong place is `unsupported-node-shape`, `::listBreak` parting anything
a form the grammar does not have is a claim code — `!adf:carry`, whose carry is the fence — and a
well-formed form in the wrong place is `unsupported-node-shape`, `!adf:listBreak` parting anything
but two adjacent lists of one type. What
the grammar itself refuses stays a claim code, key order among it; a well-formed directive the
node tables refuse — an attribute a node does not hold or spells elsewhere, a value outside its
kind or its canonical spelling, an argument or a body its content model does not take — is
the grammar itself refuses stays a claim code, key order among it, and a leaf given a body is refused
at its opener, as a container missing its closer is (the maintainer, 2026-09-16); a well-formed
directive the node tables refuse — an attribute a node does not hold or spells elsewhere, a value
outside its kind or its canonical spelling, an argument, or a body of a shape its content model does
not take — is
`unsupported-node-shape`, the emitter's code for the same mismatch read the other way — one code
across both directions for good, since the call site knows which direction it called and parting
them after `0.1.0` is MAJOR. `unmappable-html` names the version rather than the element: this one
@@ -204,9 +215,10 @@ resolver maps them, under `NodeNext` alone; a `.d.ts` reader that is not `tsc` s
`node-floor.js` round-trips the installed package under a Node pinned to `engines.node`'s floor.
A fourth engine reads the build rather than the source: a headless Firefox loads `dist/index.js`
over HTTP and converts the round-trip, normalization and error fixtures — the `commonmark-spec`
sort is the Node suite's to check — which is §6's browser half and the only SpiderMonkey
there is — the gate's other three engines are two V8s and a JavaScriptCore that is not Safari's.
over HTTP and converts the round-trip, normalization and error fixtures and the real payloads —
the `commonmark-spec` sort is the Node suite's to check — which is §6's browser half and the only
SpiderMonkey there is — the gate's other three engines are two V8s and a JavaScriptCore that is
not Safari's.
A WebDriver session is what carries a verdict back out, the driver and the page's server sharing
one network namespace so each is the other's `127.0.0.1`; `--headless --screenshot` has no such
channel, and loading `dist/index.js` in a globals-stripped realm buys one by not running a browser.
@@ -219,9 +231,13 @@ functions, and a branch floor that only ever moves upward. It sits below 100 bec
`noUncheckedIndexedAccess` and ADF's optional keys force — `?? []`, `?? {}`, `?.`, an index
compared against `undefined` — have a half no valid document reaches.
The corpus, all checked in: hand-built fixtures per node and combination; real sanitized ADF from
live Atlassian APIs; property-generated ADF trees; the CommonMark spec suite against
`markdownToAdf` and `markdownToHtml`.
The corpus, all checked in: hand-built fixtures per node and combination; real ADF Atlassian's
editor wrote; the CommonMark spec suite against `markdownToAdf` and `markdownToHtml`.
Beside the corpus, properties run over documents generated from the node tables and over generated
markdown, on a fixed seed in the gate; `PROPERTY_RUNS=<runs>` raises the runs and randomizes the
seed for local digging, and a counterexample found becomes a round-trip fixture. The generators and
run parameters properties share live in `src/property-harness.ts`, outside the build and coverage.
`spec/flavour.md` is read as a source too, so the node tables cannot drift from the prose they
copy: each `- ` bullet in `## Block nodes`, `## Inline nodes` and `## Marks` declares the nodes
@@ -231,6 +247,12 @@ of a bullet; fenced examples are skipped. It guards the attributes alone: nodes
content model share a bullet, and the argument attribute is spelled ahead of `Attributes: `, so
both answer to the round-trip corpus and to nothing else where a node has no fixture.
The tables answer to Atlassian's schema too (§5): for every node and mark they spell, the attribute
names and kinds equal what `full.json` and `stage-0.json` hold between them. Value sets stay
documentation, since any value round-trips. What the schema holds and the tables do not spell is
pinned by name — an attribute as a gap, a type as carried — so a re-pin adding either goes red until
someone spells it or pins it.
## 11. Code rules
- Two-space indent, strict TypeScript, English everywhere. Alphabetical order wherever order
+5
View File
@@ -3,6 +3,11 @@ try {
window.convertCorpus = (corpus) => ({
errors: corpus.errors.map(({ markdown, name }) => ({ name, parsed: markdownToAdf(markdown) })),
normalization: corpus.normalization.map(({ markdown, name }) => ({ name, parsed: markdownToAdf(markdown) })),
realPayloads: corpus.realPayloads.map(({ json, name }) => {
const adf = JSON.parse(json)
const emitted = adfToMarkdown(adf)
return { emitted, isDocument: isAdfDocument(adf), name, parsed: emitted.ok ? markdownToAdf(emitted.value) : undefined }
}),
roundTrip: corpus.roundTrip.map(({ json, markdown, name }) => {
const adf = JSON.parse(json)
return { emitted: adfToMarkdown(adf), isDocument: isAdfDocument(adf), name, parsed: markdownToAdf(markdown) }
+16 -4
View File
@@ -2,6 +2,7 @@ import assert from 'node:assert/strict'
import { readFileSync, readdirSync } from 'node:fs'
import { createServer } from 'node:http'
import { extname, join } from 'node:path'
import { toEditorNormal } from '../dist/adf/editor-normal.js'
const contentTypes = { '.html': 'text/html; charset=utf-8', '.js': 'text/javascript' }
const driver = 'http://127.0.0.1:4444'
@@ -66,6 +67,7 @@ async function whenDriverAnswers() {
const corpus = {
errors: fixtureNames('errors', '.md').map((name) => ({ markdown: fixture(name, '.md'), name })),
normalization: fixtureNames('normalization', '.md').map((name) => ({ markdown: fixture(name, '.md'), name })),
realPayloads: fixtureNames('real-payloads', '.json').map((name) => ({ json: fixture(name, '.json'), name })),
roundTrip: fixtureNames('round-trip', '.json').map((name) => ({ json: fixture(name, '.json'), markdown: fixture(name, '.md'), name })),
}
assert.deepEqual(
@@ -74,7 +76,7 @@ assert.deepEqual(
.map((entry) => entry.name)
.filter((name) => name !== 'commonmark-spec')
.sort(),
['errors', 'normalization', 'round-trip'],
['errors', 'normalization', 'real-payloads', 'round-trip'],
'a corpus kind the browser leg does not convert',
)
for (const [kind, fixtures] of Object.entries(corpus)) assert.ok(fixtures.length > 0, `the browser leg found no ${kind} fixture to convert`)
@@ -105,7 +107,7 @@ for (const [index, { json, markdown, name }] of corpus.roundTrip.entries()) {
assert.ok(result.emitted.ok, `it did not emit — ${refusal(result.emitted)}`)
assert.equal(result.emitted.value, markdown)
assert.ok(result.parsed.ok, `it did not parse — ${refusal(result.parsed)}`)
assert.deepEqual(result.parsed.value, JSON.parse(json))
assert.deepEqual(toEditorNormal(result.parsed.value), JSON.parse(json))
})
}
@@ -113,7 +115,17 @@ for (const [index, { name }] of corpus.normalization.entries()) {
const result = results.normalization[index]
checking(name, result, () => {
assert.ok(result.parsed.ok, `it did not parse — ${refusal(result.parsed)}`)
assert.deepEqual(result.parsed.value, JSON.parse(fixture(name, '.json')))
assert.deepEqual(toEditorNormal(result.parsed.value), JSON.parse(fixture(name, '.json')))
})
}
for (const [index, { json, name }] of corpus.realPayloads.entries()) {
const result = results.realPayloads[index]
checking(name, result, () => {
assert.ok(result.isDocument, `${name}.json is no ADF document`)
assert.ok(result.emitted.ok, `it did not emit — ${refusal(result.emitted)}`)
assert.ok(result.parsed.ok, `it did not parse back — ${refusal(result.parsed)}`)
assert.deepEqual(toEditorNormal(result.parsed.value), JSON.parse(json))
})
}
@@ -126,5 +138,5 @@ for (const [index, { name }] of corpus.errors.entries()) {
}
console.log(
`Firefox ${session.capabilities.browserVersion} converted ${corpus.roundTrip.length} round-trip, ${corpus.normalization.length} normalization and ${corpus.errors.length} error fixtures`,
`Firefox ${session.capabilities.browserVersion} converted ${corpus.roundTrip.length} round-trip, ${corpus.normalization.length} normalization and ${corpus.errors.length} error fixtures and ${corpus.realPayloads.length} real payloads`,
)
+1 -1
View File
@@ -16,7 +16,7 @@ if printf '%s' "$test_output" | grep -q 'ℹ tests 0'; then
exit 1
fi
in_image "$deno_image" deno test --allow-read --no-check src/
in_image "$deno_image" deno test --allow-env=PROPERTY_RUNS --allow-read --no-check src/
in_image "$bun_image" bun test src/
in_image "$node_image" npm run build
+2 -2
View File
@@ -10,8 +10,8 @@ One directory per contract kind, each landing with its milestone:
markdown is not canonical.
- `errors/` — `<name>.md`: markdown input that must not convert. A `<name>.error` beside it
pins which error.
- `real-payloads/` — `<name>.json`: sanitized live ADF, round-tripped ADF→markdown→ADF. No
expected markdown.
- `real-payloads/` — `<name>.json`: ADF Atlassian's editor wrote, round-tripped ADF→markdown→ADF.
No expected markdown.
- `commonmark-spec/` — the CommonMark suite run against `markdownToAdf` by three checks. `spec.json`
is the suite; `refusals.json` pins each refusing example to its error `code`; `exceptions.json`
pins each known divergence by `check`, `example`, `kind` and the exact `divergence`, with a
+2 -2
View File
@@ -1,2 +1,2 @@
:::tableCell {colwidth="[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[1]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]"}
:::
!adf:tableCell {colwidth="[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[1]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]"}
!adf:/tableCell
+1 -1
View File
@@ -1 +1 @@
_a :adf{json="{\"type\":\"blockCard\"}"} b_
_a !adf:carry{json="{\"type\":\"blockCard\"}"} b_
+1 -1
View File
@@ -1 +1 @@
:adf{json="{"}
!adf:carry{json="{"}
+1 -1
View File
@@ -1,3 +1,3 @@
```adf
```carry
{"type":
```
+1 -1
View File
@@ -1 +1 @@
:adf{json="[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]"}
!adf:carry{json="[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]"}
+1 -1
View File
@@ -1,2 +1,2 @@
> Part.
:::
!adf:/panel
+2 -2
View File
@@ -1,3 +1,3 @@
:::codeBlock {wrap=true}
!adf:codeBlock {wrap=true}
fn main() {}
:::
!adf:/codeBlock
+2 -2
View File
@@ -1,5 +1,5 @@
:::codeBlock {language=rust wrap=true}
!adf:codeBlock {language=rust wrap=true}
```
fn main() {}
```
:::
!adf:/codeBlock
-1
View File
@@ -1 +0,0 @@
:::
-3
View File
@@ -1,3 +0,0 @@
:::adf
{"type":"rule"}
:::
+1 -1
View File
@@ -1 +1 @@
::media {type=file id=a-1}
!adf:media {type=file id=a-1}
+2 -2
View File
@@ -1,3 +1,3 @@
:::panel info {bogus=1}
!adf:panel info {bogus=1}
Part.
:::
!adf:/panel
+1 -1
View File
@@ -1 +1 @@
unsupported-node-shape
malformed-directive
+2 -2
View File
@@ -1,3 +1,3 @@
:::rule
!adf:media {id=01a0aa6b-4221-7518-a640-2b97d6217ce2 type=file}
Part.
:::
!adf:/media
@@ -0,0 +1,3 @@
!adf:carry
{"type":"rule"}
!adf:/carry
@@ -0,0 +1,4 @@
!adf:panel info
!adf:expand
Part.
!adf:/panel
@@ -0,0 +1,2 @@
!adf:panel info
Part.
+1 -1
View File
@@ -1 +1 @@
Part :mention[**@Mikael**]{id=b1c2}.
Part !adf:mention[**@Mikael**]{id=b1c2}.
@@ -1,2 +0,0 @@
:::panel info
Part.
+1 -1
View File
@@ -1 +1 @@
::rule
!adf:rule
+1 -1
View File
@@ -1 +1 @@
Part :mention[@A and more.
Part !adf:mention[@A and more.
+1 -1
View File
@@ -1 +1 @@
Part :em[emphasised] here.
Part !adf:em[emphasised] here.
+2 -2
View File
@@ -1,3 +1,3 @@
:::widget info
!adf:widget info
Part.
:::
!adf:/widget
@@ -0,0 +1 @@
malformed-directive
+1
View File
@@ -0,0 +1 @@
Part !adf: here.
@@ -0,0 +1 @@
unsupported-node-shape
@@ -0,0 +1 @@
!adf:status[!adf:carry{json="{\"attrs\":{\"localId\":\"x\"},\"text\":\"ok\",\"type\":\"text\"}"}]{color=red}
+1 -1
View File
@@ -1 +1 @@
Part :text{text=plain} here.
Part !adf:text{text=plain} here.
+1 -1
View File
@@ -1 +1 @@
::rule {localId="a-1"}
!adf:rule {localId="a-1"}
+1
View File
@@ -0,0 +1 @@
malformed-directive
+7
View File
@@ -0,0 +1,7 @@
- Bolt M8
!adf:listBreak
Packed.
!adf:/listBreak
- Nut M8
+1 -1
View File
@@ -1,5 +1,5 @@
- Bolt M8
::listBreak
!adf:listBreak
Packed.
File diff suppressed because one or more lines are too long
+173
View File
@@ -0,0 +1,173 @@
{
"content": [
{
"attrs": {
"level": 2,
"localId": "0d42e7ff24ba"
},
"content": [
{
"text": "Code blocks",
"type": "text"
}
],
"type": "heading"
},
{
"attrs": {
"localId": "a971506228e7"
},
"content": [
{
"text": "Run the setup once, then start the server with ",
"type": "text"
},
{
"marks": [
{
"type": "code"
}
],
"text": "npm start",
"type": "text"
},
{
"text": " and open the page.",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"language": "javascript",
"localId": "eaf42046-6454-451d-ab13-8bd5ed2333bb",
"wrap": true
},
"content": [
{
"text": "function greet(name) {\n return `Hello, ${name}!`\n}",
"type": "text"
}
],
"type": "codeBlock"
},
{
"attrs": {
"localId": "d69616dee641"
},
"content": [
{
"text": "The same idea in Python:",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"language": "python",
"localId": "2094b559-280a-49d5-9be3-182572e5d2d8",
"wrap": true
},
"content": [
{
"text": "def total(prices):\n return sum(prices)\n\nprint(total([3, 4.5]))",
"type": "text"
}
],
"type": "codeBlock"
},
{
"attrs": {
"localId": "abe1971d1f18"
},
"content": [
{
"text": "A query that lists visitors by city:",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"language": "sql",
"localId": "5551dc8e-8fe0-455e-a9cf-22e48b589fe8",
"wrap": true
},
"content": [
{
"text": "SELECT name, city\nFROM visitors\nWHERE city = 'Lund'\nORDER BY name;",
"type": "text"
}
],
"type": "codeBlock"
},
{
"attrs": {
"localId": "51efdd2f1f02"
},
"content": [
{
"text": "Plain output, no language chosen:",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"localId": "d0f83c92-c252-4a70-9e31-dfb5ac255cd1",
"wrap": true
},
"content": [
{
"text": "$ ./setup\nChecking folders... done\n 3 files copied",
"type": "text"
}
],
"type": "codeBlock"
},
{
"attrs": {
"localId": "3dac57e146fa"
},
"content": [
{
"text": "Keep ",
"type": "text"
},
{
"marks": [
{
"type": "code"
}
],
"text": ".env",
"type": "text"
},
{
"text": " files out of version control, and never paste a ",
"type": "text"
},
{
"marks": [
{
"type": "code"
}
],
"text": "password",
"type": "text"
},
{
"text": " into a ticket.",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "doc",
"version": 1
}
+254
View File
@@ -0,0 +1,254 @@
{
"content": [
{
"attrs": {
"level": 2,
"localId": "0fcbc98aec1f"
},
"content": [
{
"text": "Where things stand",
"type": "text"
}
],
"type": "heading"
},
{
"attrs": {
"localId": "32b6266eb05c"
},
"content": [
{
"text": "Office move ",
"type": "text"
},
{
"attrs": {
"color": "blue",
"localId": "1ab19511-a0fa-41a1-b6d0-6729813c0526",
"style": "mixedCase",
"text": "In progress"
},
"type": "status"
},
{
"text": " since ",
"type": "text"
},
{
"attrs": {
"localId": "493624162706",
"timestamp": "1790812800000"
},
"type": "date"
},
{
"text": " , owned by ",
"type": "text"
},
{
"attrs": {
"accessLevel": "",
"id": "712020:78bf5058-bc76-4783-99af-6d70cb593cee",
"localId": "604060e1-e533-4019-aa28-21952dfdea19",
"text": "@Larvit Developer"
},
"type": "mention"
},
{
"text": " .",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"localId": "73a94328c89f"
},
"content": [
{
"text": "Furniture ",
"type": "text"
},
{
"attrs": {
"color": "green",
"localId": "7b27ff33-1483-452b-8982-311cf9429023",
"style": "mixedCase",
"text": "Done"
},
"type": "status"
},
{
"text": " , cabling ",
"type": "text"
},
{
"attrs": {
"color": "red",
"localId": "b6eb05a9-e0e7-4269-9cbd-e912640364a6",
"style": "mixedCase",
"text": "Blocked"
},
"type": "status"
},
{
"text": " , signage ",
"type": "text"
},
{
"attrs": {
"color": "yellow",
"localId": "ff7ed7fb-1846-48cb-b5ea-8be6b598ccc6",
"style": "mixedCase",
"text": "Waiting"
},
"type": "status"
},
{
"text": " , parking ",
"type": "text"
},
{
"attrs": {
"color": "purple",
"localId": "e9218ff4-6fcb-4e43-b36a-b1bef8a19376",
"style": "mixedCase",
"text": "Maybe"
},
"type": "status"
},
{
"text": " and keys ",
"type": "text"
},
{
"attrs": {
"color": "neutral",
"localId": "f1455340-2469-4bc6-a371-ed6b1f54386c",
"style": "mixedCase",
"text": "Not started"
},
"type": "status"
},
{
"text": " ",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"localId": "8d9e2dc70265"
},
"content": [
{
"attrs": {
"accessLevel": "",
"id": "712020:78bf5058-bc76-4783-99af-6d70cb593cee",
"localId": "ab5b7997-43ce-4238-b540-db3864e0965c",
"text": "@Larvit Developer"
},
"type": "mention"
},
{
"text": " please confirm the handover on ",
"type": "text"
},
{
"attrs": {
"localId": "77e2bdefa7fd",
"timestamp": "1795132800000"
},
"type": "date"
},
{
"text": " before lunch.",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"localId": "f7fb8a7527a3"
},
"content": [
{
"text": "Great work so far ",
"type": "text"
},
{
"attrs": {
"id": "1f44d",
"localId": "8fe9a02e94ce",
"shortName": ":thumbsup:",
"text": "👍"
},
"type": "emoji"
},
{
"text": " and thanks for the snacks ",
"type": "text"
},
{
"attrs": {
"id": "1f389",
"localId": "c19496cc742f",
"shortName": ":tada:",
"text": "🎉"
},
"type": "emoji"
},
{
"text": " ",
"type": "text"
},
{
"attrs": {
"id": "1f600",
"localId": "c05a6757d0ee",
"shortName": ":grinning:",
"text": "😀"
},
"type": "emoji"
},
{
"text": " ",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"localId": "b75918031ebd"
},
"content": [
{
"text": "Deliveries go to:",
"type": "text"
},
{
"type": "hardBreak"
},
{
"text": "Building C, third floor",
"type": "text"
},
{
"type": "hardBreak"
},
{
"text": "Ring the bell twice",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "doc",
"version": 1
}
+527
View File
@@ -0,0 +1,527 @@
{
"content": [
{
"attrs": {
"level": 1,
"localId": "cfdcc54363d9"
},
"content": [
{
"text": "Project handbook",
"type": "text"
}
],
"type": "heading"
},
{
"attrs": {
"localId": "91177a27b0ff"
},
"content": [
{
"text": "Welcome to the handbook for the spring project.",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"level": 2,
"localId": "7e7d9113a89b"
},
"content": [
{
"text": "Getting started",
"type": "text"
}
],
"type": "heading"
},
{
"attrs": {
"localId": "e65711ca96b6"
},
"content": [
{
"text": "Pack the following before the first day:",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"localId": "b5c36c57fe79"
},
"content": [
{
"attrs": {
"localId": "1f4aa02de452"
},
"content": [
{
"attrs": {
"localId": "8993e22a13aa"
},
"content": [
{
"text": "Laptop",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"localId": "2b335a4504ab"
},
"content": [
{
"attrs": {
"localId": "c9180347caf0"
},
"content": [
{
"attrs": {
"localId": "60990e48da32"
},
"content": [
{
"text": "Charger",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "listItem"
},
{
"attrs": {
"localId": "fc5d4c8a875d"
},
"content": [
{
"attrs": {
"localId": "3b8ec5318463"
},
"content": [
{
"text": "Mouse",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "listItem"
}
],
"type": "bulletList"
}
],
"type": "listItem"
},
{
"attrs": {
"localId": "90f5f37a8a8f"
},
"content": [
{
"attrs": {
"localId": "90fab5a310c5"
},
"content": [
{
"text": "Notebook",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"localId": "46840b8bd24b",
"order": 1
},
"content": [
{
"attrs": {
"localId": "b4f06fbd15ef"
},
"content": [
{
"attrs": {
"localId": "93db4583bdba"
},
"content": [
{
"text": "Lined for notes",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "listItem"
},
{
"attrs": {
"localId": "6904c80dd06d"
},
"content": [
{
"attrs": {
"localId": "0bc1c819d38d"
},
"content": [
{
"text": "Squared for sketches",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "listItem"
}
],
"type": "orderedList"
}
],
"type": "listItem"
},
{
"attrs": {
"localId": "65bd0afce26e"
},
"content": [
{
"attrs": {
"localId": "a753e5ecdad3"
},
"content": [
{
"text": "Water bottle",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "listItem"
}
],
"type": "bulletList"
},
{
"attrs": {
"level": 3,
"localId": "5b6a671499c5"
},
"content": [
{
"text": "Unpacking",
"type": "text"
}
],
"type": "heading"
},
{
"attrs": {
"localId": "f460abd3a962"
},
"content": [
{
"text": "The first two steps happen at reception, so ours start at three:",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"localId": "baf0046a0432",
"order": 3
},
"content": [
{
"attrs": {
"localId": "b4df865a31a9"
},
"content": [
{
"attrs": {
"localId": "3f1b32f952d0"
},
"content": [
{
"text": "Unpack the boxes",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "listItem"
},
{
"attrs": {
"localId": "f64930d87d4e"
},
"content": [
{
"attrs": {
"localId": "d953389c865a"
},
"content": [
{
"text": "Label the shelves",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "listItem"
},
{
"attrs": {
"localId": "840daad9cb43"
},
"content": [
{
"attrs": {
"localId": "8708b8c7aeec"
},
"content": [
{
"text": "Recycle the cardboard",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "listItem"
}
],
"type": "orderedList"
},
{
"attrs": {
"level": 4,
"localId": "27d1d408ae3e"
},
"content": [
{
"text": "Shelf labels",
"type": "text"
}
],
"type": "heading"
},
{
"attrs": {
"localId": "8b5cf239dbb5",
"order": 1
},
"content": [
{
"attrs": {
"localId": "0948562abdc3"
},
"content": [
{
"attrs": {
"localId": "4da9d4f45923"
},
"content": [
{
"text": "Top shelf",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"localId": "36edf97d8e2c"
},
"content": [
{
"attrs": {
"localId": "7915e252429c"
},
"content": [
{
"attrs": {
"localId": "9b15cc9fa8a1"
},
"content": [
{
"text": "Binders",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "listItem"
},
{
"attrs": {
"localId": "efe607ab9e41"
},
"content": [
{
"attrs": {
"localId": "d559a2f29321"
},
"content": [
{
"text": "Archive boxes",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "listItem"
}
],
"type": "bulletList"
}
],
"type": "listItem"
},
{
"attrs": {
"localId": "229692097876"
},
"content": [
{
"attrs": {
"localId": "928b1862c273"
},
"content": [
{
"text": "Bottom shelf",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "listItem"
}
],
"type": "orderedList"
},
{
"attrs": {
"level": 5,
"localId": "353a84ef9126"
},
"content": [
{
"text": "Quiet hours",
"type": "text"
}
],
"type": "heading"
},
{
"attrs": {
"localId": "9c11b949ed48"
},
"content": [
{
"attrs": {
"localId": "bd576489e8b6"
},
"content": [
{
"text": "Good tools make good work, and quiet rooms make good thinking.",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"localId": "727fda576a9d"
},
"content": [
{
"text": "Please keep calls in the booths.",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "blockquote"
},
{
"attrs": {
"level": 6,
"localId": "b12277440bc7"
},
"content": [
{
"text": "Small print",
"type": "text"
}
],
"type": "heading"
},
{
"attrs": {
"localId": "9f6fbb5a19af"
},
"type": "rule"
},
{
"attrs": {
"localId": "8a6e253c110e"
},
"content": [
{
"text": "Office hours:",
"type": "text"
},
{
"type": "hardBreak"
},
{
"text": "Monday to Thursday, eight to five",
"type": "text"
},
{
"type": "hardBreak"
},
{
"text": "Friday, eight to three",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"localId": "b9c3f5daa373"
},
"content": [
{
"text": "That is all for now.",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "doc",
"version": 1
}
+106
View File
@@ -0,0 +1,106 @@
{
"content": [
{
"attrs": {
"level": 2,
"localId": "d5c3a2503683"
},
"content": [
{
"text": "Media and attachments",
"type": "text"
}
],
"type": "heading"
},
{
"attrs": {
"localId": "f71287760586"
},
"content": [
{
"text": "A photo of the meadow behind the office:",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"layout": "align-start",
"localId": "95de25bcdecc",
"width": 320,
"widthType": "pixel"
},
"content": [
{
"attrs": {
"alt": "Green meadow under a yellow sun",
"collection": "",
"height": 180,
"id": "8c586460-fb0d-44f6-949f-d800d5dd0f45",
"localId": "630d0d0457b8",
"type": "file",
"width": 320
},
"marks": [
{
"attrs": {
"color": "#091e4224",
"size": 2
},
"type": "border"
}
],
"type": "media"
}
],
"type": "mediaSingle"
},
{
"attrs": {
"localId": "b4bfee3ad3ec"
},
"type": "paragraph"
},
{
"attrs": {
"localId": "ffe5710ea995"
},
"content": [
{
"text": "The packing list is attached as a file:",
"type": "text"
}
],
"type": "paragraph"
},
{
"content": [
{
"attrs": {
"collection": "",
"id": "8dfd7046-2382-4377-b3ba-ec31e34cd01a",
"type": "file"
},
"type": "media"
}
],
"type": "mediaGroup"
},
{
"attrs": {
"localId": "77fcb609f709"
},
"content": [
{
"text": "Both were uploaded from the editor.",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "doc",
"version": 1
}
@@ -0,0 +1,292 @@
{
"content": [
{
"attrs": {
"level": 2,
"localId": "d483ec27f809"
},
"content": [
{
"text": "Panels",
"type": "text"
}
],
"type": "heading"
},
{
"attrs": {
"localId": "cb02f8e9812b"
},
"content": [
{
"text": "Each colour of panel below holds a short note for the visiting team.",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"localId": "b6d76c21e77e",
"panelType": "info"
},
"content": [
{
"attrs": {
"localId": "2d871d80f6e1"
},
"content": [
{
"text": "The workshop starts at nine in the morning.",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "panel"
},
{
"attrs": {
"localId": "cbaab515445c",
"panelType": "note"
},
"content": [
{
"attrs": {
"localId": "13cafc26c42d"
},
"content": [
{
"text": "Bring your own laptop charger.",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "panel"
},
{
"attrs": {
"localId": "c5fa8b34e2aa",
"panelType": "success"
},
"content": [
{
"attrs": {
"localId": "e186fca354d9"
},
"content": [
{
"text": "All rooms are booked for the week.",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "panel"
},
{
"attrs": {
"localId": "ee223a0f886e",
"panelType": "warning"
},
"content": [
{
"attrs": {
"localId": "e0006fb2b972"
},
"content": [
{
"text": "The east entrance closes early on Fridays.",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"localId": "ea6a56b9c863"
},
"content": [
{
"text": "Use the main door after four.",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "panel"
},
{
"attrs": {
"localId": "fedbadc6d1c7",
"panelType": "error"
},
"content": [
{
"attrs": {
"localId": "c0f6122d81b7"
},
"content": [
{
"text": "The projector in room two is out of order.",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "panel"
},
{
"attrs": {
"level": 2,
"localId": "afe638de11c5"
},
"content": [
{
"text": "Expands",
"type": "text"
}
],
"type": "heading"
},
{
"attrs": {
"localId": "e635bf2eac43",
"title": "Agenda for the first day"
},
"content": [
{
"attrs": {
"localId": "c8beb4c392ee"
},
"content": [
{
"attrs": {
"localId": "6d6ff472d878"
},
"content": [
{
"attrs": {
"localId": "d1186101c5a1"
},
"content": [
{
"text": "Welcome and introductions",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "listItem"
},
{
"attrs": {
"localId": "01d203b97343"
},
"content": [
{
"attrs": {
"localId": "61bfec91218d"
},
"content": [
{
"text": "Tour of the building",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "listItem"
},
{
"attrs": {
"localId": "004e47604c2a"
},
"content": [
{
"attrs": {
"localId": "726aa40e1e38"
},
"content": [
{
"text": "Lunch in the courtyard",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "listItem"
}
],
"type": "bulletList"
}
],
"type": "expand"
},
{
"attrs": {
"localId": "cb6e48b9d746"
},
"content": [
{
"text": "Questions go to the organisers before the event.",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"localId": "32a8832682b2",
"title": "Travel details"
},
"content": [
{
"attrs": {
"localId": "00b05814cccb"
},
"content": [
{
"text": "Trains leave the central station every twenty minutes.",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"localId": "eec0df0ed4f1",
"panelType": "note"
},
"content": [
{
"attrs": {
"localId": "712c49fa7ecc"
},
"content": [
{
"text": "Tickets are cheaper before seven.",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "panel"
}
],
"type": "expand"
}
],
"type": "doc",
"version": 1
}
@@ -0,0 +1,630 @@
{
"content": [
{
"attrs": {
"localId": "3b911072ce78"
},
"content": [
{
"text": "Summary of the planning session on Thursday. Attendees: ",
"type": "text"
},
{
"attrs": {
"accessLevel": "",
"id": "712020:78bf5058-bc76-4783-99af-6d70cb593cee",
"localId": "c8b64b9f-d396-4525-9456-38cf690ade1e",
"text": "@Larvit Developer"
},
"type": "mention"
},
{
"text": " and two guests from the design team.",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"level": 2,
"localId": "3e97ef36cbc3"
},
"content": [
{
"text": "Where we are",
"type": "text"
}
],
"type": "heading"
},
{
"attrs": {
"localId": "530e0e3aa621"
},
"content": [
{
"text": "The beta is ",
"type": "text"
},
{
"attrs": {
"color": "green",
"localId": "ac0975eb-fafe-44ad-8293-8a12fdbcaebc",
"style": "mixedCase",
"text": "On track"
},
"type": "status"
},
{
"text": " and the public launch is set for ",
"type": "text"
},
{
"attrs": {
"localId": "84d9a1cde860",
"timestamp": "1793664000000"
},
"type": "date"
},
{
"text": " .",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"localId": "ffcd53578640",
"panelType": "warning"
},
"content": [
{
"attrs": {
"localId": "0f0e8b9e13bb"
},
"content": [
{
"text": "Translation files are still ",
"type": "text"
},
{
"marks": [
{
"type": "strong"
}
],
"text": "missing",
"type": "text"
},
{
"text": " for two languages.",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "panel"
},
{
"attrs": {
"level": 2,
"localId": "d9b590d479ad"
},
"content": [
{
"text": "Decisions",
"type": "text"
}
],
"type": "heading"
},
{
"attrs": {
"localId": "69dc2d52-34f7-43bb-8d6c-36d52a47179e"
},
"content": [
{
"attrs": {
"localId": "852a35a7-f660-4161-85dd-2d54adaf662b",
"state": "DECIDED"
},
"content": [
{
"text": "Ship the beta to internal users first",
"type": "text"
}
],
"type": "decisionItem"
},
{
"attrs": {
"localId": "2df16457-331f-4d26-90ba-539f82949d70",
"state": "DECIDED"
},
"content": [
{
"text": "Keep the old export for one more release",
"type": "text"
}
],
"type": "decisionItem"
}
],
"type": "decisionList"
},
{
"attrs": {
"level": 2,
"localId": "7813370b5e89"
},
"content": [
{
"text": "Next steps",
"type": "text"
}
],
"type": "heading"
},
{
"attrs": {
"localId": "21a7a33c-199d-4396-a148-c8404f70554f"
},
"content": [
{
"attrs": {
"localId": "5343dfdb-e70d-4ce6-bca5-8a382123c7bd",
"state": "TODO"
},
"content": [
{
"text": "Draft the release notes",
"type": "text"
}
],
"type": "taskItem"
},
{
"attrs": {
"localId": "67d65eb8-17e9-4cd6-93cb-7d495f84e01d",
"state": "TODO"
},
"content": [
{
"text": "Book the demo room",
"type": "text"
}
],
"type": "taskItem"
}
],
"type": "taskList"
},
{
"attrs": {
"level": 2,
"localId": "e5806b037d61"
},
"content": [
{
"text": "Numbers",
"type": "text"
}
],
"type": "heading"
},
{
"attrs": {
"isNumberColumnEnabled": false,
"layout": "align-start",
"localId": "cbae6bea-3c35-42b9-9a8f-3b37749e1a87"
},
"content": [
{
"attrs": {
"localId": "e4d343447bf5"
},
"content": [
{
"attrs": {
"localId": "4fcec7ad0a0f"
},
"content": [
{
"attrs": {
"localId": "974849d6e63c"
},
"content": [
{
"marks": [
{
"type": "strong"
}
],
"text": "Metric",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "tableHeader"
},
{
"attrs": {
"localId": "42df5203769e"
},
"content": [
{
"attrs": {
"localId": "8b0da0854a0a"
},
"content": [
{
"marks": [
{
"type": "strong"
}
],
"text": "Beta",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "tableHeader"
},
{
"attrs": {
"localId": "cbdae6c8508d"
},
"content": [
{
"attrs": {
"localId": "2584f222d6c3"
},
"content": [
{
"marks": [
{
"type": "strong"
}
],
"text": "Goal",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "tableHeader"
}
],
"type": "tableRow"
},
{
"attrs": {
"localId": "65e4d7a700c0"
},
"content": [
{
"attrs": {
"localId": "a37175350eea"
},
"content": [
{
"attrs": {
"localId": "7efe32972497"
},
"content": [
{
"text": "Sign-ups",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "tableCell"
},
{
"attrs": {
"localId": "e0a95cdbd3c5"
},
"content": [
{
"attrs": {
"localId": "4628a3afe71b"
},
"content": [
{
"text": "140",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "tableCell"
},
{
"attrs": {
"localId": "b802fc652961"
},
"content": [
{
"attrs": {
"localId": "94c6ec93acb2"
},
"content": [
{
"text": "200",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "tableCell"
}
],
"type": "tableRow"
},
{
"attrs": {
"localId": "bd6465cc546d"
},
"content": [
{
"attrs": {
"localId": "b6dcef3c6ac5"
},
"content": [
{
"attrs": {
"localId": "ba5c99353d30"
},
"content": [
{
"text": "Crash reports",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "tableCell"
},
{
"attrs": {
"localId": "554b7b5a8e71"
},
"content": [
{
"attrs": {
"localId": "569a134488bc"
},
"content": [
{
"text": "3",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "tableCell"
},
{
"attrs": {
"localId": "fb03db2017b1"
},
"content": [
{
"attrs": {
"localId": "c0ce0ada482c"
},
"content": [
{
"text": "0",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "tableCell"
}
],
"type": "tableRow"
}
],
"type": "table"
},
{
"attrs": {
"localId": "b4eb1362eb9f"
},
"content": [
{
"text": "The flag that turns the beta on:",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"language": "yaml",
"localId": "14298a36-6632-458f-a548-7fccd4b7186b",
"wrap": true
},
"content": [
{
"text": "beta:\n enabled: true\n audience: internal",
"type": "text"
}
],
"type": "codeBlock"
},
{
"attrs": {
"localId": "a98274e22eaa"
},
"content": [
{
"text": "Risks we talked about:",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"localId": "fb3e387688ff"
},
"content": [
{
"attrs": {
"localId": "fdeee4ce0678"
},
"content": [
{
"attrs": {
"localId": "5ff2e05f1c7e"
},
"content": [
{
"text": "Late translations",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "listItem"
},
{
"attrs": {
"localId": "043a7ded718e"
},
"content": [
{
"attrs": {
"localId": "73a4d8e4ef0d"
},
"content": [
{
"text": "The holiday week",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"localId": "3e32c1b868a1"
},
"content": [
{
"attrs": {
"localId": "98969cd5548e"
},
"content": [
{
"attrs": {
"localId": "3b9989413325"
},
"content": [
{
"text": "Half the team is away",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "listItem"
}
],
"type": "bulletList"
}
],
"type": "listItem"
}
],
"type": "bulletList"
},
{
"attrs": {
"localId": "ba7d8422f4c6"
},
"content": [
{
"attrs": {
"localId": "a6837cfad3f5"
},
"content": [
{
"text": "Small steps, shipped often.",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "blockquote"
},
{
"attrs": {
"localId": "6ec9ef8df224"
},
"content": [
{
"text": "Thanks, everyone ",
"type": "text"
},
{
"attrs": {
"id": "1f389",
"localId": "2481c60576e0",
"shortName": ":tada:",
"text": "🎉"
},
"type": "emoji"
},
{
"text": " ",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"localId": "782129bf30c1",
"title": "Raw notes"
},
"content": [
{
"attrs": {
"localId": "e9614e389875"
},
"content": [
{
"text": "We spent twenty minutes on the colour of the launch banner.",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "expand"
}
],
"type": "doc",
"version": 1
}
+118
View File
@@ -0,0 +1,118 @@
{
"content": [
{
"attrs": {
"localId": "3e9517d02129"
},
"content": [
{
"text": "Looks good to me. Two small things:",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"localId": "5738867bf15d",
"order": 1
},
"content": [
{
"attrs": {
"localId": "ccd8d283e36d"
},
"content": [
{
"attrs": {
"localId": "638111edfab4"
},
"content": [
{
"text": "Rename ",
"type": "text"
},
{
"marks": [
{
"type": "code"
}
],
"text": "beta.enabled",
"type": "text"
},
{
"text": " before the launch",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "listItem"
},
{
"attrs": {
"localId": "0adfb25bb321"
},
"content": [
{
"attrs": {
"localId": "980750fad0fe"
},
"content": [
{
"text": "Move the demo to the ",
"type": "text"
},
{
"marks": [
{
"type": "em"
}
],
"text": "large",
"type": "text"
},
{
"text": " room",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "listItem"
}
],
"type": "orderedList"
},
{
"attrs": {
"localId": "40e080c7acd4"
},
"content": [
{
"text": "Thanks ",
"type": "text"
},
{
"attrs": {
"accessLevel": "",
"id": "712020:78bf5058-bc76-4783-99af-6d70cb593cee",
"localId": "c4e073cd-8b3a-48b2-93a0-ade57b4ec2cf",
"text": "@Larvit Developer"
},
"type": "mention"
},
{
"text": " !",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "doc",
"version": 1
}
+124
View File
@@ -0,0 +1,124 @@
{
"content": [
{
"attrs": {
"level": 2,
"localId": "e632994a13ae"
},
"content": [
{
"text": "Smart links",
"type": "text"
}
],
"type": "heading"
},
{
"attrs": {
"localId": "dcfa975dde87"
},
"content": [
{
"text": "An inline card sits in a sentence, like ",
"type": "text"
},
{
"attrs": {
"localId": "042b9a548674",
"url": "https://en.wikipedia.org/wiki/Markdown"
},
"type": "inlineCard"
},
{
"text": " which keeps the text flowing.",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"localId": "c138d931a131"
},
"content": [
{
"text": "A block card stands on its own line:",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"localId": "9e527ae5f2bd"
},
"type": "paragraph"
},
{
"attrs": {
"localId": "88bd10974ec6",
"url": "https://spec.commonmark.org/"
},
"type": "blockCard"
},
{
"attrs": {
"localId": "9879bb1368ea"
},
"content": [
{
"text": " An embed shows the page itself, where the site allows it:",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"localId": "ccbed18139bb"
},
"type": "paragraph"
},
{
"attrs": {
"layout": "wide",
"localId": "8320cf243168",
"originalHeight": 480,
"originalWidth": 853.344,
"url": "https://www.youtube.com/watch?v=jNQXAC9IVRw",
"width": 100
},
"type": "embedCard"
},
{
"attrs": {
"localId": "22f60b236c1c"
},
"content": [
{
"text": " And a plain address stays a link: ",
"type": "text"
},
{
"marks": [
{
"attrs": {
"href": "https://www.markdownguide.org/"
},
"type": "link"
}
],
"text": "https://www.markdownguide.org/",
"type": "text"
},
{
"text": " for reference.",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "doc",
"version": 1
}
+124
View File
@@ -0,0 +1,124 @@
{
"content": [
{
"attrs": {
"level": 2,
"localId": "3265660b5792"
},
"content": [
{
"text": "Shared checklist",
"type": "text"
}
],
"type": "heading"
},
{
"attrs": {
"localId": "c7d94ae59a47"
},
"content": [
{
"text": "The block below is synced, so an edit shows up wherever it is used.",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"localId": "72651b28-757c-44a1-be0b-586c3e6df546",
"resourceId": "03a667ab-4c6b-402d-adae-0c55582e32eb"
},
"content": [
{
"attrs": {
"localId": "0eb44ec3924b"
},
"content": [
{
"text": "Before every release:",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"localId": "4beeefa0c6fa"
},
"content": [
{
"attrs": {
"localId": "07d19212447f"
},
"content": [
{
"attrs": {
"localId": "2fd9fc0e5d71"
},
"content": [
{
"text": "Run the tests",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "listItem"
},
{
"attrs": {
"localId": "7f5f50f7642c"
},
"content": [
{
"attrs": {
"localId": "14d3435ce5f4"
},
"content": [
{
"text": "Update the changelog",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "listItem"
}
],
"type": "bulletList"
},
{
"attrs": {
"localId": "e405ebea5e00"
},
"content": [
{
"text": "Ask for a second pair of eyes.",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "bodiedSyncBlock"
},
{
"attrs": {
"localId": "73b5f0a1ef05"
},
"content": [
{
"text": "Anything specific to this release goes below the synced block.",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "doc",
"version": 1
}
+620
View File
@@ -0,0 +1,620 @@
{
"content": [
{
"attrs": {
"level": 2,
"localId": "a0c750451c14"
},
"content": [
{
"text": "A simple table",
"type": "text"
}
],
"type": "heading"
},
{
"attrs": {
"localId": "944306a6da33"
},
"content": [
{
"text": "Rooms for the week:",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"isNumberColumnEnabled": false,
"layout": "align-start",
"localId": "92b28760-e51b-436d-82f0-45c6b6bf5b60"
},
"content": [
{
"attrs": {
"localId": "d53d5ad740cb"
},
"content": [
{
"attrs": {
"localId": "a8c82e01543e"
},
"content": [
{
"attrs": {
"localId": "00c1bde1a44d"
},
"content": [
{
"marks": [
{
"type": "strong"
}
],
"text": "Room",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "tableHeader"
},
{
"attrs": {
"localId": "c736c185bcd0"
},
"content": [
{
"attrs": {
"localId": "3dc846d8aaf9"
},
"content": [
{
"marks": [
{
"type": "strong"
}
],
"text": "Capacity",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "tableHeader"
},
{
"attrs": {
"localId": "b484834a890d"
},
"content": [
{
"attrs": {
"localId": "5b0671aadeed"
},
"content": [
{
"marks": [
{
"type": "strong"
}
],
"text": "Notes",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "tableHeader"
}
],
"type": "tableRow"
},
{
"attrs": {
"localId": "45395ea36f04"
},
"content": [
{
"attrs": {
"localId": "8b19b08b6a93"
},
"content": [
{
"attrs": {
"localId": "363cf87d44be"
},
"content": [
{
"text": "North",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "tableCell"
},
{
"attrs": {
"localId": "e189034484f3"
},
"content": [
{
"attrs": {
"localId": "42a5bad514ea"
},
"content": [
{
"text": "12",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "tableCell"
},
{
"attrs": {
"localId": "9cfc78f9a553"
},
"content": [
{
"attrs": {
"localId": "2ae747c00211"
},
"content": [
{
"text": "Projector",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "tableCell"
}
],
"type": "tableRow"
},
{
"attrs": {
"localId": "8bc7abba3229"
},
"content": [
{
"attrs": {
"localId": "0e7980a31697"
},
"content": [
{
"attrs": {
"localId": "a001411b475e"
},
"content": [
{
"text": "South",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "tableCell"
},
{
"attrs": {
"localId": "e61493f2b3d9"
},
"content": [
{
"attrs": {
"localId": "79c522faf7e8"
},
"content": [
{
"text": "8",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "tableCell"
},
{
"attrs": {
"localId": "db911772081a"
},
"content": [
{
"attrs": {
"localId": "6721e0a4f29f"
},
"content": [
{
"text": "Quiet corner",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "tableCell"
}
],
"type": "tableRow"
}
],
"type": "table"
},
{
"attrs": {
"level": 2,
"localId": "c21221cbaeda"
},
"content": [
{
"text": "A richer table",
"type": "text"
}
],
"type": "heading"
},
{
"attrs": {
"localId": "b9cdc4e693ca"
},
"content": [
{
"text": "Budget by season, with merged, coloured and resized cells:",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"isNumberColumnEnabled": false,
"layout": "align-start",
"localId": "ac1b1f4b-3d7a-4cd2-a0a7-05ece633ba69"
},
"content": [
{
"attrs": {
"localId": "c411338ed251"
},
"content": [
{
"attrs": {
"background": "#b3d4ff",
"colwidth": [
135
],
"localId": "798f1dea331f"
},
"content": [
{
"attrs": {
"localId": "b605b3c1f598"
},
"content": [
{
"marks": [
{
"type": "strong"
}
],
"text": "Item",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "tableHeader"
},
{
"attrs": {
"colwidth": [
233
],
"localId": "db4768c076d4"
},
"content": [
{
"attrs": {
"localId": "b4890b2d833e"
},
"content": [
{
"marks": [
{
"type": "strong"
}
],
"text": "Spring",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "tableHeader"
},
{
"attrs": {
"colwidth": [
184
],
"localId": "4dde2fbfb921"
},
"content": [
{
"attrs": {
"localId": "7986b41ed947"
},
"content": [
{
"marks": [
{
"type": "strong"
}
],
"text": "Autumn",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "tableHeader"
}
],
"type": "tableRow"
},
{
"attrs": {
"localId": "b4ac97bec992"
},
"content": [
{
"attrs": {
"colwidth": [
135
],
"localId": "ba92b57558d8"
},
"content": [
{
"attrs": {
"localId": "f23f030e9233"
},
"content": [
{
"text": "Venue",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "tableHeader"
},
{
"attrs": {
"background": "#abf5d1",
"colspan": 2,
"colwidth": [
233,
184
],
"localId": "51af31d44baa"
},
"content": [
{
"attrs": {
"localId": "ba55f45dc035"
},
"content": [
{
"text": "Booked for both",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "tableCell"
}
],
"type": "tableRow"
},
{
"attrs": {
"localId": "e911af70b656"
},
"content": [
{
"attrs": {
"colwidth": [
135
],
"localId": "50a820456456"
},
"content": [
{
"attrs": {
"localId": "b04d0749aee7"
},
"content": [
{
"text": "Catering",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "tableHeader"
},
{
"attrs": {
"colwidth": [
233
],
"localId": "d0cc276de239"
},
"content": [
{
"attrs": {
"localId": "90211ae7a504"
},
"content": [
{
"text": "400",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "tableCell"
},
{
"attrs": {
"colwidth": [
184
],
"localId": "1962d05e8763"
},
"content": [
{
"attrs": {
"localId": "221cf059e38d"
},
"content": [
{
"text": "450",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "tableCell"
}
],
"type": "tableRow"
},
{
"attrs": {
"localId": "2c8a06942ac4"
},
"content": [
{
"attrs": {
"colwidth": [
135
],
"localId": "ba4e1cb93e92"
},
"content": [
{
"attrs": {
"localId": "e6bb346c5fd4"
},
"content": [
{
"text": "Notes",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "tableHeader"
},
{
"attrs": {
"colwidth": [
233
],
"localId": "d7a1dec97b03"
},
"content": [
{
"attrs": {
"localId": "5cbd8813deab"
},
"content": [
{
"text": "Spring is confirmed.",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "tableCell"
},
{
"attrs": {
"colwidth": [
184
],
"localId": "85f9a8dab00b"
},
"content": [
{
"attrs": {
"localId": "da90346e9a26",
"title": "Payment terms"
},
"content": [
{
"attrs": {
"localId": "ef6c6f374bca"
},
"content": [
{
"text": "Invoices arrive monthly.",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "nestedExpand"
}
],
"type": "tableCell"
}
],
"type": "tableRow"
}
],
"type": "table"
},
{
"attrs": {
"localId": "10d03e65eff2"
},
"content": [
{
"text": "Figures are estimates.",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "doc",
"version": 1
}
@@ -0,0 +1,195 @@
{
"content": [
{
"attrs": {
"level": 2,
"localId": "26d50a5240c3"
},
"content": [
{
"text": "Action items",
"type": "text"
}
],
"type": "heading"
},
{
"attrs": {
"localId": "f8b236b2-3b7c-412a-a0df-6c523af43a76"
},
"content": [
{
"attrs": {
"localId": "eebe3cb9-5773-4753-b6a3-5a5df104b6e8",
"state": "DONE"
},
"content": [
{
"text": "Book the meeting room",
"type": "text"
}
],
"type": "taskItem"
},
{
"attrs": {
"localId": "2263a39a-c49c-4711-8f00-cca6e8f3ea35",
"state": "TODO"
},
"content": [
{
"text": "Order name badges",
"type": "text"
}
],
"type": "taskItem"
},
{
"attrs": {
"localId": "e323e762-8880-43c0-945d-17a7341fdefb"
},
"content": [
{
"attrs": {
"localId": "55523903-9f79-4711-b276-ec1bc98be977",
"state": "DONE"
},
"content": [
{
"text": "Print a spare set for the front desk",
"type": "text"
}
],
"type": "taskItem"
}
],
"type": "taskList"
},
{
"attrs": {
"localId": "680d665a-a859-4345-b032-d5a46fd6db0d",
"state": "TODO"
},
"content": [
{
"text": "Send the agenda to everyone",
"type": "text"
}
],
"type": "taskItem"
},
{
"attrs": {
"localId": "48d45b93-2180-4b80-b0ed-f9eb458ed1ed",
"state": "TODO"
},
"content": [
{
"text": "Ask ",
"type": "text"
},
{
"attrs": {
"accessLevel": "",
"id": "712020:78bf5058-bc76-4783-99af-6d70cb593cee",
"localId": "09321e9b-b551-48ee-8868-5339e8b86863",
"text": "@Larvit Developer"
},
"type": "mention"
},
{
"text": " about parking by ",
"type": "text"
},
{
"attrs": {
"localId": "16c6b2a1718e",
"timestamp": "1792022400000"
},
"type": "date"
},
{
"text": " ",
"type": "text"
}
],
"type": "taskItem"
}
],
"type": "taskList"
},
{
"attrs": {
"localId": "90a7d38e3ed7"
},
"type": "paragraph"
},
{
"attrs": {
"localId": "8c510497da2e"
},
"type": "paragraph"
},
{
"attrs": {
"level": 2,
"localId": "3b52fc685167"
},
"content": [
{
"text": "Decisions",
"type": "text"
}
],
"type": "heading"
},
{
"attrs": {
"localId": "82dbc28b-49c8-428c-8c21-65cc000ef7c5"
},
"content": [
{
"attrs": {
"localId": "2f7a7680-2c41-4b45-9162-29d97f922a7b",
"state": "DECIDED"
},
"content": [
{
"text": "Hold the kickoff on the second floor",
"type": "text"
}
],
"type": "decisionItem"
},
{
"attrs": {
"localId": "c94ef59b-6db4-4ddc-8d22-576821020306",
"state": "DECIDED"
},
"content": [
{
"text": "Keep the budget under the agreed limit",
"type": "text"
}
],
"type": "decisionItem"
}
],
"type": "decisionList"
},
{
"attrs": {
"localId": "562121f961a8"
},
"content": [
{
"text": "Done items are ticked; the rest are still open.",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "doc",
"version": 1
}
+288
View File
@@ -0,0 +1,288 @@
{
"content": [
{
"attrs": {
"level": 2,
"localId": "ef39f25be439"
},
"content": [
{
"text": "Text formatting",
"type": "text"
}
],
"type": "heading"
},
{
"attrs": {
"localId": "4a24d2441f4b"
},
"content": [
{
"text": "This sentence has ",
"type": "text"
},
{
"marks": [
{
"type": "strong"
}
],
"text": "bold",
"type": "text"
},
{
"text": ", ",
"type": "text"
},
{
"marks": [
{
"type": "em"
}
],
"text": "italic",
"type": "text"
},
{
"text": ", ",
"type": "text"
},
{
"marks": [
{
"type": "underline"
}
],
"text": "underlined",
"type": "text"
},
{
"text": ", ",
"type": "text"
},
{
"marks": [
{
"type": "strike"
}
],
"text": "struck",
"type": "text"
},
{
"text": " and ",
"type": "text"
},
{
"marks": [
{
"type": "code"
}
],
"text": "inline code",
"type": "text"
},
{
"text": " words in it.",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"localId": "707e9aa736b2"
},
"content": [
{
"text": "Water is H",
"type": "text"
},
{
"marks": [
{
"attrs": {
"type": "sub"
},
"type": "subsup"
}
],
"text": "2",
"type": "text"
},
{
"text": "O and the room measures 20 m",
"type": "text"
},
{
"marks": [
{
"attrs": {
"type": "sup"
},
"type": "subsup"
}
],
"text": "2",
"type": "text"
},
{
"text": ".",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"localId": "a03bd1fe3442"
},
"content": [
{
"text": "Some words are ",
"type": "text"
},
{
"marks": [
{
"attrs": {
"color": "#ff5630"
},
"type": "textColor"
}
],
"text": "red",
"type": "text"
},
{
"text": ", some are ",
"type": "text"
},
{
"marks": [
{
"attrs": {
"color": "#0747a6"
},
"type": "textColor"
}
],
"text": "bold blue",
"type": "text"
},
{
"text": ", and one is ",
"type": "text"
},
{
"marks": [
{
"attrs": {
"color": "#f8e6a0"
},
"type": "backgroundColor"
}
],
"text": "highlighted",
"type": "text"
},
{
"text": ".",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"localId": "f3a744347f56"
},
"content": [
{
"text": "A ",
"type": "text"
},
{
"marks": [
{
"type": "em"
},
{
"type": "strong"
}
],
"text": "bold italic",
"type": "text"
},
{
"text": " phrase, and a ",
"type": "text"
},
{
"marks": [
{
"type": "strike"
},
{
"type": "underline"
}
],
"text": "struck underlined",
"type": "text"
},
{
"text": " one.",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"localId": "643a019d97c1"
},
"content": [
{
"text": "Read the ",
"type": "text"
},
{
"marks": [
{
"attrs": {
"href": "https://spec.commonmark.org/0.31.2/"
},
"type": "link"
}
],
"text": "CommonMark spec",
"type": "text"
},
{
"text": " or the ",
"type": "text"
},
{
"marks": [
{
"attrs": {
"href": "https://www.markdownguide.org/basic-syntax/"
},
"type": "link"
}
],
"text": "basic syntax guide",
"type": "text"
},
{
"text": " before you edit.",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "doc",
"version": 1
}
@@ -1,23 +1,23 @@
- Bolt
::listBreak
!adf:listBreak
- Nut
1. Cut
::listBreak
!adf:listBreak
1. Weld
:::panel info
!adf:panel info
- Left
::listBreak
!adf:listBreak
- Right
:::
!adf:/panel
- - Head
::listBreak
!adf:listBreak
- Tail
@@ -1,3 +1,3 @@
:::paragraph {localId=01a03d5c-9b21-73f4-8e6a-0c47b1d9e2f8}
!adf:paragraph {localId=01a03d5c-9b21-73f4-8e6a-0c47b1d9e2f8}
Every block node in the schema carries one.
:::
!adf:/paragraph
+4 -4
View File
@@ -1,5 +1,5 @@
::::layoutSection {localId=01a033d0-1393-790b-9d44-c572033ea4aa marks="[{\"attrs\":{\"mode\":\"wide\"},\"type\":\"breakout\"}]"}
:::layoutColumn {width=100}
!adf:layoutSection {localId=01a033d0-1393-790b-9d44-c572033ea4aa marks="[{\"attrs\":{\"mode\":\"wide\"},\"type\":\"breakout\"}]"}
!adf:layoutColumn {width=100}
Full width.
:::
::::
!adf:/layoutColumn
!adf:/layoutSection
@@ -1,13 +0,0 @@
:::codeBlock {language=adf}
```
{
"type": "blockCard"
}
```
:::
:::codeBlock {language=adf}
````
```
````
:::
@@ -64,7 +64,7 @@
},
"content": [
{
"text": ":::",
"text": "!adf:/codeBlock",
"type": "text"
}
],
@@ -1,31 +1,31 @@
:::codeBlock {hideLineNumbers=true localId=01a0431d-201b-70a7-81fa-8d0072e09eab uniqueId=4478e39c wrap=true}
!adf:codeBlock {hideLineNumbers=true localId=01a0431d-201b-70a7-81fa-8d0072e09eab uniqueId=4478e39c wrap=true}
```rust
fn main() {}
```
:::
!adf:/codeBlock
:::codeBlock {language="a\u0060b"}
!adf:codeBlock {language="a\u0060b"}
```
x
```
:::
!adf:/codeBlock
:::codeBlock {language=" sql"}
!adf:codeBlock {language=" sql"}
```
SELECT 1
```
:::
!adf:/codeBlock
:::codeBlock {language="\u0026#97;df"}
!adf:codeBlock {language="\u0026#97;df"}
```
y
```
:::
!adf:/codeBlock
::::panel info
:::codeBlock {wrap=true}
!adf:panel info
!adf:codeBlock {wrap=true}
```text
:::
!adf:/codeBlock
```
:::
::::
!adf:/codeBlock
!adf:/panel
@@ -2,7 +2,7 @@
"content": [
{
"attrs": {
"language": "adf"
"language": "carry"
},
"content": [
{
@@ -14,7 +14,7 @@
},
{
"attrs": {
"language": "adf"
"language": "carry"
},
"content": [
{
@@ -0,0 +1,13 @@
!adf:codeBlock {language=carry}
```
{
"type": "blockCard"
}
```
!adf:/codeBlock
!adf:codeBlock {language=carry}
````
```
````
!adf:/codeBlock
@@ -1,5 +1,5 @@
:::codeBlock {language=""}
!adf:codeBlock {language=""}
```
cargo build --release
```
:::
!adf:/codeBlock
@@ -1,34 +1,35 @@
:::heading {level=2 localId=01a0431d-2014-737c-a1bf-f9daedab6de3}
!adf:heading {level=2 localId=01a0431d-2014-737c-a1bf-f9daedab6de3}
Release checklist
:::
!adf:/heading
:::paragraph {marks="[{\"attrs\":{\"align\":\"center\"},\"type\":\"alignment\"}]"}
!adf:paragraph {marks="[{\"attrs\":{\"align\":\"center\"},\"type\":\"alignment\"}]"}
Centred.
:::
!adf:/paragraph
::::bulletList {localId=01a0431d-2015-737f-afad-33064295ad4f}
:::listItem {localId=01a0431d-2016-7abb-823f-c0942934c878}
!adf:bulletList {localId=01a0431d-2015-737f-afad-33064295ad4f}
!adf:listItem {localId=01a0431d-2016-7abb-823f-c0942934c878}
Tag the commit
:::
:::listItem
!adf:/listItem
!adf:listItem
Push the tag
:::
::::
!adf:/listItem
!adf:/bulletList
::::orderedList
:::listItem
!adf:orderedList
!adf:listItem
Loosen the clamp
:::
::::
!adf:/listItem
!adf:/orderedList
> :::paragraph {localId=01a0431d-2017-72cf-baf3-8934a54e0582}
> !adf:paragraph {localId=01a0431d-2017-72cf-baf3-8934a54e0582}
> Hold the line.
> :::
> !adf:/paragraph
- :::paragraph {localId=01a0431d-2018-7667-a769-ab0037ca80aa}
- !adf:paragraph {localId=01a0431d-2018-7667-a769-ab0037ca80aa}
Indented.
:::
!adf:/paragraph
::rule {localId=01a0431d-2019-76b7-bf6f-13841363b111}
!adf:rule {localId=01a0431d-2019-76b7-bf6f-13841363b111}
::paragraph {localId=01a0431d-201a-7a65-bea7-84b441c85bd6}
!adf:paragraph {localId=01a0431d-201a-7a65-bea7-84b441c85bd6}
!adf:/paragraph
@@ -1,19 +1,19 @@
:::heading {level=7}
!adf:heading {level=7}
Seventh
:::
!adf:/heading
:::heading
!adf:heading
Levelless
:::
!adf:/heading
::::orderedList {order=999999998}
:::listItem
!adf:orderedList {order=999999998}
!adf:listItem
One
:::
:::listItem
!adf:/listItem
!adf:listItem
Two
:::
:::listItem
!adf:/listItem
!adf:listItem
Three
:::
::::
!adf:/listItem
!adf:/orderedList
@@ -1,6 +1,6 @@
::::expand {title="Full build log"}
!adf:expand {title="Full build log"}
The build ran for 11 minutes.
:::panel warning
!adf:panel warning
Three warnings went unread.
:::
::::
!adf:/panel
!adf:/expand
@@ -1,16 +1,16 @@
::::panel info
- :::panel warning
!adf:panel info
- !adf:panel warning
Check the torque before signing off.
:::
- - :::expand {title="Deeper still"}
!adf:/panel
- - !adf:expand {title="Deeper still"}
Two list levels down.
:::
!adf:/expand
> :::expand {title="Full build log"}
> !adf:expand {title="Full build log"}
> The build ran for 11 minutes.
> :::
> !adf:/expand
>
> :::panel note
> !adf:panel note
> Superseded by the next run.
> :::
::::
> !adf:/panel
!adf:/panel
@@ -1,8 +1,8 @@
::::decisionList {localId=01a033c4-7aa0-723f-bd4b-018e0aa0103f}
:::decisionItem {localId=01a033c8-0df4-74df-a9f4-c2c4aa3cc2c1 state=DECIDED}
!adf:decisionList {localId=01a033c4-7aa0-723f-bd4b-018e0aa0103f}
!adf:decisionItem {localId=01a033c8-0df4-74df-a9f4-c2c4aa3cc2c1 state=DECIDED}
Ship on Friday.
:::
:::decisionItem {localId=01a033cb-e13c-79b2-933f-b3cedd57e33e state=DECIDED}
!adf:/decisionItem
!adf:decisionItem {localId=01a033cb-e13c-79b2-933f-b3cedd57e33e state=DECIDED}
Keep the old endpoint for one release.
:::
::::
!adf:/decisionItem
!adf:/decisionList
+4 -4
View File
@@ -1,9 +1,9 @@
:::expand {title="Full build log"}
!adf:expand {title="Full build log"}
The build ran for 11 minutes.
Warnings: 3.
:::
!adf:/expand
:::nestedExpand {localId=01a03382-2ca7-745c-b85d-49b84d32cf99 title="Torque values"}
!adf:nestedExpand {localId=01a03382-2ca7-745c-b85d-49b84d32cf99 title="Torque values"}
Bolt M8: 25 Nm.
:::
!adf:/nestedExpand
+9 -9
View File
@@ -1,14 +1,14 @@
::extension {extensionKey=toc extensionType="com.atlassian.confluence.macro.core" parameters="{\"maxLevel\":2,\"minLevel\":1}" text="Table of contents"}
!adf:extension {extensionKey=toc extensionType="com.atlassian.confluence.macro.core" parameters="{\"maxLevel\":2,\"minLevel\":1}" text="Table of contents"}
:::bodiedExtension {extensionKey=note extensionType="com.atlassian.confluence.macro.core" layout=default localId=01a033d4-123e-70ec-9a9c-f55f189b3cf7}
!adf:bodiedExtension {extensionKey=note extensionType="com.atlassian.confluence.macro.core" layout=default localId=01a033d4-123e-70ec-9a9c-f55f189b3cf7}
Handle with care.
:::
!adf:/bodiedExtension
::::multiBodiedExtension {extensionKey=tabs extensionType="com.atlassian.confluence.macro.core" localId=01a033de-845f-70e2-abcf-cd5d23ba6101}
:::extensionFrame
!adf:multiBodiedExtension {extensionKey=tabs extensionType="com.atlassian.confluence.macro.core" localId=01a033de-845f-70e2-abcf-cd5d23ba6101}
!adf:extensionFrame
Tab one.
:::
:::extensionFrame
!adf:/extensionFrame
!adf:extensionFrame
Tab two.
:::
::::
!adf:/extensionFrame
!adf:/multiBodiedExtension
+20 -20
View File
@@ -1,26 +1,26 @@
::::mediaSingle {layout=center}
::media {alt="The moon, at night." type=external url="https://example.com/moon.png"}
:::caption
!adf:mediaSingle {layout=center}
!adf:media {alt="The moon, at night." type=external url="https://example.com/moon.png"}
!adf:caption
Taken from Kiruna.
:::
::::
!adf:/caption
!adf:/mediaSingle
:::mediaSingle {layout=center localId=01a03394-6721-7075-bd6e-fd9a57b64b56}
::media {alt="Torque chart" type=external url="https://example.com/torque.png"}
:::
!adf:mediaSingle {layout=center localId=01a03394-6721-7075-bd6e-fd9a57b64b56}
!adf:media {alt="Torque chart" type=external url="https://example.com/torque.png"}
!adf:/mediaSingle
:::mediaSingle {layout=center}
::media {height=480 type=external url="https://example.com/plan.png" width=640}
:::
!adf:mediaSingle {layout=center}
!adf:media {height=480 type=external url="https://example.com/plan.png" width=640}
!adf:/mediaSingle
:::mediaSingle {layout=center}
::media {alt="The assembly drawing" marks="[{\"attrs\":{\"href\":\"https://example.com/assembly\"},\"type\":\"link\"}]" type=external url="https://example.com/assembly.png"}
:::
!adf:mediaSingle {layout=center}
!adf:media {alt="The assembly drawing" marks="[{\"attrs\":{\"href\":\"https://example.com/assembly\"},\"type\":\"link\"}]" type=external url="https://example.com/assembly.png"}
!adf:/mediaSingle
:::mediaSingle {layout=center}
::media {alt="" type=external url="https://example.com/moon.png"}
:::
!adf:mediaSingle {layout=center}
!adf:media {alt="" type=external url="https://example.com/moon.png"}
!adf:/mediaSingle
:::mediaSingle {layout=center}
::media {type=external url="https://example.com/plan.png?a=1\u0026amp;b=2"}
:::
!adf:mediaSingle {layout=center}
!adf:media {type=external url="https://example.com/plan.png?a=1\u0026amp;b=2"}
!adf:/mediaSingle
+6 -6
View File
@@ -1,8 +1,8 @@
::::layoutSection {localId=01a033cc-4b60-7b5e-85f4-34f27f039e9a}
:::layoutColumn {localId=01a03389-a5fb-747d-b418-e91f1b161e7f width=50}
!adf:layoutSection {localId=01a033cc-4b60-7b5e-85f4-34f27f039e9a}
!adf:layoutColumn {localId=01a03389-a5fb-747d-b418-e91f1b161e7f width=50}
Left.
:::
:::layoutColumn {valign=top width=50}
!adf:/layoutColumn
!adf:layoutColumn {valign=top width=50}
Right.
:::
::::
!adf:/layoutColumn
!adf:/layoutSection
+4 -4
View File
@@ -1,4 +1,4 @@
:::mediaGroup
::media {collection=contentId-98237 id=01a03387-e300-7bcf-9a41-c27760696449 occurrenceKey=01a0338a-2f44-764f-a7b7-1c1a2abbb49b type=file}
::media {collection=contentId-98237 id=01a03393-0b0b-71f6-89cd-dd654f42cf34 type=link}
:::
!adf:mediaGroup
!adf:media {collection=contentId-98237 id=01a03387-e300-7bcf-9a41-c27760696449 occurrenceKey=01a0338a-2f44-764f-a7b7-1c1a2abbb49b type=file}
!adf:media {collection=contentId-98237 id=01a03393-0b0b-71f6-89cd-dd654f42cf34 type=link}
!adf:/mediaGroup
@@ -1,10 +1,10 @@
::::mediaSingle {layout=center width=50}
::media {collection=MediaServicesSample id=4478e39c-cf9b-41d1-ba92-68589487cd75 type=file}
:::caption {localId=01a03389-670b-7331-ae60-0446747ace7a}
!adf:mediaSingle {layout=center width=50}
!adf:media {collection=MediaServicesSample id=4478e39c-cf9b-41d1-ba92-68589487cd75 type=file}
!adf:caption {localId=01a03389-670b-7331-ae60-0446747ace7a}
The moon, at night.
:::
::::
!adf:/caption
!adf:/mediaSingle
:::mediaSingle {layout=wrap-right width="33.33" widthType=percentage}
::media {alt="Torque chart" height=480 localId=01a03389-8683-7c05-bfbb-457bcdb0ced3 type=external url="https://example.com/torque.png" width=640}
:::
!adf:mediaSingle {layout=wrap-right width="33.33" widthType=percentage}
!adf:media {alt="Torque chart" height=480 localId=01a03389-8683-7c05-bfbb-457bcdb0ced3 type=external url="https://example.com/torque.png" width=640}
!adf:/mediaSingle
@@ -34,7 +34,7 @@
},
"content": [
{
"text": ":::::::panel warning\n:::",
"text": "!adf:panel warning\n!adf:/panel",
"type": "text"
}
],
@@ -0,0 +1,15 @@
!adf:table
!adf:tableRow
!adf:tableCell
!adf:nestedExpand {title="Torque values"}
Bolt M8: 25 Nm.
!adf:/nestedExpand
!adf:/tableCell
!adf:tableCell
```text
!adf:panel warning
!adf:/panel
```
!adf:/tableCell
!adf:/tableRow
!adf:/table
@@ -1,15 +0,0 @@
::::::table
:::::tableRow
::::tableCell
:::nestedExpand {title="Torque values"}
Bolt M8: 25 Nm.
:::
::::
:::tableCell
```text
:::::::panel warning
:::
```
:::
:::::
::::::
+6 -6
View File
@@ -1,11 +1,11 @@
:::panel warning
!adf:panel warning
Check the collation before importing.
:::
!adf:/panel
:::panel info {localId=01a0337c-561a-75aa-b629-3801f68839ad}
!adf:panel info {localId=01a0337c-561a-75aa-b629-3801f68839ad}
Backups run at 02:00.
:::
!adf:/panel
:::panel custom {panelColor="#c9372c" panelIcon=":rainbow:" panelIconId=1f308 panelIconText="🌈"}
!adf:panel custom {panelColor="#c9372c" panelIcon=":rainbow:" panelIconId=1f308 panelIconText="🌈"}
Weather permitting.
:::
!adf:/panel
+3 -3
View File
@@ -1,5 +1,5 @@
::syncBlock {localId=0198f3a2-af74-7e91-b26c-70b15f4d9ec3 resourceId="ari:cloud:confluence:site/page/123"}
!adf:syncBlock {localId=0198f3a2-af74-7e91-b26c-70b15f4d9ec3 resourceId="ari:cloud:confluence:site/page/123"}
:::bodiedSyncBlock {localId=01a033df-0dee-7251-a710-98e76dc285e4 resourceId="ari:cloud:confluence:site/page/456"}
!adf:bodiedSyncBlock {localId=01a033df-0dee-7251-a710-98e76dc285e4 resourceId="ari:cloud:confluence:site/page/456"}
Shared release notes.
:::
!adf:/bodiedSyncBlock
@@ -1,20 +1,20 @@
:::::table {displayMode=fixed isNumberColumnEnabled=true layout=default localId=01a0339e-c34f-7658-9d98-eb059401b7ab width=760}
::::tableRow
:::tableHeader {colspan=2 colwidth="[340,420]"}
!adf:table {displayMode=fixed isNumberColumnEnabled=true layout=default localId=01a0339e-c34f-7658-9d98-eb059401b7ab width=760}
!adf:tableRow
!adf:tableHeader {colspan=2 colwidth="[340,420]"}
Assembly
:::
::::
::::tableRow {localId=01a033a9-d034-7466-b916-68643be958ff}
:::tableCell {background="#deebff" localId=01a03389-c573-72a6-a036-6cd9c6865301 rowspan=2}
!adf:/tableHeader
!adf:/tableRow
!adf:tableRow {localId=01a033a9-d034-7466-b916-68643be958ff}
!adf:tableCell {background="#deebff" localId=01a03389-c573-72a6-a036-6cd9c6865301 rowspan=2}
Bolt M8
:::
:::tableCell {valign=top}
!adf:/tableCell
!adf:tableCell {valign=top}
40
:::
::::
::::tableRow
:::tableCell
!adf:/tableCell
!adf:/tableRow
!adf:tableRow
!adf:tableCell
60
:::
::::
:::::
!adf:/tableCell
!adf:/tableRow
!adf:/table
@@ -1,18 +1,18 @@
:::::table
::::tableRow
:::tableHeader
!adf:table
!adf:tableRow
!adf:tableHeader
Pattern
:::
:::tableHeader
!adf:/tableHeader
!adf:tableHeader
Meaning
:::
::::
::::tableRow
:::tableCell
!adf:/tableHeader
!adf:/tableRow
!adf:tableRow
!adf:tableCell
`a|b`
:::
:::tableCell
!adf:/tableCell
!adf:tableCell
Either a or b
:::
::::
:::::
!adf:/tableCell
!adf:/tableRow
!adf:/table
+2 -2
View File
@@ -2,5 +2,5 @@
| --- | --- |
| Bolt M8 | Grade `8.8` |
| Nut \| washer | Sold as a pair |
| Washer M8 | 100 pcs:hardBreak{}zinc-plated |
| :text{text=" "}Spare | |
| Washer M8 | 100 pcs!adf:hardBreak{}zinc-plated |
| !adf:text{text=" "}Spare | |
+14 -13
View File
@@ -1,19 +1,20 @@
:::::taskList {localId=0198f3a2-7c41-7f2e-9b3a-4d8e2c1a6b90}
:::taskItem DONE {localId=0198f3a2-8d52-70b1-8c4f-5e9f3d2b7ca1}
!adf:taskList {localId=0198f3a2-7c41-7f2e-9b3a-4d8e2c1a6b90}
!adf:taskItem DONE {localId=0198f3a2-8d52-70b1-8c4f-5e9f3d2b7ca1}
Write the spec
:::
:::taskItem TODO {localId=0198f3a2-9e63-7d80-a15b-6fa04e3c8db2}
!adf:/taskItem
!adf:taskItem TODO {localId=0198f3a2-9e63-7d80-a15b-6fa04e3c8db2}
Ship it
:::
:::blockTaskItem TODO {localId=01a033b2-95c8-7d62-9b9c-dee7ad510982}
!adf:/taskItem
!adf:blockTaskItem TODO {localId=01a033b2-95c8-7d62-9b9c-dee7ad510982}
Check the torque.
Then sign off.
:::
::::taskList {localId=01a033b3-d1fa-7489-8c9f-f5846d2c249d}
:::taskItem TODO {localId=01a033bd-a22d-7fb5-be9d-89d1aa261112}
!adf:/blockTaskItem
!adf:taskList {localId=01a033b3-d1fa-7489-8c9f-f5846d2c249d}
!adf:taskItem TODO {localId=01a033bd-a22d-7fb5-be9d-89d1aa261112}
Nested step
:::
::taskItem TODO
::::
:::::
!adf:/taskItem
!adf:taskItem TODO
!adf:/taskItem
!adf:/taskList
!adf:/taskList
@@ -1,11 +1,11 @@
:::::table {isNumberColumnEnabled=true layout=wide width="760.5"}
::::tableRow
:::tableHeader {colspan=2 colwidth="[340,420]"}
!adf:table {isNumberColumnEnabled=true layout=wide width="760.5"}
!adf:tableRow
!adf:tableHeader {colspan=2 colwidth="[340,420]"}
Assembly
:::
::::
:::::
!adf:/tableHeader
!adf:/tableRow
!adf:/table
:::expand {localId=01a0-33_z title="a\nb\tc\"d\\e"}
!adf:expand {localId=01a0-33_z title="a\nb\tc\"d\\e"}
Notes.
:::
!adf:/expand
@@ -1,7 +1,7 @@
a `b :inlineCard{url="c\u0060d"}
a `b !adf:inlineCard{url="c\u0060d"}
:inlineCard{url="https://example.com/s?q=a\u0026amp;b\u003cc"}
!adf:inlineCard{url="https://example.com/s?q=a\u0026amp;b\u003cc"}
::extension {extensionKey=jira parameters="{\"jql\":\"a\u007cb \u0060c\u0060 \u0026 d \u003c e\"}"}
!adf:extension {extensionKey=jira parameters="{\"jql\":\"a\u007cb \u0060c\u0060 \u0026 d \u003c e\"}"}
[a:inlineCard{url="b](c)"}
[a!adf:inlineCard{url="b](c)"}
@@ -1,4 +1,4 @@
```adf
```carry
{
"attrs": {
"rounded": true
@@ -18,7 +18,7 @@
}
```
```adf
```carry
{
"attrs": {
"panelType": "extra info"
@@ -38,4 +38,4 @@
}
```
See :adf{json="{\"attrs\":{\"localId\":5,\"text\":\"In review\"},\"type\":\"status\"}"} now.
See !adf:carry{json="{\"attrs\":{\"localId\":5,\"text\":\"In review\"},\"type\":\"status\"}"} now.
@@ -1,11 +1,11 @@
Reviewed :adf{json="{\"marks\":[{\"attrs\":{\"annotationType\":\"inlineComment\",\"id\":\"0198f3a2-7c41-7f2e-9b3a-4d8e2c1a6b90\"},\"type\":\"annotation\"}],\"text\":\"audited\",\"type\":\"text\"}"} twice.
Reviewed !adf:carry{json="{\"marks\":[{\"attrs\":{\"annotationType\":\"inlineComment\",\"id\":\"0198f3a2-7c41-7f2e-9b3a-4d8e2c1a6b90\"},\"type\":\"annotation\"}],\"text\":\"audited\",\"type\":\"text\"}"} twice.
:adf{json="{\"marks\":[{\"attrs\":{\"colour\":\"red\"},\"type\":\"em\"}],\"text\":\"urgent\",\"type\":\"text\"}"}
!adf:carry{json="{\"marks\":[{\"attrs\":{\"colour\":\"red\"},\"type\":\"em\"}],\"text\":\"urgent\",\"type\":\"text\"}"}
:adf{json="{\"marks\":[{\"type\":\"code\"},{\"type\":\"strong\"}],\"text\":\"flag\",\"type\":\"text\"}"}
!adf:carry{json="{\"marks\":[{\"type\":\"code\"},{\"type\":\"strong\"}],\"text\":\"flag\",\"type\":\"text\"}"}
:adf{json="{\"marks\":[{\"type\":\"code\"}],\"text\":\"a\\nb\",\"type\":\"text\"}"}
!adf:carry{json="{\"marks\":[{\"type\":\"code\"}],\"text\":\"a\\nb\",\"type\":\"text\"}"}
:adf{json="{\"marks\":[{\"type\":\"link\"}],\"text\":\"Release notes\",\"type\":\"text\"}"}
!adf:carry{json="{\"marks\":[{\"type\":\"link\"}],\"text\":\"Release notes\",\"type\":\"text\"}"}
a:adf{json="{\"marks\":[{\"type\":\"em\"}],\"text\":\".\",\"type\":\"text\"}"}b:adf{json="{\"marks\":[{\"type\":\"strong\"}],\"text\":\",\",\"type\":\"text\"}"}c
a!adf:carry{json="{\"marks\":[{\"type\":\"em\"}],\"text\":\".\",\"type\":\"text\"}"}b!adf:carry{json="{\"marks\":[{\"type\":\"strong\"}],\"text\":\",\",\"type\":\"text\"}"}c
@@ -0,0 +1,57 @@
{
"content": [
{
"content": [
{
"attrs": {
"localId": "01a0a067-68cf-78af-abd6-c660ec0d189b"
},
"text": "Owner",
"type": "text"
},
{
"text": " signs off.",
"type": "text"
}
],
"type": "paragraph"
},
{
"content": [
{
"text": "Signed by ",
"type": "text"
},
{
"attrs": {
"localId": "01a0a067-68d2-787e-afc5-2459776aa029"
},
"text": "the owner",
"type": "text"
}
],
"type": "paragraph"
},
{
"content": [
{
"attrs": {
"localId": "01a0a067-68d5-7372-9962-29a039654056"
},
"text": "One ",
"type": "text"
},
{
"attrs": {
"localId": "01a0a067-68d5-7372-9962-29a039654056"
},
"text": "anchor",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "doc",
"version": 1
}
@@ -0,0 +1,5 @@
!adf:carry{json="{\"attrs\":{\"localId\":\"01a0a067-68cf-78af-abd6-c660ec0d189b\"},\"text\":\"Owner\",\"type\":\"text\"}"} signs off.
Signed by !adf:carry{json="{\"attrs\":{\"localId\":\"01a0a067-68d2-787e-afc5-2459776aa029\"},\"text\":\"the owner\",\"type\":\"text\"}"}
!adf:carry{json="{\"attrs\":{\"localId\":\"01a0a067-68d5-7372-9962-29a039654056\"},\"text\":\"One \",\"type\":\"text\"}"}!adf:carry{json="{\"attrs\":{\"localId\":\"01a0a067-68d5-7372-9962-29a039654056\"},\"text\":\"anchor\",\"type\":\"text\"}"}
@@ -3,7 +3,7 @@
{
"content": [
{
"text": "Write :mention[@Mikael]{id=5b10a2} to tag someone.",
"text": "Write !adf:mention[@Mikael]{id=5b10a2} to tag someone.",
"type": "text"
}
],
@@ -12,7 +12,16 @@
{
"content": [
{
"text": "::syncBlock {localId=x}",
"text": "Namespaced under !adf: alone.",
"type": "text"
}
],
"type": "paragraph"
},
{
"content": [
{
"text": "!adf:syncBlock {localId=x}",
"type": "text"
}
],
@@ -54,7 +63,7 @@
{
"content": [
{
"text": ":status[nope]{color=red} vs ",
"text": "!adf:status[nope]{color=red} vs ",
"type": "text"
},
{
@@ -1,11 +1,13 @@
Write \:mention[@Mikael]{id=5b10a2} to tag someone.
Write \!adf:mention[@Mikael]{id=5b10a2} to tag someone.
\::syncBlock {localId=x}
Namespaced under \!adf: alone.
\:::panel warning
\!adf:syncBlock {localId=x}
:::panel warning
Stand-up at 10:30, shipped :tada:, {maxLevel} deep, a ::syncBlock mid-line.
:status[In review]\{color} decides.
!adf:status[In review]\{color} decides.
\:status[nope]{color=red} vs :status[yep]{color=red}
\!adf:status[nope]{color=red} vs !adf:status[yep]{color=red}
@@ -4,6 +4,6 @@ Pass a | b to the shell.
- \| --- | --- |
:::panel info
!adf:panel info
\| a | b |
:::
!adf:/panel
@@ -12,7 +12,7 @@
{
"content": [
{
"text": ":::",
"text": "!adf:/panel",
"type": "text"
}
],
@@ -29,7 +29,7 @@
{
"content": [
{
"text": ":::",
"text": "!adf:/panel",
"type": "text"
}
],
@@ -41,7 +41,7 @@
{
"content": [
{
"text": ":::",
"text": "!adf:/panel",
"type": "text"
}
],
@@ -50,7 +50,7 @@
{
"content": [
{
"text": "::: x",
"text": "!adf:/panel x",
"type": "text"
}
],
@@ -59,7 +59,7 @@
{
"content": [
{
"text": "::",
"text": "!adf:rule",
"type": "text"
}
],
@@ -71,7 +71,7 @@
{
"content": [
{
"text": ":::",
"text": "!adf:/panel",
"type": "text"
}
],
@@ -0,0 +1,13 @@
!adf:panel info
- \!adf:/panel
> \!adf:/panel
\!adf:/panel
\!adf:/panel x
\!adf:rule
!adf:/panel
\!adf:/panel
@@ -1,13 +0,0 @@
:::panel info
- \:::
> \:::
\:::
\::: x
\::
:::
\:::
@@ -0,0 +1,73 @@
{
"content": [
{
"content": [
{
"text": "`` ``",
"type": "text"
},
{
"marks": [
{
"type": "code"
}
],
"text": "a",
"type": "text"
}
],
"type": "paragraph"
},
{
"content": [
{
"marks": [
{
"type": "underline"
}
],
"text": "``",
"type": "text"
},
{
"text": "``",
"type": "text"
},
{
"marks": [
{
"type": "code"
}
],
"text": "a",
"type": "text"
}
],
"type": "paragraph"
},
{
"content": [
{
"text": "``\\`",
"type": "text"
},
{
"marks": [
{
"type": "code"
}
],
"text": "`",
"type": "text"
},
{
"text": "`",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "doc",
"version": 1
}
@@ -0,0 +1,5 @@
\`\` \`\``a`
!adf:underline[\`\`]\`\``a`
\`\`\\\``` ` ``\`
@@ -1,39 +1,39 @@
::::::layoutSection
::::layoutColumn {width=50}
:::panel info
!adf:layoutSection
!adf:layoutColumn {width=50}
!adf:panel info
Check the collation before importing.
:::
::::
:::::layoutColumn {width=50}
::::taskList {localId=0198f3a2-7c41-7f2e-9b3a-4d8e2c1a6b90}
:::taskItem DONE {localId=0198f3a2-8d52-70b1-8c4f-5e9f3d2b7ca1}
!adf:/panel
!adf:/layoutColumn
!adf:layoutColumn {width=50}
!adf:taskList {localId=0198f3a2-7c41-7f2e-9b3a-4d8e2c1a6b90}
!adf:taskItem DONE {localId=0198f3a2-8d52-70b1-8c4f-5e9f3d2b7ca1}
Write the spec
:::
:::taskItem TODO {localId=0198f3a2-9e63-7d80-a15b-6fa04e3c8db2}
!adf:/taskItem
!adf:taskItem TODO {localId=0198f3a2-9e63-7d80-a15b-6fa04e3c8db2}
Ship it
:::
::::
:::::
::::::
!adf:/taskItem
!adf:/taskList
!adf:/layoutColumn
!adf:/layoutSection
::::mediaSingle {layout=center width=50}
::media {collection=MediaServicesSample id=4478e39c-cf9b-41d1-ba92-68589487cd75 type=file}
:::caption
!adf:mediaSingle {layout=center width=50}
!adf:media {collection=MediaServicesSample id=4478e39c-cf9b-41d1-ba92-68589487cd75 type=file}
!adf:caption
The moon, at night.
:::
::::
!adf:/caption
!adf:/mediaSingle
::::::expand {title="Full build log"}
:::::table {isNumberColumnEnabled=true}
::::tableRow
:::tableHeader
!adf:expand {title="Full build log"}
!adf:table {isNumberColumnEnabled=true}
!adf:tableRow
!adf:tableHeader
Step
:::
::::
::::tableRow
:::tableCell {background="#deebff"}
!adf:/tableHeader
!adf:/tableRow
!adf:tableRow
!adf:tableCell {background="#deebff"}
Compile
:::
::::
:::::
::::::
!adf:/tableCell
!adf:/tableRow
!adf:/table
!adf:/expand
@@ -1,6 +1,6 @@
# Release 2.4
Shipped :emoji[🚀]{shortName=":rocket:"} on :date{timestamp=1756080000000} — :mention[@Mikael]{id=01a032c3-7a7c-775f-a730-2d79351338b4} owns the rollout, status :status[In review]{color=yellow}.
Shipped !adf:emoji[🚀]{shortName=":rocket:"} on !adf:date{timestamp=1756080000000} — !adf:mention[@Mikael]{id=01a032c3-7a7c-775f-a730-2d79351338b4} owns the rollout, status !adf:status[In review]{color=yellow}.
| Part | Qty |
| --- | --- |
@@ -11,10 +11,10 @@ Shipped :emoji[🚀]{shortName=":rocket:"} on :date{timestamp=1756080000000} —
- Check the collation:
- `mysqldump --default-character-set=utf8mb4`
> Rolled back once, see the :underline[postmortem].
> Rolled back once, see the !adf:underline[postmortem].
---
:::panel warning
!adf:panel warning
Do not skip the pre-flight.
:::
!adf:/panel
@@ -0,0 +1,50 @@
{
"content": [
{
"content": [
{
"marks": [
{
"type": "underline"
},
{
"attrs": {
"href": "http://a`b"
},
"type": "link"
}
],
"text": "http://a`b",
"type": "text"
},
{
"text": "`c",
"type": "text"
}
],
"type": "paragraph"
},
{
"content": [
{
"marks": [
{
"type": "underline"
},
{
"attrs": {
"href": "http://d`e"
},
"type": "link"
}
],
"text": "http://d`e",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "doc",
"version": 1
}
@@ -0,0 +1,3 @@
!adf:underline[[http://a\`b](http://a\`b)]`c
!adf:underline[[http://d\`e](http://d`e)]

Some files were not shown because too many files have changed in this diff Show More