Linux GUI Stability, Audio Rework, Model Preparation UI, Typing, and Turn Display Fixes
This document covers only the changes from V31.10 through V31.13.2.
The main focus of this update range is Linux GUI scaling, scene and audio transitions, local AI model preparation UI, startup stability, agenda typing behavior, and dynamic turn progress display.
V31.10 — Linux DPI Scaling Parity
We fixed an issue where the Linux GUI could appear almost twice as large under XWayland or high-DPI environments.
When Linux Tk automatically adopted a 144–192 DPI environment, fixed Canvas coordinates remained unchanged while fonts and native widgets could become 1.5–2 times larger.
V31.10 normalizes the Linux GUI to the same 96 DPI baseline as the Windows version.
Reference window size: 1180 × 760
Tk scaling: approximately 1.3333
Reference DPI: 96
Example diagnostic log:
[IWAK LinuxRoyalGui] Tk scaling:
native=2.6667,
applied=1.3333,
effective_dpi=96.0
To preserve the system Tk scaling:
IWAK_PRESERVE_SYSTEM_TK_SCALING=1
To specify a custom scaling value:
IWAK_TK_SCALING=1.5
The full and demo build pipelines now include a self-test that simulates a 2× DPI environment and verifies that it is normalized back to the 96 DPI baseline.
V31.11 — Court Polish, BGM, Transitions, and Credits
Jeolla Province Granary Agenda Fix
Incomplete English choices in `A granary dispute is reported from Jeolla Province` were replaced with complete commands and descriptions.
1) Open Part of the Provincial Granary
2) Audit the Granary Ledgers
3) Preserve the Emergency Reserve
4) Demand a Verified Provincial Report
Crown Prince Night Scene BGM Re-edit
The Crown Prince night scene now uses only the quiet, prayer-like section of the source track.
More intense sections were removed to better match the tone of the scene.
Improved BGM Transitions
Music transition timing and fade behavior were refined to reduce abrupt track changes between scenes.
Escape Completes Current Typing
Pressing Escape during a typewriter effect instantly reveals the remaining text of the current output.
Sword Scroll Decoration Removed
The sword image on the right-side scroll rail was removed and replaced with a thin gold rail and border-based ornament.
Scene Transition Delay Fix
We fixed an issue where the outer background changed first while the inner panels were recreated one frame later.
```text
Process scene token
→ Refresh all internal panels
→ Apply Tk idle draw
→ Start transition overlay
```
Main Text Box Ornament
The main court text box now uses the same gold border and palace ornament language as the other major panels.
AI Model Credits
The ending credits now list the local AI models used during the reign and their roles.
The following line remains at the end:
```text
Press R to restart.
```
V31.12 — Model Preparation Input Overlay
The local model preparation status has been moved from the upper-right corner to the royal decree input area.
Preparing local models...
Current model
Download and installation status
Progress animation
The input field is temporarily disabled while the models are being prepared.
When preparation finishes:
Remove overlay
→ Restore input field
→ Restore focus
The normal inference status remains in the header:
Local model is speaking...
V31.13 — Single Audio, Color Rules, and Cough Command Fix
Single Audio Layer
All background music now runs through a single `pygame.mixer.music` stream.
Multiple Sound/Channel layers no longer overlap.
```text
Current BGM
→ Player input
→ Fade out current BGM
→ Stop completely
→ Receive next scene/mood token
→ Fade in next BGM
In night scenes, Enter acts as the music boundary.
Night scene music
→ “Continue your reign?”
→ Enter
→ Stop night music
→ Start the next daytime track
English Text Color Rules
Words such as `war`, `province`, `Treasury`, and `invasion` no longer override the intended speaker color.
Color precedence:
Explicit speaker
→ Output role
→ Document type
→ Warning or crisis keyword
Left Councillor, Right Councillor, and Scribe dialogue now preserves speaker-specific colors even when crisis-related terms are present.
More Natural Separators
Automatically generated UI text now uses natural conjunctions instead of repeated middle dots.
Example:
granite4.1:30b · ollama pull
Changed to:
Downloading the granite4.1:30b model through Ollama.
Cough Command Easter Egg Fix
“Who made that coughing sound?”
→ Dismiss the current councillor
→ Replacement councillor trust starts at 3.0
The replacement councillor no longer starts at 5.0 trust.
V31.13.1 — Startup Stability Hotfix
Several high-risk GUI refactors that affected startup were temporarily rolled back to the V31.12 stable structure.
Temporarily reverted:
Line-level color tuple/cache changes
Moving settings controls inside the state dashboard
Forcing indicator height to exactly match font height
Retained:
Single audio stream
English speaker-color precedence
Replacement councillor trust 3.0 after the cough command
Natural separator wording
Model-preparation input overlay
Fatal errors now produce the following logs:
windows_royal_gui_crash.log
windows_royal_gui_launcher_log.txt
linux_royal_gui_crash.log
linux_royal_gui_launcher_log.txt
V31.13.2 — Agenda Typing, Turn Bar, and Model Defaults
Agenda Retyping Regression Fix
Some agendas could appear in full and then type themselves again from the beginning.
The fix:
Treats agenda blocks as atomic records
Prevents merging with follow-up councillor dialogue
Preserves already visible text
Types only newly appended sentences
Dynamic Turn Progress Bar
The turn bar is no longer fixed at 12 segments.
5-turn game → 5 segments
8-turn game → 8 segments
12-turn game → 12 segments
20-turn game → 20 segments
50-turn game → 20 compressed segments + current/total turn count
Default AI Model Configuration
Current default model configuration:
Decree interpretation
→ gpt-oss:20b
Left Councillor
→ granite4.1:8b
Right Councillor
→ gemma4
Narrative and translation
→ gpt-oss:20b
Model preparation order:
1. gpt-oss:20b
2. granite4.1:8b
3. gemma4
`granite4.1:30b` has been removed from the active default configuration.
Version Summary
Version Major Changes
V31.10 Linux 96 DPI normalization, fixed 2× enlargement
V31.11 Granary agenda, BGM editing, transitions, text box, AI credits
V31.12 Moved model preparation status into the input overlay
V31.13 Single audio stream, English color rules, separator cleanup, cough command fix
V31.13.1 Startup stability hotfix, partial rollback of high-risk GUI changes
V31.13.2 Agenda retyping fix, dynamic turn bar, default model update
One-Sentence Summary
