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.
- Nothing yet.
- Dynamic routes feature. You can now specify simple dynamic routes by including middleware functions in JS files within a folder named .dynamic in your web folder.
- Uninstall command.
- Regression: Sync watcher no longer fails when the directory is . (dot; current directory).
- By default, sync contents of the folder, regardless of whether it is specified in the arguments with or without a trailing slash, and only sync the folder and its contents if the new --sync-folder-and-contents flag is specified (breaking change).
--exit-on-sync
flag to thesync
command for one-time sync (useful in deployment scripts).
- Connection string information displayed by the enable command when used with the --sync option.
- Build script regression.
- Revert process.exit to Graceful.exit migration as it causes regression in the enable command.
- Deploy feature regression in build script.
- New rsync-based
sync
command for deploying live changes to a server. - Unit tests for command-line interface.
- Code coverage via nyc and better tape reporting via tap-spec.
- Improved usage instructions for command-line interface.
- Does not throw after handling a port conflict error when creating a proxy server.
- Syntax error display regression.
- Better error handling.
- You must specify the proxy command explicitly (breaking change). Will no longer automatically start in proxy mode when a http URL is provided instead of a path to serve.
- Refactored the command-line app to aid in maintainability (internal change).
- Support for use under Windows. If you’re running Windows, please use Windows Subsystem for Linux to run Indie Web Server.
- Automatic cascading archive support for an evergreen web. Just add previous static backups of your site into specially-named folders and they will be served as fallbacks for links that no longer exist on the latest version of your site.
- Automatic privilege escalation for binary now also works when using the reverse proxy.
- HTTP → HTTPS and WS → WSS reverse proxy (for local mode only).
- Native binaries.
- (Breaking) Simplified commandline vocabulary; now using command syntax (not options syntax).
- Running as daemon is only supported on platforms with systemd.
- Fix auto-restart after automatically obtaining privileged port binding privileges via setcap during first run on Linux.
--offline
command to take a running live server offline (remove it from startup items and delete it from the process manager if necessary).
- Simplified the
--help
display.
- No longer using a custom directory for pm2 files (fixes directory not found issue).
--live
flag to run as daemon and handle crashes/restarts via integrated pm2 process manager.--monitor
command to monitor an already-running live server daemon process.--logs
command to display and tail the web server logs for an already-running live server daemon process.--info
command to display detailed information for an already-running live server daemon process.
- (Breaking) Options that are not boolean flags now require an equals sign. This means that boolean flags like --live and --global can now be used before or after the path to be served whereas previously the path would not be registered if a boolean flag was used before it.
- (Breaking) The
--global
flag is now called--staging
.
- Native 404 to 302 support.
- Programmatic access to the default 404 and 500 error page content.
- You can now create custom error pages for 404 and 500 errors.
- Uses latest ACME TLS that disables all Greenlock-related telemetry from submodules (such as acme, acme-v2, and rsa-compat) and accepts hostnames as valid local identifiers in place of the artificial and privacy-eroding email address requirement imposed earlier by Greenlock.js).
- Name: HTTPS Server is now called Indie Web Server.
- NPM module: @ind.ie/https-server is now @ind.ie/web-server.
- Source code repository: Now located at https://source.ind.ie/hypha/tools/web-server/.
- Helmet for securing the Express app further.
- Nodecert is no longer invoked at startup but only if locally-trusted certificates are requested.
- ACME TLS globally-trusted Let’s Encrypt certificates are now stored in
~/.acme-tls
(locally trusted nodecert certificates are still stored in~/.nodecert
).
- Tests
-
Privacy and usability: Now using ACME TLS (fork of Greenlock.js) for Let’s Encrypt certificate provisioning. This removes the artificial and privacy-eroding Greenlock.js requirement to specify an email address for Let’s Encrypt certificates.
-
API: The
serve()
method now accepts a single parameter object (options
).
- Add support for globally-trusted Let’s Encrypt TLS certificates.
-
HTTP2 support
HTTP2 is not useful for Small Tech as it simply further privileges centralised servers. If you need HTTP2, use https-server version 2.0.1.
- Remove erroneously-added console log message.
- HTTP2 support (API-only)
- Command-line arguments: specify port using
--port N
- Update
serve
method signature:serve (pathToServe = '.', callback = null, port = 443)
- Start using semver properly (most of the previous releases should have been minor version bumps.) This is a major bump as there is a backwards-incompatible API change to the serve() method.
- Fix regression with automatic privileged port binding on Linux.
- Uses nodecert v1.0.5: certificates now work in Node.js (e.g., via https.get(), etc.).
- Unit tests.
- API: you can now use https-server programmatically from your own Node.js apps. It exposes a
createServer
method that’s polymorphic with its namesake from the basehttps
module and it provides aserve
convenience method that uses Express to serve a static site at the passed directory and port (or the current directory at port 443 by default).
- Uses nodecert v1.0.4 (with progress indication).
- Node.js is automatically privileged to bind to ports < 1024 (including the default TLS port of 443).
- Uses nodecert v1.0.3 with seamless install on macOS as well as Linux.
- Actually serves the requested folder instead of a hardcoded one 🤦
- Support for manually-specifying the port.
Initial release.