13 Commits

Author SHA1 Message Date
John Willard 067d8f9680 Reorganizing the non-game UI (#95383) 2026-05-09 15:06:03 +03:00
LemonInTheDark a0a07e9f40 Unfucks /datum/browse code (#89994)
## About The Pull Request

What it was doing was by and large fine, HOW it was doing it SUCKED 
I've cleaned it up and the nearby code some, notable hits include: 
- random if check in secrets ui that was totally unused
- proc called add that actually set 
- lists not defined as such
- stupid var names
- proc args which did nothing
- code which did nothing
- oververbose code
- proc/var names with no spacing at all

Note: This might have changed behavior accidentally, I've done my best
to test but we'll need to look out for issue reports in coming days.

## Why It's Good For The Game

I was working on bitflag code and saw red, now it's 2 hours later.

## Changelog
🆑
code: Brought browser code up to standard with the rest of the codebase
admin: Hey lads, I cleaned up how non TGUI windows work on the backend,
please let me know if anything is broken! PING ME MOTHERFUCKER
/🆑
2025-04-25 17:36:34 -04:00
harry fde849bf5f makes the skin more compatible with 516 for high dpi monitors (#90416)
## About The Pull Request

changes a whole load of crap in the skin to make it a bit more reactive
to sizing changes, and thus to high dpi monitors

this required adding a bunch of splitters - these have a sane preset for
most monitors but if you ever need to edit it, it's hidden under the
chat settings

1920x1080, 100% scaling

![image](https://github.com/user-attachments/assets/d2b54186-2163-4a77-8580-59008bb7ccc6)

4k, 200% scaling
before:

![vraQH3PvmD8nAGcZ@2x](https://github.com/user-attachments/assets/7f66cfe4-a656-447e-a9b3-d8305638f13d)

after:

![1sc22SAu7x8AOU7D@2x](https://github.com/user-attachments/assets/c2c6e90f-e884-41b3-b80a-191d2aee1f8f)

the sliders:


[user-attachments/assets/776730a7-a325-4b3b-8e27-15636828c6d4](https://github.com/user-attachments/assets/776730a7-a325-4b3b-8e27-15636828c6d4)

## Why It's Good For The Game

it makes the game a bit more playable on my laptop

## Changelog

🆑
qol: under the chat settings, you can now press "Adjust UI Sizes" to
drag around some of the panel sizes
fix: the input at the bottom right is no longer so teeny tiny on 516 if
you use a window scaling that is greater than 100%
/🆑

---------

Co-authored-by: harryob <55142896+harryob@users.noreply.github.com>
2025-04-06 17:20:55 +02:00
Lucy 946a481c81 Fix tgui chat panel z-fighting on BYOND 516 (#88663)
## About The Pull Request

Port of https://github.com/ParadiseSS13/Paradise/pull/27676 and
https://github.com/VOREStation/VOREStation/pull/16734

> Instead of relying on `is-disabled` and `is-visible`, which BYOND
happily will automatically change for you whenever you send a client
text, we now use a Child element to swap between the legacy output and
browser output in separate preset panes.
> 
> TL;DR: chat would flash white under 516, now doesn't

I cleared cache before each test video below, just to be 100% sure

<details>
<summary>Testing Evidence: BYOND 515</summary>


https://github.com/user-attachments/assets/8d661cc3-585e-4f8e-9399-76df8bc0a281

</details>

<details>
<summary>Testing Evidence: BYOND 516</summary>


https://github.com/user-attachments/assets/c0d31fb4-6ef5-4d49-81a8-c767c5e24cc2

</details>

## Why It's Good For The Game

flickering chat hurts my eyes

## Changelog
🆑 Absolucy, ShadowLarkens, S34N
fix: Fixed chat rapidly flickering in BYOND 516.
/🆑
2024-12-24 11:31:00 -08:00
magatsuchi f761861e5d [NO GBP] Removes a debug message admins to reload TGUI button
* removes message_admins in the new TGUI reload verb under OOC tab.
2022-05-26 23:41:16 -04:00
magatsuchi a34003d4f6 adds the "refresh TGUI" debug verb (#67265)
About The Pull Request

adds the Refresh TGUI verb to the debug category OOC category, but it isn't locked behind any permissions. i'd put it in OOC, but.. eeeeeeh? there's not real much use for this verb other for debuggers. i put it in the OOC category
Why It's Good For The Game

debug purposes mostly

not player facing lole
2022-05-27 15:13:01 +12:00
Celotajs 190d0a0384 Replace alert usage with tgui_alert (#58419)
Pretty much every alert() call is replaced with tgui_alert, except one I replaced with tgalert as a fallback. If tgui_alert exists, why not use it?
2021-05-20 22:43:27 +12:00
TiviPlus 0eaab0bc54 Grep for space indentation (#54850)
#54604 atomizing
Since a lot of the space indents are in lists ill atomize those later
2020-11-30 12:48:40 -05:00
Rob Bailey 7446e460f1 fix fix chat (#54517)
Makes fix chat more robust as well as giving a more visible method to fix it.

Stand in while I investigate methods to hopefully make this unneeded.
2020-10-23 08:50:04 +03:00
Rob Bailey a0b784e0e2 fix chat HARDER (#54030)
* fix HARDER

* Remove ping case since the hard method already does a better job.

* Update code/modules/tgui_panel/external.dm

Co-authored-by: Fikou <piotrbryla@onet.pl>

Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
Co-authored-by: Fikou <piotrbryla@onet.pl>
2020-10-02 12:33:35 +03:00
Aleksej Komarov 9638d2af51 tgui: Improve logging, Fix external links (#53226)
* tgui: Improve logging, Fix external links

* Print suspending on the same line

* Streamline fix chat verb

* Muh https
2020-08-27 00:08:18 +03:00
Aleksej Komarov 64dcf44cc6 tgchat: Hotfixes, Message Annotations (#52947)
This PR changes the message pipeline a little bit to support list-based messages, which can be annotated with custom data. Function signature of to_chat was slightly changed as well:

// Plain text message
to_chat(client,
  type = MESSAGE_TYPE_INFO,
  text = "foo")

// HTML message
to_chat(client,
  type = MESSAGE_TYPE_INFO,
  html = "<span class='notice'>foo</span>")

Old to_chat format is still supported, but handle_whitespace, trailing_newline and confidential flags have no effect. confidential flag could still be revived though, if there is enough merit in it, for example to filter out confidential messages when saving a chat log.

The reason for using /list and not /datum, is because lists are plain faster, and there are minimal data transformations - these lists are fed directly to json_encode and sent to tgchat.

Plain text messages do not need to be HTML-escaped, which makes them safer and more performant than HTML messages. Plain text messages can be made interactive (or formatted with CSS) by custom-handling them in javscript based on message type and annotations.

It would be impossible to annotate every single message in the game (at the moment of writing, there are 9447 to_chat calls in the code), but it could be done selectively, for only those messages that are hard to classify by span classes (and there are still A LOT of them).
Please annotate more messages. Thank you.

    Fixes #52943
    Fixes #52908
    Fixes #52816

Changelog

cl
add: tgchat: Unread message count is now smarter and won't increase on other tabs if you have already read the same message in the active tab.
add: tgchat: Admin PMs are now properly annotated and can be filtered into separate tabs.
fix: tgchat: Fix: Highlighted message overlay no longer blocks clicks. Clicking a highlighted (F) link should work as it should.
fix: tgui: Fixed NTOS bluescreen due to calling .includes() on a stylesheet href which could be null on certain browsers.
code: tgchat: Chat schema bumped to version 5. All chat-related settings were reset to avoid breakage.
/cl
2020-08-17 10:38:38 +12:00
Aleksej Komarov 0e1b20e6db tgchat (#52426)
Replaces goonchat with a tgui based chat panel

    Fixes #52898
    Fixes #52663

It is as fast as goonchat was (if not faster in certain circumstances), and is very extensible. It has all the necessary code for sorting messages into categories, which means that one of the next features will be multiple tab support.

Additional features that you will get with tgchat right now:
    Massively faster server-side performance compared to goonchat, especially if batching multiple messages to one client.
    Message persistence across rounds and reconnects. (All messages are stored client-side in IndexedDB)
    More robust scroll tracking. If you scroll up, it will not change the scroll position on new messages like goonchat did.
    Multiple message combining. (Currently set to combine up to 5 messages over last 5 seconds).
    If using the highlighting feature, it highlights the whole message as well as the matching word.
    "Now playing" widget, with preview of the song title, a knob for adjusting the volume and a stop button.

Architecture is as following:
```
to_chat() -+
           |
        SSchat
   (queue, batching)
           |
  window.send_message()
           |
           v
+-------------+
| tgui-panel  |
|+-----------+|
|| tgchat    ||
|+-----------+|
+-------------+
```

Subsystem is basically goonchat, but without all the garbage that slows the servers down (string concatenation, double urlencoding, sanitizing, etc). Now, instead of all that, it's being slowed down by json_encode in /datum/tgui_window/proc/send_message, which IMO is completely worth it, and allows sending various templates and widgets to tgchat.

/datum/tgui_window abstracts the whole window away from you, establishes a nice message-passing interface between DM and JS, with two message queues on each side, automatically loads js/css assets for you, basically does everything. You as a developer only have to worry about sending/receiving messages and write javascript.

tgui-panel is a slimmed down version of tgui, and functions as a container for various widgets, and tgchat is one of them. It of course can be expanded with more stuff.

It's also a separate entry point and a JS bundle, so it's not bloating the main tgui bundle, and is currently sitting at about 230kB.
2020-08-14 13:21:40 +12:00