Commit Graph
149 Commits
Author SHA1 Message Date
Daniel Hiller 9069b24cfb chore: Add a locale completeness check
An incomplete locale falls back to English at runtime, so a gap breaks nothing
and nobody notices it on their own. 2.2.1 shipped fifty-six user-facing strings
that existed only in English and German, and it took someone looking for
something else to find them. `npm run client:locales:check` compares every
locale against the reference and exits non-zero when one is behind.

It compares `login.js` and `core.js` separately and never merges them.
`login.js` is the embedded bundle and is all that exists until a session is
established, so a key present only in `core.js` is still missing from every
screen shown before login — the two-factor challenge among them. Merging the
two hides exactly that, which is how the six strings of the challenge stayed
English in thirty-three languages.

Keys are compared on their base name, with the CLDR plural category stripped,
because how many categories a language needs is a property of that language:
English has two, Japanese one, Arabic six. Comparing the suffixed names would
have demanded an English `_one` from Japanese, where i18next never reads it.
Each plural key is then checked against the categories the language itself
declares, through the same Intl.PluralRules that i18next resolves with — a
missing category falls back to `_other` silently, and Russian `few` and `many`
are reachable with counts a user really sees.

It is deliberately not part of `lint`: a pull request that adds a string is
expected to leave the other locales behind for a while, and a check that fails
every such request would only be switched off. This one belongs before a
release.
2026-09-08 19:54:27 +02:00
Daniel Hiller d7da44efe4 feat: Add script to clean orphaned reference records
Instances that accumulated project managers, favorites, board memberships
or board subscriptions pointing at a project or board that no longer exists
had no way to find or clear them.

The script reports by default and only deletes with `--apply`, which first
asks whether a backup exists and refuses outright without a terminal to ask
on. It removes nothing but reference rows: structural orphans such as a
board without a project carry user content, and a membership whose
denormalized project is stale still grants real access to an existing
board, so both are reported and left alone.
2026-08-26 09:31:18 +02:00
Daniel Hiller 266246e242 chore: Update version 2026-08-10 18:28:48 +02:00
Daniel Hiller 2684198bf8 chore: Update version 2026-08-09 22:36:27 +02:00
Daniel Hiller bec5dd1597 chore: Update dependencies
Bump Node to 24 in Dockerfile and Dockerfile.dev.
Bump sharp to 0.35, nodemailer to 9 and concurrently to 10.
Add overrides for body-parser, qs, multiparty, uuid, diff,
serialize-javascript, linkify-it and svgo to pull in security fixes
that upstream pins block.
Rename the sails patch to match 1.5.18.
2026-08-07 16:17:24 +02:00
Daniel Hiller e429b478ca chore: Bump version to 2.1.1 and update release notes 2026-04-18 15:10:14 +00:00
Maksim Eltyshev 91eb43f472 chore: Update version 2026-03-19 11:13:08 +01:00
Maksim Eltyshev d9ae02899d chore: Update dependencies 2026-03-16 16:04:51 +01:00
Maksim Eltyshev 2685e5d5fc chore: Update version 2026-03-01 16:53:11 +01:00
Maksim Eltyshev 5ebe320396 chore: Update dependencies 2026-03-01 16:42:19 +01:00
Maksim Eltyshev d5d3f1de44 chore: Update version 2026-02-23 18:44:06 +01:00
Maksim Eltyshev 414418130d chore: Update version 2026-02-17 15:55:56 +01:00
Maksim Eltyshev bda32e0247 chore: Update version 2026-02-11 14:34:56 +01:00
Maksim Eltyshev 450bd875c1 chore: Update server dependencies 2026-02-04 12:53:15 +01:00
Maksim Eltyshev fedee157c7 build: Refine server build steps 2025-11-28 17:45:31 +01:00
Maksim Eltyshev 7be2343076 chore: Add Swagger generation script 2025-11-25 22:08:37 +01:00
Maksim Eltyshev a52b41207a chore: Fix version mismatches 2025-10-05 20:53:32 +02:00
Maksim Eltyshev 40e107d6d4 chore: Update version 2025-05-27 23:37:47 +02:00
Maksim Eltyshev 2ee1166747 feat: Version 2
Closes #627, closes #1047
2025-05-10 02:09:06 +02:00
Maksim Eltyshev ad7fb51cfa chore: Update version 2025-05-09 21:09:59 +02:00
Maksim Eltyshev 1147815ca9 chore: Update version 2025-04-22 15:51:47 +02:00
Maksim Eltyshev 9bb18f44dc chore: Update version 2025-04-21 01:31:41 +02:00
Maksim Eltyshev 5e91c1e6db chore: Update version 2025-03-16 22:50:30 +01:00
Maksim Eltyshev 63b86860f3 chore: Update version 2025-03-01 22:10:49 +01:00
Maksim Eltyshev 640455940c chore: Update version 2025-01-29 18:07:46 +01:00
Maksim Eltyshev ad11189b99 chore: Update version 2024-11-28 14:42:08 +01:00
Maksim Eltyshev 508704b30c chore: Update version 2024-11-22 17:14:57 +01:00
Maksim Eltyshev e243e15043 chore: Update dependencies 2024-11-22 17:13:17 +01:00
Maksim Eltyshev 2109fea800 chore: Update version 2024-11-18 00:00:32 +01:00
Maksim Eltyshev 8be6291241 chore: Update version 2024-11-12 19:14:28 +01:00
Maksim Eltyshev 06a574f766 chore: Update version 2024-10-31 14:58:29 +01:00
Maksim Eltyshev e3068490ba chore: Update version 2024-10-27 22:05:18 +01:00
Maksim Eltyshev dedaf99276 chore: Update version 2024-10-22 21:41:07 +02:00
Nalem7 096feb35bb test: Add BDD UI tests using Playwright (#911) 2024-10-17 22:06:48 +02:00
Maksim Eltyshev d40a5215dc chore: Update version 2024-10-09 14:25:19 +02:00
Maksim Eltyshev f849a79243 chore: Update version 2024-10-02 14:18:54 +02:00
Maksim Eltyshev e75a17b0da chore: Update version 2024-09-20 20:41:54 +02:00
Maksim Eltyshev c43f828af4 chore: Update version 2024-09-16 21:21:30 +02:00
Maksim Eltyshev cefc3d66eb chore: Update dependencies 2024-09-16 12:04:56 +02:00
Maksim Eltyshev 7a90046272 chore: Update version 2024-08-14 21:39:43 +02:00
Maksim Eltyshev ce5364ef91 chore: Generate separate file to store version
Closes #848
2024-08-13 22:26:44 +02:00
Maksim Eltyshev 77084c83ea chore: Update version 2024-08-12 23:23:50 +02:00
Maksim Eltyshev 87ca41cbce chore: Update version 2024-07-21 19:44:49 +02:00
Maksim Eltyshev f7a88f5676 chore: Update version 2024-07-17 14:03:00 +02:00
Maksim Eltyshev 042ab0a63a chore: Update version 2024-07-15 16:24:31 +02:00
Maksim Eltyshev 8d37c7c6c9 chore: Update version 2024-06-21 12:11:15 +02:00
Maksim Eltyshev c357f9a0a6 chore: Update version 2024-06-14 17:18:42 +02:00
Maksim Eltyshev 12189f57f3 chore: Update version 2024-06-12 09:06:20 +02:00
Maksim Eltyshev 8e0855f991 chore: Update version 2024-06-12 01:02:55 +02:00
Maksim Eltyshev fde3bfade4 chore: Update version 2024-06-02 01:36:29 +02:00