Frozen sketch + Breaks on reload

Hi Daniel,
Weird situation: I just tried to do a fresh install of canvas through conda (and pip), and I can run the basic animation without a problem, except it does not go beyond the first frame (I can print framecount, it stays at zero).
What is more, if I change the source file, the script fails here, with:
Traceback (most recent call last):
  File "/Users/jcw/Documents/teaching/DMLCP/DMLCP/canvas/basic_animation.py", line 20, in <module>
  File "/Users/jcw/Documents/teaching/DMLCP/DMLCP/canvas/env/lib/python3.10/site-packages/py5canvas/__init__.py", line 62, in run
    run_sketch.main(filename, fps=frame_rate, inject=inject, show_toolbar=show_toolbar)
  File "/Users/jcw/Documents/teaching/DMLCP/DMLCP/canvas/env/lib/python3.10/site-packages/py5canvas/run_sketch.py", line 1315, in main
    sketch.check_reload()
  File "/Users/jcw/Documents/teaching/DMLCP/DMLCP/canvas/env/lib/python3.10/site-packages/py5canvas/run_sketch.py", line 801, in check_reload
    if self.must_reload or self.watcher.modified(): # Every frame check for file modification
  File "/Users/jcw/Documents/teaching/DMLCP/DMLCP/canvas/env/lib/python3.10/site-packages/py5canvas/run_sketch.py", line 110, in modified
    stamp = os.stat(self.filename).st_mtime
FileNotFoundError: [Errno 2] No such file or directory: '/Users/jcw/Documents/teaching/DMLCP/DMLCP/canvas/basic_animation.py'

And that's even as the file exists (I'm running it)...
This modification solves it, but it's a bit strange, as the file does exist...
    def modified(self):
        if os.path.isfile(self.filename): # check for existence
            stamp = os.stat(self.filename).st_mtime
            if self._cached_stamp is None:
                self._cached_stamp = stamp
            if stamp != self._cached_stamp:
                self._cached_stamp = stamp
                return True
        return False

Any thougts? Thanks!

Hi Jeremie,
I tried to reproduce on my machine but it seems to work.
What platform are you running this on?
Also, did you run the sketch from the command line, from visual studio code or otherwise?

Strange, strange. It's on Sonoma 14.4, on a MacBook Air M2, run directly from the terminal: python basic_animation.py...

I tried it using both the conda install pulling your .yaml file, and creating a venv with python3.10.13 and installing everything through pip using a requirements.canvas.txt file containing this:
# requires python3.10!
jupyter
numpy
pycairo
matplotlib
opencv-python
pyglfw
moderngl
py5canvas

However, the situation is the same in both cases, and I can't quite pinpoint why (I had done another fresh install earlier this summer and the loop certainly worked without an issue).

Come to think of it, I note the following errors when run the script:
[Errno 2] No such file or directory: '/Users/jcw/Documents/teaching/DMLCP/DMLCP/canvas/osc.json'
Unable to load json file:/Users/jcw/Documents/teaching/DMLCP/DMLCP/canvas/osc.json
Starting OSC Server
Initializing OSC client
[Errno 2] No such file or directory: '/Users/jcw/Documents/teaching/DMLCP/DMLCP/canvas/env/lib/python3.10/site-packages/py5canvas/settings.json'
Unable to load json file:/Users/jcw/Documents/teaching/DMLCP/DMLCP/canvas/env/lib/python3.10/site-packages/py5canvas/settings.json

Wondering if that settings.json is what's causing the issue?
Also, makes me notice that python-osc might be missing from the .yaml file?

Sadly, I just tried, but the error remains.
Earlier I had done pip install git+https://github.com/colormotor/py5canvas.git, so it should have been the latest version...

Looking back at the error you initially got this is a bit weird, since the path /Users/jcw/Documents/teaching/DMLCP/DMLCP/canvas/basic_animation.py is absolute so I would assume it exists. Can you double check that that path is correct?

I can't see anything wrong there, that's the path to the file I'm executing in my local directory... (Unless there's some non-printable character in there...) Also, the strangest thing is that indeed if I add a guard as shown above, if os.path.isfile(self.filename), then this bit runs smoothly (reloading with modifications), but not the loop.
Perhaps something to note: when I change the sketch, I get the error about the file not existing, but the script does not stop running entirely: I still have to do Ctrl+C once more, and when I do there's this as well:
^CException ignored in: <module 'threading' from '/Users/jcw/.pyenv/versions/3.10.13/lib/python3.10/threading.py'>
Traceback (most recent call last):
  File "/Users/jcw/.pyenv/versions/3.10.13/lib/python3.10/threading.py", line 1567, in _shutdown
    lock.acquire()
KeyboardInterrupt:

The loop hanging forever could actually look like a locked thread??

Solved with a workaround (283fdd0). Need to improve file modified polling (#6)


Change master to main

This PR is to accompany renaming the master branch to main, as per RFC 63

Updated!

FYI I’ve updated the wiki pages mentioned above.


Text color on SegmentedBar only affects first element

From @nicoeg on September 28, 2018 20:39
Tell us about the problem
When styling the color of a SegmentedBar the first element on the page is only affected by the styling.
It also seems to be an issue when applying the property to the element through html.
Other styling properties like background is working as expected.
I'm pretty certain this has been an issue for a while.
Which platform(s) does your issue occur on?
Only tested on Android
Please provide the following version numbers that your issue occurs with:

CLI: 4.2.0
Cross-platform modules: 4.2.0
Runtime(s): 4.2.0

Please tell us how to recreate the issue in as much detail as possible.
https://play.nativescript.org/?template=play-ng&id=uVa4GK&v=4
Is there code involved? If so, please share the minimal amount of code needed to recreate the problem.
SegmentedBar {
    color: #ffffff;
}

Copied from original issue: NativeScript/NativeScript#6324

Hi @nicoeg,
Thank you for the provided sample project.
I tested the case on my side and was able to recreate the problem only for Android. I will mark this as a bug, and I would suggest keeping track of the issue for further info.

Hi @nicoeg,
We investigated further the issue and found this is expected behaviour while loading a one collection of SegmentedBarItems in two SegmentedBars. To solve the issue, you should create two separate collections of items and load each of them only once per SegmentedBar. For example:
HTML
<SegmentedBar class="form-box driver" [items]="items"></SegmentedBar>
<SegmentedBar class="form-box driver" [items]="items2"></SegmentedBar>

TypeScript
items: Array<SegmentedBarItem>;
    items2: Array<SegmentedBarItem>;
    constructor() {
        const a = new SegmentedBarItem
        a.title = "hej"
        const b = new SegmentedBarItem
        b.title = "hej"
        this.items = [a, b]
        const a2 = new SegmentedBarItem
        a2.title = "hej"
        const b2 = new SegmentedBarItem
        b2.title = "hej"
        this.items2 = [a2, b2]
    }


Tab selection does not work when moved to a different window

Describe the bug
Repro from the sample app
Select 'Launch' from the TabView windowing sample
Drag Tab2 out so it opens in new window
Drag Tab3 out so it opens in new window
Drag Tab3 into Tab2's window.
The UI appears correct, showing Tab3 and Tab2 in the same window, but selecting Tab2 does not bring the content into view.
If you drag Tab2, the content becomes visible.
Debugging shows the OnPointerPressed in avalonia's ListBoxItem.cs returns early because ItemsControl.ItemsControlFromItemContaner believes the tab's parent is still the original listitem.
Screenshots

Desktop/Platform (please complete the following information):

OS: Windows 11
FluentAvalonia Version latest
Avalonia Version 11.0.9

Additional context
Add any other context about the problem here.

Can't repro this in the 2.1 branch (preview), so it may have been an issue upstream with ItemsControl and fixed in Avalonia 11.1.


Program abort at "Creating BR Mode Evaluator" when game_cls=LimitHoldem

Hi Eric,
I have tried to use your paper experiment hyperparameter to train a model with game_cls = LImitHoldem.
However, If I set the evaluation method is 'BR' (best response), then the program will abort in the staging of "Creating BR Mode Evaluator...", I wonder is there anything different between game_cls= LImitHoldem and game_cls=StandardLeduc? If so, how could I modify the code accordingly in order to train the deepCFR model?
Thanks,
Joena

Chang br to other eval method


Add-Feature---Support-Mysql-In-Airflow-Scheduler

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


add model and hypernetwork params

Decided, I'm moving model changer to configs instead

Will change https://github.com/nekooooooooo/salty-dream-bot/pull/8/commits/c9ef9e1321d9db42c52ba74e4062346392a92173 to discord.ext.pages in the future


Make "external" version of each project type

This will enable users to build and validate the schema outside of GraphQL Hive but still report the result.
It could be a simple form in the project's settings. Of course with some security requirements/actions.

My proposal
I think it's simple enough. We can always improve it later, give more insights, log requests etc.
Enabling "external" mode
Add an option in the project's settings to opt-in.
Create a simple form to provide a secret and an endpoint.
Consuming the external endpoint
To reduce the traffic, we can do the same logic as for the "internal" schema composition.
It means we will create a new orchestrator in the schema service that will be responsible for doing the http calls.
Verifying the request from GraphQL Hive
To make sure the request can be trusted, we can generate a signature based on a secret (provided by the project) that will be verified on the user's part of the flow.
We need to ship a specification and document the process in docs.graphql-hive.com.
We could also ship a library called @graphql-hive/external (or under any other name) that will bring type-safety and autocompletion. Basically, better DX.
function hash(secret, alg, str) {
  return crypto.createHmac(alg, secret).update(str, 'utf-8').digest('hex');
}

// GraphQL Hive
const secret = 'DECRYPTED_VALUE'; // from db
const headerName = 'X-Hive-Signature-256'
const hashAlg = 'sha256';

const payload = JSON.stringify({...});
const signature = hash(secret, hashAlg, payload);

fetch(user_endpoint, {
  headers: {
    'content-type': 'application/json',
    'X-Hive-Signature-256': signature,
  },
  body: payload
});

// User endpoint

import { verifySignature, build, validate } from '@graphql-hive/external';

server.route({
  method: ["POST"],
  url: '/build',
  handler(req, res) {
    verifySignature({
      body: req.rawBody,
      secret: SECRET,
      signature: req.headers['x-hive-signature-256']
    });

    const payload = await build((input) => {
      const output = customBuilder(input);
      return { ... };
    });

    res.json(payload);
  }
});

server.route({
  method: ["POST"],
  url: '/validate',
  handler(req, res) {
    verifySignature({
      body: req.rawBody,
      secret: SECRET,
      signature: req.headers['x-hive-signature-256']
    });

    const payload = await validate((input) => {
      const output = customValidator(input);
      return { ... };
    });

    res.json(payload);
  }
});


Master should have a backing database

Database can hold:

configuration
remediation actions & results

Timescaledb might be a good fit for this

I think that there's probably two different needs - config & actions / results. I think that the first case would be nicely handled by something like ETCD and the results could be timescaledb or even just Postgresql


Trigger CI on pushes and PRs onto main

"master" branch is no more, but CI didn't know. ;-)

supersedes and closes #90

Looks much better now.


Add support for State Preservation and Restoration support

This fixes ECSlidingViewController/ECSlidingViewController#217

would love to see this merged too, this is a feature that I need in a side bar controller


Make gen-files to fix the build

/merge-when-ready delete-branch

OK, I will merge the pull request when it's ready, leave the commits as is when I merge it, and delete the branch after I've merged it.

I'm sorry but I failed delete the branch after merging the pull request.


Same here with rancher cli 0.4.1 on rancher 1.3 :
/opt/rancher/rancher up -s mystack -d -c --force-recreate
INFO[0000] [0/1] [testresults]: Creating
INFO[0000] [0/1] [testresults]: Created
INFO[0000] [0/1] [testresults]: Starting
INFO[0000] Updating testresults
INFO[0000] Upgrading testresults
ERRO[0000] Failed Starting testresults : Bad response statusCode [409]. Status [409 Conflict]. Body: [code=Conflict, message=Conflict, baseType=error] from [https://admin.swm.cloud/v2-beta/projects/1a7/services/1s368/?action=upgrade]
ERRO[0000] Failed to start: testresults : Bad response statusCode [409]. Status [409 Conflict]. Body: [code=Conflict, message=Conflict, baseType=error] from [https://admin.swm.cloud/v2-beta/projects/1a7/services/1s368/?action=upgrade]
FATA[0000] Bad response statusCode [409]. Status [409 Conflict]. Body: [code=Conflict, message=Conflict, baseType=error] from [https://admin.swm.cloud/v2-beta/projects/1a7/services/1s368/?action=upgrade]

Happening randomly on a stack already started and in a stable state.

For information, we were on rancher 1.2 since a while, making same update requests and it never occured.

With 1.4.0-rc3 , there has been an unusually large number of this issue seen when running automation scripts:
This is happening when activating services for an environment which typically would have 3-4 services in "inactive" state in them.

INFO[0000] Creating stack hello
INFO[0000] [0/3] [test391269]: Creating
INFO[0000] [0/3] [test726612]: Creating
INFO[0000] Creating service test726612
INFO[0000] Creating service test391269
INFO[0000] [0/3] [test391269]: Created
INFO[0007] [0/3] [test726612]: Created
INFO[0007] [0/3] [LB-test911909]: Creating
INFO[0007] Creating service LB-test911909
ERRO[0007] Failed Creating LB-test911909 : Bad response statusCode [409]. Status
 [409 Conflict]. Body: [code=Conflict, message=Conflict, baseType=error] from [h
ttp://<IP_ADDRESS>:8080/v2-beta/loadbalancerservices/1s109/?action=setservicel
inks]
ERRO[0007] Failed to start: LB-test911909 : Bad response statusCode [409]. Statu
s [409 Conflict]. Body: [code=Conflict, message=Conflict, baseType=error] from [
http://<IP_ADDRESS>:8080/v2-beta/loadbalancerservices/1s109/?action=setservice
links]
FATA[0007] Bad response statusCode [409]. Status [409 Conflict]. Body: [code=Con
flict, message=Conflict, baseType=error] from [http://<IP_ADDRESS>:8080/v2-bet
a/loadbalancerservices/1s109/?action=setservicelinks]
root@07cb676644e8:~/rancher-compose-v0.12.3-rc2#

@joshwget we should figure out how to handle 409 errors on the rancher-compose side as they are possible to happen.

I was having this issue with rancher 1.1.4 and it was because of a full filesystem on the rancher server.

Has this issue been resolved?
Asking because we've been receiving these messages every time we upgrade an nginx service via Rancher CLI. Every time the service is at "Upgraded" state and just needs a manual confirm upgrade.
Rancher version: 1.6.0
Rancher CLI version: 0.6.0
Our CI/CD uses the following commands to upgrade and confirm upgrade on the Rancher server.
rancher --url ${RANCHER_URL} --environment "${RANCHER_ENVIRONMENT}" --access-key ${RANCHER_ACCESS_KEY} --secret-key ${RANCHER_SECRET_KEY} up --file docker-compose.yml.rancher --env-file .docker_env.rancher --stack ${RANCHER_STACK} --force-upgrade --pull -d

rancher --url ${RANCHER_URL} --environment "${RANCHER_ENVIRONMENT}" --access-key ${RANCHER_ACCESS_KEY} --secret-key ${RANCHER_SECRET_KEY} up --file docker-compose.yml.rancher --env-file .docker_env.rancher --stack ${RANCHER_STACK} --confirm-upgrade -d

rancher-compose.yml
version: '2'
services:
  mariadb:
    start_on_create: true
    hostname: ${MARIADB_HOST}
  redis:
    start_on_create: true
    hostname: ${REDIS_HOST}
  nginx:
    scale: 2
    start_on_create: true
    health_check:
      response_timeout: 2000
      healthy_threshold: 2
      port: 80
      unhealthy_threshold: 3
      initializing_timeout: 15000
      interval: 2000
      strategy: recreate
      reinitializing_timeout: 15000
  app:
    start_on_create: true
    scale: 2
    health_check:
      response_timeout: 2000
      healthy_threshold: 2
      port: 3000
      unhealthy_threshold: 3
      initializing_timeout: 15000
      interval: 2000
      strategy: recreate
      request_line: GET "/health_check/standard" "HTTP/1.0"
      reinitializing_timeout: 15000
  sidekiq:
    start_on_create: true
    scale: 2

This error appear randomly when we create a service with Rancher API.
Most of the time when many call to the API are send at the same time.
Rancher version: 1.6.21
This error appear in Rancher UI (Audit log on api.service.activate) :
Additional Log Info
Request Object:

{
  "action": "activate"
}

Response Object:

{
  "id": "9db46fb9-8fdb-4cc5-ae2f-8489d1c477ba",
  "type": "error",
  "links": {},
  "actions": {},
  "status": 409,
  "code": "Conflict",
  "message": "Conflict",
  "detail": null,
  "baseType": "error"
}

Many other errors appear in Rancher server logs:
2018-11-23 09:35:35,864 ERROR [:] [] [] [] [ecutorService-4] [.e.s.i.ProcessInstanceDispatcherImpl] Unknown exception running process [service.remove:4406075] on [792], canceled by [State [purged] is not valid for process [instance.stop:4564915] on resource [11453]]
2018-11-23 09:37:50,905 ERROR [:] [] [] [] [ecutorService-2] [.e.s.i.ProcessInstanceDispatcherImpl] Unknown exception running process [service.remove:4406075] on [792], canceled by [State [purged] is not valid for process [instance.stop:4564947] on resource [11453]]
2018-11-23 09:38:06,722 ERROR [161e0bb7-dd56-49a3-9993-6e38fb334285:4564948] [instance:147887->instanceHostMap:32260] [instance.start->(InstanceStart)->instancehostmap.activate] [] [torService-3624] [c.p.e.p.i.DefaultProcessInstanceImpl] Agent error for [compute.instance.activate.reply;agent=20129]: no such file or directory
2018-11-23 09:38:06,722 ERROR [161e0bb7-dd56-49a3-9993-6e38fb334285:4564948] [instance:147887] [instance.start->(InstanceStart)] [] [torService-3624] [i.c.p.process.instance.InstanceStart] Failed [1/5] to Starting for instance [147887]
2018-11-23 09:38:07,160 ERROR [161e0bb7-dd56-49a3-9993-6e38fb334285:4564948] [instance:147887->instanceHostMap:32260] [instance.start->(InstanceStart)->instancehostmap.activate] [] [torService-3624] [c.p.e.p.i.DefaultProcessInstanceImpl] Agent error for [compute.instance.activate.reply;agent=20129]: Timeout getting IP address
2018-11-23 09:38:07,160 ERROR [161e0bb7-dd56-49a3-9993-6e38fb334285:4564948] [instance:147887] [instance.start->(InstanceStart)] [] [torService-3624] [i.c.p.process.instance.InstanceStart] Failed [2/5] to Starting for instance [147887]


Collateral TWAP price miscalculation

We have the UbiquityPoolFacet contract (which uses LibUbiquityPool library under the hood) which is responsible for minting/redeeming Dollar tokens for collateral.
Example:

User calls mintDollar() and sends 100 LUSD as collateral
User gets 100 Dollars

Now check this test. It basically simulates the calcMintDollarAmount() method responsible for calculating how much Dollars should be minted/redeemed in exchange for collateral tokens.
The calculation seems to be wrong because when we try to get the collateral price in USD here https://github.com/ubiquity/ubiquity-dollar/blob/7a70182d49a0b9dc947c9925a5d28edc49c28b0d/packages/contracts/src/dollar/libraries/LibUbiquityPool.sol#L438 we use cumulative price which seems to be wrong. As a result user gets much more Dollars in exchange for collateral. Example:

User calls mintDollar() and sends 100 LUSD as collateral
User gets ~239561778028138198.47 Dollars which is way too high

As a part of the current issue we should add a new method to the oracle faucet which will be responsible for fetching collateral token prices in USD.
Possible options:

Curve TWAP (we already use it for the Dollar token)
Chainlink oracles

is this open for attempting @rndquu

/start

/stop

is this open for attempting @rndquu

Hey, yes

/start

I think I found a way to implement this correctly.
Running 1 test for test/diamond/facets/UbiquityPoolFacet.t.sol:UbiquityPoolFacetTest
[PASS] testCollateralTwap() (gas: 133837)
Logs:
  LUSD Curve MetaPool tokens
  0 (LUSD): 0x5f98805A4E8be255a32880FDeC7F6728C6568bA0
  1 (3CRV): 0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490
  get_price_cumulative_last()[0] (LUSD) :<PHONE_NUMBER>968650582055295336346502
  get_price_cumulative_last()[1] (3CRV) :<PHONE_NUMBER>996648397661910717659729
  block_timestamp_last:<PHONE_NUMBER>
  dy last:<PHONE_NUMBER>62099827
  dollarsOut:<PHONE_NUMBER>9065770216

Test result: ok. 1 passed; 0 failed; 0 skipped; finished in 4.64s
Ran 1 test suites: 1 tests passed, 0 failed, 0 skipped (1 total tests)

...
Running 1 test for test/diamond/facets/UbiquityPoolFacet.t.sol:UbiquityPoolFacetTest
[PASS] testCollateralTwap() (gas: 133837)
Logs:
  LUSD Curve MetaPool tokens
  0 (LUSD): 0x5f98805A4E8be255a32880FDeC7F6728C6568bA0
  1 (3CRV): 0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490
  get_price_cumulative_last()[0] (LUSD) :<PHONE_NUMBER>445777709373565553899126
  get_price_cumulative_last()[1] (3CRV) :<PHONE_NUMBER>717373371511942034905809
  block_timestamp_last:<PHONE_NUMBER>
  dy last:<PHONE_NUMBER>77455653
  dollarsOut:<PHONE_NUMBER>7261648426

Test result: ok. 1 passed; 0 failed; 0 skipped; finished in 5.51s
Ran 1 test suites: 1 tests passed, 0 failed, 0 skipped (1 total tests)

Last available price gives for 100 LUSD collateral about 90.388 3CRV tokens which seems correct when fee is included. I need to think over how to implement a test. likely I will create LUSD Curve MetaPool mock with values, so that forking will not be needed in forge. From balances and time delta we will get VWAP price using two pairs of get_price_cumulative_last and elapsed time. I will describe the calculations in a detail and open a PR tomorrow morning.

I will try to finish by tomorrow EOD, just wrapping up an another PR.

In the end I am going to implement also chainlink oracle support for any collateral in scope of this ticket which is half baked already on my local set up.

In the end I am going to implement also chainlink oracle support for any collateral in scope of this ticket which is half baked already on my local set up.

Yes, there is no need to overengineer the solution, chainlink is fine.
As a part of the current issue we were expecting:

Implement chainlink oracles for collateral token prices
Check that our current Dollar oracle works as expected (and can't be easily manipulated, but it depends on the curve metapool liquidity, as far as I understand)

I will try to finalize this tomorrow till EOD.

@gitcoindev You could delegate some of the tasks to me (collateral price via chainlink feature or fixing Dollar curve price). We must have this issue done till 31 December.

@gitcoindev You could delegate some of the tasks to me (collateral price via chainlink feature or fixing Dollar curve price). We must have this issue done till 31 December.

Thanks @rndquu I was diving into other tasks and should have given this one the priority and give an update. I got to a point where I implemented the ChainLink price feed update and a mocked ChainLink interface. This all seems to work correctly on a mocked test case and the test case passes.
contracts/src$ forge test -vvv --match-test testCollateralPriceFeed
[⠘] Compiling...
[⠔] Compiling 1 files with 0.8.19
[⠑] Solc 0.8.19 finished in 10.62s
Compiler run successful!

Running 1 test for test/diamond/facets/UbiquityPoolFacet.t.sol:UbiquityPoolFacetTest
[PASS] testCollateralPriceFeed() (gas: 188375)
Test result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.10s
Ran 1 test suites: 1 tests passed, 0 failed, 0 skipped (1 total tests)

I would like to experiment also on a ChainLink test feed on Anvil using e.g. https://docs.chain.link/quickstarts/foundry-chainlink-toolkit before we deploy on testnet.
I will sit on this still today and also finish the twap part, if I do not make it by tomorrow would be happy if you helped on this onward.

Yesterday I had a look at the local test ChainLink RPCs. I am doing last tests for Knip CI and pushed out other tasks off my plate.  In  about 1 hour I will start working on ChainLink testing and TWAP and we should be able to hopefully finally close the issue today. In the meantime @rndquu you may check the open PR, it is still a draft, the twap and twap test needs to be completely reworked after I update the library but other parts give an overview of changes for ChainLink price feed.

@pavlovcik Permit was not generated, not sure if this is expected. As far as I understand we owe 300 USD to @gitcoindev

When I get a chance to, I need to add compute.yml to our ubiquibot-config repo. If you "edit" the uncaught error bot message you can read the error metadata.

Let's see if this works...

I'll debug it here.

There's something wrong with the Netlify environment variables then.

lol also a bug regarding qualitative analysis:
    message: "This model's maximum context length is 4097 tokens. However, your messages resulted in 4299 tokens. Please reduce the length of the messages.",

https://github.com/ubiquibot/comment-incentives/actions/runs/7309635303/job/19917431369
I'll work on the open ai issue and the env var issue.

/help

/help

Cool, I just need to push a fix regarding the Open AI token limit

Just set context length to 128k...

Can't get OpenAI to cooperate anymore.

I coerced the OpenAI relevance sampler to work, but, @rndquu perhaps you can help me implement a fix for:
Error: Error: incorrect key pair for the given ciphertext

Source https://github.com/ubiquibot/comment-incentives/actions/runs/7316071529/job/19930337990#step:5:631
Context

The bot can directly read the invoking organization's UbiquiBot Config (both the org's and repo's)
You can see in the logs that the bot reads evmPrivateEncrypted: 'OwWrEtDWl7mq79FM-mb4hbrU9uBtffvX3MPuEjcXenWocH-JS4SVYXFr0rm-wYuWHnwrzLYvatKGywShwMVCEZw6f-g2XyDIPdrEzAHCZ8WH_v76kJsVEOGEe8qRvy4z6ai0YGFpzV4iFB8NfZEg5kb9k88', just fine.
I suppose that the decryption failed due to a mismatched X25519_PRIVATE_KEY?

I don't believe I have the original one saved.

Questions

In order to just make this work, perhaps you can help me regenerate the proper X25519_PRIVATE_KEY so that we can continue to use the existing evmPrivateEncrypted?
Is this approach okay, where the bot can read the evmPrivateEncrypted and we simply store a single X25519_PRIVATE_KEY in the bot secrets?
If any partner can encrypt their EVM private key, doesn't that mean they necessarily have access to our source X25519_PRIVATE_KEY?
Are there any improvements you can suggest?

@pavlovcik i thoght we'd nailed the private key bug?

I'm not sure. To be honest I never felt mastery around the X25519 key related feature so it's possible that I'm making a mistake in the configuration.

@pavlovcik

You can see in the logs that the bot reads evmPrivateEncrypted: 'OwWrEtDWl7mq79FM-mb4hbrU9uBtffvX3MPuEjcXenWocH-JS4SVYXFr0rm-wYuWHnwrzLYvatKGywShwMVCEZw6f-g2XyDIPdrEzAHCZ8WH_v76kJsVEOGEe8qRvy4z6ai0YGFpzV4iFB8NfZEg5kb9k88', just fine.

I've just successfully decrypted this private key for the 0xf87ca4583c792212e52720d127e7e0a38b818ad1 address. I will DM you x25519_private_key and x25519_public_key for you to double check.

I understand that the decryption failed due to a mismatched X25519_PRIVATE_KEY?

Yes

I just checked the source code (we obviously need a more secure replacement for this onboarding UI.) and used the identical X25519_PRIVATE_KEY but the run still failed.

This is public key, not private, so it is safe to share it. Naming could've been better.

Is this approach okay, where the bot can read the evmPrivateEncrypted of every partner, and we simply store a single X25519_PRIVATE_KEY in the bot secrets?

Yes. The only risk is that if X25519_PRIVATE_KEY is leaked (on our side) then a malicious actor will be able to decrypt partners' private keys (if there are in public repos, not private).

If any partner can encrypt their EVM private key, doesn't that mean they necessarily have access to our source X25519_PRIVATE_KEY?

No. Partners encrypt with X25519_PUBLIC_KEY (which is available in public) while for decrypting X25519_PRIVATE_KEY is necessary which is stored only on the bot's side (i.e. backend).

Are there any improvements you can suggest?

You've already proposed that we need critical env variables rotation mechanism and X25519_PRIVATE_KEY is the 1st candidate for such rotation.

Sorry for clouding the conversation on this with debugging the bot!
@rndquu @gitcoindev @molecula451 I have concerns around using Chainlink and censorship resistance. Chainlink is a centralized point of failure for the protocol. Why not use the on chain TWAPs instead? Perhaps we can have a planned upgrade sometime in late 2024 to change the oracles?

Indeed a well thought chainlink it's a heavility centrilized organization which the only good thing they provide it's infrastructure as a service and well known set of poketing of smart contracts, and use cases in heavily demanded protocol, but that's it

ChainLink is an industry standard but yes, this should not be a single point of failure.
When I started working on TWAP I realized the security implications of using just TWAP, and expected some findings from the audit as well. We should think this through. Since the contracts were partially based on Frax I had a look at latest oracles there and their implementation is very good in this matter.
https://docs.frax.finance/frax-oracle/frax-oracle-overview
https://docs.frax.finance/frax-oracle/how-it-works
https://docs.frax.finance/frax-oracle/advanced-concepts
The executive summary is as follows: to retrieve frxEth / ETH price they use dual oracles that combine ChainLink and Uniswap V3  TWAP feeds into one feed, provided lowest and highest prices from those two.
In their case for frxEth price is bounded to be 0.7 at the lowest (0.7 frxEth = 1 ETH) and 1 at the highest (1 frxEth = 1 ETH).
On top of that they have implemented a Frax Oracle contract that uses feeds from above dual oracles for different pairs and different networks.
If one of the price providers in dual oracle fails / is stalled or censored, the second price will be used. Perhaps some blogs or articles explain this in more detail.
The oracles implementation repository was created around 4 months ago https://github.com/FraxFinance/frax-oracles
I think it also might be beneficial to dig into Sherlock past contests to see if they already audited those oracles or some other projects that use them and the findings they had. If no such audits are available we could as well try to find other approaches for oracles from past security audits and try to create an overview of the available most secure solutions. Then pick one and upgrade the current solution.

Sorry for clouding the conversation on this with debugging the bot!
@rndquu @gitcoindev @molecula451 I have concerns around using Chainlink and censorship resistance. Chainlink is a centralized point of failure for the protocol. Why not use the on chain TWAPs instead? Perhaps we can have a planned upgrade sometime in late 2024 to change the oracle(s)?

We'll gradually move to smth like "take the median price from chainlink, curve, uniswap, other oracle provider". Right now chainlink is the fastest to implement, safest and most reliable solution.

Hey guys, as a workaround I salvaged these permits from the GitHub Actions logs:

            [ 86 WXDAI ]

@pavlovcik

Contributions Overview

ViewContributionCountReward

IssueComment1184.3
ReviewComment11.7

Conversation IncentivesCommentFormattingRelevanceRewardWhen I get a chance to, I need to add compute.yml to our ubiquib...3.1-3.1Let\'s see if this works......0.6-0.6I\'ll debug it here....0.5-0.5There\'s something wrong with the Netlify environment variables t...1-1lol also a bug regarding qualitative analysis:
mess...
	6.5

code:
  count: 1
  score: "1"
  words: 0

-6.5Cool, I just need to push a fix regarding the Open AI token limi...1.4-1.4Just set context length to 128k......0.6-0.6Can\'t get OpenAI to cooperate anymore....0.7-0.7I coerced the OpenAI relevance sampler to work, but, @rndquu per...61.2
h3:
  count: 3
  score: "3"
  words: 3
a:
  count: 4
  score: "4"
  words: 13
li:
  count: 11
  score: "11"
  words: 253
code:
  count: 10
  score: "10"
  words: 14

-61.2I\'m not sure. To be honest I never felt mastery around the X2551...3-3Sorry for clouding the conversation on this with debugging the b...5.7-5.7Curve metapool seems to make the most sense to me. Can also cons...1.7-1.7

            [ 16.8 WXDAI ]

@molecula451

Contributions Overview

ViewContributionCountReward

IssueComment25.9
ReviewComment510.9

Conversation IncentivesCommentFormattingRelevanceReward@pavlovcik i thoght we\'d nailed the private key bug?...1-1Indeed a well thought chainlink it\'s a heavily centrilized organ...4.9-4.9> I am finally back to this issue, in the background I spent qui...0.7-0.7@rndquu are you sure? i\'m seeing a deployed chainlink LUSD/USD o...2.2-2.2> > @rndquu are you sure? i\'m seeing a deployed chainlink LUSD/U...3-3https://github.com/aave/gho-aip/blob/90ddf49b65007da9ba6dbf9f80c...1.4-1.4> Yeah, I see that\'s a live `LUSD/USD` oracle but I can\'t unders...3.6
code:
  count: 1
  score: "1"
  words: 2

-3.6

            [ 554.1 WXDAI ]

@gitcoindev

Contributions Overview

ViewContributionCountReward

IssueTask1.00300
IssueComment80
IssueComment890.5
ReviewComment1581.8
ReviewComment1581.8

Conversation IncentivesCommentFormattingRelevanceRewardNo progress was made, I will try to find the root cause and hope...---I think I found a way to implement this correctly.
Runni...-
code:
  count: 2
  score: "0"
  words: 0

--<a href="https://github.com/ubiquity/ubiquity-dollar/issues/8


Any reason toKeyPair on blsKey dont return an full ID?

https://github.com/transmute-industries/did-key.js/blob/master/packages/bls12381/src/Bls12381G2KeyPair.ts#L94
Im using this lib to generate a key to be used towards mattrs json-ld bbs signature.
We ended up having to do this little magic: https://gist.github.com/S3bb1/ddd74704c0f9980d93e4e6302439594c#file-index-js-L54 to get the JSON LD to work.
Or is it something we are missing that we do wrong?
In this gist we convert the buffer to bs58, but toKeyPair does that for us. So using that method in the updated version. But I still have to update the ID for things to work. Could not toKeyPair just return a different ID, or where are things going wrong in the loop.
I have another issue going over at mattr: https://github.com/mattrglobal/jsonld-signatures-bbs/issues/122

@vongohren yea... this is related to the relative refs, debate... see
https://github.com/w3c-ccg/did-method-key/pull/36#issuecomment-855014917
TL;DR ... relative ref ids are terrible.... for exactly the reason you have indicated...
we have similar code all over the place... and we are convinced that relative refs are terrible, especially if you are doing linked data operations often (which we are).
The next versions of all our key pair classes and did key will use absolute IRIs everywhere.

@OR13 thanks for pointing this out. Then atleast im not the crazy one. We will see where this goes then!


Yabai not showing up in Accessibility and plist could not be installed

I'm trying to install yabai on my M1 Pro Macbook, I partially disabled SIP and followed the installation guide. I even uninstalled everything and retried multiple times always ending up with the Error that the plist could not be installed.
yabai --start-service
yabai: service file '/Users/snex/Library/LaunchAgents/com.koekeishiya.yabai.plist' is not installed! attempting installation..
yabai: service file '/Users/snex/Library/LaunchAgents/com.koekeishiya.yabai.plist' could not be installed! abort..

Currently I have the installation with HEAD, but that didn't resolve the issue.
Besides getting that error when trying to start yabai I also never got prompted to activate Yabai in the Privacy & Security Accessibility Settings. It's not showing up. I tried manually adding it like shown in the HEAD installation guide, but the shown directory is not where it's installed, I guess because its a M1 Mac. I tried /opt/homebrew/bin/yabai and /opt/homebrew/opt/yabai/bin/yabai but it didn't work. It's also just showing the terminal and not the Yabai Icon.

Other Threads said you need to manually create the LaunchAgent Folder but I already have it and its not working. Maybe I understood it wrong though and it needs to be in a different location. Here a screenshot with the path at the bottom:

I have no idea whats the problem and I'm not well versed in coding or to troubleshoot the issue further myself.
If there already is a thread addressing all issues i mentioned, then I'm sorry. I couldn't find a thread that helped me fix my issues.

Hi my memory is a bit blurry because I had the same problem a week ago with no prompt in Accessibility, but I did
yabai --uninstall-service
yabai --install-service
yabai --start-service

I had a plist file but it wasn't accepted so I reinstalled it ,and yabai popped up with its logo instead of the terminal in Accessibility this time. Hope this helps. Before the fix I just used yabai& and left it in terminal lol

Hey thanks for the idea, but that doesn't work either. It gives me the same error:
yabai --uninstall-service
yabai: service file '/Users/snex/Library/LaunchAgents/com.koekeishiya.yabai.plist' is not installed! abort..

How about if you omit the yabai --uninstall-service? My plist didn't work at the time so I used that but you should be able to skip that since you don't have a plist at all.

I think I tried all possible combinations of those commands already
yabai --install-service does nothing, not even giving me any error but uninstalling or starting gives me said error:
snex@Yeeee-Macbook ~ % yabai --install-service
snex@Yeeee-Macbook ~ % yabai --start-service
yabai: service file '/Users/snex/Library/LaunchAgents/com.koekeishiya.yabai.plist' is not installed! attempting installation..
yabai: service file '/Users/snex/Library/LaunchAgents/com.koekeishiya.yabai.plist' could not be installed! abort..

I have the same problem

This is likely caused by an update in brew eventually turning  the plist/service description warning on installation into an error.
@koekeishiya - this is an important one in urgent need of a fix.

I reinstalled this from head, following the instructions here:
https://github.com/koekeishiya/yabai/wiki/Installing-yabai-(from-HEAD)
After running with yabai --start-service, everything worked as expected.

It still doesn't work for me, maybe I'm doing something severely wrong but I am following the instructions... I think the plist should be created automatically on install, which isn't the case for me and that gives me a lot of error messages as shown in the previous posts

same issue +1
with 5.0.7

What worked for me is to replace the PATH string in the plist with the one from homebrew plist (e.g. sketchybar plist) as my plist contains invalid characters in the PATH that makes launchctl not able to launch the plist properly.
Once I fixed that I restart my computer and then run yabai --start-service again and then it works (of course I also do the same for skhd as well)

Can you elaborate on this solution? I've done all the other recommended fixes and they have not worked

Can you elaborate on this solution? I've done all the other recommended fixes and they have not worked

Here is my yabai launchagents plist
it sits under ~/Library/LaunchAgents/com.koekeishiya.yabai.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.koekeishiya.yabai</string>
    <key>ProgramArguments</key>
    <array>
        <string>/opt/homebrew/bin/yabai</string>
    </array>
    <key>EnvironmentVariables</key>
    <dict>
        <key>PATH</key>
        <string>/opt/homebrew/bin:/opt/homebrew/sbin:/usr/bin:/bin:/usr/sbin:/sbin</string>
    </dict>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <dict>
        <key>SuccessfulExit</key>
 	     <false/>
 	     <key>Crashed</key>
 	     <true/>
    </dict>
    <key>StandardOutPath</key>
    <string>/tmp/yabai_penn.out.log</string>
    <key>StandardErrorPath</key>
    <string>/tmp/yabai_penn.err.log</string>
    <key>ProcessType</key>
    <string>Interactive</string>
    <key>Nice</key>
    <integer>-20</integer>
</dict>
</plist>

@pencilcheck yabai just runs char *path_env = getenv("PATH"); and inserts into the generated file using fprintf. Can you open your terminal, run echo $PATH and upload the output?

@pencilcheck yabai just runs char *path_env = getenv("PATH"); and inserts it into the generated file using snprintf. Can you open your terminal, run echo $PATH and upload the output?

I don't think it makes sense to paste it here, since I have a lot of work sensitive stuff in there I don't want to put it in the public.
The problem is that there are invalid characters that somehow is valid in PATH and shell but not valid when running inside launchagent.


#76 Better logging for CI

If it comes to iOS devices, as I looked through tasker/ios.js it has pretty good logging output, so for now I didn't make any changes. If it is not enough, I will try to make it better, just let me know.

Hi @mlesnic, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!
You've already signed the contribution license agreement. Thanks!
The agreement was validated by Microsoft and real humans are currently evaluating your PR.
TTYL, MSBOT;

Please check the one non-blocking comment but otherwise

Review status: 0 of 1 files reviewed at latest revision, 1 unresolved discussion.

tasker/android.js, line 201 at r1 (raw file):

        if (str.length > 512) str = str.substr(0, 512);
        logme("Error: problem running Android apk(" + class_name + ") on device " + deviceName, str, "");
        //logme("Error: problem running Android apk(" + class_name + ") on device " + deviceName, str, "");

NB: Why is this comment here?

Comments from Reviewable


Added validation and improved home page

I created à Task class to handle the validation of the to do lists tasks. Now the user has a new option in the menu to ' Validate a chosen task'. I also made improvements on the application to make it more easy to use. Theses improvements include: a better home page, clearing the terminal, showing the current tasks when the user has to make an operation.
Fix #2
Fix #3

Thank you for these improvements!
Can you just change the home page as the TO DO is always showing up and the menu is underneath with all the possibilites of your version except "show tasks".
Thank you !


Create add-dependabot-pr-to-project.yml

Workflow to add dependabot pull requests to the project

@smcvb could you share the secret with this repo?

@smcvb could you share the secret with this repo?

The token should be in place as we speak!


Add OAuth Service to Microshift binary

Signed-off-by: Ricardo Noriega<EMAIL_ADDRESS>Closes #240

/retest

/lgtm

The OAuth Server has been subsequently removed again in

https://github.com/openshift/microshift/pull/721

@jiridanek , if we need OAuth service API in MicroShift, we need a justification for it.
Please, work with @DanielFroehlich on the use-case and justification.


[rv_core_ibex] Switch single to multi-bit encoding for Lockstep Enable

Currently, a single bit controls whether the outputs of the main and shadow Ibex core are compared, i.e., a single bit is responsible for enabling / disabling the lockstep:
https://github.com/lowRISC/opentitan/blob/042415198f3dc6b3bc387c669c7e9cf982d208e2/hw/vendor/lowrisc_ibex/rtl/ibex_lockstep.sv#L461
Hence, a permanent stuck-at 0 fault could allow an adversary to reduce the FI resilience of Ibex.
I would suggest extending this signal to a multi-bit encoded signal.
FYI @vogelpi @msfschaffner @johannheyszl.

I agree, something like a MuBi4 or MuBi8 would be adequate for this enablement... I believe other places use MuBi8 for CSR-based enablement, so we could go with that.

Thanks for the comment @msfschaffner. Yes, I think this should be fairly easy to implement - I'll work on it.

I've provided a fix in PR#2129 in the Ibex repository.

Closing as the fix is merged into Ibex, bringing the fix into OT is covered by https://github.com/lowRISC/opentitan/issues/21128


Kong binary not found with new docker image

Hi !
I want update the docker image for kong with the new repository.
I add the image kong/kubernetes-ingress-controller:1.3.0.
When I apply my helm chart I have the following error
/bin/sh: kong: not found
Can you update the documentation and helm chart with the new repository please ?

Can you confirm what your Kong image is? Do you use a custom image?
The controller image/container shouldn't throw that error, since we don't execute kong in it. That error should come one of the migrations containers, where we do. However, the standard (official) image shouldn't have any such issue--it does include a kong executable that's available from its PATH.

You can try k8s command : kubectl -n kong create deployment ingress-kong  to kong/kubernetes-ingress-controller:1.3.0 isolate docker issue or local command tool issue.


Implement a file-based database for simulation results

Is your feature request related to a problem? Please describe.
The goal of our initiative is to generate graphs such as

In the above graph, each point is:

one quantum circuit, generated by tqec for a given value of k, and that can be represented as a stim file,
a large number of simulations performed by stim.

One problem is that Stim simulations are not free, and computing one point from the above graph can take minutes to hours of computational time.
Currently, we have no clever way of storing such data, meaning that the stim simulations have to be re-done each time we want to generate a new graph.
Describe the solution you'd like
We should have a database-like way of storing simulation data. There are multiple requirements:

we should be able to retrieve easily already existing results,
data should be written on disk,
we should be able to add new results to existing ones (typically, start a simulation with 1000 shots to see the overall look of the plot and check that there is not mistake, and once obvious mistakes have been corrected be able to launch 999000 more shots to reduce the error bars),
we should be able to remove existing results, but this should be hard to do (i.e., be wary of accidental data loss)

Note that simulation results might be quite heavy in terms of memory, so an optimised storage would be a plus.

We can think about utilizing the existing sampling tool like sinter. But as far as I know, currently there is no API provided by sinter to store the intermediate sampled detectors/observables to files.

We can think about utilizing the existing sampling tool like sinter. But as far as I know, currently there is no API provided by sinter to store the intermediate sampled detectors/observables to files.

Yep, the goal of this issue is not the generation (which will very likely be handled by sinter as you note) but rather the storage of generated results.

Craig: can you comment on how Stim/sinter simulation results can be
systematically stored so that one could later gather additional data for a
plot to improve its statistics or explore a wider range of code distances
and error rates?
On Fri, Jul 26, 2024 at 1:14 AM Adrien Suau @.***>
wrote:

We can think about utilizing the existing sampling tool like sinter. But
as far as I know, currently there is no API provided by sinter to store
the intermediate sampled detectors/observables to files.
Yep, the goal of this issue is not the generation (which will very likely
be handled by sinter as you note) but rather the storage of generated
results.
—
Reply to this email directly, view it on GitHub
https://github.com/QCHackers/tqec/issues/273#issuecomment-2252212612,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAKAXTEDMPTVC5TETCVFNTTZOIAOVAVCNFSM6AAAAABLOFRWF2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENJSGIYTENRRGI
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

Craig: can you comment on how Stim/sinter simulation results can be systematically stored so that one could later gather additional data for a plot to improve its statistics or explore a wider range of code distances and error rates?

Whenever I have a task like that, I really follow the database point of view:

I try to find a set of small data points that uniquely identify an "experiment" (in database terms, the primary key),
I try to store in the "experiment" (i.e., the value associated to the primary key) whatever I may need in the future.

In this specific case, I think that the primary key will be composed of:

an algorithmically generated (hash-like) key representing the experiment being benchmarked. For the moment, with the limited use-cases we explicitly target, I guess that we can compute such a hash (or a unique value if we really want to avoid any collision) by only considering:

each block identifier ("xzx", "zxz", "xozh", ...),
each block position (i.e., the position of its origin, that is uniquely defined for each block).

These can be directly obtained from the SketchUp file representing the computation and should be:

robust enough in the sense that if the computation does not change, the value should not change,
sensitive enough to avoid representing 2 different computations by the same value.

the value of k (determining the size of our logical qubits, and code distance),

the noise level might be tricky because of the floating-point representation, but there are ways around it that I think should be satisfactory for this use case, e.g., representing the noise level e = powerOfTenMantissa * 10**(-negativePowerOfTen) as a tuple (powerOfTenMantissa, negativePowerOfTen) where 0 <= powerOfTenMantissa <= 1 can be represented as a fraction.

The data stored will have to include the outputs of stim simulations (depending on what we need, direct measurements or detection events), and I think some metadata could be added to such a value such as:

date of data generation,
library versions used to generate the data,
custom annotations/tags provided by the user (e.g., "confidential", "internal use only", "public") to be able to filter out some data,
...

In terms of format, and because the main data we will store is binary anyway, I do not have any preferences and it can be anything (a real database, a file/folder-based storage, ...).

Sinter always hashes the circuit it was asked to simulate and the decoder
it was asked to use, producing a cryptographically strong id. This id is
stored alongside any statistics. When you merge multiple files, you match
up statistics by this id when deciding whether or not to combine two
entries into one entry.
I don't think "how to store stats" is particularly important to the goal of
input-skeleton-output-circuit. That's later.
On Fri, Jul 26, 2024 at 6:32 AM Austin Fowler @.***>
wrote:

Craig: can you comment on how Stim/sinter simulation results can be
systematically stored so that one could later gather additional data for a
plot to improve its statistics or explore a wider range of code distances
and error rates?
On Fri, Jul 26, 2024 at 1:14 AM Adrien Suau @.***>
wrote:

We can think about utilizing the existing sampling tool like sinter. But
as far as I know, currently there is no API provided by sinter to store
the intermediate sampled detectors/observables to files.
Yep, the goal of this issue is not the generation (which will very likely
be handled by sinter as you note) but rather the storage of generated
results.
—
Reply to this email directly, view it on GitHub
https://github.com/QCHackers/tqec/issues/273#issuecomment-2252212612,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAKAXTEDMPTVC5TETCVFNTTZOIAOVAVCNFSM6AAAAABLOFRWF2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENJSGIYTENRRGI
.
You are receiving this because you are subscribed to this thread.Message
ID: <QCHackers/tqec/issues/273/2252212612 @.***>


[Feature] Bundle use client with components

Feature Request
Is your feature request related to a problem? Please describe.
To fix an issue with use client not appropriately being added when used in Next.js 13 app directory, the directive was pulled out of the bundle instead recommending adding the use client directive to the file.
This isn't ideal, where the hope would be someone could use the components in this library interchangeably without having to worry about that additional distinction
This was a regression when moving to tsup, where however it's being bundled / compiled isn't supported or generally working.
Describe the solution you'd like
use client should be bundled with the components that require it, at a minimum CldImage as it uses useState and I believe it's additionally needed due to the loader prop which is a function.

Function props can't be passed into client components.
We might need to give this one more thought

Maybe I'm missing something but that's how the Image component works for this type of thing, by passing a function to the loader prop

Next/Image is a server component.
You can't pass a function from a server component to a client component because functions can't be serialised.
Ideally the CldImage component could be refactored to remove the need for useState allowing it to be server rendered, at which time this whole "use client" issue goes away anyway.
I might take a look at that at some point if you don't get to it first.

@colbyfayock just noting here also that React 18 "Shared Components", once supported by NextJS might be another way forwards.

ah got it, thanks for the clarification
currently state is being used in order to force an update to the Next Image component, particularly in the event that the component receives a 423 error, which means the image is processing, that we poll for the results, and refresh the image once it's processed
its helpful for tools like background removal

looks like one option here is multiple entry points: https://github.com/timolins/react-hot-toast/blob/main/tsup.config.ts

clarification on this thread - Next IMage is a Client component as of July 17th: https://github.com/vercel/next.js/issues/41924#issuecomment-1637940636
the multiple entry points work well, going to spin up a draft PR, though id like to try to solve a way for everything to still be importable from the top level module


Is this driver good for V3 as well?

I think v2 and v3 are the same (could be wrong):

So is it?


Introduce refresh visit action and method to refresh the current page

Related issues:

https://github.com/hotwired/turbo-ios/issues/136#issuecomment-1944578518
https://github.com/hotwired/turbo-ios/issues/175
https://github.com/hotwired/turbo/issues/1150

This PR adds a refresh visit action and changes Session#refresh to use the current URL if not provided explicitly.
Add refresh visit action
The motivation behind it is to support more granular behavior when doing refreshes. Today, a 'refresh' is essentially a replace action to the current URL. There's no easy way to know if this action was triggered by a user interaction or by a turbo stream refresh. By adding a granular refresh action, developers can handle refreshes (eg. broadcasted as streams) differently from replace actions (form submissions, drive navigations, ..).
An example of this would be in Turbo iOS, where there's no way to differentiate between a user-triggered replace action (ie. pull-to-refresh) or a programatically triggered refresh (ie. broadcasts) (see eg. Turbo iOS #136 and Turbo iOS #175).
With this change, developers (and library maintainers of eg. Turbo iOS) would able to differentiate between replace actions and refresh actions and handle eg. showing loading indicator behavior differently. As an example we'd like show a more subtle loading indicator on refresh actions than on replace actions.
Make Session#refresh refresh current page unless specified
Secondly, the Turbo.session.refresh(..)  method is updated to use the current URL of the page. This allows developers to programatically refresh the current page simply by calling Turbo.session.refresh() without having to explicitly provide the current page's URL.
A common use-case could be refreshing (and morphing) a page when it becomes re-focused as a tab, to always ensure that the content is up to date:
addEventListener("visibilitychange", () => {
  if (document.visibilityState === "visible") {
    Turbo.session.refresh()
  }
})

I think this would also be usable for Turbo iOS and Turbo Android apps with multiple sessions, where other sessions could be refreshed instead of reloaded when a mutating request has been made in a single session. See: https://github.com/hotwired/turbo-ios/pull/150

Just noticed that there's a slightly similar PR approach-wise in https://github.com/hotwired/turbo/pull/1145 although that PR deals with a different issue (navigating to another URL than the current page with morphing). I think the two are unrelated in that this PR explicitly not allows morphing between two different path names.

Closing as morphing has landed in Turbo Native without this 🎉

@pfeiffer any idea what the best upgrade path is?
For example, if I publish a new version of iOS with the updated Turbo Native, there will be some users with the change and others without the change.
I probably wouldn't want users on the older version of the app to see the previous behavior

The Turbo Native adapters are compatible with both Turbolinks and Turbo 8.
Your users using an older version of the app would still be able to do that; they would not get the benefit of refreshes though. You could conditionally subscribe to broadcasts on your website, so that users of older app versions without morph support, would not receive any broadcasted refreshes.


cargo-shear: cleanup and set build env var

Description of changes
Sets the SHEAR_VERSION environment variable during build for cargo-build --version (see https://github.com/Boshen/cargo-shear/blob/a0535415a3ea94c86642f39f343f91af5cdc3829/src/lib.rs#L20-L23, https://github.com/Boshen/cargo-shear/blob/a0535415a3ea94c86642f39f343f91af5cdc3829/.github/workflows/release-binaries.yml#L39). Adds tests to confirm this as well.

Also cleans up generally to better match Nixpkgs conventions.
Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[x] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
24.05 Release Notes (or backporting 23.05 and 23.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ x Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Result of nixpkgs-review pr 309531 run on aarch64-linux 1

1 package built:

cargo-shear


Avoid false negatives in backstop-test

Enable usePreciseMatching to truly have a mismatch threshold of 0
https://github.com/garris/BackstopJS/blob/master/README.md#modifying-output-settings-of-image-diffs

Merging to test over the coming weeks.


save single frame can't get depth data

Required Info

Camera Model
{ D435 }

Firmware Version
(latest)

Operating System & Version
Win 10

Kernel Version (Linux Only)
N/A

Platform
PC

SDK Version
{ 2.19.0 }

Language
{ python }

Segment
{others }

Issue Description
<Describe your issue / question / feature request / etc..>
Hi,
I was trying to save single frame with the save_single_frameset() in python
I have the same time the recorder. but the depth file I got have no depth data
the first one is with recorder

and the second one is with save_single_frameset

the depth data with recorder is normal, and the one with single frameset is always 0.00
and I tried to read the recorded bag file and apply save_single_frameset on the frame, also got 0.00
the code I used is
saver = rs.save_single_frameset()
frames = pipeline.wait_for_frames()
saver.process(frames)

I got this from #2588 , #3671  and #3704
If this is the right way or should I add some other lines?
https://drive.google.com/open?id=1gwyfJPE9nwYzyF-xGc4gqyrfuHttErim
the frameset and recorder file is here

The difference seems to be at the streaming,
which in normal recorder has streams but in the single frameset came to be Unkown Stream
would it be the issue?

@RealSenseCustomerSupport
I’d kindly ask why is this issue closed?
I mean I saw the example in the three other issues and tried to use it
Can you shortly answer if it’s possible?

@RealSenseCustomerSupport
Hi, I'm still working on the save_single_frame function but still don't have any clue.
I would like to ask how to get the depth measure or the 3D coordinate x,y,z of the bag saved by this function, how it can be achieved?


[8.x] Dismiss check with session data if viaRemember

This branch is not a released LTS and this middleware only for authenticate session. Not related other components, so not needed must be defined password_hash on session data. Also remember_me cookie is permanently but session data is temporary.
Only permanent verification is required on here.
Related: https://github.com/laravel/framework/pull/33877 https://github.com/laravel/framework/pull/33886 https://github.com/laravel/framework/pull/33910
If also this is branch included in black list (like in  6.x LTS), I will not send again this PR. Thanks.

There is no significant reason to change this please stop spamming this PR.

@taylorotwell Okay. 👍


Write Wrappers for at least 2 "Trusted Builders"

Examples of two "trusted builders" are:

"Github Actions"
"Google Cloud Build"

What do the wrappers do? I thought they only verify the signature and generate some authorization logic predicates/facts based on the results. Cannot we use a single wrapper for this functionality?

IDK but maybe the outputs from "Github Actions" and "Google Cloud Build" are different and so we need a wrapper for each one.

The difference is very small. Only the builder field in the provenance should be different, and the signing keys will be different too. So I think a parametric wrapper should be enough. But perhaps add a description of the wrappers' functionality, then we can decide if a single wrapper is enough or not.

OK I don't know enough about these two trusted builders yet, but at least in principle your point makes sense. I'll keep reading up on these things in the meanwhile.

When I wrote this issue I didn't understand that provenance files had builder IDs in them and that we just needed to extend the go code to read this field. This issue is essentially covered by #98 which is fixed, so this issue is also fixed.


unify offcanvas keydown event logic with modal

Description
Since the offcanvas keydown event listener behaves like the modal keydown listener, the former was refactored like the modal. Making it more readable by using positive conditions instead of negative ones.
Motivation & Context
To make refactor and bugfix separated, a new PR was opened as discussed in this comment.
Type of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[X] Refactoring (non-breaking change)
[ ] Breaking change (fix or feature that would change existing functionality)

Checklist

[X] I have read the contributing guidelines
[X] My code follows the code style of the project (using npm run lint)
[ ] My change introduces changes to the documentation
[ ] I have updated the documentation accordingly
[ ] I have added tests to cover my changes
[X] All new and existing tests passed

Live previews
N/A
Related issues
Splited from #37968

@GeoSot updated according to your review. Rebased and squashed.

It looks fin to my eyes.
Either way, we didn't have to use  event.preventDefault() and was not tested too


Update pxtextension files to use latest pxt-ml-runner-poc.

@microbit-carlos I've tweaked this PR and created a new one here https://github.com/microbit-foundation/pxt-ml-extension-poc/pull/3. After experimenting yesterday, I think these changes are required so that the extension doesn't throw errors before the user uploads their data.json file.

Thanks Rob! Would you be able to push your changes to this branch so that we can continue the conversation/review in the same PR?

I think test.ts will explode unless autogenerated.ts is included in the file list. Another option could be to add the autogenerated code to the top of test.ts?

I think test.ts will explode unless autogenerated.ts is included in the file list. Another option could be to add the autogenerated code to the top of test.ts? Otherwise, I think the rest of this PR looks good.

@microbit-carlos I think this is the answer the above problem -> 25e95a9.

@microbit-robert this is probably ready to be squashed and merged.


Pylintrc ignore imports

And run black formatting
I don't think this one will pass actions due to duplicate code check within the module.

#65 opened for the duplicate code check

Closing and reopening to retrigger merge + actions.


CI failure on TestExecThreads, might be flaky

See https://github.com/cilium/tetragon/actions/runs/12008004447/job/33469767131?pr=3163
logs_31291043166.zip

This is not exactly a failure, the test passes but there is a panic because t.Log is called after a test is completed:
PASS
panic: Log in goroutine after TestExecThreads has completed: deleting export file for TestExecThreads (/tmp/tetragon.gotest.TestExecThreads.4165764240.json)

goroutine 429 [running]:
testing.(*common).logDepth(0x400445e9c0, {0x4003d74060, 0x5f}, 0x3)
	/opt/hostedtoolcache/go/1.23.3/arm64/src/testing/testing.go:1029 +0x3cc
testing.(*common).log(...)
	/opt/hostedtoolcache/go/1.23.3/arm64/src/testing/testing.go:1011
testing.(*common).Logf(0x400445e9c0, {0x1dc5591?, 0x10?}, {0x4003e9a000?, 0xffffffffffffff01?, 0x400083c410?})
	/opt/hostedtoolcache/go/1.23.3/arm64/src/testing/testing.go:1062 +0x5c
github.com/cilium/tetragon/pkg/testutils.(*ExportFile).Close(0x4001fdc540)
	/home/runner/work/tetragon/tetragon/go/src/github.com/cilium/tetragon/pkg/testutils/filenames.go:49 +0x32c
github.com/cilium/tetragon/pkg/server.(*Server).GetEventsWG(0x4001bfe0a0, 0x40001bc280, {0x2157da0, 0x4001bfe0f0}, {0x2126f40, 0x4001fdc540}, 0x40014900c0)
	/home/runner/work/tetragon/tetragon/go/src/github.com/cilium/tetragon/pkg/server/server.go:214 +0x874
github.com/cilium/tetragon/pkg/exporter.(*Exporter).Start.func1()
	/home/runner/work/tetragon/tetragon/go/src/github.com/cilium/tetragon/pkg/exporter/exporter.go:48 +0x44
created by github.com/cilium/tetragon/pkg/exporter.(*Exporter).Start in goroutine 426
	/home/runner/work/tetragon/tetragon/go/src/github.com/cilium/tetragon/pkg/exporter/exporter.go:47 +0xac
FAIL	github.com/cilium/tetragon/pkg/sensors/exec	105.324s
FAIL
make: *** [Makefile:261: test] Error 1

Or at least that's what I get from above.
Also happened in https://github.com/cilium/tetragon/pull/3219 (the error is the same)


When rewrites are enabled, the plugin fails

When rewrites are enabled in the config.ts file, the sidebar is not automatically generated
// vitepress config.ts
import { defineConfig } from "vitepress";
import { generateSidebar } from "vitepress-sidebar";

export default defineConfig({
  rewrites: {
    "demo/test.md": "page/example.md",
  },
  themeConfig: {
    nav: [
      { text: "dmeo", link: "/demo/test" },
      { text: "javascript", link: "/javascript/basic" },
    ],

    sidebar: generateSidebar([
      {
        documentRootPath: "docs",
        scanStartPath: "demo",
        resolvePath: "/demo/",
      },
      {
        documentRootPath: "docs",
        scanStartPath: "javascript",
        resolvePath: "/javascript/",
      },
    ]),
  },
});

├─.vitepress
│  │  config.mts
│  │
│  └─theme
│          index.ts
│          style.css
│
├─demo
│      test.md
│
└─javascript
        basic.md

When I click the demo button in nav, there is no sidebar on the left side of the page

OS: [Windows 10]
Browser [Chrome]

Hello, thank you for using VitePress Sidebar.
Could you please change the resolvePath in your settings to page, which is the URL after the rewrite, and see if the issue persists?
before:
generateSidebar([
      {
        documentRootPath: "docs",
        scanStartPath: "demo",
        resolvePath: "/demo/",
      },
      {
        documentRootPath: "docs",
        scanStartPath: "javascript",
        resolvePath: "/javascript/",
      },
    ])

after:
generateSidebar([
      {
        documentRootPath: "docs",
        scanStartPath: "demo",
        resolvePath: "/page/",
      },
      {
        documentRootPath: "docs",
        scanStartPath: "javascript",
        resolvePath: "/javascript/",
      },
    ])

Regards,

Still wrong. When rewrites are not enabled, Click this button to display the demo/index.md file, and the sidebar of the left side is jump to normal

On this basis, open rewrites. Add the following in the config.ts file
rewrites: {
  "demo/test.md": "page/example.md",
},

Click the demo-index button to display the index.md file under the demo folder correctly. Click on the page button on the left to jump correctly to demo/page.html, and correctly display the content of the page.md file and the left side Sidebar. However, clicking the test button will jump to page/example.html. Although the content of the test.md file is correctly displayed, there is no sidebar on the left.
Click the demo-test button, the same is true.

According to the way you said, after modifying resolvepath to page, it is still wrong

Hi! First, well done for this plugin @jooy2. It's amazing!
I have a similar issue that could be related to this problem.
I defined a rewrites rule to rename files with same name as folder into index.md
  rewrites: {
    '^(?<rest>.*(?=\\/))?\\/?(?<dir>.+?)\\/\\2\\.md$': ':rest*/:dir/index.md',
  },

It works well, but somehow mess with the Next/Prev links.
Here is a stackblitz that reproduces the problem:
https://stackblitz.com/edit/vite-epbzzd?file=docs%2F.vitepress%2Fconfig.ts
What I noticed is everytime we get on an index file, navigation only propose the top-file of the sidebar as next link.
I thought it was the rewrites rules, but even if I apply page by page, it's still the same:
  rewrites: {
    'menu/menu.md': 'menu/index.md',
    'menu/fruits/fruits.md': 'menu/fruits/index.md',
    'menu/vegetables/vegetables.md': 'menu/vegetables/index.md',
  },

Let me know if you need more infos!

Hello! Thank you for your patience. I recently released a version that addresses the original issue and additional issues you left in the comments.
Here's the solution to @ghost's case:

Upgrade the version of vitepress-sidebar to 1.25.0.
Modify the following options:

        ...
        scanStartPath: 'demo',
        resolvePath: '/page/',
        basePath: '/demo/',
        ...

Specifying this option will satisfy the rewrite rule above, 'demo/test.md': 'page/example.md', to display the menu. However, this will display the menu, but the previous/next links will not be organized correctly.
To configure the previous/next links correctly, modify the rewrite option as follows:
  rewrites: {
    'demo/:page': 'page/:page'
  },

And modify the vitepress-sidebar' options to:
    ...
    scanStartPath: 'demo',
    resolvePath: '/page/',
    ...

For more information, see the following articles: https://vitepress-sidebar.jooy2.com/advanced-usage/multiple-sidebars-how-to
And @satche's case has been fixed with the PR you sent me.
If the issue persists, please open a new issue and I'll move this issue to complete.
Thanks!


document cross-compiling ZET and DEB

resolves #792

This branch's BUILD.md intends to use this change to the generic builder image: https://github.com/openziti/ziti-builder/pull/31


NIFI-5146 Only support HTTP or HTTPS operation for NiFi API/UI

Thank you for submitting a contribution to Apache NiFi.
In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:
For all changes:

[x] Is there a JIRA ticket associated with this PR? Is it referenced
in the commit message?

[x] Does your PR title start with NIFI-XXXX where XXXX is the JIRA number you are trying to resolve? Pay particular attention to the hyphen "-" character.

[x] Has your PR been rebased against the latest commit within the target branch (typically master)?

[ ] Is your initial contribution a single, squashed commit?

For code changes:

[x] Have you ensured that the full suite of tests is executed via mvn -Pcontrib-check clean install at the root nifi folder?
[x] Have you written or updated unit tests to verify your changes?
[ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?
[ ] If applicable, have you updated the LICENSE file, including the main LICENSE file under nifi-assembly?
[ ] If applicable, have you updated the NOTICE file, including the main NOTICE file found under nifi-assembly?
[ ] If adding new Properties, have you added .displayName in addition to .name (programmatic access) for each of the new properties?

For documentation related changes:

[x] Have you ensured that format looks appropriate for the output in which it is rendered?

Note:
Please ensure that once the PR is submitted, you check travis-ci for build issues and submit an update to your PR as soon as possible.

If NiFi is configured with both HTTP and HTTPS settings present, startup will fail and the error will look like the following:
2018-05-04 10:01:27,990 WARN [main] org.apache.nifi.web.server.JettyServer Both the HTTP and HTTPS connectors are configured in nifi.properties. Only one of these connectors should be configured. See the NiFi Admin Guide for more details
2018-05-04 10:01:27,990 WARN [main] org.apache.nifi.web.server.JettyServer HTTP connector:   http://:8080
2018-05-04 10:01:27,991 WARN [main] org.apache.nifi.web.server.JettyServer HTTPS connector: https://:8443
2018-05-04 10:01:27,991 ERROR [main] org.apache.nifi.web.server.JettyServer NiFi only supports one mode of HTTP or HTTPS operation, not both simultaneously. Check the nifi.properties file and ensure that either the HTTP hostname and port or the HTTPS hostname and port are empty
2018-05-04 10:01:27,994 WARN [main] org.apache.nifi.web.server.JettyServer Failed to start web server... shutting down.
java.lang.IllegalStateException: Only one of the HTTP and HTTPS connectors can be configured at one time
	at org.apache.nifi.web.server.JettyServer.configureConnectors(JettyServer.java:608)
	at org.apache.nifi.web.server.JettyServer.<init>(JettyServer.java:153)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at org.apache.nifi.NiFi.<init>(NiFi.java:150)
	at org.apache.nifi.NiFi.<init>(NiFi.java:71)
	at org.apache.nifi.NiFi.main(NiFi.java:292)
2018-05-04 10:01:27,995 INFO [Thread-1] org.apache.nifi.NiFi Initiating shutdown of Jetty web server...
2018-05-04 10:01:27,996 INFO [Thread-1] org.apache.nifi.NiFi Jetty web server shutdown completed (nicely or otherwise).

Will review...

@kevdoran Fixed the copy/paste error and added an explicit unit test to ensure that mistake is not made again. Thanks.


regression detector: change baseline variant from latest main to merge base

What does this PR do?
This PR changes a GitLab CI configuration that runs the Single Machine Performance (SMP) regression detector so that it runs on the head of the PR (as the comparison variant) and the most recent commit of main (as a baseline variant) that satisfies both the following two criteria:

is accessible from the commit history of PR's HEAD
has a container image in SMP's ECR (which mirrors parts of Agent CI's ECR)

To compute the SHA of the baseline variant, the regression detector job configuration starts at the merge base of the PR with main and queries SMP's ECR to see if an image exists for that commit. If such an image does not exist, the ECR query repeats on the first parent of the commit queried in the previous iteration. The iteration terminates when one of the following three criteria are satisfied (in decreasing order of precedence):

an image exists for the commit
the commit has no ancestors in main
the CI job times out

If this loop terminates due to the second or third criteria, the regression detector will not be run on the PR. This situation can occur due to an age-based image expiration policy in ECR if the merge base commit is sufficiently old. In that scenario, rebasing the PR onto a sufficiently recent commit in main is recommended.

Motivation
We'd like to run the regression detector to compare a PR with its merge base because that comparison is easier to reason about than the current regression detector configuration. The current regression detector configuration compares a PR with the latest version of main, which may contain commits that are not in the PR.

Additional Notes
Ideally, to account for interactions resulting from merging the PR into main, we would compare that hypothetical merge commit to its parent from main. The approach proposed in this PR neglects those interactions. Both the execution time of that "ideal" approach and the developer effort required to implement it are prohibitive, which motivates the approach taken in this PR.
We believe the risks in neglecting these merge interactions can be mitigated by running a variation of the same analysis nightly that compares successive commits in main after the fact, if necessary. To limit review burden and development effort, we consider implementing that mitigation strategy out of scope of this PR; we mention it here for completeness.

Possible Drawbacks / Trade-offs
Using the merge base commit as the baseline variant costs additional developer effort and slightly increases maintenance burden and complexity. We believe this cost is worthwhile because this change will make regression detector results easier to explain.

Describe how to test/QA your changes
Once complete, the changes in this PR can be tested by running the Agent CI pipeline and examining the regression detector output.

Reviewer's Checklist

[x] If known, an appropriate milestone has been selected; otherwise the Triage milestone is set.
[x] Use the major_change label if your change either has a major impact on the code base, is impacting multiple teams or is changing important well-established internals of the Agent. This label will be use during QA to make sure each team pay extra attention to the changed behavior. For any customer facing change use a releasenote.
[x] A release note has been added or the changelog/no-changelog label has been applied.
[x] Changed code has automated tests for its functionality.
[x] Adequate QA/testing plan information is provided if the qa/skip-qa label is not applied.
[x] At least one team/.. label has been applied, indicating the team(s) that should QA this change.
[x] If applicable, docs team has been notified or an issue has been opened on the documentation repo.
[x] If applicable, the need-change/operator and need-change/helm labels have been applied.
[x] If applicable, the k8s/<min-version> label, indicating the lowest Kubernetes version compatible with this feature.
[x] If applicable, the config template has been updated.

Updated pull request description to reflect current status.


Misleading console output for a successful publish

Version(s)
0.1.12
Describe the bug
When publishing a library, even if the publish is successful, exceptions are printed to the console:
Exception in thread "Thread-5" org.eclipse.jgit.errors.TranslationBundleLoadingException: Loading of translation bundle failed for [org.eclipse.jgit.internal.JGitText, en_US]
        at org.eclipse.jgit.nls.TranslationBundle.load(TranslationBundle.java:141)
        at org.eclipse.jgit.nls.GlobalBundleCache.lookupBundle(GlobalBundleCache.java:64)
        at org.eclipse.jgit.nls.NLS.get(NLS.java:125)
        at org.eclipse.jgit.nls.NLS.getBundleFor(NLS.java:101)
        at org.eclipse.jgit.internal.JGitText.get(JGitText.java:28)
        at org.eclipse.jgit.util.FS$GobblerThread.setError(FS.java:1499)
        at org.eclipse.jgit.util.FS$GobblerThread.run(FS.java:1469)
        at com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:705)
        at com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:202)
Caused by: java.util.MissingResourceException: Can't find bundle for base name org.eclipse.jgit.internal.JGitText, locale en_US
        at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:2045)
        at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1683)
        at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1586)
        at java.util.ResourceBundle.getBundle(ResourceBundle.java:1280)
        at org.eclipse.jgit.nls.TranslationBundle.load(TranslationBundle.java:138)
        ... 8 more
Caused by: java.lang.ClassCastException: org.eclipse.jgit.internal.JGitText cannot be cast to ResourceBundle
        at java.util.ResourceBundle$Control.newBundle0(ResourceBundle.java:3211)
        at java.util.ResourceBundle$Control.newBundle(ResourceBundle.java:3151)
        at java.util.ResourceBundle.loadBundle(ResourceBundle.java:1984)
        at java.util.ResourceBundle.findBundle(ResourceBundle.java:1770)
        at java.util.ResourceBundle.findBundle(ResourceBundle.java:1722)
        at java.util.ResourceBundle.findBundle(ResourceBundle.java:1722)
        at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1656)
        ... 11 more

Also at the end some URLs are shown so that one can check if the publish was successful, e.g.
 👀 Check results at
  https://oss.sonatype.org/content/repositories/public/org/virtuslab/iskra_3/0.0.2
before they land at
  https://repo1.maven.org/maven2/org/virtuslab/iskra_3/0.0.2

However they both don't work because they're missing a / at the end.
Expected behaviour
No exceptions shown and correct URLs

URL part has been fixed with #1535

Or wait, was I too hasty closing this?

I need to give it one more check regarding the exception thrown.

I couldn't reproduce the exceptions shown above, so I suppose we can close the issue.


Display hierarchical structure in category page

Greetings! Thanks for making the theme, I really like it and start using it in my blog.
One problem I faced is that currently the category page is not able to display the hierarchy because it simply loops over site.categories.
In Hexo, the categories are designed to be hierarchical while tags are not (here is Hexo docs).
So I wrote a simple helper adapted from hexo's list_category helper, and also keep the style of categories.ejs from your theme. It's already used in my blog's category page so you can see what the result is like.
The change is, suppose we only have one post, and it belongs to category A then subcategory B then subcategory C, it then will only be displayed in category A > subcategory B > subcategory C. Note category A and subcategory B will not be shown at all because there are no posts directly under them.
If you think this feature is worth supporting, I am happy to submit a PR for it. :)
Cheers!

@chao1995  Yeah, sure. wonderful function for me and I believe it's worth to support for this project.
So just submit your PR and I'll appreciate that. thank you @chao1995 :+1:

@iTimeTraveler Thanks for your reply! I will submit the PR in the next couple of days. :)