Commit graph

3 commits

Author SHA1 Message Date
Blake Oliver
26182ec8d0
Character switching, entity ID capture, and UI fixes
- Switch Character now works: send LeaveGame, then re-send LoginRequest with cached token to trigger account screen
- Capture player entity ID from LoadInstance packet to identify own messages and enable LeaveGame
- Fix MsgPackValue Decodable to handle MessagePack timestamp extension types (Date)
- ListBox uses button-based rows instead of Picker (server expects click events, not selection changes)
- Dynamic nav title per buffer tab (Kirandur Global Chat, Map Chat, etc.)
- App icon on login screen via separate Logo image asset
- AsyncStream buffering set to unbounded
2026-04-05 09:11:02 -06:00
Blake Oliver
f9c751a993
Chat sounds, message card UI, own-message detection, and crash fix
Sounds:
- Add chat sounds (global, map, DM) converted from game client ogg to caf
- Audio category .ambient (mixes with other audio, respects silent switch)
- Per-buffer sound toggles and background buffer sound option in Settings

Messages:
- Card-style message rows with .regularMaterial background, bumped fonts (content .title3, sender .headline)
- Context menu and VoiceOver actions: DM and Show Profile on other players' messages
- Generate local UUIDs for message identity (server ID field is not unique, caused ForEach to collapse messages)

Own-message detection:
- Capture player entity ID from LoadInstance packet (Key 1) on game join
- Hide DM/Profile actions on own messages via senderId comparison

Crash fix:
- Guard all UInt64 timestamp subtractions against underflow (retransmitPending, ping, disconnect timeout)
2026-04-05 08:15:31 -06:00
Blake Oliver
2d3fefa013
Initial commit of KDChat
This is an iOS chat client for Kirandur, a multiplayer RPG. Reimplements the LiteNetLib UDP protocol in Swift for reliable ordered messaging. Renders server-driven UI via a RemoteForms widget system for login, character creation and more inside the client.

Uses msgpack-swift for serialization, Keychain for credentials, and targets iOS 18.6+/Xcode 26+.

No message persistence yet. No auto-reconnect. Game-specific packets (movement, combat, etc.) are silently ignored.
No profile viewing yet.

Assisted by Claude Code (Opus 4.6)
2026-04-05 07:11:07 -06:00