Releases: loopwerk/Saga
Releases · loopwerk/Saga
2.25.3
2.25.2
Documentation Changes
- Improve documentation
2.25.1
Bugfixes
- Revert
sequenceandpublicationDateInFilenameback to free functions
Release 2.25.0 movedsequenceandpublicationDateInFilenameto theSaganamespace, but it turns out this is not nice when you combine this with your own item processors and/or SagaUtils. I've now reverted this change. Sorry if you already upgraded to 2.25.0 earlier today!
2.25.0
New Features
- Migrate 5 global functions and one global variable to the Saga namespace
- Add built-in support for the
slugfrontmatter property
2.24.0
New Features
- Add support for sitemaps (#45 by kevinrenskers)
- Item title should fallback to frontmatter's title, and only then to the filename
- Nested processing steps (#46 by kevinrenskers)
- Add a caching mechanism for fetched items
Documentation Changes
- Add new how-to guides
2.23.0
New Features
- Simplify logic and speed up the write step on sites with lots of files (#43 by kevinrenskers)
Simplifies Saga's internal architecture by removing four internal types (FileContainer, ProcessStep<M>, AnyProcessStep, ItemBox<M>) and replacing them with simpler data structures.
- File tracking:
FileContainerclass replaced by a tuple array[(path: Path, relativePath: Path)]with aSet<Path>for handled state and a[String: String]dict for content hashes. - Pipeline steps: Type-erased wrapper classes replaced by closure pairs
(read: ReadStep, write: WriteStep)stored directly onSaga. - Writer context:
Writer.runnow takes aWriterContext<M>struct instead of 6 individual parameters. - Resource lookup: Per-item linear scan of all files replaced by a precomputed dictionary, resulting in a ~2.5x faster write phase on file-heavy sites (it saves 0.5 seconds on loopwerk.io).
- Added a new convenience
groupedWriter, a version ofpartitionedWriterthat takes a key path.yearWriternow uses it under the hood.
The public API is unchanged.
2.22.0
New Features
- Add
@preconcurrencyto silence warnings for Swift 5.10 users
2.21.0
New Features
- Moved to Swift 6
- Solved the
SendableMetatypewarnings for Swift 6 projects. - Add Sendable conformances and
@Sendableannotations throughout. - While Saga now uses the Swift 6 toolchain, backwards compatibility with Swift 5 projects is maintained.
- Users still on Swift 5 will most likely get warnings about "Converting non-Sendable function value to @sendable". This is unfortunate, but it's not feasible to make Saga compatible and crash-free with Swift 6 while also not introducing these warnings for Swift 5 users. Please upgrade your Package.swift to use
swift-tools-version:6.0.
- Solved the
BREAKING CHANGES
- Switched from loopwerk/PathKit to loopwerk/SagaPathKit due to name clashes with projects (such as Stencil) that depends on kylef/PathKit. If your code uses
import PathKit, you'll need to change this toimport SagaPathKit. - Removed all deprecated methods and properties.
- Removed the old watch command. Please use the new saga cli.
2.20.0
New Features
- Add
@Sendableannotations and refactorpostProcess/readerpipeline
RefactorpostProcessto use a postProcessors array, fixingcreatePagenot applying post-processors.
2.19.0
New Features
- Switched from kylef/PathKit to loopwerk/PathKit
The original project seems unmaintained. My fork updated the minimum Swift version to 5.10, added Swift 6 support with Sendable, added Decodable support, and fixed all the unit tests (they didn't run at all).