# 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 `

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