Leveraging Softmax IP with PyTorch models under Vitis-AI 3.0

Greetings,
I have working Vitis-AI v3.0 DPU images which include the Softmax IP. I have validated this using the 'xdputil query' command.
{
    "DPU IP Spec":{
        "DPU Core Count":2,
        "IP version":"v4.1.0",
        "generation timestamp":"2023-02-21 21-30-00",
        "git commit id":"7d32c41",
        "git commit time":2023022121,
        "regmap":"1to1 version"
    },
    "VAI Version":{
        "libvart-runner.so":"Xilinx vart-runner Version: 3.0.0-331ba47f80502ef2a1f37b3f7ce616b31c22e577 86 2023-01-02-21:50:29 ",
        "libvitis_ai_library-dpu_task.so":"Xilinx vitis_ai_library dpu_task Version: 3.0.0-1cccff04dc341c4a6287226828f90aed56005f4f 86 2023-01-02 14:31:50 [UTC] ",
        "libxir.so":"Xilinx xir Version: xir-9204ac72103092a7b253a0c23ec7471481656940 2023-01-02-21:49:01",
        "target_factory":"target-factory.3.0.0 860ed0499ab009084e2df3004eeb9ae710c26351"
    },
    "kernels":[
        {
            "DPU Arch":"DPUCZDX8G_ISA1_B4096_0101000077010407",
            "DPU Frequency (MHz)":300,
            "IP Type":"DPU",
            "Load Parallel":2,
            "Load augmentation":"enable",
            "Load minus mean":"disable",
            "Save Parallel":2,
            "XRT Frequency (MHz)":300,
            "cu_addr":"0x80010000",
            "cu_handle":"0xaaab0178f390",
            "cu_idx":0,
            "cu_mask":2,
            "cu_name":"DPUCZDX8G:DPUCZDX8G_1",
            "device_id":0,
            "fingerprint":"0x101000077010407",
            "name":"DPU Core 0"
        },
        {
            "DPU Arch":"",
            "cu_addr":"0x0",
            "cu_handle":"0x0",
            "cu_idx":1,
            "cu_mask":0,
            "cu_name":"sfm_xrt_top:sfm_xrt_top_1",
            "device_id":0,
            "fingerprint":"0x0",
            "name":"DPU Core 1"
        }
    ]
}

I have also experimented with this functionality using the 'plugin-smfc' capabilities described in https://github.com/Xilinx/Vitis-AI/tree/c55b7565bde608dd65dda94abea154ad7db4d594/src/vai_runtime/plugin-samples/samples/plugin-smfc. Using the following steps, i was able to compile the model for FPGA deployment:
cd Vitis-AI/src/vai_runtime/plugin-samples/
bash cmake.sh

wget https://www.xilinx.com/bin/public/openDownload?filename=tf_resnetv1_50_imagenet_224_224_6.97G_3.0.zip -O tf_resnetv1_50_imagenet_224_224_6.97G_3.0.zip
unzip tf_resnetv1_50_imagenet_224_224_6.97G_3.0.zip
cd tf_resnetv1_50_imagenet_224_224_6.97G_3.0/
cp ~/.local/Ubuntu.20.04.x86_64.Debug/lib/* .
vai_c_tensorflow -a arch.json -f quantized/quantized_baseline_6.96B_919.pb -o xmodel_SFM -n resnet_v1_50 --options '{"plugins": "plugin-smfc"}'

# I also compiled the model without the Softmax plugin, for comparison purposes.
vai_c_tensorflow -a arch.json -f quantized/quantized_baseline_6.96B_919.pb -o xmodel_basic -n resnet_v1_50

Using xdputil, it seems that the softmax layer is correctly deployed on the model compiled using plugin-smfc:
# xdputil xmodel xmodel_SFM/resnet_v1_50.xmodel --op "resnet_v1_50/predictions/Softmax"
xmodel:  resnet_v1_50.xmodel
op_name:  resnet_v1_50/predictions/Softmax
{
    "name" : "resnet_v1_50/predictions/Softmax",
    "type" : "softmax",
    "attrs" : {
        "device" : "SMFC",
        "axis" : -1,
        "workload" : 2999
    },
    "inputs" : [
        {
            "index" : 0,
            "op_name" : "resnet_v1_50/predictions/Reshape/aquant_fix2float",
            "tensor_name" : "resnet_v1_50/predictions/Reshape/aquant_fix2float",
            "shape" : [
                1,
                1000
            ],
            "data_type" : "float32"
        }
    ],
    "outputs" : {
        "op_name" : "resnet_v1_50/predictions/Softmax",
        "tensor_name" : "resnet_v1_50/predictions/Softmax",
        "shape" : [
            1,
            1000
        ],
        "data_type" : "float32",
        "attrs" : {}
    }
}

I have validated that the model using Softmax acceleration works on the FPGA:
# vaitrace --txt_summary xdputil benchmark resnet_v1_50_basic.xmodel -i -1 1
(...)
I1119 19:00:27.579262 23022 performance_test.hpp:85] thread-0 processes 5652 frames
I1119 19:00:27.579311 23022 performance_test.hpp:93] it takes 8758 us for shutdown
I1119 19:00:27.579334 23022 performance_test.hpp:94] FPS= 94.1832 number_of_frames= 5652 time= 60.0107 seconds.
(...)
INFO:root:Processing xmodel information
DPU Summary:
======================================================================================================================================
DPU Id      | Bat | DPU SubGraph                                 | WL    | SW_RT  | HW_RT  | Effic | LdWB   | LdFM  | StFM  | AvgBw
------------+-----+----------------------------------------------+-------+--------+--------+-------+--------+-------+-------+---------
DPUCZDX8G_1 | 1   | resnet_v1_50/block1/unit_1/bottleneck_v1/add | 6.985 | 10.334 | 10.284 | 55.3  | 25.688 | 4.809 | 3.829 | 3337.666
======================================================================================================================================

Notes:
"~0": Value is close to 0, Within range of (0, 0.001)
Bat: Batch size of the DPU instance
WL(Work Load): Computation workload (MAC indicates two operations), unit is GOP
SW_RT(Software Run time): The execution time calculate by software in milliseconds, unit is ms
HW_RT(Hareware Run time): The execution time from hardware counter in milliseconds, unit is ms
Effic(Efficiency): The DPU actual performance divided by peak theoretical performance,unit is %
LdFM(Load Size of Feature Map): External memory load size of feature map, unit is MB
LdWB(Load Size of Weight and Bias): External memory load size of bias and weight, unit is MB
StFM(Store Size of Feature Map): External memory store size of feature map, unit is MB
AvgBw(Average bandwidth): External memory average bandwidth. unit is MB/s
....

However, It seems that in this benchmark there is no performance uplift/benefit in using the Softmax IP in this scenario, compared to simply running the layer on the CPU. I'm not sure if this is to be expected...
# vaitrace --txt_summary xdputil benchmark resnet_v1_50_basic.xmodel -i -1 1
(...)
I1119 18:54:58.319209 22995 performance_test.hpp:85] thread-0 processes 5644 frames
I1119 18:54:58.319267 22995 performance_test.hpp:93] it takes 10319 us for shutdown
I1119 18:54:58.319289 22995 performance_test.hpp:94] FPS= 94.0475 number_of_frames= 5644 time= 60.0122 seconds.
(...)
INFO:root:Processing xmodel information
DPU Summary:
======================================================================================================================================
DPU Id      | Bat | DPU SubGraph                                 | WL    | SW_RT  | HW_RT  | Effic | LdWB   | LdFM  | StFM  | AvgBw
------------+-----+----------------------------------------------+-------+--------+--------+-------+--------+-------+-------+---------
DPUCZDX8G_1 | 1   | resnet_v1_50/block1/unit_1/bottleneck_v1/add | 6.985 | 10.334 | 10.284 | 55.3  | 25.688 | 4.809 | 3.829 | 3337.747
======================================================================================================================================

Notes:
"~0": Value is close to 0, Within range of (0, 0.001)
Bat: Batch size of the DPU instance
WL(Work Load): Computation workload (MAC indicates two operations), unit is GOP
SW_RT(Software Run time): The execution time calculate by software in milliseconds, unit is ms
HW_RT(Hareware Run time): The execution time from hardware counter in milliseconds, unit is ms
Effic(Efficiency): The DPU actual performance divided by peak theoretical performance,unit is %
LdFM(Load Size of Feature Map): External memory load size of feature map, unit is MB
LdWB(Load Size of Weight and Bias): External memory load size of bias and weight, unit is MB
StFM(Store Size of Feature Map): External memory store size of feature map, unit is MB
AvgBw(Average bandwidth): External memory average bandwidth. unit is MB/s
....
CPU OPs in Graph(called by GraphRunner):
========================================================================================================================
CPU SubGraph                                                    | OPs               | Device | Runs | AverageRunTime(ms)
----------------------------------------------------------------+-------------------+--------+------+-------------------
.../predictions/Reshape/aquant_resnet_v1_50/predictions/Softmax | fix2float|softmax | CPU    | 5648 | 0.107
========================================================================================================================

My biggest problem is that the previous workflow is suitable only for Tensorflow models. I am trying to deploy several Pytorch-based models on Vitis-AI. Some of them include Softmax layers, which i would like to accelerate using the aforementioned IP. I am able to compile them with the same workflow, replacing only the 'vai_c_tensorflow' compiler with the 'vai_c_xir' compiler. I have compiled 3 different versions for comparison purposes, as shown below:
vai_c_xir -a b4096x1_turbo.json -x quantize_result/FxModule_int.xmodel -o xmodel_basic
vai_c_xir -a b4096x1_turbo.json -x quantize_result/FxModule_int.xmodel -o xmodel_smfc --options '{"plugins":"plugin-smfc"}'
vai_c_xir -a b4096x1_turbo.json -x quantize_result/FxModule_int.xmodel -o xmodel_smfc_cpu --options '{"plugins":"plugin-smfc-cpu"}'
The 'basic' version runs fine, as expected:
vaitrace --txt_summary xdputil benchmark xmodel_basic/deploy.xmodel -i -1 1
(...)
I1119 19:39:05.369746 23230 performance_test.hpp:85] thread-0 processes 139 frames
I1119 19:39:05.369819 23230 performance_test.hpp:93] it takes 8053 us for shutdown
I1119 19:39:05.369843 23230 performance_test.hpp:94] FPS= 2.31628 number_of_frames= 139 time= 60.0101 seconds.
(...)
INFO:root:Processing xmodel information
DPU Summary:
=====================================================================================================================================
DPU Id      | Bat | DPU SubGraph                        | WL      | SW_RT   | HW_RT   | Effic | LdWB   | LdFM    | StFM    | AvgBw
------------+-----+-------------------------------------+---------+---------+---------+-------+--------+---------+---------+---------
DPUCZDX8G_1 | 1   | FxModule__BatchNormalization_0_bias | 125.218 | 193.405 | 193.300 | 52.7  | 35.776 | 311.320 | 259.750 | 3139.393
=====================================================================================================================================

Notes:
"~0": Value is close to 0, Within range of (0, 0.001)
Bat: Batch size of the DPU instance
WL(Work Load): Computation workload (MAC indicates two operations), unit is GOP
SW_RT(Software Run time): The execution time calculate by software in milliseconds, unit is ms
HW_RT(Hareware Run time): The execution time from hardware counter in milliseconds, unit is ms
Effic(Efficiency): The DPU actual performance divided by peak theoretical performance,unit is %
LdFM(Load Size of Feature Map): External memory load size of feature map, unit is MB
LdWB(Load Size of Weight and Bias): External memory load size of bias and weight, unit is MB
StFM(Store Size of Feature Map): External memory store size of feature map, unit is MB
AvgBw(Average bandwidth): External memory average bandwidth. unit is MB/s
....

CPU OPs in Graph(called by GraphRunner):
============================================================================================================================
CPU SubGraph                                                    | OPs                   | Device | Runs | AverageRunTime(ms)
----------------------------------------------------------------+-----------------------+--------+------+-------------------
...onv_50__input_fix_FxModule__FxModule_Softmax_Softmax_0__5239 | fix|fix2float|softmax | CPU    | 143  | 232.001
============================================================================================================================

The 'plugin-smfc-cpu' version fails to run.
# vaitrace --txt_summary xdputil benchmark xmodel_smfc_cpu/deploy.xmodel -i -1 1
sh: line 1: ldd: command not found
WARNING:root:[ldd --version] not exists, function tracer disabled
WARNING:root:No such file or directory: '/sys/kernel/debug/tracing/trace_clock'
WARNING:root:CPU function tracing feature is disabled
INFO:root:VART will run xmodel in [NORMAL] mode
INFO:root:Executable file: /usr/bin/xdputil
WARNING: Logging before InitGoogleLogging() is written to STDERR
F1119 19:45:10.695389 23278 tensor_imp.cpp:124] [UNILOG][FATAL][XIR_UNREGISTERED_ATTR][Unregistered attribute!] Attrs doesn't contain attribute fix_point
*** Check failure stack trace: ***
/usr/bin/xdputil: line 20: 23274 Aborted                 /usr/bin/python3 -m xdputil $*
APM Stop Collecting
WARNING: Logging before InitGoogleLogging() is written to STDERR
E1119 19:45:12.046698 23266 xdputil_query.cpp:196] Unsupported platform fingerprint: 0, cu_idx: 1
INFO:root:Generating ascii-table summary
ERROR:root:Xmodel info raw data empty

Even worse, the 'plugim-smfc' version fails to run and also locks up the DPU, as shown by the 'xdputil query' command that i tried to run immediatly afterwards:
# vaitrace --txt_summary xdputil benchmark xmodel_smfc/deploy.xmodel -i -1 1
sh: line 1: ldd: command not found
WARNING:root:[ldd --version] not exists, function tracer disabled
WARNING:root:No such file or directory: '/sys/kernel/debug/tracing/trace_clock'
WARNING:root:CPU function tracing feature is disabled
INFO:root:VART will run xmodel in [NORMAL] mode
INFO:root:Executable file: /usr/bin/xdputil
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1119 19:47:47.021991 23295 xrt_cu.cpp:212] cu timeout! device_core_idx 0  handle=0xffff8001e450 ENV_PARAM(XLNX_DPU_TIMEOUT) 10000 state 1 ERT_CMD_STATE_COMPLETED 4 ms 10010  bo=1 is_done 0
I1119 19:47:47.022105 23295 xrt_cu.cpp:112] Total: 10010245us   ToDriver:<PHONE_NUMBER>4717701us   ToCU: 0us       Complete: 0us   Done:<PHONE_NUMBER>us
F1119 19:47:47.022141 23295 sfm_control_xrt_edge.cpp:220] sfm timeout! core_idx = 0
*** Check failure stack trace: ***
/usr/bin/xdputil: line 20: 23292 Aborted                 /usr/bin/python3 -m xdputil $*
APM Stop Collecting
[ 8915.752630] [drm:zocl_command_ioctl [zocl]] *ERROR* KDS is in bad state
XRT build version: 2.14.0
Build hash: 43926231f7183688add2dccfd391b36a1f000bea
Build date: 2022-10-07 05:12:02
Git branch: 2022.2
PID: 23284
UID: 0
[Fri Nov 19 19:47:53 2021 GMT]
HOST:
EXE: /usr/bin/python3.9
[XRT] ERROR: unable to issue xclExecBuf
WARNING: Logging before InitGoogleLogging() is written to STDERR
F1119 19:47:53.660073 23284 xrt_bin_stream.cpp:159] [UNILOG][FATAL][VART_LOAD_XCLBIN_FAIL][Bitstream download failed!]
*** Check failure stack trace: ***
Aborted

# xdputil query
[ 8954.857956] [drm:zocl_command_ioctl [zocl]] *ERROR* KDS is in bad state
XRT build version: 2.14.0
Build hash: 43926231f7183688add2dccfd391b36a1f000bea
Build date: 2022-10-07 05:12:02
Git branch: 2022.2
PID: 23301
UID: 0
[Fri Nov 19 19:48:32 2021 GMT]
HOST:
EXE: /usr/bin/python3.9
[XRT] ERROR: unable to issue xclExecBuf
WARNING: Logging before InitGoogleLogging() is written to STDERR
F1119 19:48:32.764775 23301 xrt_bin_stream.cpp:159] [UNILOG][FATAL][VART_LOAD_XCLBIN_FAIL][Bitstream download failed!]
*** Check failure stack trace: ***
/usr/bin/xdputil: line 20: 23301 Aborted                 /usr/bin/python3 -m xdputil $*

What is the correct way to leverage the Softmax IP with Pytorch models under Vitis-AI 3.0?

you can refer to the sample here:
https://github.com/Xilinx/Vitis-AI/blob/c55b7565bde608dd65dda94abea154ad7db4d594/src/vai_runtime/vart/softmax-runner/test/resnet_v1_50_softmax/resnet_v1_50_tf.cpp

Sorry for the late reply. The example you mention leverages a Tensorflow model... is it possible to leverage the Softmax IP using a PyTorch-only deployment? Thank you.

yes.  Both are supported.


identify function

bc.. In revision 758 >>> a = identify(0.521, ['pi', 'e'], tol=1e-4, full=True)

a[0]
'pi*((12-sqrt(0))/72)'

p. Original issue for "#140":https://github.com/fredrik-johansson/mpmath/issues/140: "http://code.google.com/p/mpmath/issues/detail?id=100":http://code.google.com/p/mpmath/issues/detail?id=100
p. Original author: "https://code.google.com/u/107755593449647463741/":https://code.google.com/u/107755593449647463741/
p. Original owner: "https://code.google.com/u/107755593449647463741/":https://code.google.com/u/107755593449647463741/

closed as duplicate of #236


Assert response data without doing actual request.

Hello, I have following situation:
In play2.5 framework i can test controller simulating request. So I am not actually doing it,
but create an appropriate object and fill with necessary payload. And then I got response,
with body and headers, etc. And I don't have running web server.
For testing response JSON I supposed to used RestAssured library, but seems to be
to make it work correctly I have to do actual http requests, and can't just provide payload.
So my question is: is there any way to use rest-assured without doing actual http requests,
and getting String/JSON as input for doing assertion?  If yes, could you provide some samples?
Thank you!

For testing response JSON I supposed to used RestAssured library, but seems to be
to make it work correctly I have to do actual http requests, and can't just provide payload.

The whole purpose if REST Assured is to do actual HTTP requests. If you only want to validate JSON should only depend on the json-path project.


Add the translation of zh-CN.

Translate the given files according to rules.
Meanwhile I fixed a misspelled word. Also found images' URL is no longer valid.

Thank you!


Item Stand will not allow Building pipette

If any structure has an item stand on it, you can not pickup the building/structure. Is there a fix for this?

stand can copy itself, but if attached to object - cant.
fragment from log:
[Error  : Unity Log] NullReferenceException: Object reference not set to an instance of an object
Stack trace:
kg.ValheimEnchantmentSystem.Enchantment_VFX+ItemStand_SetVisualItem_Patch.Postfix (ItemStand __instance, System.Boolean __state) (at :0)

I think should work ok.


update epel_release for centos 7

Short description:
I found the following issue(s) or bug(s):

Fail to download and enable epel repository definitions, return 404 error.

And/OR
I found that the following enhancement is worthwhile:

The epel release has been updated to epel-release-7-7.noarch.rpm in 6/4/2016.

Bookkeeping
I did the following bookkeeping:

[ ] If a major change, bumped the playbook version in vars/
[ ] Added as much documentation as I could (we're not looking a book, just enough to help others)
[x] Confirmed that the PR works by running the vagrant tests (if any) and/or added to the tests (see ci/ or legacy tests/)
[ ] Followed up with any automated test results as a result of the pull request

If a major change, bumped the playbook version in vars/

please bump version

Hi @ernestas-poskus,
The version has been bumped to 0.3.9 due to an existing release v0.3.8.
Thanks!

Thank you for contribution


chore(main): release 2.0.0

:robot: I have created a release beep boop
2.0.0 (2024-01-12)
⚠ BREAKING CHANGES

add ability to specify regex (#20)

Features

add ability to only trigger on new members (#23) (29a9ef5)
add ability to specify regex (#20) (ff28c63)
add welcome warning feature (#25) (cbdc4ab)
change reply to embed reply (#22) (847fe17)

Bug Fixes

ensure internal links don't trigger warnings (#24) (0039713)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/rickstaa/warnings-discord-bot/releases/tag/v2.0.0 :sunflower:


Merge the EPSILONE definitions in the normal_ and normal_fill_16 func…

translates to English as "There are multiple definitions of EPSILONE in rand.h, and their values can be merged

it's ok


golang stack

@neeraj-laad
I am willing to do the golang stack work. Could you provide some guide how I can create, build, test and release a stack?

Hi @qibobo - thanks for showing an interest in this :) you can use the guidance here https://appsody.dev/docs/stacks/create as well as the sample stack https://github.com/appsody/stacks/tree/master/samples/sample-stack. We also have the 'stack_providers' channel in slack if you'd like to discuss more there.

I've developed two go-based stacks already and I've certainly willing to contribute them to the stack repo if that's what's desired.. Check them out by adding a new repo from here.

@jpapejr  thank you.

Just to make sure I'm looking at the right guidelines, would someone mind posting the stack submission requirements here pls?

Just submitted a PR for my two go stacks https://github.com/appsody/stacks/pull/425


[RR Request]: financeager v1.0

Open Source Project name
financeager
What is your project?
financeager is an application that helps you administering your daily expenses and earnings using single-entry book-keeping. Interact via the command line interface fina.
Version
1.0.0
Date
Jan 28, 2022
Description of breaking changes

removed conversion command
update semantics for filtering a list of entries

GitHub Repo
https://github.com/pylipp/financeager
Website
https://github.com/pylipp/financeager
Link to changelog
https://github.com/pylipp/financeager/releases/tag/v1.0.0
Social media
https://www.reddit.com/r/Python/comments/sey9j6/released_v100_of_financeager_a_singleentry/
Anything else to add?
Currently on v1.0.3 including some bug fixes of v1.0.0

Thanks for submitting. Sorry we couldn't include your project in the January 2022 Release Radar, as that had already shipped. Please definitely submit again for version 2.0 and we'd love to consider your project 😄


not an issue but

how did you figure out the things in settings and stuff? most of it is booleans and random numbers

It's been a while so I don't remember my exact steps, but it was something along the lines of just changing things and seeing what happened. You might be able to figure out what does what by digging through the mkxp-oneshot code, though it'd be a lot to read through.


Figure out what can be done about name collisions between elements and attributes

Might be nice to have a non-breaking strategy going forward, if new nodes are added to the HTML spec.
Ideas:

Select the most used one as the "main" one, and suffix the other. E.g. TitleEl and Title
Keep the current scheme, where all collisions have a suffix: TitleEl and TitleAttr (would mean a breaking change on each new one)

I prefer the first option, because:

It is easy to make backwards-compatible.
We can just deprecate TitleXXX (either TitleEl or TitleAttr, depending on which one is chosen as the "main" one), but keep it around, and point to Title and TitleYYY (the other one) in the documentation. Thus, nothing would break, and no translation is needed. Old code can keep using TitleXXX, new code can use Title.

It is forwards-compatible, as you pointed out.

It looks nicer, and is more consistent with all of the other nodes. There is just less noise.

I just think it is important to be consistent. Title should always be the same thing, either TitleAttr or TitleEl. It should not alternate between different titles (XXX = XXXEl and YYY = YYYEl NOT XXX = XXXEl and YYY = YYYAttr). I assume that is what you meant by

Select the most used one as the "main" one

but I just wanted to clarify this.

@Hendrikto those are great points! Good idea about the deprecation, I hadn't thought about that we don't actually need to do a breaking change.
I would prefer:

TitleEl and Title
Form and FormAttr
DataEl and Data

Not sure about Style. Both options kinda suck. 😄

Maybe a slight preference towards StyleEl and Style, because the latter is arguably used more often.

See #174 for the chosen solution for this.


Install

Installation mentions a 1.0 release but there is no release to be found.
Also, consider making install instructions composer require phpextra/sorter instead of suggesting editing the json file.

Hello. dev-master is an alias for 1.0.x-dev. Try to change the minimum stability flag and it should work (see https://packagist.org/packages/phpextra/sorter).

@jkobus yes, but then you should suggest at the very least composer require phpextra/sorter:~1.0@dev. No need to lower the minimum stability as its not recommended, better to make exceptions for specific packages.


Migrate (federated | delayed) connection.is_physical to ENUM

Similar to my feedback on the Action.is_physical I also updated the DelayedConnection and FederatedConnection to use an ENUM instead of the is_physical boolean.
I am not sure if maybe the Kotlin Compiler needs to be adapted to this and I am not confident in that area yet, so I left it out for now

Great, for now I disable the LF tests because we wont waste time working on the code-generator until the APIs have stabilized


Region detection improvements

See the discussion here:
https://github.com/batocera-linux/batocera-emulationstation/issues/1686

It's a bad solution to use getString("ThemeRegionName") in the extractLang method, most themes don't use/define regions. It would work with a very limited number of themes.

I totally get what you are saying. I was trying to make use of the existing options etc. so as to avoid having the user specify a preferred Region --> since this is sort of already specified in the GUI Options -- at least when I was testing -- but I am not that familiar with too many themes.. etc.
Having the check for the locale actually resolves all my test issues where I was running into this problem i.e. 1080 Snowboarding (Japan, USA) (En,Ja)
The locale check would make it pick USA over Japan for me or vice versa but I anticipated cases where there could be both USA and Europe in the region list.. which is possible in the nointro naming scheme.. Then the locale specification wouldn't be enough to differentiate.. whereas the themeregion settings which I saw in the GUI options on Batocera would...
in es-core/src/ThemeData.cpp
there is a check and a default region used:
mRegion = Settings::getInstance()->getString("ThemeRegionName");
if (mRegion.empty()) mRegion = "eu";

Maybe having a similar check to handle this case would improve the code.
I need to have a look at how Batocera treats this ThemeRegion setting when using different themes --> if the setting is still under GUI Options.. then it should work fine --> but should still have the check for if its empty, then dont use it (i.e. falling back on the locale specification only)
I appreciate your feedback --> I'll look more into it later tonight or tomorrow.
Just thought I would respond indicating my thoughts on it in case you had any further feedback or suggestions.. I mean, ultimately we could make a distinct option for region preference specification that could be used.. but I thought it would be better to piggy back on the existing options if possible... maybe.

I don't think it's necessary to add a new option for the "prefered region". It's already possible to deduct the region based on "system.language". Creating a table of regions for this value should be enough ( en_GB : it's Europe... en or empty is US. pt_PT is Europe. pt_BR is brazil, eu_ES is europe, es_MX is south america... )
In my POV, Either :

You make it simple and extract the user's region from the system.language value, then import the best region based on this data when you have multiple regions.
Either you import every possible regions into a comma delimited string ( or ; ). In that case, it required some other changes in the code : the region flag image is to be computed : either it's the best calculated one (using ThemeRegion) or the one from system.language, either the first one.

You make it simple and extract the user's region from the system.language value, then import the best region based on this data when you have multiple regions.

Either you import every possible regions into a comma delimited string ( or ; ). In that case, it required some other changes in the code : the region flag image is to be computed : either it's the best calculated one (using ThemeRegion) or the one from system.language, either the first one.

I think storing all the possible regions into a comma delimited string is the better solution simply for completeness; however, just importing the best region using the locale info is still an improvement and more than "good enough" in my opinion...

With French language (and many others), getSystemRegion returns an empty string, so your code is not working with many regions.

With French language (and many others), getSystemRegion returns an empty string, so your code is not working with many regions.

its been a minute since I looked at this.. so I'll need to confirm what I'm writing here..
but getSystemRegion only needs to handle those regions where languages could correspond to multiple regions or where the region cannot be immediately determined from the language.
With Korea the issue is Kr vs. Ko etc. and with Portugeses it can be either Brazil or European depending on pt_PT, or pt_BR
For example, with French, the langData specification specifies Europe as the region for language fr.
this is taken care of in the second branch of the if statement:
						if ((region != systemRegion) && langData.region == systemRegion)
						{
							region = langData.region;
							}
						else if (((region != systemRegion) || systemRegion.empty()) && (langData.lang == systemLang))
						{
							region = langData.region;
						}

for example, with english(us) vs. english(gb) just the language is not enough to determine the region.. therefore getSystemRegion needs to handle that.. with fr_Fr, just the language fr is enough to determine the region in langData.
The idea is that getSystemRegion doesn't need to be exhuastive.. if it returns an empty string, it all still works.. because the systemLang is used instead.
For example, French should still all work as expected.. I think.. as i said its been a while so I will look more into it at some point.

With French language (and many others), getSystemRegion returns an empty string, so your code is not working with many regions.

its been a minute since I did this --> however, the fact that it returns an empty string for many cases is intended... as the code fallse back on systemLanguage if systemRegion is empty... In most cases, the proper region can be deduced from the language and is already specified in langData --> however, in some cases, like english the preferred region cannot be determined.. i.e. is it eu or us?
in those cases, it is necessary... having said that.. I will commit a few changes that will make the code more complete although functionally won't change anything..

The code now basially will implement every region/language combination as specified in:
es-app/src/guis/GuiMenu.cpp

Now, getSystemRegion returns "_fr", so it will probably never work for every language except for "gb", "pt" and "es"...
Also, getSystemLang has no default "return".
You also don't need to "else" a condition that performs a "return".
Testing your code with about 20000 filesnames, I have NO case where the code reaches one of your new assignements with most languages ( fr, it, de... ) and I have only one case with US english.
Can you provide a list of working test cases ?

Now, getSystemRegion returns "_fr", so it will probably never work for every language except for "gb", "pt" and "es"... Also, getSystemLang has no default "return". You also don't need to "else" a condition that performs a "return".
Testing your code with about 20000 filesnames, I have NO case where the code reaches one of your new assignements with most languages ( fr, it, de... ) and I have only one case with US english.
Can you provide a list of working test cases ?

in the most recent commit be fore your comment I neglected to strip off the leading _ in the language which is the reason for the _fr which is why most of your tests hit the new assignments.
I since pushed 2 commits. First stipping off the leading _ and a subsequent one that better handles regions like Fr etc.
Below are examples of the types of cases, I personally aimed to fix:
1080 Snowboarding (Japan, USA) (En,Ja)
Without my code, region is Japan (first/only hardRegion detected).
With my code hardRegion USA is also detected:
In the case of English(US), USA is selected based on matching systemRegion (first branch of if statement).
In the case of English(UK), USA is selected based on matching systemLang (second branch of if statement)
For other locales like French, neither the region or language match so the behavior is unchanged from without my code. i.e. region is Japan which was the first one found.
Alex Kidd in Miracle World (USA, Europe, Brazil) (En) (Rev 1)
Without my code, region is USA (first/only hardRegion detected).
With my code hardRegions Europe and Brazil are also detected:
In the case of English(US), USA will be selected based on matching systemRegion
In the case of English(UK) Europe will be selected based on matching systemRegion
In the case of pt_BR, Brazil will be selected
For other locales like French, Europe will be selected based on matching systemRegion (note the systemRegion is adjusted based on langData.region) - since fr_Fr for the locale doesn't actually specify EU; however, for langData matching fr the langData.region is Eu.
The master system actually had many other examples similar to the last one.. but for the n64 the 1080 snowboarding is the only one I initially had an issue with...

I cleaned up the code a bit.. as I dont really see a need to have functions getSystemLang or getSystemRegion etc. i.e. basically it is just splitting the string at _ and the first part if the language, second part is the region and then the region needs to be adjusted based on the langData's used in the existing region detection code.

The code is alot simpler now and it now implements cases like fr corresponding to eu properly which I had previously overlooked.

The code is alot simpler now and it properly implements cases like fr corresponding to eu properly which I had previously overlooked.
I appreciate your feedback. It had been a minute since I originally did this, but your comments/feedback made me re-evaluate how it was implemented.. Hopefully it makes more sense now.
I am writing up a test suite.. so stay tuned for that...
EDIT: also --> the code handles the case where the system locale is for example English(UK) and the romname is romName (Japan, USA)... region US will be chosen not because the systemRegion matches directly but because no direct systemRegion match was found but USA corresponds to english which does match the system language..
small test suite coming soon --> just writing/verifying it now... will post again soon.

Test rom files:
romName1 (Japan, USA).ext
romName2 (Japan, USA, Europe, Brazil).ext
romName3 (Japan, Brazil, Europe).ext
Before the code changes, all of these would set region to Japan regardless of System Locale.
SystemLocale --> English(US) --> en_US
romName1 (Japan, USA).ext ---> region ==> USA
romName2 (Japan, USA, Europe, Brazil).ext ---> region ==> USA
romName3 (Japan, Brazil, Europe).ext ---> region ==> Europe
systemLocale --> English(UK) --> en_GB
romName1 (Japan, USA).ext ---> region ==> USA
romName2 (Japan, USA, Europe, Brazil).ext ---> region ==> Europe
romName3 (Japan, Brazil, Europe).ext ---> region ==> Europe
systemLocale --> FRANÇAIS--> fr_FR
romName1 (Japan, USA).ext ---> region ==> Japan
romName2 (Japan, USA, Europe, Brazil).ext ---> region ==> Europe
romName3 (Japan, Brazil, Europe).ext ---> region ==> Europe
systemLocale --> Japanese --> ja_JP
romName1 (Japan, USA).ext ---> region ==> Japan
romName2 (Japan, USA, Europe, Brazil).ext ---> region ==> Japan
romName3 (Japan, Brazil, Europe).ext ---> region ==> Japan
systemLocale --> PORTUGUÊS BRASILEIRO--> pt_BR
romName1 (Japan, USA).ext ---> region ==> Japan
romName2 (Japan, USA, Europe, Brazil).ext ---> region ==> Brazil
romName3 (Japan, Brazil, Europe).ext ---> region ==> Brazil
systemLocale --> PORTUGUÊS PORTUGAL--> pt_PT
romName1 (Japan, USA).ext ---> region ==> Japan
romName2 (Japan, USA, Europe, Brazil).ext ---> region ==> Europe
romName3 (Japan, Brazil, Europe).ext ---> region ==> Europe


Set bgcolor on mj-group table

This is to fix outlook 2016 bug. I have no idea why but it just ignore background-color at top div.

Looks good to me, need to try it on EOA to see if everything is fine 👍 for the PR

@iRyusa thanks, i added small check for background color 'none' also.

Thank you I was looking for a solution for this.  Hoping this gets merged soon.


is it ssr?

is it server-side rendering?  i don't know yet react (ssr) so i asked :|

Yes, this is 100% Server-Side Rendered


[Style] Enhance 5 Band Resistance Calculator UI

What's the style idea?
I intend to fix the :

Primitive UI styling -  As the UI doesn't look appealing since it uses primitive HTML Styling.
Need for scrolling and fitting the whole into the viewport -  Currently the users will have to Scroll down in order to view the full
features / options.  I intend to remove this by fixing the alignment and thereby ensuring a user friendly experience

Checklist

[X] I have checked the existing issues.
[X] I follow Contributing Guidelines of this project.
[X] I am a GSSOC'24 contributor.
[ ] I am a IWOC'24 contributor.
[ ] I am a JWOC'24 contributor.
[ ] I am a SWOC'24 contributor.

Code of Conduct

[X] I agree to follow this project's "Code of Conduct".

@Rakesh9100  please have a look at this

@Rakesh9100 Please Assign me the issue.

UI is already looking cool, what enhancements do you want to do @AnandK-pm

As i stated in the second point of the issue :
"Need for scrolling and fitting the whole into the viewport - Currently the users will have to Scroll down in order to view the full
features / options". I intend to remove this by fixing the alignment and thereby ensuring a user friendly experience

Okay proceed @AnandK-pm


Disaster recovery / hard fork data requirements

[From discussion of May 7, 2020]
What data do we need to save / restore when there's a disaster?
For purposes of this issue, a disaster is when the network no longer functions, because, say, many nodes are crashing, or the network is badly forked
Related issues:

which block to start from, and from which machine

picking a block from an O(1) machine violates the spirit of decentralization
most recently finalized block?
last block in strongest chain?
do we need to change the genesis timestamp, or have another timestamp at the point of recovery?
can constants change (chain strength) at the point of recovery?

Required data:

root block to start from
root SNARK
SNARKed ledger
root history (window of 2*k blocks preceding root)
2 epoch ledgers

Optional data, not for MVP:

transactions in best tip blocks beyond root
SNARK pool
Note: these would allow trying to get those pending transactions into the consensus

If restoration from saved state fails, we could use a strategy of replaying blocks from an archive node. That's computationally expensive, and a last resort.
We'd need a bespoke tool for this purpose.
Related PRs:

#4115

Related issues:

#4859

The saved state consists of several pieces. Do we need to make sure they're synched with one another? Do we need a recovery-state type to account for these pieces?

Can we sketch the algorithm to load the recovery components?
For example, we have components related to the root. What data structures in the existing implementation would be instantiated from those components?

The needed state should be dumped using a CLI client command.
Design goal: the daemon should load after a hard fork just as it does normally.
Either the CLI command will create the needed genesis information, or the command can dump just the raw state, and a tool will transform that data into genesis information.

The epoch ledgers that we store are valid for the best tip. The root could be in the previous epoch and therefore the current epoch ledgers will not be valid anymore. @ghost-not-in-the-shell is working on epoch ledger where checkpoints are added to the snarked ledger for the two epoch ledgers staking_epoch_snapshot and next_epoch_snapshot. We will need to add another checkpoint previous_epoch_snapshot which is the staking_epoch_snapshot for the previous epoch (the epoch root could be in)
When we save the data for hard fork/disaster recovery, if the root is in a different epoch that the best tip then, the two epoch ledgers that we need would be previous_epoch_snapshot and staking_epoch_snapshot that will change to staking_epoch_snapshot and next_epoch_snapshot respectively, when we restart the network. Otherwise, we use the staking_epoch_snapshot and next_epoch_snapshot as is.

Regarding proofs, we need to be able to verify the proof of the block that we start from. If the keys don't change then it is straightforward. We might need two copies of the constants since genesis timestamp might have to be reset otherwise there would be quite a few empty slots.
If they keys change, then we need a mechanism (store all the required keys?) to verify older proofs (both blockchain and transaction snarks). There is a section in https://github.com/CodaProtocol/coda/pull/3990 about transitioning parallel scan, could be a possible solution.

There may be outstanding questions that come out when the RFC is started...

Blockchain transition RFC is out for review with discussion on the best approach to take.  @psteckler  is going to summarize and have a discussion about the proposed approach


aarch64: user stack of child being modified after clone

The logs I added before and after clone indicates that the user stack is changed when I start nginx container on arm64.
@@ -423,6 +427,25 @@ pub fn SysClone(task: &mut Task, args: &SyscallArguments) -> Result<i64> {
         tls = args.arg3;
         cTid = args.arg4;
     }
+
+    let sp = task.GetPtRegs().get_stack_pointer();
+    let stack_bottom = Addr(sp).RoundUp()?.0;
+    let len = (stack_bottom - sp) as usize;
+    let ptr = sp as *const u8;
+    let buf = unsafe { slice::from_raw_parts(ptr, len) };
+    error!("Before clone, the sp is {:x}", sp);
+    let mut start = 0;
+    loop {
+        let mut end = start + 100;
+        if end > len {
+            end = len;
+        }
+        error!("buffer {}-{}: {:x?}", start, end, &buf[start..end]);
+        if end == len {
+            break;
+        }
+        start = end;
+    }

 #[inline]
 pub fn child_clone(userSp: u64) {
+    debug!("=========child clone: {:x}", userSp);
     let currTask = Task::Current();
     CPULocal::SetUserStack(userSp);
     CPULocal::SetKernelStack(currTask.GetKernelSp());

+    let stack_bottom = Addr(userSp).RoundUp().unwrap().0;
+    let len = (stack_bottom - userSp) as usize;
+    let ptr = userSp as *const u8;
+    let buf = unsafe { slice::from_raw_parts(ptr, len) };
+    error!("After clone, the sp is {:x}", userSp);
+    let mut start:usize = 0;
+    loop {
+        let mut end = start + 100;
+        if end > len {
+            end = len;
+        }
+        error!("buffer {}-{}: {:x?}", start, end, &buf[start..end]);
+        if end == len {
+            break;
+        }
+        start = end;
+    }
+

Before clone:
[ERROR] [1/43c0140000|0] Before clone, the sp is 7fbcab25e7c0
[INFO] [1/772070] hypecall: 8, paras: 43c015dc58 0 0 0
[ERROR] [1/43c0140000|0] buffer 0-100: [0, e9, 25, ab, bc, 7f, 0, 0, 60, ab, b1, 4e, e8, d, 0, 0, d8, 8, b4, 4e, e8, d, 0, 0, d0, 18, b4, 4e, e8, d, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, a8, 8, b4, 4e, e8, d, 0, 0, a0, f9, b3, 4e, e8, d, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, a0, e9, 25, ab, bc, 7f, 0, 0, f0, d0, b3, 4e, e8, d, 0, 0, 0, 0, 0, 0]
[INFO] [1/772183] hypecall: 8, paras: 43c015dc58 0 0 0
[ERROR] [1/43c0140000|0] buffer 100-200: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, b0, e8, 25, ab, bc, 7f, 0, 0, ac, f0, a, 9b, 54, 2b, 0, 0, 0, 0, 1c, 9b, 54, 2b, 0, 0, 20, 6, 0, 9b, 54, 2b, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 60, 1c, 9b, 54, 2b, 0, 0, 78, 6, 0, 9b, 54, 2b, 0, 0, 7c, d3, b3, 4e, e8, d, 0, 0, 38, fa, b3, 4e, e8, d, 0, 0, d0, f5, b3, 4e, e8, d, 0, 0]
[INFO] [1/772294] hypecall: 8, paras: 43c015dc58 0 0 0
[ERROR] [1/43c0140000|0] buffer 200-300: [a0, f7, b3, 4e, e8, d, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, f0, b3, 4e, e8, d, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, f0, e8, 25, ab, bc, 7f, 0, 0, c, b6, b1, 4e, e8, d, 0, 0, d0, 18, b4, 4e, e8, d, 0, 0, 0, f0, b3, 4e, e8, d, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, a0, f9, b3, 4e, e8, d, 0, 0, 0, d0, b3, 4e]
[INFO] [1/772406] hypecall: 8, paras: 43c015dc58 0 0 0
[ERROR] [1/43c0140000|0] buffer 300-400: [e8, d, 0, 0, 0, e9, 25, ab, bc, 7f, 0, 0, 0, f9, ca, 86, e8, 97, f5, 48, 30, e9, 25, ab, bc, 7f, 0, 0, c0, 37, b1, 4e, e8, d, 0, 0, d8, 8, b4, 4e, e8, d, 0, 0, ff, ff, ff, ff, 0, 0, 0, 0, c8, 8, b4, 4e, e8, d, 0, 0, d0, 18, b4, 4e, e8, d, 0, 0, c0, e9, 25, ab, bc, 7f, 0, 0, 14, 34, b1, 4e, e8, d, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, c8, 8, b4, 4e, e8, d, 0, 0]
[INFO] [1/772519] hypecall: 8, paras: 43c015dc58 0 0 0
[ERROR] [1/43c0140000|0] buffer 400-500: [2, 0, 0, 0, 0, 0, 0, 0, 10, ea, 25, ab, bc, 7f, 0, 0, a0, f9, b3, 4e, e8, d, 0, 0, 0, d0, b3, 4e, e8, d, 0, 0, 9c, d3, b3, 4e, e8, d, 0, 0, 38, fa, b3, 4e, e8, d, 0, 0, d0, f5, b3, 4e, e8, d, 0, 0, a0, f7, b3, 4e, e8, d, 0, 0, c0, e9, 25, ab, bc, 7f, 0, 0, 18, 33, b1, 4e, 2, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, c8, 8, b4, 4e, e8, d, 0, 0, 4, 0, 0, 0]
[INFO] [1/772632] hypecall: 8, paras: 43c015dc58 0 0 0
[ERROR] [1/43c0140000|0] buffer 500-600: [5, 0, 0, 0, 0, f9, ca, 86, e8, 97, f5, 48, 30, ea, 25, ab, bc, 7f, 0, 0, 28, 35, b1, 4e, e8, d, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 40, 6, b4, 4e, e8, d, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, ea, 25, ab, bc, 7f, 0, 0, a0, f9, b3, 4e, e8, d, 0, 0, 0, d0, b3, 4e, e8, d, 0, 0, 9c, d3, b3, 4e, e8, d, 0, 0, 18, 33, b1, 4e, e8, d, 0, 0, 70, 16, b4, 4e, e8, d, 0, 0]
[INFO] [1/772745] hypecall: 8, paras: 43c015dc58 0 0 0
[ERROR] [1/43c0140000|0] buffer 600-700: [18, 17, b4, 4e, e8, d, 0, 0, 58, 1, 0, 0, 0, 0, 0, 0, 0, f9, ca, 86, e8, 97, f5, 48, a0, ea, 25, ab, bc, 7f, 0, 0, 14, 34, b1, 4e, e8, d, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 6, b4, 4e, e8, d, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, f0, ea, 25, ab, bc, 7f, 0, 0, a0, f9, b3, 4e, e8, d, 0, 0, 0, d0, b3, 4e, e8, d, 0, 0, 9c, d3, b3, 4e, e8, d, 0, 0, 18, 33, b1, 4e]
[INFO] [1/772861] hypecall: 8, paras: 43c015dc58 0 0 0
[ERROR] [1/43c0140000|0] buffer 700-800: [e8, d, 0, 0, 70, 16, b4, 4e, e8, d, 0, 0, 18, 17, b4, 4e, e8, d, 0, 0, 58, 1, 0, 0, 0, 0, 0, 0, 0, f9, ca, 86, e8, 97, f5, 48, 10, eb, 25, ab, bc, 7f, 0, 0, d0, b2, b1, 4e, e8, d, 0, 0, 80, eb, 25, ab, bc, 7f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, a0, f9, b3, 4e, e8, d, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ec, f5, b3, 4e, e8, d, 0, 0]
[INFO] [1/772995] hypecall: 8, paras: 43c015dc58 0 0 0
[ERROR] [1/43c0140000|0] buffer 800-900: [9c, d3, b3, 4e, e8, d, 0, 0, 38, fa, b3, 4e, e8, d, 0, 0, 70, 16, b4, 4e, e8, d, 0, 0, 18, 17, b4, 4e, e8, d, 0, 0, 58, 1, 0, 0, 0, 0, 0, 0, 0, f9, ca, 86, e8, 97, f5, 48, a0, eb, 25, ab, bc, 7f, 0, 0, 3c, 16, b1, 4e, e8, d, 0, 0, d0, f9, b3, 4e, e8, d, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 88, bb, b3, 4e, e8, d, 0, 0, 80, 14, b1, 4e, e8, d, 0, 0, a8, ed, 25, ab]
[INFO] [1/773110] hypecall: 8, paras: 43c015dc58 0 0 0

[ERROR] [1/43c01a0000|0] After clone, the sp is 7fbcab25e7c0
[INFO] [1/1338813] hypecall: 8, paras: 43c01bf4b0 0 0 0
[ERROR] [1/43c01a0000|0] buffer 0-100: [ff, ff, ff, ff, 0, 0, 0, 0, b0, e9, 25, ab, bc, 7f, 0, 0, 7c, d3, b3, 4e, e8, d, 0, 0, 48, 9, b4, 4e, e8, d, 0, 0, a0, e9, 25, ab, bc, 7f, 0, 0, f0, d0, b3, 4e, e8, d, 0, 0, a0, e9, 25, ab, bc, 7f, 0, 0, f8, 8, b4, 4e, e8, d, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, a0, e9, 25, ab, bc, 7f, 0, 0, f0, d0, b3, 4e, e8, d, 0, 0, e8, 8, b4, 4e]
[INFO] [1/1338926] hypecall: 8, paras: 43c01bf4b0 0 0 0
[ERROR] [1/43c01a0000|0] buffer 100-200: [e8, d, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, c8, 8, b4, 4e, e8, d, 0, 0, d0, 18, b4, 4e, e8, d, 0, 0, ff, ff, ff, ff, 0, 0, 0, 0, b0, e9, 25, ab, bc, 7f, 0, 0, 7c, d3, b3, 4e, e8, d, 0, 0, 48, 9, b4, 4e, e8, d, 0, 0, a0, e9, 25, ab, bc, 7f, 0, 0, f0, d0, b3, 4e, e8, d, 0, 0, 1, 0, 0, 0, e8, d, 0, 0, 38, fa, b3, 4e, e8, d, 0, 0, d0, f5, b3, 4e, e8, d, 0, 0]
[INFO] [1/1339041] hypecall: 8, paras: 43c01bf4b0 0 0 0
[ERROR] [1/43c01a0000|0] buffer 200-300: [a0, f7, b3, 4e, e8, d, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4f, ef, 25, ab, bc, 7f, 0, 0, f8, 8, b4, 4e, e8, d, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, f0, e8, 25, ab, bc, 7f, 0, 0, c, b6, b1, 4e, e8, d, 0, 0, d0, 18, b4, 4e, e8, d, 0, 0, 0, f9, ca, 86, e8, 97, f5, 48, 0, e9, 25, ab, bc, 7f, 0, 0, 80, ac, b1, 4e, e8, d, 0, 0, d0, 18, b4, 4e, e8, d, 0, 0, 4, 0, 0, 0]
[INFO] [1/1339154] hypecall: 8, paras: 43c01bf4b0 0 0 0
[ERROR] [1/43c01a0000|0] buffer 300-400: [0, 0, 0, 0, c8, 8, b4, 4e, e8, d, 0, 0, 48, 9, b4, 4e, e8, d, 0, 0, 30, e9, 25, ab, bc, 7f, 0, 0, e4, 38, b1, 4e, e8, d, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, e8, 8, b4, 4e, e8, d, 0, 0, d0, 18, b4, 4e, e8, d, 0, 0, c0, e9, 25, ab, bc, 7f, 0, 0, 14, 34, b1, 4e, e8, d, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, c8, 8, b4, 4e, e8, d, 0, 0]
[INFO] [1/1339268] hypecall: 8, paras: 43c01bf4b0 0 0 0
[ERROR] [1/43c01a0000|0] buffer 400-500: [2, 0, 0, 0, 0, 0, 0, 0, 10, ea, 25, ab, bc, 7f, 0, 0, a0, f9, b3, 4e, e8, d, 0, 0, 0, d0, b3, 4e, e8, d, 0, 0, 9c, d3, b3, 4e, e8, d, 0, 0, 38, fa, b3, 4e, e8, d, 0, 0, d0, f5, b3, 4e, e8, d, 0, 0, a0, f7, b3, 4e, e8, d, 0, 0, c0, e9, 25, ab, bc, 7f, 0, 0, 18, 33, b1, 4e, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, d8, c6, b3, 4e, e8, d, 0, 0, 4, 0, 0, 0]
[INFO] [1/1339384] hypecall: 8, paras: 43c01bf4b0 0 0 0
[ERROR] [1/43c01a0000|0] buffer 500-600: [ff, ff, ff, ff, 0, f9, ca, 86, e8, 97, f5, 48, 30, ea, 25, ab, bc, 7f, 0, 0, 28, 35, b1, 4e, e8, d, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 40, 6, b4, 4e, e8, d, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, ea, 25, ab, bc, 7f, 0, 0, a0, f9, b3, 4e, e8, d, 0, 0, 0, d0, b3, 4e, e8, d, 0, 0, 9c, d3, b3, 4e, e8, d, 0, 0, 18, 33, b1, 4e, e8, d, 0, 0, 70, 16, b4, 4e, e8, d, 0, 0]
[INFO] [1/1339506] hypecall: 8, paras: 43c01bf4b0 0 0 0
[ERROR] [1/43c01a0000|0] buffer 600-700: [18, 17, b4, 4e, e8, d, 0, 0, 58, 1, 0, 0, 0, 0, 0, 0, 0, f9, ca, 86, e8, 97, f5, 48, a0, ea, 25, ab, bc, 7f, 0, 0, 14, 34, b1, 4e, e8, d, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 6, b4, 4e, e8, d, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, f0, ea, 25, ab, bc, 7f, 0, 0, a0, f9, b3, 4e, e8, d, 0, 0, 0, d0, b3, 4e, e8, d, 0, 0, 9c, d3, b3, 4e, e8, d, 0, 0, 18, 33, b1, 4e]
[INFO] [1/1339624] hypecall: 8, paras: 43c01bf4b0 0 0 0
[ERROR] [1/43c01a0000|0] buffer 700-800: [e8, d, 0, 0, 70, 16, b4, 4e, e8, d, 0, 0, 18, 17, b4, 4e, e8, d, 0, 0, 58, 1, 0, 0, 0, 0, 0, 0, 0, f9, ca, 86, e8, 97, f5, 48, 10, eb, 25, ab, bc, 7f, 0, 0, d0, b2, b1, 4e, e8, d, 0, 0, 80, eb, 25, ab, bc, 7f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, a0, f9, b3, 4e, e8, d, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ec, f5, b3, 4e, e8, d, 0, 0]
[INFO] [1/1339779] hypecall: 8, paras: 43c01bf4b0 0 0 0
[ERROR] [1/43c01a0000|0] buffer 800-900: [9c, d3, b3, 4e, e8, d, 0, 0, 38, fa, b3, 4e, e8, d, 0, 0, 70, 16, b4, 4e, e8, d, 0, 0, 18, 17, b4, 4e, e8, d, 0, 0, 58, 1, 0, 0, 0, 0, 0, 0, 0, f9, ca, 86, e8, 97, f5, 48, a0, eb, 25, ab, bc, 7f, 0, 0, 3c, 16, b1, 4e, e8, d, 0, 0, d0, f9, b3, 4e, e8, d, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 88, bb, b3, 4e, e8, d, 0, 0, 80, 14, b1, 4e, e8, d, 0, 0, a8, ed, 25, ab]
[INFO] [1/1339904] hypecall: 8, paras: 43c01bf4b0 0 0 0

I'll see what I can do.

@CharlyYu
Aside from the stack issue, it seems you are running both tasks on the same cpu?
As I tested, SMP scheduling doesn't seem to work ( see this ). Have you tried a simple test fork program? Does it work on one CPU?

It seems it is because the switch of ttbr0_el1 does not take effect instantly. some cache mechanism makes the memory translation with the old ttbr0_el1 value. I printed the values with the physical address of the stack, and it is ok, but with virtual address, I got the value of the old process' stack.

Aside from the stack issue, it seems you are running both tasks on the same cpu?

Sorry I didn't mention that only 2 vcpus is allocated to the sandbox.

I'm interested if the simple fork program works for you? Because in my case it didn't work when two tasks are scheduled on the same vcpu.

On Tue Mar 26, 2024 at 4:21 PM CET, CharlyYu wrote:

It seems it is because the switch of ttbr0_el1 does not take effect instantly. some cache mechanism makes the memory translation with the old ttbr0_el1 value. I printed the values with the physical address of the stack, and it is ok, but with virtual address, I got the value of the old process' stack.

but we do have a tlb shootdown before returning to user process. Is is not
enough for cache consistency?
#[inline]
pub fn LoadUserTable(table: u64) {
unsafe {
asm!("msr ttbr0_el1, {0}
ic iallu
dsb nsh
isb",
in(reg) table);
};
}

I got it, I think we have to flush the tbl with tlbi, in x86_64, we just write the CR3 and the tlb will be flushed automatically, but in aarch64, we have to flush the local tlb all, I will submit a PR to fix it.

And I found that many atomic operation is callled with memory ordering of Ordering::Relaxed, I think it also may not work for aarch64.

Sorry I have to submit the pr tomorrow.

I got it, I think we have to flush the tbl with tlbi, in x86_64, we just write the CR3 and the tlb will be flushed automatically, but in aarch64, we have to flush the local tlb all, I will submit a PR to fix it.

Any update?  I can help if you are busy.

I think this is also addressed in the #1210. @CharlyYu can we close this one?

#1212 should be the fix.


Convert benchmarks to SQL

Current compiled benchmarks should be replaced with interpreted benchmarks, similar to sqllogictests.

This is (partly) done now


Add ostream formatters for TargetPtr/TargetVal.

This PR adds formatters so you can use TargetPtr/Val with e.g. LOG(INFO) and std::cout. Planning to add tests will after the runtime rewrite (it's possible these two classes won't be needed after that, but they're very useful now).

cc @tqchen

Thanks @areusch

cc @tmoreau89 @liangfu @weberlo @u99127 @tom-gall


Rotating div wrapping anno image by 90deg causes corner handles to double in size

I am seeing an issue where if I rotate the div wrapping the anno image by 90deg using transform: rotate(90deg), and select a label, the corner handles double in size.
Is there a workaround for this ? I want the corner handles to remain at a particular size like 6.
I'm using Annotorious in headless mode.

Hi,
unfortunately, that's indeed a bit of a special case. I can reproduce it, and I can see what's going on. But I'm afraid it's not going to be entirely fixable. A bit of context & explanation:
In order to support responsive websites, Annotorious up- or downscales the handles when images are scaled. E.g. if a responsive website scales the image (and the annotation layer) down, Annotorious up-scales the handle in order to make them appear at constant size.
In order to compute that scaling factor, Annotorious uses the true width and height of the image, and the scaled current bounds of the SVG annotation layer. Now, if you flip the image by 90 degrees, that computation breaks. E.g. if you have an image 200px wide and 100px high, and rotate 90 degrees, the handles will get upscaled by a factor of 2. Because Annotorious sees the image as down-scaled to 50%.
I can't think of a good solution how to make this auto-scaling support arbitrary rotation, TBH. (Also because I don't know off the top of my head how to reliably determine the rotation of the annotation layer, if any of the parent elements has a CSS rotation applied.) But I can add the following small tweak to the next release: I can add a transform-origin property to each handle which would allow you to scale the handles yourself, outside of Annotorious. This way, you could apply the following CSS rule:
.a9s-handle circle {
  transform:scale({some factor});
}

And this would then down-scale the handles again. (The transform-origin fix would make sure that handles are scaled around their center, and not get shifted because of the scale.)
Note that {some factor} would have to be determined by the aspect ratio of your image (factor = height / width); and you would have to apply the rule only if the image is rotated!
(P.S.: I'm not covering the case of rotations between 0 and 90 deg... then you'd probably need to mix in a bit of trigonometry, too.)
Anyways, the code where the scaling is computed inside Annotorious is here:
https://github.com/recogito/annotorious/blob/main/src/tools/Tool.js#L47-L58
If you manage to figure out a cleverer solution, do let me know & we can incorporate.


Docker stats for all container

Hi there,
Do you guys think it could be a good idea to have in the API an endpoint which allows to get the stats of all the running containers at once?
At the moment I am using this collectd plugin (https://github.com/lebauce/docker-collectd-plugin) to get the stats out of my server.
The problem I am seeing is that when I am running 100+ container the server starts loading because I am making too many requests too often to the docker daemon (aka one call per container to the /stats endpoint every 20s).
If we could get all the stats at once that would fix this problem, for now I have implemented some rate limit on that plugin but not sure if it is the best as I do  not have a real time info anymore.
Cheers.

So basically, move this functionality: https://github.com/docker/docker/pull/16742 server / daemon side?
@runcom wdyt? I don't know how this will interact with (e.g.) a Swarm setup

@thaJeztah  yeah if that's possible that would be great otherwise the more containers you run the less scalable it becomes.

I think it makes sense (:wine_glass: @jeanpralo)

I like this idea, it would save lots of TCP connections, but maybe it will impact the Swarm functions as @thaJeztah mentioned.

makes sense :) at the beginning it was just to painful to think about exposing an API to collect all stats so I went the client way

ping @vieux @dongluochen any thoughts on implications for Swarm?

I'd also like to see this, but I think the high CPU load in #21837 would probably need to be addressed.  It seems to take a lot of effort for the daemon to get the stats together in a format that it can spit out, and I think an API endpoint that collects stats on all containers would really expose that.

I think this is a must-have for the stats API surface. Anyone who uses the stats endpoints almost certainly uses it for all of their containers. Having the stats streams per-container is very awkward. You have to continually track which containers you have subscribed to, etc.

If someone wants to make a pull request for this; based on the discussion above, I think it will be accepted

@rileysaurus if you're looking for something to do, this issue is a decent candidate. we might even be able to get a twofer addressing https://github.com/docker/docker/issues/21837, which also seems pretty nasty.

I'd like to take care of this if no one else is already working on this.
So #dibs  :smile:

don't let me down, wei

@vincentwoo Oh, so much pressure :laughing:  I'll try my best :guitar:

Sad end for that first PR :( but thanks for the work @WeiZhang555
@thaJeztah @icecrime  any chance we can raise a priority on that issue. Getting stats out of docker is something that one would expect.  At the moment servers with hundred of containers are not really go at doing that :'(

Focus will most likely be on https://github.com/docker/docker/issues/27307, but input is welcome there 👍

Has this feature been implemented?  I'm looking here:  https://docs.docker.com/engine/api/v1.40/#operation/ContainerStats  but I don't see a way to get all the stats at once.

@thaJeztah WDYT if we did something like GET /containers/json?fetchContainerStats=true and cram in the stats for each container listed?
This gets around issues with polluting the API path with weird things and solves issues for people who just want to get a list for all containers... and it also happens to support filtering and such already.

As I recall we already have a size param to fetch the container rootfs size as well, so not really out of left field.

I think we had a PR implementing this at some point, but it was rejected at the time (will have to check)

Hey @thaJeztah any update on this?

So, the old PR was https://github.com/moby/moby/pull/25361, which has a lot of discussion (some of the comments are hidden by GitHub, so you might have to click to get those shown)

I read through the thread, seems like there is a lot of contention around the restful API design of it (the naming of the endpoint).  But, that thread ended 2 years 8 months ago.  Can this problem be easily solved now or does the contention still exist?


use batch read / writes, if available

There's a ReadBatch and a WriteBatch on the ipv4.PacketConn. The equivalent functions are available on the ipv6.PacketConn.
We need to evaluate if we can either

convert a net.PacketConn passed in by the the user to an ipv4.PacketConn or an ipv6.PacketConn, depending on the address, or otherwise
ask users to pass in an ipv{4,6}.PacketConn, and then do an interface assertion, and use batched read / writes if possible

Also see https://github.com/lucas-clemente/quic-go/issues/2586#issuecomment-642334615.

With https://github.com/lucas-clemente/quic-go/pull/3142 merged, what's the state of batch writes?

With #3142 merged, what's the state of batch writes?

It's not really clear if one would want to batch writes on a connection basis or aggregated over multiple (all?) connections. More benchmarking work would be needed to determine the best solution.

The main goal is to avoid syscall overhead IMHO. Go seems to use sendmmsg which allows different destinations.

That's correct, it's just not clear to me which of the two options will give better performance.

Probably also depends on if go can use GSO for UDP and if that works with different destinations.
sendmmsg+GSO should be the goal as outlined by Cloudflares blog post:
https://blog.cloudflare.com/accelerating-udp-packet-transmission-for-quic/


Genz toons not working

Source information
1.4.34
Source language
ENGLISH
Steps to reproduce
step 1: open extension
Step 2: shows no results found
Step 3: open web view , it shows website fine
Expected behavior
Should work on extension
Actual behavior
No results found shows when entering extension

Mihon/Tachiyomi version
1.7.4
Android version
14
Other details
No response
Acknowledgements

[X] I have searched the existing issues and this is a new ticket, NOT a duplicate or related to another open or closed issue.
[X] I have written a short but informative title.
[X] I have updated the app to version 0.15.3.
[X] I have updated all installed extensions.
[X] I have tried the troubleshooting guide.
[X] If this is an issue with the app itself, I should be opening an issue in the app repository.
[X] I will fill out all of the requested information in this form.

Duplicate of #5445
Search the existing issues before opening a new one, and acknowledging that you did when you clearly didn't (you know that there's a domain change, don't open another request because you can't wait or read.)

But the domain is updated in the extension url but still not working i acknowledge that

Duplicate of #5445
Search the existing issues before opening a new one, and acknowledging that you did when you clearly didn't (you know that there's a domain change, don't open another request because you can't wait or read.)

See above

it is the webview redirecting, still need to change domain and theme in code

it is the webview redirecting, still need to change domain and theme in code

Ok and sorry to disturb


Recommendation Engine

Contains code for recommendation engine that communicates with UserMgmt micro-service

Incorporated change in latest commit (5db00b7)


pirate_start.ogg samples a part from the Sid Meier's Pirates! official soundtrack

Description

I don't know how to explain this in detail, it literally samples the music. It's a blatantly obvious copyright violation.
Reproduction

listen closely at "55:19" in the video https://youtu.be/FMUJgzMYLqw?t=3319 and then listen to pirate_start.ogg
Screenshots

n/a
Additional context

n/a

Thought this was already addressed last year in https://github.com/space-wizards/space-station-14/issues/21869

Thought this was already addressed last year in #21869

im pretty sure thats related to ss220 not sid meier's pirates official soundtrack lol

Uh Oh! it DOES.
I scrapped this together with no copyright audio,
https://soundcloud.com/user-983755196/ss14-pirates-quieter-beeps-more-arrrg?si=d9df3630fa4343469c6e5a52818468c4&utm_source=clipboard&utm_medium=text&utm_campaign=social_sharing

attempt to fix with #25111


TaskbarX does not work and center my icons.

I can configurate my taskbar (transparent etc.) but it does not center my icons. My icons are going through right side of taskbar and i cant see or access them until restart the taskbarx and check "dont center my icons" option.

OS: Windows 10
Version <IP_ADDRESS>

This problem is not being resolved
Help me solve it

@younkyumkim I'm sorry but, i can't give a solution until i am able to reproduce the issue or know what is causing this behavior.. 😩

I have the same problem. I just bought your program on Microsoft Store but doesn´t work.

@younkyumkim I'm sorry but, i can't give a solution until i am able to reproduce the issue or know what is causing this behavior.. 😩

I have the same problem. I just bought your program on Microsoft Store but doesn´t work.

Just click on ¨Dont center taskbar :D

Just click on ¨Dont center taskbar :D

Just click on ¨Dont center taskbar :D

Why? I want my taskbar to be centered

Just click on ¨Dont center taskbar :D

Why? I want my taskbar to be centered

I clicked in here and the space disapeared

I clicked in here and the space disapeared

I clicked in here and the space disapeared

It doesnt work on my pc

I clicked in here and the space disapeared

It doesnt work on my pc

@aenesks Have you used different tools to manipulate the Taskbar? Also the trick that allows you to move the icons manually can cause miscalculations if you didn't remove that properly.

@aenesks Have you used different tools to manipulate the Taskbar? Also the trick that allows you to move the icons manually can cause miscalculations if you didn't remove that properly.

@aenesks Have you used different tools to manipulate the Taskbar? Also the trick that allows you to move the icons manually can cause miscalculations if you didn't remove that properly.

No, i have never used any tools but taskbarx. How can i remove the thing you mentioned properly? I am new at this configuration tools.

@aenesks Have you used different tools to manipulate the Taskbar? Also the trick that allows you to move the icons manually can cause miscalculations if you didn't remove that properly.

No, i have never used any tools but taskbarx. How can i remove the thing you mentioned properly? I am new at this configuration tools.

Just disable any toolbar just like in the screenshot. However i forgot this doesn't matter anymore as i fixed it a while ago.

This is how you can position them manually... http://www.wisecleaner.com/how-to/111-how-to-center-the-taskbar-icons-in-windows-10.html

Just disable any toolbar just like in the screenshot. However i forgot this doesn't matter anymore as i fixed it a while ago.

This is how you can position them manually... http://www.wisecleaner.com/how-to/111-how-to-center-the-taskbar-icons-in-windows-10.html

@ChrisAnd1998 I'll give it a try tonight. Also just updated to W10 20H2

@ChrisAnd1998 I'll give it a try tonight. Also just updated to W10 20H2

I had the same issue its easy to resolve

stop TaskbarX
delete all its files
restart
redownload
you are done

that's what fixed for me at least

I updated the last version. And another bug appeared. The icons are going throght right step by step when i open a new application. (I have dual monitors)

I can't centered either.

TaskBarX not centering my icons but i can make taskbar transparent etc.

I have the same problem, I can put it in invisible but not center it :v if anyone has a solution i'm interested

it did the same thing for me lol i just spent $2 for something that doesn't even work.

I have the same problem. Transparency works but it doesn't center icons.

I have a dual monitor setup, with Display 1 as my side monitor and Display 2 as my main monitor. The windows taskbar is enabled only on the main monitor (Display 2), and I'm experiencing the same issue (transparency works but icon centering doesn't).
I tried enabling the taskbar for both monitors (Taskbar Settings > Show taskbar on all displays), and the result is that TaskbarX is centering icons on the taskbar that's not main. Icons of Display 1 are being centered and those of Display 2 are not.
If I try switching my main monitor to Display 1, the same thing happens: icons now are centered for Display 2 but not for Display 1.
I think the issue might be that TaskbarX is centering the icons of the taskbar that's not the main one, even if it's disabled.

I have a dual monitor setup, with Display 1 as my side monitor and Display 2 as my main monitor. The windows taskbar is enabled only on the main monitor (Display 2), and I'm experiencing the same issue (transparency works but icon centering doesn't).
I tried enabling the taskbar for both monitors (Taskbar Settings > Show taskbar on all displays), and the result is that TaskbarX is centering icons on the taskbar that's not main. Icons of Display 1 are being centered and those of Display 2 are not.
If I try switching my main monitor to Display 1, the same thing happens: icons now are centered for Display 2 but not for Display 1.
I think the issue might be that TaskbarX is centering the icons of the taskbar that's not the main one, even if it's disabled.

I am having this same issue. I am going to try a few things and I will let you know. So far I haven't heard of any fix. I might try and revert to an older model of taskbarx.

howdyu make the thingy green on the bottom

replacing TaskbarX.exe from <IP_ADDRESS> version to <IP_ADDRESS> works for me

I have recently purchased this app yesterday to give my computer a more aesthetic and pleasing look. The taskbar wouldn't centre. I tried this on my other laptop and the same thing happened again. I don't want to have to refund this app because I have heard great reviews, but i may have to if there is no solution to this problem. Does anyone have a possible fix to this?

Hey, the same for me. I've purchased this app in microsoft store TODAY and at the beggining I had that problema (only transparency for the taskbar and the icons don't get center) but now I uninstalled and installed again and ANYTHING works, no transparency and nothing :)

Even the extra options doesn't work

Just quickly opening the console reveals this message, i wonder if this helps at all?

Have anyone found a fix yet? I've tried different versions, and the icons just wont center

Found it in another issue thread.
Uninstall the current version and install <IP_ADDRESS>. Unzip that version and run. This fixed my not-centering issue.

@plankford that worked for me as well, I forgot to post it here, but thank you!

Found it in another issue thread.
Uninstall the current version and install <IP_ADDRESS>. Unzip that version and run. This fixed my not-centering issue.

 Thanks.

Uninstall the current version and try some old version. Unzip that version and run. This fixed my not-centering issue. My not- Centering problem fix by <IP_ADDRESS> version.

I got the same issue after buying it today.

Found it in another issue thread.
Uninstall the current version and install <IP_ADDRESS>. Unzip that version and run. This fixed my not-centering issue.

This worked for me, thanks!

try installing taskbar x 1.06
TaskbarX_<IP_ADDRESS>.zip

I got the same issue after buying it today.

try installing taskbar x 1.06
TaskbarX_<IP_ADDRESS>.zip

@younkyumkim I'm sorry but, i can't give a solution until i am able to reproduce the issue or know what is causing this behavior.. 😩

well it's problem in new version,  it got fixed when i installed old version of taskbar x

Managed to fix this by downgrading to Version <IP_ADDRESS>
Issue occurred on Windows 10 Home 1809.

I've been using TaskbarX v1.6.3 for about a year with no problems on Windows 10 Pro.  I have a single monitor running at 2560x1440 resolution.
Yesterday, I pulled in the 21H1 feature update (taking me to build 19043.1237).  After reboot, the taskbar disappeared completely. I upgraded to TaskbarX v1.7.2, which fixed that problem, but then the taskbar wasn't centered.  I also tested with TaskbarX v1.6.9, but got the same behavior.
After playing with this for a while, I've concluded that the problem seems to have a timing component and also seems to be related to the tray.   If TaskbarX starts before the tray is fully populated, then it seems to get confused about the width of the screen and incorrectly centers the taskbar.  So, part of the solution is to delay the start of TaskbarX until after everything in the tray has fully started.  However, even with that delay, the taskbar still is not entirely centered.  I fixed that using a negative offset that pulls the taskbar back to the left, and the result looks basically like it did before I patched Windows.  So, this is a good enough solution for me right now.
Below are the specific changes I made to get things working again.
Previously, I was starting TaskbarX with a shortcut in the shell:startup folder.  I got rid of that shortcut and switched to using the scheduled task on the Startup tab:

Delay: 20 seconds, then click Remove and Create to recreate the task

Then, I made the following changes on the Position tab, to pull the taskbar into the right place:

Primary Taskbar Offset: -350 px
Compensate Tray Clock etc...: checked
Revert to zero beyond Tray: checked

I'm sure whether this will help anyone else, but it does seem to be behaving consistently for me right now, through multiple logout, sleep, and reboot cycles.

Fixed it by using version <IP_ADDRESS>, the developer should fix the problem as soon as possible.

To be able to focus on major/current bugs I had to close all issues. The issues section has gotten very messy to a point that I couldn't follow it anymore. Most issues are duplicates, very old or are already fixed/solved. Feel free to reopen this issue if you still have this issue on the latest version of TaskbarX to get my attention. All feature requests have been put in a list here: 💡| Feature requests #870
I hope you understand ❤

Try to run as administrator, thats works for me

I have this problem rn and used <IP_ADDRESS> version and still have it
any other solutions?

The problem persists on any version of taskbarx please help


added icons and clered issue with double buttons

Related Issue
[Cite any related issue(s) this pull request addresses. If none, simply state “None”]
Fixes:  #(issue no.)#661
Description
[Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.]
#661
Type of PR

[ ] Feature enhancement

Screenshots / videos (if applicable)
[Attach any relevant screenshots or videos demonstrating the changes. Make sure to attach before & after screenshots in your PR.]
Checklist:

[ ] I have made this change from my own.
[ ] I have taken help from some online resources.
[ ] My code follows the style guidelines of this project.
[ ] I have performed a self-review of my own code.
[ ] I have commented my code, particularly in hard-to-understand areas.
[ ] I have made corresponding changes to the documentation.
[ ] My changes generate no new warnings.
[ ] I have tested the changes thoroughly before submitting this pull request.
[ ] I have provided relevant issue numbers and screenshots after making the changes.

@HemanthDattaK Write Home as you can see Home word has been capitalize and make font small or else look of website is not looking good.After resolving the conflicts, please open a new PR for review.
Thank you!


🐛 [firebase_messaging]Support for Android 13

i intergated firebase_messaging 11.4.1, and run function getToken() on android api 32 (Tiramisu) with Error:
FirebaseMessaging java.io.IOException: AUTHENTICATION_FAILED

I run on other devices working

Hi @vohoangtuit, Thanks for filing the issue. Android Tiramisu is still in developer preview, I am quite not sure if the firebase plugins are ready to support the new android version or it requires updating the SDK and the plugins. I am labeling the issue for further insights from the team.
cc: @russellwheatley

@vohoangtuit
This seem to have been fixed as part of this PR: https://github.com/firebase/flutterfire/pull/9348, so I suggest you to upgrade plugin version to latest and try again to see if you still get the same error or not.

We have implemented support for android 13 notifications as mentioned by @darshankawar.


Release new versioin with latest changes.

https://github.com/danger-ahead/simple_chips_input/releases/tag/v1.2.0
published


CmpBorder doesn't work

Description
I have set CmpBorder to green but the autocompletion border is still grey.
Neovim version
NVIM v0.10.0
Build type: Release
LuaJIT 2.1.1713773202

Terminal and multiplexer
kitty 0.35.2
Catppuccin version / branch / rev
catppuccin latest commit main
Steps to reproduce
set this as your cattppuccin config
require("catppuccin").setup({
	integrations = {
		mason = true,
		cmp = true,
	},
	custom_highlights = function(colors)
		return {
			FloatBorder = { fg = colors.green },
			CmpBorder = { fg = colors.green },
		}
	end,
})

vim.cmd("colorscheme catppuccin-mocha")

and this as your cmp config
local cmp = require("cmp")
cmp.setup({
	sources = { { name = "nvim_lsp" } },
	mapping = cmp.mapping.preset.insert({
		["<Tab>"] = cmp.mapping.confirm({ select = true }),
		["<C-k>"] = cmp.mapping.select_prev_item(),
		["<C-j>"] = cmp.mapping.select_next_item(),
	}),

	window = {
		completion = {
			border = "rounded",
		},
		documentation = {
			border = "rounded",
		},
	},
})

Expected behavior
 expect these auto complete borders to be green.
Actual behavior
auto complete borders are grey

https://github.com/hrsh7th/nvim-cmp/blob/7e348da6e5085ac447144a2ef4b637220ba27209/lua/cmp/config/default.lua#L110
you should set this to override the default value
winhighlight = 'Normal:Pmenu,FloatBorder: FloatBorder,CursorLine:PmenuSel,Search:None',

that woked, thank you.