The Perl Advent Calendar needs more articles for 2022. Submit your idea today!
4.06

- No user facing changes: The client certificate using extensions are
  no longer tested by default.

4.05

- Uploading of text/gemini is now treated like text/plain, resulting
  in a page (instead of an attempted file upload).

- Uploading "to the /files folder" is now allowed.

- Document how to build and run a docker image.

- MIME type is optional.

4.04

- App::Phoebe::Oracle is new.

4.03

- App::Phoebe::Capsule is new.

- titan now parses the command line arguments better and doesn't
  prefer the default certificate over the one given on the command
  line; use --key_file instead of --cert_key.

4.02

- App::Phoebe::WebDAV is new.

- App::Phoebe::Ijirait changes. No more "map" but a "find" command
  instead. An "id" command, and a "forget" command, because now the
  game allows you to remember certain ids that the player has seen.

- Add log processing to phoebe-ctl, in case you use
  App::Phoebe::DebugIpNumbers.

- Add a --no_tls to phoebe, in case you want to run it as a back-end
  without TLS.

- Add colour styles to history and diff (behind a link).

4.01

- It's now App::Phoebe instead of App::phoebe.

- App::Phoebe::RegisteredEditorsOnly now works if you use
  App::Phoebe::WebEdit.

- App::Phoebe::Ijirait has a backup command to allow players to
  download the world data (without fingerprints); the rooms command
  now allows you to list ghosts (inactive characters).

- Both ijirait and titan scripts no longer use --url= as there is
  exactly one URL and it is mandatory.

- App::Phoebe::Gopher no longer prints links for plain text pages.

- App::Phoebe::WebStaticFiles is new.

4.00

If you are using contributions or have a config that heavily interacts
with the Phoebe code, this is a backwards-incompatible upgrade! Please
review the documentation and rewrite your extensions.

Review your conf.d folder; if you are linking any contributions from
this directory, you will have to change the setup. For example,
instead of linking web-edit.pl into your conf.d directory, you would
edit your config file and add:

    use App::Phoebe::WebEdit;

Serving a web site is now also plugin. Add the following to
your config file:

    use App::Phoebe::Web;

Other changes:

- Search is now case insensitive

- Changed how contributions work: instead of linking extensions into
  your wiki dir's conf.d directory, you just "use" the appropriate
  module; all modules now come with documentation and tests

- App::Phoebe::StaticFiles is new; use it to serve static files from
  directories on your server

- App::Phoebe::Ijirait is new; a MUSH, i.e. a shared world for all
  participants to build and interact in; script/ijirait is also new, a
  custom CLI client for the game

- App::Phoebe::Spartan is new; an alternative to Gemini and Titan
  since it's very simply, suggests gemtext for text formatting, allows
  uploads, but doesn't do TLS

- App::Phoebe::Iapetus is new; an alternative to the Titan protocol
  for uploading

- App::Phoebe::SpeedBump loads the block list on startup; as it saves
  every half an hour, that means you no longer have to worry too much
  about losing information on the blocked IP numbers and networks

- App::Gopher is new and improved; it no longer just prints the Gemini
  text but does line wrapping and all that

3.00

- Add special feeds for the blog, i.e. the pages starting with an ISO
  date

2.08

- Updated dependencies to Mojolicious 9.0 (because the tls_verify
  parameter was replaced by a more general tls_options).

- Reduced the SSL session cache to 64 in attempt to fix a memory leak
  but which I was unable to do: the solution I'm using right now is to
  use memory parameters in the systemd service definition.

- Fixed colour links in /changes within wiki spaces.

- Fixed output of /robots.txt.

- contrib/oddmuse.pl: New, in case you want to serve an Oddmuse wiki
  from Phoebe (like I do); working on support to translate Oddmuse
  namespaces to wiki spaces transparently.

- contrib/gopher.pl: New, in case you want to serve your Phoebe wiki
  via Gopher; this does not work with contrib/oddmuse.pl – if you want
  to serve your Oddmuse wiki via Gopher, use the gopher-server.pl
  which is part of Oddmuse.

- contrib/speed-bump.pl: Improved detection of non-human behaviour;
  added client finger print requirements for admin views, debug view,
  and status view; save stats every half hour; load them on startup;
  add network range blocking.

- contrib/wikipedia.pl: There are constellations where the spanning
  table code goes nuts and throws a gazillion warnings. I still
  haven't fixed this, so for the time being, tables are simple no
  longer handled.

- contrib/heap-dump.pl: New, in case you need to debug heap dumps of
  the Phoebe process.

2.07

- Fixed serving of robots.txt in a virtual hosting environment;
  ignoring query and fragment when deciding whether to serve the
  default robots.txt.

- phoebe-ctl can export HTML.

2.02

- Handle international domain names: when you provide them with the
  --host option, the address lookup happens using their punycode
  representation, and URIs containing these punycode representations
  of the international domain name are served correctly.

- Improvements to the gemini script (the simple command line client):
  knows how to stream; decodes text appropriately; has a --verbose
  flag; takes client certificates.

- Add all the extensions from the Phoebe wiki as config files for your
  conf.d directory.

- Add a gemini-chat script to work with the chat.pl config file.

- Man pages look more like man pages.

- Fixed a bug in printing the source code.

- Fixed several instances of streams not being closed correctly,
  leading to timeouts for clients that kept waiting for the end of
  file.

- Fixed the bug that config was running before the config files in
  conf.d, making it impossible to overwrite our variables.

- Changed some functions to no longer take a $stream argument.

2.00

- This is a .00 release. I expect things to break. That said, I run my
  sites with it. :)

- Change the framework underneath, from Net::Server to Mojo::IOLoop;
  this is a breaking change and you should carefully review the way
  your extensions are written!

- Phoebe no longer uses STDIN and STDOUT to serve requests but a
  Mojo::IOLoop::Stream object. Phoebe is no longer a class so the
  $self parameter of many calls either fell away or got replaced with
  a $stream object to which you $stream->write.

- Phoebe lost many options and capabilities for daemonisation. Using
  systemd is now the recommended way to run Phoebe (using a
  traditional setup is still possible, but there are no longer any
  options to set a PID file, to background the process, and so on).

- The huge config file of mine I mined for code examples got split
  into smaller files, and where you previously had one big config file
  you can now also have a conf.d/ directory with even more config
  files. All the files in the contrib/ directory of this distribution
  are lifted straight from my setup.

1.20

- Add conf.d directory next to the config file for easier code sharing