<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ao2-client/src/aoapplication.cpp, branch master</title>
<subtitle>AO2 client fork</subtitle>
<link rel='alternate' type='text/html' href='https://git.sof.beauty/ao2-client/'/>
<entry>
<title>Provide more information in About page</title>
<updated>2026-03-30T13:07:11+00:00</updated>
<author>
<name>Osmium Sorcerer</name>
<email>os@sof.beauty</email>
</author>
<published>2026-03-25T06:05:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sof.beauty/ao2-client/commit/?id=b21dfd36cdafd76b5538383279d28b003188fa19'/>
<id>b21dfd36cdafd76b5538383279d28b003188fa19</id>
<content type='text'>
- Downstream version and the upstream revision it's based on
  (commit and date)

- URL to our modified source code.

- miniaudio and libsodium versions.

- Build profile (release, dev, or debug).

Also, stop checking for updates.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Downstream version and the upstream revision it's based on
  (commit and date)

- URL to our modified source code.

- miniaudio and libsodium versions.

- Build profile (release, dev, or debug).

Also, stop checking for updates.
</pre>
</div>
</content>
</entry>
<entry>
<title>Constrain the lifetime of the demo server</title>
<updated>2026-03-30T13:07:11+00:00</updated>
<author>
<name>Osmium Sorcerer</name>
<email>os@sof.beauty</email>
</author>
<published>2026-03-24T23:10:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sof.beauty/ao2-client/commit/?id=14a48530d911e9d9d0539eb4c273ce1379534607'/>
<id>14a48530d911e9d9d0539eb4c273ce1379534607</id>
<content type='text'>
Demo server was being deleted and recreated every time the lobby was
constructed, so it was always active. This rendered the "are we playing
a demo" checks useless as they always assumed we did. Logs didn't work
because of it, for example.

Construct the demo server only when the user selects demo playback, and
destroy it during the destruction of courtroom.

Make log_filename based on the application path, so `logs` subdirectory
is created relative to the executable rather than the working directory.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Demo server was being deleted and recreated every time the lobby was
constructed, so it was always active. This rendered the "are we playing
a demo" checks useless as they always assumed we did. Logs didn't work
because of it, for example.

Construct the demo server only when the user selects demo playback, and
destroy it during the destruction of courtroom.

Make log_filename based on the application path, so `logs` subdirectory
is created relative to the executable rather than the working directory.
</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>Remove RC label (#1054)</title>
<updated>2024-11-02T15:51:41+00:00</updated>
<author>
<name>Salanto</name>
<email>62221668+Salanto@users.noreply.github.com</email>
</author>
<published>2024-11-02T15:51:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sof.beauty/ao2-client/commit/?id=b4cf723e74b7a689282f8ae4ee02dc7afaa3960b'/>
<id>b4cf723e74b7a689282f8ae4ee02dc7afaa3960b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Bump version label (#1050)</title>
<updated>2024-10-01T21:29:39+00:00</updated>
<author>
<name>Salanto</name>
<email>62221668+Salanto@users.noreply.github.com</email>
</author>
<published>2024-10-01T21:29:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sof.beauty/ao2-client/commit/?id=4c22bdc3367c75945155b548de9e2e6fc5375aeb'/>
<id>4c22bdc3367c75945155b548de9e2e6fc5375aeb</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix evidence not being consistently presentable (#1048)</title>
<updated>2024-09-08T07:18:12+00:00</updated>
<author>
<name>Salanto</name>
<email>62221668+Salanto@users.noreply.github.com</email>
</author>
<published>2024-09-08T07:18:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sof.beauty/ao2-client/commit/?id=fedf26075a1cd5ad56e66bb5213e98277795d144'/>
<id>fedf26075a1cd5ad56e66bb5213e98277795d144</id>
<content type='text'>
* Fixup evidence presentation code, methink

* Bump RC, because I can</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Fixup evidence presentation code, methink

* Bump RC, because I can</pre>
</div>
</content>
</entry>
<entry>
<title>[Feature] Add support for custom playerlist formatting, show all users when authenticated (#1046)</title>
<updated>2024-08-31T18:29:26+00:00</updated>
<author>
<name>Salanto</name>
<email>62221668+Salanto@users.noreply.github.com</email>
</author>
<published>2024-08-31T18:29:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sof.beauty/ao2-client/commit/?id=0c10f03150ff1cb296cdec27944b906580998747'/>
<id>0c10f03150ff1cb296cdec27944b906580998747</id>
<content type='text'>
* Playerlist QoL

* Remove excessive whitespaces

* Add placeholder when displayname is unavailable</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Playerlist QoL

* Remove excessive whitespaces

* Add placeholder when displayname is unavailable</pre>
</div>
</content>
</entry>
<entry>
<title>[Bugfix] Fix slides not applying the X offset during slide position calculaiton (#1038)</title>
<updated>2024-08-24T13:33:49+00:00</updated>
<author>
<name>Salanto</name>
<email>62221668+Salanto@users.noreply.github.com</email>
</author>
<published>2024-08-24T13:33:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sof.beauty/ao2-client/commit/?id=50204ec2e265373452c1b4ff4eb2b8dafbb516e8'/>
<id>50204ec2e265373452c1b4ff4eb2b8dafbb516e8</id>
<content type='text'>
* Make slides correctly respect X offset

* Bump to RC4 cause I am cute like that</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Make slides correctly respect X offset

* Bump to RC4 cause I am cute like that</pre>
</div>
</content>
</entry>
<entry>
<title>Send username when connecting (#1031)</title>
<updated>2024-08-02T19:45:47+00:00</updated>
<author>
<name>Salanto</name>
<email>62221668+Salanto@users.noreply.github.com</email>
</author>
<published>2024-08-02T19:45:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sof.beauty/ao2-client/commit/?id=ac673099e0fdadd46453762d811bc3098408ebc5'/>
<id>ac673099e0fdadd46453762d811bc3098408ebc5</id>
<content type='text'>
Hack af, but the alternative is breaking compatability on the last mile.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Hack af, but the alternative is breaking compatability on the last mile.</pre>
</div>
</content>
</entry>
<entry>
<title>V2.11.0 rc1 fixes (#1029)</title>
<updated>2024-07-31T09:55:25+00:00</updated>
<author>
<name>Salanto</name>
<email>62221668+Salanto@users.noreply.github.com</email>
</author>
<published>2024-07-31T09:55:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sof.beauty/ao2-client/commit/?id=4d1b0517e3d5704b26df7d8a9a492d182d36ea4b'/>
<id>4d1b0517e3d5704b26df7d8a9a492d182d36ea4b</id>
<content type='text'>
* Use unix timestamp to transmit ban duration

* Cleanup compiler warning due to narrowing conversion

* Fix preanim not being visible

This is apparently not a feature we want from WebAO :^)

* Bump to RC2

* Use std::chrono instead

* Remove random include and debug call</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Use unix timestamp to transmit ban duration

* Cleanup compiler warning due to narrowing conversion

* Fix preanim not being visible

This is apparently not a feature we want from WebAO :^)

* Bump to RC2

* Use std::chrono instead

* Remove random include and debug call</pre>
</div>
</content>
</entry>
</feed>
