Skip to content
[15.4.0] - 2020-11-04

This release implements a lot of small improvements, some of which have been longstanding.

  - You can now run multiple local servers on your development machine (not on staging or production).

    Running multiple local servers at different HTTPS ports no longer results in an error due to port 80 being unavailable for the HTTP Server. However, know that only the first server will get the HTTP Server at port 80 that redirects HTTP calls to HTTPS and also serves your local root certificate authority public key.

  - Running `site` without specifying a path while inside a special subfolder of your site (`.dynamic`, `.hugo`, `.wildcard`, `.db`) now magically does the right thing and serves the site root instead of the folder you’re in. If you really do want to serve one of these folders or a subfolder thereof, specifically state your intent by passing the current folder (`.`) as an argument. (#217)

  - Status command now displays daemon details if daemon is enabled (#36).

  - Status command now displays statistics URL if daemon is active (#232).

  - On Linux-like systems, the installation script now uses wget or curl to download the Site.js binary based on whichever is present (favouring wget), instead of expecting wget to be present and failing if it isn’t (#140).

  - Implement shorter custom ssh connection timeout for sync for when the host exists but you are not authorised to connect to it.

    Previously, the timeout was the default TCP connection timeout of 120 seconds which would make it look like the process had hanged. The new timeout is 5 seconds, which provides timely feedback.

  - Version update messages are now easier to read and understand (#207).

  - Displays a graceful error message if an attempt is made to serve a file instead of a directory (#208).

  - Displays explanation of rsync error 12 along with advice for solving it (#85).

  - Site.js will now refuse to serve the root or home directory for security reasons (#178).
  - Site.js will now refuse to run if started from the root account for security reasons (#194).

  - Document initial run `@hostname` error on Mac with stale DNS cache (#138).
  - Update Help output to add examples for update, start, stop, restart commands and match the readme (#137).
  - Document that `.generated` folder should be added to `.gitignore` (#197).
  - Document how `baseURL` handling works for generated Hugo content. (#200).
  - Update docs to include Mac install example for alpha/beta installs (#201).
  - Improve Hugo documentation.
  - General proof-read and update of the documentation (#196).

  - `--access-log-errors-only` option when starting a server (regular process or daemon). (#157)

    Displays only errors in the access log (HTTP status codes _4xx_ and _5xx_). Successful access requests (_1xx_, _2xx_, and _3xx_) are not logged. This is useful during development if you feel overwhelmed by the output and miss other, non-access-related errors.

  - `--access-log-disable` option when starting a server (regular process or daemon). (#157)

    Completely disable the access log. No access requests, _not even errors_ will be logged. Be careful when using this in production as you might miss important errors.

  - Support for [custom Hugo 404 pages](https://gohugo.io/templates/404/) (#237).

    Create a 404.html page in your `layouts/` folder so that it gets created in your `.generated` folder and it will be used instead of the default 404 page. If you have both a custom static 404 page (defined at /404/index.html) and a custom Hugo 404 page, the Hugo 404 page will take precedence.

  - New npm build task: `update-nexe`.

    This task updates the Nexe base image for your platform, architecture, and version of Node.js. As you are basically building a modified version of Node.js this will take a while. The --all and --deploy options are not available on the build script when updating Nexe and will result in an error.

  - Completed incomplete basic getting started with Hugo example in the readme.
  - Automatic rsync install no longer exits with error following successful installation (#97).