One massive engineering effort completed. The remaining steps should be painless.
Release Notes for Beta 2
- Added a WYSIWYG editor (dubbed "Rich Text" to users).
- Fix CSS and symlink issues from first squashed commit.
- Fixed router bugs. Now
example.com/bridgeare both acceptable ways to access the bridge (this decision is left to user configuration, of course).
- Bump minimum Halite version to
- Implemented Keyggdrasil, an Airship-exclusive protocol that allows us to guarantee that all Airships have the same public key and package update history. This is accomplished by a peer verification mechanism.
- Improved Airship Installer workflow.
- Added command line scripts to install new Cabins, Gadgets, and Motifs.
- Allow users to select their preferred Motif for each Cabin.
- Removed validity periods from signing keys. We'll use revocation instead.
- Add more security headers out-of-the-box:
- Improved static page caching (now also sends Content-Securiy-Policy headers).
- Added a
HiddenStringclass to hide passwords from stack traces.
- Use Ed25519 signatures to mitigate Hash-DoS from untrusted JSON inputs.
- Added configuration option to cache Twig templates.
- Users can now delete blog posts.
- Users can now diff two versions of a blog post.
- Users can now add/remove other users to the same Author.
- Users can now selected uploaded image files to use for biography images and avatars to accompany their blog comments.
- Lots of reorganization, refactoring, and clean-up.
- Moved the CMS Airship Documentation to its own dedicated git repository.
- When you change a blog post's slug, you can optionally create an HTTP 301 redirect to the new URL to prevent visitors from getting an unfortunate HTTP 404 error. This allows you to funnel traffic towards a meaningful destination.
- Implemented the redirect management section. Now you can edit/delete custom URL redirects (some of which are created when you delete/rename content).
- Greatly improved the comment system; now you may reply to other comments.
We've also moved the documentation to its own repository.