Commit Graph
87031 Commits
Author SHA1 Message Date
ppkramer-hubandpatrick e1877e6b06 mount: honor --timeout-idle-sec=SEC option (#41010)
When using systemd-mount to create a transient .mount/.automount file
for removable storage, the option to specify the idle timeout on the
commandline using **--timeout-idle-sec=SEC** is not reflected in the
generated .automount file. Instead, the idle timeout is always set to 1
second.

arg_timeout_idle_set was never set to true when passing the argument, so
arg_timeout_idle was always set to 1s.

Fixes #41007.

Co-authored-by: patrick <patrick@localhost>
2026-03-10 04:31:53 +09:00
Daan De Meyer b5b21d53c0 ci: Two claude fixes (#41004) 2026-03-09 12:05:27 +01:00
Daan De Meyer 47e9876312 ci: Update claude action to v1 commit
I accidentally picked a random commit instead of the one pointing
to the official v1 release, let's fix that.
2026-03-09 11:18:44 +01:00
Daan De Meyer 48b3642dd1 ci: Don't cancel in progress jobs for claude-review workflow
This workflow runs on any comment to a github PR. 99% of the time the
workflow will be skipped yet it will still cancel any previous ongoing
workflows. Let's not cancel in progress workflow but instead queue the
workflow so we don't cancel in progress reviews any time a comment is
posted on a PR that is being reviewed.
2026-03-09 11:15:34 +01:00
Daan De Meyer a023d2bbdb ci: privilege-separate Claude review workflow
The workflow is split into two jobs for least-privilege:

1. 'review' job — runs Claude with read-only permissions (contents: read,
   id-token: write for AWS OIDC, actions: read). Claude produces a structured
   JSON review via --json-schema with a 'comments' array and a 'summary'
   string. Its tools are restricted to read-only operations (Read, LS, Grep,
   Glob, Task, and various Bash prefixes for common read-only commands).
   Claude also has access to CI MCP tools to analyze failed workflow runs.

2. 'post' job — only has pull-requests: write. Reads the structured JSON
   output from the review job and posts inline comments individually (so
   re-runs only add new comments). Maintains a tracking comment with a
   <!-- claude-pr-review --> marker that is created on first run and updated
   in-place on subsequent runs, preserving existing item order, wording,
   and checkbox state. Posts a notification comment when the tracking
   comment is updated or left unchanged.

Comment deduplication is handled by Claude in the prompt rather than in
the posting script, allowing for better semantic understanding of whether
two comments address the same issue.

The PR number is resolved via github.event.pull_request.number with a
fallback to github.event.issue.number for issue_comment events where
github.event.pull_request is not populated. The concurrency group uses
the same fallback.

Co-developed-by: Claude <claude@anthropic.com>
2026-03-09 09:45:31 +01:00
Malcolm Frazier 20911fe177 man: fix SendHostname= and Hostname= descriptions to allow multi-label DNS names in [DHCPv4] 2026-03-09 09:42:21 +09:00
Yu Watanabe 2cb0ccebf6 Shorten format-table code and fix potential memleak (#40917) 2026-03-09 09:26:30 +09:00
Martin Srebotnjak 3db5a017d3 po: Translated using Weblate (Slovenian)
Currently translated at 100.0% (266 of 266 strings)

Co-authored-by: Martin Srebotnjak <miles@filmsi.net>
Translate-URL: https://translate.fedoraproject.org/projects/systemd/main/sl/
Translation: systemd/main
2026-03-09 00:11:40 +00:00
Andrii Zora 42e3801efc hwdb: update HP Envy x360 patterns to cover newer 14-fc0xxx models
Signed-off-by: Andrii Zora <anaxarsys@gmail.com>
2026-03-08 22:24:15 +00:00
David Santamaría Rogado c2d0465582 hwdb: sensor: bncf reformat match 2026-03-08 21:18:21 +00:00
The-An0nym 09c92eef12 Fix media keys for Lenovo ThinkBook 14 2-in-1 G5 IAU 2026-03-08 10:52:34 +00:00
Arjun-C-S da1cedd144 hwdb: map Xiaomi Mi Notebook Pro star key to KEY_MACRO
The Xiaomi Mi Notebook Pro keyboard has a "star" key that
generates AT keyboard scancode 0x72 but is not mapped in
the default hwdb.

Map it to KEY_MACRO so it appears as a usable input key.

Verified using evtest.

Signed-off-by: Arjun <arjunchoozhi1234@gmail.com>
2026-03-08 10:51:56 +00:00
Zbigniew Jędrzejewski-Szmek 0bec1191a9 user-record: fix segfault when processing matchHostname field (#40979)
Fix a typo which causes a segfault when processing a user record
with `matchHostname` when it's an array instead of a simple string:

```
$ echo '{"userName":"crashhostarray","perMachine":[{"matchHostname":["host1","host2"],"locked":false}]}' | userdbctl -F -
Segmentation fault         (core dumped)

$ coredumpctl info
...
       Message: Process 1172301 (userdbctl) of user 1000 dumped core.

                Module libz.so.1 from rpm zlib-ng-2.3.3-1.fc43.x86_64
                Module libcrypto.so.3 from rpm openssl-3.5.4-2.fc43.x86_64
                Stack trace of thread 1172301:
                #0  0x00007fded7b3a656 __strcmp_evex (libc.so.6 + 0x159656)
                #1  0x00007fded7e95397 per_machine_hostname_match (libsystemd-shared-260.so + 0x295397)
                #2  0x00007fded7e955b5 per_machine_match (libsystemd-shared-260.so + 0x2955b5)
                #3  0x00007fded7e957c6 dispatch_per_machine (libsystemd-shared-260.so + 0x2957c6)
                #4  0x00007fded7e96c97 user_record_load (libsystemd-shared-260.so + 0x296c97)
                #5  0x000000000040572d display_user (/home/fsumsal/repos/@systemd/systemd/build/userdbctl + 0x572d)
                #6  0x00007fded7ea9727 dispatch_verb (libsystemd-shared-260.so + 0x2a9727)
                #7  0x000000000041077c run (/home/fsumsal/repos/@systemd/systemd/build/userdbctl + 0x1077c)
                #8  0x00000000004107ce main (/home/fsumsal/repos/@systemd/systemd/build/userdbctl + 0x107ce)
                #9  0x00007fded79e45b5 __libc_start_call_main (libc.so.6 + 0x35b5)
                #10 0x00007fded79e4668 __libc_start_main@@GLIBC_2.34 (libc.so.6 + 0x3668)
                #11 0x00000000004038d5 _start (/home/fsumsal/repos/@systemd/systemd/build/userdbctl + 0x38d5)
                ELF object binary architecture: AMD x86-64
```
2026-03-07 16:22:02 +01:00
Luca Boccassi 3c98810142 Translations update from Fedora Weblate (#40984)
Translations update from [Fedora
Weblate](https://translate.fedoraproject.org) for
[systemd/main](https://translate.fedoraproject.org/projects/systemd/main/).



Current translation status:

![Weblate translation
status](https://translate.fedoraproject.org/widget/systemd/main/horizontal-auto.svg)
2026-03-07 10:55:42 +00:00
Oğuz Ersen 41bb2bcb1d po: Translated using Weblate (Turkish)
Currently translated at 100.0% (266 of 266 strings)

Co-authored-by: Oğuz Ersen <oguz@ersen.moe>
Translate-URL: https://translate.fedoraproject.org/projects/systemd/main/tr/
Translation: systemd/main
2026-03-07 01:58:37 +00:00
Daniel Nylander 9352803619 po: Translated using Weblate (Swedish)
Currently translated at 100.0% (266 of 266 strings)

Co-authored-by: Daniel Nylander <po@danielnylander.se>
Translate-URL: https://translate.fedoraproject.org/projects/systemd/main/sv/
Translation: systemd/main
2026-03-07 01:58:36 +00:00
Baurzhan Muftakhidinov aadee8f817 po: Translated using Weblate (Kazakh)
Currently translated at 100.0% (266 of 266 strings)

Co-authored-by: Baurzhan Muftakhidinov <baurthefirst@gmail.com>
Translate-URL: https://translate.fedoraproject.org/projects/systemd/main/kk/
Translation: systemd/main
2026-03-07 01:58:36 +00:00
김인수 4089bc7485 po: Translated using Weblate (Korean)
Currently translated at 100.0% (266 of 266 strings)

Co-authored-by: 김인수 <simmon@nplob.com>
Translate-URL: https://translate.fedoraproject.org/projects/systemd/main/ko/
Translation: systemd/main
2026-03-07 01:58:35 +00:00
A S Alam 4e95ea0dab po: Translated using Weblate (Punjabi)
Currently translated at 34.5% (92 of 266 strings)

Co-authored-by: A S Alam <aalam@users.noreply.translate.fedoraproject.org>
Translate-URL: https://translate.fedoraproject.org/projects/systemd/main/pa/
Translation: systemd/main
2026-03-07 01:58:35 +00:00
Léane GRASSER 4020a4d76d po: Translated using Weblate (French)
Currently translated at 100.0% (266 of 266 strings)

Co-authored-by: Léane GRASSER <leane.grasser@proton.me>
Translate-URL: https://translate.fedoraproject.org/projects/systemd/main/fr/
Translation: systemd/main
2026-03-07 01:58:34 +00:00
Yuri Chornoivan f561fd63c6 po: Translated using Weblate (Ukrainian)
Currently translated at 100.0% (266 of 266 strings)

Co-authored-by: Yuri Chornoivan <yurchor@ukr.net>
Translate-URL: https://translate.fedoraproject.org/projects/systemd/main/uk/
Translation: systemd/main
2026-03-07 01:58:34 +00:00
Temuri Doghonadze eb80a679d1 po: Translated using Weblate (Georgian)
Currently translated at 100.0% (266 of 266 strings)

Co-authored-by: Temuri Doghonadze <temuri.doghonadze@gmail.com>
Translate-URL: https://translate.fedoraproject.org/projects/systemd/main/ka/
Translation: systemd/main
2026-03-07 01:58:33 +00:00
Mike Yuan a7f1670f62 user-record: extract user_record_image_is_blockdev() common helper 2026-03-06 22:50:48 +01:00
Frantisek Sumsal be0db50cad fuzz: add a fuzzer for user records
Add a simple fuzzer that verifies our machinery for parsing user records
from JSON works as intended.

The initial corpus was created with the help of Claude, so we have a
bunch of valid user records with as much fields as possible for the
initial corpus.
2026-03-06 19:03:14 +01:00
Frantisek Sumsal ad1c7df5f9 man: fix short option for userdbctl's --from-file= 2026-03-06 18:39:07 +01:00
Frantisek Sumsal 3c7bd947b2 shared: don't leak memory from array fields
The fido2_hmac_salt/fido2_hmac_credential/recovery_key fields kept
leaking memory as the array itself wasn't deallocated after deallocating
each of its elements data:

$ build-san/userdbctl -F fuzz-corpus-userdb/auth-fido2.json
...
=================================================================
==1292840==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 112 byte(s) in 1 object(s) allocated from:
    #0 0x7f56f00e5e4b in realloc.part.0 (/lib64/libasan.so.8+0xe5e4b) (BuildId: 25975f766867e9e604dc5a71a8befeaed3301942)
    #1 0x7f56ed869e42 in greedy_realloc ../src/basic/alloc-util.c:65
    #2 0x7f56ed7ff5e9 in dispatch_fido2_hmac_salt ../src/shared/user-record.c:836
    #3 0x7f56edd73cbc in sd_json_dispatch_full ../src/libsystemd/sd-json/sd-json.c:5204
    #4 0x7f56edd745fc in sd_json_dispatch ../src/libsystemd/sd-json/sd-json.c:5276
    #5 0x7f56ed80100b in dispatch_privileged ../src/shared/user-record.c:998
    #6 0x7f56edd73cbc in sd_json_dispatch_full ../src/libsystemd/sd-json/sd-json.c:5204
    #7 0x7f56edd745fc in sd_json_dispatch ../src/libsystemd/sd-json/sd-json.c:5276
    #8 0x7f56ed80622c in user_record_load ../src/shared/user-record.c:1697
    #9 0x000000408c15 in display_user ../src/userdb/userdbctl.c:447
    #10 0x7f56ed83cc9a in dispatch_verb ../src/shared/verbs.c:137
    #11 0x00000041df2b in run ../src/userdb/userdbctl.c:1908
    #12 0x00000041dfbe in main ../src/userdb/userdbctl.c:1911
    #13 0x7f56ec8105b4 in __libc_start_call_main (/lib64/libc.so.6+0x35b4) (BuildId: 2b5beec0fd24fe9c9f43eddfdd5facf0b8a1b805)
    #14 0x7f56ec810667 in __libc_start_main@@GLIBC_2.34 (/lib64/libc.so.6+0x3667) (BuildId: 2b5beec0fd24fe9c9f43eddfdd5facf0b8a1b805)
    #15 0x000000404a44 in _start (/home/fsumsal/repos/@systemd/systemd/build-san/userdbctl+0x404a44) (BuildId: 19e8b7e7b7038d2cea20bc18a55bea2a9e4406d5)

Direct leak of 64 byte(s) in 1 object(s) allocated from:
    #0 0x7f56f00e5e4b in realloc.part.0 (/lib64/libasan.so.8+0xe5e4b) (BuildId: 25975f766867e9e604dc5a71a8befeaed3301942)
    #1 0x7f56ed869e42 in greedy_realloc ../src/basic/alloc-util.c:65
    #2 0x7f56ed7fe779 in dispatch_fido2_hmac_credential_array ../src/shared/user-record.c:775
    #3 0x7f56edd73cbc in sd_json_dispatch_full ../src/libsystemd/sd-json/sd-json.c:5204
    #4 0x7f56edd745fc in sd_json_dispatch ../src/libsystemd/sd-json/sd-json.c:5276
    #5 0x7f56ed80622c in user_record_load ../src/shared/user-record.c:1697
    #6 0x000000408c15 in display_user ../src/userdb/userdbctl.c:447
    #7 0x7f56ed83cc9a in dispatch_verb ../src/shared/verbs.c:137
    #8 0x00000041df2b in run ../src/userdb/userdbctl.c:1908
    #9 0x00000041dfbe in main ../src/userdb/userdbctl.c:1911
    #10 0x7f56ec8105b4 in __libc_start_call_main (/lib64/libc.so.6+0x35b4) (BuildId: 2b5beec0fd24fe9c9f43eddfdd5facf0b8a1b805)
    #11 0x7f56ec810667 in __libc_start_main@@GLIBC_2.34 (/lib64/libc.so.6+0x3667) (BuildId: 2b5beec0fd24fe9c9f43eddfdd5facf0b8a1b805)
    #12 0x000000404a44 in _start (/home/fsumsal/repos/@systemd/systemd/build-san/userdbctl+0x404a44) (BuildId: 19e8b7e7b7038d2cea20bc18a55bea2a9e4406d5)

SUMMARY: AddressSanitizer: 176 byte(s) leaked in 2 allocation(s).
2026-03-06 18:39:07 +01:00
Frantisek Sumsal 76ab7861ff shared: don't exclude valid min/max values for cgroup weight fields
1 and 10000 are valid cgroup weight values, but the condition was
incorrectly excluding them:

$ echo '{"userName":"crashhostarray","cpuWeight":1}' | userdbctl -F -
<stdin>:1:42: JSON field 'cpuWeight' is not in valid range 1…10000.

$ echo '{"userName":"crashhostarray","cpuWeight":10000}' | userdbctl -F -
<stdin>:1:42: JSON field 'cpuWeight' is not in valid range 1…10000.
2026-03-06 18:39:01 +01:00
Zbigniew Jędrzejewski-Szmek dc0b438836 various: use asprintf_safe in more places 2026-03-06 17:46:59 +01:00
Zbigniew Jędrzejewski-Szmek 1dc6445bbb shared/format-table: fix potential memleaks of d->formatted
We don't always return d->formatted, even if it is available. And
depending on the cell type, we'd either overwrite it directly or free
first. Let's always free it upfront and then set unconditionally.
(In this case, we don't need to spend effort on preserving the
existing value. It's just a cache.)  Setting the variable directly
allows many temporary variables to be eliminated.

Also use asprintf_safe() to simplify the allocation of the buffer.
This is probably a tiny bit slower than the direct allocation, but
table formatting shouldn't be a hot path.
2026-03-06 17:46:59 +01:00
Zbigniew Jędrzejewski-Szmek 52abc9fe96 basic/stdio-util: introduce asprintf_safe
asprintf is nice to use, but the _documented_ error return convention is
unclear:
> If  memory  allocation  wasn't possible, or some other error occurs,
> these functions will return -1, and the contents of strp are undefined.

What exactly "undefined" means is up for debate: if it was really
undefined, the caller wouldn't be able to meaningfully clean up, because
they wouldn't know if strp is a valid pointer. So far we interpreted
"undefined" — in some parts of the code base — as "either NULL or a
valid pointer that needs to be freed", and — in other parts of the
codebase — as "always NULL". I checked glibc and musl, and they both
uncoditionally set the output pointer to NULL on failure.

There is also no information _why_ asprintf failed. It could be an
allocation error or format string error. But we just don't have this
information.

Let's add a wrapper that either returns a good string or a NULL pointer.
Since there's just one failure result, we don't need a separate return
value and an output argument and can simplify callers.
2026-03-06 17:46:59 +01:00
Zbigniew Jędrzejewski-Szmek d1278e1847 basic/alloc-util: make realloc0 non-inline
It's actually only used in one place in libsystemd and moving it even makes
libsystemd smaller (in a non-optimized build):

$ ls -l build/libsystemd.so.0.43.0*
-rwxr-xr-x 1 zbyszek zbyszek 5763336 Mar  3 09:54 build/libsystemd.so.0.43.0-old
-rwxr-xr-x 1 zbyszek zbyszek 5763216 Mar  3 09:54 build/libsystemd.so.0.43.0

Also, move the definitions in the .h file so that similar functions are
grouped together and then move the definitions around in the .c file so
that they are in the same order as in the header.
2026-03-06 17:46:59 +01:00
Zbigniew Jędrzejewski-Szmek 3abe1e53f6 basic/allow-util: make free_many non-inline
Definition of free_many is moved to the .c file, no particular reason
for it to be inline and we can make the header file shorter.
2026-03-06 17:46:59 +01:00
Zbigniew Jędrzejewski-Szmek 54ed92e17c shared/format-table: use 'char*'-style in function signatures 2026-03-06 17:46:59 +01:00
Frantisek Sumsal 1e2517bf2e shared: fix segfault when processing matchHostname field
Fix a typo which causes a segfault when processing a user record
with matchHostname when it's an array instead of a simple string:

$ echo '{"userName":"crashhostarray","perMachine":[{"matchHostname":["host1","host2"],"locked":false}]}' | userdbctl -F -
Segmentation fault         (core dumped)

$ coredumpctl info
...
       Message: Process 1172301 (userdbctl) of user 1000 dumped core.

                Module libz.so.1 from rpm zlib-ng-2.3.3-1.fc43.x86_64
                Module libcrypto.so.3 from rpm openssl-3.5.4-2.fc43.x86_64
                Stack trace of thread 1172301:
                #0  0x00007fded7b3a656 __strcmp_evex (libc.so.6 + 0x159656)
                #1  0x00007fded7e95397 per_machine_hostname_match (libsystemd-shared-260.so + 0x295397)
                #2  0x00007fded7e955b5 per_machine_match (libsystemd-shared-260.so + 0x2955b5)
                #3  0x00007fded7e957c6 dispatch_per_machine (libsystemd-shared-260.so + 0x2957c6)
                #4  0x00007fded7e96c97 user_record_load (libsystemd-shared-260.so + 0x296c97)
                #5  0x000000000040572d display_user (/home/fsumsal/repos/@systemd/systemd/build/userdbctl + 0x572d)
                #6  0x00007fded7ea9727 dispatch_verb (libsystemd-shared-260.so + 0x2a9727)
                #7  0x000000000041077c run (/home/fsumsal/repos/@systemd/systemd/build/userdbctl + 0x1077c)
                #8  0x00000000004107ce main (/home/fsumsal/repos/@systemd/systemd/build/userdbctl + 0x107ce)
                #9  0x00007fded79e45b5 __libc_start_call_main (libc.so.6 + 0x35b5)
                #10 0x00007fded79e4668 __libc_start_main@@GLIBC_2.34 (libc.so.6 + 0x3668)
                #11 0x00000000004038d5 _start (/home/fsumsal/repos/@systemd/systemd/build/userdbctl + 0x38d5)
                ELF object binary architecture: AMD x86-64
2026-03-06 17:24:53 +01:00
Frantisek Sumsal 45830bc8d2 test: drop some extraneous whitespaces 2026-03-06 16:09:21 +01:00
Daan De Meyer c7c0ea91aa ci: Fix missing parentheses in claude review workflow 2026-03-06 15:31:29 +01:00
Daan De Meyer a67cb44287 ci: React to issue_comment in claude review workflow
issue_comment is the trigger that fires on regular pull request comments,
so we have to trigger the review workflow on that as well.
2026-03-06 15:27:30 +01:00
Daan De Meyer d2fec49b55 Two claude fixes/improvements (#40971) 2026-03-06 15:18:26 +01:00
Daan De Meyer 5d223ff468 ci: Make claude action review PRs only and fix the instructions
Turns out the claude code action has issues reviewing PRs from forks
(https://github.com/anthropics/claude-code-action/issues/939). Let's
reuse the approach from https://github.com/pzmarzly/demo--claude-bot-reviews
instead (which I've explicitly asked permission for to reuse).

Unlike the linked demo, we still insist on a comment by a maintainer
before claude reviews the PR.
2026-03-06 15:11:54 +01:00
Lennart Poettering dfb1fa0197 sd-varlink: pin error message while we invoke a reply callback
Let's make sure the parameters/error pointers into the message remain
valid as long as the reply callback is running, even if the reply
otherwise resets the pending message.
2026-03-06 14:51:35 +01:00
Antonio Alvarez Feijoo 4ef56f30b8 mkosi/opensuse: fix package name systemd-network -> systemd-networkd
```
'systemd-network' not found in package names. Trying capabilities.
```

Follow-up for 00f7afebb4
2026-03-06 10:10:53 +00:00
Daan De Meyer 83e872b4c2 agent: Minimize the amount of instructions in AGENTS.md
Let's only keep instructions for stuff that we've seen the AI
mess up in practice rather than having a bunch of AI generated
text that it can figure out for itself these days (given it was
trained on systemd's source code in the first place).

Also add a rule to use git worktrees and check out PRs locally when
reviewing them, since I've seen it mess that up in practice.
2026-03-06 10:20:25 +01:00
Zbigniew Jędrzejewski-Szmek f0691ad697 ci: Add claude code github action (#40966)
This will allow maintainers to mention claude in comments on issues and
prs to do stuff like review something or try to reproduce a bug or other
stuff. Let's give it a try and see whether we like it or not.
2026-03-06 09:06:58 +01:00
Daan De Meyer 89f5f01caf Move AI instructions to AGENTS.md
This seems to be what all the tools are standardizing on, except
claude (https://github.com/anthropics/claude-code/issues/6235) so
add a symlink from CLAUDE.md to AGENTS.md for now until they support
it as well.

I also had claude extend the instructions a bit.

Co-developed-by: Claude <claude@anthropic.com>
2026-03-06 08:55:55 +01:00
Luca Boccassi acce28884d man: add tags for the next few versions 2026-03-06 09:52:37 +09:00
Luca Boccassi 1925c9975b Translations update from Fedora Weblate (#40968)
Translations update from [Fedora
Weblate](https://translate.fedoraproject.org) for
[systemd/main](https://translate.fedoraproject.org/projects/systemd/main/).



Current translation status:

![Weblate translation
status](https://translate.fedoraproject.org/widget/systemd/main/horizontal-auto.svg)
2026-03-06 00:29:03 +00:00
Américo Monteiro 02b2014a24 po: Translated using Weblate (Portuguese)
Currently translated at 100.0% (266 of 266 strings)

Co-authored-by: Américo Monteiro <a_monteiro@gmx.com>
Translate-URL: https://translate.fedoraproject.org/projects/systemd/main/pt/
Translation: systemd/main
2026-03-06 00:17:10 +00:00
Salvatore Cocuzza d213b85b79 po: Translated using Weblate (Italian)
Currently translated at 100.0% (266 of 266 strings)

Co-authored-by: Salvatore Cocuzza <info@salvatorecocuzza.it>
Translate-URL: https://translate.fedoraproject.org/projects/systemd/main/it/
Translation: systemd/main
2026-03-06 00:17:10 +00:00
Ronan Pigott 0fc5c9ef2e zsh: fixup some recent zsh completers
These two completers are written in a stacked _arguments style, and some
generic options are valid before or after the verb. If the toplevel
_arguments is permitted to match options after the verb, it will halt
completion prematurely, so stop toplevel matching after the verb.

This corrects the following error:

$ userdbctl --output=class user <TAB> # completes users
$ userdbctl user --output=class <TAB> # completes nothing
2026-03-06 00:17:02 +00:00
Yu Watanabe 802906bbbe po: update Japanese translation 2026-03-06 07:06:59 +09:00