Skip to content

wip hud - init of hud skill and server#343

Draft
SawPsyder wants to merge 17 commits intoShipBit:developfrom
SawPsyder:feature/hud-server-and-skill
Draft

wip hud - init of hud skill and server#343
SawPsyder wants to merge 17 commits intoShipBit:developfrom
SawPsyder:feature/hud-server-and-skill

Conversation

@SawPsyder
Copy link
Contributor

@SawPsyder SawPsyder commented Feb 2, 2026

This completely adds the HUD http server, the HUD renderer and HUD skill to Wingman AI as full core integrations.

This is marked as draft as it still needs several polish runs.
But the functionality is at 95% now - only missing HUD hide/show tools & HUD server start/stop as system setting change reaction.

TODO list:

  • Add HUD show/hide options as tool options
  • Polish Run skill
  • Polish Run http client
  • Polish run http server & manager
  • Polish readme files
  • Fully integrate server stop/start via settings change
  • Toggle to only allow on Windows (?)

@Shackless Shackless force-pushed the feature/hud-server-and-skill branch from b0f535c to fabf1c4 Compare February 3, 2026 09:17
@Shackless
Copy link
Contributor

Shackless commented Feb 3, 2026

Aww, bummer this only works on Windows. We have other places in the code already where we check the OS and disable/skip certain features when not on Windows. Please do this for HUD, too. Check the OS very early in the chain and skip everything if not running on Windows. I'd expect no traces, server instances or initialized variables at all when running on MacOS. I'll make sure to hide everything HUD related in the MacOS UI, too. Please be very defensive with this, especially where HUD plugs into Core. Always expect it not to be available and initialized at all.

@Shackless Shackless added the client-update-required This PR requires the Wingman AI client to be updated label Feb 3, 2026
@SawPsyder
Copy link
Contributor Author

Rendering the HUD is OS-level stuff.
So yeah - this one is for Windows and I have no way to develop and test a Mac or Linux version.

Jan Winkler and others added 16 commits February 5, 2026 11:35
- Remove excessive debug logging from `hud_server`, `hud_manager`, and `skills/hud` to reduce console noise.
- Replace `sys.stderr.write` with `_report_exception` in `overlay.py` for consistent error handling.
- Reduce log noise for 404 errors in `hud_server` exception handler.
- Clean up exception handling in `http_client` to suppress unnecessary retry logs.
…tion

- Create `hud_server/constants.py` to centralize configuration, timeouts, limits, and API paths.
- Update `HudServer` and `HudHttpClient` to utilize centralized constants for consistent behavior.
- Enhance `HudHttpClientSync` with improved thread safety, locking, and event loop management during startup.
- Add Pydantic field validation, constraints, and default values in `hud_server/models.py`.
- Consolidate documentation into `hud_server/README.md` and `hud_server/API.md`, removing scattered README files.
- Improve logging and error handling during server and overlay lifecycle events.
…channel support (#10)

* Initial plan

* Implement render caching for HUD performance optimization

Co-authored-by: SawPsyder <44277746+SawPsyder@users.noreply.github.com>

* Address code review feedback for HUD caching

Co-authored-by: SawPsyder <44277746+SawPsyder@users.noreply.github.com>

* Mark deprecated legacy methods in overlay.py, document unified window system

Co-authored-by: SawPsyder <44277746+SawPsyder@users.noreply.github.com>

* Add deprecation warnings to legacy methods in overlay.py

Co-authored-by: SawPsyder <44277746+SawPsyder@users.noreply.github.com>

* Improve deprecated methods documentation clarity

Co-authored-by: SawPsyder <44277746+SawPsyder@users.noreply.github.com>

* Optimize HUD rendering by removing redundant z-order updates for windows

* Remove legacy HUD code and fix cache issues causing ghosting

Co-authored-by: SawPsyder <44277746+SawPsyder@users.noreply.github.com>

* Add docstring to _init_fonts and complete code review

Co-authored-by: SawPsyder <44277746+SawPsyder@users.noreply.github.com>

* Fix layout manager releasing slot before fade-out completes

Co-authored-by: SawPsyder <44277746+SawPsyder@users.noreply.github.com>

* Refactor chat window handling and improve HUD rendering performance

* Remove unused legacy chat window code and fix chat window integration

Co-authored-by: SawPsyder <44277746+SawPsyder@users.noreply.github.com>

* Enhance Snake game with gradient snake body, combo system, and golden apples

* Enable alpha channel support in HUD background colors

Co-authored-by: SawPsyder <44277746+SawPsyder@users.noreply.github.com>

* Address code review feedback for alpha channel support

Co-authored-by: SawPsyder <44277746+SawPsyder@users.noreply.github.com>

* Add emoji support and scroll fade effect to chat overlay rendering

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: SawPsyder <44277746+SawPsyder@users.noreply.github.com>
Co-authored-by: Jan Winkler <jan@jmwinkler.de>
* Initial plan

* Append consecutive same-sender chat messages instead of creating new entries

When a message is added to a chat window from the same sender as the last
message, the text is appended to the last message (separated by a space)
instead of creating a new message entry with a repeated sender name.

Co-authored-by: SawPsyder <44277746+SawPsyder@users.noreply.github.com>

* Update chat tests for same-sender message merging behavior

- test_chat_markdown: alternate senders so each markdown feature renders separately
- test_chat_auto_hide: use different sender for second message to prevent merging
- test_chat_overflow: unique sender per message to prevent merging during overflow test
- Add test_chat_message_merging: dedicated test for consecutive same-sender merging

Co-authored-by: SawPsyder <44277746+SawPsyder@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: SawPsyder <44277746+SawPsyder@users.noreply.github.com>
* Initial plan

* Add chat message update feature with message IDs

- Add `id` field (UUID) to ChatMessage dataclass
- Change send_chat_message to return message ID (or merged message's ID)
- Add update_chat_message method to HudManager
- Add ChatMessageResponse and ChatMessageUpdateRequest models
- Add PUT /chat/message endpoint for updating messages by ID
- Update POST /chat/message to return message_id in response
- Update HTTP client (async + sync) with update_chat_message method
- Update TestSession with update_chat_message helper
- Update overlay handler to track message IDs and handle updates
- Update state serialization/deserialization to include message IDs
- Add test_chat_message_update test case
- Update README documentation with message update API

Co-authored-by: SawPsyder <44277746+SawPsyder@users.noreply.github.com>

* Address code review: keep sender/text required in ChatMessage, fix comment

Co-authored-by: SawPsyder <44277746+SawPsyder@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: SawPsyder <44277746+SawPsyder@users.noreply.github.com>
* Initial plan

* Use reactive WinEvent hook for HUD foreground management instead of polling

Replace the removed polling loop with an event-driven approach using
SetWinEventHook(EVENT_SYSTEM_FOREGROUND). The callback sets a thread-safe
threading.Event flag, and the main render loop checks/clears it each frame,
re-applying HWND_TOPMOST only when a foreground change is actually detected.

This is both more performant (zero cost when no changes occur) and more
responsive (reacts instantly to foreground changes) than the old 50ms poll.

Co-authored-by: SawPsyder <44277746+SawPsyder@users.noreply.github.com>

* Add log line when HUD foreground change is detected and repositioned

Co-authored-by: SawPsyder <44277746+SawPsyder@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: SawPsyder <44277746+SawPsyder@users.noreply.github.com>
… classes for improved clarity and maintainability
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

client-update-required This PR requires the Wingman AI client to be updated

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants