- Update go.mod, ref #159.
- Fix a missing
mcharacter 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.
- Switch from vt100 to the vt package.
- Update CI configuration.
- Remove
FUNDING.yml. - Update documentation.
- Update dependencies.
- Only listen for the USR1 signal on some platforms. Fixes #157.
- Add a
run3function, ref #158. - Add
print_nonlthat can be used in connection withflush. - Add the
mprint_retfunction that can return required JS code instead of inserting it. - Let
flush,redirectandpermanent_redirectreturntrueif the connection was not closed when sending. - Add support for ie.
lang: enandlanguage: enin Markdown files. - Improve the "mathematical formulas" sample.
- Add a typewriter / server-side flush example.
- Set the language to
enfor 3 of the samples. - Build with
-ldflags "-s -w" -buildvcs=falseby default in theMakefile. - Improve error handling in connection with recorders and flushing.
- Improve some warnings and error messages.
- Add an informative message when serving
README.mdfiles without-m. - Update documentation.
- Update dependencies.
- Use
net/httpinstead offasthttpfor 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
USR1signal. - 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/tidbdependency 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
embeddedDistanceLua function take a 3rd argument:euclidean,manhattan,chebyshev,hammingorcosine. - 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
-mand-oare specified. - Also cache
.webpimages, if caching of images is enabled. - Update dependencies.
- Update documentation.
- Add three Ollama-related functions:
base64EncodeFile,describeImageandembeddedDistance. - Add an example for uploading and describing images with Ollama and the
llava-llama3model. - Add a
base64method toUploadedFileobjects. - 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.GOOSand detect most features at compile time instead. - Use two
atomic.Boolvariables instead of a mutex for keeping track of how data is being served. - Import
logrusas "logrus" instead of as "log". - Use
strconf.FormatIntinstead offmt.Sprintfwhenever possible. - Use
github.com/pkg/browserfor 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
sanhtmlfunction for sanitizing HTML. - Add experimental support for mathematical formulas in Markdown using MathJax (ref #150).
- Add an example that renders mathematical formulas.
- Remove
GOEXPERIMENT=loopvarsince 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
.promptfiles 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
alg2dockerscript. - 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=loopvarand adjust the build flags. - Enable profile-guided optimization.
- Update the benchmark script.
- Check the arguments for the
servedirLua function. - Update the GH action for Homebrew.
- Make the prefixmatch tests pass.
- Remove the
github.com/bmizerany/assertdependency. - 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
.jsonfiles a tiny bit faster. - Serve Algernon web applications (
.algfiles) from memory, ref #132 (thanks Dialga / @Dialga). - Remove a duplicate word from the
README.mdfile (thanks Philipp Gillé / @philippgille). - Update dependencies.
- Switch from
blackfridaytogomarkdown/markdown. - Add a simple example that uses the
markdownfunction. - 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.luain parent directories, ref #95, #112 and #130 (thanks Giulio Lunati / @giuliolunati). - Add initial support for JWT tokens.
- Use
osandioinstead of the deprecatedioutilpackage. - Use
anyinstead ofinterface{}. - Use the new
unixbuild constraint. - Use
strings.ReplaceAllandbytes.ReplaceAll. - Use
simpleredis/v2. - Use
math.Round. - Add an
ulimitcheck to thewelcome.shscript that also works on macOS Ventura. - Format/lint the code with
gofumpt,golintandstaticcheck. - Use the
betteraligntool, 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
%2Fwould appear in the URL instead of/, ref #117. - Follow the advice of these utilities:
go fmt,golint,staticcheckand 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.ContextsinceCloseNotifierhas 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
--helpoutput - 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
serve2function 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,serverdirandserverfile - Add nicer help output for built-in commands to the repl
- Add a
ServerDirfunction 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,golintandstaticcheck - 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 --luainstances not use the same temporary database. - Let
.mk,.tsand.tsxbe served astext/plain;charset=utf-8. - Initial support for rendering
.frmand.formfiles 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
staticcheckutility. - 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/colorstringdependency. - Update dependencies.
- Use
algernon_history.txtas 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
gccgoare resolved. Algernon now also supportsgccgo. - Now requires Go 1.11 or later.
- Respect
TMPDIR, for improved Termux support. - Fix issue #42, when
--diris 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
gccgoand 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.
CookieSecretandSetCookieSecretcan now be used to get and set the secure cookie secret from Lua, or it can be set with the--cookiesecretflag.
- 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
IGNOREEOFenvironment 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=Nfor 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=Nfor 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
--luamode. - Using the new
strings.Builderin Go. - Better Markdown keyword handling.
- Update vendored dependencies.
- Include transmitted bytes in the access log.
- Detect
style.cssin addition tostyle.gcss. - Better Markdown checkbox support.
- Some refactoring and linting.
- Using the
go modsystem 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
-lor--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+algernonthat 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
.algernonfiles for configuring directory listings (set a theme and title). - Support for having a port number as the only argument.
- Add a
--nodbflag, 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.jsand.hyper.jsxextensions for HyperApp applications - Style HyperApp applications if no style/theme/
style.gcssis provided - Also support HyperApp applications when using the
--theme=...flag - Add the
hprintLua function, for combining HyperApp and Lua
- Switch JSX rendering engine to one that uses goja
- Add support for HyperApp JSX apps with the
.happor.hyperextension
- Performance improvements when rendering Markdown and directory listings
- Refactoring out code to the
kinnianpackage - 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
-Vflag for "verbose". - Add
--ctrldflag for having to pressctrl-dtwice 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
.algfiles. - 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_themekeyword. - Add support for custom CSS from Markdown, using the
csskeyword. - 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
--themeflag for selecting a theme. - Added a
--nocacheflag for disabling caching. - Added default HTTP headers, for security.
- Algernon servers now get A+ at https://securityheaders.io/.
- Added a
--noheaderflag for disabling security-related HTTP headers. - Switched back to the official pongo2 repo after a pull request was merged.
- Added a
pprintfunction for slightly prettier printing. - Added a
ppstrfunction for slightly prettier printing, but to a string. - Let
redirecttake an optional HTTP status code. - Added a
permanent_redirectfunction which only takes an URL. - Let
dofilesearch the directory of the Lua file that is running. - Fixed an issue with returning HTTP status codes from Lua in Debug mode.
- Renamed
toJSONto 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
alg2dockerscript.
- Fixed several minor typos.
- Added an URL location check in the "bob" sample.
- Release.