mirror of
https://github.com/jointakahe/takahe.git
synced 2024-05-19 17:48:10 +00:00
Compare commits
8 commits
0f3095a3e1
...
818566421b
Author | SHA1 | Date | |
---|---|---|---|
818566421b | |||
7c34ac78ed | |||
72eb6a6271 | |||
b2223ddf42 | |||
045a499ddf | |||
0fa48578f2 | |||
21c6b2a89f | |||
bf2f5378a5 |
|
@ -3,7 +3,7 @@
|
|||
A *beta* Fediverse server for microblogging. Not fully polished yet -
|
||||
we're still working towards a 1.0!
|
||||
|
||||
**Current version: [0.10.1](https://docs.jointakahe.org/en/latest/releases/0.10/)**
|
||||
**Current version: [0.11.0](https://docs.jointakahe.org/en/latest/releases/0.11/)**
|
||||
|
||||
Key features:
|
||||
|
||||
|
|
|
@ -219,7 +219,7 @@ class HttpSignature:
|
|||
body_bytes = b""
|
||||
# GET requests get implicit accept headers added
|
||||
if method == "get":
|
||||
headers["Accept"] = "application/ld+json"
|
||||
headers["Accept"] = "application/activity+json,application/ld+json"
|
||||
# Sign the headers
|
||||
signed_string = "\n".join(
|
||||
f"{name.lower()}: {value}" for name, value in headers.items()
|
||||
|
|
57
docker/logging_config.ini
Normal file
57
docker/logging_config.ini
Normal file
|
@ -0,0 +1,57 @@
|
|||
[handlers]
|
||||
keys = out, error
|
||||
|
||||
[handler_out]
|
||||
class = StreamHandler
|
||||
formatter = generic
|
||||
args = (sys.stdout,)
|
||||
|
||||
[handler_error]
|
||||
class = StreamHandler
|
||||
formatter = generic
|
||||
args = (sys.stderr,)
|
||||
|
||||
[formatters]
|
||||
keys = generic
|
||||
|
||||
[formatter_generic]
|
||||
format = [%(levelname)s] [%(name)s]: %(message)s
|
||||
|
||||
[loggers]
|
||||
keys = root, gunicorn, django, takahe_core, takahe_stator, takahe_users, takahe_activities
|
||||
|
||||
[logger_root]
|
||||
handlers = error
|
||||
level = WARNING
|
||||
|
||||
[logger_gunicorn]
|
||||
handlers = error
|
||||
qualname = gunicorn.error
|
||||
level = ERROR
|
||||
propagate = 0
|
||||
|
||||
[logger_django]
|
||||
handlers = error
|
||||
qualname = django
|
||||
level = ERROR
|
||||
propagate = 0
|
||||
|
||||
[logger_takahe_core]
|
||||
handlers = out
|
||||
qualname = core
|
||||
level = INFO
|
||||
|
||||
[logger_takahe_stator]
|
||||
handlers = out
|
||||
qualname = stator
|
||||
level = INFO
|
||||
|
||||
[logger_takahe_users]
|
||||
handlers = out
|
||||
qualname = users
|
||||
level = INFO
|
||||
|
||||
[logger_takahe_activities]
|
||||
handlers = out
|
||||
qualname = activities
|
||||
level = INFO
|
|
@ -172,3 +172,37 @@ We use `HTMX <https://htmx.org/>`_ for dynamically loading content, and
|
|||
`Hyperscript <https://hyperscript.org/>`_ for most interactions rather than raw
|
||||
JavaScript. If you can accomplish what you need with these tools, please use them
|
||||
rather than adding JS.
|
||||
|
||||
|
||||
Cutting a release
|
||||
-----------------
|
||||
|
||||
In order to make a release of Takahē, follow these steps:
|
||||
|
||||
* Create or update the release document (in ``/docs/releases``) for the
|
||||
release; major versions get their own document, minor releases get a
|
||||
subheading in the document for their major release.
|
||||
|
||||
* Go through the git commit history since the last release in order to write
|
||||
a reasonable summary of features.
|
||||
|
||||
* Be sure to include the little paragraphs at the end about contributing and
|
||||
the docker tag, and an Upgrade Notes section that at minimum mentions
|
||||
migrations and if they're normal or weird (even if there aren't any, it's
|
||||
nice to call that out).
|
||||
|
||||
* If it's a new doc, make sure you include it in ``docs/releases/index.rst``!
|
||||
|
||||
* Update the version number in ``/takahe/__init__.py``
|
||||
|
||||
* Update the version number in ``README.md``
|
||||
|
||||
* Make a commit containing these changes called ``Releasing 1.23.45``.
|
||||
|
||||
* Tag that commit with a tag in the format ``1.23.45``.
|
||||
|
||||
* Wait for the GitHub Actions to run and publish the docker images (around 20
|
||||
minutes as the ARM build is a bit slow)
|
||||
|
||||
* Post on the official account announcing the relase and linking to the
|
||||
now-published release notes.
|
||||
|
|
|
@ -1,21 +1,54 @@
|
|||
0.11
|
||||
====
|
||||
|
||||
*Released: Not Yet Released*
|
||||
*Released: 2024-02-05*
|
||||
|
||||
Notes TBD.
|
||||
This is largely a bugfix and catch up release.
|
||||
|
||||
Some highlights:
|
||||
|
||||
* Python 3.10 has been dropped. The new minimum Python version is 3.11
|
||||
* Jamie (`@astraluma@tacobelllabs.net <https://tacobelllabs.net/@astraluma>`_)
|
||||
has officially joined the project
|
||||
* If your S3 does not use TLS, you must use ``s3-insecure`` in your
|
||||
configuration
|
||||
* Takahē now supports unicode hashtags
|
||||
* Add a Maximum Media Attachments setting
|
||||
* Inverted the pruning command exit codes
|
||||
* Posts are no longer required to have text content
|
||||
|
||||
And some interoperability bugs:
|
||||
|
||||
* Fixed a bug with GoToSocial
|
||||
* Attempted to fix follows from Misskey family
|
||||
* Correctly handle when a federated report doesn't have content
|
||||
|
||||
In additions, there's many bugfixes and minor changes, including:
|
||||
|
||||
* Several JSON handling improvements
|
||||
* Post pruning now has a random element to it
|
||||
* More specific loggers
|
||||
* Don't make local identities stale
|
||||
* Don't try to unmute when there's no expiration
|
||||
* Don't try to WebFinger local users
|
||||
* Synchronize follow accepting and profile fetching
|
||||
* Perform some basic domain validity
|
||||
* Correctly reject more operations when the identity is deleted
|
||||
* Post edit fanouts for likers/boosters
|
||||
|
||||
|
||||
If you'd like to help with code, design, or other areas, see
|
||||
:doc:`/contributing` to see how to get in touch.
|
||||
|
||||
You can download images from `Docker Hub <https://hub.docker.com/r/jointakahe/takahe>`_,
|
||||
or use the image name ``jointakahe/takahe:0.11``.
|
||||
|
||||
|
||||
Upgrade Notes
|
||||
-------------
|
||||
|
||||
VAPID keys and Push notifications
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Migrations
|
||||
~~~~~~~~~~
|
||||
|
||||
Takahē now supports push notifications if you supply a valid VAPID keypair as
|
||||
the ``TAKAHE_VAPID_PUBLIC_KEY`` and ``TAKAHE_VAPID_PRIVATE_KEY`` environment
|
||||
variables. You can generate a keypair via `https://web-push-codelab.glitch.me/`_.
|
||||
|
||||
Note that users of apps may need to sign out and in again to their accounts for
|
||||
the app to notice that it can now do push notifications. Some apps, like Elk,
|
||||
may cache the fact your server didn't support it for a while.
|
||||
There are new database migrations; they are backwards-compatible and should
|
||||
not present any major database load.
|
||||
|
|
|
@ -7,6 +7,7 @@ Versions
|
|||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
0.11
|
||||
0.10
|
||||
0.9
|
||||
0.8
|
||||
|
|
15
docs/releases/next.rst
Normal file
15
docs/releases/next.rst
Normal file
|
@ -0,0 +1,15 @@
|
|||
|
||||
|
||||
Upgrade Notes
|
||||
-------------
|
||||
|
||||
VAPID keys and Push notifications
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Takahē now supports push notifications if you supply a valid VAPID keypair as
|
||||
the ``TAKAHE_VAPID_PUBLIC_KEY`` and ``TAKAHE_VAPID_PRIVATE_KEY`` environment
|
||||
variables. You can generate a keypair via `https://web-push-codelab.glitch.me/`_.
|
||||
|
||||
Note that users of apps may need to sign out and in again to their accounts for
|
||||
the app to notice that it can now do push notifications. Some apps, like Elk,
|
||||
may cache the fact your server didn't support it for a while.
|
|
@ -1,4 +1,5 @@
|
|||
import logging
|
||||
import logging.config
|
||||
from typing import cast
|
||||
|
||||
from django.apps import apps
|
||||
|
@ -49,6 +50,12 @@ class Command(BaseCommand):
|
|||
action="append",
|
||||
help="Model labels that should not be processed",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--log-config",
|
||||
type=str,
|
||||
default=None,
|
||||
help="Configuration file for logging",
|
||||
)
|
||||
parser.add_argument("model_labels", nargs="*", type=str)
|
||||
|
||||
def handle(
|
||||
|
@ -59,6 +66,7 @@ class Command(BaseCommand):
|
|||
schedule_interval: int,
|
||||
run_for: int,
|
||||
exclude: list[str],
|
||||
log_config: str,
|
||||
*args,
|
||||
**options
|
||||
):
|
||||
|
@ -68,8 +76,9 @@ class Command(BaseCommand):
|
|||
format="[%(asctime)s] %(levelname)8s - %(message)s",
|
||||
datefmt="%Y-%m-%d %H:%M:%S",
|
||||
level=logging.INFO,
|
||||
force=True,
|
||||
)
|
||||
if log_config:
|
||||
logging.config.fileConfig(log_config)
|
||||
# Resolve the models list into names
|
||||
models = cast(
|
||||
list[type[StatorModel]],
|
||||
|
|
|
@ -1 +1 @@
|
|||
__version__ = "0.10.1"
|
||||
__version__ = "0.11.0"
|
||||
|
|
Loading…
Reference in a new issue