Correctly desugar mod and slices

Using both modulo (a % b) and slice syntax (arr[1:2:2]) failed in all cases because the parser tries to desugar them as intrinsics rather than stdlib functions. These intrinsics do not exist and failed with intrinsic not found errors. This PR expands modulo and slice syntax into std.mod() and std.slice() respectively.
$ cat tst.jsonnet
{
  a: 5 % 2,
  b: "foo-%s" % 99,
  c: "abcde"[0:3:2],
}
$ jsonnet tst.jsonnet
{
   "a": 1,
   "b": "foo-99",
   "c": "ac"
}
# Before
$ jrsonnet tst.jsonnet
intrinsic not found: mod
    /Users/akursell/dev/jrsonnet/tst.jsonnet:2:6-12: function <std.mod> call

# After
$ jrsonnet tst.jsonnet
{
   "a": 1,
   "b": "foo-99",
   "c": "ac"
}

Oh, this is regression caused by https://github.com/CertainLach/jrsonnet/commit/d26be6893266ed357ce65a1de8557d7e7df432e0, where those function calls were desugared to intrinsics instead of std calls, seems like i accidentally dropped commit, which added those intrinsics during rebase

Oh, this is regression caused by https://github.com/CertainLach/jrsonnet/commit/d26be6893266ed357ce65a1de8557d7e7df432e0, where those function calls were desugared to intrinsics instead of std calls, seems like i accidentally dropped commit, which added those intrinsics during rebase


Number of pow's arguments must be 1 but 2

To reproduce: use the pow function anywhere in a shader (.kage) file then use ebiten.newShader to load it.
Minimal reproducible case (uses ebitengine 2.4.1 but the same issue happens in ebitengine 2.4.0): go run github.com/cedriclikescode/ebitengineShaderPow@main
Expected behavior: should behave as it was in ebitengine 2.3.x or older (it shouldn't throw this error) which in the case of using the minimal reproducible case returns "fragment shader entry point 'Fragment' is missing"
Is there a specific reason as to why the pow function would take only one argument?

https://registry.khronos.org/OpenGL-Refpages/gl4/html/pow.xhtml
https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-pow
pow function takes 2 arguments, right?

Number of pow's arguments must be 1 but 2

Or, you mean "Number of pow's arguments must be 2 but 1"?

Please try
go get github.com/hajimehoshi/ebiten/v2@ead48ca5ab9804fa8d8d877e45bab83d4b9bfef4

Thanks,

Explain this then:

The latest commit fixed the issue. Thanks


Update integration tests to better handle optional output files

A number of output files depend upon configuration value parameters being true or false. I don't think all these are catered for in the integration tests, riboviz.test.integration. If the configuration parameter controlling an optional output file is false then the test for the file should be skipped.
Review the configuration file in conjunction with integration tests and implement support for skipping tests for  optional output files if their configuration parameter values in the YAML configuration file that the user/developer gives to the integration tests are false.
This requires editing both riboviz.test.integration.conftest, to support creating a fixture for the parameter, and riboviz.test.integration.test_integration to ensure the tests for such files take the fixture for the associated parameter.
The pattern to follow is that already used for dedup_umis or group_umis for example.

Completed updates to riboviz.test.integration.test_integration to handle tests for optional files and files only output by conditional behaviours determined by configuration parameters.
To update documentation to accurately reflect conditional behaviour as implemented in the current workflow.

Documentation updated as of commit 8f0dde0.


NETOBSERV-1201: Make empty CR work out of the box

Fixing a couple of default values that weren't working as expected:

metav1.Duration fields need to be pointers so their default is actually used
deploymentModel shouldn't be required as it default to DIRECT
Agent type default wasn't working due to missing omitempty
Add a test to make sure empty spec works

/lgtm

Merging for dequeuing - I don't think specific tests are needed here, apart from usual regression tests
/approve

/ok-to-test


chore: add delete-all-payments debug script for lnd-1

Description
This should clear all payments from our lnd-1 so that we can remove the current corrupt payments and have the lnd database back in a good state.

We can do this directly with lncli deletepayments --all


Distinguish failed messages and errors

We need a way to distinguish manually-failed messages from messages where there's an error in the Broadway pipeline. We'll probably need a way to add information alongside the failure/error so that we can pass around the failure/error reason.

We already have a status field, so it is a matter of adding a new tuple in there. Should it be a three element tuple of {kind :: :catch | :error | :exit, value, stack}? Or should we have the three element tuple nested in another tuple?

We decided to not roll with this for now because the ack difference between failure / error can always be handled by calling the proposed configure_ack before calling Message.fail.


Implements GetChannelMessage Endpoint

Implementation for Get Channel Message Endpoint.
This allow to fetch message by Id.
Use case: If a Reaction event is received and the message is not cached then it will be received as null, but the data Object contains its Id, after considering if more information on the message is needed, this can be fetched from server.

There is actually a reason why I haven't implemented this yet.
Also this needs quite a few edits consistency-wise (should probably have the method in IDirectMessageChannel too) so I'll redo it myself.


Ability to skip a job

Hi,
I'm creating a pool of tasks which can be run or not (depending on the weather).
I would like to skip a particular run of a job without lost history of previous run.
I was thinking to do it like that.
def func():
  # this time, the job should not be done,
  # but must stay in the schedule queue for next time
  # This must keep last_time property unchanged,
  # and update next_time property
  if something():
    return schedule.SkipJob

  # normal running
  do_something_else()

schedule.every().day.do(func)

What do you think?
Cheers,

I'd prefer a .validate(check_wether) on job definition

I think you are right. But in order to respect the way of implementation (CancelJob), I did it like that.
Don't know what the maintainer think about it.

I like this idea!  To summarize: A job that returns schedule.SkipJob should not be rescheduled. So last_run should not be update and _schedule_next_run should not be called.
We can implement this in the Job.run() method, right about here:
https://github.com/dbader/schedule/blob/0bab53ea7f3b143d16888b54dc3bd43089450da9/schedule/__init__.py#L661-L663
Anyone willing to implement this and create a pr?


getOptions: Cannot read property 'elm' of undefined

I'm noticing that when calling getOptions here the check for this.options.elm fails here. The exact error is:
Module build failed: TypeError: Cannot read property 'elm' of undefined
    at Object.getOptions (./node_modules/elm-webpack-loader/index.js:37:36)
    at Object.module.exports (./node_modules/elm-webpack-loader/index.js:117:28)

Changing the offending line:
var globalOptions = this.options.elm || {};

…to the following fixes things:
var globalOptions = (this.options && this.options.elm) || {};

…however after studying the code I'm looks as though this.options will always be undefined.
This is with Webpack 4.0.0-beta.0, however I'm also unable to get either of the examples working. Is this a patch worth submitting, or am I missing something?
The very barebones source I've been working with is here:
https://github.com/meowgorithm/elm-webpack4-example

this.options is set by webpack, I believe. So that's when it has values.

That makes sense. Perhaps Webpack 4 has changed the way loaders work in some fashion.

Webpack 4.0.0 is released already. Same problem exists.

Is this a duplicate of #134? That one is fixed in master, but not released. I fixed by referencing this package from github.

I've confirmed this is now fixed in master.

@meowgorithm related to this https://github.com/straw-hat-team/phoenix_assets_webpack/issues/4 trying to help Phoenix people.
Is this released yet?
I have installed the laster version of the loader but I keep getting the same issue "elm-webpack-loader": "^4.4.0",

@yordis I don't think so. You’ll need to reference the commit directly in your package.json, but that's easy enough to do:
{
 ...
    "dependencies": {
        "elm-webpack-loader": "git://github.com/elm-community/elm-webpack-loader.git#7d1c6d939ea5b8b8a8f2aa2eb497e7fba49e6c71"
...
}

Not yet. Was planning to batch some more changes. Will release this weekend


Support MVVM scenarios for IsEnabled and Visibility properties of NavigationButtonInfo

I made some changes to support MVVM for NavigationButtonInfo properties.
Here is the Pull Request
Works with x:Bind Mode=OneWay bindings and probably with a Proxy of the page's DataContext, as the NavigationButtonInfo is not a UIElement and does not appear in the visual tree

Okay


Plotting capabilities

@e-marshall you have mentioned that plotting of vector data cubes is a bit cumbersome. I have to admit I never thought about including some plotting features as I assumed you just go via a GeoDataFrame and use its plot/explore methods but if you have ideas how we could improve plotting experience, I'm all ears.
Just two notes.

Any plotting should use geopandas machinery as I'm not willing to maintain yet another plotting code. It is painful enough to have two in geopandas already :D.
GeoPandas static plotting is due for an overhaul, so if we want to link xvec closely to geopandas, it may involve some changes in future.

Thanks for opening this issue, @martinfleis, and sorry for my delayed response!
I agree I think using geopandas plotting makes the most sense. When I was exploring/ trying out working with vector xarray datasets, I tried using Xarray plotting functions, and that's where I ran into it not accepting the dimension containing geometry arrays, but I don't see that kind of visualization being a main use-case of vector data cubes.
If anything, maybe there could be a utility function that wraps the steps to create a parallel dimension and swap from the geometry dim for xarray plotting purposes? Working on this kind of thing is relatively new for me so I'd love to hear any thoughts on why that may or may not be a useful feature. If it would be helpful, it's definitely something I'd be interested in working on, though I probably won't have a ton of time to do so in the next ~ 1 month.

Since you now have n dimensions, stuff like faceting could be useful. We'll need to make xarray;s plotting module a bit more resilient to unknown data types.

Faceting with the vector cubes would be cool! I was imagining a function to create a dummy dim of int types, or something like that, to pass to xarray's plotting module, but if you think it would be better to address it on the xarray plotting side, that would be great as well

Is there a way we can expand the functionality of Xarray's plot from the Xvec's side? Or would it need to be something like .xvec.plot()?

Is there a way we can expand the functionality of Xarray's plot from the Xvec's side? Or would it need to be something like .xvec.plot()?

I guess it would need the latter, but...

We'll need to make xarray;s plotting module a bit more resilient to unknown data types.

I'm wondering if it would make sense to make xarray's plotting work with geometries directly. Xarray has already a couple of tests using Cartopy, and Cartopy can plot shapely geometries. Perhaps it wouldn't be hard / big maintenance burden to add a special case in Xarray? Maybe Xarray's plotting functions would then just work for basic plotting of geometries? Not sure as I'm not very familiar with the Xarray plotting code.
One possible annoying thing is the different CRS objects used here vs. in Cartopy, something I guess you already have to deal with in geopandas.

Perhaps it wouldn't be hard / big maintenance burden to add a special case in Xarray?

Plotting code for vector geometries is completely different beast than rasters as we need to create the whole maptlotlib object ourselves from patches, assigning colours to each... Knowing how this looks in geopandas I would recommend leaving that alone.

I was more thinking about plotting via cartopy (i.e., add_geometries()) than re-implementing all of that with matplotlib... I'd totally follow your recommendation :-) !

Oh add_geometries is quite the plot twist!

Perhaps HoloViz could serve as the default plotting library for xvec, so that xvec_ds.plot() -> xvec_ds.hvplot().
A basic demo of this is available in a hvPlot PR, where the data is converted to GeoPandas and plotted using hvPlot's existing support for GeoPandas. However, I believe there's potential for a more impactful implementation involving GeoViews.

hvPlot is great and it would be nice if it could work seamlessly with xvec (i.e., your open hvplot PR) or vector data cubes in general!
That said, using hvPlot (HoloViz) as a default plotting library here would be a pretty strong opinionated choice IMO. I know that Holoviz supports multiple backend libraries including matplotlib, but from my experience it seems to work best (and by default uses) Bokeh.
Cartopy / Matplotlib seems a bit less opinionated for basic (static) plots to me.

The easiest option is likely to use Matplotlib via GeoPandas. You will probably need to convert to a GeoDataFrame anyway.


Subselect selects only 1st column and does not form from keyword

Laravel Version: 5.5.*
PHP Version: 7.1

Description:
How to reach properly subquery select attributes as below and add from properly?
 SELECT attribute, COUNT(*) AS items_count
                FROM (
                    SELECT attribute, attribute2
                    FROM history
                    WHERE attribute IN ('1','2','3')
                    GROUP BY attribute, attribute2
                ) subtable
                GROUP BY attribute

Steps To Reproduce:
        dd(\DB::query()
            ->select('attribute')
            ->selectRaw('COUNT(*) AS items_count')
            ->selectSub(function(Builder $query) use ($values){
                 $query->select(['attribute', 'attribute2'])
                    ->from('history')
                    ->whereIn('attribute', $values)
                    ->groupBy('attribute', 'attribute2');
            }, 'subtable')
            ->groupBy('attribute')
            ->toSql());

gives only with one and first attribute:
select `attribute`, COUNT(*) AS items_count, (select `attribute` from `history` where `attribute` in (?, ?, ?) group by `attribute`, `attribute2`) as `subtable` group by `attribute`

due this code:
    protected function parseSubSelect($query)
    {
        if ($query instanceof self) {
            $query->columns = [$query->columns[0]];

Notable, this can't be replaced by
\DB::select('SELECT attribute, COUNT(*) AS items_count
                FROM (
                    SELECT attribute, attribute2
                    FROM history
                    WHERE attribute IN (?)
                    GROUP BY attribute, attribute2
                ) subtable
                GROUP BY attribute',
            $values
        )

because this returns one result, if (?) will be replaced by (?,?) - then 2results will be returned,and so on, so I am not sure how much values there will be, so expected in OOP style to build query, and get properly bindings by laravel itself, but at some point this no works?

The line was added in #19013.

Yeah, but that PR solves some problem. Once again take a look at bolded query parts, that are not presented using selectSub
SELECT attribute, COUNT(*) AS items_count
FROM (
SELECT attribute , attribute2
FROM history
WHERE attribute IN (?, ?, ?)
GROUP BY attribute, attribute2
) subtable
GROUP BY attribute
I think this is not reachable using that function, so question remains how to reach same functionality without any hacks, such as string fill with lenght of parameters in where clause

Can you please take a look at this @cdstarling?

When I created my pull request I initially tried to solve the problem in the QueriesRelationships to avoid this sort of situation in which I missed a use case for the subquery with multiple selects.
For some reason I couldn't get it to work within the withCount method but I've just tried it and it seems to work fine, so I will make a pull request for that now.

@laurencei Can be closed.


Connection Issue: Authentication failed

Describe the issue
Connection is no longer possible.
MyBMW-App is still working, password has not been changed. Last successful update was about 24h ago, error also occured before this last update
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): cocoapi.bmwgroup.com:443
DEBUG:urllib3.connectionpool:https://cocoapi.bmwgroup.com:443 "GET /eadrax-ucs/v1/presentation/oauth/config HTTP/1.1" 200 580
DEBUG:bimmer_connected.account:Authenticating against GCDM with MyBMW flow.
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): customer.bmwgroup.com:443
DEBUG:urllib3.connectionpool:https://customer.bmwgroup.com:443 "POST /gcdm/oauth/authenticate HTTP/1.1" 401 190
ERROR:bimmer_connected.account:Authentication failed (invalid_client): Client authentication failed (e.g., login failure, unknown client, no client authentication included or unsupported authentication method)
ERROR:bimmer_connected.account:401 Client Error: Unauthorized for url: https://customer.bmwgroup.com/gcdm/oauth/authenticate
Traceback (most recent call last):
  File "/home/pi/.local/lib/python3.7/site-packages/bimmer_connected/account.py", line 94, in _get_oauth_token
    token_data = self._login_row_na()
  File "/home/pi/.local/lib/python3.7/site-packages/bimmer_connected/account.py", line 220, in _login_row_na
    raise ex
  File "/home/pi/.local/lib/python3.7/site-packages/bimmer_connected/account.py", line 170, in _login_row_na
    response.raise_for_status()
  File "/usr/local/lib/python3.7/dist-packages/requests/models.py", line 953, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://customer.bmwgroup.com/gcdm/oauth/authenticate
Traceback (most recent call last):
  File "/home/pi/.local/bin/bimmerconnected", line 10, in <module>
    sys.exit(main())
  File "/home/pi/.local/lib/python3.7/site-packages/bimmer_connected/cli.py", line 282, in main
    args.func(args)
  File "/home/pi/.local/lib/python3.7/site-packages/bimmer_connected/cli.py", line 127, in fingerprint
    log_responses=time_dir)
  File "/home/pi/.local/lib/python3.7/site-packages/bimmer_connected/account.py", line 83, in __init__
    self._get_vehicles()
  File "/home/pi/.local/lib/python3.7/site-packages/bimmer_connected/account.py", line 376, in _get_vehicles
    self._get_oauth_token()
  File "/home/pi/.local/lib/python3.7/site-packages/bimmer_connected/account.py", line 108, in _get_oauth_token
    raise ex
  File "/home/pi/.local/lib/python3.7/site-packages/bimmer_connected/account.py", line 94, in _get_oauth_token
    token_data = self._login_row_na()
  File "/home/pi/.local/lib/python3.7/site-packages/bimmer_connected/account.py", line 220, in _login_row_na
    raise ex
  File "/home/pi/.local/lib/python3.7/site-packages/bimmer_connected/account.py", line 170, in _login_row_na
    response.raise_for_status()
  File "/usr/local/lib/python3.7/dist-packages/requests/models.py", line 953, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://customer.bmwgroup.com/gcdm/oauth/authenticate

Expected behavior
Authentication is working, data is fetched correctly
Which Home Assistant version are you using?
None
What was the last working version of Home Assistant Core?
No response
What is your region?
Rest of world
ConnectedDrive website

[ ] I can still successfully login to the BMW ConnectedDrive website and the car status is available there.
[ ] I have ConnectedDrive enabled for my vehicle.

Number of cars

[ ] I have 2 or more cars linked to the ConnectedDrive account.
[ ] I have a Mini vehicle linked to my account.

Output of bimmer_connected fingerprint
No response
Anything in the logs that might be useful for us?
No response
Additional information
No response

I experience the same issue.
[x] I can still successfully login to the BMW ConnectedDrive website and the car status is available there.
[x] I have ConnectedDrive enabled for my vehicle.
[x] Rest of world
1 BMW linked to the account


chore(transform-variant-group): add test case

#1748

Seems like no difference, the above case can already be included.
https://github.com/unocss/unocss/blob/e5e02757e13ba3f503008b1880bc0c49aef65b7d/test/variant-group.test.ts#L32-L34

this is a usecase test


Add gRPC Utilities library

[x] This contribution adheres to CONTRIBUTING.md.

What does this Pull Request accomplish?
Move the Client Pool and Service Location FGV to a new "gRPC Utilities" library.
Why should this Pull Request be merged?
We have realized via other work that creating a utility library will be necessary to avoid circular dependencies among libraries.
What testing has been done?
Opened affected caller VIs to ensure they are not broken.
PR tests.

All other file changes are the result of recompiling after the moves.


IOS Background

I have read in the specs docs that the FEAA service is added to allow IOS devices to scan Eddystone Frame from background. As  far as I know the only way to detect BLE beacon devices in such conditions is using CoreLocation and iBeacon Format.
Maybe I´m losing something...
Can you tell me someting more about this...
Thanks and congrats for you innovative and primising work.
Also let me point that I think you need to redefine the URI-Config mode to a more general Eddystone-ConfigMode and allow then to change the 10 bytes UID and the 6 bytes ID...(Unlocked devices of course)
I think this is necessary to have a complete independant specification...otherwise this changes will be done via propietary protocols, as it is done right know...
Nice weekend !!

The CoreLocation works only with iBeacons. However, using the CoreBluetooth you may scan for any Bluetooth Smart device (except iBeacons). In order to save power it is recommended to set a filter. The filter may be created using the service UUID. If so, you'll be notified only about devices advertising with given service. Otherwise the app would have to scan for all devices and parse them manually (more work, more battery usage). And as far as I remember it's not possible to scan without a filter in background mode.
Regarding your second topic, for now there is only a URL Configuration Service. A UID CS would also be appreciated, as you mentioned above.

Aleksander is correct — CoreLocation is only for iBeacons. Using CoreBluetooth, you can scan for Eddystone beacons in the background (as per the sample in this repository). The only trick is that, in the background, latency can be a bit higher — it can take a few minutes (sometimes as much as 10-15 minutes) to see the devices in the background.  But this is all in the interest of managing power consumption in the operating system.

Thanks !!
Yes, IOS in background is able to scan for devices but its performance is very poor for most use cases.
I don´t think this is for battery performance...remember they are able to discover iBeacon format much more quickly under CoreLocation, so they are still using the radio and discarding the non compliant ibeacon packets....
Thanks again !!!

Hey @Anurba  — iBeacon has much lower latency in the background because they run the bluetooth scanner much more often. The disadvantage is iBeacon region monitoring uses up a lot more battery power than Core Bluetooth does.

Thanks !!!


⚠ Bofrost.de has degraded performance

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

HTTP code: 200
Response time: 1486 ms

Resolved: Bofrost.de performance has improved in 50dbbd2 after 1 hour, 24 minutes.


Export/Import as PNG/TGA

Can we have two buttons for the Texture2D files in order to make the workflow faster? It is a nightmare to replace hundreds of textures with the current "Plugins/Edit Texture/Load". It would be much simpler to do that process with a button, choose a texture and then mess around with the Name, Format, etc. if needed.
Something as simple as this: https://i.ibb.co/jht1YyW/suggestion.png
PS: If there is a way to replace several textures at once please tell me how.
Thank you and keep up the excellent work.

You can batch import by selecting multiple assets (shift click) then clicking plugins. It looks for images with filenames from batch export however.
This is how it works in uabe, so I probably won't be changing it for now.

You have probably saved me 10+ hours of work. I shouldn´t have modified the texture names in my files, but it will be easy to rename them to their original names rather than importing all of them one by one each time the game updates.
Thank you very much and I hope that this project keeps growing up. I have found a lot of joy in modding Unity games.
Cheers!


fix: proper handling of PUPPETEER_HEADLESS env variable

:tada: This PR is included in version 4.0.3 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Failed in Langchain Integration with QianfanChatEndpoint

System Info
qianfan version: 0.3.0
langchain:0.2.16
python: 3.10
Reproduction
from langchain.tools import tool

@tool
def greeting(name: str) -> str:
    """Greetings from external System."""
    return f"{name}, Warmly welcome from External System"

def test_full():
    from langchain_community.chat_models import QianfanChatEndpoint
    import os

    model = QianfanChatEndpoint(
        endpoint="ernie-4.0-turbo-8k",
        api_key=os.getenv("API_KEY_QIANFAN_AK"),
        secret_key=os.getenv("API_KEY_QIANFAN_SK")
    )

    prompt = ChatPromptTemplate.from_messages(
        [
            (
                "system",
                "You just make sure to use the 'greeting' tool for each talk and output the tool output.",
            ),
            ("placeholder", "{chat_history}"),
            ("human", "{input}"),
            ("placeholder", "{agent_scratchpad}"),
        ]
    )

    tools = [greeting]
    agent = create_openai_functions_agent(model, tools, prompt)
    agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
    content = agent_executor.invoke({"input": "My name is Hao"})
    assert "Hao" in content["output"] # failed in here, content["output"] is ""

The unittest failed but works with the other ChatModel. not sure what's the problem it is.

Not sure if it's the right place to raise langchain extension issue here, but it does take me hours to troubleshooting.

We got specific agent executor in our repo called QianfanSingleAgent for this situation 'cause OG Executor can't work with our components.
You can find it in qianfan.extensions.langchain.agent. And we recommend to use .with_tools in QianfanChatCompletion just like langchain did in theirs official docs

https://github.com/baidubce/bce-qianfan-sdk/blob/main/cookbook/agents/qianfan_single_action_agent_example.ipynb


Post fixes in sales feed of collection

Post fixes in sales feed of collection

show default BUY events when you open History
fix CSS to show it in one line, probably clip long identities

Originally posted by @yangwao in https://github.com/kodadot/nft-gallery/issues/2523#issuecomment-1066839622

@yangwao I'll do this

@yangwao the css thing is not happening for me

Meanwhile #2552 has done some stuff I guess so


Swift 3.1 warnings

Vinyl/Response.swift:63:41: String interpolation produces a debug description for an optional value; did you mean to make this explicit?

Vinyl/Response.swift:64:43: String interpolation produces a debug description for an optional value; did you mean to make this explicit?

Vinyl/Response.swift:66:18: String interpolation produces a debug description for an optional value; did you mean to make this explicit?

I've had similar warnings in other projects. It's a very straightforward fix. I'll do it shortly.

Awesome, thanks!

#73 addresses this and is just waiting to be reviewed and merged :)

Merged. Thanks!


Not able to save collage

Hii there,
I am using you extension and it's working fine upto.
 $image = $collage->make(400, 400)->from($images);
Can you pls describe more about how to save that image using intervention i am not able to save that image as you mentioned in  your documents:
Return Value
The reaturned $image is the instance of Intervention\Image\Image object.
You can do multiple things with it.
You can save the final collage.
You can just use it as a plain response.
You can crop/resize/colorize and more.
Read more about what you can do in the Official Documentation.
Can you describe more about How to use this object Intervention\Image\Image in image intervention?

@bhattaxay
Actually it says right there

Read more about what you can do in the Official Documentation.

Intervention is a popular php image manipulation library. Which is out of the scope of this Package. If you want to know how to work with Intervention Image go to the official docs by clicking on the link.
http://image.intervention.io/

Ok i have done with intervention. Can you pls explain in brief about custom generator. I am not getting more idea about you have mentioned in your documentation regarding custom generator.


Setting Cache Policy on PFQuery has no effect

let postQuery: PFQuery = PFQuery(className: "Posts")
postQuery.addDescendingOrder("day")
postQuery.whereKey("live", equalTo: true)
postQuery.cachePolicy = PFCachePolicy.CacheElseNetwork
print("Has posts cache: \(postQuery.hasCachedResult())")

This always returns as false, and my query always queries from network.

Also I get this error sometimes:
Optional(Error Domain=Parse Code=120 "Cache miss." UserInfo={error=Cache miss., NSLocalizedDescription=Cache miss., code=120})

Hey @talkaboutdesign, that is strange.
Which method do you use to actually perform the query?
Please note, that CacheElseNetwork will try to get a cached value and then if there is no cache - fetch from network and save the result of the query to the cache.

Hi. I have the same issue with Parse not saving cache. Here's my sample code:
PFQuery *query = [PFQuery queryWithClassName:GROUP];
[query whereKey:GROUP_OWNER equalTo:[PFUser currentUser]];
[query includeKey:GROUP_CONTACTS];
[query orderByAscending:GROUP_TITLE];
[query setCachePolicy:kPFCachePolicyCacheElseNetwork];

If I run this once and then the second time after the network callback had completed, cache is still empty.

Any progress on this issue? I've had it for a while now, here's a link to the question I raised 3 months ago to give some more context http://stackoverflow.com/questions/33317312/pfquery-never-has-cached-results

No progress yet, but I am marking this for investigation, and will keep you updated.

Thanks. Does your last statement change though with the news about deprecation of the Parse platform out and public?

Nope. I am going to stick around for a while to support the open source community.

Thanks

And I don't think I can reproduce it at all.
No matter how hard I try - it always succeeds and properly returns true for hasCachedResult after cache the first network fetch. Any chance you guys can attach a repro case here or send it over email to nlutsenko(at)fb.com?
The test that I've used:
[Parse setApplicationId:@"phfHef5qZe2rHyHniyiEGiITNgwDMFdRANdYKdwE" clientKey:@"hKl13kaQ0B8sfDs8FQNYzxX7UI5BCNRhQKJDJqvD"];

PFQuery *query = [PFQuery queryWithClassName:@"Agenda"];
[query orderByAscending:@"updatedAt"];
[query whereKey:@"title" equalTo:@"1"];
query.cachePolicy = kPFCachePolicyCacheElseNetwork;
NSLog(@"%d", [query hasCachedResult]);
[[query findObjectsInBackground] continueWithBlock:^id _Nullable(BFTask * _Nonnull task) {
    NSLog(@"%d", [query hasCachedResult]);
    return nil;
}];

It properly reports false for the first log statement and from there on - always returns true.

Hi Nikita. I can't reproduce this anymore either. It seems it has been fixed somewhere. Thanks.

Perfect, glad it works for you.
Let me know if anything comes up.


Support custom domains?

Describe the solution you'd like
I want to create short URLs under my own domain on tinyurl.com, where I have a paid account.

I will take a look on that, once i have time. If anyone wants to contribute, feel free to do so 👍


SendCommand hGetall return format changed from v3 to v4

in v3, calling send_command with hGetall command would result in a return of format
{
    "key1": "value1",
    "key2": "value2",
}

in v4, sendCommand with "hGetAll" returns ["key1", "value1", "key2", "value2"].  This seems like a breaking change between the versions that wasn't listed
Seems like running client.HGETALL however returns in object format. Is there a method to coerce the sendCommand return to be formatted correctly?
Environment:

Node.js Version: <!-- e.g. "node --version" --> 16.13.2
Redis Server Version: <!-- e.g. "redis-server --version" --> Redis 6.2.6
Node Redis Version:  4.0.4
Platform:  MacOS 12.1

Ran into this issue as well. I switched to using the wrapped function but the results still return as an array. This seems to only happen when legacyMode = true. If I do not use legacyMode then results return as expected.


User retweets?

@taspinar Firstly, thank you for sharing this great tool! Is there any way to include not only user tweets but also retweets on the user's timeline? Thanks in advance for your help.

Can you give an example?

Say I'm trying to scrape @AndreasSteno's 591 tweets.
This is what I input on the command line:

The script outputs 420 tweets:

As an example, @AndreasSteno RT'd this tweet (tweet_id:<PHONE_NUMBER>36757761):

However, when I search for the above tweet_id in the json output, I don't find the data. I've tried it with other RT's and it doesn't show up in the data.
Please let me know if I'm being unclear about anything and thanks again for your help.

Twitter's advanced search requires an additional filter to retrieve retweets, like this:
https://twitter.com/search?l=&q=from%3AAndreasSteno filter:nativeretweets since%3A2017-04-01 until%3A2018-02-28&src=typd.
However, twitterscraper doesn't seem to support filters currently. I just tried invoking the following and got no results:
twitterscraper "from:AndreasSteno filter:nativeretweets" -bd 2017-04-01 -ed 2018-02-18 -o andreassteno.json -l 1000
It would be a handy feature if twitterscraper could support filters.

@lotsoaxolotls I have also read about the filters online (but not on the official twitter site).
For me, using this filter results in zero tweets

Hi guys,
It would be invaluable if retweets could also be tracked. The link above returns zero tweets for me as well. Perhaps this example of the retweet filter works for you?
from:BarackObama filter:retweets
https://twitter.com/search?q=from%3ABarackObama filter%3Aretweets&src=typd&lang=nl


[Feature] Support for x-app-name and x-app-ver

SDK Consistency item: https://identitydivision.visualstudio.com/Engineering/_workitems/edit/865191
Additional details: https://identitydivision.visualstudio.com/Engineering/_workitems/edit/865186
Ensure  x-app-name and x-app-ver are sent to the same end-points as other x-client- params.
Let the developer specify the app name and the app version

#136


Fix tokenization for Qwen models

Update token_type_ids in PromptTokenizer to match changes to input_ids and attention_mask.
Description
Some models, like the Qwen series, return a token_type_ids along with input_ids and attention_mask from the tokenizer. In some cases, when finetuning in completion mode, Axolotl will add/strip EOS/BOS tokens. When this case was hit, token_type_ids would differ in length from input_ids, and the dataset could not be saved.
This change makes Qwen models work by modifying token_type_ids along with the other values returned from the tokenizer.
Motivation and Context
This change enables Qwen 1.5 models (tested on CodeQwen) to be finetuned in completion mode. Fixes Issue #1632 .
How has this been tested?
Issue #1632 has an attached dataset and config that replicates the issue; after this change it no longer triggers an error.
Screenshots (if appropriate)
Types of changes
Changes the the _tokenizer method of PromptTokenizingStrategy
Social Handles (Optional)

Closing for now as this fixes tokenization but does not yet make the model trainable.

I am confused by this; I am training Qwen already with strong results.  Why do you say it's not trainable?

@ehartford are you training base Qwen or CodeQwen?
When I train CodeQwen I run into the following issue:
(train-codeqwen, pid=13835)   File "/opt/conda/envs/axo/lib/python3.10/site-packages/peft/peft_model.py", line 1129, in forward
(train-codeqwen, pid=13835)     return self.base_model(
(train-codeqwen, pid=13835)   File "/opt/conda/envs/axo/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1532, in _wrapped_call_impl
(train-codeqwen, pid=13835)     return self._call_impl(*args, **kwargs)
(train-codeqwen, pid=13835)   File "/opt/conda/envs/axo/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1541, in _call_impl
(train-codeqwen, pid=13835)     return forward_call(*args, **kwargs)
(train-codeqwen, pid=13835)   File "/opt/conda/envs/axo/lib/python3.10/site-packages/peft/tuners/tuners_utils.py", line 161, in forward
(train-codeqwen, pid=13835)     return self.model.forward(*args, **kwargs)
(train-codeqwen, pid=13835)   File "/opt/conda/envs/axo/lib/python3.10/site-packages/accelerate/hooks.py", line 166, in new_forward
(train-codeqwen, pid=13835)     output = module._old_forward(*args, **kwargs)
(train-codeqwen, pid=13835) TypeError: Qwen2ForCausalLM.forward() got an unexpected keyword argument 'token_type_ids'

This looks to be caused by a configuration error in the CodeQwen model on HF.
The QwenCode1.5 tokenizer_config.json declares the tokenizer as PreTrainedTokenizer (https://huggingface.co/Qwen/CodeQwen1.5-7B/blob/main/tokenizer_config.json#L14) but their config.json for the model specifies Qwen2ForCausalLM (https://huggingface.co/Qwen/CodeQwen1.5-7B/blob/main/config.json#L3). The default PreTrainedTokenizer class will emit token_type_ids (see: https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L1562) but their model class does not know what do do with it.
I imagine the correct solution is for Qwen to fix the CodeQwen model to use Qwen2Tokenizer, like they do for the non-code Qwen models (see: https://huggingface.co/Qwen/Qwen1.5-4B/blob/main/tokenizer_config.json#L38)
I messaged the Qwen discord about this but there has been no answer; if someone knows them and can ping them to fix it, I'd really appreciate it.
A follow-on issue it that axolotl always assumes that there are only input_ids and attention_mask as possible vectors returned by the tokenizer, in reality it can return any one of model_input_names (e.g.: https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L1562). I ideally Axolotl should either catch the case where model_input_names had something unexpected, or just iterate over the entries specified in model_input_names when adjusting for BOS/EOS.


chore(deps): update common-dev-assets digest to 8f8818f

This PR contains the following updates:

Package
Update
Change

common-dev-assets
digest
3e5a663 -> 8f8818f

Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.

[ ] If you want to rebase/retry this PR, click this checkbox.

This PR has been generated by Renovate Bot.

:tada: This PR is included in version 2.0.0 :tada:
The release is available on:

GitHub release
v2.0.0

Your semantic-release bot :package::rocket:


Avatar Info PhysBone rankings are incorrect

I didn't check any more than just this, but at least the PhysBone transform ranking is incorrect.
Check here for the correct values.
In this case, the avatar has 84 PhysBone transforms, which marks it as a Medium (Good's threshhold is at 64, so <64 PB transforms on PC drops you to Medium).
Your Avatar Info panel incorrectly calls that a Good rank.

It's grabbing the values and ranks out of the sdk so it was probably referencing the wrong thing. I'll have a look

Fixed, it was referencing physbone components instead.


Unsecure EC scalar multiplication

You should warn clearly that this implementation of ECC point multiplication is not secure at all regarding side-channel attacks (power, EM/RF emissions, memory read), and timing measurements. Depending of the bits of the scalar number (usually a private secret), the operations performed are very different.
https://github.com/albertobsd/ecctools/blob/main/gmpecc.c#L99
All the operations requiring this point multiplication are affected and are not secure. Public key computation (with keygen, or calculatefromkey) and sharedsecret ECDH.
This should not be used in any system in production, or securing a private key.

You should warn clearly that this implementation of ECC point multiplication is not secure at all regarding side-channel attacks (power, EM/RF emissions, memory read), and timing measurements. Depending of the bits of the scalar number (usually a private secret), the operations performed are very different. https://github.com/albertobsd/ecctools/blob/main/gmpecc.c#L99

Yes i agree totally with you, if the user system is compromised what we can do? Nothing...
I guest that you already warning to you users not to use the python scripts to work with real Keys right?
I think that this is an issue of all the cryptography tools most of them. Please if you found another way around let me know.
Regards!

For GMP i think that i can use some kind of custom memory allocators:
https://gmplib.org/manual/Custom-Allocation
And use then with the gcrypt secure memory allocator
https://gnupg.org/documentation/manuals/gcrypt/Memory-allocation.html#Memory-allocation
But that maybe only solve the the part of read the key from the memory, for the other thing that you say like EM/RF emissions really nobody is protected. Anyway those kind of attacks are only performed against Important people.
Regards!

Yes most of these attacks requires a physical access to the derive, or at least being in near proximity. I've seen in some cases the physical proximity can be achieved by server co-location. E.g. you rent a virtual server in the same machine. Also this kind of attack need to run some signatures to leak from the code when it is running (no run, no leak). But the signatures do not have to be queried by the hacker, it can be the user.
This code looks far better. On average it will double the time it takes to compute, but that avoids loud side-channel leak. EC algos in cryptographic libraries achieve both performance and security. That's why the best option is to delegate this task to this kind of libraries.
I randomly found your repo, as I'm very interested in applied crypto algorithms. And then when I saw it performs point multiplication, I was curious to see how you handle it. And then I was "Oh my god", I need to tell it to warn the users.  And to tell you to take care when you are designing cryptographic "core" algorithms, it is much more hard that one can think.

I forgot to tell, take care your dummy points need to be random. Else if 0, their "trace analysis" would likely reveal some difference btw the branches, and one could tell which one was taken, so this dummy would be useless.

At some point, it is much easier, and secure to rely on cryptographic libraries, that did this hard work. In C, I personally enjoy WolfSSL and libsodium. Not sure libsodium can handle EC Weistrass/Koblitz, it is maybe only compatible with Ed25519 (and X25519).

Thanks a lot I adde the warning: https://github.com/albertobsd/ecctools#warning
Also I just add the use of secure memory by libgrypt
And modify the code for the Scalar multiplication.

I forgot to tell, take care your dummy points need to be random. Else if 0, their "trace analysis" would likely reveal some difference btw the branches, and one could tell which one was taken, so this dummy would be useless.

I think that this is not the case for this code if you check: https://github.com/albertobsd/ecctools/blob/main/gmpecc.c#L108
		for(i = 0; i < no_of_bits; i++) {
			if(mpz_tstbit(m, i))	{
				mpz_set(SM_T.x, R->x);
				mpz_set(SM_T.y, R->y);
				mpz_set(SM_Q.x,DoublingG[i].x);
				mpz_set(SM_Q.y,DoublingG[i].y);
				Point_Addition(&SM_T, &SM_Q, R);
			}
			else	{	/* Doing exactly the same operations but with destination dummy */
				mpz_set(Dummy.x, R->x);
				mpz_set(Dummy.y, R->y);
				mpz_set(Dummy.x,DoublingG[i].x);
				mpz_set(Dummy.y,DoublingG[i].y);
				Point_Addition(&SM_T, &SM_Q, &Dummy);
			}
		}

If you check both parts do the same Operations first set of the Dummy point and then do the same Point_Addition but the destination is the dummy point in the else part.
This was  a really rudimentary Scalar multiplication, I can improve it a lot  and keep the same security by only adding Bytes 32 times instead of bits 256 times, this require a little extra precalculated points for every byte  but it can solve both problems performance and security.
Again thanks a lot is really cool talk with somebody that know what is he doing, instead with people who only request new features.
btw I'm reading all your links.
Regards!

gcc -O3 -c bloom/bloom.c -o bloom.o
gcc -O3 -c sha256/sha256.c -o sha256.o
gcc -O3 -c base58/base58.c -o base58.o
gcc -O3 -c rmd160/rmd160.c -o rmd160.o
gcc -O3 -c xxhash/xxhash.c -o xxhash.o
#gcc -O3 -c gmpecc.c -o gmpecc.o
gcc -O3 -c util.c -o util.o
gcc -O3 -o rehashaddress rehashaddress.c gmpecc.c util.o sha256.o base58.o rmd160.o -lgmp
gcc -O3 -o calculatefromkey calculatefromkey.c gmpecc.c util.o base58.o sha256.o rmd160.o -lgmp   libgcrypt-config --cflags --libs
/bin/sh: line 1: libgcrypt-config: command not found
calculatefromkey.c:18:10: fatal error: gcrypt.h: No such file or directory
18 | #include <gcrypt.h>
|          ^~~~~~~~~~
compilation terminated.
make: *** [Makefile:10: default] Error 1
How to fix this


I can't get the list of items

Hi,
I'm running this proxy on a localhost Debian machine.
All GET requests like /api/applications or /api/devices don't work.
All of them return 404 (Bad request) with this error message:

If I call the GET requests on a specific item, like /api/applications/{applicationId} and /api/devices/{deviceId} I don't have any problems.
Is there something missing in the configuration?
What can I do to solve this problem?

Hi,
I'm running this proxy on a localhost Debian machine. All GET requests like /api/applications or /api/devices don't work. All of them return 404 (Bad request) with this error message:
If I call the GET requests on a specific item, like /api/applications/{applicationId} and /api/devices/{deviceId} I don't have any problems.
Is there something missing in the configuration? What can I do to solve this problem?

https://github.com/chirpstack/chirpstack-rest-api/issues/4


-C option won't work with a symlink inside WSL

After creating a new symlink inside WSL (e.g. ln -s /mnt/c/Users/winUser /home/wslUser/WinHome) I'm unable to open a new shell that automatically starts at that folder with a wslbridge.exe -C /home/wslUser/WinHome, all it does is to drop me back into my Windows home folder.
I'll be glad to provide any further info or help if needed.

Windows full version? Wslbridge version? Any extra permission? Which distro and it's version?

Windows full version? Win10 Pro 1803
Wslbridge version? Not sure about that, there is no --v option for it. It's the one bundled with ConEmu 180626, if that's of any help.
Any extra permission? No, as far as I know.
Which distro and it's version? Ubuntu 18.04 LTS (the one from Windows Store).


Avoid Earth

Uses the smallest Location containing lat/lng instead of Earth, for Observations.
(Explanation: Many recent Observations have lat/lng with Location Earth. Most (all? 99%) of them some from the mobile app or otherwise from the API. This frustrates mobile app users. It also stops the Observation from appearing on maps of its taxon (the location is too vague). This PR aims to improve things by preferring the smallest reasonable Location to Earth if an Observation has a geolocation.)
The PR adds:

a Location scope, with_minimum_bounding_box_containing_point
an Observation before_save callback, prefer_minimum_bounding_box_to_earth
corresponding code in the Observation API

Suggest Manual Tests
Using the website

Create Observation

Locality: Earth
Latitude: 46.438
Longitude: -121.84
Create

Expected result: (new) Observation with Location: Cispus Environmental Learning Center
Using the API

Enter the following on the unix command line, substituting a valid API Key for xxx

curl -X POST "http://localhost:3000/api2/observations?api_key=xxx&location=Earth&latitude=46.438&longitude=-121.847&date=2024-11-05"

The response should be something like

<?xml version="1.0" encoding="UTF-8"?>
<response xmlns="http://localhost:3000/response.xsd">
  ...
  <results number="1">
    <result id="565807" type="observation"/>
  </results>
  ...
</response>

View the Observation which has the id displayed in the above response.

Expected result: Observation has Location: Cispus Environmental Learning Center

coverage: 93.466% (+0.002%) from 93.464%
when pulling ca473074ca336926d607362902993ff2f16c5d42 on jdc-avoid-unknown-location
into d2d9b8623b83a4b88bc7f385ce58eef0e0d26abc on main.

Allow "Earth" with lat/lng? Heck no.
I don't feel we should allow Earth as an obs location, ever.

Allow "Earth" with lat/lng? Heck no.
I don't feel we should allow Earth as an obs location, ever.

Thanks @nimmolo. I agree about "ever", but that's for another PR.


conformance: enable HTTPRouteRedirectPortAndScheme

What type of PR is this?

What this PR does / why we need it:
HTTPRouteRedirectPortAndScheme conformance test is related to https://github.com/kubernetes-sigs/gateway-api/pull/1880
Which issue(s) this PR fixes:

Fixes #1441

this conformance test still fail in some cases:
// --- FAIL: TestGatewayAPIConformance/HTTPRouteRedirectPortAndScheme (1.11s)
//    --- PASS: HTTPRouteRedirectPortAndScheme/http-listener-on-80/0_request_to_'/scheme-nil-and-port-nil'_should_receive_a_302 (0.01s)
//    --- PASS: HTTPRouteRedirectPortAndScheme/http-listener-on-8080/0_request_to_'/scheme-nil-and-port-nil'_should_receive_a_302 (30.00s)
//    --- PASS: HTTPRouteRedirectPortAndScheme/http-listener-on-8080/2_request_to_'/scheme-https-and-port-nil'_should_receive_a_302 (0.00s)
//    --- PASS: HTTPRouteRedirectPortAndScheme/http-listener-on-8080/1_request_to_'/scheme-nil-and-port-80'_should_receive_a_302 (0.00s)
//    --- PASS: HTTPRouteRedirectPortAndScheme/http-listener-on-80/2_request_to_'/scheme-nil-and-port-8080'_should_receive_a_302 (0.00s)
//    --- PASS: HTTPRouteRedirectPortAndScheme/http-listener-on-80/5_request_to_'/scheme-https-and-port-8443'_should_receive_a_302 (0.00s)
//    --- PASS: HTTPRouteRedirectPortAndScheme/http-listener-on-80/4_request_to_'/scheme-https-and-port-443'_should_receive_a_302 (0.01s)
//    --- PASS: HTTPRouteRedirectPortAndScheme/http-listener-on-80/3_request_to_'/scheme-https-and-port-nil'_should_receive_a_302 (0.00s)
//    --- PASS: HTTPRouteRedirectPortAndScheme/http-listener-on-80/1_request_to_'/scheme-nil-and-port-80'_should_receive_a_302 (0.00s)
//    --- FAIL: HTTPRouteRedirectPortAndScheme/https-listener-on-443/0_request_to_'example.org/scheme-nil-and-port-nil'_should_receive_a_302 (30.59s)
//    --- FAIL: HTTPRouteRedirectPortAndScheme/https-listener-on-443/5_request_to_'example.org/scheme-http-and-port-8080'_should_receive_a_302 (31.51s)
//    --- FAIL: HTTPRouteRedirectPortAndScheme/https-listener-on-443/4_request_to_'example.org/scheme-http-and-port-80'_should_receive_a_302 (30.00s)
//    --- FAIL: HTTPRouteRedirectPortAndScheme/https-listener-on-443/3_request_to_'example.org/scheme-http-and-port-nil'_should_receive_a_302 (30.72s)
//    --- FAIL: HTTPRouteRedirectPortAndScheme/https-listener-on-443/2_request_to_'example.org/scheme-nil-and-port-8443'_should_receive_a_302 (30.00s)
//    --- FAIL: HTTPRouteRedirectPortAndScheme/https-listener-on-443/1_request_to_'example.org/scheme-nil-and-port-443'_should_receive_a_302 (30.72s)

the requests in HTTPRouteRedirectPortAndScheme/https-listener-on-443 all fail, and they fail for the same reason: tls.go:52: Request failed, not ready yet: Get "https://<IP_ADDRESS>/scheme-nil-and-port-nil": dial tcp <IP_ADDRESS>:443: connect: no route to host (after 4.0720905s)
and I may need a little help here, why is connect: no route to host?

/retest

/retest

the failed conformance test is all about HTTPRouteRedirectPortAndScheme/http-listener-on-8080:
--- FAIL: TestGatewayAPIConformance/HTTPRouteRedirectPortAndScheme (1.17s)
        --- PASS: TestGatewayAPIConformance/HTTPRouteRedirectPortAndScheme/https-listener-on-443/4_request_to_'example.org/scheme-http-and-port-80'_should_receive_a_302 (0.01s)
        --- PASS: TestGatewayAPIConformance/HTTPRouteRedirectPortAndScheme/https-listener-on-443/5_request_to_'example.org/scheme-http-and-port-8080'_should_receive_a_302 (0.02s)
        --- PASS: TestGatewayAPIConformance/HTTPRouteRedirectPortAndScheme/https-listener-on-443/3_request_to_'example.org/scheme-http-and-port-nil'_should_receive_a_302 (0.01s)
        --- PASS: TestGatewayAPIConformance/HTTPRouteRedirectPortAndScheme/https-listener-on-443/2_request_to_'example.org/scheme-nil-and-port-8443'_should_receive_a_302 (0.01s)
        --- PASS: TestGatewayAPIConformance/HTTPRouteRedirectPortAndScheme/https-listener-on-443/1_request_to_'example.org/scheme-nil-and-port-443'_should_receive_a_302 (0.01s)
        --- PASS: TestGatewayAPIConformance/HTTPRouteRedirectPortAndScheme/https-listener-on-443/0_request_to_'example.org/scheme-nil-and-port-nil'_should_receive_a_302 (0.01s)
        *** FAIL: TestGatewayAPIConformance/HTTPRouteRedirectPortAndScheme/http-listener-on-8080/1_request_to_'/scheme-nil-and-port-80'_should_receive_a_302 (31.52s)
        *** FAIL: TestGatewayAPIConformance/HTTPRouteRedirectPortAndScheme/http-listener-on-8080/2_request_to_'/scheme-https-and-port-nil'_should_receive_a_302 (31.52s)
        *** FAIL: TestGatewayAPIConformance/HTTPRouteRedirectPortAndScheme/http-listener-on-8080/0_request_to_'/scheme-nil-and-port-nil'_should_receive_a_302 (31.52s)
        --- PASS: TestGatewayAPIConformance/HTTPRouteRedirectPortAndScheme/http-listener-on-80/5_request_to_'/scheme-https-and-port-8443'_should_receive_a_302 (0.00s)
        --- PASS: TestGatewayAPIConformance/HTTPRouteRedirectPortAndScheme/http-listener-on-80/4_request_to_'/scheme-https-and-port-443'_should_receive_a_302 (0.00s)
        --- PASS: TestGatewayAPIConformance/HTTPRouteRedirectPortAndScheme/http-listener-on-80/3_request_to_'/scheme-https-and-port-nil'_should_receive_a_302 (0.00s)
        --- PASS: TestGatewayAPIConformance/HTTPRouteRedirectPortAndScheme/http-listener-on-80/2_request_to_'/scheme-nil-and-port-8080'_should_receive_a_302 (0.00s)
        --- PASS: TestGatewayAPIConformance/HTTPRouteRedirectPortAndScheme/http-listener-on-80/1_request_to_'/scheme-nil-and-port-80'_should_receive_a_302 (0.00s)
        --- PASS: TestGatewayAPIConformance/HTTPRouteRedirectPortAndScheme/http-listener-on-80/0_request_to_'/scheme-nil-and-port-nil'_should_receive_a_302 (0.00s)

the error shows
http.go:217: Request failed, not ready yet: Get "http://<IP_ADDRESS>:8080/scheme-nil-and-port-nil": dial tcp <IP_ADDRESS>:8080: connect: no route to host (after 20.332037396s)
Sending Request:
< GET /scheme-nil-and-port-nil HTTP/1.1
< Host: <IP_ADDRESS>:8080
< User-Agent: Go-http-client/1.1
< X-Echo-Set-Header:
< Accept-Encoding: gzip
<
<

which is wired. if i deply the gateway, deployment and svc myself in my local cluster, it works instead of error:
# running in my own cluster
~ curl -v <IP_ADDRESS>:8080/scheme-nil-and-port-nil

*   Trying <IP_ADDRESS>:8080...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Connected to <IP_ADDRESS> (<IP_ADDRESS>) port 8080 (#0)
> GET /scheme-nil-and-port-nil HTTP/1.1
> Host: <IP_ADDRESS>:8080
> User-Agent: curl/7.74.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 302 Found
< location: http://example.org:8080/scheme-nil-and-port-nil
< date: Thu, 10 Aug 2023 03:07:56 GMT
< server: envoy
< content-length: 0
<
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
* Connection #0 to host <IP_ADDRESS> left intact

so i suspect there is some wrong with this conformance test, causing routes to conflicts somehow, i am working on it right now.

cc @arkodg
i think i found the reason, is really wired that two different gateway can have the same one IP address:
~ kubectl get gtw -n gateway-conformance-infra
NAME                                        CLASS           ADDRESS          PROGRAMMED   AGE
all-namespaces                              envoy-gateway   <IP_ADDRESS>   True         29m
backend-namespaces                          envoy-gateway   <IP_ADDRESS>   True         29m
same-namespace                              envoy-gateway   <IP_ADDRESS>   True         29m
same-namespace-with-http-listener-on-8080   envoy-gateway   <IP_ADDRESS>   True         2m7s  <== ?
same-namespace-with-https-listener          envoy-gateway   <IP_ADDRESS>   True         29m   <== ?

so my request to <IP_ADDRESS>:8080/scheme-nil-and-port-nil will hit same-namespace-with-https-listener instead of same-namespace-with-http-listener-on-8080, causing error connect: no route to host
repro steps
make create-cluster && make kube-deploy

kubectl apply -f test/config/gatewayclass.yaml

go test -v -tags conformance ./test/conformance --gateway-class=envoy-gateway --debug=true --run TestGatewayAPIConformance/HTTPRouteRedirectPortAndScheme

the k8s can only accept object's name that shorter than 63, and the name of envoy gateway resources is combined by:
envoy-[48char:name]-[8char:hash]   (total: 63char)

there is no way to increase the char number of [48char:name], so i change the way to generate hash: use h.Write(nsName); h.Sum(nil) instead of the h.Sum(nsName), the later could produce the same hash even with different nsName.
https://github.com/envoyproxy/gateway/blob/07ab2bab3cff77c6cdef3fca0b51fd6f81b1f6c8/internal/provider/utils/utils.go#L29-L30

/retest

hey @shawnh2 thanks for digging deep and finding the culprit, reg your comment
so same-namespace-with-http-listener-on-8080 ends up have the same name as same-namespace-with-https-listener

trying to better understand how can the hash be the same for this case

hey @shawnh2 thanks for digging deep and finding the culprit, reg your comment
so same-namespace-with-http-listener-on-8080 ends up have the same name as same-namespace-with-https-listener

trying to better understand how can the hash be the same for this case

we originally use sha256.Sum() to compute hash, but method Sum() is not the right way to generate hash. the go/sha256 package recommended this way to generate hash. (can refer to the go playground example here)
here is the effects
before:
kubectl get svc -n envoy-gateway-system
NAME                                                              TYPE           CLUSTER-IP      EXTERNAL-IP      PORT(S)               AGE
envoy-gateway                                                     ClusterIP      <IP_ADDRESS>    <none>           18000/TCP,18001/TCP   21m
envoy-gateway-conformance-infra-all-namespaces-67617465           LoadBalancer   <IP_ADDRESS>    <IP_ADDRESS>   80:31265/TCP          19m
envoy-gateway-conformance-infra-backend-namespaces-67617465       LoadBalancer   <IP_ADDRESS>    <IP_ADDRESS>   80:30822/TCP          19m
envoy-gateway-conformance-infra-same-namespace-67617465           LoadBalancer   <IP_ADDRESS>   <IP_ADDRESS>   80:30797/TCP          19m
envoy-gateway-conformance-infra-same-namespace-with-ht-67617465   LoadBalancer   <IP_ADDRESS>     <IP_ADDRESS>   443:31186/TCP         19m

after:
NAME                                                              TYPE           CLUSTER-IP      EXTERNAL-IP      PORT(S)               AGE
envoy-gateway                                                     ClusterIP      <IP_ADDRESS>    <none>           18000/TCP,18001/TCP   21m
envoy-gateway-conformance-infra-all-namespaces-cbdhjs62           LoadBalancer   <IP_ADDRESS>    <IP_ADDRESS>   80:31265/TCP          19m
envoy-gateway-conformance-infra-backend-namespaces-c5ds6v8k       LoadBalancer   <IP_ADDRESS>    <IP_ADDRESS>   80:30822/TCP          19m
envoy-gateway-conformance-infra-same-namespace-ed64jgb9           LoadBalancer   <IP_ADDRESS>   <IP_ADDRESS>   80:30797/TCP          19m
envoy-gateway-conformance-infra-same-namespace-with-ht-8eu1w9v3   LoadBalancer   <IP_ADDRESS>     <IP_ADDRESS>   443:31186/TCP         19m


Specify resource group or app service environment.

Deployment failed when there are multiple app services which have same name. Of course we can't create Non-ASE app service which have duplicate name because all app services have same domaim suffix (azurewebsites.net) . But ASE app service can have duplicate name because ASE has unique domain suffix (asename.appserviceenvironment.net) each other.
This action seems to search app service instance by the name only, but the name may not be unique in ASE app service. So I think this action should have option to specify the resource group or environment for uniqueness.
workflow file is below,
      - name: Deploy to Azure Web App in ILB ASE v2
        id: deploy-to-app2
        uses: azure/webapps-deploy@v2
        with:
          app-name: 'app2'
          package: .

but there are multiple app service named "app2".

and workflow fail with this error.
Run azure/webapps-deploy@v2
  with:
    app-name: app2
    package: .
    slot-name: production
  env:
    AZURE_HTTP_USER_AGENT:
    AZUREPS_HOST_ENVIRONMENT:
Error: Deployment Failed with Error: Error: Multiple resource group found for resource nameapp2

Are you using "Publish Profile" option in your workflow? If now, could you please that and see if that helps?

We have added the support, it will be rolled out in next release.

@ayuina This is available now.


BROKERS: Chat Completions Stream Response

Closes #286

@BrianLParker PostChatCompletionRequestWithStreamResponseAsync is missing in the interface IOpenAIBroker.ChatCompletions

Holding off on this until documentation is properly completed.

Closing due to inactivity


No Footer Components

Bug, feature request, or proposal: Request
There is no footer component or anything like that for Angular Material. MDL has a footer component so I imagine Angular Material should have one as well (likely styled similarly to MDLs).
Is there anything else we should know?
I already have something working/done for the footer, I just need to update it for beta 3 (and a few other tweaks I want to do). But it's styled based off of MDLs design.

Currently we're sticking to components from the Material Design spec. It doesn't have a footer component like the one you linked.  However, there is a component called "bottom nav" that is similar. We are tracking progress for it in https://github.com/angular/material2/issues/408.


Restored route reflection

Looks like this was commented out, rather not-obvious to reimplement. Hope this was the only reason :) Back with all passing specs.

Looks like a bad commit is part of this. Let me try again.


Build(deps-dev): Bump eslint from 8.13.0 to 8.14.0 (#3393)

Pull request opened by the merge tool on behalf of #3393

Merged in 51dee12f02622cb3f2a59e03c2be258e3cf96192


call_service ServiceException

[ERROR] [WallTime:<PHONE_NUMBER>.672246] [Client 0] [id: call_service:/rosapi/service_type:32] call_service ServiceException: service [/rosapi/service_type] responded with an error: error processing request: field type must be of type str
I am running indigo, have used rosbidge_websocket before with no problem.

I had this problem, but I was trying to use roslibjs, not ros-control-center, but I believe that it's the same situation.
To resolve it I had uninstalled rosbridge_suite package then cloned the repository (current development source code) and compiled. I had also to install ros-auth, then it is just launch rosbridge server.
I hope I've helped.


Question! Using VCR mechanics to record queries to sql database.

Does anyone know if there are any libraries that would allow to record and play queries to sql database?
I don't per-see any obstacles in implementation. The question is does it even makes sense in terms of test speed improvement?

@igor-polynets if you use in your project an ORM, maybe this libraries can help you!

https://github.com/model-bakers/model_bakery
https://github.com/FactoryBoy/factory_boy

Thanks @jairhenrique I'm aware of these.
We do use ORM, however many tests are written using models directly, and they access test database.
I was looking for a generic solution to reduce time of these tests running by applying something similar like vcrpy.

That would be super cool!  But it outside the scope of the vcrpy project itself.


[BUG] Unable to boot VM with assigned PCI device(s)

Describe the bug
VM with pci device assigned to it won't boot; shows this error:

To Reproduce
Steps to reproduce the behavior:

Enable the pcidevices-controller addon
Enable the required devices for pci passthrough
Create a basic windows 10 VM
Check that VM boots ok w/ no devices assigned
Assign GPU to VM
Check that VM no longer boots
Go to the events log for the VM
See the errors

Expected behavior
The VM should boot with the device attached.
Environment

Harvester ISO version: v1.1.1
Underlying Infrastructure: Baremetal on custom built server

Additional context
Add any other context about the problem here.

cc @tlehman, cloud you help to take a look for this issue? Thank you!

This is similar with https://github.com/harvester/harvester/issues/3135

Seeing the vfio_dma_map part of the error makes me think it's related to this issue: https://github.com/harvester/pcidevices/issues/29
I'm releasing a fix for that today or early tomorrow, aimed at the 1.1.2 release


Possible Conflict with Traefik

So I am wanting to set up Traefik as a reverse proxy server for my Docker containers and I am using this tutorial: https://medium.com/@lukastosic/traefik-docker-reverse-proxy-and-much-much-more-a39b24b9d959
But I am not sure if Portainer is compatible to manage Traefik with? Because whenever I create a container and I try to access the container via its URL I just get error 404 page not found.
Is there an issue between Portainer and Traefik?

Nope no issue between traefik and portainer, i used both on many envs
If you got a 404 error, traefik have no role matching you request, you can check traefik page (--web flag) on port 8080 by default to see if your rule is present

I checked it and the rule appears on its healthpage.
I will post screenshots tomorrow.

Hi @c0fe, as told in #1445, "you need a DNS server which resolves *.mydomain.dev to the machine hosting traefik)". It is also noted in the link you provided: "then we map it in our internal DNS and we have nice working access to our TEST environment".
Is the domain you are trying to add known to any internal or external DNS server reachable by your host? If it is not, you need to configure it. In case you can't, you need to spin one.
For example, put these files in a dir:
dnsmasq.conf:
#dnsmasq config, for a complete example, see: http://oss.segetech.com/intra/srv/dnsmasq.conf

#don't read /etc/resolv.conf or any other file
no-resolv
#explicitly define host-ip mappings
address=/dev/<IP_ADDRESS>
address=/docker.local/<IP_ADDRESS>
address=/docker.localhost/<IP_ADDRESS>
#use google as default nameservers
server=<IP_ADDRESS>
server=<IP_ADDRESS>

Dockerfile:
FROM alpine:latest
RUN apk --no-cache add dnsmasq && mkdir -p /etc/default/
COPY dnsmasq.conf /etc/dnsmasq.conf
CMD [\"dnsmasq\",\"--no-daemon\"]

and execute docker build -t my/dnsmasq ..
Then, you can add this to the docker-compose.yml:
dnsmasq:
  image: my/dnsmasq
  container_name: dnsmasq
  restart: always
  labels:
    - "traefik.enable=false"
  ports:
    - "<IP_ADDRESS>:53:53/tcp"
    - "<IP_ADDRESS>:53:53/udp"

Last, you need to configure your connection to use <IP_ADDRESS> as the primary DNS server.
Now, when you browse mydemo.mydomain.dev[:80], the browser will ask at <IP_ADDRESS>:53, which will be routed to the dnsmasq. It will reply with <IP_ADDRESS>[:80], so the browser will try go there. Since it is routed to traefik, it will be resolved to the corresponding container (note that this container and traefik must share a docker network).

Not really related to Portainer I would say, I'll close this issue. Multiple users of Portainer are using Traefik, you might want to ask your question in our Slack channel.

@1138-4EB yes the domain is set in an external DNS to point to my external IP address, if I run without use of a proxy server, it is reachable externally.

@c0fe Did you check the other hint? I.e., that the container you are trying to route to must be in the same docker network as traefik. Traefik can extract labels and IPs from the docker daemon, but it needs a way to connect to the container.

traefik 404 code is for a non matching rule
If traefik can't join container, it return a 5xx error (gateway timeout)
Check traefik logs with --debug

@1138-4EB @WTFKr0 i have the following networks:
Proxy
Bridge
The containers that are supposed to be behind Traefik are set in Proxy and Traefik has two, Proxy and Bridge.

If tou have multiple networks, be sure to provide traefik.docker.network label, with value of the common network where trafik and your target container are, Seems to be Proxy in your case
But if it's only that, you should have a 5xx error

Here is the setup:
https://i.imgur.com/2ZkjSjH.png
https://i.imgur.com/Fb8uwNu.png
So I am not sure what I am doing wrong within portainer, I am still getting 404 error.

@WTFKr0 it appears that Portainer can't place the routes properly within Traefik.

Traefik read only labels, portainer place labels on the docker standard, so it should work
Can you post docker inspect of your container ?

@WTFKr0 I placed all the labels yet it says 404 not found. So where can the issue be?

You can have more information by enabling --debug on traefik and tail the logs while you refresh 404 page, traefik should say that the rule is not present, maybe it say why

In last resort you can strace traefik process to show system calls like raw data of what it received and what it try to do with

@WTFKr0 This is venturing into traefik so I won't update the issue any longer but can you please advise on how i properly enable the --debug flag? is that just in the docker run flag or another command?

Just add the --debug switch in command line, next to --docker, see traefik --help if needed


Allow to use any S3 compatible store

deis-store is great, but it feels less production ready then deis (crashed twice yesterday and bringing it back up took 2 hours) and when the store is not running, everything is down. Most deis components are using deis-store already via the S3 compatible gateway so I would make sense from my point-of-view to have this option configurable.
Side note: I'm already using S3 as registry storage and RDS as database, but an unavailable deis-store still results in a not bootable registry, which means non of your apps will start / restart.
Issue: https://github.com/deis/deis/blob/master/registry/bin/boot#L48

oops. Since most of the conversation has been ongoing in #2812 let's keep it rolling over there.


Fix: Added units to dashboards

Sunlink Pull Request Description
Added units to all dashboards which needs them.
Monday Link

Effected Components

[ ] Link Telemetry
[ ] Parser
[ ] Influx
[x] Grafana
[ ] DBC
[ ] Sunlink environment
[ ] Tools
[ ] Tests
[ ] Docs

Testing

[ ] Vehicle testing
[x] Randomizer testing
[ ] Other
[ ] N/A

Sanity check

CAN ID table / DBC updated
gitignore updated and commited
[x] Steps confirmed

Sources

The dashboards look like this with units:

Note: this is randomized data, which is why the numbers are large in magnitude.


? keymap help

Discussed in https://github.com/jackMort/ChatGPT.nvim/discussions/43

Originally posted by RhydianJenkins December 29, 2022
Hi.
Thanks so much for this plugin. I use it daily :)
I've noticed that we've recently been blessed with several new features (such as sessions and api request params), and have since also been given several new keybinds to remember.
Could we get something like nerdtree (example below) where the user could press ? to see a quick summary/cheat sheet of all the possible buttons? It's getting hard to track!

Thanks

Excellent suggestion from Rhydia!

Friendly bump!

I've been looking for this as well. Another bump from me.

I played a bit with the Nui layout and the way settings can be toggled on and off. Making something similar to toggle help does work. I have something rudimentary working now but it is buggy and I'm struggling with Lua in general. Haven't coded with it that much. I will push to a fork when I have some more time. Maybe in some days.


EmrEtlRunner: add option to prevent termination on failure

This is critical for large pipelines where potentially a late S3DistCp failure currently means we need to do a lot of reprocessing.

Won't do, this is beyond the scope of EmrEtlRunner...


Incorrect use of username/password on LdapOptionsExtensions.Connect for Visus.DirectoryAuthentication

Affected library

[ ] Visus.LdapAuthentication
[x] Visus.DirectoryAuthentication

Environment

Library version 0.8.0
OS: Windows 11
.NET: 8
LDAP Server: OpenLDAP

Summary
The use of username/password from method parameters or LdapOptions is inconsistent on Visus.DirectoryAuthentication implementation. On Visus.LdapAuthentication the code is using authentication information passed in parameters where here https://github.com/UniStuttgart-VISUS/Visus.LdapAuthentication/blob/e558e1f3e1780b56c6b89775ae5328c10e38e1b3/Visus.DirectoryAuthentication/LdapOptionsExtensions.cs#L91 and https://github.com/UniStuttgart-VISUS/Visus.LdapAuthentication/blob/e558e1f3e1780b56c6b89775ae5328c10e38e1b3/Visus.DirectoryAuthentication/LdapOptionsExtensions.cs#L97 it is coded to use information from LdapOptions. It doesn't looks right to me.

Thanks for pointing that out. That is actually critical.

Fixed in 0.9.0


Enhancement/commands

With this PR commands from Bukkit plugins are getting registered to Sponge. So you get information on them, with the help command. You also do not get an error anymore saying it is an unknown command. I also changed that the commands are only being passed to the pore server, when it is a command used by a Bukkit plugin.

I'm unable to replicate the functionality you've described in regard to the /help command on a local Sponge server. Is this PR tested?

I think the better way to implement this is to register the commands in Bukkit directly in Sponge's command service and remove the CommandEvent. That way it will also work when called through the CommandCallable directly.

@caseif I've tested it, and noticed it too. But this is because it is not yet implemented by Sponge, it is in the SpongeAPI.
@Minecrell I've also thought of that, the only problem I came across was that I only get the arguments of the command, not the command itself. So I cannot pass it on to Pore.

I guess you would need to create a custom CommandMap implementation that forwards everything to Sponge's CommandService.

I mean, when the command is being called, this method in CommandBase is called:
public Optional<CommandResult> process(CommandSource source, String arguments) throws CommandException

the command is being called, but I only get the source of the command and its arguments not the command itself
So I do not know which command is being called

Nevermind I can also store the command itself in CommandBase for every command when it is being registered

You can find the Lapis code style for both Eclipse and IntelliJ in https://github.com/LapisBlue/Commons/tree/master/etc .

@Lamp-Post Is this ready to merge?

@Minecrell yes it is

@Minecrell ready if you don't mind having no tab-complete support...

After looking into it some more, I decided to implement this a little bit different. Basically, your way has the following problems:

No support for dynamic command registration
Only commands defined in the plugin descriptions are supported
Only commands registered within plugin initialization time are supported

The custom PoreCommandMap lets Sponge handle the complete command handling which should be more reliable in most cases. Thanks a lot for your contribution anyway!


Missing type-signatures for functions generated by TH

Do you really need this feature ? I agree it would probably be better, however, some signatures are quite tricky (as the y can have some  complex constraints) so I prefer to let the compiler figure them out, instead of generated something wrong.

These days TH can even generate haddocs for generated functions.

Pull requests are welcome.


Bugfix to compile mycpu.c on Apple

Tested successfully with Apple Clang on Mac Pro 2022

Looks good, going in.


Sui Bridge

Sui Bridge
Motivation
Bridges serve a critical role in blockchain ecosystems. They’re the glue that enable digital assets in one ecosystem to have utility in other ecosystems.
Bridges are especially important in early stage chains with promising technology and value propositions, in that they let chains “borrow” well-developed digital assets and experienced users from other chains into their own native dApps. Down the line, this effect is multiplicative since successful dApps foster a healthy environment for native asset issuance.
Thus, a bridge is a key enabler in the growth flywheel: bridges enable existing digital assets to drive native dApps, native dApps drive the growth of native assets, native assets bridge over to other chain ecosystems providing more utility for the native chain’s ecosystem.
To empower more types of cross chain communication and diversify bridging experiences on Sui, we introduce Sui Bridge, a trustless native bridge leveraging Sui’s security model.
This bridge will take a pre-eminent position relative to other, third-party, bridges because it relies on the same security assumptions as Sui’s core network and is developed by the same developer team that built Sui. Hence, trusting Sui Bridge requires the same security assumptions as trusting Sui itself, and this is the Sui Bridge’s strongest value proposition.
Sui Bridge will start as a fungible token bridge between Sui and Ethereum, while making it highly extensible to support new assets, message types and more chains in the future.
Traditionally, Ethereum is the hub of the vast majority of blockchain digital assets and, in practice, most of the assets bridged into Sui have come from Ethereum. Hence, creating a direct connection to the world’s main digital asset hub, together with Sui’s security assumptions, delivers a trustworthy Sui Bridge aimed at further bootstrapping Sui’s digital asset ecosystem.
Bridge Committee

The bridge committee has the responsibility to authenticate cross chain transfers/messages, upgrading Move/Solidity code and emergency handling. Authentication is explained in Architecture section and the remaining is explained in Security & Risks section.
Inheriting security characteristics of Sui blockchain, the bridge committee is identical to the active Sui validator set. Namely, every currently active validator is in bridge committee and holds corresponding voting power.

We discuss more about committee management below. In this proposal we use “committee” and “validators” interchangably.
Architecture
The core of Sui Bridge consists of the following components:

Off Chain Bridge Node
Move Package on Sui
Solidity Program on Ethereum

Bridge Node
Every committee member runs a Bridge Node. It observes, verifies, signs BridgeEvents and submits them to Sui.
Bridge Orchestrator, as a part of Bridge Node, monitors BridgeEvents emitted from both Sui and Ethereum. This is done by having access to trusted Full nodes. Upon a new BridgeEvent, Bridge Orchestrator queries all Bridge Nodes and collects their signatures. Once there are over 1/3 verified signatures by stake, it submits them to Sui.
When asked to authenticate a transfer or message, Bridge Node verifies it through trusted fullnodes, and responds with their signatures.
Bridge Node also signs Solidity contract upgrade approvals and emergency mitigation requests.
Move Package
Functionalities of Move code:

escrow bridged assets
verify committee signatures and store them on chain
mint/release assets that are bridged from Ethereum
committee management
upgradable by committee approval

Solidity Program
Functionalities of Solidity code:

escrow bridged assets
verify committee signatures
mint/release assets that are bridged from Ethereum
committee management (passive mirroring that on Sui)
upgradable by committee approval

Bridge Flow
Below we present the fungible token bridge flow.
Ethereum → Sui

User submits bridge transaction to Sui Bridge contract on Ethereum. The assets-to-bridge is locked and escrowed in the contract, or burned if it’s non native
The transaction is executed on Ethereum and emits a BridgeEvent
Bridge committee independently observes the finalized BridgeEvent from a trusted Ethereum Full node
Bridge committee attests to it by signing the BridgeEvent
The signatures are aggregated by Bridge Node and then submitted on Sui, verified by Bridge package. The assets are minted/released and marked as claimable.
User, in fact anyone, can claim the assets and deliver to the right address.

Sui → Ethereum

User submits bridge transaction on Sui. The assets-to-bridge is locked and escrowed in a shared object, or burned if it’s non native
The transaction is executed on Sui and emits a BridgeEvent
Bridge committee independently observes this BridgeEvent from a trusted Sui Fullnode
Bridge committee attests to it by signing the BridgeEvent
The signatures are submitted and verified on Sui
User, or anyone, grabs the aggregated signature on Sui
Then they submit the signatures to Ethereum. Bridge contract verifies the signatures and deliver the assets to destination address.

These two flows are almost symmetrical, except that we store signatures of both directions on Sui, to make use of Sui’s efficient computation & storage.
Economics
Initially, users do not need to pay fees for using Sui Bridge, except for the gas fees to initiate bridge transfer and claim the assets. As mentioned in Products Integration section below, front ends may be incentivized to subsidize the cost of claiming assets on behalf of the users, making it even cheaper.
As Sui Bridge matures, the economics may change with committee approvals. In particular, Sui validators are incentivized to do run the bridge as a requirement of the Sui Foundation’s delegation program. At some point in the future, however, as the Sui Foundation progresses towards full decentralization, this governance framework will need to be upgraded to ensure the bridge is sustainable on its own in the long-run.
Security & Risks
Bridge Finality
To reduce of the risk of reorganization, an Ethereum transaction is not considered valid and attested by the committee until its block is finalized (≥2 epoch). This means an Ethereum → Sui bridge takes ~13 minutes to settle. A Sui → Ethereum bridge is finalized in seconds and can be claimed on Ethereum within seconds.
Replay Protection
Each bridge transaction is associated with a nonce. The nonce is part of the BridgeEvent emitted on chain and covered in committee’s signed messages. It has two purposes:

replay protection. On both Move and Solidity code, a claim attempt will fail if nonce is already used.
track status. The bridge transaction’s status can be looked up on chain with the nonce.

Committee Management
The committee management mostly happens on Sui such that we can make the best use of:

Sui’s security model and
Sui’s efficiency

As aforementioned, each active validator is part of the Bridge committee. Validators register a new ECDSA key as the key to sign attestations/approvals and as the account key to submit transactions. Bridge committee is refreshed every epoch along with Sui epoch change. Validators can rotate their ECDSA key and bridge network address, which takes effect in the next epoch.
Committee info is stored in Ethereum contract. At the beginning of each Sui epoch, Bridge Orchestrator collects signatures from all that attest to the latest committee state, and submit to Ethereum to refresh it. A refresh requires more than one third voting powers.
Package/Contract Upgrade
Sui Bridge Package is part of Sui framework, therefore every upgrade needs 2/3 validators to upgrade to the new binary.
On the Solidity side, it takes at least 1/2 validators to approve a package upgrade.
Safety and Liveness
Safety
All critical operations discussed in this proposal need at least 1/3 voting power to make effects. This is the base trust model of Sui blockchain, making Sui Bridge generally trustless as it does not involve additional trust assumptions.
Liveness
Assets claiming is permissionless: anyone can run a Bridge Orchestrator, or their own script to collect validator signatures and claim the assets.
Contingency Red Buttons
Red buttons exist in Sui Bridge to stopgap unexpected catastrophic failures. For example, once pressed, all operations will cease until it’s unpaused, which is useful in stopping assets from flow outwards in a hack.
To press the red button, it takes at least two validators to collaborate. The exact voting threshold is TBD. The motivation for a small threshold is to stop bleeding very fast in case there is an emergency security issue.
To release the red button, at least 1/2 stake is required.
Curated List of Tokens
To reduce fraud risk and ease the burden of initial liquidity requirement, Sui Bridge will start with a curated list of token. Any bridge attempts with non-allowlisted tokens will cause the transaction to fail.
Products Integration
Composability
With Programmable Transaction, the flow is highly composable with various projects on Sui. For example, to encourage more liquidity inflows, Defi protocols can subsidize gas cost to claim the assets, deposit into a high yield vault, even with a small Sui airdrop for further transactions. This is especially user friendly when a new user starts to explore Sui.
Programmability
A front end widget allows easy integration of Sui Bridge in various protocols.
Phased Development - Sui Bridge V1
The development will happen in a few phases. In V1, we will simplify a few features without disruptively altering the security assumptions and other characteristics discussed above. Particularly, in V1, the bridge committee is static, namely not changing along with Sui active validators set every epoch. By analyzing historical validator set changes, the risk introduced by fixing the committee is small. In the meantime, we gain more confidence in dynamic committee implementation while allows Sui Bridge to have early feedback and integrate with other products.
Committee Blocklist
As a simplified governance policy In V1, in both Move and Solidity we keep a blocklist for byzantine committee members. When one is added to the blocklist, its signatures and votes are considered illegitimate instantaneously.
At least 1/2 voting power is required to add a committee member to or remove from the blocklist.
Open Source & Auditing
Core code, including Move, Solidity and Bridge Node, would be open sourced and thoroughly audited before launch on mainnet.

Closing as Bridge has launched on mainnet

@longbowlu minor bookkeeping but this didn't actually get closed


Partial intervals not shown in temporal order

When there is an interval that straddles the day boundary, e.g.
[ 2016-01-03 23:00, 2016-01-04 01:00 ) the "interval fetch" command for 2016-01-04 fails to list the day's intervals in order:
Dochazka(2016-01-04) active ACTIVE> interval fetch 2016-01-04
Attendance intervals of active (EID 44)
in the range [ 2016-01-04 00:00, 2016-01-04 24:00 )

IID Begin            End              Code Description
431 2016-01-04 08:00 2016-01-04 12:00 WORK Riding on the Metro
432 2016-01-04 00:00 2016-01-04 01:00 WORK Dozing off

I think this is because we are relying on "ORDER BY" in the SELECT
statement to do the ordering. This worked fine before, but now we are
using two SELECTs and concatenating the results. This places the partial
intervals at the end. This will have to be fixed on the server side by
adding logic to sort the intervals.

Fixed in App::Dochazka::REST version 0.512


Support .attrs({ ref: ... })

Support using ref inside .attrs() argument, to dynamically generate a ref.
Basically the goal is implementing tab order like behavior in react-native:
const refList = [React.createRef(), React.createRef()]
const handleFocus = refList.map(ref => () => ref.current.focus())
const common = { refList, handleFocus, ... }

<MyInput {...common} refIndex={0} />
<MyInput {...common} refIndex={1} />

const MyInput = styled.TextInput.attrs({
  ref: props => props.refList[props.refIndex],
  onSubmitEditing: props => props.handleFocus[props.refIndex + 1],
})

In theory key could be supported in the same way, but that can be a separate PR if wanted.

Well the problem is the directly wrapped element gets either key or innerKey depending on its type. Otherwise I'm fine with either.
One thing I ran into is styled(Inner) will stomp the attrs ref of Inner if it's also a styled component in react native - Inner.extend seems fine. Not sure what to do about that other than have another ref so Inner can tell this isn't from the user?

Ah, the ref error is https://github.com/airbnb/enzyme/issues/1504
Easy enough to work around.

Description cleaned up, rebased and squashed, tests working (was actually just react-dom needed to be updated and the errors were being swallowed!?)
@kitten I'm going to stick with ref for now as @probablyup implied in #1718 4.0 will move to using forwardRef for styled components, which would make/allow the outer element usage ref instead of innerRef as well.
The confusion is basically over whether you feel attrs() is closer to defaultProps (should match outer attributes) or the render() implementation (should match what the wrapped component receives) - I've gone with the latter here - especially since attrs() can have logic based on the outer props.

Fair enough. I haven't looked into it with v4, but I suppose you could also keep the current innerRef implementation as well and pass-through .attrs({ ref }) that way, but it's a bit overkill.
When you say "another component layer above", you mean a raw component, not a styled component; something like this?
const A = styled.input`color: red`;
const B = (props) => (
  <A
    {...props}
    ref={props.refList[props.refIndex]}
    onKeyPress={props.handleFocus[props.refIndex + 1]}
  />
);

It always feels like I'm doing something wrong when I do that, but I suppose it can't be helped here.

Well so the issue with forwardRef is the ref={} prop has to be put on the uppermost level for it to be forwarded. attrs is applied one level down in the StyledComponent class, so we couldn't apply a ref from there.

Sure, but the inner component also has access to the real component to give to ref, forwardRef() just gives you a way to get the literal ref parameter passed.

I mean I tried redoing your PR against develop and it just didn't work with forwardRef. You're welcome to give it another try though if you can get it working.


Fix the issue of removing argocd resources without cascade parameter

What type of PR is this?

What this PR does / why we need it:
Which issue(s) this PR fixes:

Fixes https://github.com/kubesphere/issues/issues/1052
Special notes for reviewers:

Please check the following list before waiting reviewers:

[ ] Already committed the CRD files to the Helm Chart if you created some new CRDs
[ ] Already added the permission for the new API
[ ] Already added the RBAC markers for the new controllers

Does this PR introduce a user-facing change??

Fix the issue of removing argocd resources without cascade parameter

/cherrypick release-3.4

/lgtm

/approve


support for CentOS9 / RHEL9?

tray-icon does not create tray icons on RHEL or CentOS stream 9.    Not surprising, they use a version of GNOME that doesn't support tray icons out of the box, so at first glance this seems like an obvious WONTFIX.
Electron apps such as slack support tray icons on Stream9 though.  They have a dependency on "libappindicator-gtk3" like tray-icon does.    That's not in the base repository but if you add the EPEL repository (which basically everybody does) then slack installs.   The tray icon doesn't work, but at least the app installs and works.
Installation of https://extensions.gnome.org/extension/615/appindicator-support/ allows the slack tray icon to show and work.
Our app (which uses tray-icon 0.14.3) doesn't display an icon on stream9.    Neither does rustdesk, which uses tray-icon 0.11.3 on its release version (1.2.6) and 0.14.3 on its nightly build.
It would be nice to bring Tauri up to parity with Electron in this area by supporting tray icons on RHEL / CentOS 9.
tray-icon works fine on Fedora Core 39 and later, so RHEL10 will likely work fine, but RHEL10 is still a year away.

Correction: rustdesk nightly uses tray-icon 0.11.3.    I'll try and build and run rustdesk master which uses 0.14.3.

correction correction: rustdesk nightly does use the master branch (with 0.14.3), not the branch labelled "nightly". :)

We use libappindicator-rs under the hood which tries to use libayatana-appindicator if exists and fallsback to old libappindicator if it doesn't, I don't see why it shouldn't work but I don't use CentOS9/RHEL9 and really don't have the time to setup one to test so hopefully someone with access to these distros can help fix this.


feat(Notifications): static component implementation (DATAUI-1582)

That's how it looks

I hereby agree to the terms of the CLA available at: https://yandex.ru/legal/cla/?lang=en.

@amje @ValeraS @korvin89
Посмотрите PR?

U should rename PR to have properly working CI

renamed

Will u add some tests?

I couldn't find any tests in your repository, can you provide me with some references? And I can't really think of any tests yet — it's a component with basically no logic except for the swiping.

I couldn't find any tests in your repository, can you provide me with some references? And I can't really think of any tests yet — it's a component with basically no logic except for the swiping.

Yep, we do not have tests yet. And it is not good. U can add an issue for test and do it later. I am talking about testing of basic functionality, for example here
There is a good reference for testing configuration here

Yep, we do not have tests yet. And it is not good. U can add an issue for tests and do it later. I am talking about testing of basic functionality, for example here. There is a good reference for jest configuration here.

Created an issue — https://github.com/gravity-ui/components/issues/62

After consulting our designer, I rewrote the NotificationWithSwipe component.
It now uses the tinygesture library instead of the swipejs.
I also made a small NotificationSwipeAction component for simplification of writing swipe actions.


Secondary module for Server validation

Done. Did not use module, just plugin that can be used or not