100 Commits
Author SHA1 Message Date
delliottandDarragh Elliott 4b91d0041b fix: improper less than in list (#6082)
continuous-integration/drone/push Build is passing
Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #6082
2026-08-25 09:31:40 +00:00
delliottandDarragh Elliott b4200d61a4 Fix/url opening (#6044)
continuous-integration/drone/push Build is passing
better webserver stuff

Fixed attempt after previous one broke things.

---------

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #6044
Co-authored-by: delliott <420+delliott@fsfe.org>
2026-08-08 18:26:08 +00:00
delliottandDarragh Elliott 3568fb8108 feat: add support for setting the fallback language (#5950)
continuous-integration/drone/push Build is passing
Just a bit neater and more sensible.

---------

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5950
Co-authored-by: delliott <420+delliott@fsfe.org>
Co-committed-by: delliott <420+delliott@fsfe.org>
2026-07-24 11:56:54 +00:00
delliottandDarragh Elliott c4e464ba46 Fix: url opening (#6013)
continuous-integration/drone/push Build is passing
open serve urls in a crossplatform way
open urls after they have started to be served

---------

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #6013
Co-authored-by: delliott <420+delliott@fsfe.org>
Co-committed-by: delliott <420+delliott@fsfe.org>
2026-07-21 09:35:31 +00:00
delliottandDarragh Elliott 2e7807bd67 fix: stop using weird drone shell pointed at wrong git repo that never worked (#6014)
continuous-integration/drone/push Build is passing
move similar logic to main nix shell, and document.
misc doc fixes while passing through

---------

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #6014
Co-authored-by: delliott <420+delliott@fsfe.org>
Co-committed-by: delliott <420+delliott@fsfe.org>
2026-07-21 09:33:57 +00:00
delliottandDarragh Elliott 0fbc6551d4 Revert "Remove timeline mension from press pages" (#5720)
continuous-integration/drone/push Build is passing
This reverts commit ed19e107f8.

Now we have a timeline that looks somewhat nice, we can plan restoring it to prominence. This pr should wait till we have added new content, maybe?

---------

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5720
Co-authored-by: delliott <420+delliott@fsfe.org>
Co-committed-by: delliott <420+delliott@fsfe.org>
2026-07-07 08:30:11 +00:00
delliottandDarragh Elliott 49130268b3 fix: duplicate tag entries (#5949)
continuous-integration/drone/push Build is passing
fixes #5773

---------

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5949
Reviewed-by: tobiasd <181+tobiasd@fsfe.org>
Co-authored-by: delliott <420+delliott@fsfe.org>
Co-committed-by: delliott <420+delliott@fsfe.org>
2026-06-24 08:51:08 +00:00
delliottandDarragh Elliott be16102fac Fix/events folder (#5921)
continuous-integration/drone/push Build is passing
Solves #5621

I feel the images should be moved to pics.fsfe.org too, but not sure what folder to place them in? Also I do not seem to have access, so perhaps I should not be the one to do that?

---------

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5921
Co-authored-by: delliott <420+delliott@fsfe.org>
Co-committed-by: delliott <420+delliott@fsfe.org>
2026-06-12 04:40:01 +00:00
delliottandDarragh Elliott 4a50081af4 Feat/collapse (#5920)
continuous-integration/drone/push Build is passing
- do not list empty years in the timeline
- do not put emojis in timeline item headers

This is based on discussion with @anaghz and @tobiasd today.

---------

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5920
Reviewed-by: tobiasd <181+tobiasd@fsfe.org>
Co-authored-by: delliott <420+delliott@fsfe.org>
Co-committed-by: delliott <420+delliott@fsfe.org>
2026-06-11 12:24:59 +00:00
delliottandDarragh Elliott 3237475aa3 feat: cooling off period for python packages (#5918)
continuous-integration/drone/push Build is passing
also update the lockfile

---------

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5918
Co-authored-by: delliott <420+delliott@fsfe.org>
Co-committed-by: delliott <420+delliott@fsfe.org>
2026-06-11 09:12:45 +00:00
delliottandDarragh Elliott c74d9e0d1f Chore/lints (#5917)
continuous-integration/drone/push Build is passing
just running some linters on all files

---------

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5917
Reviewed-by: tobiasd <181+tobiasd@fsfe.org>
Co-authored-by: delliott <420+delliott@fsfe.org>
Co-committed-by: delliott <420+delliott@fsfe.org>
2026-06-11 09:06:32 +00:00
delliottandDarragh Elliott 375f63b043 feat: add darragh elliott to people page (#5805)
continuous-integration/drone/push Build is passing
It only took several years, but I got around to it ;D

---------

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5805
Co-authored-by: delliott <420+delliott@fsfe.org>
Co-committed-by: delliott <420+delliott@fsfe.org>
2026-05-12 10:00:52 +00:00
delliottandDarragh Elliott 1d0acdf389 feat: add coverage reports for library functions (#5839)
continuous-integration/drone/push Build is passing
Require 100% line  coverage for lib functions. At present we only test lib functions.

Add the tests needed to achieve this coverage.

---------

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5839
Co-authored-by: delliott <420+delliott@fsfe.org>
Co-committed-by: delliott <420+delliott@fsfe.org>
2026-05-08 07:17:41 +00:00
delliottandDarragh Elliott 9045896dff feat/check-dirs (#5809)
continuous-integration/drone/push Build is passing
Based on feedback in today's tech session, this pr makes some changes to the xml structure ci check

- The main one is that the check no longer applies to files matching the regex `r"^fsfe\.org/news/([0-9]{4}|nl)/.*"`.
  - This is essentially all news items and all newsletters.
  - This or something similar requested by @anaghz and proposed by @mk .
- Pr also adds some more items to the whitelist and patches updates the list for the status page.

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5809
Reviewed-by: tobiasd <tobiasd@fsfe.org>
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2026-04-23 06:40:24 +00:00
delliottandDarragh Elliott b00399c5a9 feat: add irish to languages (#5803)
continuous-integration/drone/push Build is passing
Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5803
2026-04-20 14:02:13 +00:00
delliottandDarragh Elliott 4b812844f3 fix: do not link to webpreview for xhtml files, as it is currently broken (#5796)
continuous-integration/drone/push Build is passing
Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5796
Reviewed-by: bonnie <bonnie@fsfe.org>
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2026-04-16 08:02:38 +00:00
delliottandDarragh Elliott b09fd9766b chore: update uv lock (#5794)
continuous-integration/drone/push Build is passing
Just a simple bump of dependencies.

Ran a simple build, no issues.

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5794
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2026-04-15 09:30:15 +00:00
delliottandDarragh Elliott bb71af1288 feat: optionally play notification+sound on completion (#5657)
continuous-integration/drone Build is passing
continuous-integration/drone/push Build is passing
dependency not installed by default, very opt in

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5657
Reviewed-by: tobiasd <tobiasd@fsfe.org>
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2026-04-14 12:18:18 +00:00
delliottandDarragh Elliott 40d067ecbc feat: prioritise introduction paragraphs and divs (#5793)
continuous-integration/drone/push Build is passing
Builds on work by @tobiasd

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5793
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2026-04-13 16:16:02 +00:00
delliottandDarragh Elliott e23d967a44 feat/fedi-redirect (#5682)
continuous-integration/drone/push Build is passing
So, this is a basic attempt at implementing the fedi redirects as described on the webpage.

Things I do not understand:

- In what format should we expect the address request to come?
- how one should determine the "location" param to be set in the header?
- What actually are the `.well-known` locations we need to redirect to the script?

Note that the php script is completely untested and almost certainly broken: this is a very rough POC

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5682
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2026-03-08 10:59:24 +00:00
delliottandDarragh Elliott 67a9cccd66 feat: put this years new/podcast in translation overview (#5732)
continuous-integration/drone/push Build is passing
some improvements to the subdir script

I think this is what we wanted to have news show up to be translated?

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5732
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2026-02-27 13:12:20 +00:00
delliottandDarragh Elliott d9343005b0 fix: allow us-ascii (#5731)
continuous-integration/drone/push Build is passing
Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5731
2026-02-26 13:14:17 +00:00
delliottandDarragh Elliott 6e595e8b60 fix: install file in precommit (#5730)
continuous-integration/drone/push Build is passing
Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5730
2026-02-26 13:06:19 +00:00
delliottandDarragh Elliott baf96e4d11 feat/python-checks (#5651)
continuous-integration/drone/push Build is passing
port the bash precommit hooks to python in a nice extensible way.

It should have feature parity and be much easier to read and maintain. It also allows for reducing the number of dependencies in the pre commit docker image.

I have tested that the checks can both pass and fail correctly, but it is somewhat possible there might be some edge cases and bugs I have missed. So for a short while after merging if failing ci look at it a little more carefully, in case the checks need some tuning.

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5651
Reviewed-by: tobiasd <tobiasd@fsfe.org>
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2026-02-26 12:40:54 +00:00
56e616f980 html-timeline (#4337)
continuous-integration/drone/push Build is passing
This pull request continues on the work completed by @nico.rikken in #1768

Co-authored-by: Darragh Elliott <me@delliott.net>
Co-authored-by: Darragh Elliott <me@delliott.xyz>
Co-authored-by: hl <hl@fsfe.org>
Reviewed-on: #4337
Reviewed-by: tobiasd <tobiasd@fsfe.org>
Co-authored-by: Darragh Elliott <delliott@fsfe.org>
Co-committed-by: Darragh Elliott <delliott@fsfe.org>
2026-02-19 09:36:45 +00:00
delliottandDarragh Elliott bc19eb4412 Revert "QUICK FIX: REVERT LATER: just use valentine all the time (#5707)" (#5714)
continuous-integration/drone/push Build is passing
This reverts commit f3d0f485a3.

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5714
2026-02-15 12:27:45 +00:00
delliottandDarragh Elliott 98336f24b3 fix: properly notice when stylesheets need updating (#5710)
continuous-integration/drone/push Build is passing
local testing is that it seems to work

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5710
2026-02-14 11:57:56 +00:00
delliottandDarragh Elliott f3d0f485a3 QUICK FIX: REVERT LATER: just use valentine all the time (#5707)
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is passing
Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5707
2026-02-14 10:39:32 +00:00
delliottandDarragh Elliott f8570a91be feat: switch to ty for typechecking (#5659)
continuous-integration/drone/push Build is passing
faster and smaller

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5659
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2026-02-11 11:47:30 +00:00
delliottandDarragh Elliott d1614ded53 feat/newsletter-overview (#5630)
continuous-integration/drone/push Build is passing
Should solve #5623

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5630
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2026-02-03 11:37:42 +00:00
delliottandDarragh Elliott 1867183ee9 fix: args.sites type (#5650)
continuous-integration/drone/push Build is passing
solves #5648

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5650
2026-01-28 11:08:49 +00:00
delliottandDarragh Elliott 0d99c0f164 fix/events-wiki (#5628)
continuous-integration/drone/push Build is passing
fixes #5622

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5628
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2026-01-27 10:32:25 +00:00
delliottandDarragh Elliott 5801952388 fix: clean xml comparison messages (#5626)
continuous-integration/drone/push Build is passing
Some better messages, and more whitelisting.

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5626
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2026-01-15 16:06:04 +00:00
delliottandDarragh Elliott 59513c6b2d fix: delete some files that ended up nested by mistake (#5629)
continuous-integration/drone/push Build is passing
looks like a ci script was broken and introduced them a while back, and we never noticed

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5629
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2026-01-15 15:58:29 +00:00
delliottandDarragh Elliott ad79262abf feat/config (#5590)
continuous-integration/drone/push Build is passing
- use nargs instead of splitting strings. Nicer logic, more standard
- Show default values of args in help message
- each site can now have a `config.toml` with deps and required files for deployment.
- cleaner argument handling and custom value generation
- use dataclass to hold args, or cleaner typing
- pass config types to run commands instead of individual args
- clean up the whole build.py file

Overall, this is a nice internal refactor that also offers the feature of per site config.

It does have a breaking change of how multiple args are handled, but the arg help page should explain it just fine.

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5590
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2026-01-15 15:49:40 +00:00
delliottandDarragh Elliott d80f693d8e fix: decode events to associative array always (#5608)
continuous-integration/drone/push Build is passing
apparently someties it could decide to decode to a stdClass, as seen in #5606
this should fix the above issue

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5608
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2026-01-07 06:49:53 +00:00
delliottandDarragh Elliott 18cf5d6263 refactor/tombi (#5591)
continuous-integration/drone/push Build is passing
Its a better toml formatter that has better musl support, for when we move the images to alpine.

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5591
Reviewed-by: tobiasd <tobiasd@fsfe.org>
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-12-27 06:00:20 +00:00
delliottandDarragh Elliott 199ee4d069 refactor/search (#5588)
continuous-integration/drone/push Build is passing
- save search index as json instead of js
- optimise the search index generation script

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5588
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-12-25 12:43:37 +00:00
delliottandDarragh Elliott 7f1263b7d3 feat/versions (#5512)
continuous-integration/drone/push Build is passing
# Summary
Add a stage to the build process that sparse clones deps and puts them in the required places.

This should make it much easier to keep track of vendored deps, and similar.

Solves #5426 and helps makes progress towards #4825

This pr moves almost all thirdparty deps from being vendored to being added by the build process.

This pr should be deployed on test and some cgi scripts tested before merge, there is some possibility of issues. But it should be minimal.

One thing: we manually mention the versions of things in https://fsfe.org/about/js-licences

I think we could make this automatic perhaps?

This pr atm does make us dependent on our sources being online for full builds. This is common, but perhaps not acceptable for us?

We could instead do one of the following:
- cache downloaded repos outside of the website dir, so they survive a full rebuild
- make this script an updater script, so all deps are still vendored, but we have a nice script to update them. Not a big fan of this.
- Use nix to fetch all the deps. Now reliant on nixos org instead of github, significant barrier for new contributors.
- have a mirror of all the repos we use for builds on this git server. I kinda like this option, it leaves the most sensible and "normal" build process. Does not seem hard: https://docs.gitea.com/usage/repo-mirror

# State of deps
## Moved
- PHPmailer
- Bootstrap ( we were using different versions for the less and js. this is almost certainly A mistake, but I have kept it the same in this issue to minimize disruption, and will try and fix it later). Also we had some bootstrap js we do not use anywhere, we just have a small bit of custom bootstrap js, not the whole package.
- Lunr (could not get a minimized version from upstream repo, so we have lost minimization. Not very important as it is only used on search page)
- Jquery ( this can be dropped once we upgrade bootstrap, only used as a bootstrap dep)

## Could not move
- moderniser (I hope to drop this down the line, but we use a custom build of an old version that I could find no way to recreate/pull from their git repo. So I could not fetch it as a dep)
- the various xml files. These are incredibly static compared to everything else, so I did not bother.
- Fonts: they are often only available as release artifacts from some site, and so downloading them would massively complicate the dep script. I do not want to maintain a package manager, and so if we think that necessary I would advocate for nix. Also, some fonts are only available from google fonts which does not seem to expose versions. This would again be a problem to be solved with nix.

# Checklist
- [x] site looks correct locally
- [x] search works locally
- [x] no missing scripts using inspector locally
- [x] Deployed on test

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5512
Reviewed-by: tobiasd <tobiasd@fsfe.org>
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-12-24 13:00:42 +00:00
delliottandDarragh Elliott e107e11a09 feat/file-extensions (#5528)
continuous-integration/drone/push Build is passing
Renames some files to ignored file extensions, and ignores a few filetypes/names that should be ignored.

Also adds file extensions to pretty much every file in the repo, makes sure they get caught by pre-commit and such properly. And makes it easier to check what types we have around.

Removes some old files that should have been deleted, but were instead renamed to `.disabled` or similar.

adds a way to manually specify files to copy from each site, regardless of if they would have been ignored by default filters.

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5528
Reviewed-by: tobiasd <tobiasd@fsfe.org>
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-12-24 07:28:53 +00:00
delliottandDarragh Elliott ec321f1f99 fix/php-cs-fixer (#5538)
continuous-integration/drone/push Build is passing
fixes some issues with the latest version of php-cs-fixer and runs it on all files.

solved the ci hangs we are seeing in #5528 and #5512

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5538
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-12-22 14:59:00 +00:00
delliottandDarragh Elliott f9deda6363 refactor: use typed dict for search, makes things clearer (#5584)
continuous-integration/drone/push Build is passing
Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5584
Reviewed-by: tobiasd <tobiasd@fsfe.org>
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-12-22 10:31:17 +00:00
delliottandDarragh Elliott 9b81a699ad refactor: localmenus (#5564)
continuous-integration/drone/push Build is passing
add function to get localised files
add tests for localised file func

Code is quite a lot cleaner, and easier to understand, should be less errors in future.

Fixes localization of links in menus, which is apparently broken atm

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5564
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-12-16 18:30:32 +00:00
delliottandDarragh Elliott 60b10848fc feat: structured data for status page (#5568)
continuous-integration/drone/push Build is passing
Draw incidents from an xml source file, order them nicely, use details and some xsl to get nice time ranges and such.

Uses details to get a pretty list. Looks like image below, where clicking on a detail shows a list of updates.

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5568
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-12-14 12:21:11 +00:00
delliottandDarragh Elliott 0d0576bcea refactor: element pruning (#5567)
continuous-integration/drone/push Build is passing
Very small tweak, in tested code.

Should be a little more performant and handle edge cases better.

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5567
2025-12-12 17:55:50 +00:00
delliottandDarragh Elliott 8159a0bb0e feat/more-ruff (#5559)
continuous-integration/drone/push Build is passing
Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5559
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-12-11 06:05:35 +00:00
delliottandDarragh Elliott 01643b297a fix: copy files with shutil rather than reading and writing contents (#5560)
continuous-integration/drone/push Build is passing
Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5560
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-12-11 05:58:24 +00:00
delliottandDarragh Elliott 7e92ec8c95 fix: localmenus (#5558)
continuous-integration/drone/push Build is passing
fix for #5557

I have checked that the news, thankgnus, events and activities localmenus are working correctly.

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5558
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-12-10 05:52:29 +00:00
delliottandDarragh Elliott b30d57cd19 fix: kill previous ci runs (#5546)
continuous-integration/drone/push Build is passing
Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5546
Reviewed-by: tobiasd <tobiasd@fsfe.org>
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-12-04 13:22:14 +00:00
delliottandDarragh Elliott 416b0c8804 feat: phpcs non interactive mode and min php version set (#5549)
continuous-integration/drone/push Build is passing
Minimal version of #5538 that does not change any php files while still hopefully unblocking ci.

Quick way to unblock #5528 and #5512.

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5549
Reviewed-by: tobiasd <tobiasd@fsfe.org>
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-12-04 12:06:33 +00:00
delliottandDarragh Elliott 8c13d218f0 feat: minify files on copy, rather than on creation (#5527)
continuous-integration/drone/push Build is passing
minify more filetypes, like svg and so forth

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5527
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-12-04 06:55:03 +00:00
delliottandDarragh Elliott 034ed3ecd5 feat: use compiled regex (#5537)
continuous-integration/drone/push Build is passing
Should be a little bit faster

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5537
Reviewed-by: tobiasd <tobiasd@fsfe.org>
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-12-04 05:52:02 +00:00
delliottandDarragh Elliott 5fe13284f2 feat: better error handling in process_files (#5526)
continuous-integration/drone/push Build is passing
Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5526
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-12-02 07:42:48 +00:00
delliottandDarragh Elliott d558468c6b chore: simplify the xmllists generation (#5535)
continuous-integration/drone/push Build is passing
Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5535
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-12-02 07:28:49 +00:00
delliottandDarragh Elliott 90fca486aa fix: add item to whitelist (#5523)
continuous-integration/drone/push Build is passing
Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5523
Reviewed-by: tobiasd <tobiasd@fsfe.org>
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-11-25 06:51:20 +00:00
delliottandDarragh Elliott 31731a3a7a fix/regex (#5522)
continuous-integration/drone/push Build is passing
- Fix regex in ci check to make sure we actually check the files we should be checking
- Remove check that has been superseded by compare-xml-structure
- See stdout of successful ci checks.

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5522
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-11-25 06:49:54 +00:00
delliottandDarragh Elliott bc6d2d958d feat/remove-js (#5513)
continuous-integration/drone/push Build is passing
Remove (hopefully) unused js files.

Did a bunch of grepping for their use, and looked through the history as best I could to determine if they are needed.

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5513
Reviewed-by: tobiasd <tobiasd@fsfe.org>
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-11-24 09:34:21 +00:00
delliottandDarragh Elliott 0c8a3b7aca fix: do not write a newline to an empty xmllist (#5514)
continuous-integration/drone/push Build is passing
prevents issues with processing files when there are empty xmllists

issue only shows when building with very few languages

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5514
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-11-24 08:40:10 +00:00
delliottandDarragh Elliott 0f5dd4e558 fix/news-podcasts (#5400)
continuous-integration/drone/push Build is passing
Should close #2471

Move podcasts to a per year structure. This allows for them to be displayed in the archive properly and all that jazz.

This required some enhancements of the subdir script to properly handle more nesting levels, but that is all acceptable.

Also move the transcripts, to a year structure, for consistency.

I have added rewrite rules for the old locations of the podcast episodes, breakage should be minimal.

I am going to keep this as WIP until @bonnie approves it, as it is possible there are breaking issues with this I have failed to notice.

It is also deployed to [test.fsfe.org](https://test.fsfe.org), so feel free to take a look there.

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5400
Reviewed-by: bonnie <bonnie@fsfe.org>
Reviewed-by: tobiasd <tobiasd@fsfe.org>
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-11-18 13:59:00 +00:00
delliottandDarragh Elliott 4cd97fa78c ci/whitelisting (#5500)
continuous-integration/drone/push Build is passing
Whitelist some common attributes/elements that should be localized.

This was done by making the whitelist a list of xpaths.

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5500
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-11-18 08:22:42 +00:00
delliottandDarragh Elliott b207ea38f7 fix/faster-tests (#5501)
continuous-integration/drone/push Build is passing
Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5501
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-11-17 05:48:37 +00:00
delliottandDarragh Elliott 460cccc68e chore/updates (#5503)
continuous-integration/drone/push Build is passing
Bump the uv lockfile, and upgrade python versions.

This opens up some fun possibilities for further improvements using the new features in python 3.14.

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5503
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-11-17 05:44:12 +00:00
delliottandDarragh Elliott fdbc88a850 fix/caching (#5494)
continuous-integration/drone/push Build is passing
fix some stuff not being cached, and add test to catch caching regressions.

Test takes quite a while to run, not sure it is a good idea?

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5494
2025-11-13 18:13:59 +00:00
delliottandDarragh Elliott b5256f8812 feat/strict-pyright (#5451)
continuous-integration/drone/push Build is passing
- enable pyright strict mode
- fix the issues raised

This should make the build process cleaner and more resilient.
It should make it much easier to catch design flaws.

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5451
Reviewed-by: tobiasd <tobiasd@fsfe.org>
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-11-03 08:53:49 +00:00
delliottandDarragh Elliott 55038b216a feat: typehint dicts better (#5450)
continuous-integration/drone/push Build is passing
use defaultdict for dicts

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5450
2025-10-31 13:00:37 +00:00
delliottandDarragh Elliott 0799d62411 feat: units tests for checks lib (#5443)
continuous-integration/drone/push Build is passing
Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5443
2025-10-30 17:36:24 +00:00
delliottandanaghz 32340456c1 Update fsfe.org/contribute/spreadtheword.en.xhtml (#5447)
continuous-integration/drone/push Build is passing
Co-authored-by: anaghz <anaghz@fsfe.org>
Reviewed-on: #5447
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-10-30 16:00:23 +00:00
delliottandDarragh Elliott b9caf021a4 fix/paragraphs (#5431)
continuous-integration/drone/push Build is passing
Currently implements both a format hook to remove white-space paragraphs, and a check to make their existence a critical failure.

In the end may implement only one or none of these, subject to major design changes.

Solves #5409

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5431
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-10-30 12:34:42 +00:00
delliottandcryptie 3877e383d7 add end date of GA member/coord FR translation in cryptie bio for jury.en.xhtml (#5445)
continuous-integration/drone/push Build is passing
Co-authored-by: cryptie <cryptie@fsfe.org>
Reviewed-on: #5445
2025-10-30 12:29:46 +00:00
delliottandDarragh Elliott ab3da54d6a feat: ruff python docsting lints (#5444)
continuous-integration/drone/push Build is passing
And add docstrings so all files are passing.

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5444
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-10-30 09:39:39 +00:00
delliottandDarragh Elliott 2f7bd236fc feat: reuse compliance for python files (#5440)
continuous-integration/drone/push Build is passing
Adds reuse compliance checks for python files only, using `reuse lint-file`.

It is managed as a pre-commit hook, and hence ran in ci.

Over time we may add more files to be covered, but I suspect we would use something like `reuse.toml` for setting the licensing for `xml/xhtml/xsl` files, as there are just too many for adding the same text snippet to each to be justifiable.

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5440
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-10-28 19:43:39 +00:00
delliottandDarragh Elliott 7fba5028f9 feat: overview page for style attribute (#5437)
continuous-integration/drone/push Build is passing
Adds an overview page to see what and where are we still using style attributes.

Should help coordinate efforts for #2736

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5437
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-10-28 19:38:58 +00:00
delliottandDarragh Elliott 31416e0441 fix: remove outdated pyproject.toml comment (#5439)
continuous-integration/drone/push Build is passing
fixes issue #5438

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5439
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-10-28 11:19:59 +00:00
delliottandDarragh Elliott 9aa104a6f8 refactor/lefthook (#5436)
continuous-integration/drone/push Build is passing
- Cleanup lefthook (pre-commit hook program) config file
- Make some types of formatting fail CI if it changes the files

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5436
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-10-28 05:57:23 +00:00
delliottandDarragh Elliott 81d0b63a6e feat/overview (#5435)
continuous-integration/drone/push Build is passing
- fixes issues with xml structure pre commit hook
- Moves comprea-files to lib
- adds a n overview page on status.fsfe.org to see what files have different structures

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5435
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-10-28 05:27:09 +00:00
delliottandDarragh Elliott 5c99a5dcaa feat: pre-commit hook to validate xml|xhtml structures versions are the same (#5432)
continuous-integration/drone/push Build is passing
Adds a pre-commit hook that checks that `xml` and `xhtml` files of the same version have matched elements and attributes.

The value of elements may differ, as that is translated text.
Some attributes are allowed to have different values, for example image alt text.

This is a continuation of @max.mehl 's work in #2556, and should hopefully enable closing that issue eventually.

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5432
Reviewed-by: tobiasd <tobiasd@fsfe.org>
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-10-27 05:48:39 +00:00
cba4a25036 feat: add source flag to use different folder as source for building sites (#5334)
continuous-integration/drone/push Build is passing
I do not expect the flag to be used much, but it enforces better code design, and prevents implicitly relying on cwd.

Just a general code style improvement really.

Co-authored-by: Darragh Elliott <me@delliott.net>
Co-authored-by: tobiasd <tobiasd@fsfe.org>
Reviewed-on: #5334
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-10-13 12:56:30 +00:00
delliottandDarragh Elliott e5882e406d refactor: remove bootstrap folder not used anywhere (#5398)
continuous-integration/drone/push Build is passing
it is all minimized in bootstrap.min.js and bootstrap.custom.js

I am largely basing my belief that it is unused on the fact that
1. It looks like it is
2. I can find no mention or linking to it using `rg bootstrap/`. All matched entries are for other things
3. When I load the site and look in the console/debugger I see no errors associated with it.

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5398
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-10-13 12:34:38 +00:00
5551375ac8 refactor: transform processor xsls only once (#5397)
continuous-integration/drone/push Build is passing
# About
## Summary
Before we iterated over xhtml files by directory, and rss/ics ones by processor (xsl stylesheet).

This worked, but meant we had to pass the processor filepath to the processing functions, which meant we were reprocessing the xsl several times, probably hundred for some xsl's, like the default one for a site.

We now instead iterate by processor, pre parsing it before passing it to the processing code.

This gets us a significant speed increase (~30%), and makes the code a little cleaner.

# Benchmarks
## Before
```
Benchmark 1: uv run build --full
  Time (mean ± σ):     269.798 s ± 12.501 s    [User: 1566.724 s, System: 75.804 s]
  Range (min … max):   262.183 s … 284.226 s    3 runs
```
## After
```
Benchmark 1: uv run build --full
  Time (mean ± σ):     206.330 s ±  5.088 s    [User: 498.556 s, System: 47.233 s]
  Range (min … max):   202.760 s … 212.155 s    3 runs
```

Co-authored-by: Darragh Elliott <me@delliott.net>
Co-authored-by: tobiasd <tobiasd@fsfe.org>
Reviewed-on: #5397
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-10-13 11:24:25 +00:00
delliottandDarragh Elliott 1905d6c70a fix: keep logo to the left (#5399)
continuous-integration/drone/push Build is passing
prevent the fsfe logo floating over the menu stuff when pages are in an rtl language
eg arabic

Should fix #4255

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5399
Reviewed-by: tobiasd <tobiasd@fsfe.org>
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-10-13 06:06:04 +00:00
delliottandDarragh Elliott ba92d3d5fe fix: typo in readme (#5393)
continuous-integration/drone/push Build is passing
Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5393
2025-10-09 11:34:11 +00:00
delliottandDarragh Elliott 7606e2588a fix: remove unneeded caching from website (#5392)
continuous-integration/drone/push Build is passing
In #5333 I added docker image caching using Gitea artifact Registry.

This turned out to be a waste of time, that actually slowed things down.

This is because the docker instance on the drone runner host actually caches the images internally anyway, so the time cost of downloading an image, rebuilding it and re pushing it was being paid for no reason or benefit.

This pr removes the caching, but does translate a step to ensure that the build docker container can be built in a pr, which is a good check to have pre merge to master.

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5392
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-10-09 11:30:25 +00:00
delliottandDarragh Elliott 072130a077 feat/caching (#5333)
continuous-integration/drone/push Build is passing
Enable the building and pushing of docker containers on master, and then using them as a cache base in prs.

This should massively reduce the build times, and the load we are placing on other projects servers.

Depends on #5330

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5333
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-10-08 13:30:56 +00:00
delliottandDarragh Elliott 9adbac5f6c feat: mount source code instead of copying into images (#5330)
continuous-integration/drone/push Build is passing
This should mean we can used cached docker images properly in future.

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5330
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-10-08 11:27:30 +00:00
delliottandDarragh Elliott b390c5472e feat/php-linter (#5321)
continuous-integration/drone/push Build is passing
At least helps with #5297

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5321
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-09-24 18:13:46 +00:00
delliottandDarragh Elliott 8e726cba5a ci: push to docs (#5274)
continuous-integration/drone/push Build is passing
This seems like something we should be doing.

I have some vague memory of trying this before and there being issues as we are coming from the `fsfe` namespace rather than the `fsfe-system-hackers` namespace, but we should be able to get it working eventually regardless.

I will let it run on prs for testing, but before merge we should have it only run on commits to master

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5274
2025-09-18 12:37:00 +00:00
delliottandDarragh Elliott 1315a7d481 build/xslt (#5299)
continuous-integration/drone/push Build is passing
This properly separtes out the python build process (theoretically portable and useable for different sites) and the xslt (custom to the fsfe sites, not really portable as a whole)

It also moves some thirdparty tooling around to make it clearer its thirdparty and unify xslt sources.

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5299
Reviewed-by: tobiasd <tobiasd@fsfe.org>
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-09-15 06:23:57 +00:00
delliottandDarragh Elliott 47ee5f7ca4 build: move search logic to subdir (#5298)
continuous-integration/drone/push Build is passing
if has some stuff pretty specific to fsfe.org in there, and hence should not be in global build

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5298
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-09-08 05:49:17 +00:00
delliottandDarragh Elliott 235d86bed9 build/email-subjects (#5281)
continuous-integration/drone/push Build is passing
Allow specifying a subject in our email element.

Eg the xhtml content
```xml
<email mailto="yes" subject="Ada and Zangemann">contact@fsfe.org</email>
```

Will now generate
```xml
<a href="mailto:contact@fsfe.org?subject=Ada and Zangemann">contact@fsfe.org</a>
```
Which when clicked will open an email client, and correctly populate the subject.

I also added the subject to all ada zangemann pages, and have documented it on the web features page.

Resolves #2742

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5281
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-09-08 05:46:53 +00:00
delliottandDarragh Elliott b523e45db4 build: use some list comps for sites stuff (#5282)
continuous-integration/drone/push Build is passing
only serve websites specified on cli

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5282
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-09-06 06:04:17 +00:00
delliottandDarragh Elliott 7497dc5009 build: do not escape tag names (#5279)
continuous-integration/drone/push Build is passing
Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5279
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-09-06 05:49:55 +00:00
delliottandDarragh Elliott c4074733ca ci: use at least a pinned major debian version, so we do not get caugt by silnet major version changes (#5290)
continuous-integration/drone/push Build is passing
Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5290
2025-09-03 15:33:36 +00:00
delliottandDarragh Elliott a47887f271 misc: allow passing run arg to nix-shell (#5283)
continuous-integration/drone/push Build is passing
Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5283
2025-09-03 10:55:39 +00:00
delliottandDarragh Elliott ce30bed1b6 build: move tags to a subdir instead of a build step (#5273)
continuous-integration/drone/push Build is passing
it is highly specific to fsfe.org, and so should probably be a subdir instead of a build step

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5273
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-09-02 08:52:38 +00:00
delliottandDarragh Elliott b6407993f2 build: thirdparty separation (#5271)
continuous-integration/drone/push Build is passing
- Move thirdparty css and js into `thirdparty` folders, to make delination clearer
- Remove some unused js files
- remove bootstrap tests
- some css file naming cleanup

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5271
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-09-02 08:44:15 +00:00
delliottandDarragh Elliott 77d7b83078 fix: comment (#5270)
continuous-integration/drone/push Build is passing
Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5270
2025-08-30 17:24:12 +00:00
delliottandDarragh Elliott c8f54f19cb build: typecheck the python code (#5269)
continuous-integration/drone/push Build is passing
add pyright to project,
add it to pre-commit
fix all errors it detects

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5269
2025-08-30 17:11:44 +00:00
delliottandDarragh Elliott f03b3c2c4c build: tests and more checks (#5268)
continuous-integration/drone/push Build is passing
- add pytest
- add tests for all exposed lib functions
- Add a whole bunch more ruff checks and apply them

Benchmarking:

Before:
```
❯ hyperfine --runs 3 "uv run build --full"
Benchmark 1: uv run build --full
  Time (mean ± σ):     287.463 s ± 15.161 s    [User: 1573.732 s, System: 72.548 s]
  Range (min … max):   272.953 s … 303.201 s    3 runs
```

After
```
❯ hyperfine --runs 3 "uv run build --full"
Benchmark 1: uv run build --full
  Time (mean ± σ):     280.184 s ±  9.605 s    [User: 1557.788 s, System: 72.693 s]
  Range (min … max):   269.878 s … 288.886 s    3 runs
```

So we gain a few seconds, but that is all.

The main benefit is that we have better testing and more linting.

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5268
2025-08-29 16:46:13 +00:00
delliottandDarragh Elliott f04655b113 build: streamline and update python deps (#5264)
continuous-integration/drone/push Build is passing
- Update deps to latest versions
- stop using tight constraints and instead just use loose ones and commit the uv lockfile
- Greater reproducibility, and much easier to bump deps in future.

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5264
2025-08-29 12:16:12 +00:00
delliottandDarragh Elliott 7480121f3a misc: fix spurious errors with non-en-frontpage-news (#5265)
continuous-integration/drone/push Build is passing
Before if none of the files submitted to the check contained the tag, and there were hence no matches the script would fail incorrectly.

This is no longer the case

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #5265
Co-authored-by: delliott <delliott@fsfe.org>
Co-committed-by: delliott <delliott@fsfe.org>
2025-08-29 04:37:31 +00:00