Releases: statiqdev/Statiq.Framework
Releases · statiqdev/Statiq.Framework
1.0.0-beta.42
- Breaking change: Deleted
IFile.GetCacheHashCodeAsync()
and replaced it with an implementation ofICacheCode
. - Breaking change: Renamed
IContentProvider.GetCacheHashCodeAsync()
and replaced it with an implementation ofICacheCode
. - Breaking change: Renamed
IDocument.GetCacheHashCodeAsync()
and replaced it with an implementation ofICacheCode
. - Added a new "cache" folder that contains caching artifacts to improve performance, deleting it won't harm anything but it should be left if possible to improve initial generation performance.
Also note that the "cache" folder likely shouldn't be committed to a repository, though it's designed to support that scenario when warranted (I.e. relative paths, etc.). - Compiled Razor assemblies (including layouts and partials) are now cached to disk which dramatically improved initial generation performance by not recompiling files that haven't changed.
- Added
IFile.ReadAllBytesAsync()
andIFile.WriteAllBytesAsync()
. - Added
IFile.WriteFromAsync()
,IFile.AppendFromAsync()
, andIFile.CopyToAsync()
extension methods to more easily copy a file from/to a stream. - Added
IReadOnlyFileSystem.CachePath
and related extensions, methods, etc. to provide a path where cache files should be stored and set to "cache" by default (which should be excluded in.gitignore
). - The write tracking data is now cached in a file so if the output folder has not changed and the content is the same, files don't need to be written even on the first execution.
- Added an
ICacheCode
interface to provide a standard deterministic.GetCacheCodeAsync()
method and implemented it inIDocument
,IContentProvider
, andIFile
. - Changed the console output encoding and the
ProcessLauncher
child process console encodings to UTF-8 so emoji and other Unicode characters will render correctly from child processes. - Fixed a bug with the
--help
CLI option and command description escaping (#186). - Added ability to set the temp and cache paths via the CLI.
1.0.0-beta.41
- Added support for the
PATH
andPATHEXT
environment variables to theProcessLauncher
so it can resolve file names more likecmd.exe
. - Added better error messages when process launching fails.
- Added
CleanMode.Unwritten
that will wait to clean the output folder after each execution and tries to avoid writing duplicate files to the file system (this is the new default). - Added
IFile.GetCacheHashCodeAsync()
which can be used to get a hash code representing the current state of a file. - Refactored
FileContent.GetCacheHashCodeAsync()
to use the newIFile.GetCacheHashCodeAsync()
instead of attempting to read the entire file content.
1.0.0-beta.40
- Several optimizations to file IO and the
WriteFiles
andCopyFiles
modules.
1.0.0-beta.39
- Fixed a bug with link generation for non http/https links in Markdown (#179, #184, thanks @JoshClose).
- Fixed a bug with the
ConsoleListener
on MacOS that prevented signaling from the main thread (used for thepreview
command in Statiq Web) (#182, #183, thanks @devlead). - Fixed a bug with the CLI
--help
output that caused the app to crash (#180, #181, thanks @matkoch). - Added caching for
IEnumerable<TDocument>.GetDestinationTree()
andIEnumerable<TDocument>.GetSourceTree()
which results in a significant performance improvement in some cases for large sites. - Improved logging messages related to timing.
- Added
IFile
extensions to serialize and deserialize JSON. - Added
IFile
extensions to serialize and deserialize YAML. - Added
NormalizedPath.ThrowIfRealtive()
andNormalizedPath.ThrowIfAbsolute()
helper methods. - Added a
IDirectory.MoveTo()
method. - Fixed a bug that caused an input phase overload of an
ExecutionPipeline
not to execute.
1.0.0-beta.38
1.0.0-beta.37
- Updated Buildalyzer to the most recent version and resolves Roslyn version incompatibilities in the
AnalyzeCSharp
module (#174, thanks @mholo65). - Added an optional
makeAbsolute
parameter toLinkGenerator.GetLink()
that allows keeping links as relative (#170). - Fixed fragment support in the Markdown link rewriter (#170, #175, thanks @JoshClose).
- Fixed
LinkGenerator
behavior when using query and/or fragment components (#170). - Added
makeAbsolute
parameters toIExecutionState.GetLink()
extension methods and others as appropriate (#170).
1.0.0-beta.36
- Removes the
UrlResolutionTagHelper
from Razor processing so that~/
links don't get processed (#170). - Adds support for
~/
link resolution to Markdown files, note that this is an interim feature and will be removed again in favor of a new module that handles~/
links for all template engines soon (#170, #171, thanks @JoshClose).
1.0.0-beta.35
- Added better error logging of Razor rendering failures.
- Changed the default Razor model type to
IDocument
fromdynamic
if no explicit model or base type is specified.
1.0.0-beta.33
- Added ability to "map" input folders to subfolders in the virtual folder hierarchy (so not every input folder has to be at the root now).
- Added the
GenerateJson
module back in (it got dropped a while ago when Statiq.Json was merged with Statiq.Core). - Added a utility
LoggerFactoryLoggerWrapper
class that can wrap the context (or any otherILogger
) and provide it as anILoggerFactory
that always logs to the underlying logger. - Fixed a bug with the generated doctype element in redirects (#160, #161, thanks @gep13).
- Fixed a bug with virtual input directories when getting a parent directory from a file produced by one (it wasn't getting the original virtual directory).
1.0.0-beta.32
- Breaking change: Refactored the
IExecutionContext.GetContentProviderAsync(string)
extension (and overloads) to be non-async and unified related extensions that get content providers. - Breaking change: Refactored
IDocument.CloseAsync(string)
and related extensions to be non-async and unified related clone methods into a single set of overloads. - Breaking change: Removed the
UseStringContentFiles
option because it's no longer relevant with the new string and stream processing. - Updated the Razor engine from 3.0.0 to 3.1.10.
- Updated the Roslyn libraries from 3.4.0 to 3.8.0.
- Changed the precedence of environment variables to overwrite configuration from settings files to match expected ASP.NET Core conventions (#154).
- Fixed some bugs with the
ProcessLauncher
on Linux and Mac by ensuring the entire process tree is killed (#156). - Added some performance caching for
IExecutionProcess.OutputPages
. - Refactored
NormalizedPath
to reduce use of strings. - Added some performance enhancements to caching of AngleSharp HTML documents.