Commit Graph
887 Commits
Author SHA1 Message Date
maxjivi05 ee2284f330 l10n: follow the reworded Force fullscreen hints (#276) 2026-10-05 13:38:50 -04:00
maxjivi05 0bb0ca8141 Merge main into feat/language-selection 2026-10-05 13:36:33 -04:00
maxjivi05 2a1c4e819b Merge main into feat/language-selection
Brings in the app UI scale presets (#272), compact settings headers (#268), the
undimmed session menu (#267) and the MangoHud battery fix (#270). Setup's
Launcher group lists Language first and App scale after it; the scale's three
new strings are translated.
2026-10-05 13:35:53 -04:00
Lobanokivan11 387572e733 merge bridge to main (second time) (#279) 2026-10-05 17:09:24 +00:00
The412BannerandThe412Banner 9f46c7a50b Force game windows fullscreen: off by default (#276)
A game whose resolution differs from the screen's (DiRT 3 at 1280x720)
fights --force-windows-fullscreen: every forced resize makes it rebuild
its swapchain, and the picture flickers between its own size and the
screen's - often from the first menu, before the player can reach the
game's resolution setting. It also drove the Xwayland dma-buf leak fixed
separately.

The switch stays in Settings > Games and the session drawer, now off
unless turned on; its hint says when to turn it on (a game coming back
small or in a corner after switching apps, e.g. FlatOut) and when to
leave it off (flicker). Users who already set it keep their choice. The
session script's fallback when the app passes nothing is off as well.

Co-authored-by: The412Banner <the412banner@users.noreply.github.com>
2026-10-05 12:44:45 -04:00
The412BannerandThe412Banner 0607bb0b3a Fix Xwayland dma-buf leak: close Zink's emulated GEM handles on KGSL (#275)
Close Zink's emulated GEM handles on KGSL (Xwayland dma-buf leak)

The session preload hands out GEM handles on the KGSL render node by
duplicating the dma-buf descriptor, and released them only through
drmCloseBufferHandle. Zink gives handles back with
drmIoctl(DRM_IOCTL_GEM_CLOSE) instead, which KGSL refuses, so every
duplicated descriptor stayed open and kept its buffer alive.

Xwayland asks for a handle for each buffer it imports through gbm. With
"Force game windows fullscreen" fighting a game's own resolution
(DiRT 3 at 1280x720), the game recreates its swapchain many times a
second and Xwayland piled up ~2,000 old swapchain images (6+ GB) in
seconds until Android killed the session. A preload trace on the device
put 2,090 of 2,118 open dma-buf descriptors in Xwayland on
drmPrimeFDToHandle called from Zink.

Handle GEM_CLOSE on the KGSL node in drmIoctl, and check the three DRM
symbols are exported in CI.

Co-authored-by: The412Banner <the412banner@users.noreply.github.com>
2026-10-05 12:44:16 -04:00
Kurt Himebauch b89d87cbde Add app UI scale presets to Setup (#272) 2026-10-05 11:25:51 -04:00
Kurt Himebauch 06e06b9673 Fix MangoHud double-counting battery power and remaining life (#270) 2026-10-05 15:07:40 +00:00
Kurt Himebauch b896e7a3b9 Compact Steam, Desktop, and Setup settings headers (#268) 2026-10-05 10:34:31 -04:00
Kurt Himebauch c91daa9147 Keep the game undimmed while the session menu is open (#267)
Remove background dimming from the session menu
2026-10-05 09:59:35 -04:00
maxjivi05 2467db90b4 Merge main into feat/language-selection 2026-10-05 08:11:42 -04:00
Kurt Himebauch 31ea194f3d Prepare 0.3.1 release (#263)
* docs: draft 0.3.1 release notes

* chore: bump version to 0.3.1 (11)
0.3.1
2026-10-05 07:46:36 -04:00
maxjivi05 7558503b0d Merge main into feat/language-selection 2026-10-05 07:38:15 -04:00
MaxsTechReview 472bb28c88 Fix controller rings on linked data dirs, route rumble to the controller, capture the mouse for pointer locks (#242)
- #166: export the fake-input ring paths with the spelling the session tree is bound under
  (Context.getFilesDir(), /data/user/0/...) instead of the canonical path. Where /data/user/0
  resolves to /data/data (ColorOS 16) the guest has nothing bound at the canonical prefix, so
  libfakeinput could not open the rings and every pad, physical and on-screen, was dead. The ring
  path logic moves to FakeInputRingPaths so it can be unit-tested without the native library.
- #219: play a game's rumble on the physical controller that last drove the pad, when Android
  exposes its motors (strong and weak separately on Android 12+), and fall back to the device's
  vibrator for the on-screen pad or a controller without rumble. PadBridge records the active
  controller; the on-screen pad taking over moves rumble back to the phone.
- #153: when a program takes a pointer lock (a mouse-look game through gamescope), capture a
  physical mouse and send its raw deltas as relative motion, so the camera no longer stops where
  Android's pointer meets the screen edge. Capture is released for the drawer, the PC keyboard,
  picture in picture, focus loss and pause, and when the lock ends.
2026-10-05 07:33:33 -04:00
maxjivi05 0efc34f1e5 Tabs: scroll the chosen tab into view
Steam session settings now has six tabs; on a small phone the last one (Steam)
was left cut off at the strip's edge even when chosen.
2026-10-05 01:47:01 -04:00
maxjivi05 ca5f3c97fc Merge main into feat/language-selection
Brings in the display settings and in-session controls rework (#247). Its
layout and behaviour are kept; the choices it shows (scaling filters, frame
limits, texture options, effect presets, Back order, the auto touch mode)
use the translated labels, and its new strings are translated.
2026-10-05 01:27:34 -04:00
maxjivi05 f632112f0f Menus: open scrolled to the current choice
On a short screen the language menu shows five entries; with Chinese chosen
the checked one was below the fold. A menu now brings its checked entry into
view when it opens.
2026-10-05 00:59:36 -04:00
maxjivi05 cf995915be l10n: name the update channels in Spanish, Korean and Taiwanese Chinese
Japanese and both other Chinese translations call Stable and Preview by
translated names; these three kept the English ones.
2026-10-05 00:55:42 -04:00
maxjivi05 ed41001005 Updates: stack the channels under the status on a small phone
Side by side in a pane under 720dp, each channel's name and date were cut to a
word in every language. Also lowercase the relative time inside "Checked
...", which Android capitalizes to stand alone (Spanish "Comprobado Hace 5
minutos").
2026-10-05 00:55:42 -04:00
maxjivi05 8e4bade2b4 Desktop page: fit the desktop card and the emulator tiles on a small phone
On a 640dp-wide screen the Japanese "Install & open desktop" button left the
card's title a character a line, and three tiles a row left the emulators'
names as an ellipsis in every language. The button now goes under the title
when the card is under 640dp, and the grid shows two tiles a row under 720dp.
2026-10-05 00:52:43 -04:00
maxjivi05 2cac9c7e94 l10n: shorten the Spanish and Japanese first-run runtime note to fit its pill 2026-10-05 00:49:52 -04:00
maxjivi05 0e018ce09f Tabs: close up a tab row that does not fit before scrolling it
Spanish labels on a 640dp-wide screen pushed Components' last tab past the
edge. A row that overflows now narrows its tabs' padding first.
2026-10-05 00:49:52 -04:00
maxjivi05 644c63358f GPU drivers: let the support verdict wrap beside the GPU's name
On a small phone the verdict took the width it needed and squeezed the name
column to a letter a line ("ranc / hu"). It now shares the row and wraps.
2026-10-05 00:49:52 -04:00
maxjivi05 7f63c514a8 l10n: translate the Back button's order labels
The Session tab's Back setting showed "1: menu 2: QAM" in every language: the
two orders were Kotlin constants. They are string resources now, written as
"Menu → QAM" and "QAM → Menu" and translated.
2026-10-05 00:32:54 -04:00
maxjivi05 4a19ee9e55 l10n: name the Play button in Spanish and Japanese hints as the button reads 2026-10-05 00:05:38 -04:00
maxjivi05 af252d3b76 Menus: show that a list runs on below the fold
On a phone in landscape the language menu shows five of its eight entries and
ends on a whole row, so nothing hints that more follow. While the list can
scroll further it now fades out at the bottom over a down arrow.
2026-10-05 00:05:38 -04:00
Kurt Himebauch eaa4a7a047 Clarify display settings and organize in-session controls (#247)
* Clarify display sizing, game fit and scaling controls

* Replace aspect and resolution controls with one dimension menu

* Organize Steam session settings into tabs

* Keep session resolution out of the live controls panel

* Group live session controls and add a conditional second-screen tab

* Refine session sliders, tab icons and contextual controls

* Simplify screen effects with presets and collapsed advanced controls

* Give in-session tab icons more spacing

* Center the loading cancel button glyph
2026-10-04 23:32:30 -04:00
maxjivi05 1ff9492220 l10n: keep a percent sign that is not a placeholder from being read as one in translations 2026-10-04 22:54:43 -04:00
maxjivi05 da5613a34a l10n: translate the last strings and name the Play button as each language does 2026-10-04 22:51:02 -04:00
maxjivi05 3515d2495a l10n: drop two strings nothing shows any more 2026-10-04 22:50:13 -04:00
maxjivi05 6b646de9e3 l10n: localize the remaining UI text (#212)
Text that still reached the screen in English because its function had no
Context now comes from resources: the child-process limit's titles and
instructions, the update blocks and install failures, game save and storage
errors, game file export errors, component package errors, the GPU's support
line, family and unnamed fallback, and the driver source tags. The setting
choice lists and screen effect Looks use their localized labels, the second
library menu is built from separate resources instead of splitting a label at
its separators, and an account without a name gets whole sentences rather than
a stand-in name. The device report keeps its English text.
2026-10-04 22:49:13 -04:00
maxjivi05 3df5a7f807 Rail: shrink a label that does not fit rather than cut it off 2026-10-04 22:45:24 -04:00
maxjivi05 2951c88b96 l10n: translate every string into Spanish, Japanese, Korean and Chinese (Simplified, Taiwan, Hong Kong)
Fills the 600-700 strings each language was missing, including the text just moved out of the
code (#212), and corrects existing translations that had lost a sentence, inverted a meaning or
broken a placeholder. Hong Kong Chinese now uses Hong Kong terms throughout rather than mainland
ones in traditional characters. Plurals carry every quantity each language needs.
2026-10-04 22:45:24 -04:00
maxjivi05 aece5b9bcb l10n: drive loading and install stages from step IDs, not their text
The loading screen's checklist, the session's package lines and the Decky
plugin button branched on the English wording of progress lines that are now
translated. They now carry what the line is about beside it: the installer's
Step, a LoadingState topic and readable flag (the session script's English
"== STEP" lines are still classified by their text), and DeckyManager's
downloadingBinary. English behaviour is unchanged.

Refs #212
2026-10-04 22:44:10 -04:00
maxjivi05 51e3423f58 l10n: keep every English string in strings.xml 2026-10-04 22:35:59 -04:00
maxjivi05 ccb726a9f2 Steam language: pass the app's language to the session 2026-10-04 22:35:59 -04:00
maxjivi05 44030cac0c Merge branch 'wip/l10n-g3' into feat/language-selection 2026-10-04 22:34:43 -04:00
maxjivi05 bd458667db Merge branch 'wip/l10n-g4' into feat/language-selection 2026-10-04 22:34:40 -04:00
maxjivi05 4fff23a47f Steam language: set the client's language from the app's before every start 2026-10-04 22:34:40 -04:00
maxjivi05 59010f1def l10n: move runtime, update and core manager UI text into string resources (#212) 2026-10-04 22:34:18 -04:00
maxjivi05 94bae6ea52 l10n: move session, GPU and display UI text into string resources (#212) 2026-10-04 22:33:23 -04:00
maxjivi05 bee4f82485 Merge branch 'wip/l10n-g2' into feat/language-selection 2026-10-04 22:33:09 -04:00
maxjivi05 7bb07d5dba Steam language: a guest helper that sets the client's language before it starts 2026-10-04 22:33:09 -04:00
maxjivi05 88716f756d l10n: move ui, files, input, store and frontend UI text into string resources (#212) 2026-10-04 22:32:19 -04:00
maxjivi05 9c72e3daf7 Tests: let Robolectric read the app's string resources 2026-10-04 22:31:48 -04:00
maxjivi05 fba2f378be Merge branch 'wip/l10n-g1' into feat/language-selection 2026-10-04 22:30:42 -04:00
maxjivi05 0fc6ccb6f4 Language setting: name the system language without its region 2026-10-04 22:30:42 -04:00
maxjivi05 2422cc9fef l10n: move launcher, session and component menu UI text into string resources (#212) 2026-10-04 22:30:07 -04:00
maxjivi05 1addb5c848 Guest fonts: give the runtime Android's fonts for Chinese, Japanese, Korean and other scripts (#118, #206) 2026-10-04 22:24:49 -04:00
輕鈴 b3ec65f41b Refine Simplified Chinese localization 2026-10-04 22:23:32 -04:00