ChangeLog.md
Rama main · réplica de lectura del repositorio original.
# Changelog
Changes from 1.17.12 to 1.17.13
===============================
* Don't listen with Multipath TCP, ref CVE-2026-98432.
* Fix the Lua pool, and recover from panics in Lua template functions and when compiling GCSS.
* Disallow `os.exit` from Lua while serving requests.
* Various minor improvements.
* Update dependencies.
* Update documentation.
Changes from 1.17.11 to 1.17.12
===============================
* Improve the experimental WebAuthn support.
* Add the `--strict-symlinks` flag, for not following symlinks that lead out of the served directory.
* Add `htmlescape` and use it in `serverconf.lua`.
* Keep the server log and the access logs open, instead of opening and closing them for every line + improve log rotation abilities.
* Rewrite the reverse proxy to use `httputil.ReverseProxy`.
* Only look ahead at proxied responses that have a `Content-Length`.
* Also log requests that are handled by a reverse proxy.
* Store Let's Encrypt certificates in `$XDG_DATA_HOME/certmagic`, `$HOME/.local/share/certmagic` or `/var/lib/algernon`.
* When using `--domain`, also serve the `localhost` directory for the current IP addresses.
* Add the `--dirbaseurl` flag, for placing a base URL in front of the links in the directory listing, ref #90.
* Add the `SetDirBaseURL` Lua function that can be used from `serverconf.lua`, for the same purpose as `--dirbaseurl`.
* Replace the `graceful` package with `http.Server.Shutdown` from the standard library.
* Set new log files to mode `0640`.
* Reject `AddReverseProxy` endpoint URLs that have no scheme or host.
* Improve how certmagic-related events are logged.
* Improve how `--letsencrypt` starts and retries.
* Update dependencies.
* Update documentation.
Changes from 1.17.10 to 1.17.11
===============================
* Fix empty responses when served by reverse proxies, ref #175.
* Fix a security issues related to paths like `/%2fadmin/`.
* Update dependencies.
* Update documentation.
Changes from 1.17.9 to 1.17.10
==============================
* Also support case-insensitive file systems when checking for permissions (thanks @manus-use).
* Fix issue #122, open the internal log file with different flags.
* Fix the flag precedence issue, ref #145.
* Make the path handling more robust in connection with React / Hot Module Replacement.
* Render more types of Lua tables, ref #119.
* Encode filenames in connection with the directory listing, ref #144.
* Add the `remoteaddr` function, ref #114.
* Let `KeyValue` also support table values, ref #113.
* Add support for `global.lua` files for initializing the Lua pool, ref #103.
* Also allow `SIGUSR2` to clear the cache, thanks @MatrixNeoKozak, ref #174.
* Make argument handling more robust.
* Handle `127.0.0.1` and `::1` as `localhost` when serving domains.
* Add `-D` as a short flag for `--domain`.
* Use `html/template` for the error message page.
* Escape filenames in error messages when in debug mode.
* Make `HMRUpdateHandler` more robust.
* Use `encodeURIComponent` in the registration for example.
* Make two path-related errors into warnings.
* Fix and update the dockerfiles.
* Add container files and scripts for Podman.
* Use the correct host for the auto-refresh feature.
* Update dependencies.
* Add an example that uses SQLite.
* Update example projects.
* Add more tests.
* Add "make cover" for checking the test coverage.
* Use build-time platform detection whenever possible.
Changes from 1.17.8 to 1.17.9
=============================
* If HTTP and HTTPS ports are specified, then also use those for ACME / Let's Encrypt. Fixes #173, thanks for the feature request + testing @DaVyze.
* Use `io.Copy` in the reverse proxy to bound memory usage.
* Limit the request body buffer size.
* Add a max size check (int64) for the `--largesize` flag.
* Add a check for special Windows/NTFS filenames, thanks @Dredsen.
* Make the React support a bit smarter with top level element detection.
* Improve the configuration overview and info messages at start.
* Add a check for if `--domain` is given, without any certificates/keys being given.
* Restructure how addresses, ports, certificates and protocols can be configured, while still supporting the same flags and arguments.
* Improve the `ServerInfo()` output.
* Require Go 1.26.
* Add more tests.
* Update Dockerfiles.
* Update documentation.
* Update dependencies.
Changes from 1.17.7 to 1.17.8
=============================
* Fix path traversal when `--domain` is used (thanks @fg0x0).
* Fix a possible file descriptor leak after trying to write to `/dev/shm`.
* Fix an issue with setting header values when proxying.
* Add new functions for using SQLite, ref #156 (thanks for the feature request, @judell).
* Add support for compiling TypeScript and rendering `index.tsx` files, ref #166 (thanks for the feature request @fayakun-it-consulting).
* Add multiple ways of specifying ports and protocols, ref #173 (thanks for the feature request @DaVyze).
* Improve how JSX and TSX files are cached.
* Improve the Lua plugin system wrt. oncurrency.
* Improve error handling when extracting `.alg` files.
* Add a `--noninteractive` flag as an alias for the less descriptive `--server` flag, and also deprecate the `--server` flag. The short `-s` flag remains unchanged, and the `--server` flag is still supported.
* Let the desired React version be specified in a comment in `index.jsx`/`index.tsx` instead of in an `.algernon` file. Currently only React 19 is supported and can be specified like this: `// React: 19`.
* Add additional Lua functions for building HTML output programmatically by using the `github.com/xyproto/onthefly` package.
* Prioritize configuration values from command line flags first, then positional arguments and then `serverconf.lua`.
* Add two new example projects under `samples/react_tsx` and `samples/onthefly`.
* Update dependencies.
* Update documentation.
Changes from 1.17.6 to 1.17.7
=============================
* Clamp `handler.lua` parent walk to server root (thanks @Dredsen).
* Use the main mux when serving SSE for the auto-refresh feature (thanks @Dredsen).
* Add a `--hide-dotfiles` for not serving hidden files (thanks @Dredsen).
* Don't enable debug mode automatically when single-file mode is used (thanks @Dredsen).
* Embed React 19 and support `index.jsx` files, for `npm`-less use of React.
* Update the HyperApp example so that it does not use a token for downloading images.
* Add an example project named Catbook here: https://github.com/xyproto/catbook
* Update all database-related dependencies.
* Fix an issue in the built-in Bolt database support, where retrieving the last N items from a list with less than N items could return an empty list.
* Use an `sqlite` package that does not require `CGO`.
* Cache the per-directory `.algernon` configuration.
* Add a `formjson` Lua function for returning the posted form as JSON.
* Add support for `WebAuthn` by adding 4 new Lua functions.
* Add the `maxlen`, `methodPOST` and `list:jsonlast` and `jsonembed` functions.
* Update dependencies.
* Update documentation.
Changes from 1.17.5 to 1.17.6
=============================
* Add a `--testcert` flag, for using the Let's Encrypt staging CA when configuring a new domain, to avoid hitting rate limits.
* Fix a Lua-related race condition, ref #172 (thanks @KatrielMoses).
* Fix path traversal in connection with file uploads and Lua, ref #172 (thanks @KatrielMoses).
* Update dependencies, including `golang/x/crypto`, ref #168.
* Add a `ReadHeaderTimeout` to `engine/serve.go`.
* Add support for npm-less React 19 with partial reload with the `-a` / `--autorefresh` flag.
* Add IPv6 support.
* Adjust how Pongo2 templates are applied.
* Append concurrently to access logs.
* Adjust CSS for the "formulas" example.
* Update the typewriter example.
* Update all React-related samples.
* Update the Hyperaff gif example.
* Update systemd example files + add an example Fedora .spec file.
* Fix mimetype handling for `.prompt` files.
* Update the default `Ollama` model.
* Update the `ai` example.
* Fix syntax highlighting in the help text for the REPL.
* Add more checks in the code, to increase robustness.
* Use an atomic bool in connection with shutting down the server.
* Remove `GOEXPERIMENT=greenteagc` since this is now the default.
* Build the release with Go 1.26.2.
* Update CI configuration.
* Update documentation
Changes from 1.17.4 to 1.17.5
=============================
* Fix HTML detection, ref #164 (thanks @astynax).
* Add an initial `Security.md` file.
* Add extra sanitation / XXS protection (thanks @Bnyt7).
* Add support for serving the QOI image format.
* Simplify favicon / mimetype related code.
* Remove some unused code.
* Add more documentation, ref #163 (thanks @myselfghost).
* Add an example for HTMX.
* Build release executables with `GOEXPERIMENT=greenteagc`.
* If a single file is given as an argument, don't output the server name and version (to make Algernon more suitable for being used as a "Lua runtime", ref #163).
* Update CI configuration.
* Update dependencies.
Changes from 1.17.3 to 1.17.4
=============================
* Update go.mod, ref #159.
* Fix a missing `m` character when drawing the banner/logo at start.
* Also show the banner/logo at start on Windows.
* Add HTML sanitization of the filename for the "file not found" page". This fixes an [XSS issue](https://security.snyk.io/vuln/SNYK-GOLANG-GITHUBCOMXYPROTOALGERNONTHEMES-3312112).
* Switch from [vt100](https://github.com/xyproto/vt100) to the [vt](https://github.com/xyproto/vt) package.
* Update CI configuration.
* Remove `FUNDING.yml`.
* Update documentation.
* Update dependencies.
Changes from 1.17.2 to 1.17.3
=============================
* Only listen for the USR1 signal on some platforms. Fixes #157.
* Add a `run3` function, ref #158.
* Add `print_nonl` that can be used in connection with `flush`.
* Add the `mprint_ret` function that can return required JS code instead of inserting it.
* Let `flush`, `redirect` and `permanent_redirect` return `true` if the connection was not closed when sending.
* Add support for ie. `lang: en` and `language: en` in Markdown files.
* Improve the "mathematical formulas" sample.
* Add a typewriter / server-side flush example.
* Set the language to `en` for 3 of the samples.
* Build with `-ldflags "-s -w" -buildvcs=false` by default in the `Makefile`.
* Improve error handling in connection with recorders and flushing.
* Improve some warnings and error messages.
* Add an informative message when serving `README.md` files without `-m`.
* Update documentation.
* Update dependencies.
Changes from 1.17.1 to 1.17.2
=============================
* Use `net/http` instead of `fasthttp` for serving regular HTTP to make the `flush()` function work again.
* Add support for SQLite using https://github.com/terminar/permissionsqlite.
* Skip empty `<h1></h1>` tags.
* Make it possible to clear all cache with a `USR1` signal.
* Add a new Markdown theme named `setconf`.
* Add three new samples.
* Minor performance improvements.
* Some refactoring and cleanup.
* Update documentation.
* Update dependencies.
Changes from 1.17.0 to 1.17.1
=============================
* Patch the `pingcap/tidb` dependency so that Algernon still compiles for ARM 6 and ARM 7.
* Add the `oc:distance()` Lua method for finding the distance between two LLM prompts.
* Let the `embeddedDistance` Lua function take a 3rd argument: `euclidean`, `manhattan`, `chebyshev`, `hamming` or `cosine`.
* Improve the image description example.
* Improve how images are served when serving a single Markdown document.
* Fix the double opening of the browser when both `-m` and `-o` are specified.
* Also cache `.webp` images, if caching of images is enabled.
* Update dependencies.
* Update documentation.
Changes from 1.16.0 to 1.17.0
=============================
* Add three Ollama-related functions: `base64EncodeFile`, `describeImage` and `embeddedDistance`.
* Add an example for uploading and describing images with Ollama and the `llava-llama3` model.
* Add a `base64` method to `UploadedFile` objects.
* Update the Teal example.
* Improve the "pretty error page" that appears if there is an error in a Lua script.
* Let some variables be constants instead.
* Avoid using `runtime.GOOS` and detect most features at compile time instead.
* Use two `atomic.Bool` variables instead of a mutex for keeping track of how data is being served.
* Import `logrus` as "logrus" instead of as "log".
* Use `strconf.FormatInt` instead of `fmt.Sprintf` whenever possible.
* Use `github.com/pkg/browser` for opening URLs in a browser.
* Fix an issue with inserting JS into HTML.
* Serve HTTP with `fasthttp` (ref #4)
* Improve how favicons are handled.
* Make it possible to ignore files in a directory listing (ref #149).
* Add a `sanhtml` function for sanitizing HTML.
* Add experimental support for mathematical formulas in Markdown using MathJax (ref #150).
* Add an example that renders mathematical formulas.
* Remove `GOEXPERIMENT=loopvar` since it is no longer needed.
* Follow the advice of `golint`.
* Update documentation.
* Update dependencies.
Changes from 1.15.5 to 1.16.0
=============================
* Make it possible to clear the AI cache with `ClearCache()`.
* Add support for using AI/LLMs (Ollama) from Lua.
* Add support for `.prompt` files that contains a content-type, a model name, a blank line and a prompt.
* Make small changes to the built-in themes.
* Update CI configuration.
* Require Go 1.21 or later, mostly because of the QUIC dependency.
* Update the year in the license file.
* Minor changes to the `alg2docker` script.
* Update the react jsonfile example.
* Update the TODO list example to the latest version of React.
* Update the React + JSX + database example.
* Add the loopvar feature to the dockerfiles.
* Use LABEL maintainer in the Dockerfiles.
* Combine several build and run scripts related to docker.
* Add a simple tutorial.
* Remove some unused code.
* Update documentation.
* Update dependencies.
Changes from 1.15.4 to 1.15.5
=============================
* Make the Makefile clearer.
* Update the form/registration example.
* Update dependencies.
Changes from 1.15.3 to 1.15.4
=============================
* Improve field alignment using `dkorunic/betteralign`.
* Update dependencies.
Changes from 1.15.2 to 1.15.3
=============================
* Set `GOEXPERIMENT=loopvar` and adjust the build flags.
* Enable profile-guided optimization.
* Update the benchmark script.
* Check the arguments for the `servedir` Lua function.
* Update the GH action for Homebrew.
* Make the prefixmatch tests pass.
* Remove the `github.com/bmizerany/assert` dependency.
* Update the CI configuration.
* Move two functions to `github.com/xyproto/files`.
* Minor changes to the welcome script.
* Minor changes to a test.
* Minor changes to the Teal example.
* Update dependencies.
Changes from 1.15.1 to 1.15.2
=============================
* Serve `.json` files a tiny bit faster.
* Serve Algernon web applications (`.alg` files) from memory, ref #132 (thanks Dialga / @Dialga).
* Remove a duplicate word from the `README.md` file (thanks Philipp Gillé / @philippgille).
* Update dependencies.
Changes from 1.15.0 to 1.15.1
=============================
* Switch from `blackfriday` to `gomarkdown/markdown`.
* Add a simple example that uses the `markdown` function.
* Update the CI configuration.
* Update dependencies.
* Update documentation.
Changes from 1.14.0 to 1.15.0
=============================
* Compile the release binaries with Go 1.20.4.
* Add a `close()` function, ref #124 (thanks Malcolm Ke Win / @diyism).
* Add a shell linter to the CI configuration, ref #120 (thanks Jan Macku / @jamacku).
* Support reverse proxies, ref #131 (thanks Mohamed Abdel Maksoud / @mohamed--abdel-maksoud).
* Look for `handler.lua` in parent directories, ref #95, #112 and #130 (thanks Giulio Lunati / @giuliolunati).
* Add initial support for JWT tokens.
* Use `os` and `io`instead of the deprecated `ioutil` package.
* Use `any` instead of `interface{}`.
* Use the new `unix` build constraint.
* Use `strings.ReplaceAll` and `bytes.ReplaceAll`.
* Use `simpleredis/v2`.
* Use `math.Round`.
* Add an `ulimit` check to the `welcome.sh` script that also works on macOS Ventura.
* Format/lint the code with `gofumpt`, `golint` and `staticcheck`.
* Use the `betteralign` tool, to improve struct field alignment.
* Make the code debug/tracing/profiling features optional at compile time, using build tags.
* Fix a typo in one of the examples.
* Update the CI configuration.
* Update dependencies.
* Update documentation.
Changes from 1.13.0 to 1.14.0
=============================
* Compile the release binaries with Go 1.19.
* Improve the documentation (thanks Matt Mc / @tooolbox ).
* Add support for Teal together with a Teal sample (thanks Matt Mc / @tooolbox).
* Fix an issue with how Lua tables were pretty printed in the REPL.
* Fix an issue with conversion from Lua tables to JSON, ref #107, #108 (thanks @linkerlin).
* Fix an issue with the generated directory listing pages, where `%2F` would appear in the URL instead of `/`, ref #117.
* Follow the advice of these utilities: `go fmt`, `golint`, `staticcheck` and to some extent `fieldalignment`.
* Update dependencies.
Changes from 1.12.14 to 1.13.0
==============================
* Add a flag for serving domains with CertMagic and Let's Encrypt
* Add a flag for redirecting from HTTP to HTTPS
* Use `req.Context` since `CloseNotifier` has been deprecated
* Switch to Go 1.18
* Switch from the MIT license to BSD-3
* Fix double drawn frames around syntax highlighted code in Markdown documents
* URL encode links when listing directories
* Use the same directory as the pongo2 template when importing macros, ref #84
* Let plugins continue to run if an optional argument is passed in, ref #64 (otherwise close them)
* Switch from jvatic/goja-babel to wvanw/esbuild, ref #77 (#91)
* Improve JSX-related error messages
* Use yuin/gopher-lua and yuin/gluamapper
* Use a context when running Lua functions and use the background context when creating the Lua pool
* Update the alg2docker and benchmark scripts
* Update the `--help` output
* Fix a typo in the "single.alg" example Algernon application
* Update example service and Dockerfiles
* Add a base URL flag for the directory listing (#90 ?)
* Follow the advice of the "fieldalignment" and "staticcheck" utilies
* Fix the `serve2` function so that the registration form example works
* Update tests, dependencies, examples and documentation
Changes from 1.12.13 to 1.12.14
===============================
* Downgrade fsnotify to v1.4.9 so that building with GOOS=freebsd works again
Changes from 1.12.12 to 1.12.13
===============================
* Fix a typo in the documentation (thanks Felix Yan)
* Add support for simple MSSQL queries, ref #57
* Improve MSSQL support (thanks Matt Mc)
* Improvements to table mappings in Lua, including changes to gluamapper (thanks Matt Mc)
* Support headers in buffered responses, ref #75 (thanks Matt Mc)
* Improvements to the file upload functionality (thanks Matt Mc)
* Various minor fixes and improvements (thanks Matt Mc)
* Add three new repl commands: `pwd`, `serverdir` and `serverfile`
* Add nicer help output for built-in commands to the repl
* Add a `ServerDir` function for the server configuration Lua script
* Fix wasm mimetype issue, ref #82
* Fix the Babl plugin configuration after updating the Babl dependency
* Various improvements to the samples and to the "Welcome" page
* Follow the advice of `go vet`, `golint` and `staticcheck`
* Support Go 1.16 and Go 1.17 only, for now
* Update CI configuration
* Update dependencies
* Update documentation
Changes from 1.12.11 to 1.12.12
===============================
* Only include QUIC support on supported platforms. This should let Algernon build for the Apple M1 CPU.
Changes from 1.12.10 to 1.12.11
===============================
* Remove OpenBSD support while waiting for [pkg/term](https://github.com/pkg/term) to support it.
Changes from 1.12.9 to 1.12.10
==============================
* Use a specific commit of [pkg/term](https://github.com/pkg/term) so that it also compiles for FreeBSD.
Changes from 1.12.8 to 1.12.9
=============================
* Improve the man page.
* Minor improvements for the help and completion functionality in the REPL.
* Let several `algernon --lua` instances not use the same temporary database.
* Let `.mk`, `.ts` and `.tsx` be served as `text/plain;charset=utf-8`.
* Initial support for rendering `.frm` and `.form` files written in SimpleForm.
* Fix for making it possible to use `.` together with `--autorefresh`.
* Minor fixes to the docker example files.
* Correct a typo in a comment (thanks Felix Yan).
* Update the Travis CI configuration (thanks Rui Chen).
* Follow the advice of the very useful `staticcheck` utility.
* Update documentation.
* Update dependencies.
Changes from 1.12.7 to 1.12.8
=============================
* Update documentation.
* Improve CI config and Homebrew release process (thanks Rui Chen!).
* Update supplied systemd configuration.
* Remove mentions of nacl.
* Remove the `mitchellh/colorstring` dependency.
* Update dependencies.
* Use `algernon_history.txt` as the REPL history filename on Windows.
* Don't output raw color codes on Windows, use ANSI colors or disable the color.
* Remove symlinks from the "welcome" sample.
* Update the release script to also build with GOARM=7 for Raspberry Pi 2, 3 and 4.
Changes from 1.12.6 to 1.12.7
=============================
* Issues with bolt db, simplebolt and `gccgo` are resolved. Algernon now also supports `gccgo`.
* Now requires Go 1.11 or later.
* Respect `TMPDIR`, for improved Termux support.
* Fix issue #42, when `--dir` is used together with a trailing slash.
* Don't force the use of the bolt database when in development mode.
* Update dependencies.
Changes from 1.12.5 to 1.12.6
=============================
* Now using a fork of the quic package, since there were build issues with it (could not build with `gccgo` and issue #41).
* Updated dependencies.
* There are still issues with compiling simplebolt with gccgo, which is why Algernon can not be compiled with gccgo in a way where simplebolt works, yet. This is related to different behavior between go and gccgo and will be worked around in simplebolt. See: golang/go#36430
* The autorefresh feature (-a or --autorefresh) may now follow symlinks to diretories, to make the ./welcome.sh script and example more user-friendly when live editing for instance samples/greetings/index.md.
* The file-search backend of the autofresh feature is now also concurrent.
* Tested with the latest version of Go (1.13.5) on 64-bit Arch Linux.
Changes from 1.12.4 to 1.12.5
=============================
* Tested with Go 1.13.
* Adds support for PostgreSQL queries with the PQ function, from Lua.
* Updated dependencies, especially with QUIC and HTTP/2 in mind.
* Updated the JSX sample to use the latest version of React.
* The static executable for Linux is now built with `-trimpath`.
* New HTTP client functionality from Lua, using GET or HTTPClient.
* `CookieSecret` and `SetCookieSecret` can now be used to get and set the secure cookie secret from Lua, or it can be set with the `--cookiesecret` flag.
Changes from 1.12.3 to 1.12.4
=============================
* Fix #26, an issue with using Lua tables together with Pongo2 and the serve2 function.
* Update dependencies.
* Improved help function on the Lua prompt.
* Support the `IGNOREEOF` environment variable.
* Update documentation.
Changes from 1.12.2 to 1.12.3
=============================
* Fix #25, where an attack with vegeta could make Algernon crash.
* Update dependencies (boltdb has a new home, TLS 1.3 has further improvements).
Changes from 1.12.0 to 1.12.2
=============================
* Update dependencies.
* Better output to stdout when loading configuration files (lists the names of all loaded configuration files).
* A timestamp is added to the command line output when starting Algernon.
* Slightly modified console text colors.
* Minor changes to recognized filename extensions.
* Update documentation to mention welcome.sh (fixes issue #23).
* Minor updates to javascript libraries used by two of the samples.
* Improved support for streaming large files (fixes issue #13).
* Added two new flags:
* `--timeout=N` for setting a timeout in seconds, when serving large files (but there is range support, so if a download times out, the client can continue where it left).
* `--largesize=N` for setting a threshold for when a file is too large to be read into memory (the default is 42 MiB).
Changes from 1.11.0 to 1.12.0
=============================
* Favicon support when serving Markdown files.
* More minimal `--lua` mode.
* Using the new `strings.Builder` in Go.
* Better Markdown keyword handling.
* Update vendored dependencies.
* Include transmitted bytes in the access log.
* Detect `style.css` in addition to `style.gcss`.
* Better Markdown checkbox support.
* Some refactoring and linting.
Changes from 1.10.1 to 1.11.0
=============================
* Using the `go mod` system that came with Go 1.11.
* Experimental support for simple logging to a NCSA and/or a Combined access log, with two new commandline flags.
* Minor improvements to the help text and status messages.
* No external resources are required by Algernon, not even external fonts, ref #17.
* Refactoring: moved the event server to the recwatch package.
* Remove an unneeded space when setting `Content-Type`.
* Better keyword handling in Markdown documents.
* Set a mimetype for configuration files starting with a `.`.
* Add a flag for clearing the default path prefixes used by the permissions subsystem.
* Update test script.
* Minor changes to documentation and samples.
Changes from 1.10 to 1.10.1
===========================
* Workaround for a problem with the MINGW64 terminal + readline, on Windows.
* Let Lua handlers also configure the server.
* Release the Windows executable together with the samples.
Changes from 1.9 to 1.10
========================
* Syntax highlighting by using [chroma](https://github.com/alecthomas/chroma) instead of [highlight.js](https://highlightjs.org/).
* No external dependencies, ref issue #17.
* Add a mode for only using the Lua REPL with `-l` or `--lua`.
* New logo for the webpage, and new ANSI banner on the command line.
* Minor fix for closing `</head>` tags.
* Update vendored dependencies.
Changes from 1.8 to 1.9
=======================
* Improve error messages.
* Better support for giving a single Lua fila with handlers as an argument.
* Update documentation and samples.
* Add list:json() to make it easier to return JSON from a List. See `samples/react_db`.
* Better handling of opening documents in the browser if no certs are given.
* Update the default handling of files (view/download) based on mime type or extension.
* Add support for "go tool trace".
* Update vendored dependencies.
Changes from 1.7 to 1.8
=======================
* Fix an issue with `curl` + `algernon` that was not present with `wget` + `algernon`, related to HTTP headers and compression.
* Some refactoring and linting of the code.
* Less strict HTTP headers by default.
* Update vendored dependencies.
Changes from 1.6 to 1.7
=======================
* Experimental support for the QUIC protocol (HTTP over UDP, faster than HTTP/2).
* Improvements toward compiling Algernon with GCC (`gcc-go`).
* Update HyperApp support and samples to work with the latest version (0.15.1).
* Update dockerfiles and scripts.
* Add "material" and "neon" themes.
* Updated the documentation.
* Add support for `.algernon` files for configuring directory listings (set a theme and title).
* Support for having a port number as the only argument.
* Add a `--nodb` flag, for not using any database backend (same as `--boltdb=/dev/null`).
* Some refactoring.
* Update vendored dependencies.
Changes from 1.5.1 to 1.6
=========================
* Fix for excessive memory usage when serving and caching large files. Needs more testing.
* Should now be possible to compile with gccgo.
* Revert the refactoring to a separate "kinnian" package, for easier development and dependency handling.
* Update vendored dependencies.
Changes from 1.5 to 1.5.1
=========================
* Add the `.hyper.js` and `.hyper.jsx` extensions for HyperApp applications
* Style HyperApp applications if no style/theme/`style.gcss` is provided
* Also support HyperApp applications when using the `--theme=...` flag
* Add the `hprint` Lua function, for combining HyperApp and Lua
Changes from 1.4.5 to 1.5
=========================
* Switch JSX rendering engine to one that uses [goja](https://github.com/dop251/goja)
* Add support for HyperApp JSX apps with the `.happ` or `.hyper` extension
Changes from 1.4.4 to 1.4.5
===========================
* Performance improvements when rendering Markdown and directory listings
* Refactoring out code to the `kinnian` package
* Update samples.
* Update vendored dependencies.
Changes from 1.4.3 to 1.4.4
===========================
* Refactor code into packages.
* Update tests and documentation.
Changes from 1.4.2 to 1.4.3
===========================
* Update dependencies and the dependency configuration.
Changes from 1.4.1 to 1.4.2
===========================
* Minor improvements to the code.
* Minor improvements to the documentation.
* Update dependencies.
Changes from 1.4 to 1.4.1
=========================
* Update the Markdown styling: tables, colors and <code> tags
* Split out file caching to a separate package: [datablock](https://github.com/xyproto/datablock)
* Add an [example](https://github.com/xyproto/algernon/tree/main/samples/structure) for structuring a web site.
* Add a Lua `preload()` function, for caching files before they are needed.
* Let the Lua `render()` and ` serve()` functions take an optional filename.
* Fallback for the log filename.
* Add `-V` flag for "verbose".
* Add `--ctrld` flag for having to press `ctrl-d` twice to exit the REPL.
* Use BoltDB by default instead of Redis.
* Add script for testing functionality (HTTP server + curl) that is ran by the CI system.
* Fix issue when running some `.alg` files.
* Refactor.
Changes from 1.3.2 to 1.4
=========================
* Improve autocomplete in the REPL.
* Only add syntax highlighting to rendered HTML when needed.
* Some refactoring: made the code simpler.
* Move error checks before defer statements whenever possible.
* Set headers so that browsers will download the most common binary formats instead of displaying them.
* Update vendored dependencies.
Changes from 1.3.1 to 1.3.2
===========================
* Remove the dependency on readline. No external C dependencies left.
* The beginnings of better completion in the REPL.
* Update dependencies using Glide.
Changes from 1.3 to 1.3.1
=========================
* Less strict headers when using the auto-refresh feature.
Changes from 1.2.1 to 1.3
=========================
* Support for streaming large files (HTTP range).
* Minor improvements to the samples.
Changes from 1.2 to 1.2.1
=========================
* Improve the REPL and the pprint function.
* Fix a race issue when setting up a handle function from Lua.
* Add a "Host" header to the header table.
Changes from 1.1 to 1.2
=======================
* Add support for SCSS (Sass).
* Fix the Pongo2 + Lua data race issue with a Mutex.
* Vendor all dependencies and add a Glide YAML file.
* Render `* [ ]`, `* [x]` and `* [X]` in Markdown as checkboxes.
* Add support for different images per Markdown theme, using the `replace_with_theme` keyword.
* Add support for custom CSS from Markdown, using the `css` keyword.
* Add another built-in Markdown theme: redbox.
* Remove unused variables.
Changes from 1.0 to 1.1
=======================
General
-------
* Tested with Go 1.7
* Added PostgreSQL >= 9.1 support (with the HSTORE feature).
* Added two built-in themes for error pages, directory listings and Markdown.
* Added a `--theme` flag for selecting a theme.
* Added a `--nocache` flag for disabling caching.
* Added default HTTP headers, for security.
* Algernon servers now get A+ at https://securityheaders.io/.
* Added a `--noheader` flag for disabling security-related HTTP headers.
* Switched back to the official pongo2 repo after a pull request was merged.
Lua
---
* Added a `pprint` function for slightly prettier printing.
* Added a `ppstr` function for slightly prettier printing, but to a string.
* Let `redirect` take an optional HTTP status code.
* Added a `permanent_redirect` function which only takes an URL.
* Let `dofile` search the directory of the Lua file that is running.
* Fixed an issue with returning HTTP status codes from Lua in Debug mode.
* Renamed `toJSON` to just `JSON`. Both are still present and still work.
Markdown
--------
* Can now select a built-in theme with `theme:`.
* Can now select the highlight.js theme with `code_style:`.
REPL
----
* More graceful shutdown upon SIGHUP on Linux.
Deployment
----------
* Minor improvements to the `alg2docker` script.
Samples and documentation
-------------------------
* Fixed several minor typos.
* Added an URL location check in the "bob" sample.
1.0
===
* Release.