Lip sync support for cubism 2!

Is it possible to real time .wav to lip sync using pixi-live2d?
Also if not please add support or kindly provide some other way round... (Couldn't access lip element atteibute from this module, if is possible maybe there's a way round)

made it possible (with some fixes)
https://github.com/RaSan147/pixi-live2d-display

https://user-images.githubusercontent.com/34002411/230723497-612146b1-5593-4dfa-911d-accb331c5b9b.mp4
😭 i'm crying.... finally its done

Hi i'm the newbie with this.   I want to use this version from you.  how can i do this ?
@RaSan147

@DariusTans Umm I'll update the docs asap.

@DariusTans  readme updated
https://github.com/RaSan147/pixi-live2d-display/blob/master/README.md#basic-usage

@RaSan147  Thank you  so much 🙏🙏

@RaSan147
Hi, thank you for your great work.
However, I cannot accomplish lip sync with your patched library.
Here is how I have done so far.
// 1. put libraries via cdn

    <script src="https://cubism.live2d.com/sdk-web/cubismcore/live2dcubismcore.min.js"></script>
    <script src="https://cdn.jsdelivr.net/gh/dylanNew/live2d/webgl/Live2D/lib/live2d.min.js"></script>
    <script<EMAIL_ADDRESS>    <script<EMAIL_ADDRESS>    <script<EMAIL_ADDRESS>

// 2. load my model

const cubism4Model = '../../../live2d/Resources/Rin/Rin.model3.json';

    var model_proxy;
    (async function main() {
      const app = new PIXI.Application({
        view: document.getElementById('canvas'),
        autoStart: true,
        resizeTo: window,
        transparent: true
      });

      const model4 = await PIXI.live2d.Live2DModel.from(cubism4Model);
      model_proxy = model4;

      app.stage.addChild(model4);

      // model4.scale.set(0.18);

      const scaleX = (innerWidth * 0.9) / model4.width;
      const scaleY = (innerHeight * 0.9) / model4.height;

      // fit the window
      model4.scale.set(Math.min(scaleX, scaleY));
      model4.y = innerHeight * 0.1;
    })();

// 3. trying to play sound and lip sync.

// but not working :(

document.getElementById('chat_button').addEventListener('click', () => {
      console.log('clicked');

      var category_name = ''; // name of the mortion category
      var animation_index = 0; // index of animation under that motion category
      var priority_number = 3; // if you want to keep the current animation going or move to new animation by force
      var audio_link = 'http://localhost/live2d/wav/test.wav'; //[Optional arg, can be null or empty] [must be a complete link (including http and everything)] [must be a wav file, sorry mp3 not supported] [demo link, idk if it works, use somehosting]
      model_proxy.motion(category_name, animation_index, priority_number, audio_link);
    });

Here is my model json.
{
	"Version": 3,
	"FileReferences": {
		"Moc": "Rin.moc3",
		"Textures": [
			"Rin.4096/texture_00.png",
			"Rin.4096/texture_01.png"
		],
		"Physics": "Rin.physics3.json",
		"DisplayInfo": "Rin.cdi3.json"
	},
	"Groups": [
		{
			"Target": "Parameter",
			"Name": "LipSync",
			"Ids": [
				"PARAM_MOUTH_OPEN_Y"
			]
		},
		{
			"Target": "Parameter",
			"Name": "EyeBlink",
			"Ids": [
				"PARAM_EYE_L_OPEN",
				"PARAM_EYE_R_OPEN"
			]
		}
	]
}

Any advice you could give would be much appreciated.
Thank you.

@DariusTans readme updated
https://github.com/RaSan147/pixi-live2d-display/blob/master/README.md#basic-usage

Thanks, is it only possible on Cubism2 model?
i tried it on Cubism4 model, the sound play but now with the lipsync

@DariusTans readme updated
https://github.com/RaSan147/pixi-live2d-display/blob/master/README.md#basic-usage

Thanks, is it only possible on Cubism2 model? i tried it on Cubism4 model, the sound play but not with the lipsync

NVM, its work, if your model lip sync didn't work, try adding  LipSync Ids in your .model3.json
Ref: Live 2D Docs

@DariusTans readme updated
https://github.com/RaSan147/pixi-live2d-display/blob/master/README.md#basic-usage

Thanks, is it only possible on Cubism2 model? i tried it on Cubism4 model, the sound play but not with the lipsync

it works perfectly on standard cubism 4 model

@DariusTans readme updated
https://github.com/RaSan147/pixi-live2d-display/blob/master/README.md#basic-usage

Thanks, is it only possible on Cubism2 model? i tried it on Cubism4 model, the sound play but not with the lipsync

NVM, its work, if your model lip sync didn't work, try adding LipSync Ids in your .model3.json
Ref: Live 2D Docs

there might be a chance that your model objects don't use standard partition ids (yes they have standards on it)

Thankyou so much  Sent from Mail for Windows From: Ratul HasanSent: Tuesday, June 27, 2023 2:09 PMTo: guansss/pixi-live2d-displayCc: DariusTans; MentionSubject: Re: [guansss/pixi-live2d-display] Lip sync support for cubism 2+4! (Issue<EMAIL_ADDRESS>readme updatedhttps://github.com/RaSan147/pixi-live2d-display/blob/master/README.md#basic-usageThanks, is it only possible on Cubism2 model? i tried it on Cubism4 model, the sound play but not with the lipsyncit works perfectly on standard cubism 4<EMAIL_ADDRESS>readme updatedhttps://github.com/RaSan147/pixi-live2d-display/blob/master/README.md#basic-usageThanks, is it only possible on Cubism2 model? i tried it on Cubism4 model, the sound play but not with the lipsyncNVM, its work, if your model lip sync didn't work, try adding LipSync Ids in your .model3.jsonRef: Live 2D Docsthere might be a chance that your model objects don't use standard partition ids (yes they have standards on it)—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID<EMAIL_ADDRESS>
great work!
I have a question btw. I tried model.speak.... but it says model.speak is not a function.
Do you have any idea?


Minor issues in the getting-started guides

Team,
While trying out the quickstart examples, I ran into a few minor issues, listed below. New users like me might see these issues as well.
Please review. I can fix them after you take a look.
https://helidon.io/docs/latest/#/getting-started/02_base-example#Prerequisites

For the archetype:generate command to work, users might need to set the proxy in {maven.home}/conf/settings.xml
java --version → Should be: java -version
(@tjquinno and I discussed this one for the MP web service guide) To enable users running Maven on Windows to copy/paste the archetype:generate commands at the CMD prompt, show the entire command in one line in the doc, i.e., without the \ line separators.

https://helidon.io/docs/latest/#/getting-started/02_base-example
4. Before running the application, ask users to first cd to the quickstart-se or quickstart-mp directory, as required.
5. For users who try out both examples, to help them see which app (se or mp) is serving requests, customize the response body for the GET calls to include an indicator or some sort (e.g., "This request is served by <app name>"
6. Before building the docker container, ask users to first cd to the quickstart-se or quickstart-mp directory, as required.
7. If docker was installed by the superuser, then to let a logged-in non-SU user access the docker engine, the user must be added to the docker group: sudo usermod -a -G docker $USER

Thanks, @romain-grecourt !
I didn't see a response to the java --version issue. I presume you're ok with updating that to java -version.

The Maven proxy configuration is common knowledge. We have to draw a line on what we document, here the assumption is that it is very easy to find information on how to configure proxy Maven.
Similar to my comment about configuring the proxy with Maven, the docker setup is something that belongs in the Docker docs.
Ok. In that case, we should mention "Basic working knowledge of Maven and Docker setup" as a prereq.

Also note that you should not update the default settings.xml in the Maven installation.
You basically have two options, either you create your own settings at ~/.m2/settings.xml or you export MAVEN_OPTS and set -Dhttp.proxyHost -Dhttp.proxyPort system properties
If we add Maven/Docker knowledge as a prereq, we're covered on this front.

As discussed on the PR (I think), not breaking the line leads to having an horizontal scrolling behavior which makes it harder to see the full command (even on wide screens).
If we want users to simply copy & paste, then being able to copy is more important IMO.

The getting-start page you reference does have a cd instruction, not sure what you are referring to.
My mistake. I missed that part.

Adding the app name in the greeting message may be a good enhancement to make, @barchetta what do you think ?
Your thoughts, @barchetta ?

I didn't see a response to the java --version issue. I presume you're ok with updating that to java -version.

Yes, that's a mistake / typo that needs to be fixed.

Ok. In that case, we should mention "Basic working knowledge of Maven and Docker setup" as a prereq.

That seems fair, we can add a something to mention that.

If we want users to simply copy & paste, then being able to copy is more important IMO.

Breaking the line does not remove the ability to copy and paste.
There is a copy to clipboard button that works regardless of the line breaking.
However most people won't use this button, so if the command is on a single line the users have to select the line by scrolling horizontally in order to copy it to their clipboard, this can be tricky. Breaking the line also makes that easier.

Just to be a pain in the neck:
Partial output from java -h:
    -version      print product version to the error stream and exit
    --version     print product version to the output stream and exit

The difference is the stream used.
🙂

Here's the error I get with java --version ...
$ java --version
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Unrecognized option: --version

-version works fine:
$ java -version
java version "1.8.0_202-ea"
Java(TM) SE Runtime Environment (build 1.8.0_202-ea-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b03, mixed mode)

Btw, assuming Maven looked for the JAVA_HOME variable, wouldn't it be better to ask users to verify that the variable is set. In other words, they might have JDK 8+, but without setting JAVA_HOME, they can't proceed, right?

Btw, assuming Maven looked for the JAVA_HOME variable, wouldn't it be better to ask users to verify that the variable is set. In other words, they might have JDK 8+, but without setting JAVA_HOME, they can't proceed, right?

Scratch that... I just noticed that the Prerequisites doc does call this out.

Oops. java --version seems to have been added in 9. My bad.

Breaking the line does not remove the ability to copy and paste.
There is a copy to clipboard button that works regardless of the line breaking.

Perhaps a poor choice of words on my part....
Yes, users can still copy, regardless of the line breaks. But on Windows, the copied command won't work when pasted.

However most people won't use this button

I thought otherwise.  Do we have some data to support this?

Oops. java --version seems to have been added in 9. My bad.

No problem.

However most people won't use this button

I thought otherwise. Do we have some data to support this?

Just my own experience: people tend to not use the copy to clipboard button. When it's text and there is a need to copy they select it and press ctrl+c / cmd+c.


Problem with monster stats wide block

Hello,
I have the problem with stats monster when I create PDF, I attach the photo.
The alignment ends in the right column, I have no idea why. Can anyone help me?

That's the code

Lich Initiate
Medium humanoid, chaotic evil

Armor Class 15 (natural armor)
Hit Points 68 (9d8 + 27)
Speed 30 ft.

STR
DEX
CON
INT
WIS
CHA

10 (0)
13 (+1)
16 (+3)17 (+3)
14 (+2)
12 (+1)

Skills Arcana +5, History +5, Religion +5
Saving Throws Con +5, Int +5
Damage Resistances cold, necrotic
Senses passive Perception 12
Languages Abyssal, Common, Infernal
Challenge CR 5 (1,800 XP)

Fanatic Advantage. Once per turn, if the lich initiate can see its lich master, it makes a spell attack with advantage on the attack roll. On a successful hit, the target takes an extra 10 (3d6) damage of the same type damage of that spell.
Lich Fanatic. The lich initiate has advantage on saving throws against being charmed or frightened.
Spellcasting. The lich initiate is a 7th-level spellcaster. Its spellcasting ability is Intelligence (spell save DC 14, +6  to hit with spell attacks). It has the following wizard spells prepared:
Cantrips (at will): chill touch, frostbite, ray of frost, toll the dead
1st level (4 slots): cause fear, chromatic orb, magic missile, shield
2nd level (3 slots): blindness, mind spike, ray of sickness
3rd level (3 slots): counterspell, fireball
4th level (1 slot): blight
from Xanathar’s Guide to Everything
Actions
Grave Bolt. Ranged Spell Attack: +5 to hit, range 120 ft., one creature. Hit: 9 (1d8+5) necrotic damage.
Decay Burst (Recharges 5-6). As a bonus action, a burst of black energy radiates from the lich initiate in a 15-foot-radius centered on it. Any creature that isn’t an undead or construct must make a DC 14 Constitution saving throw. On a failed save, the affected creature is vulnerable to necrotic damage until the start of its next turn.

Hi there. This is an issue with a recent Chrome update. I submitted the bug report to them a while back and it should be fixed now, so make sure you have the latest version of Chrome installed. If it's still not working, you can try the workaround located on Reddit here.

it's solved, ty!

Issue solved by Chrome bump, confirmed by OP.


fix stlye issues and required points for the final chest

As discussed in #93

Thanks for the follow-up. Pretty sure POINTS_REQUIRED_FOR_CHESTcan  also be removed now, right?
I also just checked something. There was an unused int in the parsing for the rewards chest, that was always just equivalent to the index, so I ignored it.
https://github.com/the-marenga/sf-api/blob/e3a6a3b23eb994a786a10d8e25d7d357bf2e66a4/src/gamestate/rewards.rs#L720
It seems like in one their updates, they actually did a senseable thing and changed the int to now contain the amount of points needed. That means the required points for all chest can be anything, not just 5/10/13/20.

If you want, you can have a look at the parsing of that, otherwise I would just merge this and implement that, when I get around to it?

yeah sure I'll take a look

tested it a bit and it should work

Thank you very much!


Convert {PNG,GIF,JPG} to ICO

Description of the new feature / enhancement
A proper convert {PNG,GIF,JPG (obviously jpg is not transparent)} to ICO tool, maybe a great addition to Imager Resizer ¯_(ツ)_/¯
Thank you for your consideration.
Scenario when this would be used?
Would be nice to not have to use any online tool, sure I could use Imagik, but there is no quick built in contextual menu.
Supporting information
Not applicable.

/dup #2686


Commit "Fix encrypted RPC on Linux" ignores return value

Commit<PHONE_NUMBER>9b7ae3cd4fd8b2409c75a299f82913 needs to be revised.  The return value from readsome() is ignored.
For that matter, I'm not sure why this fix is necessary at all.

It's necessary because stcp_socket asserts that the read is a multiple of 16 bytes. Reads later on seem not to bother it, but this one does. It's a dirty hack, which could be done more elegantly, but I needed something to work.
As to the retval of readsome(), I don't see why I need to care. There's no risk of using out of bounds memory here (unless fc::raw::unpack is horribly broken... so actually, there's some risk, but it's got nothing to do with readsome) and if anything other than 80 bytes comes over that wire, the connection can't be trusted and therefore the entire thing is free to error out. But it doesn't hurt to FC_ASSERT that readsome() returns 80.


There seems to be a problem with crop spawning.

Hi, I'm a farmer's delight player.
Firstly, thank you for developing this mod.
(I'm using a translator, so it might be a bit awkward).
I applied this mod to a server I play on with my friends, and the crops are almost non-existent. On other servers, crops spawned frequently, but now I can go thousands of blocks and only see one or two. Other than crops, mod blocks (shelves, chopping boards, etc) and food were working or crafting without issue. It's just the crop spawning that seems to be the problem.
Maybe because I added it to a server that was already running, the crops are only spawning in chunks that never loaded? Is there any way to get them to spawn in the chunks that were loading before?
*server version : 1.20.1
Any answers would be greatly appreciated.

Features (Crops, Trees, Lava Lakes, etc.) only spawn when chunks are generated.
Otherwise every time you went to a forest it would be more dense, ores would regenerate, lava lakes would take over the world, etc.
If you would like to  manually spawn a patch of wild crops use these commands:

Where to stand
Command to use
Expected Result

On Sand
place feature farmersdelight:patch_wild_beetroots
Sea Beets and Sandy Shrubs should spawn near you on the sand

On Sand
place feature farmersdelight:patch_wild_cabbages
Wild Cabbages and Sandy Shrubs should spawn near you on the sand

On Grass or Dirt Blocks
place feature farmersdelight:patch_wild_carrots
Wild Carrots and Grass should spawn near you on the grass or dirt blocks

On Grass or Dirt Blocks
place feature farmersdelight:patch_wild_onions
Wild Onions and Aliums should spawn near you on the grass or dirt blocks

On Grass or Dirt Blocks
place feature farmersdelight:patch_wild_potatoes
Wild Potatoes and Ferns should spawn near you on the grass or dirt blocks

In a block of Water with Grass or Dirt Blocks under you
place feature farmersdelight:patch_wild_rice
Wild Rice should spawn near you in the water on the grass or dirt blocks

On Sand, Grass Or Dirt Blocks
/place feature farmersdelight:patch_wild_tomatoes
Tomato Shrubs and Dead Bushes should spawn on the Dirt, Grass, or Sand blocks near you

Or, if you don't want to manually spawn them, you'll have to create a new server. Also, there maybe a mod to do something like what you want.


Clarity Iconography> Show a marker to indicate new icons

Select one ...  (check one with "x")
[ ] bug
[X] feature request
[ ] enhancement

Clarity Iconography - When new icons are released, show an icon/marker next to each new icon.
The marker should remain only until the next batch of new icons is released. One idea of how this could look:

Lil-Kim to provide marker and mockups.

Adding this to https://github.com/vmware/clarity/issues/1808

Just to clarify, how would a designer or developer use the "new" label to achieve a goal? I am trying to understand the scenario of how this is used besides "good to know"

This was just intended for documentation on the website. Because the icons today aren't really versioned. It can be hard to tell what's been added.
If we move the icons into the versioned docs, the use case for this feature on the website becomes redundant.


Read/Write ZRD Files

Hi,
I started to implement some functions to read and write zrd files. So far I created a class for Zemax rays and a function to read the file.
My plan is to have a separate file for the ray class ind import it to the zdde.py file where I would add the read/write functions. I'll upload it to my fork soon and send you a pull request. If you have any better idea how to implement the functions, please let me know!
Could it be possible to do the bulk ray tracing by creating a ray file from Python and import this to Zemax? Might be a temporary solution for this problem...
Best,
Olf

Hi olf,
That is great.
"If you have any better idea how to implement the functions, please let me know!"
Sounds good to me. Once I see your branch, may be, we can exchange ideas regarding that.
"Could it be possible to do the bulk ray tracing by creating a ray file from Python and import this to Zemax? Might be a temporary solution for this problem..."
Unfortunately, I don't know. Why don't you give it a try. (I have been a little busy lately with my PhD, and don't have much bandwidth to work on this problem myself, although, I really wish to solve the bulk ray tracing problem). So, all ideas are welcome.
Regards,
Indranil.

How far did you get with the bulk ray tracing? What was the problem? I am quite interested in this feature, so if I know some more details, I can give it a try :)
Have a look at my pull request. Atm. all added code is in a separate file

Hi olf,
I tried to work on this sometime last year, using ctypes-based-DDEML to communicate (poke messages), but couldn't get it working. I suspect that it has something to do with how Zemax is internally handling the poke messages. Here is what I found: http://forum.zemax.com/Topic2657.aspx.
"Do you have an example how to trace single rays?"
Well, we can do single ray tracing ... using zGetTrace() and zGetTraceDirect() ... not sure if that's what you were asking. But I just wanted make sure that we are on the same page. If you are asking about single ray tracing using the same strategy of bulk ray tracing, then I am afraid, I haven't succeeded.
I agree with the strategy that you have suggested. In fact I have a piece of code from Ian Rousseau
(Creative Microsystems) who was able to do bulk ray tracing using this strategy (used ctypes instead of SWIG). Right now I don't have the bandwidth to understand and fully integrate his solution into PyZDDE. However, he has been kind enough to send me his code, and I have his permission to give his code to interested folks. Let me know (send me an email) if you would like to take a look at his code.

Closing this issue as the appropriate functions has been added to PyZDDE from https://github.com/indranilsinharoy/PyZDDE/pull/43


[WIP] Quadratic memory growth charge

Due to reallocations, it makes more sense

I'm not sure that relocations should be really an argument, it is a naive implementation of wasm heap.
Should proper impls based on mmap also incur this quadratic rate?

Yeah, this is kinda open question now

Closing for inactivity.

Closing for inactivity.


—
Reply to this email directly, view it on GitHub
https://github.com/ShadowMario/FNF-PsychEngine/pull/3102#event-5841613441,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AUVMSUC2T6QH3ZIXUQIAWWDUUMP25ANCNFSM5LGID6FA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you authored the thread.Message ID:
@.***>

its kinda useless outside of the web version


[SAJC] Add new parameter attributes: Title, Screen element, Radio button group

A new type of class-based application jobs is introduced. Here, the title of the parameter, the screen element which is used for the parameter and the radio button group are not set in the class any more, but in the application job catalog entry. Therefore, the application job catalog entry has to be extended.

Somehow, the 'File changed' section also contains all changes of the commit 'SAJC: Add Parameters, Groups, Sections' which I have done 6 monthes ago. Did I miss something in this commit? Or, is the reason that we didn't release the transport with these changes yet?

You created this pull request out of a branch from your fork that is not at the state of the main branch of our repository.
The best/easiest solution would be to sync the main branch of your fork, create a new branch and then push the changes to this branch. Out of that, then create a pull request.
This one here, we would close then.


add caller_location tests to Miri

The CTFE implementation seems to also work fine in Miri -- thanks a lot @anp :)

@bors r+

:pushpin: Commit b0a205ce6ffbe5618bc280d82f261320c8421790 has been approved by RalfJung

:hourglass: Testing commit b0a205ce6ffbe5618bc280d82f261320c8421790 with merge 048af409232fc2d7f8fbe5469080dc8bb702c498...

:sunny: Test successful - checks-travis, status-appveyor
Approved by: RalfJung
Pushing 048af409232fc2d7f8fbe5469080dc8bb702c498 to master...


Rename _ConnectionError back to ConnectionError

… as I can see no reason for changing the name in the first place.

Note this is a Draft PR: I mainly just wanted to ask the question why this exception was renamed like this.

The linter gave me a hint and I looked it up now... I had no idea Python defines a builtin exception of that name.
How silly of requests to do the same...


CPG: Import local file and parse for tokens. Show in dictionary view

repo: cpg
main branch: dev. create a feature branch for this work and merge into dev when finished
task:

update the /import-files page so the user can add a local file from the file system.
parse the file for tokens. Use white space as the only separator. Keep punctuation.
for each token, create a "word" using the graph api layer 3 shown here. Leo is working on the layer 3 api so check with him as he may have made a function for this.
Update the dictionary page to show a word list (in a table view). You can query the DB however you want for now. this will be refactored.

for now the table view will just be a list of words. we don't have definitions yet.


[BUG] Cumbersome and misleading optimizer configuration

There is a discrepancy between the optimizer type (name) given in the DeepSpeedConfig json file to the optimizer chosen in the _configure_basic_optimizer function in .../deepspeed/runtime/engine.py
https://github.com/microsoft/DeepSpeed/blob/master/deepspeed/runtime/engine.py

When initializing DeepSpeed engine one can configure the basic optimizer by supplying an optimizer object or by using the model_parameters from the DeepSpeedConfig json file: https://www.deepspeed.ai/docs/config-json/
When the optimizer type is Adam/AdamW/Adagrad we get the following branched decision tree for the optimizer which consist of many discrepancies between the given optimizer type and the chosen basic optimizer:

It is written that:
Optimizer name of Adam forces AdamW logic unless adam_w_mode is explicitly set
And yet there are too many variables allowing the above discrepancies, especially for the "adagrad" optimizer.
As can be seen from the table above, the optimizer configuration is cumbersome, non-trivial, confusing and in some cases the optimizer chosen is not what the user asked for. For example, user asks for adagrad but get adam or adamw. Please check whether this configuration can be simplified, and maybe reduce the amount of args.

@nirda7 Thanks for investigating this and creating the table. A solution for the Adagrad is in development and I'll link it here when ready. As for the other config options we are looking at ways to reduce the complexity. Thanks again!


quiesce_time_allowance per worker is not needed

We already check quiesce_loop_timeout and kill all workers if the loop
timeout is reached.  It doesn't matter what quiesce_time_allowance is
for a worker if the quiesce_loop_timeout is lower, since the loop
timeout will expire first and cause all workers to be killed.
It doesn't seem necessary to have two timeouts and doing it at a worker
level seems too complex.
The original commit and bugzids don't indicate this per worker class
timeout as a feature so it must have been added as something we might
use in the future.
Below is the original commit found by NickL :tada:
commit aa2f40fa4504bae0854e6ac194b89a43845e9934
Author: Joe Rafaniello<EMAIL_ADDRESS>Date:   Tue Mar 29 23:21:47 2011 +0000

    Add a synchronous stop of the server and call it from EvmApplication(used by rake evm:stop/restart and black console)
    Add quiesce logic to allow queue worker types to exit gracefully, other types are killed, and only continue shutdown of the server when they're all stopped or killed.
    If provided, use :quiesce_loop_timeout in worker_monitor section of configuration
    If provided, use :quiesce_time_allowance in each worker's settings
    bugzid:11862,11825,11760,11719

cc @NickLaMuro  :1st_place_medal:

@gtanzillo @carbonin Please review.  I tested this locally and things worked.  The tests still pass. We might want to hold off on backporting this to fine unless it's required for other PRs.

@gtanzillo feel free to merge this tasty deletion while I'm out.  ✂ 🔥

@gtanzillo bump


Failed Dispatch Packet on server disconnect

I'm still debugging, but I'm trying to determine the cause of this error when a player disconnects from it. It logs, depending on the scenario, 2-10 of the same error message that I posted below.
Environment: itzg/docker-bungeecord
Velocity: Velocity 3.2.0-SNAPSHOT (git-36cc2bde-b245)
Minecraft: 1.19.4
Plugins:

luckperms 5.4.67 by Luck
protocolize v2 by Exceptionflug
velocitab 1.2.3 by William278
venturechat 3.5.0 by Aust1n46

Error Snippet
traxmc-prison-1    | [03:04:20 INFO]: AMTraxTGE joined the game
traxmc-prison-1    | [03:04:20 INFO]: AMTraxTGE[/1xx.xxx.xxx.xxx:xxxxx] logged in with entity id 39 at ([world]0.5, 65.0, 0.5)
traxmc-lobby-1     | [03:04:20 INFO]: AMTraxTGE lost connection: Disconnected
traxmc-lobby-1     | [03:04:20 INFO]: - AMTraxTGE Disconnected
[07:04:22 INFO]: [connected player] AMTraxTGE (/1xx.xxx.xxx.xxx:xxxxx) has disconnected
[07:04:22 ERROR] [velocitab]: Failed to dispatch packet (is the client or server modded or using an illegal version?)
traxmc-proxy-1     | java.lang.NullPointerException: Cannot invoke "dev.simplix.protocolize.api.player.ProtocolizePlayer.sendPacket(Object)" because the return value of "dev.simplix.protocolize.api.providers.ProtocolizePlayerProvider.player(java.util.UUID)" is null
traxmc-proxy-1     |    at net.william278.velocitab.packet.ScoreboardManager.dispatchPacket(ScoreboardManager.java:57) ~[?:?]
traxmc-proxy-1     |    at net.william278.velocitab.packet.ScoreboardManager.lambda$updateRoles$4(ScoreboardManager.java:49) ~[?:?]
traxmc-proxy-1     |    at java.util.HashMap.forEach(HashMap.java:1421) ~[?:?]
traxmc-proxy-1     |    at net.william278.velocitab.packet.ScoreboardManager.updateRoles(ScoreboardManager.java:49) ~[?:?]
traxmc-proxy-1     |    at net.william278.velocitab.tab.PlayerTabList.lambda$updatePlayer$17(PlayerTabList.java:156) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.CompletableFuture.uniAcceptNow(CompletableFuture.java:757) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.CompletableFuture.uniAcceptStage(CompletableFuture.java:735) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.CompletableFuture.thenAccept(CompletableFuture.java:2182) ~[?:?]
traxmc-proxy-1     |    at net.william278.velocitab.tab.PlayerTabList.lambda$updatePlayer$18(PlayerTabList.java:152) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.ConcurrentLinkedQueue.forEachFrom(ConcurrentLinkedQueue.java:1037) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.ConcurrentLinkedQueue.forEach(ConcurrentLinkedQueue.java:1054) ~[?:?]
traxmc-proxy-1     |    at net.william278.velocitab.tab.PlayerTabList.updatePlayer(PlayerTabList.java:152) ~[?:?]
traxmc-proxy-1     |    at net.william278.velocitab.tab.PlayerTabList.lambda$updatePeriodically$21(PlayerTabList.java:183) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.ConcurrentLinkedQueue.forEachFrom(ConcurrentLinkedQueue.java:1037) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.ConcurrentLinkedQueue.forEach(ConcurrentLinkedQueue.java:1054) ~[?:?]
traxmc-proxy-1     |    at net.william278.velocitab.tab.PlayerTabList.lambda$updatePeriodically$22(PlayerTabList.java:182) ~[?:?]
traxmc-proxy-1     |    at com.velocitypowered.proxy.scheduler.VelocityScheduler$VelocityTask.lambda$run$1(VelocityScheduler.java:242) ~[velocity-3.2.0-SNAPSHOT-245.jar:3.2.0-SNAPSHOT (git-36cc2bde-b245)]
traxmc-proxy-1     |    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
traxmc-proxy-1     |    at java.lang.Thread.run(Thread.java:833) [?:?]
[07:04:22 INFO]: [server connection] AMTraxTGE -> prison has disconnected
[07:04:22 ERROR] [velocitab]: Failed to dispatch packet (is the client or server modded or using an illegal version?)
traxmc-proxy-1     | java.lang.NullPointerException: Cannot invoke "dev.simplix.protocolize.api.player.ProtocolizePlayer.sendPacket(Object)" because the return value of "dev.simplix.protocolize.api.providers.ProtocolizePlayerProvider.player(java.util.UUID)" is null
traxmc-proxy-1     |    at net.william278.velocitab.packet.ScoreboardManager.dispatchPacket(ScoreboardManager.java:57) ~[?:?]
traxmc-proxy-1     |    at net.william278.velocitab.packet.ScoreboardManager.updateRoles(ScoreboardManager.java:50) ~[?:?]
traxmc-proxy-1     |    at net.william278.velocitab.tab.PlayerTabList.lambda$updatePlayer$17(PlayerTabList.java:156) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.CompletableFuture.uniAcceptNow(CompletableFuture.java:757) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.CompletableFuture.uniAcceptStage(CompletableFuture.java:735) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.CompletableFuture.thenAccept(CompletableFuture.java:2182) ~[?:?]
traxmc-proxy-1     |    at net.william278.velocitab.tab.PlayerTabList.lambda$updatePlayer$18(PlayerTabList.java:152) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.ConcurrentLinkedQueue.forEachFrom(ConcurrentLinkedQueue.java:1037) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.ConcurrentLinkedQueue.forEach(ConcurrentLinkedQueue.java:1054) ~[?:?]
traxmc-proxy-1     |    at net.william278.velocitab.tab.PlayerTabList.updatePlayer(PlayerTabList.java:152) ~[?:?]
traxmc-proxy-1     |    at net.william278.velocitab.tab.PlayerTabList.lambda$updatePeriodically$21(PlayerTabList.java:183) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.ConcurrentLinkedQueue.forEachFrom(ConcurrentLinkedQueue.java:1037) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.ConcurrentLinkedQueue.forEach(ConcurrentLinkedQueue.java:1054) ~[?:?]
traxmc-proxy-1     |    at net.william278.velocitab.tab.PlayerTabList.lambda$updatePeriodically$22(PlayerTabList.java:182) ~[?:?]
traxmc-proxy-1     |    at com.velocitypowered.proxy.scheduler.VelocityScheduler$VelocityTask.lambda$run$1(VelocityScheduler.java:242) ~[velocity-3.2.0-SNAPSHOT-245.jar:3.2.0-SNAPSHOT (git-36cc2bde-b245)]
traxmc-proxy-1     |    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
traxmc-proxy-1     |    at java.lang.Thread.run(Thread.java:833) [?:?]
traxmc-prison-1    | [03:04:22 INFO]: AMTraxTGE lost connection: Disconnected
traxmc-prison-1    | [03:04:22 INFO]: AMTraxTGE left the game

Config
# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
# ┃       Velocitab Config       ┃
# ┃    Developed by William278   ┃
# ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
# ┗╸ Placeholders: %players_online%, %max_players_online%, %local_players_online%, %current_date%, %current_time%, %username%, %server%, %ping%, %prefix%, %suffix%, %role%
headers:
    default: "&aWelcome to &6TraxMC&a"
    prison: "&aWelcome to &dPrison&a on &6TraxMC&a!"
footers:
    default: "Players: %players_online%/%max_players_online%"
    prison: "Inmates: %local_players_online%"
formats:
    default: "&f%prefix%&f %username% &6%ping%&ams "
    prison: "&f%prefix%&f %username% &6%ping%&ams "
# Which text formatter to use (MINEDOWN or MINIMESSAGE)
formatting_type: MINEDOWN
# The servers in each group of servers
server_groups:
    default:
        - lobby
    prison:
        - prison
# All servers which are not in other groups will be put in the fallback group.
# "false" will exclude them from Velocitab.
fallback_enabled: true
# The formats to use for the fallback group.
fallback_group: default
enable_papi_hook: true
# If you are using MINIMESSAGE formatting, enable this to support MiniPlaceholders in formatting.
enable_miniplaceholders_hook: true
# Ordered list of elements by which players should be sorted. (ROLE_WEIGHT, ROLE_NAME and SERVER are supported)
sort_players_by:
    - ROLE_WEIGHT
    - ROLE_NAME
# How often to periodically update the TAB list, including header and footer, for all users.
# Will only update on player join/leave if set to 0.
update_rate: 10

I'm still configuring this server, so if there is a solution that happens to be a compatibility issue, I will update this

If it can't find the player by uuid is your user forwarding setup correctly and offline mode on the proxy disabled?

For offline mode disabled, meaning that the proxy is "online" and authenticates with Mojang? Here is just the configuration for the proxy. Would it be possible it is attempting to update the tablist when the player has already left and can't find the user/uuid?

velocity.toml
# Config version. Do not change this
config-version = "2.6"

# What port should the proxy be bound to? By default, we'll bind to all addresses on port 25577.
bind = "<IP_ADDRESS>:25577"

# What should be the MOTD? This gets displayed when the player adds your server to
# their server list. Only MiniMessage format is accepted.
motd = "<#09add3>Developing TraxMC"

# What should we display for the maximum number of players? (Velocity does not support a cap
# on the number of players online.)
show-max-players = 500

# Should we authenticate players with Mojang? By default, this is on.
online-mode = true

# Should the proxy enforce the new public key security standard? By default, this is on.
force-key-authentication = true

# If client's ISP/AS sent from this proxy is different from the one from Mojang's
# authentication server, the player is kicked. This disallows some VPN and proxy
# connections but is a weak form of protection.
prevent-client-proxy-connections = false

# Should we forward IP addresses and other data to backend servers?
# Available options:
# - "none":        No forwarding will be done. All players will appear to be connecting
#                  from the proxy and will have offline-mode UUIDs.
# - "legacy":      Forward player IPs and UUIDs in a BungeeCord-compatible format. Use this
#                  if you run servers using Minecraft 1.12 or lower.
# - "bungeeguard": Forward player IPs and UUIDs in a format supported by the BungeeGuard
#                  plugin. Use this if you run servers using Minecraft 1.12 or lower, and are
#                  unable to implement network level firewalling (on a shared host).
# - "modern":      Forward player IPs and UUIDs as part of the login process using
#                  Velocity's native forwarding. Only applicable for Minecraft 1.13 or higher.
player-info-forwarding-mode = "MODERN"

# If you are using modern or BungeeGuard IP forwarding, configure a file that contains a unique secret here.
# The file is expected to be UTF-8 encoded and not empty.
forwarding-secret-file = "forwarding.secret"

# Announce whether or not your server supports Forge. If you run a modded server, we
# suggest turning this on.
#
# If your network runs one modpack consistently, consider using ping-passthrough = "mods"
# instead for a nicer display in the server list.
announce-forge = false

# If enabled (default is false) and the proxy is in online mode, Velocity will kick
# any existing player who is online if a duplicate connection attempt is made.
kick-existing-players = false

# Should Velocity pass server list ping requests to a backend server?
# Available options:
# - "disabled":    No pass-through will be done. The velocity.toml and server-icon.png
#                  will determine the initial server list ping response.
# - "mods":        Passes only the mod list from your backend server into the response.
#                  The first server in your try list (or forced host) with a mod list will be
#                  used. If no backend servers can be contacted, Velocity won't display any
#                  mod information.
# - "description": Uses the description and mod list from the backend server. The first
#                  server in the try (or forced host) list that responds is used for the
#                  description and mod list.
# - "all":         Uses the backend server's response as the proxy response. The Velocity
#                  configuration is used if no servers could be contacted.
ping-passthrough = "DISABLED"

# If not enabled (default is true) player IP addresses will be replaced by <ip address withheld> in logs
enable-player-address-logging = true

[servers]
# Configure your servers here. Each key represents the server's name, and the value
# represents the IP address of the server to connect to.
lobby = "lobby:25565"
prison = "prison:25565"

# In what order we should try servers when a player logs in or is kicked from a server.
try = [
    "lobby"
]

[forced-hosts]
# Configure your forced hosts here.
"<withheld>" = [
    "lobby"
]

[advanced]
# How large a Minecraft packet has to be before we compress it. Setting this to zero will
# compress all packets, and setting it to -1 will disable compression entirely.
compression-threshold = 256

# How much compression should be done (from 0-9). The default is -1, which uses the
# default level of 6.
compression-level = -1

# How fast (in milliseconds) are clients allowed to connect after the last connection? By
# default, this is three seconds. Disable this by setting this to 0.
login-ratelimit = 3000

# Specify a custom timeout for connection timeouts here. The default is five seconds.
connection-timeout = 5000

# Specify a read timeout for connections here. The default is 30 seconds.
read-timeout = 30000

# Enables compatibility with HAProxy's PROXY protocol. If you don't know what this is for, then
# don't enable it.
haproxy-protocol = false

# Enables TCP fast open support on the proxy. Requires the proxy to run on Linux.
tcp-fast-open = false

# Enables BungeeCord plugin messaging channel support on Velocity.
bungee-plugin-message-channel = true

# Shows ping requests to the proxy from clients.
show-ping-requests = false

# By default, Velocity will attempt to gracefully handle situations where the user unexpectedly
# loses connection to the server without an explicit disconnect message by attempting to fall the
# user back, except in the case of read timeouts. BungeeCord will disconnect the user instead. You
# can disable this setting to use the BungeeCord behavior.
failover-on-unexpected-server-disconnect = true

# Declares the proxy commands to 1.13+ clients.
announce-proxy-commands = true

# Enables the logging of commands
log-command-executions = false

# Enables logging of player connections when connecting to the proxy, switching servers
# and disconnecting from the proxy.
log-player-connections = true

[query]
# Whether to enable responding to GameSpy 4 query responses or not.
enabled = false

# If query is enabled, on what port should the query protocol listen on?
port = 25577

# This is the map name that is reported to the query services.
map = "Velocity"

# Whether plugins should be shown in query response by default or not
show-plugins = false

What version specifically? The latest release? Needs to be the latest supporting 1.19.4 if possible.

I swear it's impossible to find their version number since everything says v2, but based on my downloads.

Protocolize v2.2.6

This would be their latest release of the plugin, which was specifically for introducing 1.19.4

try disabling your update rate

I'm attempting to add a player's ping, and I noticed it wasn't updating and was stuck at -1ms, so I changed the update rate, but I may add more info/animations in the future. I'll try disabling it while building the second server and see if I get the same related issues.

You should also test this on the latest dev release

Yeah, I'll also try this and see if there is a difference.

Update: I attempted both latest dev releases

v1.2.3-10c8102
v1.2.3-95bc466

Both resulting in console spam

95bc466 log
[13:52:01 ERROR] [velocitab]: Failed to dispatch packet (is the client or server modded or using an illegal version?)
traxmc-proxy-1     | java.lang.NullPointerException: Cannot invoke "dev.simplix.protocolize.api.player.ProtocolizePlayer.sendPacket(Object)" because the return value of "dev.simplix.protocolize.api.providers.ProtocolizePlayerProvider.player(java.util.UUID)" is null
traxmc-proxy-1     |    at net.william278.velocitab.packet.ScoreboardManager.dispatchPacket(ScoreboardManager.java:57) ~[?:?]
traxmc-proxy-1     |    at net.william278.velocitab.packet.ScoreboardManager.lambda$updateRoles$4(ScoreboardManager.java:49) ~[?:?]
traxmc-proxy-1     |    at java.util.HashMap.forEach(HashMap.java:1421) ~[?:?]
traxmc-proxy-1     |    at net.william278.velocitab.packet.ScoreboardManager.updateRoles(ScoreboardManager.java:49) ~[?:?]
traxmc-proxy-1     |    at net.william278.velocitab.tab.PlayerTabList.lambda$updatePlayer$17(PlayerTabList.java:161) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.CompletableFuture.uniAcceptNow(CompletableFuture.java:757) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.CompletableFuture.uniAcceptStage(CompletableFuture.java:735) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.CompletableFuture.thenAccept(CompletableFuture.java:2182) ~[?:?]
traxmc-proxy-1     |    at net.william278.velocitab.tab.PlayerTabList.lambda$updatePlayer$18(PlayerTabList.java:157) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.ConcurrentLinkedQueue.forEachFrom(ConcurrentLinkedQueue.java:1037) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.ConcurrentLinkedQueue.forEach(ConcurrentLinkedQueue.java:1054) ~[?:?]
traxmc-proxy-1     |    at net.william278.velocitab.tab.PlayerTabList.updatePlayer(PlayerTabList.java:157) ~[?:?]
traxmc-proxy-1     |    at net.william278.velocitab.tab.PlayerTabList.lambda$updatePeriodically$21(PlayerTabList.java:198) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.ConcurrentLinkedQueue.forEachFrom(ConcurrentLinkedQueue.java:1037) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.ConcurrentLinkedQueue.forEach(ConcurrentLinkedQueue.java:1054) ~[?:?]
traxmc-proxy-1     |    at net.william278.velocitab.tab.PlayerTabList.lambda$updatePeriodically$22(PlayerTabList.java:197) ~[?:?]
traxmc-proxy-1     |    at com.velocitypowered.proxy.scheduler.VelocityScheduler$VelocityTask.lambda$run$1(VelocityScheduler.java:242) ~[velocity-3.2.0-SNAPSHOT-246.jar:3.2.0-SNAPSHOT (git-93b6376b-b246)]
traxmc-proxy-1     |    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
traxmc-proxy-1     |    at java.lang.Thread.run(Thread.java:833) [?:?]

10c8102 log
[13:56:23 ERROR]: Exception in task net.william278.velocitab.tab.PlayerTabList$$Lambda$1038/0x00000008012724a0@7e4897fd by plugin Velocitab
traxmc-proxy-1     | java.lang.ClassCastException: class java.lang.String cannot be cast to class java.util.List (java.lang.String and java.util.List are in module java.base of loader 'bootstrap')
traxmc-proxy-1     |    at net.william278.velocitab.config.Settings.getHeaderListSize(Settings.java:95) ~[?:?]
traxmc-proxy-1     |    at net.william278.velocitab.tab.PlayerTabList.getHeader(PlayerTabList.java:164) ~[?:?]
traxmc-proxy-1     |    at net.william278.velocitab.player.TabPlayer.sendHeaderAndFooter(TabPlayer.java:60) ~[?:?]
traxmc-proxy-1     |    at net.william278.velocitab.tab.PlayerTabList.lambda$updatePeriodically$21(PlayerTabList.java:196) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.ConcurrentLinkedQueue.forEachFrom(ConcurrentLinkedQueue.java:1037) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.ConcurrentLinkedQueue.forEach(ConcurrentLinkedQueue.java:1054) ~[?:?]
traxmc-proxy-1     |    at net.william278.velocitab.tab.PlayerTabList.lambda$updatePeriodically$22(PlayerTabList.java:194) ~[?:?]
traxmc-proxy-1     |    at com.velocitypowered.proxy.scheduler.VelocityScheduler$VelocityTask.lambda$run$1(VelocityScheduler.java:242) ~[velocity-3.2.0-SNAPSHOT-246.jar:3.2.0-SNAPSHOT (git-93b6376b-b246)]
traxmc-proxy-1     |    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
traxmc-proxy-1     |    at java.lang.Thread.run(Thread.java:833) [?:?]

Are you running multiple proxies? that may not be supported
Also, the second error is since you didn't regenerate your config file somewhere (you need to let it regenerate and fill it in again rather than copy+paste, as it's a new format)

Are you running multiple proxies?

Nope, just the one proxy

second error is since you didn't regenerate your config file

Yup, it makes sense, I fixed that.
Although, after setting update_rate: 0, I did not see an error on disconnect. After I re-enabled it, I started receiving the error again.

Error log again but is basically the same
[14:31:41 ERROR] [velocitab]: Failed to dispatch packet (is the client or server modded or using an illegal version?)
traxmc-proxy-1     | java.lang.NullPointerException: Cannot invoke "dev.simplix.protocolize.api.player.ProtocolizePlayer.sendPacket(Object)" because the return value of "dev.simplix.protocolize.api.providers.ProtocolizePlayerProvider.player(java.util.UUID)" is null
traxmc-proxy-1     |    at net.william278.velocitab.packet.ScoreboardManager.dispatchPacket(ScoreboardManager.java:57) ~[?:?]
traxmc-proxy-1     |    at net.william278.velocitab.packet.ScoreboardManager.updateRoles(ScoreboardManager.java:50) ~[?:?]
traxmc-proxy-1     |    at net.william278.velocitab.tab.PlayerTabList.lambda$updatePlayer$17(PlayerTabList.java:158) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.CompletableFuture.uniAcceptNow(CompletableFuture.java:757) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.CompletableFuture.uniAcceptStage(CompletableFuture.java:735) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.CompletableFuture.thenAccept(CompletableFuture.java:2182) ~[?:?]
traxmc-proxy-1     |    at net.william278.velocitab.tab.PlayerTabList.lambda$updatePlayer$18(PlayerTabList.java:154) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.ConcurrentLinkedQueue.forEachFrom(ConcurrentLinkedQueue.java:1037) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.ConcurrentLinkedQueue.forEach(ConcurrentLinkedQueue.java:1054) ~[?:?]
traxmc-proxy-1     |    at net.william278.velocitab.tab.PlayerTabList.updatePlayer(PlayerTabList.java:154) ~[?:?]
traxmc-proxy-1     |    at net.william278.velocitab.tab.PlayerTabList.lambda$updatePeriodically$21(PlayerTabList.java:195) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.ConcurrentLinkedQueue.forEachFrom(ConcurrentLinkedQueue.java:1037) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.ConcurrentLinkedQueue.forEach(ConcurrentLinkedQueue.java:1054) ~[?:?]
traxmc-proxy-1     |    at net.william278.velocitab.tab.PlayerTabList.lambda$updatePeriodically$22(PlayerTabList.java:194) ~[?:?]
traxmc-proxy-1     |    at com.velocitypowered.proxy.scheduler.VelocityScheduler$VelocityTask.lambda$run$1(VelocityScheduler.java:242) ~[velocity-3.2.0-SNAPSHOT-246.jar:3.2.0-SNAPSHOT (git-93b6376b-b246)]
traxmc-proxy-1     |    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
traxmc-proxy-1     |    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
traxmc-proxy-1     |    at java.lang.Thread.run(Thread.java:833) [?:?]

Using Version:  v1.2.3-https://github.com/WiIIiam278/Velocitab/commit/10c8102e5950b391345055ae08d97a1f84dd6e48

Does changing the update rate to like 100 make a difference for you? Update of 10 would be updating every 0.01 seconds could be updating to fast.

We might want to hardcode some sorta hard minimum to prevent garden pathing people into setting it to values that'll break the plugin, if that is the case

Okay, will probably need some null checking then


⚠ Bofrost.de has degraded performance

In 17ac447, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 914 ms

Resolved: Bofrost.de performance has improved in 948ce62 after 303 days, 21 hours, 13 minutes.


Sum(words)

Add api call to see number of words processed.  It could be a general usage report.  So, how about /usage as the url?

Also, make the index view redirect if there is a redirect url defined in djangollmapi.config file.


r-car: boot with ro instead of rw

I believe booting with ro will be safer than booting with rw, and it appears to work fine on both the M3 and the porter board.  This was discussed in the following thread:
https://lists.linuxfoundation.org/pipermail/automotive-discussions/2017-April/003968.html

(ping)


Update s3, sdk-core, sqs to 2.17.151

Updates

software.amazon.awssdk:s3
software.amazon.awssdk:sdk-core
software.amazon.awssdk:sqs

from 2.17.143 to 2.17.151.
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "software.amazon.awssdk" } ]

labels: library-update, early-semver-patch, semver-spec-patch, commit-count:1

Superseded by #452.