Skip to content

Releases: loopwerk/Saga

2.25.3

22 Mar 16:14
ed89731

Choose a tag to compare

Bugfixes

  • Fix a folder boundary bug
    If you had a step that works on the "art" folder and a second step that works on the "articles" folder, the first step would also claim all articles.

2.25.2

21 Mar 12:01
ed02304

Choose a tag to compare

Documentation Changes

  • Improve documentation

2.25.1

19 Mar 18:25
77306da

Choose a tag to compare

Bugfixes

  • Revert sequence and publicationDateInFilename back to free functions
    Release 2.25.0 moved sequence and publicationDateInFilename to the Saga namespace, 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

19 Mar 15:03
d78e12e

Choose a tag to compare

New Features

  • Migrate 5 global functions and one global variable to the Saga namespace
  • Add built-in support for the slug frontmatter property

2.24.0

15 Mar 14:54
4029d07

Choose a tag to compare

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

11 Mar 23:15
164c6c9

Choose a tag to compare

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: FileContainer class replaced by a tuple array [(path: Path, relativePath: Path)] with a Set<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 on Saga.
  • Writer context: Writer.run now takes a WriterContext<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 of partitionedWriter that takes a key path. yearWriter now uses it under the hood.

The public API is unchanged.

2.22.0

11 Mar 11:54
43c7fb8

Choose a tag to compare

New Features

  • Add @preconcurrency to silence warnings for Swift 5.10 users

2.21.0

11 Mar 01:23
3f597bb

Choose a tag to compare

New Features

  • Moved to Swift 6
    • Solved the SendableMetatype warnings for Swift 6 projects.
    • Add Sendable conformances and @Sendable annotations 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.

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 to import SagaPathKit.
  • Removed all deprecated methods and properties.
  • Removed the old watch command. Please use the new saga cli.

2.20.0

10 Mar 19:13
fda049c

Choose a tag to compare

New Features

  • Add @Sendable annotations and refactor postProcess/reader pipeline
    Refactor postProcess to use a postProcessors array, fixing createPage not applying post-processors.

2.19.0

09 Mar 15:58
0535b0a

Choose a tag to compare

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).