telodendria/man/man7/telodendria-changelog.7
2023-01-17 21:38:39 +00:00

173 lines
5.4 KiB
Groff

.Dd $Mdocdate: January 17 2023 $
.Dt TELODENDRIA-CHANGELOG 7
.Os Telodendria Project
.Sh NAME
.Nm Telodendria
.Nd The change log for the Telodendria project.
.Sh PROJECT STATUS
.Pp
.Nm
is a very ambitious project. There's a lot that needs to happen yet
before it is usable. At the moment,
.Nm
is starting to resemble a Matrix homeserver, but you can't really
call it one yet. The foundation is mostly in place; now there's the
Matrix specification to implement.
.Pp
Just because there's not much here yet doesn't mean you should go
away! I could always use help, so you are more than welcome to get
involved in the project if you want to see things move quicker.
Feel free to donate using the links on the project website, or
see the
.Xr contributing 7
page for details on how to get involved. The CVS repository has
a file called
.Pa TODO.txt ,
which contains a checklist of the items that need to be completed.
Feel free to grab an item on that list and start writing patches!
It's a good idea to join the Matrix rooms noted in
.Xr telodendria 7
as well, so you can discuss your progress and ask questions.
.Sh v0.2.0
.Pp
Not released yet.
.Pp
This release is focused on providing a decent amount of the
client authentication API. You can now create accounts on a
Telodendria homeserver, and log in to get access tokens.
.Pp
New:
.Bl -bullet
.It
Added the basic form of the user registration API. If
registration is enabled in the configuration file, clients
can now register for Matrix accounts.
.It
Added the basic form of the user login API. Clients can now
log in to their accounts and generate access tokens to be
used to authenticate requests.
.It
Added the basic form of the user interactive authentication API,
which can be used by any endpoints that the spec says require
it. Currently, it only implements a single dummy login flow,
so it's more of a formality than anything else, but more login
flows can easily be added in the future.
.It
Added a simple landing page that allows those setting up
.Nm
to quickly verify that it is accessible where it needs to be.
.It
Added a way to safely delete objects from the database.
While the database is for persistent storage, there may
be some ephemeral data that lives there only for a short
while, so it will be necessary to remove that data when
necessary.
.It
Added a thread-safe random string generator, which will
be used extensively for generating session tokens, device
IDs, access tokens, and more. This generator is seeded by
the current timestamp and the thread ID, so it should be
fairly random.
.It
Added a SHA-256 hash function, which at present is used
to hash passwords.
.It
Added a basic job scheduler to execute periodic jobs, such
as expiring tokens and cleaning up temporary files.
.El
.Pp
Changes:
.Bl -bullet
.It
Improved HTTP request logging by removing unnecessary
log entries and making errors more specific.
.It
Leaked memory is now hexdump-ed out to the log if the log
level is set to debug. This greatly simplifies debugging,
because developers can now easily see exactly what the
contents of the leaked memory are. Note that in some
circumstances, this memory may contain sensitive data,
such as access tokens, usernames, or passwords. However,
.Nm
should not be leaking memory at all, so if you encounter
any leaks, please report them.
.It
Refactored a lot of the code and accompanying documentation
to be more readable and maintainable.
.El
.Pp
Bug fixes:
.Pp
.Bl -bullet
.It
Fixed a memory leak that would occur when parsing an invalid
JSON object.
.It
Fixed an edge case where HTTP response headers were being
sent before they were properly set, causing the server to
report a status of 200 even when that wasn't the desired
status.
.It
Fixed a few memory leaks in the HTTP parameter decoder that
would occur in some edge cases.
.It
Fixed an "off-by-one" error in the HTTP server request
parser that prevented GET parameters from being parsed.
.It
Fixed the database file name generator to prevent directory
traversal attacks by replacing special characters with
safer ones.
.It
Fixed a memory leak that would occur when closing a
database that contains cached objects.
.It
Fixed a memory leak that would occur when deleting database
objects.
.It
Fixed a few non-fatal memory warnings that would show up
as a result of passing a constant string into certain APIs.
.El
.Pp
Misc:
.Bl -bullet
.It
Fixed a bug in
.Xr td 8
that caused
.Xr cvs 1
to be invoked in the wrong directory when tagging a new release.
.It
Added support for environment variable substitution in all site
files. This makes it easier to release
.Nm
versions.
.It
Fix whitespace issues in various shell scripts.
.It
Fixed the debug log output so that it only shows the file name,
not the entire file path in the repository.
.It
Updated the copyright year in the source code and compiled output.
.It
Switch the -std=c89 flag to -ansi instead, as -ansi might be more
supported.
.It
Fixed the -v flag. It now sets the log level to debug as soon
as possible to allowe debugging the configuration file parsing
if necessary.
.El
.Pp
And many more small bug fixes and feature additions. Please
test the current functionality, and report bugs to the Matrix
rooms.
.Sh v0.1.0
.Pp
Tuesday, December 13, 2022
.Pp
This is the first public release of
.Nm
so there are no changes to report. Future releases will
have a complete change log entry here.
.Pp
This is a symbolic release targeted at developers, so there's nothing
useful to ordinary users yet. Stay tuned for future releases though!