Integration with Paddle websites

Make it possible to configure the integration with Paddle for a city (only for shop users)
Add a cron to request the information from the city website (every night)
Save the organisational units (city services) with their address and opening hours

Can be textual for now. We'll update the code once we're reworking the services and change the structure of the opening hours.
Show this info in When & Where

A long scrollable list with name, opening hours and address per organisational unit
When there are multiple city services in the app, it should be possible to map an organisational unit to a city service. In this case the opening hours and address of that city service must be synced automatically

Disable the opening hours and address text areas under Settings when there is an integration with Paddle.

Docs: PADPRO-Paddle-270919.pdf
Test environment details and more info on Monday

Can be configured on dashboard

Decided against adding all organisational units to when and where since it's already very long

Check with Tom if we need to find a way to show multiple organization units in When & Where (eg. using tabs or accordions or ...)
Don't show closing days that are in the past
I think the opening hours are a bit messy, because when there are multiple lines possible per day, the first line makes it messy. In that case it wouldn't render the first opening hour on the same line as the day

maandag:
10:30 - 12:00
dinsdag:
10:30 - 12:00
woensdag:
08:30 - 12:00 Gratis koffie
13:30 - 16:00 Enkel dienst Burgerzaken.
20:00 - 21:00
donderdag:
08:30 - 12:00
vrijdag:
08:30 - 12:00
zaterdag:
09:00 - 11:45 Enkel dienst Burgerzaken

or

maandag: 10:30 - 12:00
dinsdag: 10:30 - 12:00
woensdag:
08:30 - 12:00 Gratis koffie
13:30 - 16:00 Enkel dienst Burgerzaken.
20:00 - 21:00
donderdag: 08:30 - 12:00
vrijdag: 08:30 - 12:00
zaterdag: 09:00 - 11:45 Enkel dienst Burgerzaken

the multiple organization stuff is not needed yet for tom, will update formatting


Fira Code -> Fira Mono

Switched fira-code over to fira-mono (which does not have ligatures), but retained the fonts just in case people want to switch back easily. As discussed in #379
(also expanded the weights available for Fira Code in the resources whilst I'm at it

Not sure what that CI fail is 😕

The CI fail is caused by the tests for the sbt plugin. I'm using the built-in match command to compare file contents which is unfortunately not ignoring whitespace. If you revert all whitespace changes just under sbt/src/sbt-test/site the build should be green.

Gah. Should be able to tackle this tonight, though my editor automatically trims whitespace, so getting it to comply will be a battle 😂


blog post detail page showd 404 after I changed the homepage

Following the comments in urls.py,  I pointed the homepage to the blog post listing page.
I did work. http://lixue.info/
However,  the blog post detail page showd 404. But everything is ok in testing environment.
http://lixue.info/%2Fpost-detail-page-showd-404/  return the following result:
'''
Not Found
The requested URL //1/ was not found on this server.
Apache/2.4.7 (Ubuntu) Server at www.liaoixue.com Port 80
'''

Could you post this to the mailing list instead? Thanks


Get rid of start_link callback of plugin modules

I have noticed that each plugin module needs to implement start_link callback, which for every plugin looks like this:
start_link(_Options) ->
    {ok, spawn_link(fun() -> receive _ -> ok end end)}.

I was wondering if we really need this callback. If I checked correctly, the only place it is used is here, which basically adds infinitely waiting child to epl supervisor.
I think we could remove this from all core plugins and of course remove the part which calls these functions. It could be a step towards creating friendlier plugin system 🙂
While we're at it, in erlanglab/epl_counter#1 @michalslaski mentioned that init callback is also not used anymore, so maybe it's time to get rid of it too. Or at least rename it, so that it's not confused with cowboy_websocket_handler init callback.

Before we remove the init callback function, I would like to understand how EPL plugins will register in the new @Baransu 's UI plugin system.

I wanted some easy way to list all started plugins. Supervisor's which_children/1 seemed like what I wanted, but then Supervisors require Pid to be returned, so I hacked this start_link/1. I'm fine with removing it as long as we have a way to tell which plugins are started. One possible way is to list all subscribers to the epl_tracer, but I'm not sure all plugins will always want to subscribe to begin with.

How about storing plugin names in additional ETS table?

Or assume that all started applications with their name prefixed with epl_* are plugins?

New plugins system will inject two lines per plugin into <head> tag in index.html served by server (<script> and <link> for JS and CSS). Also we will have to copy folder with static files (images, etc) into UI output build.
I'm doing this right now because I want option to include plugins into build without server. If the same plugin will be defined in some config file for erlangpl it we will replace builtin version.

@michalslaski yes, we can assume that. It becomes related to #27. I know @mentels has some idea about imposing plugins being applications, but that's a subject for another issue.

After removing legacy UI callbacks, is there a way to preserve the debug printout ?INFO("Started plugins: ~p~n", [P]) ?

Not at this point, if you're looking at the branch I've just created. However next PR I'll work on designing plugins as applications, so the log message will come back :)

#38 resolved this issue, closing.


How to configure OmniAuth::AuthenticityTokenProtection

How can I configure the OmniAuth::AuthenticityTokenProtection to pass options to Rack::Protection::AuthenticityToken. I'm using Hanami 1.3 which already handle CSRF protection, but I would like to configure OmniAuth to use the right session key (key: :_csrf_token) and the right HTTP param (authenticity_param: :_csrf_token).
Here is the error I have.

Got my answer from #1070.

OmniAuth::AuthenticityTokenProtection.default_options(
  key: "_csrf_token",
  authenticity_param: _csrf_token"
)


Add Godex to Exchanges list

Hello!
Can you please add Godex to your exchanges list.
https://godex.io
Thanks in advance!

Hi!
Added in #589
+merchant
+in progress

Thanks!


Update kafka to 3.4.0

Currently is included the kafka version 3.3.2 with a medium vulnerability. For more details see https://cwe.mitre.org/data/definitions/502 and https://kafka.apache.org/cve-list. With the version 3.4.0 this is fixed.

@maxbeckers Please sign the Contributor License Agreement!
Click here to manually synchronize the status of this Pull Request.
See the FAQ for frequently asked questions.

@maxbeckers Thank you for signing the Contributor License Agreement!

Spring projects cannot upgrade to a new major or minor version of dependencies in a patch release; we can only upgrade to a new patch release of the dependency; e.g. 3.3.2->3.3.3.
Supported versions https://spring.io/projects/spring-kafka#support are fully compatible with the 3.4.0 clients; you just have to override the dependency in your application; see https://docs.spring.io/spring-kafka/docs/current/reference/html/#update-deps for how to do that in a Spring Boot app; if not using Boot, just override the dependency version.

The CVE you cited is in Kafka Connect, which is not used by this project; it is only an issue if you use this project and connect in the same application.


Add utility function for validating slack integrations

This migrates one of our internal validation functions (from terraform-aws-monitoring) to terratest so that it can be reused across out modules.
The new function slack.ValidateExpectedSlackMessageE can be used to check if a particular message text has been posted by a bot in the given channel, which is useful for integration testing of slack based workflows.

NOTE: I investigated the test failures and they don't seem to be related to this. In particular, the new test TestValidateSlackMessage passed, which is the only one that matters for this change set since the code is isolated in a new package.


Infra/Docs/CLI Improvements

Codecov Report
Attention: 22 lines in your changes are missing coverage. Please review.

Comparison is base (e2fce30) 32.05% compared to head (bd23ef6) 24.77%.
Report is 13 commits behind head on main.

Files
Patch %
Lines

src/ritas/polygons.py
36.84%
12 Missing :warning:

src/ritas/app/app.py
0.00%
4 Missing :warning:

src/ritas/utils.py
40.00%
3 Missing :warning:

src/ritas/viz.py
0.00%
2 Missing :warning:

src/ritas/main.py
0.00%
1 Missing :warning:

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##             main      #13      +/-   ##
==========================================
- Coverage   32.05%   24.77%   -7.28%
==========================================
  Files           7        7
  Lines         496      448      -48
==========================================
- Hits          159      111      -48
  Misses        337      337

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Exceptions for ground items plugin

I'd love a feature for the ground items plugin where you could add an exception to an item to make it not get hidden if its below the Hide < value, for example I have my Hide < value set at 500 but that hides toadflax seeds, I'd like to add an exception WITHOUT highlighting it as I don't want to highlight it.

but highlighting it already solves the issue. you can also change color of highlighting from purple


"Error" when installing Ubuntu through Microsoft store.

The Windows Store doesn't provide any further details, it only shows, "error" after a brief download. Retrying the install produces the same result. Win10 Pro 10.0.19041 Build 19041

Please use the issue template, it's there to help us be able to fix your problems! I'm closing this issue out since there isn't a template for us to go off of. From your description it seems like the error seems to be related to the Microsoft Store, I'd try and verify if you could download any other store apps or different distributions.


Can you provide the one-button frame setting of Vercel? This will be convenient for many people.

Can you provide the one-button frame setting of Vercel? This will be convenient for many people.

I will look into this but the issue is, you still need to configure the database (run the migration or generate the key pair from GCP) before using this button. So, I'm not sure how this will be useful.


support sub-second timeouts

add can_socket_open_timeval
use in python binding

@rscada thx for the library, using w/ roboteq controllers and need to have sub-second timeouts.


Fix controller popup window when MRTK isn't initialized

Overview
Adds a check before creating the ControllerPopupWindow that the MRTK object is initialized. If it's not initialized, we can't get the input action profile, and thus can't get the input actions to display in the window.
Also removed some unused variables.
Changes

Fixes: https://github.com/microsoft/MixedRealityToolkit-Unity/issues/8368

/azp run


how to fix FL Process already exists error?

Question
how to fix FL Process already exists error?
Further Information
I tried to run '01-Create-plan.ipynb' in examples/model-centric.
When I first ran it, it ran well.
In order to run demo-app in KotlinSyft, I restarted the notebook again.
But I found that hosting failed due to FL process already exists error (screenshot below)
Even after rebooting my computer, it produces the same error message.
How can I kill the previous host? or How can I fix it?
I just followed instructions exactly like here.
https://github.com/OpenMined/KotlinSyft#running-the-demo-app
And I found that error in this step 'Run the notebook 01-Create-plan.ipynb. It should host the model on PyGrid.'
Thank you
Edit (2020.12.03)
I found that FL process is alive even though I reboot my computer.
I could restart another process by change its name or version.
But, I still don't know how to turn it off.
How can I shut the PyGrid host??
Screenshots

System Information

OS: Ubuntu
OS Version: 18.04
Language Version: Python 3.7
Package Manager Version: Conda 4.8.3

I solved this issue by cleaning the docker cache:
docker system prune -a

I have the same problem,
docker system prune -a
didn't solve it

Try to change the version in both Create-plan and ExecutePlan

Try to change the version in both Create-plan and ExecutePlan

Thanks for the reply. I found that if I change the version or name solve the problem.
But I think the simple change of version or name isn't a real answer :cry:

Try to change the version in both Create-plan and ExecutePlan

Thanks for the reply. I found that if I change the version or name solve the problem.
But I think the simple change of version or name isn't a real answer 😢

You don't have to change the version, restart the node from grid (where the model has been hosted).
This is because the model with the version is already there being hosted.

Try to change the version in both Create-plan and ExecutePlan

Thanks for the reply. I found that if I change the version or name solve the problem.
But I think the simple change of version or name isn't a real answer 😢

You don't have to change the version, restart the node from grid (where the model has been hosted).
This is because the model with the version is already there being hosted.

Try to change the version in both Create-plan and ExecutePlan

Thanks for the reply. I found that if I change the version or name solve the problem.
But I think the simple change of version or name isn't a real answer 😢

Have you solved it?  How to fix it without changing the version?


New Release to PyPI?

After the merge of #24, any possibility to push a new version? Probably needs a more major version bump given the change to the decoder API.

https://pypi.python.org/pypi/mapbox-vector-tile/0.1.0

Thank you!


Julia tests are failing

Bug description
These Julia tests are failing:

tests/julia/project-1.0.2-binder-dir
tests/julia/require
tests/julia/require-1-requirements-file

Expected behaviour
Tests should pass
Actual behaviour
Example:
2024-05-26T11:02:44.4780279Z   Building Conda ──→ `/srv/julia/pkg/packages/Conda/sNGum/deps/build.log`
2024-05-26T11:02:44.4780572Z   Building ZMQ ────→ `/srv/julia/pkg/packages/ZMQ/ItfqT/deps/build.log`
2024-05-26T11:02:44.4780732Z ┌ Error: Error building `ZMQ`:
2024-05-26T11:02:44.4781051Z │ ┌ Warning: platform_key() is deprecated, use platform_key_abi() from now on
2024-05-26T11:02:44.4781170Z │ │   caller = ip:0x0
2024-05-26T11:02:44.4781283Z │ └ @ Core :-1
2024-05-26T11:02:44.4782071Z │ ┌ Warning: Could not extract the platform key of https://github.com/JuliaInterop/ZMQBuilder/releases/download/v4.2.5+6/ZMQ.x86_64-linux-gnu.tar.gz; continuing...
2024-05-26T11:02:44.4782442Z │ └ @ BinaryProvider /srv/julia/pkg/packages/BinaryProvider/U2dKK/src/Prefix.jl:185
2024-05-26T11:02:44.4783477Z │ [ Info: Downloading https://github.com/JuliaInterop/ZMQBuilder/releases/download/v4.2.5+6/ZMQ.x86_64-linux-gnu.tar.gz to /srv/julia/pkg/packages/ZMQ/ItfqT/deps/usr/downloads/ZMQ.x86_64-linux-gnu.tar.gz...
2024-05-26T11:02:44.4784574Z │ ERROR: LoadError: Could not download https://github.com/JuliaInterop/ZMQBuilder/releases/download/v4.2.5+6/ZMQ.x86_64-linux-gnu.tar.gz to /srv/julia/pkg/packages/ZMQ/ItfqT/deps/usr/downloads/ZMQ.x86_64-linux-gnu.tar.gz:

https://github.com/JuliaInterop/ZMQBuilder/releases/download/v4.2.5+6/ZMQ.x86_64-linux-gnu.tar.gz does not exist
How to reproduce
https://github.com/jupyterhub/repo2docker/actions/runs/9242619853/job/25425671430

Looks like the very old builds rely on a repo that's been deleted: https://github.com/JuliaInterop/ZMQ.jl/issues/228 and we can't really support Julia 0.6 anymore.

actually, it might be that we have to drop support for Julia REQUIRE altogether

#1350 removes REQUIRE and support for Julia < 1.3, which is the oldest version that can build ZMQ.jl now.


bump major for new development work

The major version bump happens in a separate commit from the breaking change itself so we can revert things in isolation. e.g. we'll bump react to v18, react-intl to v6, and possibly make some other breaking change as well (like dropping deprecated components or props).
If we made the version bump as part of the first commit, then made the other commits, then decided to revert the react v18 change, it'd be a mess: we'd have to add a new major-version commit but in the history it would come after making the actual breaking changes.
TLDR: separate commits are just insurance to help prevent me from shooting myself in the foot (again).

I see. That all makes sense.
(It would have been helpful, though, if the commit comment said "bump major in anticipation of X".)


Feature Request: Add Ability to Remove the "Messages" Drill-Down Pane

Thanks for all of your hard work! This IDE is simple, snazzy, and sleek. I may actually enjoy working with databases one day thanks to Zen Mode.
I would like to have the option to remove the messages pane that appears after a query executes. Perhaps output and message panes could benefit from granularity of the same order as MSBuild ( for example, the verbosity '/v' parameter when running from the command line). Having the simple ability to hide the messages pane would suffice as well. Drilling it down doesn't work and even then, its still an eye sore.
It could be possible that you may already have such an ability somewhere in the IDE. If so, I implore you to consider moving it to the view tab or to a context menu after a right click. Currently, it's location is not immediately intuitive.
Again, Thanks for giving this to the community!

@IObsequious you can set "sql.messagesDefaultOpen": false to have the Message Pane minimized by default which will save the time to keep collapsing it.  I'll keep this suggestion open to track having it entirely not visible.

We've moved Messages to a separate tab now.  It should not occupy any additional vertical space in the UI layout.  Please let me know if this doesn't address the concern raised in this issue.

@kburtram Thank you for your follow up. You guys are paving the way, in my opinion, as far as user experience and user customization is concerned. Virtually every setting is accessibly and each iteration of the program becomes more intuitive to my workflows. Messages are no longer a neussance. In fact, I had not thought about them in a very long time. This issue is definately closed with many thanks for you and your team's work.


Authorization bug

it says invalid authorization even tho I correctly copied and pasted it

Yeah I know it was a error related to the name of the css class for your balance on bloxflip


event.stream_ended was not True when receving response after HEAD request

I used examples http3_client.py, and modified it to send HEAD request.
But I found it don't work, it seemed like that event.stream_ended was not True after receving entrie response from quic. So the coroutine was hang.
My h3 client class looks like as below:
class H3Model(QuicConnectionProtocol):
    def __init__(self, *args, **kwargs) -> None:
        super().__init__(*args, **kwargs)

        self.h3_agent = H3Connection(self._quic)
        self.request_streams = {}
        self.stream_waiters = {}

    def quic_event_received(self, event: QuicEvent):
        events = self.h3_agent.handle_event(event)
        for event in events:
            self.handle_h3_event(event)

    def handle_h3_event(self, event: H3Event):
        if isinstance(event, (DataReceived, HeadersReceived)):
            stream_id = event.stream_id
            if stream_id in self.request_streams:
                self.request_streams[stream_id].append(event)

            if event.stream_ended:
                waiter = self.stream_waiters.pop(stream_id)
                waiter.set_result(self.request_streams.pop(stream_id))

    async def request(
        self,
        uri: str,
        method: str,
        headers: dict,
        data: str | None = None,
        json: dict | None = None
    ):
        h3_headers = [
            (b":method", method.encode()),
            (b":scheme", b"https"),
            (b":path", uri.encode()),
        ]
        if json:
            h3_headers.append((b"content-type", b"application/json"))
        for k, v in headers.items():
            h3_headers.append((k.lower().encode(), v.encode()))

        stream_id = self._quic.get_next_available_stream_id()
        self.h3_agent.send_headers(stream_id, headers=h3_headers, end_stream=not data and not json)

        if json:
            self.h3_agent.send_data(stream_id, data=jsonlib.dumps(json).encode(), end_stream=True)
        elif data:
            self.h3_agent.send_data(stream_id, data=data.encode(), end_stream=True)

        waiter = self._loop.create_future()
        self.stream_waiters[stream_id] = waiter
        self.request_streams[stream_id] = deque()

        self.transmit()

        http_events = await asyncio.shield(waiter)

        # compose response
        status = None
        headers = {}
        body = b""
        for event in http_events:
            if isinstance(event, HeadersReceived):
                for k, v in event.headers:
                    if k == b":status":
                        status = int(v)
                    else:
                        headers[k.decode()] = v.decode()
            elif isinstance(event, DataReceived):
                body += event.data

        resp = Response(
            status_code=status,
            headers=headers,
            content=body
        )
        return resp

I have to change handle_h3_event(self, event: H3Event) to work through it, the modified version looks like:
def handle_h3_event(self, event: H3Event):
    if isinstance(event, (DataReceived, HeadersReceived)):
        stream_id = event.stream_id
        if stream_id in self.request_streams:
            self.request_streams[stream_id].append(event)

        if event.stream_ended or self.head_recorders[stream_id]:
            waiter = self.stream_waiters.pop(stream_id)
            waiter.set_result(self.request_streams.pop(stream_id))
            self.head_recorders.pop(stream_id)

I wonder whether there was some wrong code in my file or other reason?

I haven't been able to reproduce this in local testing.  If I have a client send a HEAD instead of a GET, it always get a response that ends the stream, and my client sees that in the events that it gets from aioquic.  What server are you talking to?

I haven't been able to reproduce this in local testing. If I have a client send a HEAD instead of a GET, it always get a response that ends the stream, and my client sees that in the events that it gets from aioquic. What server are you talking to?

I used Nginx 1.26.0 as my test server.


incompatible with flask 2 and async

It seems that flask-debugtoolbar is incompatible with flask 2 async endpoints.
Repro:
Run this flask project (app.py) and hit /data to trigger an async call - which works.
Then uncomment the line enabling the DebugToolbarExtension and we get an exception.
import asyncio
from flask import Flask
from flask import render_template
from icecream import ic
from flask_debugtoolbar import DebugToolbarExtension

app = Flask(__name__)

app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 0
app.config['JSON_SORT_KEYS'] = False
app.secret_key = 'super secret key'

# flask debug toolbar - https://flask-debugtoolbar.readthedocs.io/en/latest/index.html#configuration
app.debug = True
app.config['DEBUG_TB_INTERCEPT_REDIRECTS'] = False
app.config['DEBUG_TB_TEMPLATE_EDITOR_ENABLED'] = True
# toolbar = DebugToolbarExtension(app)  # <<<< UNCOMMENT THIS AND WATCH IT CRASH

@app.route('/')
def root():
    return "hi"

async def async_get_data():
    ic('in async function')
    await asyncio.sleep(2)
    ic('out of async function')
    return 'Done!'

@app.route("/data")
async def get_data():
    data = await async_get_data()
    return data

Same issue when using async. I am getting this error message.
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 2073, in wsgi_app
    response = self.handle_exception(e)
  File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 2070, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1516, in full_dispatch_request
    return self.finalize_request(rv)
  File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1535, in finalize_request
    response = self.make_response(rv)
  File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1727, in make_response
    raise TypeError(
TypeError: The view function did not return a valid response. The return type must be a string, dict, tuple, Response instance, or WSGI callable, but it was a coroutine.

Happy to merge a PR if you or anyone else wants to dig into it.
On the surface, it looks relatively straightforward--port the updated version from Flask itself into here, along with the update to call process_view, but I'm sure there's a wrinkle or two to keep things interesting.
My current work is unrelated to Flask, so won't have time to look into it myself anytime soon.

I've quickly tried the following hack/changes. Seems to work:
:one: override DebugToolbarExtension to handle coroutines:
from asyncio import iscoroutinefunction
from asgiref.sync import async_to_sync
from flask_debugtoolbar import DebugToolbarExtension

class MyDebugToolbarExtension(DebugToolbarExtension):
    def process_view(self, app, view_func, view_kwargs):
        processed_view = super().process_view(app, view_func, view_kwargs)
        if iscoroutinefunction(processed_view):
            processed_view = async_to_sync(processed_view)
        return processed_view

:two: Enable sql query recording of an async engine:
from flask_sqlalchemy import record_queries
from sqlalchemy.ext.asyncio import create_async_engine

engine = create_async_engine(db_url)
record_queries._listen(engine.sync_engine)

Note that this is calling a "private" function, _listen in the record_queries module.


Suggestion from customer on the Connection string

Customer suggest use variable for Driver name in connection string "Driver={SQL Server Native Client 13.0};Server=tcp:cb-sqls1.database.windows.net,1433;Database=CB-DB1;Uid=sqladmin@contoso;Pwd={your_password_here};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;".  Modify driver name "Driver={SQL Server Native Client 13.0}" according to the driver which is used.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 5238c11b-240b-ff1c-42f1-8381048912f9
Version Independent ID: 98ec3637-8be0-5500-8b8d-cf1062c3271d
Content: Add an RD Connection Broker server to configure high availability in RDS
Content Source: WindowsServerDocs/remote/remote-desktop-services/rds-connection-broker-cluster.md
Product: windows-server
Technology: remote-desktop-services
GitHub Login: @lizap
Microsoft Alias: elizapo

Looks like the suggested solution is to use the ODBC name of the downloadable SQL package: ODBC Driver 13 for SQL Server
See issue ticket #4455 for more details why this seems to be the solution.

(ref. #4455 and #4840 )

PR #4974 is now ready for review. Feel free to browse, comment, or suggest changes.


Dependencies collide with dependencies of parant project

edit package.json
"peerDependencies": {
    "react": "*",
    "react-native": "*"
  },

Fix will be published to npm today in the evening...

published...


bug(ui) - "Powered by DU" badge position on small screens (assistant forms)

Environment
UI
Small screen sizes on New/edit Assistant Form
Steps to reproduce

Visit /chat/assistants-management/new
Shrink window
"Powered by DU" Badge floats up and overlaps content

Expected result
Badge should stay fixed to bottom of page (require scroll to go down and see it)
Actual Result
Badge floats up screen and overlaps content
Visual Proof (screens

hots, videos, text, etc)
Severity/Priority
Low

Fix should be to adjust this override to not use 100vh on smaller screens:
  :global(.bx--content) {
    height: calc(100vh - var(--header-height));
    padding-bottom: 1rem;
  }


PowerToys Run do not work with any of the options to make it run

Microsoft PowerToys version
0.55.0
Running as admin

[ ] Yes

Area(s) with issue?
PowerToys Run
Steps to reproduce
Using the shortcut or doing to welcome to PowerToys, to the section of the PowerToys Run and click on run PT Run.
✔ Expected Behavior
see the search bar
❌ Actual Behavior
I do not see it with the shortcut or even with the button on the welcome page, I just can't open PowerToys Run
Other Software
PowerToysReport_2022-02-01-14-22-14.zip

Can you confirm this issue is still relevant in v0.73? /needinfo


Better support for form action redirects inside handle() hook

Describe the problem
I would like to use hooks to handle things like ensuring session validity. This way, I can be sure that security settings are applied sitewide, and not have to remember to apply them in every single form action handler.
But hooks don't play nicely with redirects when it's a form action handler.
Let's say you have this handler:
// hooks.server.ts
export const handle = async () => {
  if (!isLoggedIn()) {
    throw redirect(303, '/login');
  }
};

and these actions:
// +page.server.ts
export const actions = {
  alwaysRedirects: async () => {
    throw redirect(303, '/');
  },
  sometimesRedirects: async () => ({data: 'foo'}),
};

and a .svelte file that has <Form use:enhance=...> and calls applyAction(result) if result.type === 'redirect'
It plays out as follows:

If your form action is /?alwaysRedirects, you always get redirected ✅
If your form action is /sometimesRedirects, and you are logged in, you get {data: 'foo'}  ✅
If your form action is /sometimesRedirects, and you are logged out, then:

If javascript is disabled, you get redirected as you would expect ✅
if javascript is enabled, applyAction(result) doesn't work because result is {"type":"error","error":Error('SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON')'} ❌

I believe this is because throw redirect() is handled differently when you're in a form action handler vs when you're in a generic endpoint. So, when you throw a redirect from inside the handle() hook, SvelteKit doesn't "know" that it's a form action, and so doesn't return the redirect information in a format that the client javascript understands. Instead, the client tries to parse the / route (which has been returned as HTML) as JSON, and fails.
Describe the proposed solution
I would like to see:

Documentation telling me how I can achieve this using existing functionality (I have looked...)

Failing that, I would like to see:

If you throw a redirect inside the handle() hook, and you happen to be handling a form action at the time, the response is returned to the client in a manner that lets them redirect using applyAction(), as if the redirect were thrown inside the action handler itself.

This could potentially be done using my header inspection and JSON object returning workaround, discussed below. If this is a "good first issue", I'd be happy to take this on with a small pointer in the right direction.

I guess you could also have a separate hook for form actions, inside which throw redirect(...) would work as expected.
Alternatives considered
My current workaround is to inspect the request headers and, if an enhanced form is detected, return a Svelte redirect object instead of an actual redirect.
// inside handle() in hooks.server.ts

if (!isLoggedIn()) {
  const javascriptFormSubmission = event.request.headers.get('x-sveltekit-action') === 'true';
  if (javascriptFormSubmission) {
    return new Response(
      JSON.stringify({
        type: 'redirect',
        status: 303,
        location: '/login',
      } satisfies ActionResult)
    );
  } else {
    throw redirect(303, `/login`);
  }
}

Importance
nice to have
Additional Information
This is currently a nice-to-have, given the workaround is pretty simple, but I thought I'd write it up here in case other people encounter the same issue.

Describe the problem
I would like to use hooks to handle things like ensuring session validity. This way, I can be sure that security settings are applied sitewide, and not have to remember to apply them in every single form action handler.
But hooks don't play nicely with redirects when it's a form action handler.
Let's say you have this handler:
// hooks.server.ts
export const handle = async () => {
  if (!isLoggedIn()) {
    throw redirect(303, '/login');
  }
};

and these actions:
// +page.server.ts
export const actions = {
  alwaysRedirects: async () => {
    throw redirect(303, '/');
  },
  sometimesRedirects: async () => ({data: 'foo'}),
};

and a .svelte file that has <Form use:enhance=...> and calls applyAction(result) if result.type === 'redirect'
It plays out as follows:

If your form action is /?alwaysRedirects, you always get redirected ✅

If your form action is /sometimesRedirects, and you are logged in, you get {data: 'foo'}  ✅

If your form action is /sometimesRedirects, and you are logged out, then:

If javascript is disabled, you get redirected as you would expect ✅
if javascript is enabled, applyAction(result) doesn't work because result is {"type":"error","error":Error('SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON')'} ❌

I believe this is because throw redirect() is handled differently when you're in a form action handler vs when you're in a generic endpoint. So, when you throw a redirect from inside the handle() hook, SvelteKit doesn't "know" that it's a form action, and so doesn't return the redirect information in a format that the client javascript understands. Instead, the client tries to parse the / route (which has been returned as HTML) as JSON, and fails.
Describe the proposed solution
I would like to see:

Documentation telling me how I can achieve this using existing functionality (I have looked...)

Failing that, I would like to see:

If you throw a redirect inside the handle() hook, and you happen to be handling a form action at the time, the response is returned to the client in a manner that lets them redirect using applyAction(), as if the redirect were thrown inside the action handler itself.

This could potentially be done using my header inspection and JSON object returning workaround, discussed below. If this is a "good first issue", I'd be happy to take this on with a small pointer in the right direction.

I guess you could also have a separate hook for form actions, inside which throw redirect(...) would work as expected.
Alternatives considered
My current workaround is to inspect the request headers and, if an enhanced form is detected, return a Svelte redirect object instead of an actual redirect.
// inside handle() in hooks.server.ts

if (!isLoggedIn()) {
  const javascriptFormSubmission = event.request.headers.get('x-sveltekit-action') === 'true';
  if (javascriptFormSubmission) {
    return new Response(
      JSON.stringify({
        type: 'redirect',
        status: 303,
        location: '/login',
      } satisfies ActionResult)
    );
  } else {
    throw redirect(303, `/login`);
  }
}

Importance
nice to have
Additional Information
This is currently a nice-to-have, given the workaround is pretty simple, but I thought I'd write it up here in case other people encounter the same issue.

I am facing this same issue, but even with the solution you provided, the redirect is not happening, the page stays on the same location.

Please provide a reproduction repository, I can't reproduce this given the description.

Here is a barebones reproduction: https://github.com/abirtley/sk-hook-repro
Fire it up, then click on the red button to generate the error. (All other buttons exhibit what I would consider expected behaviour.)
You can see in hooks.server.ts there is a workaround, enabled by setting useWorkaround to true.
Hope this helps @dummdidumm . And @rayl0 , perhaps this repro will help you out with your problem too.

Sure thing! Here is a barebones reproduction: https://github.com/abirtley/sk-hook-repro
To see the error, simply run yarn dev --open or similar, then click on the red button to generate the error. (All other buttons exhibit what I would consider expected behaviour.)
You can see in hooks.server.ts there is a workaround, enabled by setting useWorkaround to true.
Hope this helps @dummdidumm . And @rayl0 , perhaps this repro will help you out with your problem too.

Having tried your solution, one thing I am sure about is that it's probably a bug. The redirects should behave as they are expected to behave


Set up auto-updating

Set up auto-updating with electron-gh-releases and command-line releases with publish-release

This also involves signing. Electron packager let's you pass in --sign <name>, which might be good enough.

Nix adding publish-release for now. Adding releases through the gh-interface is fine and adding github keys is a pain.


Fix talos-vmtoolsd

In our environment (vSphere 7.0, ESXi 7.0) we got a lot of errors about Unable to send a message over the communication channel 0 and vSphere did not process any guest info being submitted. In order to debug this, we improved the logging of the tool, the GitHub workflow to actually build images in our fork and ultimately the way error responses were sent.
We suspect vSphere/ESXi are sending "unknown" RPC requests, which got responded in an invalid way ("Unknown Command" instead of "ERROR Unknown Command"). We've digged into the way open-vm-toolsd handle unknown RPC requests and mimiced these.
The tool now works perfectly on our environment.

Thank you, again, and sorry for taking so long to get back to you with this! It is interesting that vSphere did not process guestinfo commands anymore after the invalid response, since I do not observe this behavior with an identical basic stack on my end (vSphere 7 U0-U2 enterprise + vSAN). Wondering what component is sending those.
The error you fixed interestingly exists in the original govmomi service implementation too and remained undetected there, but I checked against open-vm-tools and prefixing with ERROR instead of ERR or nothing is correct behavior.


ARROW-15462: [GLib] Add GArrow{Month,DayTime,MonthDayNano}Interval{Scalar,Array,ArrayBuilder}

This adds the followings:

GArrowMonthIntervalArray
...

Could you also list all new classes in the description?

@kou
Thank you reviewing!
I add interval.{h, hpp} to arrow-glib.{h, hpp} and fixed order!

Thanks.
I've pushed fixes for the followings:

Long line
Indent
Poor spec description

It seems that we need auto formatter...
TODO: Review tests.

Could you rebase on master after you pull my changes to remove diffs for version.h.in from this pull request?

@kou
Thanks!!
I remove redundant tests and rebase master!

I'm sorry I made a pull request all at once. Try to split from the next. Thank you for your quick review!


[Tech Debt]: Add IDs to page elements for easier automated testing

What is needed?
It would be helpful to have unique IDs for various user interface elements, including table rows and those elements depicted in the attached document.
ID Fields.docx

W3 convention is that element IDs must be globally unique to the document, not to the app. When we render the same item on multiple pages do we expect it to have the same ID attribute on both?


feat(shell): wait for background processes to exit

It's inconvenient when a script exits but still leaves stuff running (even if these processes have just received a signal and will hopefully die soon). This can cause failures if some other script starts right away and uses the same resources.

I have a better idea


Stack overflow2018 data cleaning

I added necessary comments and descriptions to the existing code and also added outlier detection using boxplots and inter quartile method.

Thank you sir!!
On Sun, May 12, 2024, 10:46 AM Sanjay Viswanathan @.***>
wrote:

Assigned #53
https://github.com/Recode-Hive/Stackoverflow-Analysis/pull/53 to
@Navyazitya https://github.com/Navyazitya.
—
Reply to this email directly, view it on GitHub
https://github.com/Recode-Hive/Stackoverflow-Analysis/pull/53#event-12777729455,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BEEEHNWCO3FJAKEQIRSFUPTZB33MVAVCNFSM6AAAAABHSMMHXOVHI2DSMVQWIX3LMV45UABCJFZXG5LFIV3GK3TUJZXXI2LGNFRWC5DJN5XDWMJSG43TONZSHE2DKNI
.
You are receiving this because you were assigned.Message ID:
@.***
.com>


Very small project manager window size on hiDPI displays

On hiDPI displays (on all operating systems, apparently), when the DPI mode is set to hiDPI, the initial window size of the project manager is very small, probably twice as small as it should be (since hiDPI is 200% scaling). One can still maximize it, but by default it's very small, and causes the window contents to be displayed in a poor fashion.
The initial window size should be adjusted depending on the DPI mode, this could also apply to projects run from the editor, as well as exported projects.

On my dell with 3k, hidpi on windows does not even work.. i think there ks
something strange going on
On Apr 26, 2017 11:24 AM, "Hugo Locurcio"<EMAIL_ADDRESS>wrote:

On hiDPI displays (tested only on Linux), when the DPI mode is set to
hiDPI, the initial window size of the project manager is very small,
probably twice as small as it should be (since hiDPI is 200% scaling). You
can maximize it, but by default it's very small, and causes the window
contents to be displayed in a poor fashion.
The initial window size should be adjusted depending on the DPI mode, this
could also apply to projects run from the editor, as well as exported
projects.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/godotengine/godot/issues/8543, or mute the thread
https://github.com/notifications/unsubscribe-auth/AF-Z2yQClj5QmCwr_7KW_p6Zng4QeR8_ks5rzw03gaJpZM4NIl4M
.

I think this might be fixed by now?

This bug is still present on commit https://github.com/godotengine/godot/commit/4f39ce32b9195405f934445b20059e86632b47f9.


OpenCL.DebugInfo.100 information preservation in spirv-opt legalization passes

This is an umbrella bug for OpenCL.DebugInfo.100 information preservation in spirv-opt legalization passes. #3367 and #3366 are parts of the debug information preservation.

[x] wrap-opkill
[x] eliminate-dead-branches
[x] merge-return
[x] inline-entry-points-exhaustive
[x] eliminate-dead-functions
[ ] private-to-local
[x] fix-storage-class
[x] eliminate-local-single-block
[x] eliminate-local-single-store
[x] eliminate-dead-code-aggressive
[ ] scalar-replacement=0
[x] ssa-rewrite
[x] ccp
[ ] loop-unroll
[x] simplify-instructions
[x] copy-propagate-arrays
[x] vector-dce
[ ] eliminate-dead-inserts
[x] reduce-load-size

DebugInfoManager is an analysis for OpenCL.DebugInfo.100 instructions, which was submitted by #3305

function inlining: #3328 #3349

dead-function-elimination: #3251

wrap-opkill: #3331

Related spirv-val PRs: #3133 #3104 #3374
We have to add the validation for more OpenCL.DebugInfo.100 instructions: #3369

ssa-rewrite is WIP: #3356

I will start with eliminate-local-single-block and eliminate-local-single-block.

I just sent a PR for merge return pass: #3389

I created this kanban to easily check the progress: https://github.com/KhronosGroup/SPIRV-Tools/projects/6

For the fix-storage-class pass, we do not have to update the code for the debug information because it does not have any impact on the debug information.

The debug info preservation in the spirv-opt legalization passes is done \o/


🚀 Feature: playlist creation algorithm

We need to figure out a way to generate these playlists.. we can choose an easy prompt to start with one of the following:

"sunsets at the beach" (chill vibes)
"peanut butter jam" (singable music? high in acoustics?)
"😉🤤" (use ur imagination)

Essentially the algorithm will have the following interface
function generatePlaylist(theme: PlaylistTheme, ...users: User[]): Song[] {
  ...
}

Proposed Solution

RFC write up on playlist generation
The SIMPLEST solution is smth along the following:

For a given theme, create parameters that define audio features of a spotify song.. this can take shape in multiple ways

We can do a "closeness score" where we define an audio feature like danceability for something like peanut butter jam to be associated to the value 0.85 and a weight of some number b, we then take any given song and then calculate the score by doing the  (1 - | song's danceability - theme danceability|) * b. We then take the first 50 songs among all songs across users in the lobby. We can add weight for common songs too.
Another way we can do it is to define a "range" for an audio feature. For example, let's say peanut butter jam worthy songs fall under the range of 0.6 - 0.9 in danceability. We can then filter out songs that don't meet these criteria and then take a random sample of what remains as part of first couple songs.. adding weights for common songs as well

As seen in the examples above, the scoring system is naturally tied to song selection, though there are probably places where we can merge/tweak them

[ ] :wave: I may be able to implement this feature request

This is a :rocket: Feature Request

Looks like this article does a combo to wat I suggested!
https://kal.im/creating-spotify-playlists-with-emojis/


Make lab phones to provide stable benchmarking numbers

Right now benchmarking results fluctuate, especially for multi-threaded CPU and GPU. This renders the benchmarking results less inductive and requires us to always sanity check to make sure.
The phones in the lab contributes to the issue: OS scheduling, thermal controls, etc. all can cause instability of workload execution. We should find ways to reduce such fluctuation. Notably with better cooling solutions, rooting, and pinning down CPU/GPU frequencies.

[Original issue content:]
This issue is a bit weird. It happens when I'm trying to switch the benchmarking phone from my dev phone to the one in the lab (which now is properly rooted). But at least it's deterministic.
We call the iree-benchmark-module binary with JSON output format in the benchmark pipeline with Python subprocess. For "MobileNetV2 [fp32,imagenet] (TensorFlow) 1-thread,big-core,full-inference with IREE-Dylib @ SM-G980F (CPU-ARMv8.2-A)", looks iree-benchmark-module returns the output in two batches; the first batch just contains the context. It still keeps running and then after a while the results for benchmark will be returned. Somehow, Python thinks iree-benchmark-module has completed after seeing the first batch, which is just partial and invalid JSON. So we are seeing errors like this one.
We are calling into subprocess.run, so it can be that I'm using subprocess.run wrongly or there is an issue with subprocess.run itself..

Took a deeper look. Turns out that the rooted S20 phone in the lab has issues. It keeps rebooting for large workloads like MobileBERT. This is happening even without pinning down GPU frequency. So likely there are issues with rooting.
For such cases though, adb just returns with a 0 value; no errors of any kind, which is super confusing.

One thing I've encountered in the past is that for old API versions adb doesn't return the exit code of the underlying process. You'll want to throw in echo $? or something to get the real exit code. Not sure if that's what you're encountering here, but worth checking

I think it was based on the android API version. Yeah I realize that's not the actual root cause, just pointing out that weirdness in case it was frustrating your debugging efforts

Here are some general observations regarding benchmark number stability from phone's perspective:

I didn't monitor CPU numbers extensively. But generally, CPU numbers on S20 are less stable than Pixel 4. Models running longer are also less stable. Also multiple threaded cases.
Mali GPU numbers on S20 are generally not stable. This is especially true for full inference, which involves CPU. It can fluctuate a lot, in a bi-polar | fashion. For GPU kernel execution, with batching we can achieve some stability for certain models, but we can also observe the bi-polar state.
Adreno GPU numbers on Pixel 4 are actually much better. They are typically very stable (a linear line).

benchmark_thresholds.py can be used to define similarity thresholds for benchmark configurations. Right now it mostly contains adjusted thresholds for Mali GPUs.

Now we have quite stable numbers reported for benchmarking from the phones. Call this as done and closing it.


use a non-initializing allocator for stable string storage buffers

Motivation

Same reason as #6129, but with a slightly large effect radius.
(Also may be worth exploring whether we should hold memory buffers directly, rather than indirecting through vector all the time.)
Test plan

See included automated tests.

We have a policy of testing changes to Sorbet against Stripe's codebase before
merging them. I've kicked off a test run for the current PR.  When the build
finishes, I'll share with you whether or how it failed. Thanks!
Stripe employees can see the build results here:
→ https://go/builds/bui_MAgPzxayaQITEx
→ https://go/builds/bui_MAgPPyjY4jEsNK

We have a policy of testing changes to Sorbet against Stripe's codebase before
merging them. I've kicked off a test run for the current PR.  When the build
finishes, I'll share with you whether or how it failed. Thanks!
Stripe employees can see the build results here:
→ https://go/builds/bui_MAhkox9QZOhHbc
→ https://go/builds/bui_MAhkUnI9Uf9wnO


Add support for adding java objects directly

Please add support for adding java objects directly into database like we do in firebase ...

Sure, in the next update

Addressed in rewrite


python3Packages.black: disable another test on aarch64-linux

Basically the same as commit 3fcf9f18ddf.
https://hydra.nixos.org/build/179644263

21.11 is still good; I have no idea why.
@ofBorg build black

OK, confirmed as "deselected", let's not wait.

Well great... again it showed only one failing test and when we disabled it, another started failing with the same error instead.  tests/test_blackd.py::BlackDTestCase::test_cors_preflight


chore: style sql

Description
Make SQL style consistent. While it's generally a bad idea to change existing migrations, these should be functionally equivalent and won't be rerun anyway because the migration ID is what determines if the migration was already run or not.
This PR matches notify-server styling and has a companion PR here.
This style matches what I've generally seen in the Postgres documentation:

lowercase type names
capital constraint names (sometimes I see lowercase, but uppercase seems more common)
capital ARRAY
opening parenthesis on same line
4 space indents
space between the constraint name and the columns it applies to e.g. UNIQUE (device_token)

Also as a personal preference:

no IF NOT EXISTS for table creation as these are migrations, and shouldn't exist anyway (and if they do, there is a potential for being out of sync)
generally have newlines between each statement
trailing newlines at end of file

How Has This Been Tested?
Not tested
Due Diligence

[ ] Breaking change
[ ] Requires a documentation update
[ ] Requires a e2e/integration test update

@arein nice! We should pull in something like this. Would be nice if it had a brew install though


GradientGrassmann stuck in a (quasi-) infinite loop

During groundstate simulations for MPS close to exact analytical state (e.g. SU(2)), the GradientGrassmann can hang in the linesearch function of OptimKit.jl
This is due to the maxiter taking its default value (typemax(Int) =<PHONE_NUMBER>854775807) instead of the maxiter argument provided for at least some of the Optim methods.
Here is the result of println(alg) inside find_groundstate  in  gradient_grassmann.jl
`GradientGrassmann(ConjugateGradient{HagerZhang{Rational{Int64}}, Float64, HagerZhangLineSearch{Rational{Int64}}}(HagerZhang{Rational{Int64}}(2//5, 1//1), 44, 1.0e-12, HagerZhangLineSearch{Rational{Int64}}(1//10, 9//10, 1//1000000, 1//2, 2//3, 5//1,<PHONE_NUMBER>854775807, 98),<PHONE_NUMBER>854775807, 100), O
ptimKit._finalize!)'
Note the two typemax that are still present.
I  do not know enough about the algorithm here to be sure of the fix.

The problem is actually even worse, the maxiter arguments in the linesearch are currently not really respected, and there are several steps where indeed the algorithm can get stuck. In principle, this is something that should be fixed by OptimKit.jl, and as far as I know there were some updates in the pipeline, but I am not sure what the status is on that @Jutho ?

As far as I can tell for my small problem, I forced linesearch to stop after 100 iterations and no longer see any significant slowdown. Though it might just be completely wrong to do that.
More precisely, see the change between ** ** (instead of k == ls.maxiter )
https://github.com/Jutho/OptimKit.jl/blob/8135d1c497318ef402e03574e80c777ecd3a1b6b/src/linesearches.jl#L248
function (ls::HagerZhangLineSearch)(fg, x₀, η₀, fg₀ = fg(x₀);
                    retract = _retract, inner = _inner,
                    initialguess = one(fg₀[1]), acceptfirst = false)
    (f₀, g₀) = fg₀
    df₀ = inner(x₀, g₀, η₀)
    if df₀ >= zero(df₀)
        error("linesearch was not given a descent direction!")
    end
    p₀ = LineSearchPoint(zero(f₀), f₀, df₀, x₀, f₀, g₀, η₀)
    iter = HagerZhangLineSearchIterator(fg, retract, inner, p₀, η₀, initialguess, acceptfirst, ls)
    next = iterate(iter)
    @assert next !== nothing
    k = 1
    while true
        (x, f, g, ξ, α, dϕ), state = next
        a, b, numfg, done = state
        if done**
            ls.verbosity >= 1 &&
                @info @sprintf("Linesearch converged after %2d iterations: α = %.2e, dϕ = %.2e, ϕ - ϕ₀ = %.2e", k, α, dϕ, f - f₀)
            return x, f, g, ξ, α, numfg
        elseif **k >= min(ls.maxiter, 100)**
            ls.verbosity >= 1 &&
                @info @sprintf("Linesearch not converged after %2d iterations: α = %.2e, dϕ = %.2e, ϕ - ϕ₀ = %.2e", k, α, dϕ, f - f₀)
            return x, f, g, ξ, α, numfg
        else
            ls.verbosity >= 2 &&
                @info @sprintf("Linesearch step %d: [a,b] = [%.2e, %.2e], dϕᵃ = %.2e, dϕᵇ = %.2e, ϕᵃ - ϕ₀ = %.2e, ϕᵇ - ϕ₀ = %.2e", k, a.α, b.α, a.dϕ, b.dϕ, a.ϕ - f₀, b.ϕ - f₀)
            next = iterate(iter, state)
            @assert next !== nothing
            k += 1
        end
    end
end

As far as I can tell for my small problem, I forced linesearch to stop after 100 iterations and no longer see any significant slowdown. Though it might just be completely wrong to do that.

I think I misunderstood your problem: Am I correct in assuming that you did not find how to impose the maxiter parameter of the linesearch in the GradientGrassmann method?
If this is the case, then presumably we will want:

a more sensible default value in OptimKit
a better interface in MPSKit to pass kwargs around.

The first seems to be already fixed in the OptimKit branch, for which I would definitely vote merge.
The second I can solve, I will look into it next week.
My confusion stems from some parts of the linesearch algorithm that might get stuck in an infinite loop, in some cases, which is not even resolved by the maxiter kwarg. Ie something like maxiter != max_f_eval, but it seems like this is not an issue you are hitting.

Sorry if I was unclear:

in my case, the "infinite" loop was really just linesearch getting stuck in the function I linked above, as the maxiter was the default typemax(Int). Nothing else luckily (at least that I could identify).
I do put a maxiter in the GradientGrassmann method, but it indeed did not apply to this part of the ConjugateGradient algorithm (see print in the first post).
As far as I can say, there is no "obvious" way to transmit this information through the normal interface of GradientGrassmann. That being said, I did not investigate too much. Probably I could have built explicitely the correct ConjugateGradient object and feed it to GradientGrassmann through the method argument.

So if my understanding is good, @jutho 's fix should limit my issue (or solve it). And we need probably a better interface in MPSKit at some point if one wants to give the option to the user. Or at least a better doc explaining how to modify these parameters.

Something irrelevant: I get a lot of warning on calcwr/calcwl failing such as
[ Info: calclw failed to converge 2.3490148964077822e-14]
Should I worry about that?

I did change these messages to be a little more informative at some point, but it was quite recently so probably not yet in the version you are using.
This means that the (left) environment converged up to 2.3e-14, and you requested a stricter tolerance.
For these numbers, you should definitely not worry, that sounds pretty converged to me, but it might hinder performance a little if it is really trying to converge but just stagnates. It might be worth it to try and set the environment tolerances to 1e-12 instead. (Depending on what version you are using, these are dynamically increased during the optimization, but still you can set some minimal tolerance to limit this).


fix typo

Thanks @matkoniecz this is a good change.  Except that it belongs in readme_template.md because the various readme.md files in this repo are generative.

It seems to be generated from https://github.com/StevenBlack/hosts/blob/f7bcb232bcdf699965129774237bda5213cdc20f/data/StevenBlack/update.json , or is there an even deeper level?

@matkoniecz Let me search the repo for you.


Gitbot need to works with non-upstream branches

If somebody want to push a PR from "GINO-"repo to "SPACE" repo, this will not work because gitbot is assuming that the branch already exist, and you create an upstream branch to SPACE, so gitbot can retrieve the branch and switch on it

fixed


[SPARK-27875][CORE][SQL][ML][K8S] Wrap all PrintWriter with Utils.tryWithResource

What changes were proposed in this pull request?
This pr wrap all PrintWriter with Utils.tryWithResource to prevent resource leak.
How was this patch tested?
Existing test

Test build #105937 has started for PR 24739 at commit 9deaa5e.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/testing-k8s-prb-make-spark-distribution-unified/11189/

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/testing-k8s-prb-make-spark-distribution-unified/11189/

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution-unified/11189/
Test FAILed.

When you rename the variable naturally, please update the nested statements together consistently. Thanks!

Test build #105937 has finished for PR 24739 at commit 9deaa5e.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/105937/
Test PASSed.

Test build #105946 has started for PR 24739 at commit 6c7c88d.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/testing-k8s-prb-make-spark-distribution-unified/11198/

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/testing-k8s-prb-make-spark-distribution-unified/11198/

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution-unified/11198/
Test FAILed.

Test build #105946 has finished for PR 24739 at commit 6c7c88d.

This patch fails due to an unknown error code, -9.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/105946/
Test FAILed.

retest this please

Test build #105953 has started for PR 24739 at commit 6c7c88d.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/testing-k8s-prb-make-spark-distribution-unified/11205/

Kubernetes integration test status success
URL: https://amplab.cs.berkeley.edu/jenkins/job/testing-k8s-prb-make-spark-distribution-unified/11205/

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution-unified/11205/
Test PASSed.

Test build #105953 has finished for PR 24739 at commit 6c7c88d.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/105953/
Test PASSed.

Merged to master.


Actionable Element: Tab

“When trying to access the ‘Add products from favourites’ tab I could not do so using
keyboard. This means keyboard users would be unable to use this option. Keyboard users
are unable to access areas of the site that mouse users can.”
Expected behavior
Ensure that all content is accessible with a keyboard, and does not rely on the use of a
mouse. The tabindex attribute will need to be removed in order to fix the issue. This will put
the link in the tab order and all users will be able to access it.
Screenshots

Desktop (please complete the following information):

Browser: Chrome

closed by https://github.com/Capgemini/dcx-react-library/pull/630


Feature/cup stacking

I added yaw_range to the glass grasping TSRs and the PushGrasp function. If no yaw_range is given the default is [-numpy.pi, numpy.pi]. I also, added **kw_args to pitcher.py.

Looks good, but you might need to elaborate on the form of yaw_range input (i.e. 'list' with more on what contents look like). You have None being equivalent to [-pi, pi], but would this have the same effect if you input [-pi, pi]? - just for consistency.

@mharding01 I'm not sure what you mean by elaborating on the form of yaw_range input. None is equivalent to [-pi,pi] and this would be equivalent to inputting [-pi,pi]. The None is there if the user decides that they don't want to restrict the yaw_range.


Error: Reference to undeclared resource

Error: Reference to undeclared resource
│
│   on output.tf line 28, in output "AVD_user_groupname":
│   28:   value       = azuread_group.aad_group.display_name
│
│ A managed resource "azuread_group" "aad_group" has not been declared in the root module.

Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: 3a0a97cf-1514-889c-edbc-9c10bd566231
Version Independent ID: 3a0a97cf-1514-889c-edbc-9c10bd566231
Content: Configure Azure Virtual Desktop using Terraform - Azure
Content Source: articles/terraform/configure-azure-virtual-desktop.md
Service: terraform
GitHub Login: @TomArcherMsft
Microsoft Alias: tarcher

Unfortunately, we have not been able to review this issue in a timely manner. We sincerely apologize for the delayed response. We are closing this issue. If you feel that the problem persists, please respond to this issue with any additional information.
Please continue to provide feedback about the documentation. We appreciate your contributions to our community.
#please-close

The more feedbacks I give the more they don't get closed without resolution.
I will not give any more feedbacks as they are pointless.


Issue 34

A feature was added to the library to let users set the border color dynamically.

I updated my pull request.


injectGlobal does not accept composes

emotion version: 6.0.1
react version: 15.6.1

Input
import {css, injectGlobal} from 'emotion';

let foo = css`
  color: red;
`;

injectGlobal`
  .bar {
    composes: ${foo}
  }
`;

Output
.bar {
    composes: css-foo-6td1rg-1wy6q4a css-foo-6td1rg;
}

Not sure if there is a technical reason for this, but it would be nice to have.

We can't support this right now since composes just appends classes. We're working on changing the way composition works though so this might be possible in the future.

I think composes works by extending the list of output classes which then need to be applied via JS.
If you don't have access to the HTML of the target element (e.g.
foo
) composes would need to work by including the composed class rules into the rules for the target class (i.e. compose class rules, not element class names) - not unlike how @include works in SASS.

Closing as we now support random interpolations in injectGlobal. (we're probably not going to support composes in injectGlobal since composes can accept a regular class name)
import {css, injectGlobal} from 'emotion';

let foo = css`
  color: red;
`;

injectGlobal`
  .bar {
    ${foo};
  }
`;

@mitchellhamilton does this use babel in any way? I thought the output of css was a space-separated list of class names, in which case that interpolation looks a bit funky

@mattfysh We now merge styles in a similar way to glamor instead of concatenating classes.


On-site node reboot without opening enclosure

Allow a node to be rebooted by pressing a button on the node enclosure or by holding a magnet against it the enclosure or some other means that doesn't involve opening the enclosure.
The use case here is to allow an on-site person to reboot a node if it's having a problem, has dropped it's cellular connection etc.
The magnet option might be useful if the node enclosure is not easily accessible. e.g. up a tree, on a pole etc.
Audible feedback of reboot would be useful.

Have external device reboot in next version without opening enclosure with audible feedback.
BEEP BOP! 😀


Added width property to Modal dialog

Added width property to Modal dialog

Thanks. Sorry about the animation. Trying to learn my way around thaw internals.

Merge now.

Sorry I can't get the dialog to change width now.

or

Shows the same size . Unless I am doing something dumb which is a distinct possibility.

Can you write a minimal repetition example?


Restart each time Obsidian restarts???

Hello there! I love this plugin - especially for jts functionality in adding custom icon sets. My problem, however, is that every single time I restart Obsidian (multiple times per day) I return to find zero icons in my file explorer. Despite having chosen and allocated icons to each folder, and despite being able to choose new icons upon restart, the ones I've already chosen are missing.
Holding down a folder (bringing up the menu) it offers the options Change and Remove Icon. Any reason for this? Im at my wit's end and will ultimately decide not to use the plugin at all if i can't make it work.
Screenshots
First instance: Icons chosen and displayed:

After reload:

Menu options after reload:

Hey, sorry to hear that. Do you use any sort of syncing provider? If so, what kind?

Does the issue only exist on mobile?

Closing because of inactivity.


[FEATURE] Excel Test Report

Create an Excel report module. Convert JSON output to an excel workbook including some basic charts/graphs.
Charts/Graphs/Views to include:

[ ] Pie Chart

[ ] Pass/Fail/Status

[ ] Bar Graph

[ ] Pass/Fail by Browser

[ ] Elapsed time

@DominicParent @Pswenne I have included a few of the data views/charts we discussed the other day. Any other suggestions for what to include in the default excel report?

Can't think of anything else to include by default. Chris might have some ideas.

After reviewing some of the openpyxl features and our own JSON result document. I think it might be beneficial to refactor the json output to better organize/display the results in a way that is more easily readable by both people and the machine.
I've created a new issue to track this change separately from the Excel report function. It should be completed before a full Excel reporting implementation to minimize risk of breaking changes to the Excel reporting. #165


Add more detail to organization of work

Add maintainers for each repository, as well as details on
each workstream, meeting times etc.
Signed-off-by: Thierry Carrez<EMAIL_ADDRESS>

I need to reorg this now that #12 merged


Unable to Open Code Editor Window After Renaming File in Specific Sequence

Type: Bug
Steps to Reproduce:

Create a directory named 'test'.
Inside the 'test' directory, create a file with a capital letter, e.g., Test.ts. This will open the editor window.
Close the editor window.
Click on the file Test.ts to open the editor window again.
Rename the file to lowercase, e.g., test.ts (ensure the editor is closed as it open editor when you click on file to rename).
Here is the bug - Click on the file test.ts to open the editor window.

Actual Behavior:
An error message is displayed in a VS Code alert box, stating, "Unable to open test.ts. The editor could not be opened because the file was not found." The alert box provides a 'Cancel' and 'Create File' button.

Further Steps:
Clicking on 'Create File' results in another error: "Unable to create file 'test/test.ts' that already exists when overwrite flag is not set."

Expected Behaviour:
The editor window should open, allowing users to view and edit the content of the file test.ts.
And it works ok after I restart VS Code.
Operating System: MacOS Monterey - Intel Chip
Reproducibility: Always
VS Code version: Code 1.85.1 (0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2, 2023-12-13T09:48:06.308Z)
OS version: Darwin x64 21.6.0
Modes:

System Info

Item
Value

CPUs
Intel(R) Core(TM) i5-5350U CPU @ 1.80GHz (4 x 1800)

GPU Status
2d_canvas: enabledcanvas_oop_rasterization: disabled_offdirect_rendering_display_compositor: disabled_off_okgpu_compositing: enabledmultiple_raster_threads: enabled_onopengl: enabled_onrasterization: enabledraw_draw: disabled_off_okvideo_decode: enabledvideo_encode: enabledvulkan: disabled_offwebgl: enabledwebgl2: enabledwebgpu: enabled

Load (avg)
2, 3, 2

Memory (System)
8.00GB (0.22GB free)

Process Argv
--crash-reporter-id b4acaa76-960d-47df-8a67-73f2dee0e678

Screen Reader
no

VM
0%

Extensions (9)

Extension
Author (truncated)
Version

vscode-tailwindcss
bra
0.10.5

simple-react-snippets
bur
1.2.7

prettier-vscode
esb
10.1.0

vscode-graphql
Gra
0.8.25

vscode-graphql-syntax
Gra
1.2.3

live-server
ms-
0.4.13

NextNav
Nex
1.1.0

prisma
Pri
5.8.1

LiveServer
rit
5.7.9

(1 theme extensions excluded)

A/B Experiments
vsliv368:30146709
vspor879:30202332
vspor708:30202333
vspor363:30204092
vscoreces:30445986
vscod805cf:30301675
binariesv615:30325510
vsaa593:30376534
py29gd2263:30899288
vscaac:30438847
vsclangdf:30486550
c4g48928:30535728
azure-dev_surveyone:30548225
a9j8j154:30646983
962ge761:30933248
pythongtdpath:30769146
welcomedialog:30910333
pythonidxpt:30866567
pythonnoceb:30805159
asynctok:30898717
pythontestfixt:30902429
pythonregdiag2:30936856
pyreplss1:30897532
pythonmypyd1:30879173
pythoncet0:30885854
pythontbext0:30879054
accentitlementst:30887150
dsvsc016:30899300
dsvsc017:30899301
dsvsc018:30899302
dsvsc019a:30933241

Thanks for creating this issue! It looks like you may be using an old version of VS Code, the latest stable release is 1.85.2. Please try upgrading to the latest version and checking whether this issue remains.
Happy Coding!

I have updated my VS Code to the latest version, and unfortunately, the issue still persists.
Version: 1.85.2
Commit: 8b3775030ed1a69b13e4f4c628c612102e30a681
Date: 2024-01-18T06:40:32.531Z
Electron: 25.9.7
ElectronBuildId: 26354273
Chromium: 114.0.5735.289
Node.js: 18.15.0
V8: <IP_ADDRESS>-electron.0
OS: Darwin x64 21.6.0

I can't seem to repro this. Can you try the insiders version https://code.visualstudio.com/insiders/

Ok, I'll check it

Now I tested on the latest VS Code Insider and the same issue exists in it. Also added a screen recording
VS Code - version

https://github.com/microsoft/vscode/assets/55359171/c46b02aa-d42c-42f3-942b-a5de0c7643f1

https://github.com/microsoft/vscode/assets/4544166/e2120d75-59f5-41a4-a4b6-dfb35ad1b15e

By default, a fresh macOS installation on an empty disk uses a case-insensitive file system. However, during the installation process, I opted for a case-sensitive file system to align with the Linux setups used by other team members. This configuration change might be the source of the issue we're encountering, although I cannot be certain.
This problem has been around for about 5 to 6 months, but now I thought I should raise it on GitHub issues, instead of restarting VS Code


More about the configs

How can I encrypt the config and read it  from config::load?
or
How can I store the config into a temp file and hide it from the user

Here you go Xor is best.
I save encrypted cfg's in myconfig.crypt in cfg folder, read it as Binary and use xorBinary() function as is.
xor is encrypt and decrypt at the same time. :-) This makes it handy!
#if DECRYPT_CFG
VOID xorBinary(PCSTR key)
{
SIZE_T keyLenth = strlen(key);
for (int i = 0; i < sizeof(binary); i++)
binary[i] ^= key[i % keyLenth];
}
#endif

Here you go Xor is best.
I save encrypted cfg's in myconfig.crypt in cfg folder, read it as Binary and use xorBinary() function as is.
xor is encrypt and decrypt at the same time. :-) This makes it handy!
// Code by Daniel Krupinski
#if DECRYPT_CFG
VOID xorBinary(PCSTR key)
{
    SIZE_T keyLenth = strlen(key);
    for (int i = 0; i < sizeof(binary); i++)
        binary[i] ^= key[i % keyLenth];
}
#endif

bruh can u help me with #787

Here you go Xor is best.
I save encrypted cfg's in myconfig.crypt in cfg folder, read it as Binary and use xorBinary() function as is.
xor is encrypt and decrypt at the same time. :-) This makes it handy!
// Code by Daniel Krupinski
#if DECRYPT_CFG
VOID xorBinary(PCSTR key)
{
    SIZE_T keyLenth = strlen(key);
    for (int i = 0; i < sizeof(binary); i++)
        binary[i] ^= key[i % keyLenth];
}
#endif

bruh how do u use this code?


Application is not starting when zipkin is disabled by environment variable - spring cloud version 2020.0.0

I have dependency org.springframework.cloud:spring-cloud-sleuth-zipkin from spring cloud version 2020.0.0
There was not this problem in previous version Hoxton.SRX.
In application properties:
spring.zipkin.enabled=false
spring.zipkin.base-url=http://zipkin:9411
spring.sleuth.sampler.probability=1.0
Sometimes I want to turn on zipkin so I have environment variable in k8s deployment
SPRING_ZIPKIN_ENABLED='false' // I switch to true if needed
When I start application with false value in env var I get this error, but when I remove this env var completely it starts fine:
APPLICATION FAILED TO START
Description:
Parameter 3 of method traceFunctionAroundWrapper in org.springframework.cloud.sleuth.autoconfig.instrument.messaging.TraceFunctionAutoConfiguration required a bean of type 'org.springframework.cloud.sleuth.propagation.Propagator$Setter' that could not be found.
The injection point has the following annotations:

@org.springframework.beans.factory.annotation.Autowired(required=false)

Action:
Consider defining a bean of type 'org.springframework.cloud.sleuth.propagation.Propagator$Setter' in your configuration.

@kubav182 Could you please create a sample project that reproduces the issue?

yes, I will try it with simple project to see if there can be problem in different dependency

@jonatan-ivanov I could not make not working example, so i tried different use cases with my app and this is what I discovered:
The problem is not variable SPRING_ZIPKIN_ENABLED, but variable SPRING_SLEUTH_MESSAGING_ENABLED=false
This property is now spring.sleuth.messaging.messaging.enabled instead of spring.sleuth.messaging.enabled in previous version. When I change it to SPRING_SLEUTH_MESSAGING_MESSAGING_ENABLED it works fine.
But what is quite strange this error occurs only when I run app in kubernetes, when I run it via docker-compose or as jar it starts fine with that old variable.
I would recommend improvement - this class:
@ConfigurationProperties("spring.sleuth.messaging")
public class SleuthMessagingProperties

should not contain inner class public static class Messaging
and fields inside this static class should be just fields of SleuthMessagingProperties to prevent doubling .messaging

@jonatan-ivanov I could not make not working example, so i tried different use cases with my app and this is what I discovered:
The problem is not variable SPRING_ZIPKIN_ENABLED, but variable SPRING_SLEUTH_MESSAGING_ENABLED=false
This property is now spring.sleuth.messaging.messaging.enabled instead of spring.sleuth.messaging.enabled in previous version. When I change it to SPRING_SLEUTH_MESSAGING_MESSAGING_ENABLED it works fine.
But what is quite strange this error occurs only when I run app in kubernetes, when I run it via docker-compose or as jar it starts fine with that old variable.
I would recommend improvement - this class:
@ConfigurationProperties("spring.sleuth.messaging")
public class SleuthMessagingProperties

should not contain inner class public static class Messaging
and fields inside this static class should be just fields of SleuthMessagingProperties to prevent doubling .messaging

That's a bug. Do you want to file a PR to fix this?

That's a bug. Do you want to file a PR to fix this?

Yes I can handle it

Yes I can handle it


crypto/x509: Verification of ECDSA signed x509 cert, sanitized to LowS certs fails verification with go 1.19

What version of Go are you using (go version)?

$ go 1.19

Does this issue reproduce with the latest release?
Yes
What operating system and processor architecture are you using (go env)?
go env Output
$ go env

GO111MODULE=""
GOARCH="arm64"
GOBIN=""
GOCACHE="/Users/c0rwin/Library/Caches/go-build"
GOENV="/Users/c0rwin/Library/Application Support/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="arm64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/c0rwin/golang/pkg/mod"
GONOPROXY="gitlab.n-t.io/*"
GONOSUMDB="gitlab.n-t.io/*"
GOOS="darwin"
GOPATH="/Users/c0rwin/golang"
GOPRIVATE="gitlab.n-t.io/*"
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/opt/homebrew/Cellar/go/1.19/libexec"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/opt/homebrew/Cellar/go/1.19/libexec/pkg/tool/darwin_arm64"
GOVCS=""
GOVERSION="go1.19"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/Users/c0rwin/workspace/fabric/go.mod"
GOWORK=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -arch arm64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/jr/yqzwn3rx4yddkb18shrqycgc0000gn/T/go-build3484858551=/tmp/go-build -gno-record-gcc-switches -fno-common"

After moving to the go v1.19, validating certificates signed with ECDSA with signature after sanitation to LowS form is no longer possible.  The code which manifests the problem is the following:
certpool := x509.NewCertPool()

caFileBytes, err := os.ReadFile(rootCAFile)
if err != nil {
   panic(err)
}

caPemBlock, _ := pem.Decode(caFileBytes)
caCert, err := x509.ParseCertificate(caPemBlock.Bytes)
if err != nil {
   panic(err)
}

if isECDSASignedCert(caCert) {
   caCert, err = utils.SanitizeCert(caCert)
   if err != nil {
      panic(err)
   }
}

certpool.AddCert(caCert)
opts := x509.VerifyOptions{
   Roots: certpool,
}

certBytes, err := os.ReadFile(certFile)
if err != nil {
   panic(err)
}

certPemBlock, _ := pem.Decode(certBytes)
cert, err := x509.ParseCertificate(certPemBlock.Bytes)
if err != nil {
   panic(err)
}

_, err = cert.Verify(opts)
if err != nil {
   panic(err)
}

fmt.Println("SUCCESS")

Having following certificates
rootCAFile := `-----BEGIN CERTIFICATE-----
MIICPzCCAeSgAwIBAgIRAONi5v8ImyejqCrCatbAW1QwCgYIKoZIzj0EAwIwaTEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt
cGxlLmNvbTAeFw0xOTA3MDQxNjI3MDBaFw0yOTA3MDExNjI3MDBaMGkxCzAJBgNV
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
c2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j
b20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQAfjOlLCdB/6SsdPlbDHUsdK+b
gRuEN38QOFZ0Ws3aFAsER8ImqV3UIlsbKi5JnDs+OQnzrr3hrKA8downRRy/o20w
azAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB
MA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIN/hgC0LnghmpjfwtsqvEvhE/2LI
wJbaCUtoY5cFF8WfMAoGCCqGSM49BAMCA0kAMEYCIQDhhgAHx0l7V5uAG2hATgCs
bvsbHiJpHUtiK7f1Qfxf2AIhANeukSgRU+AeGSzyVmAOKhIUS+grsPyspksUwVvB
ehXv
-----END CERTIFICATE-----`

and
certFile := `-----BEGIN CERTIFICATE-----
MIICPzCCAeSgAwIBAgIRAONi5v8ImyejqCrCatbAW1QwCgYIKoZIzj0EAwIwaTEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt
cGxlLmNvbTAeFw0xOTA3MDQxNjI3MDBaFw0yOTA3MDExNjI3MDBaMGkxCzAJBgNV
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
c2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j
b20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQAfjOlLCdB/6SsdPlbDHUsdK+b
gRuEN38QOFZ0Ws3aFAsER8ImqV3UIlsbKi5JnDs+OQnzrr3hrKA8downRRy/o20w
azAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB
MA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIN/hgC0LnghmpjfwtsqvEvhE/2LI
wJbaCUtoY5cFF8WfMAoGCCqGSM49BAMCA0kAMEYCIQDhhgAHx0l7V5uAG2hATgCs
bvsbHiJpHUtiK7f1Qfxf2AIhANeukSgRU+AeGSzyVmAOKhIUS+grsPyspksUwVvB
ehXv
-----END CERTIFICATE-----`

The code mentioned above running with the go 1.18 will result in SUCCESS; however, it will fail on go 1.19 with panic, because it will fail to build a verification path. The code implementing sanitation is following:
type validity struct {
   NotBefore, NotAfter time.Time
}

type publicKeyInfo struct {
   Raw       asn1.RawContent
   Algorithm pkix.AlgorithmIdentifier
   PublicKey asn1.BitString
}

type certificate struct {
   Raw                asn1.RawContent
   TBSCertificate     tbsCertificate
   SignatureAlgorithm pkix.AlgorithmIdentifier
   SignatureValue     asn1.BitString
}

type tbsCertificate struct {
   Raw                asn1.RawContent
   Version            int `asn1:"optional,explicit,default:0,tag:0"`
   SerialNumber       *big.Int
   SignatureAlgorithm pkix.AlgorithmIdentifier
   Issuer             asn1.RawValue
   Validity           validity
   Subject            asn1.RawValue
   PublicKey          publicKeyInfo
   UniqueId           asn1.BitString   `asn1:"optional,tag:1"`
   SubjectUniqueId    asn1.BitString   `asn1:"optional,tag:2"`
   Extensions         []pkix.Extension `asn1:"optional,explicit,tag:3"`
}

type ECDSASignature struct {
   R, S *big.Int
}

// curveHalfOrders contains the precomputed curve group orders halved.
// It is used to ensure that signature' S value is lower or equal to the
// curve group order halved. We accept only low-S signatures.
// They are precomputed for efficiency reasons.
var curveHalfOrders = map[elliptic.Curve]*big.Int{
   elliptic.P224(): new(big.Int).Rsh(elliptic.P224().Params().N, 1),
   elliptic.P256(): new(big.Int).Rsh(elliptic.P256().Params().N, 1),
   elliptic.P384(): new(big.Int).Rsh(elliptic.P384().Params().N, 1),
   elliptic.P521(): new(big.Int).Rsh(elliptic.P521().Params().N, 1),
}

func GetCurveHalfOrdersAt(c elliptic.Curve) *big.Int {
   return big.NewInt(0).Set(curveHalfOrders[c])
}

func MarshalECDSASignature(r, s *big.Int) ([]byte, error) {
   return asn1.Marshal(ECDSASignature{r, s})
}

func UnmarshalECDSASignature(raw []byte) (*big.Int, *big.Int, error) {
   // Unmarshal
   sig := new(ECDSASignature)
   _, err := asn1.Unmarshal(raw, sig)
   if err != nil {
      return nil, nil, fmt.Errorf("failed unmashalling signature [%s]", err)
   }

   // Validate sig
   if sig.R == nil {
      return nil, nil, errors.New("invalid signature, R must be different from nil")
   }
   if sig.S == nil {
      return nil, nil, errors.New("invalid signature, S must be different from nil")
   }

   if sig.R.Sign() != 1 {
      return nil, nil, errors.New("invalid signature, R must be larger than zero")
   }
   if sig.S.Sign() != 1 {
      return nil, nil, errors.New("invalid signature, S must be larger than zero")
   }

   return sig.R, sig.S, nil
}

func SignatureToLowS(k *ecdsa.PublicKey, signature []byte) ([]byte, error) {
   r, s, err := UnmarshalECDSASignature(signature)
   if err != nil {
      return nil, err
   }

   s, err = ToLowS(k, s)
   if err != nil {
      return nil, err
   }

   return MarshalECDSASignature(r, s)
}

// IsLow checks that s is a low-S
func IsLowS(k *ecdsa.PublicKey, s *big.Int) (bool, error) {
   halfOrder, ok := curveHalfOrders[k.Curve]
   if !ok {
      return false, fmt.Errorf("curve not recognized [%s]", k.Curve)
   }

   return s.Cmp(halfOrder) != 1, nil
}

func ToLowS(k *ecdsa.PublicKey, s *big.Int) (*big.Int, error) {
   lowS, err := IsLowS(k, s)
   if err != nil {
      return nil, err
   }

   if !lowS {
      // Set s to N - s that will be then in the lower part of signature space
      // less or equal to half order
      s.Sub(k.Params().N, s)

      return s, nil
   }

   return s, nil
}

func SanitizeCert(cert *x509.Certificate) (*x509.Certificate, error) {
   expectedSig, err := SignatureToLowS(cert.PublicKey.(*ecdsa.PublicKey), cert.Signature)
   if err != nil {
      return nil, err
   }

   if bytes.Equal(cert.Signature, expectedSig) {
      return cert, nil
   }

   var newCert certificate
   _, err = asn1.Unmarshal(cert.Raw, &newCert)
   if err != nil {
      panic(err)
   }

   newCert.SignatureValue = asn1.BitString{Bytes: expectedSig, BitLength: 8 * len(expectedSig)}
   newCert.Raw = nil

   newRaw, err := asn1.Marshal(newCert)
   if err != nil {
      return nil, err
   }

   return x509.ParseCertificate(newRaw)
}

Now, in go 1.18, the certificate verification compares certs bitwise (crypto/x509/verify.go:829):
considerCandidate := func(certType int, candidate *Certificate) {
	for _, cert := range currentChain {
		if cert.Equal(candidate) {
			return
		}
	}

	if sigChecks == nil {
		sigChecks = new(int)
	}
	*sigChecks++
	if *sigChecks > maxChainSignatureChecks {
		err = errors.New("x509: signature check attempts limit reached while verifying certificate chain")
		return
	}

	if err := c.CheckSignatureFrom(candidate); err != nil {
		if hintErr == nil {
			hintErr = err
			hintCert = candidate
		}
		return
	}

	err = candidate.isValid(certType, currentChain, opts)
	if err != nil {
		return
	}

	switch certType {
	case rootCertificate:
		chains = append(chains, appendToFreshChain(currentChain, candidate))
	case intermediateCertificate:
		if cache == nil {
			cache = make(map[*Certificate][][]*Certificate)
		}
		childChains, ok := cache[candidate]
		if !ok {
			childChains, err = candidate.buildChains(cache, appendToFreshChain(currentChain, candidate), sigChecks, opts)
			cache[candidate] = childChains
		}
		chains = append(chains, childChains...)
	}
}

The code above has been refactored and optimized to:
considerCandidate := func(certType int, candidate *Certificate) {
	if alreadyInChain(candidate, currentChain) {
		return
	}

	if sigChecks == nil {
		sigChecks = new(int)
	}
	*sigChecks++
	if *sigChecks > maxChainSignatureChecks {
		err = errors.New("x509: signature check attempts limit reached while verifying certificate chain")
		return
	}

	if err := c.CheckSignatureFrom(candidate); err != nil {
		if hintErr == nil {
			hintErr = err
			hintCert = candidate
		}
		return
	}

	err = candidate.isValid(certType, currentChain, opts)
	if err != nil {
		return
	}

	switch certType {
	case rootCertificate:
		chains = append(chains, appendToFreshChain(currentChain, candidate))
	case intermediateCertificate:
		var childChains [][]*Certificate
		childChains, err = candidate.buildChains(appendToFreshChain(currentChain, candidate), sigChecks, opts)
		chains = append(chains, childChains...)
	}
}

the alreadyInChain replaces the loop which compares certs by checking Subject, PublicKey, and SAN.
func alreadyInChain(candidate *Certificate, chain []*Certificate) bool {
	type pubKeyEqual interface {
		Equal(crypto.PublicKey) bool
	}

	var candidateSAN *pkix.Extension
	for _, ext := range candidate.Extensions {
		if ext.Id.Equal(oidExtensionSubjectAltName) {
			candidateSAN = &ext
			break
		}
	}

	for _, cert := range chain {
		if !bytes.Equal(candidate.RawSubject, cert.RawSubject) {
			continue
		}
		if !candidate.PublicKey.(pubKeyEqual).Equal(cert.PublicKey) {
			continue
		}
		var certSAN *pkix.Extension
		for _, ext := range cert.Extensions {
			if ext.Id.Equal(oidExtensionSubjectAltName) {
				certSAN = &ext
				break
			}
		}
		if candidateSAN == nil && certSAN == nil {
			return true
		} else if candidateSAN == nil || certSAN == nil {
			return false
		}
		if bytes.Equal(candidateSAN.Value, certSAN.Value) {
			return true
		}
	}
	return false
}

Compares Subject, PublicKey, and SAN is equal cause we verify sanitized certs. However, the signature is different, and the function call in the example above should have resulted with false. Therefore, my question is whether the alreadyInChain should be extended with an additional check for signature equality?
The code below demonstrates the issue with the test - https://go.dev/play/p/Vaephj6DLOl.

Tests
go 1.19
go 1.18

cc @golang/security

This seems to be working as intended, signatures are intended to be ignored when eliminating certificates that share subjects and public keys during path building (see RFC 4158 section 2.4.2). In particular, since ECDSA signatures are both malleable (as shown here) and non-deterministic, relying on byte-for-byte signature matching would mean we (almost) never exclude duplicates (such as cross signatures).
What is the use case here?

In some permissioned blockchains, x509 is used to capture the identity of the network entities with their affiliation, to make sure one certificate will identify only one person, credentials pass sanitation, e.g., signatures normalized to lowS. Now, the problem is that you initialize the cert pool with sanitized root CA certificates, but then you are trying to extract the identity you first need to sanitize, to sanitize, you need to find a parent cert to lookup for curve parameters. So, if you are getting leaf certs, it works as intended. However, if you get an identity with root CA cert, it fails due to the reasons I have described inside the issue.
The problem here we are trying to avoid is that the user can produce two valid x509 certs without intervention from the CA side.

crypto/x509 is generally designed for use with the Web PKI, and as such may make some decisions that are not compatible with other uses of X.509, I suspect this is one of those cases.
Allowing these duplicate certificates (as defined in RFC 4158) in chains creates overly verbose chains that contain self-referential loops which we'd rather avoid.

Allowing these duplicate certificates (as defined in RFC 4158) in chains creates overly verbose chains that contain self-referential loops which we'd rather avoid.

Well, this sanitation process is basically to prevent duplication of certs and to reduce verbosity. The problem I guess is that in 1.18 you could validate self-signed ECDSA certs whenever they are lowS or highS, which is no longer possible now with 1.19.

@rolandshoemaker be so kind as to answer the question.


Add Manga element?

Requires the possible following information:

status (Unknown, True, False)
reading direction (Right->Left; Left->Right)

Is this something we really want? Or should manga have their own format?

Chiming in here as Manga is a big focus for me. I don't really think reading information needs to be stored in the format, but I do think the format should allow for Manga information.
For example, alternative titles, different roles for people (not having to re-map to Penciller for example), and Format status like Omnibus. I think having a separate format would really drive down adoption.

Chiming in here as Manga is a big focus for me. I don't really think reading information needs to be stored in the format, but I do think the format should allow for Manga information.
For example, alternative titles, different roles for people (not having to re-map to Penciller for example), and Format status like Omnibus. I think having a separate format would really drive down adoption.

@majora2007: I agree having a separate format would drive down potential adoption. My knowledge of manga is fairly basic and most of the folks that have helped out also aren't really manga readers, so any input from people knowledgeable about manga would be greatly appreciated!
Regarding your suggestions, I've a few questions:

Alternative titles - What information would this contain? Alternative name for the series? Or something else? Also, would this contain multiple values and necessitate having children elements?
Creator Roles - What values would need to be added? Here's what's currently define: Roles
Omnibus - Isn't the primary difference between an Trade Paperback and an Omnibus, the number of issues reprinted within them? Or do they have a different meaning for Manga?

I'm not opposed to adding support for Manga, but like I said above, my own knowledge about Manga is fairly limited, so I definitely shouldn't be the one making the final decision on what's needed.
Also, it would be beneficial to get your thoughts on what you'd like to see included in the format as someone writing a comic server, since it's a different viewpoint from where I'm coming from as someone working a comic book database.

Alternative titles - What information would this contain? Alternative name for the series? Or something else? Also, would this contain multiple values and necessitate having children elements?

From my personal experience, these are alternative names for the series. At a minimum, you just need a list of alternative strings to match against, however, taking a step further an attribute for the language code might also be beneficial. However, there may be more than one alternative title per language code.
See:
https://anilist.co/manga/122063/ShangriLa-Frontier-Kusoge-Hunter-Kami-ge-ni-Idoman-to-su/
There are multiple Synonyms attached to this, some in japanese, most in romanji.

Creator Roles - What values would need to be added?
You have a much better set than ComicInfo. I don't think any changes are needed.

Omnibus - Isn't the primary difference between an Trade Paperback and an Omnibus, the number of issues reprinted within them? Or do they have a different meaning for Manga?
Yes they are different. An Omnibus is a collection of Volumes into 1 file. So You may have a series re-released as Omnibus where 2 volumes are released as a new Volume number. So a series of 4 volumes is now just Volume 1 and 2 (containing 1-2 and 3-4 respectively).

TPBs combine issues that make up a story arc.
From my perspective, there are a few more things that might be nice to capture as optional fields but I'm not 100% sold they are needed. The problem arises from Series-level vs Issue-level metadata. All server's inherit series-level metadata from the first issue.
Since series-level metadata is needed, here's my wishlist:

In addition to Count which is used to derive publication status, a PublicationStatus field which has values "Ongoing", "Cancelled", "Complete", "Hiatus", etc. For comics, I believe they only have Complete or Ongoing, but mangas can be cancelled or on Hiatus (indefinitely).
Metadata ids (I believe you already have this solved and it's flexible for other sites)
Formal documentation around Issue number and Volume number (like how to handle ranges, special characters, etc)

Alternative titles - What information would this contain? Alternative name for the series? Or something else? Also, would this contain multiple values and necessitate having children elements?

From my personal experience, these are alternative names for the series. At a minimum, you just need a list of alternative strings to match against, however, taking a step further an attribute for the language code might also be beneficial. However, there may be more than one alternative title per language code.
See: https://anilist.co/manga/122063/ShangriLa-Frontier-Kusoge-Hunter-Kami-ge-ni-Idoman-to-su/ There are multiple Synonyms attached to this, some in japanese, most in romanji.

So, would something like this work? (Not sure the id attribute is needed, but doesn't hurt to have the option):
    <Series id="65478" lang="en">
        <Name>Justice League</Name>
        <SortName>Justice League</SortName>
        <Volume>2</Volume>
        <Format>Series</Format>
        <AlternativeNames>
           <Name id="1234" lang="en">Foo</Name>
           <Name id="5689" lang="de">Hüsker Dü</Name>
        </AlternativeNames>
    </Series>

Or is their some another solution that would work better?

Omnibus - Isn't the primary difference between an Trade Paperback and an Omnibus, the number of issues reprinted within them? Or do they have a different meaning for Manga?

Yes they are different. An Omnibus is a collection of Volumes into 1 file. So You may have a series re-released as Omnibus where 2 volumes are released as a new Volume number. So a series of 4 volumes is now just Volume 1 and 2 (containing 1-2 and 3-4 respectively).
TPBs combine issues that make up a story arc.

Ok, sounds like it would be worthwhile to add Omnibus to the formatType then.

From my perspective, there are a few more things that might be nice to capture as optional fields but I'm not 100% sold they are needed. The problem arises from Series-level vs Issue-level metadata. All server's inherit series-level metadata from the first issue.
Since series-level metadata is needed, here's my wishlist:
In addition to Count which is used to derive publication status, a PublicationStatus field which has values "Ongoing", "Cancelled", "Complete", "Hiatus", etc. For comics, I believe they only have Complete or Ongoing, but mangas can be cancelled or on Hiatus (indefinitely).

What is the Count? The number of issues in a series or limited series? If so, I'm not 100% it would be a worthwhile field to add since it's value could potentially differ per issue per series based on when they are tagged.
Also, I agree adding a PublicationStatus field is a pretty good idea.

* Formal documentation around Issue number and Volume number (like how to handle ranges, special characters, etc)

I agree, any suggestion on what to add/change would be appreciated.

Ok, I added an AlternativeNames sub-element to the Series element, and added Omnibus to format type.
Regarding, the Count and Series Status, I've decided to table those for now, since the general consensus seems to be that elements since Series-level information like that changes. I've opened a bug #38 to track these if in the future we want to revisit this.