Skip to main content

Overview

Recent UI improvements enhance the game interface with RS3-style keyboard shortcuts, mobile touch support, responsive panel sizing, and improved edit mode functionality.

Action Bar Enhancements

RS3-Style Keyboard Shortcuts

Location: packages/client/src/game/panels/ActionBarPanel/ Expanded keyboard shortcuts using modifier keys for up to 5 action bars (70 total slots): Bar 1 (14 slots): No modifier
  • 1-9, 0, -, =, Backspace, Insert
Bar 2 (14 slots): Ctrl modifier
  • Ctrl+1 through Ctrl+Insert
Bar 3 (14 slots): Shift modifier
  • Shift+1 through Shift+Insert
Bar 4 (14 slots): Alt modifier
  • Alt+1 through Alt+Insert
Bar 5 (14 slots): Letter keys
  • Q, W, E, R, T, Y, U, I, O, P, [, ], \
Implementation:
Display Format: Keybinds are displayed in compact format on action bar slots:
  • Ctrl+1^1
  • Shift+2⇧2
  • Alt+3⌥3

Vertical Layout Support

Action bars now support both horizontal and vertical orientations:
Use Cases:
  • Horizontal: Desktop action bars (default)
  • Vertical: Mobile action bar (side of screen)
Layout Differences:
  • Horizontal: 1 row × N columns
  • Vertical: N rows × 1 column
  • Controls (±, lock) only shown in horizontal mode
  • Rubbish bin only shown in horizontal mode

Mobile Enhancements

Touch Sensor Support

Location: packages/client/src/game/interface/InterfaceManager.tsx Added TouchSensor to dnd-kit for mobile drag-and-drop:
Features:
  • Long-press items to drag to action bar
  • Long-press prayers to drag to action bar
  • Long-press skills to drag to action bar
  • Works on all mobile panels (inventory, equipment, skills, prayer)

Terrain Long-Press Context Menu

Location: packages/shared/src/systems/client/interaction/InteractionRouter.ts Mobile users can long-press terrain to open context menu:
Behavior:
  • Touch and hold terrain for 500ms
  • Context menu appears at touch position
  • Release or move >10px cancels long-press
  • Works for NPCs, objects, and ground items

Mobile Panel Sizing

Panel sizes reduced for better mobile fit: Before (PR #656):
  • Inventory: 240×320
  • Equipment: 220×320
  • Skills: 250×310
After (~30% increase for desktop, optimized for mobile):
  • Inventory: 320×420 (desktop), 260×360 (mobile)
  • Equipment: 260×360 (desktop), 215×310 (mobile)
  • Skills: 325×400 (desktop), matches prayer panel (mobile)
Mobile-Specific Adjustments:

Edit Mode Improvements

Keyboard Handling Refactor

Location: packages/client/src/ui/core/edit/useEditModeKeyboard.ts Extracted keyboard handling to separate hook to prevent duplicate listeners:
Features:
  • Hold L for 1 second to unlock edit mode
  • Progress bar shows hold duration
  • Release before 1 second cancels
  • Escape key locks edit mode instantly
  • Single event listener (no duplicates)
Race Condition Fix:

Delete Zone

Location: packages/client/src/ui/components/EditModeOverlay.tsx Drag panels to delete zone to remove them:
Features:
  • Only visible when dragging a window (not items)
  • Visual feedback on hover (scale, color change)
  • Trash icon with “Drop here to delete” label
  • Uses useDrop hook for drop target handling
Positioning:
  • Bottom center of screen
  • z-index 9999 (above all panels)
  • 120px × 80px hit area

Chat Improvements

Message Filtering by Tab

Location: packages/client/src/game/panels/ChatPanel.tsx Chat tabs now properly filter messages: Tabs:
  • All - Shows all messages
  • Game - Chat, system, activity, news, warnings, trade requests
  • Clan - Clan/guild messages only
  • Private - Private messages and whispers only
Extended Message Types:
Filtering Logic:
Message Colors:

Responsive Layout Algorithm

Location: packages/client/src/game/interface/PanelRegistry.tsx Menu bar now uses dynamic layout calculation:
Features:
  • Automatically reflows between 1-5 rows based on container size
  • Buttons scale to fit available space
  • Prefers horizontal layouts (fewer rows)
  • Smooth transitions when resizing
Button Size Constraints:
  • Minimum: 20px (compact layouts)
  • Maximum: 32px (cleaner appearance)

Viewport Edge Snapping

When menu bar layout changes (row count), the window repositions to stay on screen:

Panel Size Increases

All panels increased by ~30% for better readability: Base Theme Update:

Minimap Improvements

Fill Behavior

Location: packages/client/src/game/interface/InterfacePanels.tsx Minimap now fills the entire container using the larger dimension:
Benefits:
  • No gaps when resizing
  • Always fills panel completely
  • Maintains square aspect ratio

Dialogue Panel Fix

Removed Redundant Wrapper

Location: packages/client/src/game/interface/InterfaceModals.tsx DialoguePanel has its own fixed positioning and backdrop, so wrapping it in ModalWindow caused duplicate styling:
Fixed Issues:
  • Duplicate backdrop
  • Incorrect positioning
  • Layout conflicts
Applied to:
  • Desktop InterfaceManager
  • Mobile InterfaceManager

Theme Color Updates

New Panel Colors

Location: packages/client/src/ui/themes/ Added dedicated panel background colors for better contrast:
Usage:
Updated Components:
  • AccountPanel
  • ActionBarPanel
  • ActionPanel
  • BankPanel
  • ChatPanel
  • CombatPanel
  • DashboardPanel
  • EquipmentPanel
  • InventoryPanel
  • All modal components

Equipment Panel Cleanup

Removed Character Silhouette

Location: packages/client/src/game/panels/EquipmentPanel.tsx Removed the character silhouette SVG for cleaner appearance:
Benefits:
  • Cleaner visual appearance
  • Less visual clutter
  • Equipment slots more prominent
  • Matches OSRS minimalist style

Status Orb Redesign

Dark Fantasy Theme

Location: packages/client/src/game/hud/StatusOrbs.tsx Status orbs redesigned with darker, more atmospheric styling: Changes:
  • Darker background colors
  • Reduced glow intensity
  • Subtle border highlights
  • Better contrast for text
  • Matches overall dark fantasy aesthetic

Border Radius Standardization

Squared Corners

Location: Multiple action bar components Changed from rounded to squared corners for consistency:
Updated Components:
  • ActionBarPanel slots
  • ActionBarSlot elements
  • ActionBarContextMenu
  • Rubbish bin
Rationale:
  • Matches OSRS squared UI style
  • More consistent with game aesthetic
  • Cleaner appearance

Performance Optimizations

Style Memoization

Location: packages/client/src/game/panels/DuelPanel/ Memoized style objects to reduce render allocations:
Applied to:
  • ConfirmScreen
  • RulesScreen
  • StakesScreen
  • All duel panel screens
Benefits:
  • Fewer object allocations
  • Reduced garbage collection
  • Smoother rendering
  • Only recalculates when dependencies change

Type Safety Improvements

Event Payload Types

Location: packages/client/src/game/panels/ActionBarPanel/types.ts Added proper type definitions for event payloads:
Before:
After:

Network Extensions Interface


Accessibility Improvements

Title Attributes

Added title attributes to chat tab buttons for tooltips:

Focus Visible States

Action bar buttons have proper focus indicators:

Bug Fixes

Inventory Cross-Tab Updates

Issue: Inventory updates from one player were applying to other players in the same browser Fix: Added player ID validation:

Bank Close Event Name

Issue: Inconsistent event name for bank closing Fix: Standardized to camelCase:

Migration Guide

For Developers

Action Bar Keybinds: If you were using custom keybinds, update to the new system:
Panel Sizing: If you hardcoded panel sizes, update to new dimensions:
Event Handlers: Update event handlers to use proper types:

Mobile Development

Mobile-specific development guide

Client Package

Client package overview

UI Components

Client UI architecture