<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ao2-client/src/courtroom.h, branch master</title>
<subtitle>AO2 client fork</subtitle>
<link rel='alternate' type='text/html' href='https://git.sof.beauty/ao2-client/'/>
<entry>
<title>Add authentication dialog</title>
<updated>2026-03-29T22:22:25+00:00</updated>
<author>
<name>Osmium Sorcerer</name>
<email>os@sof.beauty</email>
</author>
<published>2026-03-22T18:55:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sof.beauty/ao2-client/commit/?id=a124f46861d549ddc13485536962e34d80de939a'/>
<id>a124f46861d549ddc13485536962e34d80de939a</id>
<content type='text'>
Introduce start_auth_flow, a function invoked by typing `/auth username`
in OOC. It sends an public-key authentication request to the server,
starting the entire flow.

The flow invoves two dialogs: to select the key, and to enter the
passphrase to unlock the key. For convenience, each successful unlock
also remembers the key for that username on the server, storing this
in `saved_auth.json` (I chose JSON because I wanted it to stay
human-editable; INI would be better, but it suffers from bad platform
quirks in Qt).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Introduce start_auth_flow, a function invoked by typing `/auth username`
in OOC. It sends an public-key authentication request to the server,
starting the entire flow.

The flow invoves two dialogs: to select the key, and to enter the
passphrase to unlock the key. For convenience, each successful unlock
also remembers the key for that username on the server, storing this
in `saved_auth.json` (I chose JSON because I wanted it to stay
human-editable; INI would be better, but it suffers from bad platform
quirks in Qt).
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove IL packet</title>
<updated>2026-03-29T22:22:25+00:00</updated>
<author>
<name>Osmium Sorcerer</name>
<email>os@sof.beauty</email>
</author>
<published>2026-03-22T17:50:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sof.beauty/ao2-client/commit/?id=5541e36f81d5d565f7a205ad1f7db2b2463ff553'/>
<id>5541e36f81d5d565f7a205ad1f7db2b2463ff553</id>
<content type='text'>
IL packet is a relic from pre-IPID days when moderators used it to get
the "IP list" of connected users.

Its function is to display a list of strings in the OOC chat box. That's
it. Not even some obscure feature that can be revived. Everything IL can
do, CT can do (the "OOC message" packet).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
IL packet is a relic from pre-IPID days when moderators used it to get
the "IP list" of connected users.

Its function is to display a list of strings in the OOC chat box. That's
it. Not even some obscure feature that can be revived. Everything IL can
do, CT can do (the "OOC message" packet).
</pre>
</div>
</content>
</entry>
<entry>
<title>Allow saving character side in update_character</title>
<updated>2026-03-29T22:22:25+00:00</updated>
<author>
<name>Osmium Sorcerer</name>
<email>os@sof.beauty</email>
</author>
<published>2026-03-22T17:38:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sof.beauty/ao2-client/commit/?id=ec3cf52e24ca53cc339bef32bc2288c3b57d52df'/>
<id>ec3cf52e24ca53cc339bef32bc2288c3b57d52df</id>
<content type='text'>
This fixes "Reload theme" button resetting position.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This fixes "Reload theme" button resetting position.
</pre>
</div>
</content>
</entry>
<entry>
<title>Rewrite audio engine: replace BASS with miniaudio</title>
<updated>2026-03-29T22:22:25+00:00</updated>
<author>
<name>Osmium Sorcerer</name>
<email>os@sof.beauty</email>
</author>
<published>2026-03-24T02:56:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sof.beauty/ao2-client/commit/?id=3f6fb17deddd1b366d16db5a2531c82407ced9db'/>
<id>3f6fb17deddd1b366d16db5a2531c82407ced9db</id>
<content type='text'>
SFX and blip players largely remain the same.

For the music player, we now have to implement network streaming
natively, we no longer have a convenient function that did everything
for us. I introduced QNetworkRequest to download the stream in memory
and signal when it's ready to be decoded and played back. The size is
guarded to prevent the client from accidentally downloading terabytes of
audio.

Delete QFutureWatcher, we no longer need it for concurrency. miniaudio
uses a separate audio thread. Network donwloads and communication with
the track name display are handled by Qt signals.

Also, delete an odd "music.txt" feature. Its purpose was specifying
offsets for loops in a text file per track, but it remained obscure and
unused in practice.

Unsupported:

- Large streams, including unbounded ones (radio). We'll need a ring
  buffer for that, and a mechanism to write to it from the network and
  feed it to the audio thread.

- Effect flags: fade in, fade out, sync pos. Ignored.

- Audio device selection.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
SFX and blip players largely remain the same.

For the music player, we now have to implement network streaming
natively, we no longer have a convenient function that did everything
for us. I introduced QNetworkRequest to download the stream in memory
and signal when it's ready to be decoded and played back. The size is
guarded to prevent the client from accidentally downloading terabytes of
audio.

Delete QFutureWatcher, we no longer need it for concurrency. miniaudio
uses a separate audio thread. Network donwloads and communication with
the track name display are handled by Qt signals.

Also, delete an odd "music.txt" feature. Its purpose was specifying
offsets for loops in a text file per track, but it remained obscure and
unused in practice.

Unsupported:

- Large streams, including unbounded ones (radio). We'll need a ring
  buffer for that, and a mechanism to write to it from the network and
  feed it to the audio thread.

- Effect flags: fade in, fade out, sync pos. Ignored.

- Audio device selection.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix shownames toggle not being respected in several places, clean up implementation (#1080)</title>
<updated>2025-02-09T15:53:36+00:00</updated>
<author>
<name>in1tiate</name>
<email>32779090+in1tiate@users.noreply.github.com</email>
</author>
<published>2025-02-09T15:53:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sof.beauty/ao2-client/commit/?id=a8156ed1b962df23736a8e315b5033036650b941'/>
<id>a8156ed1b962df23736a8e315b5033036650b941</id>
<content type='text'>
* Move showname switch to settings and fix it

* let the append function handle shownames</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Move showname switch to settings and fix it

* let the append function handle shownames</pre>
</div>
</content>
</entry>
<entry>
<title>Add the ability to "favorite" songs and pin them to the the top of the songlist (#1066)</title>
<updated>2025-01-13T23:28:56+00:00</updated>
<author>
<name>in1tiate</name>
<email>32779090+in1tiate@users.noreply.github.com</email>
</author>
<published>2025-01-13T23:28:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sof.beauty/ao2-client/commit/?id=047742a729f8f4f8f4e9c85bf475f75b16f4f7b7'/>
<id>047742a729f8f4f8f4e9c85bf475f75b16f4f7b7</id>
<content type='text'>
* add song favoriting

* remove incorrectly placed sort()

* store as qstringlist instead of using keys</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* add song favoriting

* remove incorrectly placed sort()

* store as qstringlist instead of using keys</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #1016 from AttorneyOnline/restore-window-position</title>
<updated>2024-07-12T12:06:27+00:00</updated>
<author>
<name>Leifa</name>
<email>26681464+TrickyLeifa@users.noreply.github.com</email>
</author>
<published>2024-07-12T12:06:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sof.beauty/ao2-client/commit/?id=d05636571e234bf28dd49830af52675e6bb20068'/>
<id>d05636571e234bf28dd49830af52675e6bb20068</id>
<content type='text'>
[Feature] Add support for windows position restore</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[Feature] Add support for windows position restore</pre>
</div>
</content>
</entry>
<entry>
<title>Add playerlist widget element (#996)</title>
<updated>2024-07-12T09:48:01+00:00</updated>
<author>
<name>Salanto</name>
<email>62221668+Salanto@users.noreply.github.com</email>
</author>
<published>2024-07-12T09:48:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sof.beauty/ao2-client/commit/?id=fb64ca386c51cc3942e1f38cfd76132b1b50e9db'/>
<id>fb64ca386c51cc3942e1f38cfd76132b1b50e9db</id>
<content type='text'>
* Commit

* Boyfailure code commit

* Cooking code spaghetti

* Accidental overwrite recursive function call hell

* Implemented player list

* Add partial moderator widget

Sleepy time! Hee-Hoo!

* Moderator Dialog - Step 1 - WIP

* Appease the clang gods

* Clang appeasement policy

* *sacrifices goat to clang*

* Added player report, reworked implementation, ...

* Added player-specific report
* Reworked implementation
  * No longer uses JSON.
* Removed preset loader.

---------

Co-authored-by: TrickyLeifa &lt;date.epoch@gmail.com&gt;
Co-authored-by: Leifa &lt;26681464+TrickyLeifa@users.noreply.github.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Commit

* Boyfailure code commit

* Cooking code spaghetti

* Accidental overwrite recursive function call hell

* Implemented player list

* Add partial moderator widget

Sleepy time! Hee-Hoo!

* Moderator Dialog - Step 1 - WIP

* Appease the clang gods

* Clang appeasement policy

* *sacrifices goat to clang*

* Added player report, reworked implementation, ...

* Added player-specific report
* Reworked implementation
  * No longer uses JSON.
* Removed preset loader.

---------

Co-authored-by: TrickyLeifa &lt;date.epoch@gmail.com&gt;
Co-authored-by: Leifa &lt;26681464+TrickyLeifa@users.noreply.github.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>Add Courtroom position restore</title>
<updated>2024-07-11T13:52:34+00:00</updated>
<author>
<name>Salanto</name>
<email>62221668+Salanto@users.noreply.github.com</email>
</author>
<published>2024-07-11T13:52:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sof.beauty/ao2-client/commit/?id=d9aada29009c66c6d146d88b20ab43f967653566'/>
<id>d9aada29009c66c6d146d88b20ab43f967653566</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove editable side dropdown (#1009)</title>
<updated>2024-07-09T10:53:19+00:00</updated>
<author>
<name>Leifa</name>
<email>26681464+TrickyLeifa@users.noreply.github.com</email>
</author>
<published>2024-07-09T10:53:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sof.beauty/ao2-client/commit/?id=662d4781d2653e02b9f3727a9299ded8c7b1eaa2'/>
<id>662d4781d2653e02b9f3727a9299ded8c7b1eaa2</id>
<content type='text'>
Resolve #985

Co-authored-by: stonedDiscord &lt;Tukz@gmx.de&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Resolve #985

Co-authored-by: stonedDiscord &lt;Tukz@gmx.de&gt;</pre>
</div>
</content>
</entry>
</feed>
