Skip to content

Release/0.4.0#580

Merged
jbpenrath merged 3 commits into
mainfrom
release/0.4.0
Mar 5, 2026
Merged

Release/0.4.0#580
jbpenrath merged 3 commits into
mainfrom
release/0.4.0

Conversation

@jbpenrath

@jbpenrath jbpenrath commented Mar 5, 2026

Copy link
Copy Markdown
Contributor

Purpose

Update all version files and changelog for minor release.

Added

Changed

Fixed

Summary by CodeRabbit

  • Documentation

    • Changelog updated with v0.4.0 notes and a migration note prompting a search reindex.
  • Bug Fixes

    • Included notes about integration, signature, and template handling improvements.
  • Localization

    • Large Dutch translation expansion (170+ keys) and new Russian and Ukrainian UI strings.

jbpenrath and others added 2 commits March 5, 2026 16:38
The release script was not updating uv.lock files after bumping
the version in pyproject.toml, causing lockfile desync.
Update translated files with new translations
@jbpenrath jbpenrath self-assigned this Mar 5, 2026
@coderabbitai

coderabbitai Bot commented Mar 5, 2026

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 1e33605e-2f88-4f8d-a419-4b090b7b1c2c

📥 Commits

Reviewing files that changed from the base of the PR and between 68988b2 and db19570.

⛔ Files ignored due to path filters (5)
  • src/backend/uv.lock is excluded by !**/*.lock
  • src/e2e/package-lock.json is excluded by !**/package-lock.json
  • src/frontend/package-lock.json is excluded by !**/package-lock.json
  • src/mta-in/uv.lock is excluded by !**/*.lock
  • src/mta-out/uv.lock is excluded by !**/*.lock
📒 Files selected for processing (6)
  • CHANGELOG.md
  • src/backend/pyproject.toml
  • src/e2e/package.json
  • src/frontend/package.json
  • src/mta-in/pyproject.toml
  • src/mta-out/pyproject.toml
🚧 Files skipped from review as they are similar to previous changes (5)
  • src/mta-out/pyproject.toml
  • src/frontend/package.json
  • src/mta-in/pyproject.toml
  • CHANGELOG.md
  • src/backend/pyproject.toml

📝 Walkthrough

Walkthrough

This PR prepares a v0.4.0 release: updates CHANGELOG, bumps versions across multiple manifests, adds uv.lock updating to the release script, and expands frontend locale translations (nl-RU-UK).

Changes

Cohort / File(s) Summary
Version Bumps
src/backend/pyproject.toml, src/mta-in/pyproject.toml, src/mta-out/pyproject.toml, src/e2e/package.json, src/frontend/package.json
Bumped project/package versions from 0.3.00.4.0 in Python and Node manifests.
Release Process & Changelog
bin/release.py, CHANGELOG.md
Added step to update uv.lock files for each pyproject.toml with an existing uv.lock; updated CHANGELOG adding 0.4.0 section and reference links.
Frontend locales
src/frontend/public/locales/common/nl-NL.json, src/frontend/public/locales/common/ru-RU.json, src/frontend/public/locales/common/uk-UA.json
Large additions to Dutch translations (+176 keys) and a few new Russian and Ukrainian keys (plural/context-aware strings).

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • #562: Overlapping release metadata and frontend locale updates.
  • #556: Related uv migration and uv.lock usage changes that connect to the new release step.
  • #526: Prior release changes touching CHANGELOG and version bumps.

Suggested reviewers

  • sylvinus

Poem

🐰 ✨ A hop, a bump, a changelog song,
From 0.3 to 0.4 we hop along.
Dutch words bloom, RU and UA chime,
uv.lock scurries in release time.
A carrot toast to polished rhyme!

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Release/0.4.0' clearly and specifically summarizes the primary change—a version release update to 0.4.0 across all version files and the changelog.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch release/0.4.0

Tip

Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

🧹 Nitpick comments (1)
src/frontend/public/locales/common/ru-RU.json (1)

32-33: Fix Russian singular form for selected thread count.

Line [32] currently uses the same wording as plural, which reads unnatural for count=1. Please make _one singular.

💬 Suggested i18n fix
-  "{{count}} selected threads_one": "Выбрано обсуждений: {{count}}",
-  "{{count}} selected threads_other": "Выбрано обсуждений: {{count}}",
+  "{{count}} selected threads_one": "Выбрано {{count}} обсуждение",
+  "{{count}} selected threads_other": "Выбрано {{count}} обсуждений",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/frontend/public/locales/common/ru-RU.json` around lines 32 - 33, The
Russian singular form for the key "{{count}} selected threads_one" is incorrect
(it duplicates the plural); update the translation for "{{count}} selected
threads_one" to a natural singular form such as "Выбрано {{count}} обсуждение"
while leaving "{{count}} selected threads_other" unchanged so plural behavior
remains intact.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@bin/release.py`:
- Around line 130-138: The loop that updates uv.lock uses run_command(f"cd
{pyproject_toml.parent} && uv lock", shell=True) which interpolates paths into a
shell and should be replaced with a non-shell subprocess call; change this to
call subprocess.run(["uv","lock"], cwd=pyproject_toml.parent, check=True) (or
equivalent helper that accepts args + cwd) so the command is invoked directly
without shell=True, and apply the same replacement for the other two occurrences
in the release script (the locations operating on src/backend, src/mta-in,
src/mta-out); keep using pyproject_toml.parent as the cwd.

In `@src/frontend/public/locales/common/nl-NL.json`:
- Line 65: The translation uses "label" instead of the project's established
"tag" terminology; update the JSON entries for the keys "Add tags" (currently
"Labels toevoegen") and the corresponding other key referenced in the comment
(line ~406) to use "tag" wording—e.g., change "Labels toevoegen" to "Tags
toevoegen" and similarly replace "label" translations with "tag" equivalents so
the UI consistently uses "tag" terminology.
- Line 278: The JSON key "Insert 2 columns" is still in English; replace its
value with the Dutch translation "Voeg 2 kolommen in" for the key "Insert 2
columns" in src/frontend/public/locales/common/nl-NL.json, preserving the JSON
string quotes and trailing comma so the entry becomes "Insert 2 columns": "Voeg
2 kolommen in",.
- Line 552: The translated string for the key "You have unsaved changes. Are you
sure you want to close?" uses "annuleren" which alters the action; update the
Dutch translation to preserve the original "close" meaning (e.g., use "sluiten"
or "venster sluiten") so the entry "You have unsaved changes. Are you sure you
want to close?" maps to a phrase like "Je hebt niet-opgeslagen wijzigingen. Weet
je zeker dat je het venster wilt sluiten?" in the nl-NL JSON.
- Around line 28-29: The plural Dutch string under the key "{{count}}
occurrences_other" has a typo ("gebeurtenisen"); update its value to the correct
plural "gebeurtenissen" so the entry becomes "{{count}} occurrences_other":
"{{count}} gebeurtenissen" and ensure the key "{{count}} occurrences_one"
remains "{{count}} gebeurtenis".
- Around line 316-319: The _other plural variants use singular Dutch nouns
and/or English words; update each *_other key to use the correct Dutch plural
wording (e.g., change "Markeer {{count}} discussie als gelezen" for "Mark
{{count}} threads as read_other" to "Markeer {{count}} discussies als gelezen",
and change "{{count}} threads markeren als ongelezen" for "Mark {{count}}
threads as unread_other" to "{{count}} discussies markeren als ongelezen");
apply the same plural corrections to the other _other keys mentioned (the other
plural keys around the diff) so all *_other keys consistently use the Dutch
plural "discussies" and correct verb forms.

---

Nitpick comments:
In `@src/frontend/public/locales/common/ru-RU.json`:
- Around line 32-33: The Russian singular form for the key "{{count}} selected
threads_one" is incorrect (it duplicates the plural); update the translation for
"{{count}} selected threads_one" to a natural singular form such as "Выбрано
{{count}} обсуждение" while leaving "{{count}} selected threads_other" unchanged
so plural behavior remains intact.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 8eb92203-9ce3-43e7-ace3-8e6fe1fb2c98

📥 Commits

Reviewing files that changed from the base of the PR and between 85bdf1a and 68988b2.

⛔ Files ignored due to path filters (2)
  • src/e2e/package-lock.json is excluded by !**/package-lock.json
  • src/frontend/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (10)
  • CHANGELOG.md
  • bin/release.py
  • src/backend/pyproject.toml
  • src/e2e/package.json
  • src/frontend/package.json
  • src/frontend/public/locales/common/nl-NL.json
  • src/frontend/public/locales/common/ru-RU.json
  • src/frontend/public/locales/common/uk-UA.json
  • src/mta-in/pyproject.toml
  • src/mta-out/pyproject.toml

Comment thread bin/release.py
Comment thread src/frontend/public/locales/common/nl-NL.json
Comment thread src/frontend/public/locales/common/nl-NL.json
Comment thread src/frontend/public/locales/common/nl-NL.json
Comment thread src/frontend/public/locales/common/nl-NL.json
Comment thread src/frontend/public/locales/common/nl-NL.json
Update all version files and changelog for minor release.
Added
- Store thread read state per thread access #575
  ⚠️ This migration requires a search reindex to be run after the upgrade.
- Store and display the user who sent a message #574
- Display selected threads count in right panel #576
- Add skip navigation link for keyboard users #573
- Add DeployCenter backend for syncing maildomain admins #572
- Add management command to print all users of the instance

Changed
- Bump keycloak to 26.5.4 #571
- Add migrations-check Makefile command

Fixed
- Preserve scroll position across renders #578
- Convert newlines to `<br>` in styled text #577
- Scope labels and user_role to the requested mailbox
@jbpenrath
jbpenrath merged commit db19570 into main Mar 5, 2026
14 checks passed
@jbpenrath
jbpenrath deleted the release/0.4.0 branch April 16, 2026 14:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant