- Use
net/http
instead offasthttp
for serving regular HTTP to make theflush()
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.
- 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
orcosine
. - 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.
- Add three Ollama-related functions:
base64EncodeFile
,describeImage
andembeddedDistance
. - Add an example for uploading and describing images with Ollama and the
llava-llama3
model. - Add a
base64
method toUploadedFile
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 offmt.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.
- 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.
- Make the Makefile clearer.
- Update the form/registration example.
- Update dependencies.
- Improve field alignment using
dkorunic/betteralign
. - Update dependencies.
- 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.
- 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.
- Switch from
blackfriday
togomarkdown/markdown
. - Add a simple example that uses the
markdown
function. - Update the CI configuration.
- Update dependencies.
- Update documentation.
- 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
andio
instead of the deprecatedioutil
package. - Use
any
instead ofinterface{}
. - Use the new
unix
build constraint. - Use
strings.ReplaceAll
andbytes.ReplaceAll
. - Use
simpleredis/v2
. - Use
math.Round
. - Add an
ulimit
check to thewelcome.sh
script that also works on macOS Ventura. - Format/lint the code with
gofumpt
,golint
andstaticcheck
. - 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.
- 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 extentfieldalignment
. - Update dependencies.
- Add a flag for serving domains with CertMagic and Let's Encrypt
- Add a flag for redirecting from HTTP to HTTPS
- Use
req.Context
sinceCloseNotifier
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
- Downgrade fsnotify to v1.4.9 so that building with GOOS=freebsd works again
- 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
andserverfile
- 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
andstaticcheck
- Support Go 1.16 and Go 1.17 only, for now
- Update CI configuration
- Update dependencies
- Update documentation
- Only include QUIC support on supported platforms. This should let Algernon build for the Apple M1 CPU.
- Remove OpenBSD support while waiting for pkg/term to support it.
- Use a specific commit of pkg/term so that it also compiles for FreeBSD.
- 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 astext/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.
- 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.
- Issues with bolt db, simplebolt and
gccgo
are resolved. Algernon now also supportsgccgo
. - 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.
- 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.
- 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
andSetCookieSecret
can now be used to get and set the secure cookie secret from Lua, or it can be set with the--cookiesecret
flag.
- 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.
- Fix #25, where an attack with vegeta could make Algernon crash.
- Update dependencies (boltdb has a new home, TLS 1.3 has further improvements).
- 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).
- 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 tostyle.gcss
. - Better Markdown checkbox support.
- Some refactoring and linting.
- 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.
- 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.
- Syntax highlighting by using chroma instead of highlight.js.
- 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.
- 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.
- Fix an issue with
curl
+algernon
that was not present withwget
+algernon
, related to HTTP headers and compression. - Some refactoring and linting of the code.
- Less strict HTTP headers by default.
- Update vendored dependencies.
- 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.
- 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.
- 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
- Switch JSX rendering engine to one that uses goja
- Add support for HyperApp JSX apps with the
.happ
or.hyper
extension
- Performance improvements when rendering Markdown and directory listings
- Refactoring out code to the
kinnian
package - Update samples.
- Update vendored dependencies.
- Refactor code into packages.
- Update tests and documentation.
- Update dependencies and the dependency configuration.
- Minor improvements to the code.
- Minor improvements to the documentation.
- Update dependencies.
- Update the Markdown styling: tables, colors and <code> tags
- Split out file caching to a separate package: datablock
- Add an example for structuring a web site.
- Add a Lua
preload()
function, for caching files before they are needed. - Let the Lua
render()
andserve()
functions take an optional filename. - Fallback for the log filename.
- Add
-V
flag for "verbose". - Add
--ctrld
flag for having to pressctrl-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.
- 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.
- Remove the dependency on readline. No external C dependencies left.
- The beginnings of better completion in the REPL.
- Update dependencies using Glide.
- Less strict headers when using the auto-refresh feature.
- Support for streaming large files (HTTP range).
- Minor improvements to the samples.
- 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.
- 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.
- 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.
- 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 justJSON
. Both are still present and still work.
- Can now select a built-in theme with
theme:
. - Can now select the highlight.js theme with
code_style:
.
- More graceful shutdown upon SIGHUP on Linux.
- Minor improvements to the
alg2docker
script.
- Fixed several minor typos.
- Added an URL location check in the "bob" sample.
- Release.