- Added extra cache invalidation logic to ensure Sass/Scss files are invalidated whenever any other Sass/Scss files are changed since those are likely imports (#1019).
- Added a new
WebKeys.ChangedFiles
setting to propagate the list of changed files when using thepreview
orserve
command. - Updated Statiq Framework reference to version 1.0.0-beta.72.
- Updated Statiq Framework reference to version 1.0.0-beta.71.
- Ensures feed title and description fallback to the site title and description if a feed-specific one was not provided (#1012).
- Updated Statiq Framework reference to version 1.0.0-beta.70.
- Updated Statiq Framework reference to version 1.0.0-beta.69.
- Updated Statiq Framework reference to version 1.0.0-beta.68.
- Added a new
ServerFactory
class inStatiq.Web.Hosting
that makes it easier to set individual properties of the built-in Statiq preview server. - Added the ability to specify additional custom headers served by the Statiq preview server using one or more
--custom-header name=value
options on the command line. - Added the ability to specify additional content type mappings and/or custom headers for the preview server from settings using the
ServerContentTypes
andServerCustomHeaders
settings keys.
- Fixed a bug in front matter regular expressions to ensure front matter is extracted when the delimiter is on the last line of the file.
- Updated Statiq Framework reference to version 1.0.0-beta.66.
- Added a new
AdditionalInputFiles
setting that can be used to explicitly include input files that would otherwise be excluded by theInputFiles
setting such as underscore files. - Updated the
NetlifyRedirects
setting so that whentrue
, any existing Netlify-style_redirects
file will be output (underscore files are normally excluded by default). - Added a new
NetlifyPrefixRedirects
setting (true
by default) that will automatically create redirect entries to files and folders that are prefixed with a specific value (^
by default) from requests without the prefix. This is helpful when needing to publish files or folder prefixed with a.
since Netlify deployment doesn't support them (#1002). - Improved script injection behavior (I.e. for live reload support) when the HTML document deviates from standards (I.e. directly after Markdown rendering).
- Updated Statiq Framework reference to version 1.0.0-beta.65.
- Fixed a bug regarding published date vs. current date publishing items a day early (#1005).
- Updated Statiq Framework reference to version 1.0.0-beta.64.
- Fixed a bug with the default search script path when
WebKeys.GenerateSearchIndex
istrue
(#1001).
- Added a
WebKeys.IgnoreInvalidXrefs
setting to control whether invalid xrefs output a warning instead of a critical error. - Improved link validation in certain cases where links are escaped like
mailto
and unicode (#997, #998). - Updated Statiq Framework reference to version 1.0.0-beta.63.
- Changed
Statiq.Web.props
toStatiq.Web.targets
to resolve some import ordering bugs. - Updated Statiq Framework reference to version 1.0.0-beta.62.
- Updated the included
Statiq.Web.props
to include default Statiq namespaces for use in .NET 6 projects with implicit usings. - Updated Statiq Framework reference to version 1.0.0-beta.61.
- Fixed a regression with xref identification finding nested documents that shouldn't be considered (#988).
- Updated Statiq Framework to version 1.0.0-beta.60.
- Breaking change: To make the distinction between normal beginning of file block comments in a C# file and front matter comments, front matter block comments in C# files must now use an extra dash like
/*-
and-*/
. - Added support for more types of front matter delimiters in more places. For example, Razor files can now define front matter using Razor block comment syntax and a dash like
@*-
and-*@
at the beginning of a file. HTML files can now define front matter using<!---
and--->
at the beginning of a file (notice three or more-
characters instead of two). The various front matter delimiters are also universal and can be used in any file (I.e. you can new use C-style front matter block comments in.css
files). - Added
FrontMatterRegexes
andAdditionalFrontMatterRegexes
settings to help customize the regular expressions used to find front matter. - Expanded xref lookup behavior to look in all relevant pipelines, not just the "content" pipeline (exclusions can be customized using the
XrefPipelines
andAdditionalXrefPipelines
settings). - Updated Statiq Framework to version 1.0.0-beta.59.
- Updated Buildalyzer to 4.1.0 which removes some dependencies on .NET Framework and resolves some package resolution problems.
- Updated Statiq Framework to version 1.0.0-beta.58.
- Added an additional shortcode processing phase after process templates are executed but before post-process templates are (for example, in between Markdown and Razor).
- Increased the default
GatherHeadingsLevel
to two instead of just the first level of headings. - Performance improvements in the
ValidateLinks
analyzer (#982, thanks @phil-scott-78). - Updated Statiq Framework to version 1.0.0-beta.57.
- Updated Statiq Framework to version 1.0.0-beta.56.
- Refactored GitHub error handling to try and better mitigate transient failures (rate limiting, abuse detection, etc.) (#974).
- Fixed a regression when defining input paths via a setting (#978).
- Updated Statiq Framework to version 1.0.0-beta.55.
- Fixed a bug with input path modification ordering where theme paths were getting removed when other input paths were specified (#975).
- Updated Statiq Framework to version 1.0.0-beta.54.
- Added a
Microsoft.Build
PackageReference
to theStatiq.Web.props
that gets imported on package restore to turn off warnings for NU1701 (restored using a different target). This can eventually be taken back out once Statiq targets .NET 6.
- Updated Statiq Framework to version 1.0.0-beta.53.
- Added support for
.csproj
projects in theme folders, which will get compiled and included in the execution. - Added a new
IThemeInitializer
that themes can implement to add services, etc. during initialization.
- Updated Statiq Framework to version 1.0.0-beta.52.
- Added arguments for making links absolute and for adding a trailing slash when hiding index pages to the
LinkGeneratorShortcode
.
- Updated Statiq Framework to version 1.0.0-beta.51.
- Updated Statiq Framework to version 1.0.0-beta.50.
- Set
IncludeInSitemap
to 'false' for data documents (#969, thanks @Turnerj). - Added support for specifying alternate feed paths for
FeedRss
,FeedAtom
, andFeedRdf
(#970, #960, thanks @Turnerj). - Added support for generation-time code highlighting by setting
HighlightCode
totrue
(#971).
- Updated Statiq Framework to version 1.0.0-beta.49.
- Updated Statiq Framework to version 1.0.0-beta.48.
- Added
SearchStopWords
andSearchStopWordsFilePath
settings to control stop words used in search. - Added a
SearchStemming
setting to turn on the default English stemming in search.
- Updated Statiq Framework to version 1.0.0-beta.47.
- Added support for generating a client-side Lunr search index by setting
GenerateSearchIndex
(along with many other controllable settings for search indexing).
- Updated Statiq Framework to version 1.0.0-beta.46.
- Added support for async zip deployment to the
DeployAppService
module and made it the default method (see https://github.com/projectkudu/kudu/wiki/Deploying-from-a-zip-file-or-url#asynchronous-zip-deployment).
- Updated Statiq Framework to version 1.0.0-beta.44. This Statiq Framework update includes some important breaking changes to Razor layouts and partials. If you have trouble with layout and partial compilation after this update, please read the Statiq Framework release notes for help.
- Updated Statiq Framework to version 1.0.0-beta.43.
- Added
GitHubClientExtensions.ThrottleAsync()
extensions that can automatically deal with GitHub rate limit and abuse detection exceptions (#952). - Added automatic throttling to the
ReadGitHub
module and aWithThrottle()
fluent configuration method to specify whether to use it. - Added ability to set the temp and cache paths via
TempPath
andCachePath
settings. - Updated Statiq Framework to version 1.0.0-beta.42.
- Added additional extensions to the bootstrapper for creating processes with a
ProcessLauncher
factory. - Updated Statiq Framework to version 1.0.0-beta.41.
- Updated Statiq Framework to version 1.0.0-beta.40.
- Updated Statiq Framework to version 1.0.0-beta.39.
- Updated Statiq Framework to version 1.0.0-beta.38.
- Updated Statiq Framework to version 1.0.0-beta.37.
- Updated Statiq Framework to version 1.0.0-beta.36.
- Updated Statiq Framework to version 1.0.0-beta.35.
- Added an
ArchiveOrder
to archives which can be used to sort the archive by an arbitrary value using computed metadata (as opposed toArchiveOrderKey
which relies on the value in metadata). - Added support for maxwidth and maxheight to the embed (and derived) shortcode (#943).
- Updated Statiq Framework to version 1.0.0-beta.33.
- Added ability for sidecar files to append the sidecar file extension in addition to replacing the original file extension.
- Fixed several bugs in the file watcher for preview mode related to multiple file changes.
- Breaking change: Updated Statiq Framework to version 1.0.0-beta.32. see the Statiq Framework release notes for details on breaking changes, mostly applicable to module authors.
- Added a
ResetCache()
method to the REPL to force a cache reset on the next execution (#936).
- Fixed a regression in how layouts are applied to Markdown files (#934).
- Changed behavior introduced in 1.0.0-beta.16 regarding HTML files and layouts, now layouts are applied if the HTML file does not contain a
<html>
tag, and are not applied if it does (#934). - Added a
SetDefaultLayoutTemplate()
bootstrapper extension to change the layout engine applied to HTML fragments to an existing one (if the default of Razor is not wanted). - Added a
SetDefaultLayoutModule()
bootstrapper extension to change the layout engine applied to HTML fragments to a new module (if the default of Razor is not wanted).
- Updated Statiq Framework to version 1.0.0-beta.31.
- Breaking change: By default
.html
files are no longer processed by a layout engine like Razor, instead use.fhtml
(HTML fragment) to indicate the file should be processed (#933). - Added a short wait to the file watcher to avoid file lock exceptions under certain conditions.
- Updated Statiq Framework to version 1.0.0-beta.30.
- Breaking change: Refactored the exiting bootstrapper process extensions to use the
ProcessTiming
enum. - Fixed a regression with the preview command and file watching that was execution more than once on file changes.
- Added a
WatchPaths
setting that adds additional folders to watch in preview mode (#930). - Added additional bootstrapper extensions to specify whether a process should launch when previewing, when not previewing, or always (#931).
- Added a flag for "concurrent" processes that run in the background but wait for exit before the next process timing phase (#931).
- Added a
ProcessTiming.Initialization
setting to start a process before all others (#932).
- Updated Statiq Framework to version 1.0.0-beta.29.
- Added a new
interactive
command that provides a REPL (read-eval-print prompt) after execution, useful for inspecting the state of the engine and debugging the generation. - Added the REPL to the
preview
command.
- Added "processes" which are CLI commands you can run as part of your generation process at various points.
- Added support for forwarded proxy headers in the preview server to make working with GitHub Codespaces and similar easier (#925).
- Fixed a bug with LiveReload functionality related to trying to serialize empty JSON payloads.
- Fixed preview server logging (it had stopped working), now Kestrel log messages will begin appearing again.
- Added additional bootstrapper extensions to make working with templates easier.
- Link validator analyzers now report total number of failures at the end of validation.
- Fixed additional bugs related to relative link validation and
LinkRoot
settings.
- Fixed several bugs with relative link validation, including when using a
LinkRoot
setting.
- Updated Statiq Framework to version 1.0.0-beta.27.
- Updated Statiq Framework to version 1.0.0-beta.25.
- Lots of bug fixes for the
ValidateAbsoluteLinks
andValidateRelativeLinks
analyzers.
- Updated Statiq Framework to version 1.0.0-beta.24.
- Breaking change: Removed the
ValidateAbsoluteLinks
,ValidateRelativeLinks
, andValidateLinksAsError
settings in favor of the new analyzers. For example, to turn on absolute link validation with an error log level, setAnalyzers: ValidateAbsoluteLinks=Error
in your configuration file (or bootstrapper, etc.) - Added new
ValidateAbsoluteLinks
andValidateRelativeLinks
analyzers (replaces theValidateLinks
pipeline). - Removed the
ValidateLinks
pipeline. - Added a new
AnalyzeContent
pipeline. - Added base
HtmlAnalyzer
andSyncHtmlAnalyzer
classes for analyzing HTML content. - Added
Bootstrapper.AnalyzeHtml()
extensions for defining delegate-based HTML analyzers. - Made the
PreviewCommand
andServeCommand
in Statiq.Web.Hosting public so you can callIBootstrapper.AddCommand<PreviewCommand>()
directly without Statiq.Web.
- Updated Statiq Framework to version 1.0.0-beta.23.
- Updated Statiq Framework to version 1.0.0-beta.22.
- Added base Markdown analyzers
MarkdownAnalyzer
andSyncMarkdownAnalyzer
. - Added
Bootstrapper.AnalyzeMarkdown()
extensions for defining delegate-based Markdown analyzers. - Fixed a bug in the preview server related to non-ASCII paths (#918, thanks @Vladekk).
- Fixed some bugs in the preview server related to cache reset (#914, thanks @Backs).
- Some tweaks to the new .NET template to prefer the directory name.
- Updated Statiq Framework to version 1.0.0-beta.21.
- Breaking change: Removed the
IBootstrapper.SetDefaultTemplate()
extension given more general use of templates. The "default" template should now be specified by setting a templates for the HTML media type (by default it's still Razor, so this breaking change won't really affect anyone right now). - Breaking Change: Removed the
AssetFiles
,DataFiles
, andContentFiles
settings and replaced with a singleInputFiles
setting for finding all input files. The target pipeline and content type are now determined from the media type and metadata of the document instead of via globbing patterns for each pipeline. If you previously had asset files that started with an underscore (such as a_redirects
file), you will need to explicitly add those to theInputFiles
patterns along with the default pattern:.AddSetting(WebKeys.InputFiles, new [] { "**/{!_,}*", "_redirects" })
. - Added a
ClearDataContent
document setting that clears content from data documents (for example, to support passing the data file to layouts). Set this for a single data document to clear it's content or globally with.AddSetting(WebKeys.ClearDataContent, true)
to clear the content of all data files. - Made the concept of "templates" more general. They now essentially use the media type of a document (typically inferred from file extension) to determine which pipeline to
process the document in and what module to use for processing. Templates can now be defined for assets, data, and content and for the
Process
andPostProcess
phases for each. - Added a
ContentType
document setting to override the calculated pipeline and processing for a document (values areAsset
,Data
, andContent
). For example, setting theContentType
of a file named "foo.json" toAsset
will treat the file as an asset and will not process it's content as data. - Added a
MediaType
document setting to override the media type calculated from the file extension. - Added a
RemoveScriptExtension
document setting that will convert script file names like "foo.json.csx" to "foo.json" and reset their media types so the script output can be seamlessly processed by the appropriate pipeline and modules (for example, "foo.json.csx" will get processed by theData
pipeline while "foo.md.csx" will get processed by theContent
pipeline). The default value istrue
. - Removed the
Isolated
flag from theAssets
pipeline so the set of copied assets can be retrieved from other pipelines (I.e. to generate a list of images in a directory). - Added support for script files (
.csx
or.cs
) to theArchive
pipeline (I.e. to generate JSON APIs from a collection of documents or data). - Added a
Script
document setting that will treat a file as a C# script, even if the extension is not.cs
or.csx
. - Added a common
Inputs
pipeline that consolidates directory metadata, sidecar, and front matter parsing and supports evaluating scripts with a.csx
or.cs
extension. Detailed script usage will be documented on the site, but generally if the script returns null the original input document is returned, if the script returns a string the content of the document will be changed to the return value, or if the script returns a document(s) those will be added to the appropriate pipeline. - New
Statiq.Web.Templates
project with a Statiq Web templates for thedotnet new
CLI command (#915, thanks @devlead).
- Breaking change: Updated Statiq Framework to version 1.0.0-beta.20. This version of Statiq Framework contains breaking changes which Statiq Web will inherit.
- The
Content
pipeline no longer creates any metadata-based tree structure (I.e. the metadata keyChildren
is no longer set). Instead, consider using methods fromOutputs
such asOutputs.GetChildren(doc)
or the newOutputPages
property (see the Statiq Framework 1.0.0-beta.20 release notes for more details). - Added a new
MinimumStatiqWebVersion
key to perform a check for the minimum allowed version of Statiq Web. If this is set to something higher than the current version of Statiq Web, an error will be logged and execution will stop. Any setting that starts will this key will be considered, so it's recommended the use of this key be suffixed with a unique identifier to avoid conflicts between components (for exampleMinimumStatiqWebVersion-MySite
). While not required or typically necessary for sites, it's recommended that themes set this in their theme settings file (for exampleMinimumStatiqWebVersion-CleanBlog
).
- Updated Statiq Framework to version 1.0.0-beta.19. This version of Statiq Framework includes internal refactoring that provides a big performance boost.
- Added a
AssetFiles
settings to configure the globbing patterns used for copying assets.
- Breaking change: Updated Statiq Framework to version 1.0.0-beta.18. This version of Statiq Framework contains breaking changes which Statiq Web will inherit.
- Breaking change: The
Content
pipeline no longer nests output documents and instead all documents are now output.IEnumerable<IDocument>.FilterDestinations("*.html")
orOutputs["*.html"]
can be used to get "root" documents. - Added a
MakeLinksAbsolute
setting to rewrite relative links to be absolute. - Added a
MakeLinksRootRelative
setting to rewrite relative links to be root-relative. - Suppressed archive output when there's no documents to archive.
- Added the
CacheDocuments
module to additional pipelines for faster rebuild times. - Added an
ArchiveKeyComparer
metadata that allows specifying a specific comparer for use with archive groups (usually with script metadata). - Added ability for all pipelines to ensure every document gets a
Published
value, either from an existing value or from the file name or modified date. - Added a
PublishedUsesLastModifiedDate
setting to control whether a file modified date should be used for getting published dates. - Added
settings
as a default settings file name in themes (with support for JSON, YAML, or XML formats). - Added support for sidecar files in other input directories at the same relative path (I.e. themes).
- Added support for
themesettings
andstatiq
YAML (.yml
and.yaml
) and XML (.xml
) configuration files in themes. - Fixed a bug on engine reruns (I.e. the preview command).
- Updated Statiq Framework to version 1.0.0-beta.17.
- Added
OutputPath
setting so the output path can be set from the command-line or configuration file. - Added
ExcludedPaths
setting so excluded paths can be set from the command-line or configuration file. - Added
InputPaths
setting so input paths can be set from the command-line or configuration file. - Updated Statiq Framework to version 1.0.0-beta.16.
- Added the new
Statiq.Web.props
file to abuildTransitive
folder in the package so it flows transitively to consumers.
- Bug fix for unclosed
<ItemGroup>
in the new props file (#909, thanks @drmathias).
- Added a
IncludeInSitemap
setting to control whether a document should be included in the sitemap (#907, thanks @drmathias). - Fixed a bug that required feed items to have URI IDs when the specification indicates they can also be arbitrary strings (#906).
- Added a props file to the Statiq.Web package to automatically set the default theme, extensions, and archetypes MSBuild props.
- Updated Statiq Framework to version 1.0.0-beta.14.
- Added a
GatherHeadingsLevel
key that can be used to adjust the headings level when gathering headings globally or per-document (#904).
- Updated Statiq Framework to version 1.0.0-beta.13.
- Added support for reading
themesettings.json
andstatiq.json
from the theme paths. - Added support for theme paths and configuring them via the bootstrapper and/or settings.
- Added redirect support.
- Added deployment support for Azure App Service.
- Added deployment support for Netlify.
- Added deployment support for GitHub Pages.
- Added
Enumerate
support to data files.
- Added support for directory metadata for data files.
- Added support for front matter in data files.
- Added support for sidecar files as
_[filename].[json|yaml]
. - Added
ProcessSidecarFiles
setting to turn sidecar files off. - Added
ApplyDirectoryMetadata
setting to turn directory metadata off. - Added better xref error messages.
- Fixed a bug in the preview command that exited on failures.
- Changed preview server to listen to any hostname/IP on the specified port (this allows use from services like Gitpod).
- Renamed the root namespaces of the extension libraries brought over from Statiq Framework to match new project names.
- Added a new
Bootstrapper.AddWeb()
extension to add Statiq Web functionality to an existing bootstrapper.
- Changed resource mirroring to be opt-in instead of opt-out (you now need to set
MirrorResources
totrue
to enable) (#896). - Fix to filter tree placeholder pages out of the
Sitemap
pipeline (#895).
- Changed the default theme input path to "theme/input" in preparation for work on dedicated theme folders (see #891).
- Added a new
RenderPostProcessTemplates
key that prevents running post-processing templates like Razor. - Added a new
ShouldOutput
key that controls outputting a particular document to disk (but doesn't remove it from the pipeline likeExcluded
does). - Added support for directory metadata (by default as
_directory.yaml
files). - Added new
ContentFiles
andDataFiles
settings to control the file globbing patterns. - Added a new
GenerateSitemap
setting andSitemap
pipeline to generate sitemap files by default. - Added a new
Excluded
key that indicates a document should be filtered out of the content or data pipeline. - Fixed a bug with feeds not flattening the content document tree.
- Fixed xref resolution to report all errors in a given document at once.
- Changed the xref space placeholder character to a dash to match/roundtrip automatic file name titles.
- Removed the
ChildPages
shortcode (it should really be part of the theme).
- Added support for validating links.
- Refactored xref error messages to display for all documents at once (instead of one at a time).
- Added xref support for links like "xref:xyz" where "xyz" is the value of the "Xref" metadata, the document title with spaces converted to underscores if no "Xref" value is defined, or the source file name if neither of those are available.
- Added
IExecutionContext.TryGetXrefDocument()
andIExecutionContext.GetXrefDocument()
extension methods to get a document by xref. - Added
IExecutionContext.TryGetXrefLink()
andIExecutionContext.GetXrefLink()
extension methods to get a document link by xref.
- Added support for Handlebars for files with a ".hbs" or ".handlebars" extension.
- Added ability to specify a default template via the
Bootstrapper.SetDefaultTemplate()
extension. - Added a powerful capability to add, modify, and remove template modules like Markdown, Razor, etc. via the
Bootstrapper.ConfigureTemplates()
extension. - Refactored metadata processing into a new common
ProcessMetadata
module. - Added the
OptimizeFileName
module withOptimizeContentFileNames
andOptimizeDataFileNames
settings to control it. - Added the
SetDestination
module to the "Data" pipeline.
- Refactored the
ReadGitHub
module to take configuration values. - The "Content" and "Data" pipelines now concatenate all documents from pipelines that declare themselves a dependency using
IPipeline.DependencyOf
.
- Added a new DeployGitHubPages module.
- Moved the preview and serve commands into Statiq.Web from Statiq.App.
- Moved Statiq.GitHub into Statiq Web as Statiq.Web.GitHub from Statiq Framework.
- Moved Statiq.Netifly into Statiq Web as Statiq.Web.Netlify from Statiq Framework.
- Moved Statiq.Azure into Statiq Web as Statiq.Web.Azure from Statiq Framework.
- Moved Statiq.Aws into Statiq Web as Statiq.Web.Aws from Statiq Framework.
- Moved Statiq.Hosting into Statiq Web as Statiq.Web.Hosting from Statiq Framework.
- Moved HTML-based shortcodes from Statiq.Core.
- Fixed a bug with
ArchiveKey
when using a string-based key. - Added support for setting archive document source.
- Added the
GatherHeadings
module. - Added a
ChildPages
shortcode. - Added shortcode support.
- Added
CreateTree
/FlattenTree
to the Content pipeline. - Added support for ordering documents in the Content pipeline using the "Index" metadata value.
- Added a new Feeds pipeline that creates RSS and Atom feeds based on a definition file.
- Added a new Data pipeline that reads YAML and JSON files.
- Added excerpt generation (in the "Excerpt" metadata key) to the Content pipeline.
- Added an Archives pipeline that can create archive indexes, groups, and pages.
- Initial version with Content, Assets, Less, and Sass pipelines.