Releases: podlite/podlite
v0.0.61
Podlite — lightweight block-based markup language
specificationimplementation | publishing | desktop editor | resources |
podlite@0.0.54
- add
< podlite lint <files...>> subcommand (stub; rules land in upcoming releases)
@podlite/editor-react@0.0.47
-
fix
=codeblocks with:allow<...> losing fcode formatting -
fix Next.js / webpack build error on shiki ESM import
@podlite/markdown@0.0.34
- parse fenced code block attributes into structured config items .
python :line-numbers :highlight<2,5-7:caption> now produces an AST equivalent to=code :lang<python:line-numbers :highlight<2,5-7> :caption>, replacing the previous raw:meta<string> storage. Malformed attribute strings degrade gracefully - only:langAll seven configuration value types (Boolean, Integer, String, List, Hash) are accepted via the sharedparseAttributes()helper from@podlite/schema
@podlite/schema@0.0.41
- expose
attributesOnlyas an additional PEG start rule for parsing a stand-alone configuration-info fragment (e.g.:line-numbers :caption<Example>). Reuses the existingattributesgrammar rule - no shadow parser - add
parseAttributes(src)helper that returns an array of config items from a configuration-info string. Empty or malformed input returns an empty array
Full Changelog: v0.0.60...v0.0.61
v0.0.60
Podlite — lightweight block-based markup language
specificationimplementation | publishing | desktop editor | resources |
@podlite/editor-react@0.0.46
- fix task-list checkboxes invisible in full-preview mode — the
content-visibility: autorule added in 0.0.44 was scoped to all.line-srcdescendants, which re-introducedcontain: size layout painton inner wrappers inside< <li>> and broke the flex layout of.task-list-item. Scoped the rule to direct children of.contentonly; nested wrappers inside ul/ol/li/details/summary keepcontain: nonefrom the existing carve-out, and the off-screen defer stays effective on top-level blocks
@podlite/schema@0.0.40
- recognise the
headerMIME parameter (RFC 4180 §3) on:mime-typefor CSV/TSV=datablocks. When the=datablock declares:mime-type<'text/csv; header=present'> (or the same withtext/tab-separated-values),=table data:Xmarks the first row as:header, which renders as<th>/<thead> in HTML and JSX. Defaultabsentpreserves the previous behaviour. The MIME-type parser also accepts other parameters (e.g.charset) without disturbing type matching. Spec: podlite-specs#25
@podlite/to-jsx@0.0.44
:foldedon=headnow folds correctly when the heading is nested inside a named block,=begin nested,=defn, etc. — not only at the top level of=begin pod. Previously the synthetic_folded_sectionwrapper was created only for direct children ofpod, so folded headings inside other containers silently rendered as plain headings. The grouping pass now walks the AST recursively, so the spec's hierarchical-fold semantics (:foldedon a heading governs the heading and all associated lower-level content) apply uniformly- replaced
margin: 1em 0shorthand ondetails.foldedanddetails.folded-sectionwith long-handmargin-top/margin-bottom. The shorthand zeroed horizontal margins explicitly and (because of higher selector specificity) overrode host stylesheets that center block elements viadetails { margin-left: auto }, pinning folded sections to the parent's left edge instead of aligning with surrounding headings. Long-hand vertical-only margins let horizontal margins flow through the cascade
Full Changelog: v0.0.59...v0.0.60
v0.0.59
Podlite — lightweight block-based markup language
specificationimplementation | publishing | desktop editor | resources |
@podlite/editor-react@0.0.45
- fix Enter in
=itemlist and Tab/Shift-Tab level change now scroll the cursor into view — previously the caret could move past the viewport bottom without scrolling. Same fix applied to image paste/drop insertion - add
includeReaderandincludeBaseDirprops — forwarded to the default preview<Podlite> renderer so=include file:Xresolves at preview time. Hosts that supply a custommakePreviewComponentare responsible for forwarding these themselves. WithoutincludeReaderthe directive renders as nothing (preserves the prior behaviour). TypeIncludeReaderis re-exported for type-safe usage - add
expandPathsprop — forwarded to the default preview<Podlite> renderer for glob-pattern resolution in=include file:**/*.podlite. TypeExpandPathsis re-exported
@podlite/publisher@0.0.20
- extend Selector parsing:
file:scheme with suffix-match againstpublishRecord.file, and pipe-separated block-name filters (e.g.file:terms.podlite | defn, para).include-resolve-pluginnow inlines every matched block at the=includelocation, not just the first - add glob support in
file:selectors:**(any depth),*(within segment),?(single char). Enables patterns like=include file:00-DayByDay/**/term-*.podlite | defnfor full auto-aggregation across a directory tree - move
parseSelectorandrunSelectorimplementation to@podlite/schema. These names are still re-exported from this package, so downstream consumers that import them from@podlite/publisherkeep working without changes. The move breaks a circular-dependency risk for renderer-side packages that need selector mechanics (e.g. live-preview=includeresolution)
@podlite/schema@0.0.39
- resolve
=table data:<key> as CSV from a=data :mime-type<text/csv> block (spec §1672) — table content is replaced with=row/=cellstructure parsed per RFC 4180 (comma delimiter,"..."quoted fields with""escape). Spec §1672 does not define how to mark a header in CSV-sourced tables; authors who need a header row should use a structured table with=begin row :headeror a Markdown GFM table.file:<path> scheme is left unresolved for host-driven readers - resolve
=table data:<key> as TSV when the=datablock carries:mime-type<text/tab-separated-values> — split on tabs only, no quoting ("is a literal character, unlike CSV) - add table error recovery — pad short rows with empty cells, truncate over-long rows; expected cell count is taken from a
:headerrow when present, otherwise from the row with the maximum cell count. Warn on each adjustment. Tables containing:colspan/:rowspancells are skipped (naive count would mis-handle spanning) - warn on mixed column separator types within a single text-mode
=table(e.g.|in one row, whitespace in another) — does not block parsing - improve CSV/TSV error recovery — missing
=datablock leaves the table empty; a non-tabular mime-type is rendered as a=codeblock so the underlying content remains visible - add per-line separator detection for text-mode
=tablewhen lines disagree about separator type. A common pattern — header with|for visual emphasis and data rows aligned by whitespace alone — used to collapse columns under the unified positional mask; each line is now parsed on its own and produces the expected cells. Tables with a single separator type, or with both visible kinds (|++) handled by the shared mask, still go through the legacy positional path so continuation lines in multi-line rows keep their column alignment - move
parseSelectorandrunSelectorhere from@podlite/publisher. These are pure AST queries (no I/O, no filesystem) and belong in@podlite/schema.runSelectoris now generic over aSelectorDocshape ({ file, node }), so consumers without the publisher's richerpublishRecordtype can use it directly. The publisher re-exports from@podlite/schemafor backward compatibility
@podlite/to-jsx@0.0.43
- fix
wrapElementno longer wraps=row/=cellnodes — those always render as<tr>/<td>, and HTML disallows arbitrary elements as children of<table>/<tbody>/<tr>. Previously consumers that wrapped every node (e.g. an editor's line tracker injecting<div class="line-src">) produced invalid HTML; browsers extracted the wrappers out of the table and collapsed cells into a vertical column. The outer=tableblock is still wrappable - add
includeReaderprop on<Podlite> for resolving=include file:Xat render time. The reader receives a path and an optional base directory; it returns the included source as a string, ornullto leave the directive unresolved. The renderer parses the source, applies the selector (e.g.| defn), and splices resolved blocks inline.ctx.includeStackguards against include cycles. Without the prop the directive renders as nothing — preserves the previous behaviour for hosts without filesystem access - add
expandPathsprop on<Podlite> for resolving glob patterns in=include file:X(e.g.file:**/*.podlite). The callback receives the pattern and an optional base directory; it returns a concrete list of paths. The renderer reads each path viaincludeReader, builds a corpus, and applies the selector across all matching files. Without the prop, glob characters are read as literal path segments and resolve to nothing
Full Changelog: v0.0.58...v0.0.59
v0.0.58
Podlite — lightweight block-based markup language
specificationimplementation | publishing | desktop editor | resources |
@podlite/editor-react@0.0.44
- add
onSaveAssetprop — paste/drop image handler. Clipboard paste (PNG/JPEG/GIF/WebP) and drag-drop (same plus SVG) are routed through the callback, which returns a relative path; the editor inserts=picture pathat the cursor. No-op when prop is absent - fix performance: in full-preview mode skip
view.dispatch({scrollIntoView:true})andgetBoundingClientRectcalls on the hidden CodeMirror view; coalesce preview scroll tracking to onegetScrollMappass per frame viarequestAnimationFrame; apply the recorded line in a single dispatch on mode exit - fix UX: entering full-preview scrolls the preview to the editor's current top visible line (was always line 1); leaving full-preview places the cursor on the last visible preview line and centers it at ~1/4 from the top of the editor
- add CSS containment (
contain: layout paint style) to.line-srcwrappers and.podlite-editor-previewto reduce per-paint cost during scroll - add
content-visibility: auto+contain-intrinsic-size: auto 2emon.line-srcin full-preview mode (gated bydata-full-preview="true"attribute) so off-screen blocks skip layout/paint until near viewport
@podlite/schema@0.0.38
- added
type: "map"on config items parsed from:attr{k=v, ...}> key-value syntax — previously the hash form returned the map value without a type annotation, making it indistinguishable from other value kinds - added
makeAttrs().getMapValue(name)helper — returns the first map-typed value as a plain object, or undefined when the attribute is absent or not a map - added guillemet bracket support («...») for formatting codes A, V, S, Z, D, X — previously only angle brackets (<...>) worked for these codes
- refactored grammarfc to use parametric rules — unified simple codes via
FCodeSimpletemplate, D/X viaFCodeWithArray - bumped Pegmill dependency from 0.1.0 to 0.1.2
- added
O<> strikethrough formatting code (renders to HTML<del>, Markdown~~...~~) - replaced legacy
Delete<> alias with canonicalO<> — Markdown~~text~~now produces AST{name:'O'}. Helper renamedmkFomattingCodeDelete→mkFomattingCodeO - added
H<> superscript (renders to HTML<sup>) andJ<> subscript (renders to HTML<sub>) formatting codes - added structured table format with
=begin rowand=cellblocks, including:headerattribute support (renders to HTML<thead/>, JSX, GFM pipe tables) - implicit cell wrapping: non-cell children inside
=roware automatically wrapped in=cell - unified table AST across text-mode, structured and Markdown inputs — all produce
{name:'row'}/{name:'cell'}. Legacytable_row/table_cell/table_headnode names removed - added
:colspan(N)and:rowspan(N)attributes for=cellblocks. Values of 1 treated as default (no attribute emitted). Markdown export falls back to inline HTML<table> when any cell has spans (GFM pipe-tables don't support colspan/rowspan) - tables with a
:headerrow now emit semantic<thead>/<tbody> wrapping in HTML and JSX. Tables without headers keep the flat<tr> layout
@podlite/to-jsx@0.0.42
:foldedon=headblocks now folds the whole section — heading plus every following node up to the next same-or-higher-level heading. Previously this attribute was ignored on headings- per-item conditional fold for
:folded-levels— only TOC items that have nested children become collapsible; leaf items render as plain list entries with no disclosure marker. Previously the entire level was wrapped as a single group - bare
:foldedon=tocwraps the entire TOC in a<details>; summary shows the caption or "Contents" fallback :folded-levels{k=v}> key-value syntax is now rendered (value1folds that level,0keeps it open)- CSS: disclosure markers for folded headings and foldable TOC items sit in a left gutter so that text at the same level starts on the same x-coordinate regardless of whether the item has a marker. Heading and inline content stay on one line with the triangle
@podlite/toc@0.0.31
- added
:folded-levels{k=v}> key-value syntax — each level can now be marked folded (1) or not (0) independently, e.g.{2=1, 3=>0}>. Array syntax[2,3]still works as before - added bare
:foldedattribute on=toc— wraps the entire TOC in a collapsible<details>. Accepts:!folded/:folded(0)for a disclosure that opens by default
Full Changelog: v0.0.57...v0.0.58
v0.0.57
Podlite — lightweight block-based markup language
specificationimplementation | publishing | desktop editor | resources |
@podlite/editor-react@0.0.43
- add
enableFoldingprop — control fold gutter visibility (defaulttrue,falsefor embedded editors) - fix embedded editor preview: align first element with editor, reduce list item spacing
- fix
WindowWrapperoverflow — addmax-width: 100%and restoremargin: 2remon.window - fix fold gutter width compensation when folding disabled (
padding-left: 11px)
Full Changelog: v0.0.56...v0.0.57
v0.0.56
Podlite is a lightweight block-based markup language designed for flexibility and ease of use.
specificationimplementation | publishing system | desktop viewer/editor | online resurces |
@podlite/editor-react@0.0.42
- fix performance: eliminate synchronous re-renders on keystroke (text state → ref, deferred onChange via rAF, 300ms debounced preview)
- fix performance: cache verbatim ranges in fold service (O(N) per call → O(1) via document identity cache)
- fix search panel closing after Enter on first result — memoize extensions and basicSetup to prevent CodeMirror reconfiguration on re-render
- add
enableCopyPngprop toWindowWrapper— copies content as PNG to clipboard viadom-to-image-more - refactor
WindowWrapper: remove dead SVG foreignObject screenshot code, add TypeScript types - fix fold markers appearing inside verbatim blocks (
=code,=comment,=data,=input,=output) - fix cursor not visible on file open — add
autoFocus+ resetinitialStateAppliedon file change
Full Changelog: v0.0.55...v0.0.56
v0.0.55
Podlite is a lightweight block-based markup language designed for flexibility and ease of use.
specificationimplementation | publishing system | desktop viewer/editor | online resurces |
@podlite/editor-react@0.0.41
- add list continuation on Enter: auto-insert
=itemNwith type prefix preserved ([ ],[x]→[ ],#) - pressing Enter on empty
=itemN(or prefix-only) exits the list - add Tab/Shift-Tab to increase/decrease
=itemnesting level (2-space indent per level) - add code folding for
=begin/=endblocks and=headsections with fold gutter - add
initialEditorStateandonEditorStateChangeprops for session state persistence (cursor, scroll, folds)
@podlite/schema@0.0.35
- added
foldedLevelsfield inToctype andmkTochelper
@podlite/to-jsx@0.0.39
- added
:folded-levelsrendering for=tocblock -- folded levels wrapped in< <details>> element
@podlite/toc@0.0.28
- added
:folded-levelsattribute for=tocblock -- controls which TOC levels are collapsed by default (array syntax)
Full Changelog: v0.0.54...v0.0.55
v0.0.54
Podlite is a lightweight block-based markup language designed for flexibility and ease of use.
specificationimplementation | publishing system | desktop viewer/editor | online resurces |
podlite@0.0.47
- added CLI entrypoint
bin/podlite.js
@podlite/editor-react@0.0.40
- add
enableHighlightingprop to toggle code highlighting in preview (podlite/podlite-desktop#42)
@podlite/schema@0.0.34
- migrated build from PEG.js to Pegmill 0.1.0
- added export to Markdown
- fixed table parsing without separator
- added
getPodContentFromNodehelper - added task list support:
:checked/:!checkedand[x]/[ ]syntax - added
checkedproperty toBlockItemAST type - added
list: 'task'type for task list grouping - fixed list grouping for mixed list types at nested levels
- fixed string/number level comparison in
plugin-group-items
@podlite/to-jsx@0.0.38
- added
:foldedattribute support for blocks, tables, and notifications - added CSS for collapsible
< <details>> elements - added task list rendering with checkbox support
- added CSS for task lists (GitHub-style checkbox alignment)
Full Changelog: v0.0.53...v0.0.54
v0.0.53
Podlite is a lightweight block-based markup language designed for flexibility and ease of use.
specificationimplementation | publishing system | desktop viewer/editor | online resurces |
@podlite/editor-react@0.0.39
- enhanced link handling
L<> - fixed a redraw issue when resizing the application window
@podlite/to-jsx@0.0.37
- improved code block visibility in CSS
Full Changelog: v0.0.52...v0.0.53
v0.0.52
Podlite is a lightweight block-based markup language designed for flexibility and ease of use.
specificationimplementation | publishing system | desktop viewer/editor | online resurces |
@podlite/schema@0.0.32
- improve support for
A<> - made AST processing safest
@podlite/editor-react@0.0.38
- allow handle links
L<>(onOpenLink) - add styles for
I<>,S<>,C<>,U<>and fix heading styles
@podlite/to-jsx@0.0.36
- handle
A<>correctly
Full Changelog: v0.0.51...v0.0.52
