All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Create all the files of a static site, which can all individually act as SPAs, instead of only the index.html file. This is great for performance and possibly SEO, and means your hosting software doesn't need to route all requests to the root index.html file. It does mean the site is duplicated, by being present in both the root and in
__pages
, so I might offer a way to disable this at some point, or find a way to be able to read the pages of the root directory and do away with__pages
entirely.
- Fixed a back-navigation bug
- Fixed a bug of javascript not running when the SPA pulled it in.
- DOM events for page-switching, like DOMContentLoaded, etc.
- Correctly scroll to top on navigation.
- A link to the current page no longer breaks back-navigation. (And is also much faster!)
- Back-navigation now works again.
- Fixed some caching bugs introduced by the new v11 directory organization.
- generated apps now operate as SPAs that pull statically-generated HTML to fill the body.
Config
now has arender_spa
field to specify the code that doesn't get re-rendered on navigation in the client. This starts as an identity function by default, meaning the whole page is re-rendered on navigation. See next bullet for messing with this field.- The configuration builder now has
add_spa_frame
for specifying parts of a page that don't get re-rendered on navigation, andturn_off_spa
to use the old-fashioned static site page redirects.
- Inline rule arguments now can use
\
for escaping, including escaping)
and,
.
- Debug messages have been cleaned up.
- Dependencies have been updated.
10.0.0-alpha
's page caching is now out of alpha!
- A caching bug in 10.0.0-alpha has been fixed.
- Caching of pages that haven't changed.
- Lots of parsing bugs have been fixed.
- Correctly formatted code
- Updated dependencies
- inline rule parsing bug
- static component parsing bug
- paragraph/component parsing bug
arctic/parse.parse
now takes a source name used in errors, and.parser
inCollection
does too.
- Parsing with the combinators in
arctic/parse
now gives access to a newParseData(a)
type, allowing the threading of arbitrary state through the parsing process. It replaces the position parameter, and also gives access to the position and earlier-parsed metadata for the markup file. - For the threading of state, the parse actions now must return a
Result(#(Element(Nil), a))
value, wherea
is the user-provided state type. We could provide convenience functions that just expectResult(Element(Nil))
instead but I'm worried the API is already seeming overwhelming. new
also now takes an argument for the initial state at the beginning of parsing a markup file.
arctic/collection
andarctic/config
provide a builder-pattern interface for constructing a site.arctic_vite_config.js
is now generated, giving an object that can be exported into a vite config file.- Added
default_parser
toarctic/collection
. - Added
arctic/parse
with all the machinery of parsing markup in the ways you want. - Much better documentation. (There's still more to do here though!)
- Collections can have raw pages that you can just add (not all pages must be parsed from a collection directory).
MainPage
->RawPage
, to make this concept usable in other parts of Arctic.- Configurations now hold the list of collections, instead of that being a separate argument to
build.build
. - Rename a collection's
.rss
field to.feed
, which is now both the render function and the filename.
- Collections now have a render function for their pages.
- Pages now hold a list of body elements, instead of an entire HTML document.
arctic/page
now has a bunch of utility functions for constructing pages, since pages now have a rather large amount of information.
- Pages now have more fields broken out of the metadata dictionary, with the intention that pages that don't need them have easy ways of leaving them blank and not using them during rendering, and pages that do need them get a lot more safety and convenience knowing they are there. It also forces consistent naming, so an ecosystem of pretty components can be constructed that click into an application easily.
- Ordering is now per-collection instead of per-post.
- Pages now have an optional date, so it doesn't have to be a string metadata.
- Corrected folder names: now you import
arctic
orarctic/build
as intended
- Pages now have a metadata dictionary
- Collections for rendering the home page now have a page list (so they must be processed before the home page)
- Reorganized modules
- Exposed the
Collection
,Page
, andConfig
types.