Skip to content

Releases: podlite/podlite

v0.0.61

08 May 07:48
@zag zag

Choose a tag to compare

Podlite

Podlite — lightweight block-based markup language

specification
implementation
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 =code blocks 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 :lang All seven configuration value types (Boolean, Integer, String, List, Hash) are accepted via the shared parseAttributes() helper from @podlite/schema

@podlite/schema@0.0.41

  • expose attributesOnly as an additional PEG start rule for parsing a stand-alone configuration-info fragment (e.g. :line-numbers :caption<Example>). Reuses the existing attributes grammar 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

04 May 18:59
@zag zag

Choose a tag to compare

Podlite

Podlite — lightweight block-based markup language

specification
implementation
publishing
desktop editor
resources

@podlite/editor-react@0.0.46

  • fix task-list checkboxes invisible in full-preview mode — the content-visibility: auto rule added in 0.0.44 was scoped to all .line-src descendants, which re-introduced contain: size layout paint on inner wrappers inside < <li >> and broke the flex layout of .task-list-item. Scoped the rule to direct children of .content only; nested wrappers inside ul/ol/li/details/summary keep contain: none from the existing carve-out, and the off-screen defer stays effective on top-level blocks

@podlite/schema@0.0.40

  • recognise the header MIME parameter (RFC 4180 §3) on :mime-type for CSV/TSV =data blocks. When the =data block declares :mime-type<'text/csv; header=present'> (or the same with text/tab-separated-values), =table data:X marks the first row as :header, which renders as <th>/<thead> in HTML and JSX. Default absent preserves 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

  • :folded on =head now 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_section wrapper was created only for direct children of pod, 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 (:folded on a heading governs the heading and all associated lower-level content) apply uniformly
  • replaced margin: 1em 0 shorthand on details.folded and details.folded-section with long-hand margin-top/margin-bottom. The shorthand zeroed horizontal margins explicitly and (because of higher selector specificity) overrode host stylesheets that center block elements via details { 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

26 Apr 17:30
@zag zag

Choose a tag to compare

Podlite

Podlite — lightweight block-based markup language

specification
implementation
publishing
desktop editor
resources

@podlite/editor-react@0.0.45

  • fix Enter in =item list 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 includeReader and includeBaseDir props — forwarded to the default preview <Podlite> renderer so =include file:X resolves at preview time. Hosts that supply a custom makePreviewComponent are responsible for forwarding these themselves. Without includeReader the directive renders as nothing (preserves the prior behaviour). Type IncludeReader is re-exported for type-safe usage
  • add expandPaths prop — forwarded to the default preview <Podlite> renderer for glob-pattern resolution in =include file:**/*.podlite. Type ExpandPaths is re-exported

@podlite/publisher@0.0.20

  • extend Selector parsing: file: scheme with suffix-match against publishRecord.file, and pipe-separated block-name filters (e.g. file:terms.podlite | defn, para). include-resolve-plugin now inlines every matched block at the =include location, 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 | defn for full auto-aggregation across a directory tree
  • move parseSelector and runSelector implementation to @podlite/schema. These names are still re-exported from this package, so downstream consumers that import them from @podlite/publisher keep working without changes. The move breaks a circular-dependency risk for renderer-side packages that need selector mechanics (e.g. live-preview =include resolution)

@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/=cell structure 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 :header or a Markdown GFM table. file:<path> scheme is left unresolved for host-driven readers
  • resolve =table data:<key> as TSV when the =data block 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 :header row when present, otherwise from the row with the maximum cell count. Warn on each adjustment. Tables containing :colspan/:rowspan cells 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 =data block leaves the table empty; a non-tabular mime-type is rendered as a =code block so the underlying content remains visible
  • add per-line separator detection for text-mode =table when 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 parseSelector and runSelector here from @podlite/publisher. These are pure AST queries (no I/O, no filesystem) and belong in @podlite/schema. runSelector is now generic over a SelectorDoc shape ({ file, node }), so consumers without the publisher's richer publishRecord type can use it directly. The publisher re-exports from @podlite/schema for backward compatibility

@podlite/to-jsx@0.0.43

  • fix wrapElement no longer wraps =row/=cell nodes — 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 =table block is still wrappable
  • add includeReader prop on <Podlite> for resolving =include file:X at render time. The reader receives a path and an optional base directory; it returns the included source as a string, or null to leave the directive unresolved. The renderer parses the source, applies the selector (e.g. | defn), and splices resolved blocks inline. ctx.includeStack guards against include cycles. Without the prop the directive renders as nothing — preserves the previous behaviour for hosts without filesystem access
  • add expandPaths prop 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 via includeReader, 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

20 Apr 07:46
@zag zag

Choose a tag to compare

Podlite

Podlite — lightweight block-based markup language

specification
implementation
publishing
desktop editor
resources

@podlite/editor-react@0.0.44

  • add onSaveAsset prop — 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 path at the cursor. No-op when prop is absent
  • fix performance: in full-preview mode skip view.dispatch({scrollIntoView:true}) and getBoundingClientRect calls on the hidden CodeMirror view; coalesce preview scroll tracking to one getScrollMap pass per frame via requestAnimationFrame; 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-src wrappers and .podlite-editor-preview to reduce per-paint cost during scroll
  • add content-visibility: auto + contain-intrinsic-size: auto 2em on .line-src in full-preview mode (gated by data-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 FCodeSimple template, D/X via FCodeWithArray
  • 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 canonical O<> — Markdown ~~text~~ now produces AST {name:'O'}. Helper renamed mkFomattingCodeDeletemkFomattingCodeO
  • added H<> superscript (renders to HTML <sup>) and J<> subscript (renders to HTML <sub>) formatting codes
  • added structured table format with =begin row and =cell blocks, including :header attribute support (renders to HTML <thead/>, JSX, GFM pipe tables)
  • implicit cell wrapping: non-cell children inside =row are automatically wrapped in =cell
  • unified table AST across text-mode, structured and Markdown inputs — all produce {name:'row'}/{name:'cell'}. Legacy table_row/table_cell/table_head node names removed
  • added :colspan(N) and :rowspan(N) attributes for =cell blocks. 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 :header row now emit semantic <thead>/<tbody> wrapping in HTML and JSX. Tables without headers keep the flat <tr> layout

@podlite/to-jsx@0.0.42

  • :folded on =head blocks 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 :folded on =toc wraps the entire TOC in a <details>; summary shows the caption or "Contents" fallback
  • :folded-levels{k=v}> key-value syntax is now rendered (value 1 folds that level, 0 keeps 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 :folded attribute 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

29 Mar 16:15
@zag zag

Choose a tag to compare

Podlite

Podlite — lightweight block-based markup language

specification
implementation
publishing
desktop editor
resources

@podlite/editor-react@0.0.43

  • add enableFolding prop — control fold gutter visibility (default true, false for embedded editors)
  • fix embedded editor preview: align first element with editor, reduce list item spacing
  • fix WindowWrapper overflow — add max-width: 100% and restore margin: 2rem on .window
  • fix fold gutter width compensation when folding disabled (padding-left: 11px)

Full Changelog: v0.0.56...v0.0.57

v0.0.56

27 Mar 07:21
@zag zag

Choose a tag to compare

Podlite

Podlite is a lightweight block-based markup language designed for flexibility and ease of use.

@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 enableCopyPng prop to WindowWrapper — copies content as PNG to clipboard via dom-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 + reset initialStateApplied on file change

Full Changelog: v0.0.55...v0.0.56

v0.0.55

20 Mar 06:55
@zag zag

Choose a tag to compare

Podlite

Podlite is a lightweight block-based markup language designed for flexibility and ease of use.

@podlite/editor-react@0.0.41

  • add list continuation on Enter: auto-insert =itemN with type prefix preserved ([ ], [x][ ], #)
  • pressing Enter on empty =itemN (or prefix-only) exits the list
  • add Tab/Shift-Tab to increase/decrease =item nesting level (2-space indent per level)
  • add code folding for =begin/=end blocks and =head sections with fold gutter
  • add initialEditorState and onEditorStateChange props for session state persistence (cursor, scroll, folds)

@podlite/schema@0.0.35

  • added foldedLevels field in Toc type and mkToc helper

@podlite/to-jsx@0.0.39

  • added :folded-levels rendering for =toc block -- folded levels wrapped in < <details >> element

@podlite/toc@0.0.28

  • added :folded-levels attribute for =toc block -- controls which TOC levels are collapsed by default (array syntax)

Full Changelog: v0.0.54...v0.0.55

v0.0.54

15 Mar 08:30
@zag zag

Choose a tag to compare

Podlite

Podlite is a lightweight block-based markup language designed for flexibility and ease of use.

podlite@0.0.47

  • added CLI entrypoint bin/podlite.js

@podlite/editor-react@0.0.40

@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 getPodContentFromNode helper
  • added task list support: :checked/:!checked and [x]/[ ] syntax
  • added checked property to BlockItem AST 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 :folded attribute 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

12 Oct 16:05
@zag zag

Choose a tag to compare

Podlite

Podlite is a lightweight block-based markup language designed for flexibility and ease of use.

@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

01 Oct 06:07
@zag zag

Choose a tag to compare

Podlite

Podlite is a lightweight block-based markup language designed for flexibility and ease of use.

@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