<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Alexandr Zahatski</title>
    <description>The latest articles on DEV Community by Alexandr Zahatski (@zag).</description>
    <link>https://dev.to/zag</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F278411%2Fca74b53c-e5da-4111-a96b-878fb352bff6.png</url>
      <title>DEV Community: Alexandr Zahatski</title>
      <link>https://dev.to/zag</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zag"/>
    <language>en</language>
    <item>
      <title>Podlite 2.0 released</title>
      <dc:creator>Alexandr Zahatski</dc:creator>
      <pubDate>Fri, 29 May 2026 09:57:15 +0000</pubDate>
      <link>https://dev.to/zag/podlite-20-released-3me</link>
      <guid>https://dev.to/zag/podlite-20-released-3me</guid>
      <description>&lt;p&gt;Podlite 2.0 is tagged. Podlite is a block-based markup language built around typed blocks and explicit boundaries — the same document is meant to read cleanly whether a person or a tool parses it. This release adds eight blocks and attributes and changes two parsing rules.&lt;/p&gt;

&lt;p&gt;The specification is at &lt;a href="https://podlite.org/specification" rel="noopener noreferrer"&gt;podlite.org/specification&lt;/a&gt;; the full changelog sits inside the spec under &lt;code&gt;=head2 v2.0&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://podlite.org/2026/5/7/1/coming-in-podlite-2-0" rel="noopener noreferrer"&gt;Coming in Podlite 2.0&lt;/a&gt; article from the review window covered what is new in depth. This post focuses on what to do now: how to migrate existing documents and where to find the rest. For most documents the answer is short — a well-formed v1.0 document renders unchanged under v2.0.&lt;/p&gt;

&lt;h2&gt;
  
  
  Breaking changes
&lt;/h2&gt;

&lt;p&gt;Two changes parse differently than before. Neither touches a well-formed document — if anything needs updating, it is a parser, not your text.&lt;/p&gt;

&lt;h3&gt;
  
  
  Legacy attribute syntax removed
&lt;/h3&gt;

&lt;p&gt;A few outdated string attribute formats are gone. The bracket form (&lt;code&gt;:key&amp;lt;value&amp;gt;&lt;/code&gt;) and the parenthesized form (&lt;code&gt;:key('value')&lt;/code&gt;) remain.&lt;/p&gt;

&lt;p&gt;If a document uses the current syntax, nothing changes.&lt;/p&gt;

&lt;h3&gt;
  
  
  =include is now a directive
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;=include&lt;/code&gt; always behaved like a directive, but the spec previously listed it under block types. Tokenization rules differ between directives and blocks. Parsers built against the v1.0 spec must move &lt;code&gt;=include&lt;/code&gt; into the directive dispatch path alongside &lt;code&gt;=config&lt;/code&gt; and &lt;code&gt;=alias&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;For document authors: no change. &lt;code&gt;=include&lt;/code&gt; still takes the same syntax and produces the same output. The reclassification matters only for tools that build ASTs.&lt;/p&gt;

&lt;h2&gt;
  
  
  New features at a glance
&lt;/h2&gt;

&lt;p&gt;Eight additions ship in v2.0. Existing documents render unchanged.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F55h60m9828vajmcp7gra.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F55h60m9828vajmcp7gra.png" alt="All eight additions at a glance — 8-card grid" width="800" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;=boundary&lt;/code&gt;: a typed section divider. Renders as a horizontal rule, exposes structure to tools.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;=set&lt;/code&gt;: pre-configure attributes for the next block. Multiline values, inline markup, lexical scope.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;G&amp;lt;&amp;gt;&lt;/code&gt; + &lt;code&gt;:masked&lt;/code&gt;: content masking. Inline mark or whole-block attribute; hidden by default, revealed by render condition.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;=data-table&lt;/code&gt; block: renders CSV or TSV as a table. Three source forms (inline body, external &lt;code&gt;:src&amp;lt;file:X&amp;gt;&lt;/code&gt;, &lt;code&gt;=data&lt;/code&gt; reference). &lt;code&gt;:columns&lt;/code&gt; selects projection, &lt;code&gt;:rename{}&lt;/code&gt; overrides display names.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csvs"&gt;&lt;code&gt;  &lt;span class="err"&gt;=&lt;/span&gt;&lt;span class="k"&gt;begin&lt;/span&gt; &lt;span class="k"&gt;data&lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="k"&gt;table&lt;/span&gt; &lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="k"&gt;caption&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="k"&gt;Quarterly&lt;/span&gt; &lt;span class="k"&gt;sales&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="k"&gt;mime&lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="k"&gt;type&lt;/span&gt;&lt;span class="err"&gt;&amp;lt;'&lt;/span&gt;&lt;span class="k"&gt;text&lt;/span&gt;&lt;span class="err"&gt;/&lt;/span&gt;&lt;span class="k"&gt;csv&lt;/span&gt;&lt;span class="err"&gt;;&lt;/span&gt; &lt;span class="k"&gt;header&lt;/span&gt;&lt;span class="err"&gt;=&lt;/span&gt;&lt;span class="k"&gt;present&lt;/span&gt;&lt;span class="err"&gt;'&amp;gt;&lt;/span&gt;
  &lt;span class="k"&gt;quarter&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="k"&gt;product&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="k"&gt;revenue&lt;/span&gt;
  &lt;span class="k"&gt;Q&lt;/span&gt;&lt;span class="mf"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="k"&gt;Widget&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;12000&lt;/span&gt;
  &lt;span class="k"&gt;Q&lt;/span&gt;&lt;span class="mf"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="k"&gt;Gadget&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;18000&lt;/span&gt;
  &lt;span class="k"&gt;Q&lt;/span&gt;&lt;span class="mf"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="k"&gt;Widget&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;15400&lt;/span&gt;
  &lt;span class="k"&gt;Q&lt;/span&gt;&lt;span class="mf"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="k"&gt;Gadget&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;21200&lt;/span&gt;
  &lt;span class="err"&gt;=&lt;/span&gt;&lt;span class="k"&gt;end&lt;/span&gt; &lt;span class="k"&gt;data&lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="k"&gt;table&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Extended &lt;code&gt;:mime-type&lt;/code&gt; syntax: accepts MIME parameters per RFC 6838, with &lt;code&gt;header=present|absent&lt;/code&gt; for CSV/TSV header indication per RFC 4180 §3.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Markdown fenced code block attributes: the string after the language tag is now parsed as Podlite attributes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Per-link configuration attributes for &lt;code&gt;L&amp;lt;&amp;gt;&lt;/code&gt;: settings stay with the link rather than scattering through prose.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;=table&lt;/code&gt; error recovery: explicit warnings for malformed rows (cell count mismatch, mixed separators), graceful fallback instead of silent corruption.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For full examples and rationale, the &lt;a href="https://podlite.org/2026/5/7/1/coming-in-podlite-2-0" rel="noopener noreferrer"&gt;Coming in Podlite 2.0&lt;/a&gt; article is still accurate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to go from here
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Spec: &lt;a href="https://podlite.org/specification" rel="noopener noreferrer"&gt;podlite.org/specification&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Changelog: spec &lt;code&gt;v2.0&lt;/code&gt; section, Keep a Changelog format&lt;/li&gt;
&lt;li&gt;GitHub release: &lt;a href="https://github.com/podlite/podlite-specs/releases/tag/v2.0" rel="noopener noreferrer"&gt;podlite-specs/releases/tag/v2.0&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Discussions: &lt;a href="https://github.com/podlite/podlite-specs/discussions" rel="noopener noreferrer"&gt;podlite-specs/discussions&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Editor: &lt;a href="https://pod6.in" rel="noopener noreferrer"&gt;pod6.in&lt;/a&gt; for trying the new directives live&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>documentation</category>
      <category>web</category>
      <category>podlite</category>
      <category>markup</category>
    </item>
    <item>
      <title>Coming in Podlite 2.0</title>
      <dc:creator>Alexandr Zahatski</dc:creator>
      <pubDate>Thu, 07 May 2026 18:00:03 +0000</pubDate>
      <link>https://dev.to/zag/coming-in-podlite-20-4gn1</link>
      <guid>https://dev.to/zag/coming-in-podlite-20-4gn1</guid>
      <description>&lt;p&gt;The spec branch for Podlite 2.0 has landed in a pull request. The final tag goes up once the review window closes. If you build parsers or ship documents in Podlite, this is the time to read the diff and push back.&lt;/p&gt;

&lt;p&gt;Why a major bump? A few real breaking changes (mostly legacy string-attribute syntax that nobody should have been writing anyway), plus five big new features. Bundling them means one parser-side update instead of five spread over time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two new directives
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;=boundary&lt;/code&gt; — section dividers with semantics
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4gfklsbhyk8kcmzixfme.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4gfklsbhyk8kcmzixfme.png" alt=" " width="321" height="322"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A divider with semantics. It renders as a horizontal rule, but the parser sees a typed block. A tool building a table of contents, page-splitter, or chapter-navigator knows exactly where one section ends and the next begins. The optional &lt;code&gt;:caption&lt;/code&gt; attribute describes the transition (&lt;code&gt;=boundary :caption('Part Two')&lt;/code&gt;).&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;=set&lt;/code&gt; — per-block attribute assignment
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb01xlujfh7evj9htbsl3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb01xlujfh7evj9htbsl3.png" alt=" " width="507" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pre-configure attributes for the next block. Multiline values via continuation lines, inline markup inside attribute values, and lexical scope per file. The mechanism is useful when an attribute value is too long to sit on the directive line, or when you want to factor common attributes out of repeated blocks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Content masking
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Accept the terms to read G&amp;lt;the full case study&amp;gt;.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="cm"&gt;=begin para :masked
Premium analysis. Hidden until the reader signs in.
=end&lt;/span&gt; &lt;span class="n"&gt;para&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;G&amp;lt;&amp;gt;&lt;/code&gt; masks inline content, &lt;code&gt;:masked&lt;/code&gt; masks whole blocks. The renderer hides the content by default and shows it once a condition is met — terms accepted, sign-in done, draft mode on. Use it for content released after agreement (T&amp;amp;C, paywall, age gate). Use it for credentials in code samples, PII in case studies, or unreleased details that should live in the source file but stay out of the rendered output.&lt;/p&gt;

&lt;p&gt;This hides content at render time. It is one layer of defense-in-depth, not a replacement for source-file access controls or secret-management tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  Smarter attributes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Markdown fenced code blocks accept attributes
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;javascript&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;line&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;numbers&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nf"&gt;caption&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Example&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The string after the language tag is now parsed as Podlite attributes. Previous behavior (raw meta string) is preserved when no attribute syntax is present.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;L&amp;lt;&amp;gt;&lt;/code&gt; takes per-link attributes
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;L&amp;lt;docs|https://example.com :rel&amp;lt;external&amp;gt; :class&amp;lt;button&amp;gt;&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Settings stay with the link, not scattered through surrounding prose. Existing plain &lt;code&gt;L&amp;lt;text|url&amp;gt;&lt;/code&gt; works unchanged.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;:mime-type&lt;/code&gt; accepts MIME parameters
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csvs"&gt;&lt;code&gt;&lt;span class="err"&gt;=&lt;/span&gt;&lt;span class="k"&gt;begin&lt;/span&gt; &lt;span class="k"&gt;data&lt;/span&gt; &lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="k"&gt;key&lt;/span&gt;&lt;span class="err"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;planets&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt; &lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="k"&gt;mime&lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="k"&gt;type&lt;/span&gt;&lt;span class="err"&gt;&amp;lt;'&lt;/span&gt;&lt;span class="k"&gt;text&lt;/span&gt;&lt;span class="err"&gt;/&lt;/span&gt;&lt;span class="k"&gt;csv&lt;/span&gt;&lt;span class="err"&gt;;&lt;/span&gt; &lt;span class="k"&gt;header&lt;/span&gt;&lt;span class="err"&gt;=&lt;/span&gt;&lt;span class="k"&gt;present&lt;/span&gt;&lt;span class="err"&gt;'&amp;gt;&lt;/span&gt;
  &lt;span class="k"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="k"&gt;radius&lt;/span&gt;&lt;span class="err"&gt;_&lt;/span&gt;&lt;span class="k"&gt;km&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="k"&gt;moons&lt;/span&gt;
  &lt;span class="k"&gt;Mercury&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;2440&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;0&lt;/span&gt;
  &lt;span class="k"&gt;Venus&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;6052&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;0&lt;/span&gt;
  &lt;span class="k"&gt;Earth&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;6371&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;1&lt;/span&gt;
  &lt;span class="k"&gt;Mars&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;3390&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;2&lt;/span&gt;
&lt;span class="err"&gt;=&lt;/span&gt;&lt;span class="k"&gt;end&lt;/span&gt; &lt;span class="k"&gt;data&lt;/span&gt;

&lt;span class="err"&gt;=&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="k"&gt;data&lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="k"&gt;table&lt;/span&gt; &lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="k"&gt;src&lt;/span&gt;&lt;span class="err"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nv"&gt;data:&lt;/span&gt;&lt;span class="k"&gt;planets&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt; &lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="k"&gt;caption&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="k"&gt;Inner&lt;/span&gt; &lt;span class="k"&gt;planets&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;header=present|absent&lt;/code&gt; parameter (per RFC 4180 §3) tells the renderer to treat the first row as column labels in &lt;code&gt;=table data:X&lt;/code&gt;. The MIME parameter syntax follows RFC 6838.&lt;/p&gt;

&lt;h2&gt;
  
  
  CSV and TSV tables with column projection
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=for data-table :src&amp;lt;file:./planets.csv&amp;gt;
=    :columns&amp;lt;name,radius_km&amp;gt;
=    :rename{radius_km=&amp;gt;Radius}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A new &lt;code&gt;=data-table&lt;/code&gt; block renders CSV or TSV as a table. Three source forms: inline body between &lt;code&gt;=begin data-table&lt;/code&gt; and &lt;code&gt;=end data-table&lt;/code&gt;, external file via &lt;code&gt;:src&amp;lt;file:X.csv&amp;gt;&lt;/code&gt;, or referenced &lt;code&gt;=data&lt;/code&gt; block via &lt;code&gt;:src&amp;lt;data:key&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;:columns&amp;lt;&amp;gt;&lt;/code&gt; selects which columns appear in output and in what order (names or 1-based indices). &lt;code&gt;:rename{}&lt;/code&gt; overrides column display names — sparse hash, only listed columns get overrides.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;:mime-type&lt;/code&gt; is inferred when possible: from file extension for &lt;code&gt;file:&lt;/code&gt; sources, from HTTP &lt;code&gt;Content-Type&lt;/code&gt; for remote sources, inherited from the referenced block for &lt;code&gt;data:&lt;/code&gt; sources. Explicit declaration is required only for inline body and when inference fails.&lt;/p&gt;

&lt;p&gt;Why a separate block? CSV/TSV bodies need verbatim parsing different from &lt;code&gt;=table&lt;/code&gt;'s formatted-row grammar. Putting two grammars behind one typename would force the parser to read attributes before picking a code path.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reclassifications and fixes
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;=include&lt;/code&gt; is now formally a directive, consistent with &lt;code&gt;=config&lt;/code&gt; and &lt;code&gt;=alias&lt;/code&gt;. &lt;code&gt;:folded&lt;/code&gt; got a tighter definition. &lt;code&gt;=table&lt;/code&gt; has explicit error recovery rules. Malformed rows (wrong cell count, mixed separators) now emit a warning and continue, instead of dropping the parser into silent fallback.&lt;/p&gt;

&lt;p&gt;Removed: a few outdated string attribute formats. If you write the current syntax, nothing changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Read the diff before the tag lands
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Pull request: &lt;a href="https://github.com/podlite/podlite-specs/pull/26" rel="noopener noreferrer"&gt;podlite-specs#26&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Branch: &lt;code&gt;release/v2.0&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Discussions: &lt;a href="https://github.com/podlite/podlite-specs/discussions" rel="noopener noreferrer"&gt;podlite-specs/discussions&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If something looks off — a broken example, ambiguous wording, an edge case the spec doesn't cover — this is the window. Feedback after the tag is much harder to act on.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>podlite</category>
      <category>webdev</category>
      <category>documentation</category>
    </item>
    <item>
      <title>Podlite Desktop 0.7.0 — smart lists, code folding</title>
      <dc:creator>Alexandr Zahatski</dc:creator>
      <pubDate>Mon, 30 Mar 2026 16:59:08 +0000</pubDate>
      <link>https://dev.to/zag/podlite-desktop-070-smart-lists-code-folding-am</link>
      <guid>https://dev.to/zag/podlite-desktop-070-smart-lists-code-folding-am</guid>
      <description>&lt;p&gt;Podlite Desktop 0.7.0 is out. A free, open source editor for Podlite markup — a block-based language that extends Markdown with diagrams, formulas, tables and task lists.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's new in 0.7.0
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;smart list continuation on Enter with checkbox/numbering inheritance&lt;/li&gt;
&lt;li&gt;Tab / Shift+Tab for nesting levels&lt;/li&gt;
&lt;li&gt;code folding for &lt;code&gt;=begin&lt;/code&gt;/&lt;code&gt;=end&lt;/code&gt; and &lt;code&gt;=head&lt;/code&gt; sections&lt;/li&gt;
&lt;li&gt;collapsible blocks via &lt;code&gt;:folded&lt;/code&gt; attribute&lt;/li&gt;
&lt;li&gt;input latency reduced from 860ms to near-zero&lt;/li&gt;
&lt;li&gt;session restore (cursor, scroll, folds, view mode)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjap62jpiimyfyeskbni4.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjap62jpiimyfyeskbni4.gif" alt="Smart Lists" width="900" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwivsg9vpnpwz2wgjzpcw.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwivsg9vpnpwz2wgjzpcw.gif" alt="Nesting Levels" width="720" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkm5fz5rpiee8uu979ha0.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkm5fz5rpiee8uu979ha0.gif" alt="Code Folding" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm7xe47wipea6w8jczt0y.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm7xe47wipea6w8jczt0y.gif" alt="Folded blocks" width="900" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Available on macOS, Windows, Linux.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/podlite/podlite-desktop/releases/tag/v0.7.0" rel="noopener noreferrer"&gt;Download from GitHub&lt;/a&gt; · &lt;a href="https://apps.apple.com/us/app/podlite/id1526511053" rel="noopener noreferrer"&gt;Mac App Store&lt;/a&gt; · &lt;a href="https://www.microsoft.com/store/apps/9NVNT9SNQJM8" rel="noopener noreferrer"&gt;Microsoft Store&lt;/a&gt; · &lt;a href="https://snapcraft.io/podlite" rel="noopener noreferrer"&gt;Snap Store&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Site: &lt;a href="https://podlite.org/2026/3/30/1/podlite-desktop-0-7-0-released" rel="noopener noreferrer"&gt;podlite.org&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>markdown</category>
      <category>productivity</category>
      <category>javascript</category>
    </item>
    <item>
      <title>One command to add structured markup to your AI agent</title>
      <dc:creator>Alexandr Zahatski</dc:creator>
      <pubDate>Wed, 11 Mar 2026 21:41:26 +0000</pubDate>
      <link>https://dev.to/zag/one-command-to-add-structured-markup-to-your-ai-agent-3pp9</link>
      <guid>https://dev.to/zag/one-command-to-add-structured-markup-to-your-ai-agent-3pp9</guid>
      <description>&lt;p&gt;I've been keeping a personal knowledge base for years. Notes, specs, decisions, journal entries — all in plain text files. When AI agents became part of my workflow, I started using them to write structured documents: RFC drafts, revision histories, typed notes with metadata. It worked well. Until I closed the session.&lt;/p&gt;

&lt;p&gt;The next agent would open the same file and start from scratch — not because it forgot, but because the file gave no structure to hold onto. That's when I started looking at the format, not the model.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem I kept running into
&lt;/h2&gt;

&lt;p&gt;My knowledge base has hundreds of files. An agent can read them, but reading isn't the same as understanding the shape of the file. Is this a journal entry or a spec? Is this draft published or scheduled? When was it written?&lt;/p&gt;

&lt;p&gt;Plain text doesn't answer those questions. Markdown frontmatter gets you partway — but it's a convention, not a contract. Tools may or may not parse it, and agents that haven't been told what to look for usually don't. When I asked an agent to "write a blog post and schedule it for next Thursday," it produced great prose and put a date somewhere in the text. My publishing pipeline saw nothing.&lt;/p&gt;

&lt;p&gt;The problem wasn't the agent's writing. The problem was that the file had no machine-readable structure. The agent had nowhere to put the metadata so that both humans and downstream tools could reliably find it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Podlite gives you
&lt;/h2&gt;

&lt;p&gt;Podlite is a markup language built around explicit, typed blocks. Every block has a declared type, and blocks can carry named attributes — structured metadata that travels with the content.&lt;/p&gt;

&lt;p&gt;Here's what a blog post looks like when an agent creates it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=begin pod :pubdate('2026-03-12 10:00:00') :type('page') :publishUrl('/blog/podlite-skills')

=TITLE One command to add structured markup to your AI agent

Content written by the agent...

=end pod
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;:pubdate&lt;/code&gt;, &lt;code&gt;:type&lt;/code&gt;, and &lt;code&gt;:publishUrl&lt;/code&gt; attributes aren't decorative. They're fields — any parser or tool that reads Podlite can access them directly, without guessing where in the prose to look.&lt;/p&gt;

&lt;p&gt;Podlite natively includes Markdown, so you don't throw away existing files or habits. You can use Markdown syntax inside Podlite blocks without any changes. The structure layer sits on top; the content layer stays familiar.&lt;/p&gt;

&lt;h2&gt;
  
  
  How this plays out in practice
&lt;/h2&gt;

&lt;p&gt;I ask Claude Code to draft a blog post about a recent technical decision. It creates a &lt;code&gt;.podlite&lt;/code&gt; file with &lt;code&gt;:pubdate&lt;/code&gt; set to next Wednesday and &lt;code&gt;:publishUrl&lt;/code&gt; matching the slug I described. The prose is good. The metadata is correct. I close the session.&lt;/p&gt;

&lt;p&gt;On Tuesday, I open a new session and ask a different agent to review the post and push the publish date back a week — I want more time to add a code example. The agent opens the file, reads the block header, finds &lt;code&gt;:pubdate&lt;/code&gt;, changes the timestamp. That's it.&lt;/p&gt;

&lt;p&gt;Worth slowing down on: the second agent didn't need context from the first session. The file itself carried the instructions. &lt;code&gt;:pubdate&lt;/code&gt; is not a comment or a prose sentence — it's a structured field that any agent, parser, or tool can read without guessing. What acts on it depends on your setup — in my case a publishing pipeline that scans the folder and schedules based on the attribute. But the attribute is readable by anything.&lt;/p&gt;

&lt;p&gt;This is the difference between "metadata mentioned in the file" and "metadata in the file."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fst77qh7qx5xe9azy5w3h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fst77qh7qx5xe9azy5w3h.png" alt="podlite-skills" width="800" height="907"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Installing podlite-skills
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add podlite/podlite-skills
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This adds Podlite support to your AI agent environment — Claude Code, GitHub Copilot, Cursor, Codex CLI. After installation, the agent understands Podlite block syntax, attribute conventions, and how to create well-formed structured documents.&lt;/p&gt;

&lt;p&gt;No configuration file to edit. No extension to install separately. The skill installs, and the agent knows the format. Even without a custom pipeline, you get files where an agent consistently puts type information and metadata in the same place — which means the next agent (or the next you, in six months) can read the file and know exactly what it is and what state it's in.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I actually use it for
&lt;/h2&gt;

&lt;p&gt;Three categories got noticeably better after switching:&lt;/p&gt;

&lt;p&gt;Blog posts and RFC drafts — &lt;code&gt;:pubdate&lt;/code&gt;, &lt;code&gt;:status&lt;/code&gt;, &lt;code&gt;:type&lt;/code&gt; mean any agent can pick up where another left off without me re-explaining the document's state.&lt;/p&gt;

&lt;p&gt;Decision logs — typed blocks mean I can query "all decisions made in Q1" without parsing prose.&lt;/p&gt;

&lt;p&gt;Specs with revision history — explicit block structure makes diff-reading much easier for agents doing review passes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fstpk8du9tpwzfr5tlrqr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fstpk8du9tpwzfr5tlrqr.png" alt="RFC drafts" width="792" height="727"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The files are still plain text. The agent still writes prose. The difference is that now the output holds its shape between sessions — metadata stays where it was put, structure stays parseable, and any tool or agent that opens the file later starts with something to work with rather than nothing.&lt;/p&gt;

&lt;p&gt;If you're already using an AI agent for writing or documentation, this is a one-minute install:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add podlite/podlite-skills
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;a href="https://github.com/podlite/podlite-skills" rel="noopener noreferrer"&gt;podlite-skills repository&lt;/a&gt; has the full list of supported blocks and attributes.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>writing</category>
      <category>llm</category>
    </item>
    <item>
      <title>The Block Structure of Podlite</title>
      <dc:creator>Alexandr Zahatski</dc:creator>
      <pubDate>Fri, 05 Dec 2025 08:14:04 +0000</pubDate>
      <link>https://dev.to/zag/the-block-structure-of-podlite-513m</link>
      <guid>https://dev.to/zag/the-block-structure-of-podlite-513m</guid>
      <description>&lt;p&gt;&lt;a href="https://podlite.org" rel="noopener noreferrer"&gt;Podlite&lt;/a&gt; is a small block-based markup language that is easy to read as plain text, simple to parse, and flexible enough to be used everywhere — in code, notes, technical documents, long-form writing, and even full documentation systems.&lt;/p&gt;

&lt;p&gt;One of the core ideas behind Podlite is its consistent block-based structure.&lt;br&gt;
Every meaningful element of a document — a heading, a paragraph, a list item, a table, a code block, a callout — is represented as a block. This makes documents both readable for humans and predictable for tools.&lt;/p&gt;

&lt;p&gt;Podlite supports three interchangeable block styles: &lt;code&gt;delimited&lt;/code&gt;, &lt;code&gt;paragraph&lt;/code&gt;, and &lt;code&gt;abbreviated&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn6biozuatt1z0y2i6e8r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn6biozuatt1z0y2i6e8r.png" alt="diagram here showing the three block styles and how they map to the same internal structure" width="800" height="311"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Abbreviated blocks (&lt;code&gt;=BLOCK&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;This is the most compact form.&lt;br&gt;
A block starts with &lt;code&gt;=&lt;/code&gt; followed by the block name.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight perl"&gt;&lt;code&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;head1&lt;/span&gt; &lt;span class="nv"&gt;Getting&lt;/span&gt; &lt;span class="nv"&gt;Started&lt;/span&gt;
&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;item&lt;/span&gt; &lt;span class="nv"&gt;Install&lt;/span&gt; &lt;span class="nv"&gt;Node&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;js&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;
&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;para&lt;/span&gt; &lt;span class="nv"&gt;Podlite&lt;/span&gt; &lt;span class="nv"&gt;makes&lt;/span&gt; &lt;span class="nv"&gt;documentation&lt;/span&gt; &lt;span class="nv"&gt;predictable&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="nv"&gt;easy&lt;/span&gt; &lt;span class="nv"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;automate&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;ends on the next directive or a blank line&lt;/li&gt;
&lt;li&gt;best used for simple one-line blocks&lt;/li&gt;
&lt;li&gt;cannot include configuration options (attributes)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Paragraph blocks (&lt;code&gt;=for BLOCK&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;Use this form when you want a multi-line block or need attributes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight perl"&gt;&lt;code&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="nv"&gt;code&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nv"&gt;lang&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nv"&gt;ts&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nv"&gt;console&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;log&lt;/span&gt;&lt;span class="p"&gt;("&lt;/span&gt;&lt;span class="s2"&gt;Hello from Podlite!&lt;/span&gt;&lt;span class="p"&gt;");&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;ends when a blank line appears&lt;/li&gt;
&lt;li&gt;can include complex content&lt;/li&gt;
&lt;li&gt;allows attributes such as &lt;code&gt;:lang&lt;/code&gt;, &lt;code&gt;:id&lt;/code&gt;, &lt;code&gt;:caption&lt;/code&gt;, &lt;code&gt;:nested&lt;/code&gt;, …&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Delimited blocks (&lt;code&gt;=begin BLOCK&lt;/code&gt; … &lt;code&gt;=end BLOCK&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;The most expressive form. Useful for large sections, nested blocks, or structures that require clarity.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight perl"&gt;&lt;code&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;begin&lt;/span&gt; &lt;span class="nv"&gt;nested&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nv"&gt;notify&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nv"&gt;important&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nv"&gt;Make&lt;/span&gt; &lt;span class="nv"&gt;sure&lt;/span&gt; &lt;span class="nv"&gt;you&lt;/span&gt; &lt;span class="nv"&gt;have&lt;/span&gt; &lt;span class="nv"&gt;administrator&lt;/span&gt; &lt;span class="nv"&gt;privileges&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;end&lt;/span&gt; &lt;span class="nv"&gt;nested&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;explicit start and end markers&lt;/li&gt;
&lt;li&gt;perfect for code, lists, tables, notifications, markdown, formulas&lt;/li&gt;
&lt;li&gt;can contain other blocks, including nested ones&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These block styles differ in syntax convenience, but all produce the same internal structure.&lt;/p&gt;

&lt;p&gt;Regardless of which syntax you choose:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;all three forms represent the same &lt;strong&gt;block type&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;attributes apply the same way (&lt;code&gt;:lang&lt;/code&gt;, &lt;code&gt;:caption&lt;/code&gt;, &lt;code&gt;:id&lt;/code&gt;, …)&lt;/li&gt;
&lt;li&gt;tools and renderers treat them uniformly&lt;/li&gt;
&lt;li&gt;nested blocks work identically&lt;/li&gt;
&lt;li&gt;you can freely mix styles inside a document&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Project site: &lt;a href="https://podlite.org" rel="noopener noreferrer"&gt;https://podlite.org&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/podlite" rel="noopener noreferrer"&gt;https://github.com/podlite&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Specification

&lt;ul&gt;
&lt;li&gt;(HTML): &lt;a href="https://podlite.org/specification" rel="noopener noreferrer"&gt;https://podlite.org/specification&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;source: &lt;a href="https://github.com/podlite/podlite-specs" rel="noopener noreferrer"&gt;https://github.com/podlite/podlite-specs&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Roadmap: &lt;a href="https://podlite.org/#Roadmap" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://podlite.org/#Roadmap" rel="noopener noreferrer"&gt;https://podlite.org/#Roadmap&lt;/a&gt;
&lt;/li&gt;

&lt;/ul&gt;

</description>
      <category>opensource</category>
      <category>documentation</category>
      <category>tutorial</category>
      <category>programming</category>
    </item>
    <item>
      <title>Podlite Desktop Editor 0.6.1 is out</title>
      <dc:creator>Alexandr Zahatski</dc:creator>
      <pubDate>Sat, 01 Nov 2025 10:51:12 +0000</pubDate>
      <link>https://dev.to/zag/podlite-desktop-editor-061-is-out-3e0i</link>
      <guid>https://dev.to/zag/podlite-desktop-editor-061-is-out-3e0i</guid>
      <description>&lt;p&gt;Just released a new version of Podlite Desktop Editor - a free markup editor that works with Markdown and extends it with some pretty useful features. &lt;/p&gt;

&lt;h2&gt;
  
  
  What's Podlite?
&lt;/h2&gt;

&lt;p&gt;Think of it as Markdown++. All your standard Markdown works via &lt;code&gt;=markdown&lt;/code&gt; blocks. It's block-oriented, so everything stays clean and readable.  Check out the Podlite Quick Tour: &lt;a href="https://podlite.org/quick-tour" rel="noopener noreferrer"&gt;https://podlite.org/quick-tour&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What's new in 0.6.1
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9x7pt0jdo3xccc5i19nt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9x7pt0jdo3xccc5i19nt.png" alt="Editor screenshot" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Rebuilt the editor from scratch with updated libraries. Here's what changed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Syntax highlighting that actually works well&lt;/li&gt;
&lt;li&gt;Inline formatting: &lt;code&gt;B&amp;lt;bold&amp;gt;&lt;/code&gt;, &lt;code&gt;I&amp;lt;italic&amp;gt;&lt;/code&gt;, &lt;code&gt;C&amp;lt;code&amp;gt;&lt;/code&gt;, &lt;code&gt;L&amp;lt;links&amp;gt;&lt;/code&gt;, &lt;code&gt;O&amp;lt;strikethrough&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Click links with Cmd/Ctrl to open them&lt;/li&gt;
&lt;li&gt;Link to other files with &lt;code&gt;file:&lt;/code&gt; schema - they open in new windows&lt;/li&gt;
&lt;li&gt;Text search (finally!)&lt;/li&gt;
&lt;li&gt;Fixed a bunch of window resize bugs&lt;/li&gt;
&lt;li&gt;macOS Tahoe support&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can toggle between half-screen and full-screen preview with keyboard shortcuts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Download
&lt;/h2&gt;

&lt;p&gt;Available free on all platforms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Github releases: &lt;a href="https://github.com/podlite/podlite-desktop/releases" rel="noopener noreferrer"&gt;https://github.com/podlite/podlite-desktop/releases&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft Store, Snap Store, Mac App Store&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Try the web version first if you want: &lt;a href="https://pod6.in" rel="noopener noreferrer"&gt;https://pod6.in&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Full details: &lt;a href="https://podlite.org/2025/11/1/1/podlite-desktop-editor-0-6-1-released" rel="noopener noreferrer"&gt;https://podlite.org/2025/11/1/1/podlite-desktop-editor-0-6-1-released&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Source code: &lt;a href="https://github.com/podlite/podlite-desktop" rel="noopener noreferrer"&gt;https://github.com/podlite/podlite-desktop&lt;/a&gt;&lt;/p&gt;

</description>
      <category>writing</category>
      <category>programming</category>
      <category>markdown</category>
      <category>webdev</category>
    </item>
    <item>
      <title>📝 Inline text formatting in Podlite editor</title>
      <dc:creator>Alexandr Zahatski</dc:creator>
      <pubDate>Sun, 26 Oct 2025 15:30:09 +0000</pubDate>
      <link>https://dev.to/zag/inline-text-formatting-in-podlite-editor-4gnm</link>
      <guid>https://dev.to/zag/inline-text-formatting-in-podlite-editor-4gnm</guid>
      <description>&lt;p&gt;Podlite supports rich inline text formatting within paragraphs and table cells:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2dcfdtp257mx3u493f0x.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2dcfdtp257mx3u493f0x.gif" alt=" " width="760" height="570"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ✨ Supported Formatting Codes
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Code&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;th&gt;Result&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;B&amp;lt;&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Bold text&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;B&amp;lt;important&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;important&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;I&amp;lt;&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;em&gt;Italic text&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;I&amp;lt;emphasis&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;em&gt;emphasis&lt;/em&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;C&amp;lt;&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Code/monospace&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;C&amp;lt;function()&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;function()&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;L&amp;lt;&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;🔗 Links&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;L&amp;lt;https://example.com&lt;/code&gt;|&lt;code&gt;click here&amp;gt;&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;&lt;a href="https://example.com" rel="noopener noreferrer"&gt;click here&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;O&amp;lt;&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;del&gt;Strikethrough&lt;/del&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;O&amp;lt;deleted text&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;del&gt;deleted text&lt;/del&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These formatting codes can be combined within any paragraph or table cell to create rich, formatted content.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://podlite.org" rel="noopener noreferrer"&gt;Podlite&lt;/a&gt; is a lightweight block-based markup language designed for flexibility and ease of use.&lt;/p&gt;

</description>
      <category>tooling</category>
      <category>tutorial</category>
      <category>writing</category>
    </item>
    <item>
      <title>Web editor with Podlite markup language syntax highlighting is here!</title>
      <dc:creator>Alexandr Zahatski</dc:creator>
      <pubDate>Mon, 13 Jan 2025 17:39:25 +0000</pubDate>
      <link>https://dev.to/zag/web-editor-with-podlite-markup-language-syntax-highlighting-is-here-2la</link>
      <guid>https://dev.to/zag/web-editor-with-podlite-markup-language-syntax-highlighting-is-here-2la</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fieth624nmdaq9bzw1h58.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fieth624nmdaq9bzw1h58.gif" alt="Web Editor with Podlite markup language syntax highlighting" width="720" height="684"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can check it out at &lt;a href="https://pod6.in/" rel="noopener noreferrer"&gt;pod6.in&lt;/a&gt;!  &lt;/p&gt;

&lt;p&gt;It was included as part of &lt;a href="https://github.com/podlite/podlite/releases/tag/v0.0.45" rel="noopener noreferrer"&gt;Podlite v0.0.45&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
      <category>podlite</category>
    </item>
    <item>
      <title>Podlite: Powering Up Knowledge Management</title>
      <dc:creator>Alexandr Zahatski</dc:creator>
      <pubDate>Fri, 04 Oct 2024 06:00:00 +0000</pubDate>
      <link>https://dev.to/zag/podlite-powering-up-knowledge-management-1knn</link>
      <guid>https://dev.to/zag/podlite-powering-up-knowledge-management-1knn</guid>
      <description>&lt;p&gt;Hey  👋 Exciting news from the &lt;a href="https://podlite.org" rel="noopener noreferrer"&gt;Podlite&lt;/a&gt; project!  Podlite keeps evolving, opening up new possibilities for knowledge management. &lt;/p&gt;

&lt;p&gt;Check out this list of recent achievements in the &lt;a href="https://github.com/podlite/podlite-web/" rel="noopener noreferrer"&gt;Podlite-web&lt;/a&gt; package for creating web projects:&lt;/p&gt;

&lt;h2&gt;
  
  
  What's New? 🚀
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Plugin Support&lt;/strong&gt;: Extend functionality easily&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Global Term Index &amp;amp; Full-Text Search&lt;/strong&gt;: Find info fast&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React Integration&lt;/strong&gt;: Build dynamic, interactive pages&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automatic ToC &amp;amp; Breadcrumbs&lt;/strong&gt;: Improve navigation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code Syntax Highlighting&lt;/strong&gt;: Make your docs shine&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  See It in Action 👀
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The Raku Knowledge Base v1.0 (Artistic 2.0 License)
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcvtg3bop0oq4cnh5h046.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcvtg3bop0oq4cnh5h046.jpg" alt="The Raku Knowledge Base" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check out &lt;a href="https://raku-knowledge-base.podlite.org/" rel="noopener noreferrer"&gt;The Raku Knowledge Base&lt;/a&gt; - a comprehensive, open-source knowledge base for the Raku programming language built with Podlite-web.&lt;/p&gt;

&lt;p&gt;Raku (formerly Perl 6) is a powerful, multi-paradigm language. This knowledge base aims to make it more accessible and easier to learn.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📚 Official Raku documentation&lt;/li&gt;
&lt;li&gt;📦 User module docs&lt;/li&gt;
&lt;li&gt;💻 Code example collections&lt;/li&gt;
&lt;li&gt;🔍 Full-text search&lt;/li&gt;
&lt;li&gt;🧭 Easy navigation with breadcrumbs&lt;/li&gt;
&lt;li&gt;🔗 Auto-generated term index&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can read more about the &lt;a href="https://raku-knowledge-base.podlite.org/" rel="noopener noreferrer"&gt;The Raku Knowledge Base&lt;/a&gt; in detail in the official announcement on the Podlite website &lt;a href="https://podlite.org/a5ZK1" rel="noopener noreferrer"&gt;podlite.org/a5ZK1&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get Involved 🤝
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🌟 Star the repo: &lt;a href="https://github.com/zag/raku-knowledge-base" rel="noopener noreferrer"&gt;https://github.com/zag/raku-knowledge-base&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🐛 Report issues: &lt;a href="https://github.com/zag/raku-knowledge-base/issues" rel="noopener noreferrer"&gt;https://github.com/zag/raku-knowledge-base/issues&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🛠️ Contribute: PRs welcome!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use Podlite for your next documentation project!&lt;br&gt;
Let me know what you think or if you have any questions!&lt;/p&gt;

&lt;p&gt;Happy coding! 💻✨&lt;br&gt;
thank you!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>documentation</category>
      <category>podlite</category>
      <category>rakulang</category>
    </item>
    <item>
      <title>Excited to announce that Podlite's TypeScript implementation now supports formulas! 🧮✨</title>
      <dc:creator>Alexandr Zahatski</dc:creator>
      <pubDate>Mon, 27 May 2024 08:12:11 +0000</pubDate>
      <link>https://dev.to/zag/excited-to-announce-that-podlites-typescript-implementation-now-supports-formulas-55g4</link>
      <guid>https://dev.to/zag/excited-to-announce-that-podlites-typescript-implementation-now-supports-formulas-55g4</guid>
      <description>&lt;p&gt;I'm excited to announce that &lt;a href="https://github.com/podlite/podlite" rel="noopener noreferrer"&gt;podlite&lt;/a&gt; now supports formulas!&lt;/p&gt;

&lt;p&gt;You can enter formulas using the code &lt;code&gt;F&amp;lt;&amp;gt;&lt;/code&gt; and the block &lt;code&gt;=formula&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwhernpyc8qigh2yqv3rw.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwhernpyc8qigh2yqv3rw.gif" alt="podlite fomulas" width="720" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Within the &lt;code&gt;=markdown&lt;/code&gt; block, use &lt;code&gt;$...$&lt;/code&gt; for inline formulas and &lt;code&gt;$$...$$&lt;/code&gt; for display formulas.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pod6.in/#p=%3Dfor+formula+%3Acaption%28%27The+Cauchy-Schwarz+Inequality%27%29%0A+++%5Cleft%28+%5Csum_%7Bk%3D1%7D%5En+a_k+b_k+%5Cright%29%5E2+%5Cleq+%5Cleft%28+%5Csum_%7Bk%3D1%7D%5En+a_k%5E2+%5Cright%29+%5Cleft%28+%5Csum_%7Bk%3D1%7D%5En+b_k%5E2+%5Cright%29%0A%0A%0A%0AThis+is+an+inline++example%3A+F%3C+y+%3D+%5Csqrt%7B3x-1%7D%2B%281%2Bx%29%5E2+%3E%0A%0A%3Dbegin+markdown%0A%0A++*+this+is+a+example+of+%60formula%60+inside+markdown%3A+%24y+%3D+%5Csqrt%7B3x-1%7D%2B%281%2Bx%29%5E2%24%0A++%0A++and+block%3A+%0A++%0A++%24%24%0A++%5Cleft%28+%5Csum_%7Bk%3D1%7D%5En+a_k+b_k+%5Cright%29%5E2+%5Cleq+%5Cleft%28+%5Csum_%7Bk%3D1%7D%5En+a_k%5E2+%5Cright%29+%5Cleft%28+%5Csum_%7Bk%3D1%7D%5En+b_k%5E2+%5Cright%29%0A++%24%24%0A++%0A++%0A%0A%3Dend+markdown%0A%0A" rel="noopener noreferrer"&gt;Example on pod6.in&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For more information, see &lt;a href="https://en.wikibooks.org/wiki/LaTeX/Mathematics" rel="noopener noreferrer"&gt;LaTeX/Mathematics&lt;/a&gt; in Wikibooks.&lt;/p&gt;

&lt;p&gt;thank you!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>podlite</category>
      <category>documentation</category>
    </item>
    <item>
      <title>Podlite v1.0 released: A lightweight block-oriented markup language for organizing knowledge</title>
      <dc:creator>Alexandr Zahatski</dc:creator>
      <pubDate>Tue, 23 Apr 2024 20:03:08 +0000</pubDate>
      <link>https://dev.to/zag/podlite-v10-released-a-lightweight-block-oriented-markup-language-for-organizing-knowledge-313l</link>
      <guid>https://dev.to/zag/podlite-v10-released-a-lightweight-block-oriented-markup-language-for-organizing-knowledge-313l</guid>
      <description>&lt;h2&gt;
  
  
  What is Podlite?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://podlite.org" rel="noopener noreferrer"&gt;Podlite&lt;/a&gt;, a lightweight block-oriented markup language that's all about flexibility and ease of use. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Unbound by any specific domain, programming language, or concept, Podlite stands out as a universal markup language&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In addition, the support for Markdown markup as a standard block adds convenience and allows for the use of familiar syntax for text formatting&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It's perfect for documentation, educational materials, blogging, and much more for organizing knowledge.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;One of the key features of Podlite is its extensibility. This allows for defining unique and domain-specific blocks and expanding the language's functionality according to the requirements of your project.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/podlite/podlite-specs" rel="noopener noreferrer"&gt;The Podlite specification&lt;/a&gt; is published under the Artistic license 2.0.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Key Features of Podlite
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Block-based structure:&lt;/strong&gt; At the core of Podlite is the concept of "blocks," which are the fundamental units of any document. These blocks can have defined attributes and support the inclusion of rich content.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Rich linking capabilities:&lt;/strong&gt; Podlite allows blocks, terms, definitions to be linked with various types of relationships, enhancing the interconnectivity and navigability of your documents.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Support for formulas and Markdown:&lt;/strong&gt; Whether you need to insert complex mathematical formulas or prefer the simplicity of Markdown, Podlite has you covered. It seamlessly integrates both, giving you the flexibility to choose how you want to write.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Extensible and customizable:&lt;/strong&gt; Extend Podlite with custom blocks and inline codes, tailoring the language to meet your specific needs.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Podlite v1.0 Release Notes
&lt;/h2&gt;

&lt;p&gt;Podlite has introduced a range of new features designed to enhance the flexibility and usability of the markup language:&lt;/p&gt;

&lt;h3&gt;
  
  
  Customization and Extensibility
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Refactoring of Custom blocks:&lt;/strong&gt; Enhanced customization through refactored named custom blocks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Inline Markup extension:&lt;/strong&gt; &lt;code&gt;M&amp;lt;&amp;gt;&lt;/code&gt; now extends inline markup features, allowing for more expressive text formatting.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Processing and data handling
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Markdown support:&lt;/strong&gt; The `&lt;code&gt;=markdown&lt;/code&gt; block is now a standard block. Integration of a new markdown mode for the parser.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;MIME type specification:&lt;/strong&gt; Added &lt;code&gt;:mime-type&lt;/code&gt; attribute for &lt;code&gt;=include&lt;/code&gt; and &lt;code&gt;=data&lt;/code&gt; blocks, facilitating better handling of diverse data types.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Data schema introduction:&lt;/strong&gt; Implemented &lt;code&gt;data:&lt;/code&gt; schema for use in &lt;code&gt;=picture&lt;/code&gt; and &lt;code&gt;=table&lt;/code&gt; blocks, simplifying data embedding.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Embedding binary data:&lt;/strong&gt; Support for embedding binary data directly into documents with &lt;code&gt;:filename&lt;/code&gt; and &lt;code&gt;:encoding&lt;/code&gt; attributes in &lt;code&gt;=data&lt;/code&gt; blocks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;CSV tables:&lt;/strong&gt; Capability to render tables directly from CSV files with the enhanced &lt;code&gt;=table&lt;/code&gt; block.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Content Structuring and Navigation
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Selectors:&lt;/strong&gt; Introduced selectors for dynamic content interaction and manipulation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Comprehensive TOC:&lt;/strong&gt; Enhanced &lt;code&gt;=toc&lt;/code&gt; block for generating detailed tables of contents.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Including external content:&lt;/strong&gt; New &lt;code&gt;=include&lt;/code&gt; block for incorporating external files and documents seamlessly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Advanced table formatting:&lt;/strong&gt; New &lt;code&gt;=row&lt;/code&gt; and &lt;code&gt;=cell&lt;/code&gt; blocks with &lt;code&gt;:header&lt;/code&gt;, &lt;code&gt;:rowspan&lt;/code&gt;, and &lt;code&gt;:colspan&lt;/code&gt; attributes for intricate table designs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Additional attributes for linking:&lt;/strong&gt; Addition of &lt;code&gt;:id&lt;/code&gt;, &lt;code&gt;:caption&lt;/code&gt;, and &lt;code&gt;:lang&lt;/code&gt; attributes to enrich document metadata and accessibility.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Contextual backlinks:&lt;/strong&gt; &lt;code&gt;W&amp;lt;&amp;gt;&lt;/code&gt; for creating contextual backlinks, enhancing document navigation and reference capabilities.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Foldable content:&lt;/strong&gt; New &lt;code&gt;:folded&lt;/code&gt; attribute to toggle visibility of content, and &lt;code&gt;:folded-levels&lt;/code&gt; for nested visibility control in table of contents (TOC) blocks.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Document Presentation Enhancements
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Notification blocks:&lt;/strong&gt; Introduced notification blocks with a &lt;code&gt;:notify&lt;/code&gt; attribute, improving interactivity within documents.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Task lists:&lt;/strong&gt; Introduction of task lists with the &lt;code&gt;=item&lt;/code&gt; block and a &lt;code&gt;:checked&lt;/code&gt; attribute to manage to-do items effectively.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Mistake marking:&lt;/strong&gt; Introduced &lt;code&gt;O&amp;lt;&amp;gt;&lt;/code&gt; for highlighting and marking mistakes, useful in educational and review settings.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Text positioning:&lt;/strong&gt; New attributes &lt;code&gt;J&amp;lt;&amp;gt;&lt;/code&gt; for justifying and &lt;code&gt;H&amp;lt;&amp;gt;&lt;/code&gt; for horizontal positioning of text.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Emojis:&lt;/strong&gt; Added support for emojis with &lt;code&gt;E&amp;lt;&amp;gt;&lt;/code&gt;, enriching the expressiveness of documents.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Picture insertions:&lt;/strong&gt; New features in the &lt;code&gt;=picture&lt;/code&gt; block and &lt;code&gt;P&amp;lt;&amp;gt;&lt;/code&gt; for improved image handling.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Mathematical formulas:&lt;/strong&gt; Enhanced support for complex mathematical formulas with &lt;code&gt;=formula&lt;/code&gt; and &lt;code&gt;F&amp;lt;&amp;gt;&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Deprecated/removed
&lt;/h3&gt;

&lt;p&gt;With the introduction of new functionalities, certain features have been deprecated or removed to streamline Podlite:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;P&amp;lt;toc:&amp;gt;&lt;/code&gt; due to &lt;code&gt;=toc&lt;/code&gt; block,&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;P&amp;lt;man:&amp;gt;&lt;/code&gt;, &lt;code&gt;P&amp;lt;doc:&amp;gt;&lt;/code&gt; due to &lt;code&gt;=include&lt;/code&gt; block,&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;:margin&lt;/code&gt; attribute, &lt;code&gt;=encoding&lt;/code&gt; directive, Declarator block been removed due to redundancy.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Contextual aliases, the &lt;code&gt;=finish&lt;/code&gt; directive, and markers in comments, &lt;code&gt;P&amp;lt;&amp;gt;&lt;/code&gt; - placement links, &lt;code&gt;:formatted&lt;/code&gt; attribute, &lt;code&gt;:like&lt;/code&gt; attribute have been removed due to redundancy and enhancements in other areas.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Summary of Release
&lt;/h2&gt;

&lt;p&gt;This release of Podlite introduces significant enhancements aimed at improving the flexibility, customization, and user interaction of the markup language. With the addition of new blocks, attributes, and support for rich media, Podlite is better equipped to handle a variety of documentation needs.&lt;/p&gt;

&lt;p&gt;Concurrently, the deprecation and removal of certain features have simplified the toolset, reducing overlap and enhancing user experience. These changes reflect a commitment to the continuous improvement of Podlite, ensuring it remains a versatile and powerful tool for content creators.&lt;/p&gt;

&lt;h2&gt;
  
  
  Feedback and Contributions
&lt;/h2&gt;

&lt;p&gt;Feedback is encouraged and can be provided through &lt;a href="https://github.com/podlite/podlite-specs/discussions" rel="noopener noreferrer"&gt;Github Discussions&lt;/a&gt;. This input is crucial for the ongoing development and enhancement of Podlite.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thank You!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Find out more:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Specification : &lt;a href="https://github.com/podlite/podlite-specs" rel="noopener noreferrer"&gt;https://github.com/podlite/podlite-specs&lt;/a&gt;, &lt;a href="https://podlite.org/specification" rel="noopener noreferrer"&gt;[in html format]&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Website: &lt;a href="https://podlite.org" rel="noopener noreferrer"&gt;https://podlite.org&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Web playground: &lt;a href="https://pod6.in" rel="noopener noreferrer"&gt;https://pod6.in&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Github:  &lt;a href="https://github.com/podlite" rel="noopener noreferrer"&gt;https://github.com/podlite&lt;/a&gt; ⭐️&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Stay tuned for more updates and happy documenting!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>podlite</category>
      <category>webdev</category>
      <category>opensource</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Introducing Podlite, a lightweight block-based markup language</title>
      <dc:creator>Alexandr Zahatski</dc:creator>
      <pubDate>Wed, 21 Feb 2024 08:20:54 +0000</pubDate>
      <link>https://dev.to/zag/introducing-podlite-a-lightweight-block-based-markup-language-48n8</link>
      <guid>https://dev.to/zag/introducing-podlite-a-lightweight-block-based-markup-language-48n8</guid>
      <description>&lt;p&gt;Hey everyone! 🚀&lt;/p&gt;

&lt;p&gt;I'm excited to introduce a new markup language called &lt;a href="https://podlite.org/specification" rel="noopener noreferrer"&gt;Podlite&lt;/a&gt;. It's designed to make  documentation, blogging, educational materials, and much more, a breeze to create and manage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key features of Podlite include:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Blocks as the basic unit:&lt;/strong&gt; Each document is built from blocks, which are the basic units that can have their own defined attributes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexible linking:&lt;/strong&gt; Link blocks together in various relationships.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Formula support:&lt;/strong&gt; Perfect for academic and scientific documentation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Markdown support:&lt;/strong&gt; Love Markdown? Podlite does too. It includes a standard block for Markdown, so you can switch modes seamlessly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rich content support:&lt;/strong&gt; Tables, images, table of contents, and all sorts of lists are all supported.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extensibility:&lt;/strong&gt; Extend Podlite with your own custom blocks and inline codes to fit your needs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Podlite doesn't adhere to any specific programming language. This allows it &lt;strong&gt;to be embedded&lt;/strong&gt; in any programming language that supports block-level comments, or multi-line comments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For example, in JavaScript:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/*
=head1 Documentation

=begin Mermaid
graph LR
        A--&amp;gt;B
        B--&amp;gt;C
        C--&amp;gt;A
        D--&amp;gt;C
=end Mermaid
=begin markdown

# header

 * text
 * text

=end markdown
*/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://pod6.in/#p=%3Dhead1+Documentation%0A%0AThis+is+a+general+overview%3A%0A%0A%3Dbegin+Mermaid%0Agraph+LR%0A++++++++A--%3EB%0A++++++++B--%3EC%0A++++++++C--%3EA%0A++++++++D--%3EC%0A%3Dend+Mermaid%0A%3Dbegin+markdown%0A%0A%23+header%0A%0A+*+text%0A+*+text%0A%0A%3Dend+markdown" rel="noopener noreferrer"&gt;open this sample at pod6.in &lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Blocks can be represented in three equivalent forms: delimited style, paragraph style, and abbreviated style.&lt;/strong&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=begin table :caption&amp;lt;Summary&amp;gt;
  Constants           1
  Variables           10
=end table

=for table :caption&amp;lt;Summary&amp;gt;
  Constants           1
  Variables           10

=table
  Constants           1
  Variables           10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://pod6.in/#p=%0A%3Dbegin+table++%3Acaption%3CSummary%3E%0A++Constants+++++++++++1%0A++Variables+++++++++++10%0A%3Dend+table%0A%0A%3Dfor+table+%3Acaption%3CSummary%3E%0A++Constants+++++++++++1%0A++Variables+++++++++++10%0A%0A%3Dtable%0A++Constants+++++++++++1%0A++Variables+++++++++++10%0A" rel="noopener noreferrer"&gt;open this sample at pod6.in&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Podlite is perfect for creating documentation, blogs, educational materials, and much more.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Current status of Podlite:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;currently in &lt;strong&gt;beta&lt;/strong&gt;, with ongoing work for the next version.&lt;/li&gt;
&lt;li&gt;there's a &lt;a href="https://github.com/podlite/podlite" rel="noopener noreferrer"&gt;reference implementation&lt;/a&gt; driving &lt;a href="https://github.com/podlite/podlite-web" rel="noopener noreferrer"&gt;web publishing package&lt;/a&gt;  and &lt;a href="https://pod6.in" rel="noopener noreferrer"&gt;a web editor&lt;/a&gt; .&lt;/li&gt;
&lt;li&gt;and yes, there's an editor/viewer for desktop too: &lt;a href="https://github.com/podlite/podlite-desktop" rel="noopener noreferrer"&gt;https://github.com/podlite/podlite-desktop&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is an early announcement to gauge interest in this markup language.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Find out more:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Specification : &lt;a href="https://github.com/podlite/podlite-specs" rel="noopener noreferrer"&gt;https://github.com/podlite/podlite-specs&lt;/a&gt;, &lt;a href="https://podlite.org/specification" rel="noopener noreferrer"&gt;[in html format]&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;github:  &lt;a href="https://github.com/podlite" rel="noopener noreferrer"&gt;https://github.com/podlite&lt;/a&gt; ⭐️&lt;/li&gt;
&lt;li&gt;website: &lt;a href="https://podlite.org" rel="noopener noreferrer"&gt;https://podlite.org&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;web playground: &lt;a href="https://pod6.in" rel="noopener noreferrer"&gt;https://pod6.in&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://github.com/podlite/podlite-specs/blob/main/S26-documentation.pod6" rel="noopener noreferrer"&gt;The Podlite specification&lt;/a&gt; is published under the Artistic license 2.0.&lt;/p&gt;

&lt;p&gt;I'd be incredibly grateful for any feedback and ideas.&lt;/p&gt;

&lt;p&gt;Thank you so much for your time!&lt;/p&gt;

&lt;p&gt;Best regards, Alex&lt;/p&gt;

</description>
      <category>podlite</category>
      <category>documentation</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
