Releases: stamat/poops
Releases · stamat/poops
Release list
v1.5.3
v1.5.2
v1.5.1
v1.5.0
- Support for named resizes which poops-images 1.2.1 brings. Now you can pass a name to the image filter and it will create a srcset from the named resizes. Useful for creating galleries
- Support for GFM footnotes in markdown. Via a custom built
marked-github-footnotewith the aim of the exact behaviour as the ones here on GitHub.
Full Changelog: v1.4.1...v1.5.0
v1.4.1
page.content variable exposed so toc filter can generate toc on demand
Full Changelog: v1.4.0...v1.4.1
v1.4.0
Added
- Glob and array inputs for styles.
styles.innow accepts an array of
entry points and/or glob patterns — the same interface scripts have had all
along. Globs must use/separators (even on Windows), matches are sorted
for deterministic build order, and sass partials (_*.scss) are skipped
automatically since they're imports, not entry points. Multiple resolved
entries require a directoryout— pointing several inputs at a single
output file is an error. watch: true. Setwatchtotrueand poops derives the watch list
from every task'sinpath — scripts, styles, reactor, markup, copy and
images (including reactorcomponentand design-tokentokenPaths). File
entries watch their parent directory so sibling imports still retrigger a
rebuild. Imports reaching outside a task's own directory aren't covered —
use an explicitwatcharray for that.includePathsis deliberately
excluded (it defaults tonode_modules).- GFM emoji shortcodes in markdown —
:shipit:and friends render as
emoji in both template engines. ✨ - GFM alerts in markdown —
> [!NOTE],> [!TIP],> [!IMPORTANT],
> [!WARNING]and> [!CAUTION]blockquotes render as styled alert
callouts, plus a custom[!INFO]variant.
Changed
- README and docs expanded: transpiling CSS/JS guides now cover glob inputs,
and the config reference documentswatch: true. - Dependency refresh via
npm update.
Full Changelog: v1.3.0...v1.4.0
v1.3.0
Added
- Custom markup engines.
enginenow accepts a module specifier — an npm
package name or a project-relative path — in addition to"nunjucks"/
"liquid". The module's default export is an engine class implementing a
small contract (render,renderString,registerFilters,registerTags,
indexableExtensions,markupExtensions, and optional
replaceOutExtensions). Extend a built-in as the easy path — deep imports
likepoops/lib/markup/engines/liquid.jsare supported. This is what powers
the separatepoops-shopifyplugin. - Navigation tree (
nav). Generates your page hierarchy as sidebar-ready
data, exposed both as thenavtemplate global (built in a pre-pass, always
reflecting the current build) and as a nestednav.json. Subpages nest from
URL structure. Options:output,root,collections
(true|false| allowlist |"index"),home. Front matter:
order,nav: false,navTitle. paginationshorthand tag —{% raw %}{% pagination page.pagination %}{% endraw %}renders
prev/next links in one line, in both engines.tocfilter — build a table of contents from rendered HTML headings.
Headings now also get slugids plus permalink anchors (.heading-anchor).--base-url/-uCLI flag — override the markup base URL prefix at
build time (overrides config). The Pages workflow now passes the repo name
automatically, so project sites deploy under the correct subpath.
Changed
- Engine resolution is now async/lazy and resolves against your project's
node_modules, so afile:-linked poops still finds a custom engine. _url/page.urlis now output-relative (getPageUrlRelativeToOutput) so
it matches the URLs innav.json— sidebar active-state checks
(item.url == page.url) now fire correctly.- Markdown rendering moved to one shared renderer so both engines produce
identical output (highlighting + heading anchors).
Fixed
- Watch loop guard — compiler output landing inside a watched directory
(e.g. a Shopify theme'sassets/) no longer retriggers its own compiler
forever. Only the compiler's own extensions are skipped in its output zone. path.join→path.resolveacross the markup pipeline — fixes
absolute/cross-drive output paths (Windows-friendliness).
Full Changelog: v1.2.4...v1.3.0
v1.2.4
Added
- Optional
imagesrunner viapoops-images(imagesconfig). - Cache-backed image helpers: better
{% raw %}{% image %}{% endraw %}output plus newexifandimagesfilters. - Multiple script entry files via arrays/globs.
- LiveReload watched-extension controls (
extraExts,exts). - Windows CI workflow coverage.
Image usage + gallery sample
Single image with EXIF caption:
{% raw %}{% set meta = 'static/photo.jpeg' | exif %}
<figure>
{% image 'static/photo.jpeg', alt='Sendai at dusk' %}
{% if meta %}
<figcaption>
{{ meta.dateTime | date("MMMM D, YYYY") }}
{% if meta.gps %}
— <a href="{{ meta.gps.googleMapsUrl }}">{{ meta.gps.latitude.formatted }}, {{ meta.gps.longitude.formatted }}</a>
{% endif %}
</figcaption>
{% endif %}
</figure>{% endraw %}Gallery from the image cache:
{% raw %}{% for group in 'images' | images | sort(reverse=true, attribute='date') | groupby("date", "year") %}
<h2>{{ group.key }}</h2>
<div class="grid">
{% for img in group.items %}
<figure>
{% image img.path, alt='', sizes='(max-width: 640px) 50vw, 25vw' %}
</figure>
{% endfor %}
</div>
{% endfor %}{% endraw %}Changed
- Image processing now runs before markup so templates read a fresh
.poops-images-cache.json. - Collections/pagination behavior tightened:
- Pagination pages generate only when a collection index exists.
- Stale pagination directories are pruned when page counts shrink.
- Missing collection dates now fall back to file
mtimewith a warning. poops-imageslogging defaults toverbose: false(settruefor per-file logs).- Docs expanded for collections, images, filters, and config examples.
Fixed
- Correct non-zero exit code for failing build-only runs.
- Better watch-mode behavior for atomic saves, data reloads, and deleted source cleanup.
- Safer
<img>attribute escaping. - Correct script output paths for multi-directory entries.
- Removed redundant minify flow.
- Cross-platform path/glob fixes (especially Windows).
Full Changelog: v1.2.3...v1.2.4
v1.2.3
groupby filter and wordcount featues for blogging
Full Changelog: v1.2.2...v1.2.3
v1.2.2
relativePathPrefix updated for root dirctory, or optional baseURL that overrides it
Full Changelog: v1.2.1...v1.2.2