CHANGELOG.md 15.3 KB
Newer Older
1 2 3 4
# Changelog

All notable changes to this project will be documented in this file.

5
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6

7 8 9 10 11
## Unreleased (work in progress on 12.10.6)

### Added

  - Serve command now displays an error if the path to serve doesn’t doesn’t exist.
Aral Balkan's avatar
Aral Balkan committed
12

13 14 15 16 17 18
## [12.10.5] - 2020-01-22

### Changed

  - Automatic server relead on source code changes now picks up changes in nested hidden directories (e.g., when using separate `.get/` and `.post/` folders for your routes).

19
## [12.10.4] - 2019-11-27
20 21 22 23 24

### Changed

  - (Refactor) Now uses @small-tech/https module instead of @ind.ie/acme-tls and @ind.ie/nodecert directly.

25
  - Consolidates all settings under `~/.small-tech.org/site.js` and cleans up everything on uninstall. You can safely delete the `~/.nodecert` and `~/.acme-tls` folders from your machine once you’ve updated to this version if you’re not using those dependencies directly elsewhere. Note that this means that new Let’s Encrypt certificates will be provisioned for you and placed in the new location when you update to this version.
26 27 28

### Added

29 30
  - Improved support for `uninstall` command on Windows.
  - Improved `install-locally` npm task support on Windows.
31

32 33 34 35 36 37 38 39
## [12.10.3] - 2019-11-24

### Fixed

  - __Security:__ sync was setting execute permissions on transferred files (`chmod 755`). Removed this.

### Changed

Aral Balkan's avatar
Aral Balkan committed
40 41
  - Update chat example to match the one in [the Simple Chat Tutorial](https://ar.al/2019/10/11/build-a-simple-chat-app-with-site.js/).

42 43 44 45 46 47
## [12.10.2] - 2019-11-02

### Fixed

  - Auto update check no longer blocks main thread.

48 49
## [12.10.1] - 2019-11-02

50
### Fixed
51 52 53

  - Update command now correctly exits with an error if SiteJS.org is unreachable. Also implements a short timeout.

54
## [12.10.0] - 2019-11-01
55 56 57

### Added

58
  - Auto updates. Production servers will check for updates on start up and at regular intervals (currently, every 5 hours) and update themselves as and when necessary. This is a primary security feature given that Site.js is meant for use by individuals, not startups or enterprises with operations teams that can (in theory, at least) maintain servers with the latest updates.
59

Aral Balkan's avatar
Aral Balkan committed
60 61 62 63 64 65
## [12.9.7] - 2019-10-30

### Added

  - Automatic server reload when source code in your dynamic routes or any of their dependencies changes. (This will improve your development experience and it means that when you sync changes to dynamic routes to a production server, your production server will automatically restart and start serving the freshest content.)

66 67 68 69
### Fixed

  - Error on exit of proxy server due to `instant` instance `cleanUp()` method being undefined (https://source.ind.ie/site.js/app/issues/139)

70
## [12.9.6] - 2019-10-29
Aral Balkan's avatar
Aral Balkan committed
71 72 73 74 75

### Added

  - Live reload for static pages.

76 77 78 79
### Fixed

  - Error in update command semantic version comparison that would have prevented upgrades from 12.9.x to 12.10.x.

80 81 82 83 84 85
## [12.9.5] - 2019-10-21

### Added

  - Updated changelog. This release will be used to test the update mechanism in the wild.

86 87
## [12.9.4] - 2019-10-20

88 89 90
### Fixed

  - Reimplemented update command logic and got it working properly on Windows.
91

Aral Balkan's avatar
Aral Balkan committed
92 93 94 95 96 97
## [12.9.3] - 2019-10-20

### Added

  - Updated changelog. This release will be used to test the update mechanism in the wild.

98 99 100 101 102 103
## [12.9.2] - 2019-10-19

### Fixed

  - Fix update command crash on Linux.

104 105 106 107 108 109
## [12.9.1] - 2019-10-19

### Fixed

  - Fix update command crash on Windows.

110 111 112 113 114 115 116 117 118 119
## [12.9.0] - 2019-10-19

### Added

  - New command: update – checks for Site.js updates and updates to latest version if there is one.
  - New command: start – starts the Site.js daemon.
  - New command: stop – stops the Site.js daemon.
  - New command: restart – restarts the Site.js daemon.

## [12.8.0] - 2019-10-17
120 121 122 123 124 125 126 127 128

### Added

  - Linux on ARM support (Raspberry Pi, etc.).

### Fixed

  - Let’s Encrypt renewal template added to the binary.

129 130 131 132 133 134
## [12.7.1] - 2019-10-13

### Fixed

  - Fixed [install script failure on macOS](https://source.ind.ie/site.js/app/issues/128) if person didn’t already have a /usr/local/bin directory. (On macOS, this directory does not exist by default.)

135 136 137 138
### Changed

  - Updated the chat example to match the one in the upcoming [Build a simple chat app with Site.js tutorial](https://localhost/2019/10/10/build-a-simple-chat-app-with-site.js).

139 140 141 142 143 144 145 146 147 148
## [12.7.0] - 2019-10-05

### Added

  - Elegant WebSocket room/broadcast support.

### Changed

  - Include express-ws 1.0.0 from our new npm fork (@small-tech/express-ws) instead of from the fork’s git repository.

149 150 151 152 153 154
## [12.6.1] - 2019-10-02

### Fixed

  - Exits with graceful message instead of an error when sync is requested on Windows.

155
## [12.6.0] - 2019-10-01
156 157 158 159 160 161 162 163

### Added

  - Native Windows 10 support under Windows Terminal (Powershell).

### Removed

  - Windows Subsystem for Linux (WSL) support.
164

165 166 167 168 169 170 171
## [12.5.1] - 2019-09-29

### Fixed

  - Add mime types to dynamic routes in test/site (to avoid Safari 13 downloading
    them as `.dms` files).

172 173 174 175 176 177
## [12.5.0] - 2019-09-28

### Added

  - macOS Catalina support (upgrade to Nodecert 3.1.0, with mkcert 1.4.0 support)

178 179 180 181 182 183
## [12.4.1] - 2019-09-11

### Fixed

  - Installation script now fully suppresses tar command output on macOS

Aral Balkan's avatar
Aral Balkan committed
184 185 186 187 188 189 190 191
## [12.4.0] - 2019-09-11

### Changed

  - Uses cURL instead of wget to install on macOS
  - Updated to latest version of our fork of express-ws

## [12.3.1] - 2019-08-18 (unreleased publicly)
192 193 194 195 196

### Fixed

  - --ensure-can-sync option displays correctly in help

Aral Balkan's avatar
Aral Balkan committed
197
## [12.3.0] - 2019-07-26  (unreleased publicly)
198 199 200 201 202

### Added

  - Access to WebSocket server from WebSocket routes.

203 204 205 206 207 208 209
## [12.2.0] - 2019-07-25

### Added

  - Full support for dynamic applications with dotJS and routes.js routing for HTTPS and WebSocket (WSS).

## [12.1.1] - 2019-07-10
210 211 212

### Fixed

213
  - Aliases no longer incorrectly applied to local servers (regression from 12.1.0).
214 215
  - Actually exits on sync when run with `--exit-on-sync`.

Aral Balkan's avatar
Aral Balkan committed
216 217 218 219 220 221 222
## [12.1.0] - 2019-07-07

### Added

  - `--aliases` option to specify additional domains to obtain TLS certificates for and respond to.

## [12.0.0] - 2019-07-01
223

224 225 226
### Added

  - You can now use Site.js as a reverse proxy (proxy servers now supported @hostname).
Aral Balkan's avatar
Aral Balkan committed
227
  - Statistics now supported on proxy servers.
228 229 230 231 232 233 234 235 236 237 238 239 240
  - Can run at any port on @hostname, not just @localhost.
  - API: serve method now handles proxying.

### Fixed

  - When run with `--exit-on-sync`, Site.js no longer starts up a server.

### Changed

  - New CLI grammar (breaking change).
  - API: `site` is now `Site`; a class, not an object (breaking change).
  - API: The server configuration object is now passed to the `Site` class constructor, not to the `serve()` method (breaking change).
  - API: server callback is now a positional parameter on the `serve()` method of `Site` not a property in the configuration parameter object (breaking change).
Aral Balkan's avatar
Aral Balkan committed
241

242 243 244 245 246 247
## [11.0.2] - 2019-06-21

### Fixed

  - 100% CPU usage after first run following new install ([#63](https://source.ind.ie/site.js/app/issues/63))

Aral Balkan's avatar
Aral Balkan committed
248 249 250 251 252 253 254 255 256 257 258
## [11.0.1] - 2019-06-20

### Fixed

  - Statistics view sends proper status code and content type ([#59](https://source.ind.ie/site.js/app/issues/59))

### Changed

  - Install script now runs in _/tmp/sitejs.org_ directory. ([#57](https://source.ind.ie/site.js/app/issues/57))
  - Moved install script from Sitejs.org site repo to the app repo ([#58](https://source.ind.ie/site.js/app/issues/58))

Aral Balkan's avatar
Aral Balkan committed
259
## [11.0.0] - 2019-06-12
Aral Balkan's avatar
Aral Balkan committed
260 261 262 263 264

### Changed

  - (Breaking) Name changed to Site.js.

Aral Balkan's avatar
Aral Balkan committed
265 266 267 268
### Added

  - Very basic statistics middleware and view.

Aral Balkan's avatar
Aral Balkan committed
269
## [10.2.0] - 2019-05-15
270 271 272

## Added

Aral Balkan's avatar
Aral Balkan committed
273
  - 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.
274

Aral Balkan's avatar
Aral Balkan committed
275 276
## [10.1.0] - 2019-05-14

Aral Balkan's avatar
Aral Balkan committed
277
### Added
278 279

  - Uninstall command.
280

281 282 283 284 285 286
## [10.0.1] - 2019-05-12

### Fixed

  - Regression: Sync watcher no longer fails when the directory is . (dot; current directory).

287 288 289 290 291 292
## [10.0.0] - 2019-05-12

### Changed

  - 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).

293 294 295 296 297 298
## [9.3.0] - 2019-05-12

### Added

  - `--exit-on-sync` flag to the `sync` command for one-time sync (useful in deployment scripts).

299 300 301 302 303 304
## [9.2.4] - 2019-05-09

### Fixed

  - Connection string information displayed by the enable command when used with the --sync option.

305 306 307 308 309 310
## [9.2.3] - 2019-05-09

### Fixed

  - Build script regression.

311 312 313 314 315 316
## [9.2.2] - 2019-05-09

### Fixed

  - Revert process.exit to Graceful.exit migration as it causes regression in the enable command.

317 318 319 320 321 322
## [9.2.1] - 2019-05-09

### Fixed

  - Deploy feature regression in build script.

Aral Balkan's avatar
Aral Balkan committed
323
## [9.2.0] - 2019-05-09
324

Aral Balkan's avatar
Aral Balkan committed
325 326
### Added

Aral Balkan's avatar
Aral Balkan committed
327
  - New rsync-based `sync` command for deploying live changes to a server.
Aral Balkan's avatar
Aral Balkan committed
328
  - Unit tests for command-line interface.
Aral Balkan's avatar
Aral Balkan committed
329
  - Code coverage via _nyc_ and better tape reporting via _tap-spec_.
Aral Balkan's avatar
Aral Balkan committed
330

Aral Balkan's avatar
Aral Balkan committed
331 332
### Changed

Aral Balkan's avatar
Aral Balkan committed
333 334
  - Improved usage instructions for command-line interface.
  - Does not throw after handling a port conflict error when creating a proxy server.
335

336 337
### Fixed

Aral Balkan's avatar
Aral Balkan committed
338
  - Syntax error display regression.
339

340
## [9.1.0] - 2019-04-30
341

342
### Added
343

344
  - Better error handling.
345

346 347 348 349 350 351 352
## [9.0.0] - 2019-04-29

### Changed

  - 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).

353 354 355 356
### Removed

  - Support for use under Windows. If you’re running Windows, please use Windows Subsystem for Linux to run Indie Web Server.

357 358 359 360 361 362
## [8.2.0] - 2019-04-20

### Added

  - 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.

363 364
## [8.1.1] - 2019-04-18

365
### Fixed
366 367 368

  - Automatic privilege escalation for binary now also works when using the reverse proxy.

369
## [8.1.0] - 2019-04-18
370

371
### Added
372 373

  - HTTP → HTTPS and WS → WSS reverse proxy (for local mode only).
374

375
## [8.0.0] - 2019-04-16
376

377
### Added
378

Aral Balkan's avatar
Aral Balkan committed
379
  - Native binaries.
380

381
### Changed
382

Aral Balkan's avatar
Aral Balkan committed
383 384
  - (Breaking) Simplified commandline vocabulary; now using command syntax (not options syntax).
  - Running as daemon is only supported on platforms with systemd.
385

386
### Fixed
387 388 389

  - Fix auto-restart after automatically obtaining privileged port binding privileges via setcap during first run on Linux.

390
## [7.1.0] - 2019-04-01
391

392
### Added
393 394 395

  - `--offline` command to take a running live server offline (remove it from startup items and delete it from the process manager if necessary).

396
### Changed
397

398
  - Simplified the `--help` display.
399

400 401
## [7.0.1] - 2019-04-01

402
### Fixed
403 404 405

  - No longer using a custom directory for pm2 files (fixes directory not found issue).

406
## [7.0.0] - 2019-03-31
407

408
### Added
409

Aral Balkan's avatar
Aral Balkan committed
410
  - `--live` flag to run as daemon and handle crashes/restarts via integrated pm2 process manager.
411 412 413
  - `--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.
Aral Balkan's avatar
Aral Balkan committed
414

415
### Changed
416 417

  - (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.
418
  - (Breaking) The `--global` flag is now called `--staging`.
419

420 421
## [6.4.0] - 2019-03-31

422
### Added
Aral Balkan's avatar
Aral Balkan committed
423

Aral Balkan's avatar
Aral Balkan committed
424
  - Native [404 to 302](https://4042302.org/) support.
Aral Balkan's avatar
Aral Balkan committed
425
  - Programmatic access to the default 404 and 500 error page content.
426

Aral Balkan's avatar
Aral Balkan committed
427 428
## [6.3.0] - 2019-03-30

429
### Added
Aral Balkan's avatar
Aral Balkan committed
430 431 432 433

  - You can now create custom error pages for 404 and 500 errors.

## [6.2.0] - 2019-03-12
Aral Balkan's avatar
Aral Balkan committed
434

435
### Changed
Aral Balkan's avatar
Aral Balkan committed
436 437 438

  - 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).

Aral Balkan's avatar
Aral Balkan committed
439 440
## [6.0.0] – 2019-03-09

441
### Changed
Aral Balkan's avatar
Aral Balkan committed
442 443 444 445 446

  - __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/.

447
### Added
Aral Balkan's avatar
Aral Balkan committed
448 449 450

  - [Helmet](https://helmetjs.github.io/) for securing the Express app further.

451 452 453 454 455 456 457 458 459 460 461
## [5.1.0] - 2019-03-09

### Changed

  - 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`).

### Fixed

  - Tests

462 463 464 465 466 467 468 469 470 471 472 473 474 475
## [5.0.0] - 2019-03-09

### Changed

  - __Privacy and usability__: Now using [ACME TLS](https://source.ind.ie/hypha/tools/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`).

## [4.0.0] - 2019-03-08

### Added

  - Add support for globally-trusted Let’s Encrypt TLS certificates.

Aral Balkan's avatar
Aral Balkan committed
476 477 478 479
## [3.0.0] - 2019-03-05

### Removed

480 481 482
  - HTTP2 support

    HTTP2 is not useful for [Small Tech](https://ar.al/2019/03/04/small-technology/) as it simply further privileges centralised servers. If you need HTTP2, use [https-server version 2.0.1](https://source.ind.ie/hypha/tools/https-server/tags/2.0.1).
Aral Balkan's avatar
Aral Balkan committed
483

484 485 486 487 488 489
## [2.0.1] - 2019-03-01

### Fixed

  - Remove erroneously-added console log message.

Aral Balkan's avatar
Aral Balkan committed
490 491 492 493
## [2.0.0] - 2019-02-28

### Added

494
  - HTTP2 support (API-only)
Aral Balkan's avatar
Aral Balkan committed
495 496 497

### Changed

498 499 500 501 502
  - Command-line arguments: specify port using `--port N`
  - Update `serve` method signature: `serve (pathToServe = '.', callback = null, port = 443)`

### Fixed

Aral Balkan's avatar
Aral Balkan committed
503 504
  - Start using [semver](https://semver.org/) 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.

505 506
## [1.0.7] - 2019-02-28

507
### Fixed
508 509 510

  - Fix regression with automatic privileged port binding on Linux.

Aral Balkan's avatar
Aral Balkan committed
511 512 513
## [1.0.6] - 2019-02-28

### Changed
514 515 516

  - Uses nodecert v1.0.5: certificates now work in Node.js (e.g., via https.get(), etc.).

Aral Balkan's avatar
Aral Balkan committed
517
### Added
518 519

  - Unit tests.
520

521 522
## [1.0.5] - 2019-02-27

Aral Balkan's avatar
Aral Balkan committed
523
### Added
524 525 526

  - 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 base `https` module and it provides a `serve` 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).

527 528
## [1.0.4] - 2019-02-26

Aral Balkan's avatar
Aral Balkan committed
529
### Changed
530

531
  - Uses nodecert v1.0.4 (with progress indication).
532

533 534
## [1.0.3] - 2019-02-26

Aral Balkan's avatar
Aral Balkan committed
535
### Added
536 537 538

  - Node.js is automatically privileged to bind to ports < 1024 (including the default TLS port of 443).

539 540
## [1.0.2] - 2019-02-25

Aral Balkan's avatar
Aral Balkan committed
541
### Changed
542 543 544

  - Uses nodecert v1.0.3 with seamless install on macOS as well as Linux.

545 546 547 548 549 550 551 552
## [1.0.1] - 2019-02-25

### Fixed

  - Actually serves the requested folder instead of a hardcoded one 🤦

### Added

553
  - Support for manually-specifying the port.
554 555 556 557

## [1.0.0] - 2019-02-25

Initial release.