Add automatic client-asset installation for modern Tibia versions in OTC, with the UI and runtime support needed for a safe download-and-install flow.
Main changes:
- Add modules/client_assets to orchestrate descriptor and release resolution, downloads, retries, cancellation, archive extraction, optional LZMA handling, and SHA-256 integrity checks.
- Add richer install logs in the console, including download phases, install phases, and final install paths.
- Add support for packaged runtime files, including large DLLs distributed through archives.
- Make client_entergame depend on client_assets.
- Check required assets during login for modern clients version 1281 and newer.
- Prompt the user to download missing modern assets instead of requiring manual setup.
- Allow the client list and version selection to work with installed modern asset sets.
Install layout:
- Install things assets under data/things/<version>.
- Install sound assets under data/sounds/<version>.
- Keep extra runtime files in the existing client root/bin flow.
- Preserve the existing OTC asset layout as the source of truth instead of introducing a separate permanent path.
UI improvements:
- Improve missing-assets and progress dialog sizing and text wrapping.
- Improve progress behavior for downloads without Content-Length.
- Add indeterminate progress behavior for unknown-length phases.
- Add an hourglass busy indicator for indeterminate phases.
- Reduce the perception that the installer is stuck during long extraction steps.
Runtime and build support:
- Add libarchive usage and linking for archive extraction.
- Add SHA-256 helpers and Lua bindings used by client_assets.
- Add safer extraction and path normalization in ResourceManager.
- Adjust the Emscripten HTTP login path to follow the same HTTP/HTTPS fallback behavior used by native login.
Security and integrity:
- Enable strictManifestSha256 by default.
- Disable raw fallback on hash mismatch by default.
- Key releasesCache per source URL and repository to avoid stale cross-source cache reuse.
- Add an LZMA decompression output cap to reduce memory-exhaustion risk.
Compatibility:
- Keep existing classic asset behavior unchanged.
- Use the new auto-install flow only for modern versions when required assets are missing.
- Keep the scope limited to client-side asset automation and required runtime support.
- No server-side Canary behavior is changed by this PR.
This makes modern client setup safer and more automatic by downloading, validating, extracting, and installing missing assets directly from OTC while preserving the existing classic asset flow.
New Features:
- Imbuement Shrine UI: item/scroll selection, imbuement/clear flows, confirmation dialogs, timers, and cost display.
- New imbuement modules: selection, item/scroll handlers, and imbuement management.
- New progress bar widgets and vertical/inverted variants for status and timers.
- Exposed client APIs and protocol support for imbuement interactions.
UX Improvements:
- Resource requirement tooltips, formatted balance display, and conditional enablement of imbue actions.
Co-authored-by: kokekanon <114332266+kokekanon@users.noreply.github.com>
New Features:
- Full Weapon Proficiency system: track weapon XP, levels and perks.
- Dedicated Proficiency window with item grid, progress, perk selection, filters and search.
- Top-bar proficiency widget for quick status and one-click access.
- Real-time updates when equipping items and gaining proficiency XP.
- Client and scripting support to send proficiency actions and apply perk selections to the server.
Co-authored-by: kokekanon <114332266+kokekanon@users.noreply.github.com>
New Features:
- Enhanced bot configuration system with improved loading and management.
Bug Fixes:
- Fixed container window sizing when minimizing, now dynamically calculates height based on layout.
Style:
- Updated scrollbar visual appearance with new imagery and styling.
- Refreshed tab bar button visuals, sizing, and color states.
- Adjusted editor button layout for better alignment.
- Improved tab font sizing based on text length rather than count.
New Features:
- Native macOS app with Cocoa windowing, OpenGL view, improved input, clipboard and cursor handling.
- Platform-aware keyboard and shortcut behavior with clearer primary/meta/control semantics and normalized key combos.
Bug Fixes:
- Expanded detection for "connection refused" network errors.
Chores:
- macOS build/bundle and packaging improvements; new dependency overlay added; CI now runs macOS build when relevant.
Tests:
- AddressSanitizer support added for test builds.
New Features:
- Per-item controls to show/hide remaining duration and charges.
- Duration and charges rendered as overlays on item icons in inventory and containers.
- More accurate duration/decay tracking for items (improved timing behavior).
Bug Fixes / Performance:
- Removed global expiry polling in favor of per-item updates to reduce overhead.
Style:
- Adjusted item UI template affecting default label styling for duration/charges.
New Features:
- Redesigned stash top bar with larger search, clear button, and three filter/sort controls.
- Incremental item loading as you scroll and dynamic stash combo options.
- Right-click/context menu with Retrieve, Cyclopedia search, Market redirect (when available), and QuickLoot actions.
- "Manage Containers" button added.
Improvements:
- Debounced search, category/imbuement/NPC filters, and smarter sort triggers.
- Immediate withdraw on select, restored focus on close, and centralized stash lifecycle/cleanup.
- Clearer item count rendering with a dedicated font and new formatting.
New Features:
- Persistent sortable character list columns (name, status, level, vocation, world) with ascending/descending toggle.
- Per-account character pinning and pin-based sort prioritization.
- Show/hide hidden characters toggle and show outfits option.
- Expanded premium benefits panel and action button.
Style:
- Improved row focus highlighting and visual feedback.
- Better world name text layout and wrapping.
New Features:
• OTML variable/alias support for styles, including nested, node-scoped, and global aliases for consistent theming.
Documentation:
• Added a detailed guide and example demonstrating alias declarations, scoping, resolution order, literal handling, and best practices.
Bug Fixes:
• UI loading now ignores variable-only nodes and better handles literal color tokens and invalid or circular alias references.
Tests:
• Added tests covering alias resolution, scoping, error cases, and export behavior.
Changelog
• New changelog entry documenting OTML alias resolution and related note about an include path update.
This feature allows for increased customization by enabling the addition of colored mouse cursors.
Co-authored-by: LIBERGOD <37589902+libergod@users.noreply.github.com>
* feat: show mana shield circle
* fix: empty mana circle
* wip: statsbar
* wip: mana shield
* fix: mana shield bar
* fix: mana shield show text
* wip: is mage
* Add mana shield bar to mage player HUD
* fix: color
* fix: ensure familiar configuration is checked before access
* fix: adjust outfit button padding and margins for better layout
* fix: enhance creature display settings for character appearance
- Introduced a new miniwindow header image for UI.
- Created a new style file for the miniwindow battle interface, defining layout, buttons, and scrollable content.
- Configured button states for close, minimize, and toggle filter functionalities.
- Established visual elements such as borders, backgrounds, and dimensions for a cohesive design.
- Multi-Instance battle list feature.
- Filters and Orderings for each instance.
- Lock buttons specific to each instance.
- Keep open/re-launch when relog/exit game.
- On close, it destroys the instance, cleaning up its settings.
- A bunch of safety checks and locks to ensure they are working properly, and update all windows accordingly.
- Integrated font glyphs into texture atlas (reduces glBindTexture)
- Fixed foreground smoothing (UI/2D rendering)
- Refactored and improved DrawPool logic and parallelism
- FPS is now more stable during high update rates
- Applied camera stabilization formula based on player speed
Closes#1134, #1031
* fix: mainpanel
* Minor fixes
* Removed dead code (Outfit)
* Fixed type error SpellGroups vs game_cooldown
* Fixed Keybind
* And more
* more fixes
* ...
* Changes in shop (store)
* Added function addOutfit;
* Fixed entries per page (history);
* Fixed Extras Category
* Added function Game.getMountIdByClientId