marimo server becomes unusable when several notebooks are open

Describe the bug
On macOS, after opening many notebooks, the marimo server can become unusable — notebooks refuse to open, incorrectly claiming that another browser tab is already connected.
This could be related to #1622.
The following errors are repeatedly emitted in the console:
ERROR:    Exception in ASGI application
Traceback (most recent call last):
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/uvicorn/protocols/websockets/websockets_impl.py", line 332, in asgi_send
    await self.send(data)  # type: ignore[arg-type]
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/websockets/legacy/protocol.py", line 635, in send
    await self.ensure_open()
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/websockets/legacy/protocol.py", line 939, in ensure_open
    raise self.connection_closed_exc()
websockets.exceptions.ConnectionClosedError: no close frame received or sent

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/websockets.py", line 97, in send
    await self._send(message)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/_exception_handler.py", line 50, in sender
    await send(message)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/middleware/sessions.py", line 83, in send_wrapper
    await send(message)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/uvicorn/protocols/websockets/websockets_impl.py", line 345, in asgi_send
    raise ClientDisconnected from exc
uvicorn.protocols.utils.ClientDisconnected

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/uvicorn/protocols/websockets/websockets_impl.py", line 244, in run_asgi
    result = await self.app(self.scope, self.asgi_receive, self.asgi_send)  # type: ignore[func-returns-value]
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/uvicorn/middleware/proxy_headers.py", line 70, in __call__
    return await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/applications.py", line 123, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/middleware/errors.py", line 151, in __call__
    await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/marimo/_server/api/auth.py", line 215, in __call__
    return await super().__call__(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/middleware/sessions.py", line 85, in __call__
    await self.app(scope, receive, send_wrapper)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/middleware/authentication.py", line 49, in __call__
    await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/middleware/cors.py", line 77, in __call__
    await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/marimo/_server/api/middleware.py", line 64, in __call__
    return await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/middleware/exceptions.py", line 65, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app
    raise exc
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    await app(scope, receive, sender)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 756, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 776, in app
    await route.handle(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 485, in handle
    await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 756, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 776, in app
    await route.handle(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 373, in handle
    await self.app(scope, receive, send)                                                                                [413/896]
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 96, in app
    await wrap_app_handling_exceptions(app, session)(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app
    raise exc
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    await app(scope, receive, sender)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 94, in app
    await func(session)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/marimo/_server/api/endpoints/ws.py", line 76, in websocket_endpoint
    await WebsocketHandler(
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/marimo/_server/api/endpoints/ws.py", line 386, in start
    await self.future
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/marimo/_server/api/endpoints/ws.py", line 318, in listen_for_messages
    await self.websocket.send_text(
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/websockets.py", line 188, in send_text
    await self.send({"type": "websocket.send", "text": data})
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/websockets.py", line 100, in send
    raise WebSocketDisconnect(code=1006)
starlette.websockets.WebSocketDisconnect

ERROR:    Exception in ASGI application
Traceback (most recent call last):
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/uvicorn/protocols/websockets/websockets_impl.py", line 244, in run_asgi
    result = await self.app(self.scope, self.asgi_receive, self.asgi_send)  # type: ignore[func-returns-value]
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/uvicorn/middleware/proxy_headers.py", line 70, in __call__
    return await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/applications.py", line 123, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/middleware/errors.py", line 151, in __call__
    await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/marimo/_server/api/auth.py", line 215, in __call__
    return await super().__call__(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/middleware/sessions.py", line 85, in __call__
    await self.app(scope, receive, send_wrapper)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/middleware/authentication.py", line 49, in __call__
    await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/middleware/cors.py", line 77, in __call__
    await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/marimo/_server/api/middleware.py", line 64, in __call__
    return await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/middleware/exceptions.py", line 65, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app
    raise exc
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    await app(scope, receive, sender)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 756, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 776, in app
    await route.handle(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 485, in handle
    await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 756, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 776, in app
    await route.handle(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 373, in handle
    await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 96, in app
    await wrap_app_handling_exceptions(app, session)(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app
    raise exc
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    await app(scope, receive, sender)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 94, in app
    await func(session)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/marimo/_server/api/endpoints/ws.py", line 76, in websocket_endpoint
    await WebsocketHandler(
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/marimo/_server/api/endpoints/ws.py", line 249, in start
    await self.websocket.close(
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/websockets.py", line 203, in close
    await self.send(                                                                                File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/websockets.py", line 97, in send
    await self._send(message)                                                                                File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/_exception_handler.py", line 50, in sender
    await send(message)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/middleware/sessions.py", line 83, in send_wrapper
    await send(message)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/uvicorn/protocols/websockets/websockets_impl.py", line 338, in asgi_send
    await self.close(code, reason)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/websockets/legacy/protocol.py", line 788, in close
    await self.transfer_data_task
AttributeError: 'WebSocketProtocol' object has no attribute 'transfer_data_task'
ERROR:    Exception in ASGI application

Environment
{
  "marimo": "0.6.19",
  "OS": "Darwin",
  "OS Version": "22.5.0",
  "Processor": "arm",
  "Python Version": "3.9.19",
  "Binaries": {
    "Browser": "126.0.6478.62",
    "Node": "v21.5.0"
  },
  "Requirements": {
    "click": "8.1.7",
    "importlib-resources": "5.10.2",
    "jedi": "0.19.1",
    "markdown": "3.6",
    "pymdown-extensions": "10.8.1",
    "pygments": "2.18.0",
    "tomlkit": "0.12.5",
    "uvicorn": "0.30.1",
    "starlette": "0.37.2",
    "websockets": "12.0",
    "typing-extensions": "4.12.2",
    "black": "24.4.2"
  }
}

Code to reproduce

Run marimo edit in a directory with several notebooks
Open around 10 notebooks.

More context, this time with server debug logs.
[D 240619 20:55:10 assets:76] File key provided: ibis_example.py
[D 240619 20:55:11 ws:338] Websocket disconnected for session s_prg5ll with exception (<CloseCode.ABNORMAL_CLOSURE: 1006>, None)
[D 240619 20:55:11 sessions:372] Disconnecting session consumer
ERROR:    Exception in ASGI application
Traceback (most recent call last):
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/websockets/legacy/protocol.py", line 963, in transfer_data
    message = await self.read_message()
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/websockets/legacy/protocol.py", line 1033, in read_message
    frame = await self.read_data_frame(max_size=self.max_size)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/websockets/legacy/protocol.py", line 1108, in read_data_frame
    frame = await self.read_frame(max_size)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/websockets/legacy/protocol.py", line 1165, in read_frame
    frame = await Frame.read(
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/websockets/legacy/framing.py", line 68, in read
    data = await reader(2)
  File<EMAIL_ADDRESS>line 721, in readexactly
    raise exceptions.IncompleteReadError(incomplete, n)
asyncio.exceptions.IncompleteReadError: 0 bytes read on a total of 2 expected bytes

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/uvicorn/protocols/websockets/websockets_impl.py", line 332, in asgi_send
    await self.send(data)  # type: ignore[arg-type]
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/websockets/legacy/protocol.py", line 647, in send
    await self.write_frame(True, opcode, data)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/websockets/legacy/protocol.py", line 1209, in write_frame
    await self.drain()
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/websockets/legacy/protocol.py", line 1198, in drain
    await self.ensure_open()
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/websockets/legacy/protocol.py", line 939, in ensure_open
    raise self.connection_closed_exc()
websockets.exceptions.ConnectionClosedError: no close frame received or sent

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/websockets.py", line 97, in send
    await self._send(message)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/_exception_handler.py", line 50, in sender
    await send(message)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/middleware/sessions.py", line 83, in send_wrapper
    await send(message)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/uvicorn/protocols/websockets/websockets_impl.py", line 345, in asgi_send
    raise ClientDisconnected from exc
uvicorn.protocols.utils.ClientDisconnected

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/uvicorn/protocols/websockets/websockets_impl.py", line 244, in run_asgi
    result = await self.app(self.scope, self.asgi_receive, self.asgi_send)  # type: ignore[func-returns-value]
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/uvicorn/middleware/proxy_headers.py", line 70, in __call__
    return await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/applications.py", line 123, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/middleware/errors.py", line 151, in __call__
    await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/marimo/_server/api/auth.py", line 215, in __call__
    return await super().__call__(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/middleware/sessions.py", line 85, in __call__
    await self.app(scope, receive, send_wrapper)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/middleware/authentication.py", line 49, in __call__
    await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/middleware/cors.py", line 77, in __call__
    await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/marimo/_server/api/middleware.py", line 64, in __call__
    return await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/middleware/exceptions.py", line 65, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app
    raise exc
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    await app(scope, receive, sender)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 756, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 776, in app
    await route.handle(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 485, in handle
    await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 756, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 776, in app
    await route.handle(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 373, in handle
    await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 96, in app
    await wrap_app_handling_exceptions(app, session)(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app
    raise exc
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    await app(scope, receive, sender)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 94, in app
    await func(session)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/marimo/_server/api/endpoints/ws.py", line 76, in websocket_endpoint
    await WebsocketHandler(
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/marimo/_server/api/endpoints/ws.py", line 386, in start
    await self.future
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/marimo/_server/api/endpoints/ws.py", line 318, in listen_for_messages
    await self.websocket.send_text(
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/websockets.py", line 188, in send_text
    await self.send({"type": "websocket.send", "text": data})
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/websockets.py", line 100, in send
    raise WebSocketDisconnect(code=1006)

Many similar failures, with the server accumulating orphaned connections (see end of below list):
[D 240619 20:55:16 ws:239] Existing sessions: {'s_nsgbwl': Session(connection_state=ConnectionState.OPEN, consumer=<marimo._server.api.endpoints.ws.WebsocketHandler object at 0x102d3e400>), 's_p6coxg': Session(connection_state=ConnectionState.OPEN,
consumer=<marimo._server.api.endpoints.ws.WebsocketHandler object at 0x102d7c310>), 's_uoyzbw': Session(connection_state=ConnectionState.OPEN, consumer=<marimo._server.api.endpoints.ws.WebsocketHandler object at 0x102dc0940>), 's_nnh9fy': Session(co
nnection_state=ConnectionState.OPEN, consumer=<marimo._server.api.endpoints.ws.WebsocketHandler object at 0x102ddbb50>), 's_pwgnhu': Session(connection_state=ConnectionState.OPEN, consumer=<marimo._server.api.endpoints.ws.WebsocketHandler object at
0x102e0cd90>), 's_ayah5b': Session(connection_state=ConnectionState.OPEN, consumer=<marimo._server.api.endpoints.ws.WebsocketHandler object at 0x10543c520>), 's_culsus': Session(connection_state=ConnectionState.OPEN, consumer=<marimo._server.api.end
points.ws.WebsocketHandler object at 0x102a57790>), 's_clvgt7': Session(connection_state=ConnectionState.OPEN, consumer=<marimo._server.api.endpoints.ws.WebsocketHandler object at 0x105496550>), 's_saujr5': Session(connection_state=ConnectionState.O
PEN, consumer=<marimo._server.api.endpoints.ws.WebsocketHandler object at 0x1054cfdc0>), 's_v0q011': Session(connection_state=ConnectionState.OPEN, consumer=<marimo._server.api.endpoints.ws.WebsocketHandler object at 0x1054bf2e0>), 's_s0wxdt': Sessi
on(connection_state=ConnectionState.OPEN, consumer=<marimo._server.api.endpoints.ws.WebsocketHandler object at 0x1055e4f70>), 's_prg5ll': Session(connection_state=ConnectionState.ORPHANED, consumer=None), 's_y0jq9f': Session(connection_state=Connect
ionState.ORPHANED, consumer=None), 's_yrz89s': Session(connection_state=ConnectionState.ORPHANED, consumer=None)}

And logs for when a connection is refused. Not sure why there's an open, followed by reconnect, followed by refusal — browser tab wasn't refreshed or re-opened at any point. There's also some marimo code in the traceback.

ERROR:    Exception in ASGI application
Traceback (most recent call last):
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/uvicorn/protocols/websockets/websockets_impl.py", line 332, in asgi_send
    await self.send(data)  # type: ignore[arg-type]
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/websockets/legacy/protocol.py", line 635, in send
    await self.ensure_open()
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/websockets/legacy/protocol.py", line 939, in ensure_open
    raise self.connection_closed_exc()
websockets.exceptions.ConnectionClosedError: no close frame received or sent

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/websockets.py", line 97, in send
    await self._send(message)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/_exception_handler.py", line 50, in sender
    await send(message)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/middleware/sessions.py", line 83, in send_wrapper
    await send(message)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/uvicorn/protocols/websockets/websockets_impl.py", line 345, in asgi_send
    raise ClientDisconnected from exc
uvicorn.protocols.utils.ClientDisconnected

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/uvicorn/protocols/websockets/websockets_impl.py", line 244, in run_asgi
    result = await self.app(self.scope, self.asgi_receive, self.asgi_send)  # type: ignore[func-returns-value]
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/uvicorn/middleware/proxy_headers.py", line 70, in __call__
    return await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/applications.py", line 123, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/middleware/errors.py", line 151, in __call__
    await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/marimo/_server/api/auth.py", line 215, in __call__
    return await super().__call__(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/middleware/sessions.py", line 85, in __call__
    await self.app(scope, receive, send_wrapper)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/middleware/authentication.py", line 49, in __call__
    await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/middleware/cors.py", line 77, in __call__
    await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/marimo/_server/api/middleware.py", line 64, in __call__
    return await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/middleware/exceptions.py", line 65, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app
    raise exc
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    await app(scope, receive, sender)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 756, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 776, in app
    await route.handle(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 485, in handle
    await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 756, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 776, in app
    await route.handle(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 373, in handle
    await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 96, in app
    await wrap_app_handling_exceptions(app, session)(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app
    raise exc
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    await app(scope, receive, sender)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 94, in app
    await func(session)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/marimo/_server/api/endpoints/ws.py", line 76, in websocket_endpoint
    await WebsocketHandler(
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/marimo/_server/api/endpoints/ws.py", line 386, in start
    await self.future
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/marimo/_server/api/endpoints/ws.py", line 318, in listen_for_messages
    await self.websocket.send_text(
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/websockets.py", line 188, in send_text
    await self.send({"type": "websocket.send", "text": data})
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/websockets.py", line 100, in send
    raise WebSocketDisconnect(code=1006)
starlette.websockets.WebSocketDisconnect
ERROR:    Exception in ASGI application
Traceback (most recent call last):
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/uvicorn/protocols/websockets/websockets_impl.py", line 332, in asgi_send
    await self.send(data)  # type: ignore[arg-type]
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/websockets/legacy/protocol.py", line 635, in send
    await self.ensure_open()
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/websockets/legacy/protocol.py", line 939, in ensure_open
    raise self.connection_closed_exc()
websockets.exceptions.ConnectionClosedError: no close frame received or sent

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/websockets.py", line 97, in send
    await self._send(message)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/_exception_handler.py", line 50, in sender
    await send(message)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/middleware/sessions.py", line 83, in send_wrapper
    await send(message)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/uvicorn/protocols/websockets/websockets_impl.py", line 345, in asgi_send
    raise ClientDisconnected from exc
uvicorn.protocols.utils.ClientDisconnected

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/uvicorn/protocols/websockets/websockets_impl.py", line 244, in run_asgi
    result = await self.app(self.scope, self.asgi_receive, self.asgi_send)  # type: ignore[func-returns-value]
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/uvicorn/middleware/proxy_headers.py", line 70, in __call__
    return await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/applications.py", line 123, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/middleware/errors.py", line 151, in __call__
    await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/marimo/_server/api/auth.py", line 215, in __call__
    return await super().__call__(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/middleware/sessions.py", line 85, in __call__
    await self.app(scope, receive, send_wrapper)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/middleware/authentication.py", line 49, in __call__
    await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/middleware/cors.py", line 77, in __call__
    await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/marimo/_server/api/middleware.py", line 64, in __call__
    return await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/middleware/exceptions.py", line 65, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app
    raise exc
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    await app(scope, receive, sender)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 756, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 776, in app
    await route.handle(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 485, in handle
    await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 756, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 776, in app
    await route.handle(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 373, in handle
    await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 96, in app
    await wrap_app_handling_exceptions(app, session)(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app
    raise exc
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    await app(scope, receive, sender)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 756, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 776, in app
    await route.handle(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 485, in handle
    await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 756, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 776, in app
    await route.handle(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 373, in handle
    await self.app(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 96, in app
    await wrap_app_handling_exceptions(app, session)(scope, receive, send)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app
    raise exc
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    await app(scope, receive, sender)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/routing.py", line 94, in app
    await func(session)
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/marimo/_server/api/endpoints/ws.py", line 76, in websocket_endpoint
    await WebsocketHandler(
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/marimo/_server/api/endpoints/ws.py", line 386, in start
    await self.future
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/marimo/_server/api/endpoints/ws.py", line 318, in listen_for_messages
    await self.websocket.send_text(
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/websockets.py", line 188, in send_text
    await self.send({"type": "websocket.send", "text": data})
  File "/Users/akshay/envs/playground/lib/python3.9/site-packages/starlette/websockets.py", line 100, in send
    raise WebSocketDisconnect(code=1006)

The WebSocket is being closed before the handshake is completed. Not sure why.
Frontend logs show:

Similarly when uvicorn's connection_lost() method is called, it determines that the connection was lost before the handshake was completed.


edge intersects points

Hi
I am getting this error Constraining edge intersects point,
I not realy understand why this is happening
Isnt the collinear function if a point is on the line segment, but here it is checking an edge with that function?
if (this.isCollinear(segP1, segP2, triangles[edg]) || this.isCollinear(segP1, segP2, triangles[adj])) {
throw new Error("Constraining edge intersects point");
}

Also getting errors Edge intersects already constrained edge

Hi

Isnt the collinear function if a point is on the line segment, but here it is checking an edge with that function?
if (this.isCollinear(segP1, segP2, triangles[edg]) || this.isCollinear(segP1, segP2, triangles[adj])) { throw new Error("Constraining edge intersects point"); }

Here, it checks if the edge to be constrained (segP1 to segP2) is collinear with the first endpoint of the 'current' edge (triangles[edg]) or the second endpoint (triangles[adj]). In other words: it is making sure the edge to be constrained does not intersect with a point/vertex of the triangulation.

Also getting errors Edge intersects already constrained edge

This means you're trying to constrain two (or more) edges that cross each other: this is not allowed.
Without a concrete example I can't do much to help you further. Please provide a minimal, complete, and verifiable example that produces these errors. You may also want to actually pose this question on StackOverflow, where more people can see it to help you.

I was looking to use it to constrain the edge of a polygon with a set of other points inside it. But as I understand it does not work like that since it will still triangulate outside of polygon. So I constrain all the edges of the polygon points. But then get these errors on different occassions. Sometimes it will work, sometimes I get the errors...

I need to look at using another library then delaunator that can triangulate polygons instead of a random collection of points.

Hi, and many thanks for this great library!
Reviving this issue since I've had a similar issue (on a similar project: trying to find/build a more modern JS an alternative for poly2tri, inspired by this approach and to be used as part of the Allmaps project).
Here is a reproducible example in the form of an Observable Notebook (as forked from this proof-of concept notebook).
In this notebook, a rectangular shape is interpolated given a distance (to creating midpoints on the edges) and then passed to Constrainautor, asking to triangulate based on all polygon points, while constraining all edges. For distance 201 this gives no error, for distance 200 I'm getting the RuntimeError: Edge intersects already constrained edge.


Iteration Plan for February 2019 [DRAFT]

This plan captures our work in Feburary. We will ship our Feburary Update in in early March.
Endgame

February 25, 2019: Code freeze for the endgame (Zurich freezes on February 22)
March 1, 2019: Endgame done

The endgame details for this iteration are tracked in TBD
Plan Items
Below is a summary of the top level plan items.
Legend of annotations:

Mark
Description

:runner:
work in progress

:hand:
blocked task

:muscle:
stretch goal for this iteration

:red_circle:
missing issue reference

:large_blue_circle:
more investigation required to remove uncertainty

:black_circle:
under discussion within the team

Workbench

[ ] :red_circle: Revisit the custom menubar on Linux @sbatten
[ ] :red_circle: Simplify switching to an newly installed theme @sandy081 @aeschli
[ ] :red_circle: Adopt new tree in Outline @jrieken @joaomoreno
[ ] :muscle: Explore flatting folder hierarchies in the explorer https://github.com/Microsoft/vscode/issues/41627 @isidorn @joaomoreno

UX

[ ] :runner: Iconography re-design https://github.com/Microsoft/vscode/issues/8017 @misolori
[ ] :red_circle: Explore alternative extension install/management experiences @misolori

Editor

[ ] :red_circle: Improve hover presentation for complex errors @sandeep
[ ] :red_circle: Adopt new tree in bread crumb and enable by default @jrieken @joaomoreno
[ ] Investigate reviving translations in the Monaco editor @dbaeumer

Tasks

[ ] :red_circle: Add support for custom execution in addition to ShellExecution and ProcessExecution @alexr00

Languages

[ ] :runner: Support semantic selections https://github.com/Microsoft/vscode/issues/4795 @jrieken

LSP

[ ] :runner: Support semantic selections https://github.com/Microsoft/language-server-protocol/issues/613 @dbaeumer
[ ] :red_circle: LSP support for type hierachies @dbaeumer
[ ] :red_circle: LSP support for call hierachies @dbaeumer
[ ] :red_circle: LSP support for progress reporting @dbaeumer

JavaScript/TypeScript

[ ] Adopt TypeScript 3.3.x @mjbvz

CSS/HTML

[ ] :red_circle: :runner: Update CSS and HTML language services with MDN data @octref

Debug

[ ] Investigate Find in Console https://github.com/Microsoft/vscode/issues/4338 @isidorn
[ ] Explore how to support extending the debug toolbar https://github.com/Microsoft/vscode/issues/45116 @weinand @isidorn
[ ] Providing additional hooks for generating launch.json https://github.com/Microsoft/vscode/issues/65988 @isidorn
[ ] Improve presentation of debugged subprocesses https://github.com/Microsoft/vscode/issues/62972 @weinand

Debug Adapter Protocol

[ ] :red_circle: Data break points proposal @weinand
[ ] :red_circle: Investigate protocol addition to support opening a page in the browser @weinand

Extension Contributions

[ ] Work with extension authors on adoption of dynamic loading of extensions @??
[ ] :runner: Migrate vscode-tslint to use tslint as a TS server plugin https://github.com/Microsoft/typescript-tslint-plugin/issues/1 @mjbvz @egamma
[ ] Contributions to the GitHub PR extension https://github.com/Microsoft/vscode-pull-request-github/issues/921 @rebornix @rmacfarlane
[ ] :red_circle: Contributions to the Vetur extension @octref
[ ] :red_circle: Webpack eslint extension @dbaeumer

Extensions

[ ] Improve user experience when multiple-formatters are registered @jrieken @octref

API

API finalization: query
API proposals: query
[ ] Reconsider comment provider APIs https://github.com/Microsoft/vscode/issues/68020 @rebornix @rmacfarlane @jrieken

Exploration

[ ] :runner: Explore support for developing on WSL https://github.com/Microsoft/vscode/issues/63155 @alexandrudima team
[ ] :red_circle: :runner: Explore supporting Electron 5.0 default renderer configuration @bpasero @sbatten
[ ] :muscle: Explore webview rendered code insets @jrieken

Engineering

[ ] Ensure user need to choose traget when filing issues https://github.com/Microsoft/vscode/issues/66080 @rmacfarlane
[ ] :red_circle: :runner: Ensure all of our built-in extensions support dynamic loading team
[ ] :runner: Electron 4.0 upgrade @bpasero
[ ] :runner: Strict null checking VS Code https://github.com/Microsoft/vscode/issues/60565 @mjbvz team

Documentation

:muscle: Revisit Javascript end user documentation @mjbvz @gregvanl https://github.com/Microsoft/vscode-docs/issues/2190
[ ] :red_circle: Create a guide for webpacking extensions @jrieken

Deferred Items
None.

you mean Electron 4.0 upgrade released on stable channel!? finally in my company we will be able to upgrade from 1.25.1 ❤👌

@maciejw  Just curious, why you're still using 1.25.1 version? And how Electron 4 is related to this? Current VS Code version uses Electron 3.1.3 which is latest from v3.x.

@svipben because of this https://github.com/Microsoft/vscode/issues/56644, 40 seconds startup is too painful :)

Thanks, didn't know about this issue. Good news there are already exploration builds with Electron 4 which you can download and use ✨

I know, are they stable enough though ;)

Can this (and hopefully future iteration plans) be pinned so they show up above issue list? See https://help.github.com/articles/pinning-an-issue-to-your-repository/

@dpen2000 thanks for the suggestion. I've pinned the issue so that we can try this out.

is just me or the dpi was really improved recently? Was that something worked on for this release? Or I'm just imagining things (using latest Insiders on Win10)

Shipped.


Skip Login for custom endpoint_url in HuggingFaceEndpoint

Thank you for contributing to LangChain!

[ ] HuggingFaceEndpoint: "Skip Login to HuggingFaceHub"

Where:  langchain, community, llm, huggingface_endpoint

[ ] PR message: Delete this entire checklist and replace with

Description: Adding huggingface_skip_login to be set to True when using custom endpoint_url outside of HuggingFaceHub.
Issue: the issue # it fixes https://github.com/langchain-ai/langchain/issues/20342 and https://github.com/langchain-ai/langchain/issues/19685
Dependencies: None

[ ] Add tests and docs:

Tested with locally available TGI endpoint
Example Usage

from langchain_community.llms import HuggingFaceEndpoint

llm = HuggingFaceEndpoint(
    endpoint_url='http://localhost:8080',
    huggingfacehub_skip_login=True,
    server_kwargs={
        "headers": {"Content-Type": "application/json"}
    }
)
resp = llm.invoke("Tell me a joke")
print(resp)

Also tested against HF Endpoints
from langchain_community.llms import HuggingFaceEndpoint
huggingfacehub_api_token = "hf_xyz"
repo_id = "mistralai/Mistral-7B-Instruct-v0.2"
llm = HuggingFaceEndpoint(
   huggingfacehub_api_token=huggingfacehub_api_token,
   repo_id=repo_id,
)
resp = llm.invoke("Tell me a joke")
print(resp)

Additional guidelines:

Make sure optional dependencies are imported within a function.
Please do not add dependencies to pyproject.toml files (even optional ones) unless they are required for unit tests.
Most PRs should not touch more than one package.
Changes should be backwards compatible.
If you are adding something to community, do not re-import it in langchain.

If no one reviews your PR within a few days, please @-mention one of baskaryan, efriis, eyurtsev, hwchase17.

it is necessary function !!

Mentioning @mspronesti and @hwchase17 since you were the reviewers on my other HuggingFace PR https://github.com/langchain-ai/langchain/pull/21282

@eyurtsev

@eyurtsev

There is a new official library released from Huggning Face
https://huggingface.co/blog/langchain
The new library still has the same issue.
Here is the deprecation warning when using the current community library.
LangChainDeprecationWarning: The class `HuggingFaceEndpoint` was deprecated in LangChain 0.0.37 and will be removed in 0.3. An updated version of the class exists in the from langchain-huggingface package and should be used instead. To use it run `pip install -U from langchain-huggingface` and import as `from from langchain_huggingface import llms import HuggingFaceEndpoint`.
  warn_deprecated(

There is a new official library released from Huggning Face https://huggingface.co/blog/langchain The new library still has the same issue.
Here is the deprecation warning when using the current community library.
LangChainDeprecationWarning: The class `HuggingFaceEndpoint` was deprecated in LangChain 0.0.37 and will be removed in 0.3. An updated version of the class exists in the from langchain-huggingface package and should be used instead. To use it run `pip install -U from langchain-huggingface` and import as `from from langchain_huggingface import llms import HuggingFaceEndpoint`.
  warn_deprecated(

The current library is not deprecated yet and it looks like it will be around for quite some time.  We can make this change also in the new langchain-huggingface https://github.com/langchain-ai/langchain/blob/master/libs/partners/huggingface/langchain_huggingface/llms/huggingface_endpoint.py  as soon as this one gets merged.

@mirkenstein Any reason to not just bundle that change into this PR as well? Would help keep the change unified across both clients, easier to track down the original PR, etc

@mirkenstein Any reason to not just bundle that change into this PR as well? Would help keep the change unified across both clients, easier to track down the original PR, etc

One of the guidelines states that "Most PRs should not touch more than one package" I applied the same change to the partner library and now the checks are failing at "CI / CI Success (pull_request)" step.

Created  https://github.com/langchain-ai/langchain/pull/22365 for the new partner client.

Will this also get merged into libs/community/langchain_community/llms/huggingface_endpoint.py? The partner package langchain-huggingface contains dependencies on torch and cuda packages that take too much disk space (for my needs).

Will this also get merged into libs/community/langchain_community/llms/huggingface_endpoint.py? The partner package langchain-huggingface contains dependencies on torch and cuda packages that take too much disk space (for my needs).

@efriis  and   @morgandiverrez

We switched internally to langchain-huggingface to pick up this auth-token-fix, and have noticed issues due to the increased package size as well. Because of this, we'd also prefer to use the langchain-community variant of the basellms that this PR fixes.

Alternatively, can the langchain-huggingface package be split up via some extras-ish functionality? The issue AFAICT is that langchain-huggingface has embeddings/ which will import sentence-transformers:
 ~/test  » python3 -m venv venv; source venv/bin/activate
(venv)  ~/test  » pip install langchain_huggingface pipdeptree
... omitted for brevity ...
(venv)  ~/test  » pipdeptree --reverse --packages torch
torch==2.3.1
└── sentence-transformers==3.0.1 [requires: torch>=1.11.0]
    └── langchain-huggingface==0.0.3 [requires: sentence-transformers>=2.6.0]

My needs involve just getting a langchain-client to talk to TGI endpoints, and don't need embeddings at all.
I grepped over the many pyproject.tomls and didn't really find any examples of this (other than test dep groups, style, etc). If the langchain/huggingface maintainers are amenable to that change, can create a separate issue to track that work.

cc @Jofthomas on the ask to remove heavy dependencies for the just-cloud case!


  Output from `npx @mui/envinfo` goes here.

Search keywords: Select, text input

Hi @kennysrb. As the docs say, when passing the select prop to TextField, the text field becomes a Select. This is the intended behavior.
If what you want is a list of items + a text input to filter such items, you have the Autocomplete component. Let us know if you have more doubts.


Controls cheat sheet page on documentation

Kirki has a bunch of controls and could be easier to decide witch to use if documentation had a page to show all the options using their sample image. At this moment I saved all the controls images in a folder on my desktop to take a look at the options, but this could be documented in a page too and this is much better than read the controls menu and open the page to see if I can use it or not. Just the sample image  linked to the their page is enough. What do you think?
A list of Hooks available would be a good additional information too!

The truth is that my day job simply takes up most of my time so I didn't have a lot of time to deal with adding extra documentation etc...
I want to do this but I simply don't have an ETA.
In the meantime if you want to contribute I'd be more than happy to merge any pull-requests!
All docs are in the gh-pages branch 👍

Let me have a look at it.

@PlayerThemes #1056


2024-10-02_01-35-16_master-next_aws-sdk-cpp

Automatically created.

Backport failed for kirkstone-next, because it was unable to cherry-pick the commit(s).
Please cherry-pick the changes locally.
git fetch origin kirkstone-next
git worktree add -d .worktree/backport-9799-to-kirkstone-next origin/kirkstone-next
cd .worktree/backport-9799-to-kirkstone-next
git checkout -b backport-9799-to-kirkstone-next
ancref=$(git merge-base a057e508a493e2ec5af3c31f72e5d40fc41bcb13 2cc117838c390beb7decd1e0b7124ee71f18cfc0)
git cherry-pick -x $ancref..2cc117838c390beb7decd1e0b7124ee71f18cfc0

Backport failed for scarthgap-next, because it was unable to cherry-pick the commit(s).
Please cherry-pick the changes locally.
git fetch origin scarthgap-next
git worktree add -d .worktree/backport-9799-to-scarthgap-next origin/scarthgap-next
cd .worktree/backport-9799-to-scarthgap-next
git checkout -b backport-9799-to-scarthgap-next
ancref=$(git merge-base a057e508a493e2ec5af3c31f72e5d40fc41bcb13 2cc117838c390beb7decd1e0b7124ee71f18cfc0)
git cherry-pick -x $ancref..2cc117838c390beb7decd1e0b7124ee71f18cfc0

Backport failed for styhead-next, because it was unable to cherry-pick the commit(s).
Please cherry-pick the changes locally.
git fetch origin styhead-next
git worktree add -d .worktree/backport-9799-to-styhead-next origin/styhead-next
cd .worktree/backport-9799-to-styhead-next
git checkout -b backport-9799-to-styhead-next
ancref=$(git merge-base a057e508a493e2ec5af3c31f72e5d40fc41bcb13 2cc117838c390beb7decd1e0b7124ee71f18cfc0)
git cherry-pick -x $ancref..2cc117838c390beb7decd1e0b7124ee71f18cfc0


Ability to set commit to different values in add and version commands.

Affected Packages
@changesets/cli
Problem
We recently migrated to Changesets and are seeing some issues related to the commit option being used by both add and version commands. We set it to true, thinking that it would be convenient if didn't have to run git add/commit immediately after having run changeset add. But when the action/changesets picks up the changes and runs changeset version, it adds [skip ci] to the commit message and submits the PR. When we merge the PR, nothing happens because CI is skipped.
I looked through the docs and even looked into the code to see if I had missed a configuration somewhere, but it turns out it was removed back in 2.0, with the message below:

If you use commit and skipCI in versionOptions or publishOptions, set commit to true, all commits will include a skip ci message. if you have a use case for only using commit on one command or not including a skip ci message by default, contact us and we will talk about re-implementing these features.

https://github.com/atlassian/changesets/blob/678b16a6e49976bd3884919303bc22ed6690d151/packages/cli/CHANGELOG.md?plain=1#L738
So I guess what I'm asking is if we can re-implement this feature 😄
Proposed solution
Ability to override commit for one command, or at least split up the commit option so we can set different values for add and version commands.

q: is the problem more about commit option affecting both commands or about [skip ci] being added to the commit message? It seems that you potentially want to disable the latter but using commit: true for both commands would be OK for you?
I'm slightly unsure why the [skip ci] is there - it kinda seems dangerous to me, especially as the default for the commit option. At least my normal workflow is that I very often include changesets together with code-oriented commits or add them quickly on top of my changes (in a separate commit) but before pushing my branch out. In both cases I definitely want the CI to run.

q: is the problem more about commit option affecting both commands or about [skip ci] being added to the commit message? It seems that you potentially want to disable the latter but using commit: true for both commands would be OK for you?

Yes, just removing [skip ci] from the commit message would be enough for us. The commit option affecting both commands would've been fine if it wasn't for that.

I'm slightly unsure why the [skip ci] is there

I'm also confused why it was added, tbh. I dunno if there is a use case for it.

@mitchellhamilton @Noviny could you shed some context on the [skip ci] thing? can we just drop this? or do you believe that this would be too much of a breaking change and an option to disable the behavior is required for the v2 line?

@mitchellhamilton, @Noviny: Can you provide context on 👆? I'm willing to submit a PR if the change isn't too complicated.

Let's wait a couple of days more to see if @mitchellhamilton responds - if not, feel free to submit a PR that removes [skip ci] stuff entirely. I'm debating with myself if this is going to be a breaking change or not but I'm leaning towards... no (pragmatically speaking).

For [skip ci] in the version command, I believe it's due to the way some people have their CI setup to auto publish on every commit and they don't want the version commit to trigger it again. In the add command I'm not totally sure why it's there. Though tbh, I kinda think the right thing to do here is tell people to add a script to their package.json like the one below and leave commit as it is and discourage the usage of it.
"changeset": "changeset && git add .changeset && git commit -m 'Add changeset'"

For [skip ci] in the version command, I believe it's due to the way some people have their CI setup to auto publish on every commit and they don't want the version commit to trigger it again. In the add command I'm not totally sure why it's there. Though tbh, I kinda think the right thing to do here is tell people to add a script to their package.json like the one below and leave commit as it is and discourage the usage of it.

Just to be clear, [skip ci] is only added for the version command if commit: true. If I understand you correctly, we have two choices:

With commit: false, you have to manually add and commit the change files after invoking add or write a script to handle it (and making sure it works across all platforms/terminals). You will need the script if you want to auto-publish on every commit.
With commit: true, you don't have to manually add/commit change files, and you can auto-publish every commit. However, users of the Changesets action is out of luck because [skip ci] is added to the commit message when running version.

Users who wants to auto-commit change files, but still use the Changesets action, have to maintain an extra script regardless of what is set here. This used to work fine before 2.0, when the setting was split in two, so it feels like a regression to me. Is there really no way to get the old behaviour back? Or make it possible to customise the commit message for the version command?

adding on here, since this is relevant to me as we speak.
I'm designing my CI build like this:
PR is created -> PR CI Build triggers -> only changeset  status is run
PR is merged to main -> Main CI Build Triggers -> changeset version && changeset publish are both run.
After that, the package.jsons of a bunch of components in my monorepo will have changed (the packages i created the changeset for, and dependents of those). I need to commit those back to the main branch. When I do, that will count as a new commit for my CI, so ANOTHER Main CI build will get triggered.
I need [skip ci] so that that an infinite loop doesnt start with my first main CI build.
Can we please keep this feature as a config option skipCI: boolean | string so that folks using different CI methods can still append [skip ci]? If this feature gets removed, i'm going to have to do other more complicated things like prevent the second build by checking the author of the commit against the system account that commits back to main from the CI job.
I'd much rather just have [skip ci]

the script above breaks changeset add --empty btw

Hm, why is that? I've tried that and it should work just OK since this just creates an empty changeset file in the .changeset directory - so it's not much different from a non-empty flow.

PR is merged to main -> Main CI Build Triggers -> changeset version && changeset publish both run -> commit changes back to main

To understand this better - so for every PR merged in to your main branch you instantly version+publish and thus a new commit has to be added on top of you main branches cause you need to commit the result of the version command?

the script above breaks changeset add --empty btw

Hm, why is that? I've tried that and it should work just OK since this just creates an empty changeset file in the .changeset directory - so it's not much different from a non-empty flow.

The suggested script looks like this:
"changeset": "changeset && git add .changeset && git commit -m 'Add changeset'"

Which means that if you do yarn changeset add --empty, the flags get appended to the git command.

@tido64 thanks for clarifying!
Well, since we have existing users relying on the [skip ci] it seems that we can't change the default there. I agree with @mitchellhamilton's sentiment of committing being somewhat out of the scope of Changesets CLI. However, the real world ain't perfect, and plumbing flags/commands correctly with custom scripts is a chore.
You could actually plumb this specific use case "correctly" with:
"changeset": "changeset",
"postchangeset": "git add .changeset && git commit -m 'Add changeset'"

but this is not quite obvious and makes reading the final thing more obscure as it gets spread across multiple scripts.
So I'm inclined to be in favor of making this configure/bringing old options back. I would like to hear back from @mitchellhamilton though - before we start working on this.

You could actually plumb this specific use case "correctly" with:
"changeset": "changeset",
"postchangeset": "git add .changeset && git commit -m 'Add changeset'"

but this is not quite obvious and makes reading the final thing more obscure as it gets spread across multiple scripts.

Sadly, this won't work with all package managers. Yarn deprecated them in 2.0: https://yarnpkg.com/advanced/lifecycle-scripts

So I'm inclined to be in favor of making this configure/bringing old options back.

Agreed. It does look like this is the only option left.

Sadly, this won't work with all package managers. Yarn deprecated them in 2.0: https://yarnpkg.com/advanced/lifecycle-scripts

Today I Relearned

To understand this better - so for every PR merged in to your main branch you instantly version+publish and thus a new commit has to be added on top of you main branches cause you need to commit the result of the version command?

Basically yeah. It wont be every single PR, it'll just be PRs that contain changesets that would auto version/publish. I don't think it really matters whether or not its every single PR, or every PR that contains a changeset. The issue at hand is that for a lot of CI builds, if you're triggering a build to happen on a commit/merge/push to a branch, then EVERY commit/merge/push to that branch triggers a build unless there's some way to stop it. So if your CI build commits anything back to the repo (like automated version bumped package.json files and changelogs) then that would start another build automatically unless there's some way to prevent it.

I'll be interested in an option to disable addition of "[skip ci]" while keeping the auto commit functionality. My usecase is like this:
changeset version runs on CI whenever someone opens a PR from develop (staging env) -> main (prod env) and pushes back the result to develop branch.
Due to the [skip ci] the pipeline gets skipped and the required CI checks in Github Branch protection rules fail

One solution I think that would fit most use cases is to be able to customize the commit message template itself rather add a specific option for [skip ci]. Something similar to the changelog option?

I created a PoC based on that idea: https://github.com/changesets/changesets/pull/735

Hello! Any updates on merging this?

To shorten the search space for people looking to disable skip-ci when they merge the changesets pull requesst.
Add this to your config.json
  "commit": ["@changesets/cli/commit", { "skipCI": false }],

This will disable the flag for both changeset add and changeset version actions.
Disabling for add makes sense for the scenario when developer has finished working on the feature, and than follows to doucment the change. In this case, if skip-ci is activated no checks will run, so the PR is blocked from merge (when protections are enabled, on Github)
Disabling for version makes sense because our CI/CD flow is designed to trigger on "Version Packages" merge.
name: WIP- Release

on:
  workflow_run:
    workflows:
      - Tests
    types: [completed]
    branches: [master]

jobs:
  release:
    runs-on: ubuntu-latest
    if: ${{ github.event.workflow_run.conclusion == 'success' && (startsWith(github.event.workflow_run.head_commit.message, 'Version Packages') || contains(github.event.workflow_run.head_commit.message, '#release')) }}
    steps:


LinearGradientContainer doesn't work with transparency

I think. :) It dies at this point:

The page I was trying to use is http://en.wikipedia.org/wiki/Color.
update: This seems to stop it from crashing:
if (!colorStopMatch) {
return {
color: new Color('0,0,0,0'),
stop: null
}
}

This is because of #469--please feel free to subscribe to and follow the issue there until it's implemented (should be soon). This issue can be closed.

https://github.com/niklasvh/html2canvas/commit/46078acf71972af9a966e27b5558c06612d56335


Hide Headers component when empty

@edisonabdiel just pushed the changes we talked about in Slack :)
Do you have merge rights for this prject or should I go for it?

I do have merge rights for it. Merging now. Thanks a lot :)


This event loop is already running

Using the default config from the  readme Im getting an asyncio error.
Python 3.9.10
Scrapy 2.5.1
scrapy-requests 0.2.0
Traceback (most recent call last):
  File "/Users/jquick/.virtualenvs/st-search-SuqNoVD4/lib/python3.9/site-packages/scrapy/utils/defer.py", line 120, in iter_errback
    yield next(it)
  File "/Users/jquick/.virtualenvs/st-search-SuqNoVD4/lib/python3.9/site-packages/scrapy/utils/python.py", line 353, in __next__
    return next(self.data)
  File "/Users/jquick/.virtualenvs/st-search-SuqNoVD4/lib/python3.9/site-packages/scrapy/utils/python.py", line 353, in __next__
    return next(self.data)
  File "/Users/jquick/.virtualenvs/st-search-SuqNoVD4/lib/python3.9/site-packages/scrapy/core/spidermw.py", line 56, in _evaluate_iterable
    for r in iterable:
  File "/Users/jquick/.virtualenvs/st-search-SuqNoVD4/lib/python3.9/site-packages/scrapy/spidermiddlewares/offsite.py", line 29, in process_spider_output
    for x in result:
  File "/Users/jquick/.virtualenvs/st-search-SuqNoVD4/lib/python3.9/site-packages/scrapy/core/spidermw.py", line 56, in _evaluate_iterable
    for r in iterable:
  File "/Users/jquick/.virtualenvs/st-search-SuqNoVD4/lib/python3.9/site-packages/scrapy/spidermiddlewares/referer.py", line 342, in <genexpr>
    return (_set_referer(r) for r in result or ())
  File "/Users/jquick/.virtualenvs/st-search-SuqNoVD4/lib/python3.9/site-packages/scrapy/core/spidermw.py", line 56, in _evaluate_iterable
    for r in iterable:
  File "/Users/jquick/.virtualenvs/st-search-SuqNoVD4/lib/python3.9/site-packages/scrapy/spidermiddlewares/urllength.py", line 40, in <genexpr>
    return (r for r in result or () if _filter(r))
  File "/Users/jquick/.virtualenvs/st-search-SuqNoVD4/lib/python3.9/site-packages/scrapy/core/spidermw.py", line 56, in _evaluate_iterable
    for r in iterable:
  File "/Users/jquick/.virtualenvs/st-search-SuqNoVD4/lib/python3.9/site-packages/scrapy/spidermiddlewares/depth.py", line 58, in <genexpr>
    return (r for r in result or () if _filter(r))
  File "/Users/jquick/.virtualenvs/st-search-SuqNoVD4/lib/python3.9/site-packages/scrapy/core/spidermw.py", line 56, in _evaluate_iterable
    for r in iterable:
  File "/Users/jquick/Projects/st-search/scrape/scrape/spiders/tableau.py", line 20, in parse
    page.html.render()
  File "/Users/jquick/.virtualenvs/st-search-SuqNoVD4/lib/python3.9/site-packages/requests_html.py", line 598, in render
    content, result, page = self.session.loop.run_until_complete(self._async_render(url=self.url, script=script, sleep=sleep, wait=wait, content=self.html, reload=reload, scrolldown=scrolldown, timeout=timeout, keep_page=keep_page))
  File<EMAIL_ADDRESS>line 618, in run_until_complete
    self._check_running()
  File<EMAIL_ADDRESS>line 578, in _check_running
    raise RuntimeError('This event loop is already running')
RuntimeError: This event loop is already running

I tried adding nest_asyncio and get a somewhat better(?) outcome
  File "/Users/jquick/.virtualenvs/st-search-SuqNoVD4/lib/python3.9/site-packages/requests_html.py", line 598, in render
    content, result, page = self.session.loop.run_until_complete(self._async_render(url=self.url, script=script, sleep=sleep, wait=wait, content=self.html, reload=reload, scrolldown=scrolldown, timeout=timeout, keep_page=keep_page))
  File "/Users/jquick/.virtualenvs/st-search-SuqNoVD4/lib/python3.9/site-packages/nest_asyncio.py", line 81, in run_until_complete
    return f.result()
  File<EMAIL_ADDRESS>line 201, in result
    raise self._exception
  File<EMAIL_ADDRESS>line 256, in __step
    result = coro.send(None)
  File "/Users/jquick/.virtualenvs/st-search-SuqNoVD4/lib/python3.9/site-packages/requests_html.py", line 505, in _async_render
    page = await self.browser.newPage()
AttributeError: 'coroutine' object has no attribute 'newPage'

Hey Justin,
This is not a problem with scrapy-request pakcage, this is a problem with the way you called render function.
See this issue:
https://github.com/psf/requests-html/issues/330
You need to replace render function with arender
I realize the README might be a bit misleading, I will update it accordingly.
Thanks.


Show "Select points in polygons" analysis only for polygons

Related to: https://github.com/CartoDB/cartodb/issues/10699
This PR checks the layer geometry to show the Select points in polygons analysis only for polygon layers.
I had to change the parameters we use in most of the functions related to the filtering of analyses to also add the queryGeometryModel.

retest this please


handle args in _first2argreplacer

This PR adds handling of *args to _first2argreplacer
In current master:
import uarray as ua
import unumpy as np
import unumpy.numpy_backend as NumpyBackend

with ua.set_backend(NumpyBackend, coerce=True):
    ret = np.compress([False, True], np.array([[1, 2], [3, 4], [5, 6]]), 1)

fails with:
TypeError: func() takes 2 positional arguments but 3 were given
but it should be possible to pass the third argument (axis) positionally.
This PR fixes cases like the one above.

Can you add a test?

Thanks, @grlee77!


Missing URLs, Video and Photos fields

Description of Issue
Tweets do not have URLs, Video and Photos fields when saved as Pandas DataFrame
Environment Details
Windows

you have to put logged-in cookies in aiohttp


version mismatched between crates.io and github src

Hi
On github here, the version is only to version 0.1.1, but the on crates.io the version is 0,2.0.
Pls sync the github src.

Wow, good point. I have no idea what happened there but I have no local commit or tag for the v0.2.0 release. Very strange.
I will attempt to reconcile what's in the current v0.2.0 crate release vs what's in GitHub. Seems some history didn't get pushed, and my local copies on all devices I'd think I would've worked on this on match GitHub.

Okay, I have tried my best to resolve this. In the future I will do releases via PRs, like this:
https://github.com/RustRPM/cargo-rpm/pull/21


change --Replication Controller

It must be a RFC1035 compatible value

This change is

"an" is correct.


Cant connect to the server locally using the IP address

I cannot connect to the server locally using the IP address.
However, over domain connection works.
The domain is added to Nginx Proxy Manager where the IP address of the AGH server is indicated.
Only "Unknown error" message appears
I checked on 2 phones - the same

Make sure that the url that appears at the top of the connection form matches exactly what you input on your browser to access the admin panel. If you are connecting using HTTPS make sure to enable Override SSL validation on Settings > Advanced settings.

If I turn off encryption, it works over http.
When I turn on encryption, it doesn't work over https.
I tried the "Dont check SSL certificate" option and it doesn't work.
It worked after disabling "Automatically redirect to HTTPS" in option AGH

I have investigated it, and if you have the redirect option enabled on AGH you must select HTTPS and use the HTTPS port instead of the HTTP port.

Same problem when using IP.


Add a wait to prevent rate limiting

This may not be needed when https://github.com/turt2live/matrix-bot-sdk/issues/18 is closed, but in the meantime this might be the easiest compromise to get it working again.
Closes #1

sure :hammer_and_pick:


Bugfix: Fix issue with punt ranges being wonky.


Update README to include notes on EFI Graphics Resolution command

The script got me up and running in no time with a new El Capitan guest on my Sierra host.
But I struggled with resolution until I came across this command from some online video comments. It was in the VirtualBox documentation and this was the only thing that worked for me.
The extradata for my host now looks like:
Key: GUI/Fullscreen, Value: true
Key: GUI/HiDPI/UnscaledOutput, Value: true
Key: GUI/LastCloseAction, Value: PowerOff
Key: GUI/LastNormalWindowPosition, Value: 139,44,1024,789
Key: VBoxInternal2/EfiGopMode, Value: 4
Key: VBoxInternal2/EfiGraphicsResolution, Value: 1440x900

Thanks!

I haven't personally had this issue, but it may be worth including the extra documentation for those that do.


PnL isnt being updated correctly on a resolved market

I have a losing position in a resolved market yet my PnL shows 0.00. I am long 30 of "yes" at .25....The market is Resolved as "No"....My realized PnL is showing 0.00

there was an existing bid on that book for 10 yes at .1...which i sold, then my Pnl updated, but still not correct
shouldnt my unrealized be included in realized since this market is resolved

Also noticing the unrealized calculation is being done off the last trade price, which it shouldnt.....it should be based (in this example off 0), since the market is resolved

We'll need to add losing positions to user's realized P/L

Still doesnt appear to be working....
realized doesnt seem to be working....I was short the over, 100 at .50 and the Over was the winning outcome ( I should have a negative realized)

still off

Still not working....
Here is my starting balances in a resolved market (look at my 30-day starting balance) - The winning outcome for the market is "No"

I am now buying 10 shares of outcome "No" at .31

Expected behavior is my 30day P/L should increase (Since I am buying is at .31 and it is resolved at 1.0)
except my 30day decreases

fixed - closing


serde(skip_serializing_if=...) is not annotated as optional (?) in TypeScript definition

[dependencies]
serde = { version = "1.0.216", features = ["derive"] }
serde_json = "1.0.133"
specta = { version = "2.0.0-rc.20", features = ["derive"]}
specta-typescript = { version = "0.0.7" }

fn is_false(b: &bool) -> bool { !*b }

#[derive(serde::Serialize, specta::Type)]
struct MyStruct {
    #[serde(skip_serializing_if = "is_false")]
    flag: bool,
}

fn main() {
    println!("{}", specta_typescript::export::<MyStruct>(&specta_typescript::Typescript::new()).unwrap());
    println!("{}", serde_json::to_string(&MyStruct { flag: false }).unwrap());
}

I'm getting this:
export type MyStruct = { flag: boolean }
{}

Expected:
export type MyStruct = { flag?: boolean }
{}

Duplicate of #233 and definitely a great idea!
Happy for a PR if you wanted to give it a shot!

The most difficult part of this is that the types from serialize and deserialize become different. Specta currently doesn't have a way to express that and long term we are going to need to have that but a stop gap solution would be to do the most restrictive of the two.


Initial draft on slow task execution

Description
Initial draft on slow task execution
Issues Resolved
#985
Check List

[ ] New functionality includes testing.

[ ] All tests pass

[ ] New functionality has been documented.

[ ] New functionality has javadoc added

[x] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.
Signed-off-by: Bukhtawar Khan<EMAIL_ADDRESS>

@Bukhtawar what shall we do with this?

I'll find sometime to wrap this up. Sorry for the delay.

@Bukhtawar : Are you still working on this ?

@Bukhtawar : Are you still working on this ?
Please let us know if any help is needed. This is pending for a very long time, and would like to bring this to a closure.

@Bukhtawar Any updates on this?

@Bukhtawar Poke on this...

Sorry folks, I will get to this in a couple of weeks.

@Bukhtawar How goes?  Is this still an active PR for you?
Thanks!

Resolving this for now. Will reopen when I get back to it


Add kubernetes-dashboard repository.

@desaintmartin The Artifact Hub is another place you can list your repos. To do that, you login (or create an account), create an organization, and list your repository. You can link it to a user or organization.


[$1000] Unnecessary space between the TopBar and profile image, and profile image and share code button too.

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

Open any chat
Click on profile icon in the TopBar
Take note of the spacing between TopBar and profile image/profile image and share code button
Reply to a message in a thread
Click on the thread profile icon in the TopBar
Note that spacing is now greater between TopBar and profile image/profile image and share code button

Expected Result:
There should be same space and alignment compare to other profile information page have.
Actual Result:
There is too much Unnecessary space compare to other profile information page have.
Workaround:
Can the user still use Expensify without this being fixed? Have you informed them of the workaround?
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android / native
[ ] Android / Chrome
[ ] iOS / native
[ ] iOS / Safari
[x] MacOS / Chrome / Safari
[ ] MacOS / Desktop

Version Number: 1.3.18-1
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/43996225/d61ddb69-0bf9-46b8-9f84-9667048c19ac

Expensify/Expensify Issue URL:
Issue reported by: @niravkakadiya25
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1684841019052619
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~0128a63176752fccad
Upwork Job ID:<PHONE_NUMBER>656521216
Last Price Increase: 2023-05-26

Reviewing

@aimane-chnaif hey! looks like we had an early bird proposal here: https://github.com/Expensify/App/issues/19627#issuecomment-1563526318 lmk what you think!

Okay! Shawn is OOO til Monday but let's have @bondydaa at least confirm as well in the interim. :)

👍 yep seems like a solid proposal and agree we should loop in Shawn here.
Noting for fairness since it's later on a Friday that is also a holiday week for the US that I think we start counting on Monday May 29 for the speed bonus but I'll assign for now.

Offers sent to @aimane-chnaif @dhairyasenjaliya @niravkakadiya25

Accepted


[TEST][FLAKY] test_quantize_pass

http://ci.tvm.ai:8080/blue/rest/organizations/jenkins/pipelines/tvm/branches/PR-2546/runs/18/nodes/36/log/?start=0
cc @ZihengJiang , please fix help this

This is also blocking the #2546 PR.

I will try to fix this. Let's move the test case for now

FYI, I checked out the docker image and narrowed down to the following 3 files:
TVM_FFI=cython python -m nose -v tests/python/relay/test_ir_text_printer.py tests/python/relay/test_op_level5.py tests/python/relay/test_pass_quantize.py

http://ci.tvm.ai:8080/blue/rest/organizations/jenkins/pipelines/tvm/branches/PR-3362/runs/1/nodes/36/log/?start=0
This flaky test happens again

Fixed in #3362


LibWeb: Add PopOverInvokerElement and use it in HTMLButtonElement

The popoverTargetElement seems to be one of the only cases of a reflected Element? attribute in the HTML spec, so I had to implement code generation for that first.
Buttons can't actually toggle popovers yet because showing/hiding popovers is not implemented yet,
but this gets us one step closer.

Thanks for the review, I've pushed the changes

The popoverTargetElement seems to be one of the only cases of a reflected Element? attribute in the HTML spec, so I had to implement code generation for that first.

There's some aria properties that need to reflect elements too so this work will be useful in future.


update to latest coffeescript

This adds support for es2015 module syntax http://coffeescript.org/#modules

I changed coffeescript to use a ^ instead of a ~ to reduce the need for PRs updating the coffeescript version.

That's great!
I'd prefer ~ though -- I don't think CoffeeScript follows semver.

No problem I switched it back to ~

Thanks! Released in v0.7.0.


pub on crates.io

Just found this wonderful repo, do you have any plan to publish this on crates.io in the future?

Yep, and I reserved name already. Want to finish my app first, so this crate will be really battle tested in big app.
By the way, how did you find cidre?

Oh I was looking for a ScrennCaptureKit binding and first find screencaptuekit-rs. But it has some problem after upgrade to MacOS 15, then I find this one mentioned in the issue.

The best way to achieve stability is through actual usage. Other crates that depend on cidre cannot be published because crates cannot rely on unpublished ones. A beta version on crates.io would be really useful!


Fix API calls not working by updating request headers

Can you test if this fixes it? I don't have the setup to test HASS Components. I tried to make the custom component use my fork by editing the manifest.json with
  "requirements": [
    "git+https://github.com/devgary/frigidaire.git@main#frigidaire"
  ],

as described here but it doesnt work.

I tested in Postman but got the same 401 -- "message: Unauthorized".
Here is my Postman setup - maybe it's wrong?
POST https://api.latam.ecp.electrolux.com/authentication/authenticate
Headers:
session_token:
x-ibm-client-id:Gsdwexj38r1sXSXIPVdxj4DGoU5ZoaI6aW6ZckBI
user-agent:Frigidaire/81 CFNetwork/1206 Darwin/20.1.0
content-type:application/json
accept:*/*
accept-language:en-us
authorization:Basic Gsdwexj38r1sXSXIPVdxj4DGoU5ZoaI6aW6ZckBI

Body:
{
    "username"<EMAIL_ADDRESS>    "password": "mypassword",
    "deviceId": "mycustomdeviceid",
    "brand": "Frigidaire",
    "country": "US"
}

I guess the POST url needs to be https://api.us.ecp.electrolux.com/authentication/authenticate. I changed that locally on my end since I am in Canada but forgot to include that in the PR. Also you need the header x-api-key which should be set to the same as x-ibm-client-id

works!
{
    "status": "OK",
    "code": "ECP0000",
    "message": "success",
    "data": {
        "sessionKey": "redacted"
    }
}

We really need a way to specify our region per install. Can we abstract that value to a variable like username or password?

Closes #17

Tried to make the changes but file permissions don't let me. I tried to make the changes to the Frigidaire.js file. I'm not a coder but I can copy and paste with the best of them. Was wondering if anyone could update the original plugin or create a new one with the changes.

@pman193 there is no JS files in this repo. Could you clarify what your request here is?

Hey. I was referring to the original Homebridge Frigidaire plugin. I was using your finds to edit the frigidaire.js plugin. The new updated Frigidaire app broke the plugin.

@pman193 the PR I opened should work for the homebridge plugin... maybe. if your tests didn't work with the changes I made please comment on that PR and request changes. It's tricky with dependencies - your plugin might be using a cached version or overwriting when you restart. Let's take the convo over there: https://github.com/karlg100/frigidaire/pull/12


Static members of an interface can also be re-implemented

in this section:

"To implement an interface member, the corresponding member of the implementing class must be public, non-static, and have the same name and signature as the interface member."

but I can implement an static member in an interface and re-implement it in a class.
public  is also not mandatory.
Example:

    interface IZ
    {
        static private string _name = "";
        public static string Name(string name)
        {
            _name = name;
            return _name;
        }
    }

    class StaticReImp : IZ
    {
        private static string _name = "";
        public static string Name(string name)
        {
            _name = name + " <<<static member can be reimplement>>>";
            return _name;
        }
    }

I ran it successfully on C#10 - .NET 7.
thanks in advance.

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

ID: d9fd340a-0f74-8602-28a1-9569296a5951
Version Independent ID: 1f0a9a2b-6495-370d-620f-a6dabec7df3b
Content: Interfaces - define behavior for multiple types
Content Source: docs/csharp/fundamentals/types/interfaces.md
Product: dotnet-csharp
Technology: csharp-fundamentals
GitHub Login: @BillWagner
Microsoft Alias: wiwagn

thanks @BillWagner
but i think it is better to use the new keyword for defining a new member ( To be in consistency with non-static members)
(using  new for declaring StaticReImp.Name)
both your code and with new one have same result, but the version declared with new keyword is in more consistency with  non-static members, IMO.
/*rest of your code*/
class StaticReImp : IZ
{
    //rest of members
    new public static string Name(string name)
    {
         //body
    }
}
//...//

but i think it is better to use the new keyword for defining a new member ( To be in consistency with non-static members)
(using new for declaring StaticReImp.Name)

@BSeyfi The new modifier isn't required when a derived class creates a static method with the same signature as a static method in the base class. The behavior for static methods in interfaces is consistent with that behavior. If you want to request a new language feature to require the new modifier, you should start a discussion for that on the dotnet/csharplang repository.


Instruction 7.

What command line editor I should use? And how to decompile or edit the file. Be descripting
Thnks

It's already compiled and ready to run. Just click the download zip link in the readme.

Or are you asking about how to make a Windows shortcut?

Step 7 just refers to making a standard Windows shortcut (right-click, create shortcut).


updateRoboVMXML strips 3rd party libraries from robovm.xml

I'm using libGDX 1.5.6 and RoboVM 1.1.0 and Android Studio.
If you have 3rd party .a libraries (with frameworks it's ok) defined in the robovm.xml file such as:
<libs>
    <lib>build/libs/ios/libgdx.a</lib>
    <lib>build/libs/ios/libObjectAL.a</lib>
    <!-- Flurry Version 5.4.0 -->
    <lib>libs/libflurry.a</lib>
    <!-- AdMob -->
     <lib>libs/libadmob.a</lib>
  </libs>

They get stripped when building the project and then runtime execution fails because of missing dependencies. This is due to "build" task depending on "updateRoboVMXML" which doesn't keep the non libGDX native libraries and also, it strips all the comments from the file.
This is the output of running updateRoboVMXML task:
<libs>
    <lib>build/libs/ios/libgdx.a</lib>
    <lib>build/libs/ios/libObjectAL.a</lib>
  </libs>

As a workaround you can comment out the following line not to run the task automatically every time it builds.
// build.dependsOn updateRoboVMXML

The updateRoboVMXML is a non modified one as generated by the Setup Gradle UI.
// Updates a robovm.xml file.
task updateRoboVMXML << {
 def xml = file('robovm.xml')

 if (!xml.exists()) {
   return
 }

  // Find all native (*.a) libraries beneath libs
  def libtree = fileTree(dir: 'build/libs', include: '**/*.a')

  def config = new groovy.util.XmlParser().parse(xml)
  config.libs.each {libs ->
      libs.children().clear()
      libtree.each { File file ->
          libs.appendNode('lib', 'build/libs/ios/' + file.getName())
      }
  }

  def writer = new FileWriter(xml)
  def printer = new XmlNodePrinter(new PrintWriter(writer))
  printer.setPreserveWhitespace true
  printer.print(config)
}

It's hard to believe that this is the default behaviour as I'm sure other people are building iOS with Gradle and have 3rd party .a dependencies what makes me think there may be some misconfiguration on my side but my configuration is pretty standard.

This is the right behaviour, the LibGDX natives are the only ones that need to be manually added to the robovm.xml by us in that script.  If you are using third party libraries, you use bindings, and RoboVM knows how to deal with those, I beileve they merge the xmls from the bindings with the 'master' xml.  @badlogic will have to confirm that.
I guess you are not using a binding?  If not, create one?

We should make libGDX use the bindings mechanism. i need to rewrite the
robovm backend build for that.
On Apr 27, 2015 4:26 PM, "Tomski"<EMAIL_ADDRESS>wrote:

This is the right behaviour, the LibGDX natives are the only ones that
need to be manually added to the robovm.xml by us in that script. If you
are using third party libraries, you use bindings, and RoboVM knows how to
deal with those, I beileve they merge the xmls from the bindings with the
'master' xml. @badlogic https://github.com/badlogic will have to
confirm that.
I guess you are not using a binding? If not, create one?
—
Reply to this email directly or view it on GitHub
https://github.com/libgdx/libgdx/issues/3063#issuecomment-96673978.

@Tom-Ski I was writing a longer answer but @badlogic has been faster :). I understand the issue applies and we can use the workaround in the meantime. Is that correct?

yes, and we should open an issue for fixing the way we bundle our iOS
natives as well as how we defi e the frameworks we need.
On Apr 27, 2015 5:21 PM, "Oscar Bigu"<EMAIL_ADDRESS>wrote:

@Tom-Ski https://github.com/Tom-Ski I was writing a longer answer but
@badlogic https://github.com/badlogic has been faster :). I understand
the issue applies and we can use the workaround in the meantime. Is that
correct?
—
Reply to this email directly or view it on GitHub
https://github.com/libgdx/libgdx/issues/3063#issuecomment-96702038.

Sounds fun.

@badlogic Was this resolved with the 1.6.1 release?

Aye


Update easyswoole,make easy_swoole can be started at system up

make easy_swoole can be started by systemctl and be enable at systemctl started.
enable easy_swoole at system started document : https://blog.csdn.net/zhezhebie/article/details/106758330

你这样的方式没有考虑cli下的单元测试情况


#2181- Fix inconsistencies in font in Greek Translation

What does this pull request aim to achieve? 💯
Addresses issue with special glyphs appearing inconsistently when viewing the site in a different language due to not having the correct font weight imported. The problem, although similar to the one fixed by this PR, was being caused by a different reason as fixed by bellow descripition:

Adds sans-serif fallback to fix inconsistencies in font in Greek Translation

This PR resolves #2181
Please be concise and link any related issue(s):

[x] I have checked that no one else is working on similar changes.
[x] I have read the latest README and understand the development workflow.
[x] The name of this branch is: feature/<branch_name> for a regular feature, hotfix/<branch_name> for a hotfix, and service/<branch_name> for a microservice, where <branch_name> briefly describes the issue(s) resolved and is prefixed with the issue number(s) (e.g. 1127-1130-update-git-branching-model). The branch is created in a cloned version of this repo, not a forked repo.
[x] This branch is rebased/merged with the latest staging (or the latest production if it is a hotfix).
[x] There are no merge conflicts.
[x] There are no console warnings and errors.
[x] On the right hand side of this PR, I have linked the appropriate issue(s) under "Issues" and added a project progress under "Projects".
[x] The title describes the issue(s) being addressed using format: <issue_numbers> - <brief_issue_description> (e.g. #1127/#1130 - Update Git Branching Model)

Hi @doheekim93!
Sorry I missed those fonts still looking different on the Help Board. The reason the fix didn't apply to them is that they are not using the font definition in theme.js. They're using css rules in their component files, which still lack the fallback font fix that i've added in theme.js. I have fixed some of them already and should fix the rest of them asap.
Thank you!

Hi @doheekim93!
Sorry I missed those fonts still looking different on the Help Board. The reason the fix didn't apply to them is that they are not using the font definition in theme.js. They're using css rules in their component files, which still lack the fallback font fix that i've added in theme.js. I have fixed some of them already and should fix the rest of them asap.
Thank you!

@emanuelquerty
Is this issue updated and ready for review. Thanks

Hi @rabbi08!
Yes the issue is updated and ready for review. I have fixed the Help Board that was pointed out by @doheekim93!
So everything should be good for review!


Adds AfterError callback hook

[x] Do only one thing
[x] Non breaking API changes
[x] Tested

What did this pull request do?
This pull request adds an new callback hook: AfterError that should run if any other main callback returns an error.
Currently, AfterXYZ hooks like AfterCreate, AfterSave and AfterUpdate doesn't get executed when an error is found, this leads to some unnecessary (but not always a problem) levels of code coupling between applications and errors returned by gorm.
User Case Description
There are many possible use cases, but mainly:

Use AfterError hooks to translate/wrap gorm and database errors to application domain errors, decoupling other application layers from duty of knowing external errors.
Use AfterError to handle specific table-wise errors, like UniqueIndex errors to redirect application flow

i'm looking over these test failures

Doesn't seem necessary for me.


Make React available as a global object on the website

Sometimes the user wants to experiment with the React API in console when browsing the docs. Since the website already loads React, it’d be nice to also make it a global variable.

@glixlur , I didn't get your point. Why the developer will try to run React by the console?
For libraries like lodash (https://lodash.com/docs/4.17.10), it makes sense IMHO. However, for React, I can not see the benefit.

I agree that there isn't much you can do with a global React variable in the console. You can try http://jscomplete.com/repl for a quick React scratchpad, that's what I use to test out various things.


fix(electric): Fix the {:error, :relation_missing} error that regularly causes E2E tests to fail on CI

At least with this change in place, I can no longer reproduce the error. Whereas before it would take me 2-3 runs to see it happen.
FIxes VAX-980.

@magnetised Nope, still happening. This is from a recent CI run on main - https://github.com/electric-sql/electric/actions/runs/6405168943/job/17387182502.


No DSYM file when export option is enterprise

I have the following gym action:
    # Build the app     gym(       scheme: "#{ENV['FL_SCHEME']}",       configuration: "#{ENV['FL_CONFIGURATION']}",       export_method: "#{ENV['FL_EXPORT_METHOD']}",       output_directory: ipa_directory,       output_name: ipa_name,       codesigning_identity: "#{ENV['FL_CODESIGNING_IDENTITY']}",       xcargs: "PROVISIONING_PROFILE_SPECIFIER='#{ENV['FL_PROVISIONING_PROFILE_NAME']}'",       export_options: {       provisioningProfiles: {             "#{ENV['FL_APP_IDENTIFIER']}" => "#{ENV['FL_PROVISIONING_PROFILE_NAME']}"           }         }     )
When I use as export method app-store or ad-hoc i got the DSYM file in the same directory as the IPA is located. When I use "enterprise" as export method no dsym file is there?
Is it possible to get the DSYM file for other export mehtods than app-store and ad-hoc?

I`ve found the issue. I need to add "DWARF with dSYM File" within the "Debug information Format" option (Build settings)


installation: fix SQLAlchemy-Utils version

The master branch have a problem with a version conflict:
If you do:

pip install -e . --upgrade
python setup.py test

It returns:

writing manifest file 'invenio.egg-info/SOURCES.txt'
running build_ext
Traceback (most recent call last):
  File "setup.py", line 352, in <module>
    'install_lib': _install_lib,
  File "/usr/lib/python2.7/distutils/core.py", line 151, in setup
    dist.run_commands()
  File "/usr/lib/python2.7/distutils/dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
    cmd_obj.run()
  File "/home/vagrant/.virtualenvs/invenio2/local/lib/python2.7/site-packages/setuptools/command/test.py", line 142, in run
    self.with_project_on_sys_path(self.run_tests)
  File "/home/vagrant/.virtualenvs/invenio2/local/lib/python2.7/site-packages/setuptools/command/test.py", line 121, in with_project_on_sys_path
    require('%s==%s' % (ei_cmd.egg_name, ei_cmd.egg_version))
  File "/home/vagrant/.virtualenvs/invenio2/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 940, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/home/vagrant/.virtualenvs/invenio2/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 832, in resolve
    raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.ContextualVersionConflict: (SQLAlchemy-Utils 0.29.9 (/home/vagrant/.virtualenvs/invenio2/lib/python2.7/site-packages), Requirement.parse('SQLAlchemy-Utils>=0.30.0'), set(['wtforms-alchemy']))

I also got this error with version 2.0.2

@danmichaelo can you downgrade wtforms-alchemy? Please create separate issue for maint-2.0 where we can discuss it. Thanks

Thanks, @jirikuncar , seems like it was fixed in 83a9ba90 by requiring wtforms-alchemy<0.13.1 , so the main-2.0 branch is fine (I just tested). Just the 2.0.2 release is not. Is a new issue still needed then?

@danmichaelo if it's already fixed in maint-2.0 then it's not necessary. We will release 2.0.3 in upcoming days.