feat(client): bottom-left journal for system messages #35

Merged
marco merged 1 commit from feat/client-journal into main 2026-07-17 17:46:38 +02:00
Owner

Summary

Split the two message channels on the client, as discussed:

  • Journal (bottom-left) — a new simple widget shows pure system/status text (skill gains, GM command feedback): the last ~8 lines, newest at the bottom, fading as they age. Skill-up messages no longer spam over the player's head.
  • Overhead on target — combat text (damage numbers / miss) stays floating over the target mobile (unchanged).

Client-only, no protocol change: the client routes by message type — SystemMessage → journal, Attacked → overhead. A server-driven OverheadMessage(targetId, text) was deliberately not added (YAGNI — the damage/miss numbers already cover overhead-combat; add it when there's real extra text to put there).

Journal is intentionally minimal (last-N lines, no scrollback) — a proper scrollable journal belongs to the UI-framework work (#14).

How it was tested

Whole suite green (206), zero warnings, CSharpier clean. Rendering is GUI (no unit tests, like the other client widgets) — needs an in-game look.

Needs your eyes (GUI)

Fight a rat: skill-up lines (Wrestling increased 0.1 — now 30.x) and GM feedback should stack bottom-left and fade; damage/miss still float over the rat. Tell me if the position/line-count/fade feel right.

Checklist

  • just lint clean · [x] just test green (206) · [x] whole solution builds, 0 warnings · [x] multi-platform preserved
## Summary Split the two message channels on the client, as discussed: - **Journal (bottom-left)** — a new simple widget shows pure system/status text (skill gains, GM command feedback): the last ~8 lines, newest at the bottom, fading as they age. Skill-up messages no longer spam over the player's head. - **Overhead on target** — combat text (damage numbers / `miss`) stays floating over the target mobile (unchanged). **Client-only, no protocol change:** the client routes by message type — `SystemMessage` → journal, `Attacked` → overhead. A server-driven `OverheadMessage(targetId, text)` was deliberately **not** added (YAGNI — the damage/miss numbers already cover overhead-combat; add it when there's real extra text to put there). Journal is intentionally minimal (last-N lines, no scrollback) — a proper scrollable journal belongs to the UI-framework work (#14). ## How it was tested Whole suite green (206), zero warnings, CSharpier clean. Rendering is GUI (no unit tests, like the other client widgets) — needs an in-game look. ## Needs your eyes (GUI) Fight a rat: skill-up lines (`Wrestling increased 0.1 — now 30.x`) and GM feedback should stack **bottom-left** and fade; damage/`miss` still float over the rat. Tell me if the position/line-count/fade feel right. ## Checklist - [x] `just lint` clean · [x] `just test` green (206) · [x] whole solution builds, 0 warnings · [x] multi-platform preserved
feat(client): route system messages to a bottom-left journal
All checks were successful
ci / Lint & Test (pull_request) Successful in 1m42s
02e9a7dea8
System/status text (skill gains, GM feedback) now goes to a simple bottom-left
journal — the last few lines, newest at the bottom, fading as they age — instead
of floating over the player's head. Combat text (damage numbers / miss) stays
overhead on its target. Client-only, no protocol change: the client routes by
message type (SystemMessage → journal, Attacked → overhead).
marco merged commit 5c13da5d0f into main 2026-07-17 17:46:38 +02:00
marco deleted branch feat/client-journal 2026-07-17 17:46:38 +02:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
marco/IsoMmo!35
No description provided.