Logs page renders blank when LANG is a CJK locale on Flatpak (monospace resolves to proportional Noto Sans CJK)
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 76/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- rust, typescript
Rechercherichtung
Beginne mit packages/ui/src/composables/terminal.ts, wo der Issue zufolge das Terminal seine Schriftfamilie auf das generische monospace setzt; prüfe, wie die Logs-Seite xterm.js konfiguriert und ob benachbarte Tests das Rendern des Terminals abdecken. Reproduziere das Problem mit einem CJK-LANG in Flatpak und vergleiche es mit en_US.UTF-8. Fertig ist die Aufgabe, wenn Logs und der leere Zustand unter einem CJK-Locale gerendert werden.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Please confirm the following
- I checked the existing issues for duplicate problems
- I have tried resolving the issue using the support portal
- I have ensured my Modrinth App installation is up to date
What version of the Modrinth App are you using?
0.22.0 (Flathub, com.modrinth.ModrinthApp, runtime org.gnome.Platform/x86_64/49)
What operating systems are you seeing the problem on?
Linux — Fedora 44, KDE Plasma (Wayland), system locale zh_CN.UTF-8
Describe the bug
When the system/process locale is Chinese (LANG=zh_CN.UTF-8), the instance Logs page renders an entirely blank terminal, even though the logs are read successfully.
The page chrome (search box, level filters, log-source dropdown) works, and the dropdown correctly lists latest.log, crash reports, and rotated .log.gz files. Selecting any of them still leaves the terminal blank. The empty-state message/frog does not appear either, which suggests the xterm.js terminal never renders any text.
Launching the same Flatpak with LANG=en_US.UTF-8 makes the Logs page work normally, so the data/back-end side is fine — this is a rendering issue.
The same instance shows:
LANG=zh_CN.UTF-8: an empty white terminal area
LANG=en_US.UTF-8: empty-state bubble and log contents render normally
Steps to reproduce
- Use a system with
LANG=zh_CN.UTF-8(or any CJK locale), and install Modrinth App from Flathub. - Open an instance that has logs (or launch the instance once so logs exist).
- Go to the instance Logs tab.
- Observe that the terminal area is completely blank, including no empty-state text.
Optional control:
flatpak run --env=LANG=en_US.UTF-8 com.modrinth.ModrinthApp
→ the Logs page renders correctly.
Expected behavior
The Logs page should display the live log / selected log file regardless of the system locale.
Additional context / root cause analysis
Inside the Flatpak sandbox, fontconfig resolves the generic monospace family differently depending on locale:
$ flatpak run --command=sh com.modrinth.ModrinthApp -c \
'LANG=en_US.UTF-8 fc-match monospace; LANG=zh_CN.UTF-8 fc-match monospace'
DejaVuSansMono.ttf: "DejaVu Sans Mono" "Book"
NotoSansCJK-VF.ttc: "Noto Sans CJK SC" "Regular"
Noto Sans CJK SC is a proportional CJK font, not a monospace font. The console component hard-codes the generic family:
// packages/ui/src/composables/terminal.ts (v0.22.0)
fontFamily: 'monospace',
xterm.js requires a monospace font for its character-width measurement. When the generic monospace alias resolves to a proportional (and variable) CJK font, the terminal produces no visible output at all — not even the empty-state bubble.
Note that the actual monospace CJK font is present in the sandbox (fc-list shows Noto Sans Mono CJK SC); fontconfig just prefers the proportional Noto Sans CJK SC under zh_CN.
Workaround (app-local, does not affect other apps):
Create ~/.var/app/com.modrinth.ModrinthApp/config/fontconfig/fonts.conf:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
<match target="pattern">
<test qual="any" name="family"><string>monospace</string></test>
<edit name="family" mode="prepend" binding="strong">
<string>DejaVu Sans Mono</string>
</edit>
</match>
</fontconfig>
After this, LANG=zh_CN.UTF-8 fc-match monospace inside the sandbox returns DejaVu Sans Mono and the Logs page renders again (CJK characters fall back to Noto CJK automatically).
Suggested fix: don't rely on the bare generic monospace alias for the terminal. Use an explicit monospace stack, e.g.
fontFamily: "'DejaVu Sans Mono', 'Noto Sans Mono', 'Noto Sans Mono CJK SC', 'Liberation Mono', monospace",
and/or ship a known monospace font with the app. It may also be worth checking whether xterm.js needs a guard against a resolved proportional font.
- Vorherrschende Sprache
- Rust
- Sterne
- 2.5k
- Forks
- 663
- Ø Merge
- 2 T. 11 Std.
- Gemergte PRs (30 T.)
- 122
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus modrinth/code
-
app
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
Maintainer antworten meist innerhalb von 1 Tag
-
website
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
modrinth/code#8256 · 1 Reaktion ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
modrinth/code#8253 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Translation errorOffenwebsite
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 66/100
Maintainer antworten meist innerhalb von 1 Tag
-
Button reorder requestEvtl. wieder frei @Ceebug hat das vor 17 Tagen übernommen, und es ist kein Pull Request offen. Offen
Schwierigkeit 1/5 1-3 Stunden Anfängerfreundlichkeit 70/100
modrinth/code#8136 · 10 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
pop-os/cosmic-settings#2296 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
Eyevinn/open-live-ingest#36 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
superradcompany/microsandbox#2071 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug bug jury peripheral:i2s
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
esp-rs/esp-hal#6828 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 66/100
Maintainer antworten meist innerhalb von 1 Tag