How to change workspace/monitor assignment when monitor configuration changes?

On my work laptop, I commonly change between one of three display configurations:

Office (laptop and one large external monitor)
Home office (laptop closed, two large external monitors)
Coffee shop (laptop only)

What I would like to do is assign windows to workspaces (via on-window-detected), and then assign workspaces to monitors. So something like workspace-to-monitor-force-assignment seems like what I want, but I need the workspace<->monitor mapping to change dynamically based on which of these display configurations is active.
Is there currently a way to do this with AeroSpace? I previously had a working Yabai config that did this, but I can't use it due to my work laptop not allowing disabling SIP.
If this isn't currently supported, here is an idea of how it could work:
If aerospace move-workspace-to-monitor accepted identifiers for which workspace to move to which monitor, rather than relying solely on the current focus state, it would be easy to write a organize-workspaces.sh script. Something like this:

`organize-workspaces.sh`
#!/bin/bash

# These were obtained by plugging in the appropriate
# monitors and running `aerospace list-monitors | pbcopy`
LAPTOP_MODE='1 | Built-in Retina Display'
HOME_OFFICE_MODE='1 | DELL U2720Q
2 | DELL S2721DGF'
OFFICE_MODE='1 | Built-in Retina Display
2 | DELL U2720Q'

CURRENT_MODE="$(aerospace list-monitors)"

case $CURRENT_MODE in

$LAPTOP_MODE)
    # Don't need to do anything here because everything should auto-move to the only existing display
    ;;

$HOME_OFFICE_MODE)
    aerospace move-workspace-to-monitor --workspace "code" --monitor "DELL U2720Q"
    aerospace move-workspace-to-monitor --workspace "term" --monitor "DELL U2720Q"
    aerospace move-workspace-to-monitor --workspace "slack" --monitor "DELL S2721DGF"
    aerospace move-workspace-to-monitor --workspace "browse" --monitor "DELL S2721DGF"
    ;;

$OFFICE_MODE)
    aerospace move-workspace-to-monitor --workspace "code" --monitor "DELL U2720Q"
    aerospace move-workspace-to-monitor --workspace "term" --monitor "DELL U2720Q"
    aerospace move-workspace-to-monitor --workspace "slack" --monitor "Built-in Retina Display"
    aerospace move-workspace-to-monitor --workspace "browse" --monitor "Built-in Retina Display"
    ;;
esac

`aerospace.toml`
[[on-window-detected]]
check-further-callbacks = true
run = 'layout floating'

[[on-window-detected]]
if.app-id = 'com.microsoft.VSCode'
run = ['move-node-to-workspace code']

[[on-window-detected]]
if.app-id = 'com.github.wez.wezterm'
run = ['move-node-to-workspace term']

[[on-window-detected]]
if.app-id = 'com.google.Chrome'
run = ['move-node-to-workspace browse']

[[on-window-detected]]
if.app-id = 'com.tinyspeck.slackmacgap'
run = ['move-node-to-workspace slack']

[[on-window-detected]]
if.app-id = 'us.zoom.xos'
run = ['move-node-to-workspace zoom']

[[on-window-detected]]
if.app-id = 'org.mozilla.firefoxdeveloperedition'
run = ['move-node-to-workspace fun']

[[on-window-detected]]
if.app-id = 'com.anytype.anytype'
run = ['move-node-to-workspace notes']

And then I'd just need to either manually run this script when changing displays, which isn't too annoying, or figure out some way to automatically trigger it.
Checklist

[x] I've searched for duplicates. My search queries were (please don't forget to search in closed issues too):

is:issue display change
is:issue monitor change
is:issue workspace-to-monitor-force-assignment

[x] I've read the documentation https://nikitabobko.github.io/AeroSpace/guide & https://nikitabobko.github.io/AeroSpace/commands

[x] I've searched in the documentation. My search queries were:

workspace-to-monitor-force-assignment
display
monitor

aerospace CLI client version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201
AeroSpace.app server version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201

(1) You can specify multiple patterns as an array in workspace-to-monitor-force-assignment. The first matching pattern will be used. If monitor is not presented, the pattern matches nothing. It's sufficient for some cases of different monitor configurations

If aerospace move-workspace-to-monitor accepted identifiers for which workspace to move to which monitor, rather than relying solely on the current focus state

(2) -> #186


Add Chicago CTA "L" Train Tracker App

Description
Just got a Tidbyt for the holidays and was very impressed by the range of transit apps provided and that the community has already built. I saw that there was not a Chicago specific app, but that there was a generic Transit app that was able to load Chicago train times. However, when comparing with my CTA Ventra app on my iPhone, I noticed that the train times on the Transit app didn't match the live data shown in the Ventra app. I was then inspired to create a Tidbyt app that uses live CTA Train Tracker data to accurately show live train arrival estimates.
This app presents a list of all CTA stops to choose from, retrieved from the City of Chicago "L" Stops API. When a station is chosen, the app will show the two soonest train arrivals to that station returned by the CTA's Train Tracker API. Things to consider:

Station selections will show all of the train lines that stop at that station in parentheses. The two soonest arrivals will be shown regardless of how many lines stop at that station.
The default station selected is the first station alphabetically returned from the "L" Stops API. That station is currently 18th (Pink Line).

There are two types of arrivals returned from the CTA's Train Tracker API: live and scheduled. By default, arrivals shown for the selected station should be live. However, if there are no live trains, the CTA's API will return scheduled arrivals. These are not necessarily accurate reflections of when trains will arrive, but are rather the schedule by which they are supposed to. Since live arrivals are generally accurate and scheduled arrivals are not, any scheduled arrival is marked with an "S" to the right of the estimated arrival time.
Screenshot
This is a screenshot of the CTA "L" Train Tracker app with the Paulina (Brown Line) station selected:

I have read the CLA Document and I hereby sign the CLA


Need examples for powershell functions

Hello,
Missing example for Powershell Functions.

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

ID: 0b24ff8d-a59e-01e0-205d-ac777f06bb7a
Version Independent ID: f2106a8a-28fe-ebdf-525e-1d93013778fa
Content: Azure Event Hubs bindings for Azure Functions
Content Source: articles/azure-functions/functions-bindings-event-hubs.md
Service: azure-functions
GitHub Login: @craigshoemaker
Microsoft Alias: cshoe

@artisticcheese Thank you for your feedback! We will review and update as appropriate.

Adding PowerShell examples to this article is part of a larger effort we are working toward adding PowerShell examples throughout the binding docs. I am going to #please-close this issue as the PowerShell support is being tracked internally.

Also F-Sharp examples would also be nice.


WebGL Support for Unity Apps

Support for WebGL.
Demo

@benmarten This is a PR on top of #12, so its own changes are quite small, just 2b54ca5 and
3c6a510.

Thanks, now since we merged #12. It seems there are some merge conflicts...
Maybe its worth to reopen a new PR, and do:
git pull
git checkout develop
git cherry-pick 2b54ca5
git cherry-pick 3c6a510

Replaced by #15.

@Claytonious can you close this PR as it is superseded by #15?


ERROR: failed to solve: process "/bin/sh -c poetry install" did not complete successfully: exit code: 1

I tried to set up gl-testing on my machine following this documentation https://blockstream.github.io/greenlight/tutorials/testing/. I always got stuck with the error below. I did not make any modifications. Any idea why this may be the case?
Steps to reproduce

Clone the github repository
Run make docker-image

Computer Specs

M2 MacBook Air
Docker 4.29.0

192.8   error: failed to run custom build command for `cln-grpc v0.1.8`
192.8
192.8   Caused by:
192.8     process didn't exit successfully: `/repo/target/release/build/cln-grpc-ef2f5f5edc573bda/build-script-build` (exit status: 101)
192.8     --- stdout
192.8     cargo:rerun-if-changed=proto/node.proto
192.8     cargo:rerun-if-changed=proto
192.8
192.8     --- stderr
192.8     thread 'main' panicked at /opt/cargo/registry/src/index.crates.io-6f17d22bba15001f/cln-grpc-0.1.8/build.rs:7:10:
192.8     called `Result::unwrap()` on an `Err` value: Custom { kind: Other, error: "protoc failed: rosetta error: failed to open elf at /lib64/ld-linux-x86-64.so.2\n " }

192.8     note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
192.8   warning: build failed, waiting for other jobs to finish...
192.8   💥 maturin failed
192.8     Caused by: Failed to build a native library through cargo
192.8     Caused by: Cargo build finished with "exit status: 101": `"cargo" "rustc" "--message-format" "json-render-diagnostics" "--manifest-path" "/repo/libs/gl-client-py/Cargo.toml" "--release" "--lib"`
192.8   Error: command ['maturin', 'pep517', 'build-wheel', '-i', '/tmp/tmpompj7ofu/.venv/bin/python', '--compatibility', 'off', '--editable'] returned non-zero exit status 1
192.8
192.8
192.8   at /tmp/poetry/venv/lib/python3.8/site-packages/poetry/installation/chef.py:164 in _prepare
192.8       160│
192.8       161│                 error = ChefBuildError("\n\n".join(message_parts))
192.8       162│
192.8       163│             if error is not None:
192.8     → 164│                 raise error from None
192.8       165│
192.8       166│             return path
192.8       167│
192.8       168│     def _prepare_sdist(self, archive: Path, destination: Path | None = None) -> Path:
192.8
192.8 Note: This error originates from the build backend, and is likely not a problem with poetry but with gl-client (0.1.11 /repo/libs/gl-client-py) not supporting PEP 517 builds. You can verify this by running 'pip wheel --no-cache-dir --use-pep517 --editable "/repo/libs/gl-client-py"'.
192.8
------
Dockerfile:274
--------------------
 272 |
 273 |     # Add the remaining repositories to the python-path
 274 | >>> RUN poetry install
 275 |     RUN chmod -R a+rw /tmp/venv
 276 |
--------------------

ERROR: failed to solve: process "/bin/sh -c poetry install" did not complete successfully: exit code: 1

View build details: docker-desktop://dashboard/build/desktop-linux/desktop-linux/ql3hsngo5lnht6va2vfdbnr8l
make: *** [docker-image] Error 1

I suspect the issue is that one of our dependencies does not support the M2 processor architecture.
We download a binary for protoc that can only be used on x86_64.
As a work-around you could try and use a version that is compiled for Mac M2.
Could you try to edit ./docker/gl-testing/Dockerfile in line 163. You replace the url to a binary that works on your machine.
I don't have a Mac so I can't test locally. Let me know if you need more details or help

Hm, that's very strange though, it talks about rosetta which is the CPU virtualization framework used to emulate x86 on arm64 and exists solely for Mac OS. This is inside of Docker however, which is an emulated intel linux machine iirc, so how can it end up trying to execute an intel binary inside the docker image, with the emulator on the host?
I'm confused tbh. But maybe it is actually emulating an arm64 linux machine? That would explain the mismatch, but not how the host emulator is involved.

@ErikDeSmedt Are you talking about the releases on this page https://github.com/protocolbuffers/protobuf/releases ?
What is in the Dockerfile seem to be pretty outdated compared to what I see on that page. https://github.com/protocolbuffers/protobuf/releases/download/v3.19.3/protoc-3.19.3-linux-x86_64.zip but I see v26.1 . Am I on the right page?
Anyway I changed the linux-x86_64 part to linux-aarch_64 . It's been running for more than 1200 secs at 54/56. So far it has not given the error (fingers crossed) but I don't see progress yet. I will let you know how it goes.
@cdecker I was also thinking the same. I don't have rosetta on my Mac. However, if the whole idea of using docker is to ensure that we don't have to install dependencies on our computer, then it's surprising to me that I would need to install rosetta. I've held off installing rosetta on my computer for a very long time so it will be a real bummer if I would need to install it before this can work.

@ErikDeSmedt @cdecker the command make docker-image completed successfully after I replaced https://github.com/protocolbuffers/protobuf/releases/download/v3.19.3/protoc-3.19.3-linux-x86_64.zip with https://github.com/protocolbuffers/protobuf/releases/download/v3.19.3/protoc-3.19.3-linux-aarch_64.zip . I went ahead to run

make docker-shell
exited the shell.
created my-first-test.py at the root of the repository gl-testing-tutorial with contents same as in the tutorial
executed make build-self after make docker-shell
Then I ran pytest -v -s my-first-test.py but got the error below.

Any idea why this is the case? Do I need to create a separate issue?

        The logs contain tailed stdout of the process. We look for each regex
        in `regexs`, starting from `logsearch_start` which normally is the
        position of the last found entry of a previous wait-for logs call.
        The ordering inside `regexs` doesn't matter.

        We fail if the timeout is exceeded or if the underlying process
        exits before all the `regexs` were found.

        Convenience function.  Connect to *address* (a 2-tuple ``(host,
        port)``) and return the socket object.  Passing the optional
        *timeout* parameter will set the timeout on the socket instance
        before attempting to connect.  If no *timeout* is supplied, the
        global default timeout setting returned by :func:`getdefaulttimeout`
        is used.  If *source_address* is set it must be a tuple of (host, port)
        for the socket to bind as a source address before making the connection.
        A host of '' or port 0 tells the OS to use the default.
        """

        host, port = address
        err = None
        for res in getaddrinfo(host, port, 0, SOCK_STREAM):
            af, socktype, proto, canonname, sa = res
            sock = None
            try:
                sock = socket(af, socktype, proto)
                if timeout is not _GLOBAL_DEFAULT_TIMEOUT:
                    sock.settimeout(timeout)
                if source_address:
                    sock.bind(source_address)
>               sock.connect(sa)
E               ConnectionRefusedError: [Errno 111] Connection refused

/usr/lib/python3.8/socket.py:796: ConnectionRefusedError
---------------------------------------- Captured log setup ----------------------------------------
DEBUG    root:utils.py:225 Starting 'bitcoind -datadir=/tmp/ltests-vbm295qu/test_invoice_payment_1/gl-testing -printtoconsole -server -logtimestamps -nolisten -txindex -nowallet -addresstype=bech32 -debug=mempool -debug=mempoolrej -debug=rpc -debug=validation'
DEBUG    root:utils.py:315 Waiting for ['Done loading'] in the logs
DEBUG    root:utils.py:285 Did not find 're.compile('Done loading')' in logs
DEBUG    root:utils.py:370 Calling stop with arguments ()
                                                                                100% ██████████
========================================= warnings summary =========================================
../tmp/venv/lib/python3.8/site-packages/cheroot/__init__.py:7
  /tmp/venv/lib/python3.8/site-packages/cheroot/__init__.py:7: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
    import pkg_resources

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
===================================== short test summary info ======================================
FAILED my-first-test.py::test_invoice_payment - ConnectionRefusedError: [Errno 111] Connection refused

Results (61.01s (0:01:01)):
       1 error

I have no experience building  on Mac.
However, I think you might be in for a rough ride. Currently we only
support x86_64.
The problem appears to be that bitcoind doesnt't start. You could try to
download a bitcoind that is suitable for your architecture and try again.
The bigger problem is that you will also need a wide range of Core
Lightning versions.  For those is no M2 version available and building them
yourself would be very tricky.
On Fri, Apr 19, 2024, 5:39 AM Issah Bin Mohammed @.***>
wrote:

@ErikDeSmedt https://github.com/ErikDeSmedt @cdecker
https://github.com/cdecker the command make docker-image completed
successfully after I replaced
https://github.com/protocolbuffers/protobuf/releases/download/v3.19.3/protoc-3.19.3-linux-x86_64.zip
with
https://github.com/protocolbuffers/protobuf/releases/download/v3.19.3/protoc-3.19.3-linux-aarch_64.zip
. I went ahead to run

make docker-shell
exited the shell.
created my-first-test.py at the root of the repository
gl-testing-tutorial with contents same as in the tutorial
https://blockstream.github.io/greenlight/tutorials/testing/
executed make build-self after make docker-shell
Then I ran pytest -v -s my-first-test.py but got the error below.

Any idea why this is the case? Do I need to create a separate issue?
―――――――――――――――――――――――――――――― ERROR at setup of test_invoice_payment ――――――――――――――――――――――――――――――
directory = PosixPath('/tmp/ltests-vbm295qu/test_invoice_payment_1/gl-testing')
teardown_checks = <pyln.testing.fixtures.TeardownErrors object at 0xffff836377c0>
@pytest.fixture
def bitcoind(directory, teardown_checks):
    chaind = network_daemons[env('TEST_NETWORK', 'regtest')]
    bitcoind = chaind(bitcoin_dir=directory)

    try:>           bitcoind.start()

/tmp/venv/lib/python3.8/site-packages/pyln/testing/fixtures.py:132:

/tmp/venv/lib/python3.8/site-packages/pyln/testing/utils.py:437: in start
self.wait_for_log("Done loading", timeout=TIMEOUT)
/tmp/venv/lib/python3.8/site-packages/pyln/testing/utils.py:347: in wait_for_log
return self.wait_for_logs([regex], timeout)

self = <pyln.testing.utils.BitcoinD object at 0xffff83637670>, regexs = ['Done loading']
timeout = 60
def wait_for_logs(self, regexs, timeout=TIMEOUT):
    """Look for `regexs` in the logs.        The logs contain tailed stdout of the process. We look for each regex        in `regexs`, starting from `logsearch_start` which normally is the        position of the last found entry of a previous wait-for logs call.        The ordering inside `regexs` doesn't matter.        We fail if the timeout is exceeded or if the underlying process        exits before all the `regexs` were found.        If timeout is None, no time-out is applied.        """
    logging.debug("Waiting for {} in the logs".format(regexs))
    exs = [re.compile(r) for r in regexs]
    start_time = time.time()
    while True:
        if self.logsearch_start >= len(self.logs):
            if not self.logs_catchup():
                time.sleep(0.25)

            if timeout is not None and time.time() > start_time + timeout:
                print("Time-out: can't find {} in logs".format(exs))
                for r in exs:
                    if self.is_in_log(r):
                        print("({} was previously in logs!)".format(r))>                   raise TimeoutError('Unable to find "{}" in logs.'.format(exs))

E                   TimeoutError: Unable to find "[re.compile('Done loading')]" in logs.
/tmp/venv/lib/python3.8/site-packages/pyln/testing/utils.py:328: TimeoutError
During handling of the above exception, another exception occurred:

  lambda: ihook(item=item, **kwds), when=when, reraise=reraise

)

/tmp/venv/lib/python3.8/site-packages/flaky/flaky_pytest_plugin.py:146:

/tmp/venv/lib/python3.8/site-packages/pyln/testing/fixtures.py:134: in bitcoind
bitcoind.stop()
/tmp/venv/lib/python3.8/site-packages/pyln/testing/utils.py:448: in stop
self.rpc.stop()
/tmp/venv/lib/python3.8/site-packages/pyln/testing/utils.py:374: in f
res = proxy._call(name, *args)
/tmp/venv/lib/python3.8/site-packages/bitcoin/rpc.py:244: in _call
self.__conn.request('POST', self.__url.path, postdata, headers)
/usr/lib/python3.8/http/client.py:1256: in request
self._send_request(method, url, body, headers, encode_chunked)
/usr/lib/python3.8/http/client.py:1302: in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
/usr/lib/python3.8/http/client.py:1251: in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
/usr/lib/python3.8/http/client.py:1011: in _send_output
self.send(msg)
/usr/lib/python3.8/http/client.py:951: in send
self.connect()
/usr/lib/python3.8/http/client.py:922: in connect
self.sock = self._create_connection(
/usr/lib/python3.8/socket.py:808: in create_connection
raise err

address = ('localhost', 45091), timeout = 30, source_address = None
def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT,
                      source_address=None):
    """Connect to *address* and return the socket object.        Convenience function.  Connect to *address* (a 2-tuple ``(host,        port)``) and return the socket object.  Passing the optional        *timeout* parameter will set the timeout on the socket instance        before attempting to connect.  If no *timeout* is supplied, the        global default timeout setting returned by :func:`getdefaulttimeout`        is used.  If *source_address* is set it must be a tuple of (host, port)        for the socket to bind as a source address before making the connection.        A host of '' or port 0 tells the OS to use the default.        """

    host, port = address
    err = None
    for res in getaddrinfo(host, port, 0, SOCK_STREAM):
        af, socktype, proto, canonname, sa = res
        sock = None
        try:
            sock = socket(af, socktype, proto)
            if timeout is not _GLOBAL_DEFAULT_TIMEOUT:
                sock.settimeout(timeout)
            if source_address:
                sock.bind(source_address)>               sock.connect(sa)

E               ConnectionRefusedError: [Errno 111] Connection refused
/usr/lib/python3.8/socket.py:796: ConnectionRefusedError
---------------------------------------- Captured log setup ----------------------------------------
DEBUG    root:utils.py:225 Starting 'bitcoind -datadir=/tmp/ltests-vbm295qu/test_invoice_payment_1/gl-testing -printtoconsole -server -logtimestamps -nolisten -txindex -nowallet -addresstype=bech32 -debug=mempool -debug=mempoolrej -debug=rpc -debug=validation'
DEBUG    root:utils.py:315 Waiting for ['Done loading'] in the logs
DEBUG    root:utils.py:285 Did not find 're.compile('Done loading')' in logs
DEBUG    root:utils.py:370 Calling stop with arguments ()
100% ██████████
========================================= warnings summary =========================================
../tmp/venv/lib/python3.8/site-packages/cheroot/init.py:7
/tmp/venv/lib/python3.8/site-packages/cheroot/init.py:7: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
import pkg_resources
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
===================================== short test summary info ======================================
FAILED my-first-test.py::test_invoice_payment - ConnectionRefusedError: [Errno 111] Connection refused
Results (61.01s (0:01:01)):
1 error
—
Reply to this email directly, view it on GitHub
https://github.com/Blockstream/greenlight/issues/411#issuecomment-2065690555,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AATJLK6LPLH2ANPXW5TCEUTY6CGXJAVCNFSM6AAAAABGLYXHO2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDANRVGY4TANJVGU
.
You are receiving this because you were mentioned.Message ID:
@.***>

Alright. Thank you. I will see if I can hack my way around it. Whatever be the case, I will let you know. I will keep this issue opened in case we reach some solutions somehow.

I have no experience building on Mac. However, I think you might be in for a rough ride. Currently we only support x86_64. The problem appears to be that bitcoind doesnt't start. You could try to download a bitcoind that is suitable for your architecture and try again. The bigger problem is that you will also need a wide range of Core Lightning versions. For those is no M2 version available and building them yourself would be very tricky.

Closing this one as it is more related to the dev setup being messed up between the various architectures (thanks Rosetta) and not with the software in this repo.


Kulve Tarot Health (HR difficulty)

Suggestion: display instead of health - the state of the horns of Kulve Tarot. Since her health does not matter (she is immortal), but the state of the horns does matter.
(Actual only on HR complexity)

Hmm, I'll give that a look


Enhancement: Reference phpunit.xsd as installed with composer

This PR

[x] references phpunit.xsd in phpunit.xml as installed with composer

💁♂ This helps with auto-completion.

Thanks 👍

Thank you, @iluuu1994!


Use crossOrigin and native renderer instead of canvg

Just kidding, I get random blank images from this.


Unassigning through the interactive command ‘jira issue assign’ doesn’t work

jira issue assign ‘issue#’ doesn’t work when I choose No-one (unassign). I get a “internal server error” with code 500. However if I use jira issue assign ‘issue#’ x, it works.
Please provide following details

JiraCLI Version:1.0.0-beta.2

Are you using Jira cloud or on-premise jira server? Also mention the version for on-premise installation.On-premise jira server, don’t know how to check it’s version.

What operating system are you using? Also mention version.Centos6

What terminal are you using? Also mention version.Termius for iOS 4.11.4

To Reproduce
Steps to reproduce the behavior:
See description.
Expected behavior
That choosing “No-one” behaves the same way as using the non interactive version with the x arg.

Should be fixed with #404. Thank you for reporting the issue!


fatal error: GL/glu.h: No such file or directory     #include <GL/glu.h>

Before opening a new issue, we wanted to provide you with some useful suggestions (Click "Preview" above for a better view):

Consider checking out SDK examples.
Have you looked in our documentations?
Is you question a frequently asked one?
Try searching our GitHub Issues (open and closed) for a similar issue.

All users are welcomed to report bugs, ask questions, suggest or request enhancements and generally feel free to open new issue, even if they haven't followed any of the suggestions above :)

Required Info

Camera Model
435

Firmware Version
NA

Operating System & Version
Ubuntu 18.04

Kernel Version (Linux Only)
5.0.0-32-generic

Platform
PC

SDK Version
NA

Language
C

Segment
others

Issue installing Librealsense
*** fatal error: GL/glu.h: No such file or directory     #include <GL/glu.h>***
examples/software-device/CMakeFiles/rs-software-device.dir/build.make:62: recipe for target 'examples/software-device/CMakeFiles/rs-software-device.dir/rs-software-device.cpp.o' failed
make[2]: *** [examples/software-device/CMakeFiles/rs-software-device.dir/rs-software-device.cpp.o] Error 1
CMakeFiles/Makefile2:492: recipe for target 'examples/software-device/CMakeFiles/rs-software-device.dir/all' failed
make[1]: *** [examples/software-device/CMakeFiles/rs-software-device.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2

RajkiranVeldur hello, the include file <GL/glu.h> is part of libglu1-mesa-dev package  listed in  Ubuntu18 installation prerequisites :
sudo apt-get install libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev

Please verify that it was properly installed

Thank you. The issue is resolved. I had to reinstall: sudo apt-get install libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev

Thanks for confirmation, closing it now

RajkiranVeldur hello, the include file <GL/glu.h> is part of libglu1-mesa-dev package listed in Ubuntu18 installation prerequisites :
sudo apt-get install libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev

Please verify that it was properly installed

happened to me on ubuntu 20

For Fedora:
sudo yum install mesa-libGLU-devel
Source


need to remove background on stacked chart bar hover

@franklx
@yangkun
@rndmerle
@zur4ik

Steps to Reproduce

Expected Behavior
remove highlighted background color on hover
Actual Behavior
hover on bar in stacked chart background show
Screenshots

Reproduction Link

Did not follow issue template instructions

@brianlagunas your reply not helpful for me. please explain

Did not follow issue template instructions

with all due respect i even copied the code from the apexcharts site

here is solution
https://stackoverflow.com/questions/74863077/need-to-remove-sky-background-color-on-bar-hover-in-apexcharts


storing driver.Value type string into type *time.Time

Hello all,
I am trying to rebuild an application with the RETURNING clause introduced in version 3.35.
https://www.sqlite.org/lang_returning.html
However, I always get an error that it does not match the data types unsupported Scan, storing driver.Value type string into type *time.Time.
I have reproduced the whole thing in the following projects and would like you to have a look at it to tell me if it is a bug of mine or if the library can't handle it.
https://github.com/volker-raschek/go-sqlite3-time

SQLite3 (the C library) does not have a data type for date/time specifically. https://www.sqlite.org/datatype3.html#date_and_time_datatype
Sometimes this wrapper library is able to hide that particular fact, but only if you are directly selecting a column declared as DATE, DATETIME or TIMESTAMP. This behavior is not documented, and it has led to confusion multiple times due to its seeming inconsistency.
I don't know the specifics of how RETURNING has been implemented, but I would guess that returning a column doesn't support fetching its declared type. Whether this is a bug or intentional behavior on SQLite3's part is unclear.
For now, your best bet is to scan into a string, and then parse that into a time.Time. You can make a custom type that implements sql.Scanner to do so.

Seems this is a known issue that is unlikely to every be fixed. https://sqlite.org/forum/forumpost/725537a489a04d1e?t=h
@mattn Given this sort of issue seems to come up from time to time, it might be helpful to (1) add a typedef to this library that implements sql.Scanner and driver.Valuer in order to consistently convert between time.Time and a SQLite3-formatted string; and (2) add a flag to the DSN to disable the current automatic timestamp parsing logic when it is not expected or desired (e.g., #748).

I've only briefly looked at the source, but it appears to use time.RFC3339Nano, however I guess this code isn't used for scanning?  When I store timestamps they come out as 2021-12-01 22:59:36.05830699+00:00, which is not parsable as a time.RFC3339Nano (2006-01-02T15:04:05.999999999Z07:00).
This seems like a straightforward thing to resolve.  The serialization/deserialization of time.Time should be symmetrical, it's not clear why it currently isn't.

On the way into the database, it converts time.Time to a string using the format string "2006-01-02 15:04:05.999999999-07:00". I do not know why this particular format was chosen, but that is why you are getting "+00:00" instead of "Z". The reason for the conversion to string is that SQLite itself doesn't have a type for timestamps.
https://github.com/mattn/go-sqlite3/blob/85436841b33e86c07dce0fa2e88c31a97c96a22f/sqlite3.go#L1893
On the way out of the database, if the column type is date/datetime/timestamp, it will try parsing it with various format strings, the first of which is also "2006-01-02 15:04:05.999999999-07:00".
https://github.com/mattn/go-sqlite3/blob/85436841b33e86c07dce0fa2e88c31a97c96a22f/sqlite3.go#L2166-L2174
So it will be symmetrical, if the column in question has the proper type declaration.


Build integration with cake

completed, https://github.com/DynamicTranslator/DynamicTranslator/blob/dev/build.cake


[FormRecognizer] add content/receipt recognition live tests

Part of #7440.

How do we ensure the setup.spec.ts is executed first?

/azp run js - formrecognizer - tests

/azp run js - formrecognizer - tests

I will update release date to 4/22 in this PR.


fix: close not-found page when dismissing modal

Details
Pop to central navigator if not-found page is in the route stack when dismissing modal
Fixed Issues
$ https://github.com/Expensify/App/issues/27580
PROPOSAL: https://github.com/Expensify/App/issues/27580#issuecomment-1722275079
Tests

Open ND and login with any account
Open any report
[WEB AND DESKTOP] Open Settings -> Workspaces -> Any workspace -> Settings. Remove the last 's' of the URL and navigate to it. For desktop app, copy the URL of the not-found page, send it in the chat at step 2, and click the link
[WEB AND DESKTOP] Open search page by CMD + K
[WEB AND DESKTOP] Select the same report as in step 2
[WEB AND DESKTOP] Verify that the report is opened

[x] Verify that no errors appear in the JS console

Offline tests

Open ND and login with any account
Open any report
[WEB AND DESKTOP] Open Settings -> Workspaces -> Any workspace -> Settings. Remove the last 's' of the URL and navigate to it. For desktop app, copy the URL of the not-found page, send it in the chat at step 2, and click the link
[WEB AND DESKTOP] Open search page by CMD + K
[WEB AND DESKTOP] Select the same report as in step 2
[WEB AND DESKTOP] Verify that the report is opened

QA Steps

Open ND and login with any account
Open any report
[WEB AND DESKTOP] Open Settings -> Workspaces -> Any workspace -> Settings. Remove the last 's' of the URL and navigate to it. For desktop app, copy the URL of the not-found page, send it in the chat at step 2, and click the link
[WEB AND DESKTOP] Open search page by CMD + K
[WEB AND DESKTOP] Select the same report as in step 2
[WEB AND DESKTOP] Verify that the report is opened

[x] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] If we are not using the full Onyx data that we loaded, I've added the proper selector in order to ensure the component only re-renders when the data it is using changes
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: Native
https://github.com/Expensify/App/assets/126839717/c7e08ae2-45a4-4ea0-98ed-19b7728823df

Android: mWeb Chrome
https://github.com/Expensify/App/assets/126839717/0a5b2fe5-6f1c-4b23-a084-60e3773cd374

iOS: Native
https://github.com/Expensify/App/assets/126839717/98a849c1-5a32-4cf7-a141-3450955a82d7

iOS: mWeb Safari
https://github.com/Expensify/App/assets/126839717/6dd5334a-9bb0-42b9-a7a8-4031fdd5d3f7

MacOS: Chrome / Safari
https://github.com/Expensify/App/assets/126839717/217aef1d-4aed-4323-be60-c31c67766e93

MacOS: Desktop
https://github.com/Expensify/App/assets/126839717/550a91c4-d9ab-4af2-bb47-50ea96019a55

@fedirjh
Can you please review the PR?

@fedirjh
PR test steps and video for desktop was updated

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by https://github.com/joelbettner in version: 1.3.84-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/francoisl in version: 1.3.84-10 🚀

platform
result

🤖 android 🤖
skipped 🚫

🖥 desktop 🖥
skipped 🚫

🍎 iOS 🍎
skipped 🚫

🕸 web 🕸
skipped 🚫

🚀 Deployed to production by https://github.com/francoisl in version: 1.3.84-10 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅

🚀 Deployed to staging by https://github.com/joelbettner in version: 1.3.85-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/francoisl in version: 1.3.85-4 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅


Addition of Hover Effect on Buttons

Changes Proposed
Update Addition of Hover Effect on Buttons.

/label area/web-development

/area web-development

Thanks for opening your first Kubernetes website PR @anurag4499 !


pebble: command not found

I'm working with XUBUNTU 18.04 LTS. Installation seemed to work well (I was amazed by all the things happening on my screen!), but: 'pebble new-project yourprojectname' -> pebble command not found. So something must have gone wrong. I'm lost and ask for help.

Good afternoon, @kapiernix !
You tried the last version of the code, right?
I will now create my vagrant machien from scratch and check if I have any errors and write again.
I suggest you to do the same (from the repo folder: vagrant destroy and then vagrant up).

Ok I have just tried from scratch on my Windows 7 and Windows 10 pcs and I had zero issues:
Welcome in your Pebble Dev Vagrant Machine.

Have fun, happy hacking.

ubuntu@ubuntu-xenial:~$ pebble
usage: pebble [-h] [--version]
              {sdk,build,clean,install,logs,screenshot,insert-pin,delete-pin,emu
-accel,emu-app-config,emu-battery,emu-bt-connection,emu-compass,emu-control,emu-
tap,emu-time-format,emu-set-timeline-quick-view,emu-set-content-size,ping,login,
logout,repl,transcribe,data-logging,new-project,new-package,kill,wipe,package,an
alyze-size,convert-project,gdb}

Which kind of error do you get?
Whould it be possible for you to paste here the full log that you see when running vagrant up?
Worst case scenario if you have a remote desktop application I can connect and give a look, if you want.

Good morning, Itpitt!
Thanks for your quick answer. I made a fresh install yesterday, so I assume it was the last version of the code. I did what you suggested:
This is the log produced by the system itself:
ubuntu-xenial-16.04-cloudimg-console.log
This is the log from what I saw on the screen:
vagrant.log
My Internet connection should be ok.

Hi @kapiernix !
I've read your log and I cannot see anything peculiar.
It seems to me that this issue could be user-related.
Can you please check which users are available in your Vagrant machine?
If I remember right I've set everything for the "ubuntu" user.
It is strange to me that your vagrant ssh logs you in as vagrant user instead of ubuntu (on my pc works like that, as you can see in my pasted log above).

Dear Itpitt,
Ah... That did the trick!
sudo su -ubuntu cleared the screen and I got the following output:
Welcome in your Pebble Dev Vagrant Machine.

Have fun, happy hacking.

ubuntu@ubuntu-xenial:~$ pebble --version
Pebble Tool v4.5 (active SDK: v4.3)
ubuntu@ubuntu-xenial:~$

Thanks a lot for your support! I still have no idea what's going on in this box but it looks like I'm now ready to program my Pebble smartwatch.

Happy to read it, @kapiernix !
If the box content is obscure to you I suggest you to read the Vagrantfile.
Inside this file you can see - in the SCRIPT section - all the commands needed to install a working Pebble SDK Environment.
Maybe also part of that is a bit cryptic, I will put some comments in to better explain what is going on and change the code so that changing to ubuntu user will be automatic when you do a vagrant ssh.
Thanks for your feedback, it inspired me to make the provisioning script better and clearer.
Have fun and happy hacking :)


SQL Injection in search term

Because of the template string in the query search. Using this library may cause SQL injection. Any untrusted input should be parameterized and some characters may have to be escaped

https://github.com/ppetzold/nestjs-paginate/pull/442/files#r1081669412

:tada: This issue has been resolved in version 4.6.4 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Add pull request templates.

About issue-
Refer to the docs and add pull request templates to the Project.
Reference template

I would like to contribute as a participant of JWOC.

I would like to contribute as a participant of JWOC.

I would like to contribute as a participant of JWOC.

Sure, issues will start getting assigned from 21st Jan onwards. Till then get familiar with the project base and continue to experiment with it🙂

I would like to contribute as a participant of JWOC.

Sure, issues will start getting assigned from 21st Jan onwards. Till then get familiar with the project base and continue to experiment with it🙂

I'd like to contribute to this as a mentee of Jwoc. Please assign it to me.

I'd like to contribute to this as a mentee of Jwoc. Please assign it to me.

I would like to contribute to this issue as a mentee under JWOC.

I would like to contribute to this issue as a mentee under JWOC.

Can you work on this ASAP @pankajkumarbij ? I need a proper template to make it easy for me to review PRs and other people are also waiting to take up the issue..

Can you work on this ASAP @pankajkumarbij ? I need a proper template to make it easy for me to review PRs and other people are also waiting to take up the issue..

I will send a PR today.

I will send a PR today.

Solved via #49

Solved via #49


Feat: Add dark mode toggle button & dark mode for Feedback

Describe the feature
Currently, the feedback page of our website lags a dark theme, I would like to add the dark mode toggle button and dark theme for the page
Add ScreenShots

Record

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSOC'24 contributor
[X] I want to work on this issue

@Its-Aman-Yadav @Kalivarapubindusree Please assign me this issue


unskip and fix some passing tests

PyPy3.9 passes these tests, once the sys.getrefcount part is skipped. I am working on getting test_asyncgen to pass so grpcio work with PyPY, see pypy issue 3280 and pypy issue 3935

cool, pypy3.9 tests pass on CI.

The pure-python test_asyncgen.py passes pypy -m pytest test_asyncgen.py but runtests.py is failing. There are two out-of-bound indexes errors and five badly filled in return value failures

There are a number of failing tests in code like
ZERO = 0

async def gen():
    yield 123
    1 / ZERO

def test_last_yield(g):
    ai = g.__aiter__()
    an = ai.__anext__()
    try:
        next(an)          #  <---- this becomes __Pyx_PyIter_Next2()
    except StopIteration as ex:
        assert ex.args[1] == 123      # <- fails when not using CYTHON_USE_TYPE_SLOTS
    else:
        assert False, "no exception raised

I think the failure is due to a difference between PyIter_Next and tp_iternext(iterator) in __Pyx_PyIter_Next2. On the last iteration, PyIter_Next returns NULL while clearing the StopIteration error, but tp_iternext(iterator) does not clear the error. The StopIteration exception is regenerated, since NULL has been returned, but clearing the error removes the yield value from the exception, and so the args tuple is empty.

I think the failure is due to a difference between PyIter_Next and tp_iternext(iterator) in __Pyx_PyIter_Next2. On the last iteration, PyIter_Next returns NULL while clearing the StopIteration error, but tp_iternext(iterator) does not clear the error. The StopIteration exception is regenerated, since NULL has been returned, but clearing the error removes the yield value from the exception, and so the args tuple is empty.

So, you're saying that calling PyIter_Next() (when not using type slots) is wrong here, because it swallows the StopIteration exception? I don't think there is a way to use this protocol without either using type slots or calling PyIter_Next()…
Does PyPy fill the tp_iternext type slot?

Does PyPy fill the tp_iternext type slot?

Yes. I added a fix in 859a9a5 to use the type slot on PyPy, with a workaround for PyPy not having _PyObject_NextNotImplemented (I think the code intention there is to avoid calling _PyObject_NextNotImplemented since it knows what the outcome will be)

I related to the review comments. Still not resolved: using getter functions _PyEval_GetAsyncGenFinalizer and _PyEval_GetAsyncGenFirstiter rather than direct acess to the fields.
I had to reskip the test: there is too much missing in PyPy to support yield and exception handlers in coroutines.

CI is passing. I will revert using a nightly build in CI (commit fcf1695) once PyPy releases a version that supports _PyEval_GetAsyncGenFinalizer and _PyEval_GetAsyncGenFirstiter, which in turn are needed to support compilation of grpcio.

Thefunctions were removed from CPython in favour of sys.get_asyncgen_hooks(), which sounds rather annoying to call from C, but we could do that here.

That is actually what the PyPy implementation does. Would it be OK if I make the code path with the pypy-specific functions pypy-only?

close/reopen to trigger CI

Thanks!

As commented in pypy issue 3280

the above patch (mattip: commit 00113c355fa0619) on top of 0.29.35 allows GRPC_PYTHON_BUILD_WITH_CYTHON=1 pip install 'grpcio<1.43' --no-build-isolation to build and our rpc tests pass with this grpcio module.

Would it be OK to backport this to the 0.29.x branch?

Would it be OK to backport this to the 0.29.x branch?

Yes, that would be fine. The whole patch might not apply cleanly, but at least the test part is not strictly needed then.


Feature Requests!

Obviously no expectation that you do these but here are some requests!

Batch processing - Allow for loading in multiple books so that the app starts working on the next book immediately
Do not reset the UI on refresh - Right now if I mistakenly reload the web UI, it resets to the default screen (even though the tts is still working in the terminal). This means I can't download the file once it is done from the web UI (have to find it in the Docker files lol)
Ability to set a default output folder for the audiobooks (automatic downloading)

Thx!

it's done on the next version
todo indeed. I started to develop it but not happy from the result and retracted the modif. we should go deeper to find a good compromise.
it's done on the next version, output folder where all conversion go will be audiobooks.

Awesome! Another huge addition would be the ability to use the new F5-TTS model. It seems to have less hallucinations.

Good idea! 👍

We do plan on integrating other tts services into ebook2audiobook.
But it's being put on the back-end until we figure out a standardized way of integrating many different tts engines into ebook2audiobook

Best of luck!

About #2 though,
Are you not able to click the download audiobooks button in the GUI to load download links to all the generated audiobook files in the output folder?
Cause that button should be doing that which would technically solve the issue? 🤔

I can do that! But then how can I easily access the files there?

Okay that is awesome, I never thought about clicking that button 😅. Maybe those should load automatically or work like a drop down menu in the UI? Or maybe I should learn to read better lol

@scriptpony it's on the way also in the next version

Short answer: gradio is extremely restrictive in reloading anything in the gui.

Easiest is to just give the user a reload/update button at the moment lol

I'll look at renaming the button to make it more clear on what it does tho lol,

That would probs help

Perhaps renamed to
"View Completed Audiobooks" ? 🤔

or converted files folder

Awesome
Maybe "refresh outputs folder" or something like that to make it clear that it doesn't come up automatically.

actually "Show Converted AudioBooks" would probably be better

Show converted files or audiobooks would make most sense to me!

Changed to "Show Converted Files"
https://github.com/DrewThomasson/ebook2audiobookXTTS/commit/905cb2144c7daef806b6037d0335f620141bfe5e
:)

app.py is completely differente since the start of the PR, now run_gradio_interface() is in functions.py file and named web_interface(), so github completely mess up the conflict here.... :-\

After a lot of trial and error I was able to modify your code to get it working with F5-TTS!
I am running into issues getting it on Hugging Face (I am new to this) but here it is if you wanted to check it out:
https://drive.google.com/file/d/1tWWxoPX66JOoHcZVkf3idx9ZNpU28g9n/view?usp=sharing

👀

If you make a fork of it and then apply those changes to your fro

If you make a fork of this repo and then apply your changes it'll be easier for us to be able too see your changes you made to it
In the meantime were hard at work on a version 2.0 where the code base is heavily modified 😅
I'll look into your code tho to see how it preforms!
Well probs look into asking you for help in the future when adding it smoothly to ebook2audiobook v2.0

I'll give you a heads up on the functions we would need you to make once we get our v2.0 stuff finalized 😅
In the meantime Here is me testing out your code as a hugginface space
https://huggingface.co/spaces/drewThomasson/ebook2audiobook_F5-TTS

Awesome! Glad it works on hf. Fair warning the code is hot garbage chatGPT slop but it works so 🤷♂. I just wanted to get something working asap
Super slow on CPU btw, actually idk if it even works on CPU I didn't test that

I works well on CPU, fore sure much slower but ok. the feature 2. is developed on v2.0.0 but only in cas of crash on server side, not client. meaning that if the gradio client is losing the conection but the process is still running on server side so it's still not possible to reconnect gradio to the same process, and I'm not sure it's possible unless with a deep code dev.

NEXT VERSION!
https://github.com/jondana/eBook_to_Audiobook_with_F5-TTS/tree/main

Batch convert eBooks
Pull the cover image correctly and place it in mp3 "icon" slot (I was having trouble with your .m4b files stopping randomly in my audiobook player?) mp3 seems more stable
Updated inferencing for more natural phrasing with better pauses
UI improvements

I spent way too much time trying to improve the progress bar to show wav stitching but didn't work out
I also tried to make an estimated time to completion feature but also didn't work out (I feel like Gradio should have that feature built in?? total steps/seconds to complete each step)

don't waste too much your effort on the actual version, the next version is full code rebase and integrate what you did in the v2 version will be a lot of complications. better you wait the v2 then you can push a PR.

Agreed🫡😅

Updated the hugging face demo of ur code though in the meantime
https://huggingface.co/spaces/drewThomasson/ebook2audiobook_F5-TTS

Is point 3 already implemented?

Ability to set a default output folder for the audiobooks (automatic downloading)

@leet1994 yes, it's in ./lib/conf.py, change it to your own.

@quantumlump

DONE
DONE, but when a refresh is done, you have to restart the conversion, and it will resume automatically from the next good sentence.
DONE check ./lib/conf.py "audiobooks_dir" variable.
Be aware that the next git update conf.py will be modified so you will have to reset it again.


feat(neon-pixel-1): don't trigger animation for unchanged digits

This might not be what you were going for, so feel free to reject this PR :D
Anyway, I love this project of yours!

That's a much better look! Thanks!


[Release-1.30] - Bump containerd to v1.7.23

Backport fix for Bump containerd to v1.7.23

#11239
https://github.com/k3s-io/k3s/issues/11191

Validated on release-1.30 with commit 48a3b849

Single node

[2024-11-07T23:44:08.886Z] k3s version v1.30.6+k3s-48a3b849 (48a3b849)
[2024-11-07T23:44:08.886Z] go version go1.22.8
[2024-11-07T23:44:08.886Z]
[2024-11-07T23:44:11.412Z] Command:
[2024-11-07T23:44:11.412Z] kubectl get node -o yaml  --kubeconfig=/tmp/mdk3s130vb_kubeconfig  | grep containerd -A1
[2024-11-07T23:44:11.412Z] ---------------------
[2024-11-07T23:44:11.412Z] Assertion:
[2024-11-07T23:44:11.412Z] 1.7.23
[2024-11-07T23:44:11.412Z] ----------------------
[2024-11-07T23:44:11.412Z] Matched with result:
[2024-11-07T23:44:11.412Z] containerRuntimeVersion: containerd://1.7.23-k3s1
[2024-11-07T23:44:11.412Z]       kernelVersion: 6.8.0-1012-aws


Allow disabling external API calls

Issue submitter TODO list

[X] I've searched for an already existing issues here
[X] I'm running a supported version of the application which is listed here and the feature is not present there

Is your proposal related to a problem?
Currently the start up is delayed by 10 seconds and runs into an io.netty.handler.ssl.SslHandshakeTimeoutException when trying to call  api.github.com which fails due to the restriction of external calls from the cluster.
Describe the feature you're interested in
Please provide a configuration parameter that allows disabling all external API calls which should result in not querying the GitHub release info and potential other external API calls in the future.
This could be possible by disabling the instantiation here.
Describe alternatives you've considered
No response
Version you're running
56fa824
Additional context
I would be open to contributing this feature, if desired.

This can't affect startup time, as it's a non-blocking call and it's not executed upon a start

I inferred that it is called at startup from this comment.
Is there any other place api.github.com is called?
My feature request would still be the same.

Thanks, I've followed the call chain from your original message which had no blocking calls.
The new link, however, does that, as a combination of a @Scheduled annotation which will lead to a call performed right after the context initialization, plus a blocking call for a mono gives us exactly that.


Change IP of clients / separate keys into different files

Hello!  I'm setting this up on our AWS infra with an attempt to make the following enhancements over the "stock" configuration:
things that are now working:

split route traffic so only 10.100.X, 10.200.X goes over VPN, not full traffic
ability to query AWS side DNS for internal resources like private DNS and internal load balancers only for specific domains
OTP for users

things that still need to be done:

change IP of clients to they're not in the 192.168 range (worried about conflicting with home networks)
move key data out of the OVPN file into separate key/crt files for editing configs without spoiling keys

About the 192 address parts, on the current config there are 2 lines that mention 192:
route <IP_ADDRESS> <IP_ADDRESS>
server <IP_ADDRESS> <IP_ADDRESS>

Couple of quick questions - how do the 2 relate to eachother?  Since the 254 vs 255 thing, I don't know for sure if those are even related.  Any time I change either of them, I can get the clients to start having different IPs, but then the VPN breaks.  I assumed I could just change to something like:
route <IP_ADDRESS> <IP_ADDRESS>
server <IP_ADDRESS> <IP_ADDRESS>

and that would be it, but that doesn't work..  can anyone explain why or what needs to be done to get it working?
(also if anyone knows about the separate key file part, I haven't looked into that one yet)
Thanks!

I think this issue #332  will help you.


Fixed broken "check_api" method

Removed errant line in main.py.

When merged, this PR will bump the version to:

When merged, this PR will bump the version to:

When merged, this PR will bump the version to: 0.1.0


UI/UX Add route, button, and result tables

Try to mock up the data

move the page to be inside the list


Timeout exception not being thrown - NoneType instead

On OS X, I'm not getting the nice Timeout exception.
>>> requests.get('http://github.com', timeout=0.001)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "requests/api.py", line 78, in get
    return request('get', url, **kwargs)
  File "requests/api.py", line 65, in request
    prefetch=prefetch
  File "requests/sessions.py", line 187, in request
    r.send(prefetch=prefetch)
  File "/Library/WebServer/Documents/lab/python/requests/requests/models.py", line 418, in send
    timeout=self.timeout,
  File "requests/packages/urllib3/connectionpool.py", line 342, in urlopen
    self.timeout)
TypeError: float argument required, not NoneType
>>> requests.get('http://github.com', timeout=1.0)
<Response [200]>

Minor bug in urllib3 — thanks!

v0.8.1 was just released, which fixes this!


Memberships: UI action to "Extend" membership

Extension - If checkbox selected, field to note length of extension (days) and change original end date. Having only one end date will make querying for active memberships easier. We will not plan for multiple extensions.
This story is for UI action of extending the membership and displaying the related form.

Closed via PR #1816.


compilation error: no suitable method found for authenticate(ApplicationTokenCredentials). It was working till 1.0.0-beta4 version

Issue : -
compilation error: no suitable method found for authenticate(ApplicationTokenCredentials). It was working till 1.0.0-beta4 version.
Code snippet : -
Azure azureClient = Azure.configure().withLogLevel(LogLevel.BASIC).authenticate(applicationTokenCredentials).withSubscription(account.getSubscriptionId());
Above code snippet information : -
applicationTokenCredentials – is of type com.microsoft.azure.credentials.ApplicationTokenCredentials
Used java SDK version – [reference : https://mvnrepository.com/artifact/com.microsoft.azure]
•	azure-client-runtime, azure-keyvault-core and client-runtime are on 1.0.0 (GA)
•	Rest of jars are on 1.0.0-beta5
https://github.com/Azure/azure-sdk-for-java/blob/master/AUTH.md shows usage of this API
https://github.com/Azure/azure-sdk-for-java/blob/master/notes/prepare-for-1.0.0-beta5.md do not have any information about any change related to this API.

Hi @amit-dali
1.0.0 of runtime doesn't work with beta5 of the SDK. Please update to 1.0 of SDK or use an older version of the runtime.
Thanks!

by design as per above comments


Docs: Theming Strategy, wrong sentence structure

Where it is written:

Use React Semantic UI building blocks whenever it's possible since it will help you things fit together easily.

Could be:

Use React Semantic UI building blocks whenever it's possible since it will help you fit things together easily.

@ramiroluz sounds good. Do you mind to fix this in a PR?


KAFKA-6026: Fix for indefinite wait in KafkaFutureImpl

Not passing 0 to wait in KafkaFuture implementation. The case where the timeout argument is 0 is already taken care of in the definition of waitTimeMs which is at least 1.
The contribution is my original work and I license the work to the project under the project's open source license

@cmccabe, please review.

It would be great to have a test.

ok I'll add a testcase to KafkaFutureTest

Hi @bartdevylder,
Good catch!  It looks like the bug here is that the code is assuming that Object#wait(0) causes the JVM to wait for 0 milliseconds, rather than to wait forever.  That's a special case I wasn't aware of.
This case is difficult to hit, because waitTimeMs needs to be exactly equal to delta.  This is almost certainly the root cause behind the hangs in KafkaAdminClientTest#testHandleTimeout, as well.
A unit test would be very valuable here, as @ijuma commented.  You can do it by adding a Time object to the KafkaFutureImpl.  Then, you can use a MockTime object to create the case where waitTimeMs == delta.  See KafkaAdminClientTest#testHandleTimeout for an example.

Hi @cmccabe, the mock time sounds like a good plan, I'll try to wrap that in (interestingly though even with system time the problem is reproduced reliably in the test I've got now ).
While at it, two practical questions (if there is a better place to ask please let me know):

If I try to run the tests locally I get a lot of findbug complaints (preventing me from executing the test)  unrelated to the change I did. Any idea what to do? ( I'm running Java 8 and saw findbugs is disabled for java 9 in the build.gradle, maybe java <= 8 is discouraged ? )
Do I need to worry about the failing JDK 9 and Scala 2.12 checks above? (I assume my commit did not cause them, but could be wrong)

retest this please

There should be no findBugs warnings when running with Java 7 or 8. Our Jenkins builds would fail otherwise. Are you using ./gradlew instead of gradle as per the Readme?

I followed the README indeed and used ./gradlew. Using gradle running the tests works.

@bartdevylder, do you think you'll be able to supply a test soon? I'd like to include this in 1.0.0, but we don't have much time.

How much time have we got ? ;)
I have a test ready which just runs against standard KafkaFutureImpl (and reproduces the problem at least here without the fix) which I can push if you want.
I'm currently trying to make the test stronger by using the MockTime but that doesn't work out of the box, I need to investigate further (didn't get the tests running yet from within Eclipse so debugging is a bit harder).

@ijuma  Ok I just pushed the basic tests which reproduces the problem (at least here the problem reproduces very reliably : the first nonzero delta calculated is exactly the waitTimeMs slept so I'd think only on a system under quite some load we would not hit it).

LGTM. Merging to trunk and 1.0.0 with my suggestion above.
@bartdevylder Feel free to follow up if you concerns about the changes.


Text analyzer

Thank you for your pull-request. It works well.
Currently, it seems jukainlp-web is the same as react-nlp example. Am I correct?
If there is any difference, please let me know.

@hshindo
Yes, examples on two options are the same

OK, I got it.
Thank you very much for your great job!

OK, Thank you


Can't enter upper case letters in a PowerShell (sometimes)

Not sure whether it is a PowerShell issue or a Terminal one.
Environment
Win32NT             10.0.19043.0 Microsoft Windows NT 10.0.19043.0
Windows Terminal
Version: 1.6.10571.0
Steps to reproduce
Occurs randomly
Expected behavior
I could type and paste uppercase letters as much as I want.
Actual behavior
Sometimes when I'm pasting copied text string that contains uppercase letters or trying to type them manually (using keyboard) they simply refuse to appear.
Very embarrassing bug that can only disappear after I relaunch the shell.

Okay, so this is bizarre. We've seen this intermittently before, over in #7087 and #8450. From that thread: https://github.com/microsoft/terminal/issues/7087#issuecomment-676782357

Found a fix. If you have the same problem as me, then updating PSReadLine to the latest preview version can help you. Check out this PowerShell/PowerShell#10794 and this PowerShell/PSReadLine for more information.

@akivanov Could you try that, and see if that resolves the issue?

It turned out that STR from https://github.com/PowerShell/PowerShell/issues/10794 were indeed triggering the bug. And after installing a new version of PSReadLine STR doesn't lead to bug anymore. Thank you, @zadjii-msft!

THANK YOU! It was driving me insane for the last year. There are at least two duplicates of this issue:  #6503 and  #9343. Thanks again!


Index.ejs

Update the index.ejs file to reflect the chosen landing page template.
These cues can probably be used for the other view files as the build continues.

This issue will be closed and become part of a larger project.


Elixir installed by asdf

Hello! My Elixir (1.2.6) version installed by asdf extension and contains in path:
/home/bloom/.asdf/shims/elixir
I get this error in atom console:
[atom-elixir] Error: spawn elixir ENOENT(anonymous function) @ /home/bloom/.atom/packages/atom-elixir/lib/server-process.coffee:85
/home/bloom/.atom/packages/atom-elixir/lib/server-process.coffee:77 [atom-elixir] Child process exited with code -2

and extension doesn`t work.
update:
Uncaught (in promise) TypeError: Cannot read property 'stdin' of null(…)
26/home/bloom/.atom/packages/atom-elixir/lib/server-process.coffee:222
Server busy!

error http://joxi.ru/E2pMxGjuBoKN7A
which http://joxi.ru/4AkZRN7SMJQqZ2

It`s work)) i just run
sudo ln -s /home/bloom/.asdf/shims/erl /usr/bin/erl
sudo ln -s /home/bloom/.asdf/shims/elixir /usr/bin/elixir

@yaBliznyk thanks for solving the issue.


[info request] DASH interop with SONiC

in dash we have static vxlan configuration and i assume dash appliance connects to sonic switches.
is vxlan terminated on the sonic switch ?
what is the typical network topology with the VM's , servers, sonic switches, dash appliances, core router, external connection to outside internet ....
what is the typical configuration that is done on each device? (protocols ...)

@ByReaL , vxlan termination is on the appliance and not on the Sonic switch. I'll raise an HLD on the Sonic configuration soon and it shall cover the configuration on the appliance device.

in that case where is the vxlan initiated ?
can we have a diagram showing the full topology.


Andrea/system map updates

Updated system map with new svg image, fixed resize for shorter viewports, updated legend, improved responsiveness of character cards

Merging for Sunday's showcase!

@AndreaGiambelli - This branch has been merged, feel free to safely delete at your discretion.


Upgrade Android Studio to Ladybug 2<IP_ADDRESS>

@bot-gradle test APT

The following builds have been cancelled:

All Performance Tests (Trigger)

Build Scan

@bot-gradle test APT

I've triggered the following builds:

All Performance Tests (Trigger)

Build Scan

The following builds have failed:

All Performance Tests (Trigger)

Build Scan

@bot-gradle test APT

I've triggered the following builds:

All Performance Tests (Trigger)

Build Scan

The following builds have failed:

All Performance Tests (Trigger)

Build Scan

你好，邮件已收到，我将在空余时间尽快给你回复，谢谢！


Fixes command samples in Batch customer-managed keys article

This PR:

Fixes wrong encryption related parameters; should contain hyphens instead of underscores
Replaces short parameters with long ones for clarity e.g., -g -> --resource-group

Docs Build status updates of commit 42ceafc:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

articles/batch/batch-customer-managed-key.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

@harperche
Can you review the proposed changes? IMPORTANT: When the changes are ready for publication, add a #sign-off comment to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

@harperche
Could you review this proposed update to your article and enter #sign-off in a comment if it's ready for merge?
Thanks!

@prkannap,  @mamccrea
Would you be able to review the proposed changes?

@harperche
Thanks for approving the PR. For future PRs, please note that a #sign-off comment is the best way to signal to the review team that a PR is ready to merge.


Create TYPES_MAPPING.MD

I created this to have an overview of types mapping.
I'm not confortable with every gml subtilities so this is a draft.
It will be useful during implementation and documentation

FYI I've added you as a contributor to this repo, so you can PR from a branch and don't have to update your fork anymore.


Nonce error fix

Summary by CodeRabbit

New Features

Introduced a method to retrieve account nonce at a specific block height.
Enhanced transaction sending logic to handle nonce errors and build replacement transactions.

Improvements

Implemented a nonce tracking system to ensure transaction nonces are up-to-date and managed efficiently.

Bug Fixes

Addressed an issue where nonce gaps could disrupt transaction processing.

NonceAt not implemented


fix(landing): fix display of blog posts' publish time on landing

Description
fix display of blog posts' publish time on landing
Fixed

fix display of blog posts' publish time on landing by no longer invoking moment on time string

Relevant Open Issues

#368

fix display of blog posts' publish time on landing
closes #368

LGTM


Fixes incorrect docs, see #1497

Summary
Updates the docs to fix #1497. The current suggested method results in an Element type is invalid: error.
I can confirm that using the component itself rather than its name as a string works as expected.
Credit goes to @albertlockett

@facebook-github-bot - I've now signed the CLA

Thanks for the shoutout @mattgreenfield!


Addition of features

Multi-platform support: Consider expanding the script's compatibility to other operating systems, such as Windows and macOS, to make it more accessible to a wider user base.
Enhanced server filtering: Provide more advanced filtering options, such as filtering based on server location, latency, or available protocols, to allow users to choose servers that best fit their requirements.
Auto-selection based on network conditions: Implement a feature that automatically selects the optimal VPN server based on the user's current network conditions, such as connection speed or network stability.
Integration with Network Manager GUI: Develop a user-friendly graphical interface within Network Manager to configure and manage VPN Gate connections directly, eliminating the need for command-line interaction.
Proxy support: Add the ability to connect to VPN Gate through a proxy server, allowing users to access VPN Gate even in restricted network environments.
Favorites or bookmarks: Enable users to save and manage their favorite VPN Gate servers for quick and easy access.
Bandwidth monitoring: Provide real-time bandwidth monitoring for VPN connections, allowing users to track their data usage and connection speed.
Enhanced logging and debugging: Implement detailed logging and debugging functionality to assist users in troubleshooting any connection issues they may encounter.  if these makes sense, i would like to contribute to this repository

Since this script is written in simple shell scripts, it is difficult to implement such complexities.
I am currently considering rewriting this tool in another language such as Golang.
In the new tool, I am considering multi-OS support and more fine-grained filtering.
However, a GUI is not currently planned (because I cannot write one).

@Hayao0819 how can i support you in the golang?

Now that I am in college I don't have as much time available for projects as I used to.
For now, this shell script version has served my purpose for use, so I have no plans for when I will rewrite it.


[MINOR] improvement(server,coordinator): Dynamic conf support report interval of PrometheusPushGatewayMetricReporter

What changes were proposed in this pull request?
support dynamic conf the report interval of PrometheusPushGatewayMetricReporter
Why are the changes needed?
Adjust the report interval of PrometheusPushGatewayMetricReporter dynamically.
Does this PR introduce any user-facing change?
No.
How was this patch tested?
Locally
curl  -X POST http://localhost:19948/api/shuffleServer/confOps/update -H "Content-Type: application/json" \
-d '{"update":{"rss.metrics.prometheus.pushgateway.report.interval.seconds": "30"}}'
temporarily effective until restart: Update successfully%

server.log
[2024-11-04 10:55:24.139] [PrometheusPushGatewayMetricReporter-0] [INFO] PrometheusPushGatewayMetricReporter - Pushed metrics to push gateway
[2024-11-04 10:55:54.460] [PrometheusPushGatewayMetricReporter-0] [ERROR] PrometheusPushGatewayMetricReporter - Failed to send metrics to push gateway.

@jerqi Thanks for your review, merge it


Godot crashed on launching

I am using windows 7 32 bit on netbook with screen resolution 1024x600.
I was launching (starting)  godot_win32-1.1rc2.exe and godot has been crashed after printing "DETECTED MONITORS: 1" in command window and GUI window was freezing .
Here are some screen shoot of the problem.

Thank you :D

may be possible that your device does not support opengl 2.1? what kind of
chipset does it have?
On Sun, May 17, 2015 at 11:46 PM, SouSuke-Ss<EMAIL_ADDRESS>wrote:

I am using windows 7 32 bit on netbook with screen resolution 1024x600.
I was launching (starting) godot and godot has been crashed after printing
"DETECTED MONITORS: 1" in command window.Here are some screen shoot of the
problem.
Uploading godot cmd.png…
Uploading godot crash.png…
—
Reply to this email directly or view it on GitHub
https://github.com/okamstudio/godot/issues/1933.

--
OkamStudio

the graphic  is intel graphics media accelerator 3150

By the sounds of it, that particular model only supports up to OpenGL 1.4: http://forums.ppsspp.org/showthread.php?tid=5838
Someone has suggested a workaround for Windows 7, but I'm not sure how reliable it is: http://superuser.com/a/554625

nope, godot does not work in this GPU due to lack of shaders, sorry about it, consider upgading your hardware

Duplicate of #156, related to #1162.


Remove css class for API Docs card header

Fixes a mismatch in fonts between the APIDocs cards to the homepage cards

@j-tafoya - The card header's font still look difference from the page title and other header. If removing the aria-label from the h2 tag, the font will change and they are matched with the rest of the page.

I'm not seeing any change when I remove the aria-label. It stays as "Source Sans Pro Web" which matches the cards on the HomePage.


PBR texture

I like PBR textures.
Is there any chance that PBR textures will be supported by this shader?

×PBR
❍labPBR

Integrated PBR like complementary has would be cool but might be out of scope for this shader

Yeah, PBR textures are probably not going to happen, at least by me. I personally don't use them, and the way lighting is handled by Miniature is very unconventional which makes this harder than it seems.

I see. That's a bit disappointing.
I like the shader and look forward to seeing how it evolves in the future.


The content of this article is only valid for the SaaS environment

The upload extension action is only available for the SaaS environment and not for the OnPremise version.
Apparently for the OnPremise we should use PowerShell commands Publish-NAVApp / Sync-NAVApp / Install-NAVApp powershell.
See discussion on Yammer: https://www.yammer.com/dynamicsnavdev/#/threads/show?threadId=1168549033
Should be could to add this as a note in the beginning of this page.

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

ID: 1617d3fe-41ee-548f-aa90-e9bdefe02818
Version Independent ID: 460df5dc-5cf7-56e6-1ec1-d970158f4b0e
Content: Deploying a Tenant Customization - Business Central
Content Source: dev-itpro/developer/devenv-deploy-tenant-customization.md
Service: dynamics365-business-central
GitHub Login: @SusanneWindfeldPedersen
Microsoft Alias: solsen

Hello, thanks for the feedback. Yes, this is only applicable to the SaaS environment and contains terminology that should not be confused with on-premise. This repo contains cloud-first documentation, and when a feature is applicable to on-premise it is called out. Thanks.


Missing (custom) headers in KStream using custom SmartMessageConverter

Describe the issue
I produce a Message (org.springframework.messaging) in application X.
I've implemented a custom MessageConverter that implements SmartMessageConverter.
The message is sent to a topic with custom headers and with a CLI consumer the custom headers are available.
When using a Kstream in Java application Y, the custom headers are not available.
@Bean
public Consumer<KStream<String, User>> streamUser() {
    return user -> log.info("Received: " + user);
}

I use the configuration:
spring:
  cloud:
    stream:
      bindings:
        streamUser-in-0:
          destination: user.0
          consumer:
            use-native-decoding: false

With this, i only receive these three (default) headers in the log:
contentType=application/json
id=31f9bed4-5750-fcf8-f5bf-e135e262fc43
timestamp=1652795431177

I verified that the custom MessageConvertor is called, but fails because the custom headers are missing.
public Object fromMessage(@NonNull Message<?> message, @NonNull Class<?> targetClass{ ... }

When using a different consumer like:
@Bean
public Consumer<Message<User>> consumeUser() { ... }

I can see all the headers (custom_ and kafka_ ):
deliveryAttempt: 1
custom_header_name: Foo
custom_header_version: Bar
kafka_receivedTopic: user.0
kafka_timestampType: LOG_APPEND_TIME
kafka_offset: 2
kafka_consumer: org.apache.kafka.clients.consumer.KafkaConsumer@12178ee3
kafka_receivedPartitionId: 0
kafka_receivedTimestamp:<PHONE_NUMBER>185
kafka_groupId: anonymous.cc23b653-b6d2-4e00-b8aa-a01f2e07bb34
scst_nativeHeadersPresent: true
id: 1200be22-bf11-adef-d14f-9262539d66cc
contentType: application/json
timestamp:<PHONE_NUMBER>435

I have also tried setting the
spring.cloud.stream.bindings.streamuser-in-0.consumer.header-mode
but this didn't fix it.
To Reproduce
Steps to reproduce the behavior:
The message conversion is used to encrypt the byte[] after serialisation and decrypt the byte[] before deserialisation.
A simplified example of the SmartMessageConverter.
@Component
@RequiredArgsConstructor
public class CustomMessageConverter implements SmartMessageConverter {

private final ObjectMapper mapper;

// Decrypting
@Override
@SneakyThrows
public Object fromMessage(@NonNull Message<?> message, @NonNull Class<?> targetClass) {
    if (message.getHeaders().containsKey("custom_header_foo")) {
        byte[] bytes = decrypt(message.getPayload(), message.getHeaders());
        return mapper.readValue(bytes, targetClass);
    } else {
        throw new CustomException("Something failed");
    }
}

// Encrypting
@Override
@SneakyThrows
public Message<?> toMessage(@NonNull Object payload, MessageHeaders headers) {
    EncryptedPoJo ep = encrypt(payload);
    MessageHeaderAccessor accessor = new MessageHeaderAccessor();
    accessor.copyHeaders(headers);
    ep.getMetadata().forEach(accessor::setHeader);
    return MessageBuilder.createMessage(ep.getPayload(), accessor.getMessageHeaders()));
}

@Builder
@Getter
private class EncryptedPoJo {
    private byte[] payload;
    private HashMap<String, Object> metadata;
}

Sending the Message is done with a custom KafkaTemplate with the CustomMessageConverter set and adapted the method:
public ListenableFuture<SendResult<K, V>> send(Message<?> message) { ... }

When debugging, it seems that in the class:
class KStreamMapValues<KIn, VIn, VOut> implements ProcessorSupplier<KIn, VIn, KIn, VOut> {

  public void process(Record<KIn, VIn> record) {
      VOut newValue = KStreamMapValues.this.mapper.apply(record.key(), record.value());
      this.context().forward(record.withValue(newValue));
  }

}

The headers from the Record are unused when the GenericMessage (newValue) is created.
Only record.key and record.value are processed.
Version of the framework
org.springframework.cloud:spring-cloud-stream-binder-kafka-streams:3.2.3
Expected behavior
When converting the Record to GenericMessage all (custom) headers are copied instead of ignored/lost.
Screenshots

Additional context
Original question on StackOverflow, redirected to here by Soby Chacko

@PaulV1990 This was a bug. It is now addressed in both main and 3.2.x through the commits mentioned above. Please try with the latest snapshot (3.2.5-SNAPSHOT) to get the changes. Thanks!

@PaulV1990 Both 3.2.5-SNAPSHOT and 4.0.0-SNAPSHOT have the fix now.


Add DM Runtime Messages to Unit Tests

This patch already exists (somewhat confusingly) in #775: https://github.com/wixoaGit/OpenDream/pull/775/commits/94bc07ae40a102804205c5efc423477c94943222

So it does. Pretty similar approaches - which one you wanna keep?

Yeah, sorry about that, it probably should've been on another PR, I just assumed it'd be complete quicker. 😅
Whichever gets merged is up to Wixoa. Please do keep this open while we wait on that.


[DISCUSSION] Issue template

Github enables to make an issue template which should be used. This text will then be shown instead of "Text here" when opening an issue. This thread is for discussing the text in it and what the fundamental rules should be:
Sample Text:

[ ] The language must be English

[ ] Please check if any other issue already adresses your concerns or if a recent PR is already fixing the mentioned issue

[ ] Please make sure to format your code, and to mark your code as such with the provided tools from github (upper right of this box)

[ ] Note that the pip installation might be behind, so try to fix your issue with a pull from the repo and update to the most recent version

[ ] Follow the Stackoverflow Guidelines (https://stackoverflow.com/help/how-to-ask) when in need of help

[ ] There will be no support for spamming, or other mischiev

[ ] There will be no support for finding professionals

@mukulhase Please tell me what do you think
Please add or discuss the mentioned points or add further points that should be added.
The result should be a more clean issue tracking

@mukulhase How long till an Issue should be closed due to inactivity ? 30 days?


Parameter name conversion issue when using many parameters

What happened?
Hey, looks like when many parameters are sent there some kind of translation problem, the sql that is shown in the builder.sql and the executed SQL parameters are wildly different
Reproduction steps
For example, I'll use a the dynamic builder, then append this where

But I get an unexpected SQL exception, when I check the builder.Sql, it looks fine (like img below)

However when I do a profiler on the query, the parameters are very different

Somehow what was @ p1 in the builder.Sql is now @ p11 and now there is a @ p151, like if something was appending a 1? Very weird
Now, it works if I take that big where with a lot of LIKEs and remove some of them, so its definitively tied to the number of parameters
Relevant log output
No response
Version (bug)
4.1.2
Version (working)
No response
Operating System
Windows
Pull Request

[ ] I would like to do a Pull Request

Code of Conduct

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

Hey @AFallad, that's interesting, I will investigate.
What database are you running an can you send me the SQL exception message/data you are getting?

SQL Server
Exception is Conversion failed when converting the nvarchar value '%test%' to data type int.
In the last screenshot you can see that it does @ p11 nvarchar in SQL, but in the parsed query @ p1 is the IN clause, so SQL expectedly throws this exception

Hey @AFallad, I did some testing, and I was able to recreate the issue, it's an interesting one.
The library can handle large parameters, that's not an issue, however, the issue is parameter name collision.
Long story short, the library is passing the parameter name @p1 (the parameter used in the IN clause) to the Dapper lib.  Dapper then internally expands this parameter (as you would be passing in a collection here) by taking that @p1 and expanding it to @p11, @p12, @p13..... etc., depending on how many items are in the collection for the IN clause; so the final SQL will look like this in (@p11, @p12, @p13). In your case, it's just in (@p11).
This is a problem as it will cause collisions with existing parameters i.e. @p11 and that's why you are getting that exception.
:
As a temporary workaround, define the parameter for the IN clause like this to avoid collisions:
// Shortened for brevity
builder.Where($"Table.Status in @myStatues)";

builder.AddParameters("@myStatues", statutes);

I will look into a permanent fix for this.


Removed repeated entries and small typos

To review this PR, you need to expand all the rows so you see that the conference names I removed are still included. Meaning they were twice. For example I removed ICLR, but you still have the first one on line 112.
Some links had UUL instead of UL (lines 59 - 63)
My VSC removed extra white spaces.
@natnew

Thank you @DeaMariaLeon


[nrf] Trying to do something after a frame received in radio but before ack sent

I'm now implementing Enhanced-ACK Based Probing. For this feature we need to aggregate Link Metrics data from frames sent from a specific Initiator, and put the aggregated data into the Enhanced-ACK sent to that Initiator.
My plan is to put the process in platform radio (I.E. implement the aggregation and fetch of data in examples/platforms/xxx/radio.c). The main reason for doing this is to ensure that the Link Metrics data in the latest Enh-ACK would contain the information of the latest received frame.
For example, after Enhanced-ACK Based Probing is configured, the Initiator sends a 2015 frame A to the Subject. And the Subject sends an Enh-ACK containing Vendor-Specific IE. We want the Link Metrics data of frame A aggregated in the IE. If we aggregate it in OpenThread core, I think we won't be able to make this work. (The ack would have already been sent out when the code reaches higher layer).
So if I do the aggregation and fetch in platform radio, maybe do it in nrf_802154_received_timestamp_raw, can we ensure the process to be completed before ack being sent out? Or it's better to do this in nrf_802154_tx_ack_started? But as in nrf_802154_tx_ack_started we only have the generated ack, instead of the original received frame, I would prefer to do this process with the received frame.
In short, I want to do something immediately after a frame is received in radio but before the ack sent out.
What would be your suggestions on this? @hubertmis @edmont

The main reason for doing this is to ensure that the Link Metrics data in the latest Enh-ACK would contain the information of the latest received frame.

I think that this requirement is the reason why the feature should be implemented in the 802.15.4 driver. The API of 802.15.4 driver is designed in the way that it does not guarantee strict timings between calls and real radio operations. It is possible to call 802.15.4 driver API on one CPU core, while radio operations are executed on other one with nondeterministic timings of IPC between. When OpenThread receives notification that a frame was received, the notification can be delayed by IPC.
We have a proof of concept injecting CSL data to CSL IEs in the 802.15.4 driver. I think similar feature should be implemented to inject Link Metrics data to IEs in the 802.15.4 driver. I can share this PoC with you if you are interested.

@hubertmis
I agree to inject Link Metrics data using the the similar method as we did for CSL. However we need the Lqi and Rssi information for the latest received frame. But it seems that they can only be got in nrf_802154_received_timestamp_raw. And in nrf_802154_tx_ack_started(where we can inject the IEs), we only have the generated ACK. How can we access Lqi and Rssi in this IPC?

@Irving-cl
The code that you use currently to update CSL IE data won't work in nRF53. nrf_802154_tx_ack_started() function won't be available there. We've prepared a PoC in the 802.15.4 driver that prepares full Enh-ACK, including valid CSL IE data. We'll have to replace nrf_802154_tx_ack_started() based CSL IE preparation with new functions in 802.15.4 driver, to support Thread 1.2 in nRF53.
Similarly, we should not use nrf_802154_tx_ack_started() to prepare Link Metrics IEs in Enh-ACK. It could work in nRF52 family, but won't work in nRF53. I think it would be a waste to prepare temporary solution (based on _tx_ack_started())  now and later move implementation to 802.15.4 driver. I suggest to implement injecting Link Metrics data to Enh-ACKs in the 802.15.4 as a first step.

@hubertmis
That sounds great. I'm looking forward to that. I'm still going to implement it on nRF52 first. I would inject the data in 802.15.4 driver and make the code as reusable as possible when new APIs are introduced. And the solution on nrf52 would only give the data for frames before the latest one.
Of course I'd like to see your PoC. I'm recently drafting a document for platform requirements to support Low Power features. So I'd like to have a general idea about your solution and think how we would later implement it with new APIs.

@Irving-cl , I think your implementation must be part of the 802.15.4 driver anyway. I don't think public API of the driver allows higher layers to access LQI or dBm data before ACK is transmitted.

@hubertmis
I will make the implementation as part of the 802.15.4 driver. We don't need to allow higher layers to access LQI or dBm before ACK is transmitted. But I think we may need the 802.15.4 driver to do that. The driver itself should be able to get LQI and dBm for a received frame, and inject IE that related to that data to the ACK it transmit soon.

@Irving-cl , we've just decided that @MarekPorwisz and his team are going to take care of the PoC I've mentioned. They are going to clean it up and share in a week or so.

@hubertmis @MarekPorwisz
Please let me know if you have any updates for the new PoC. I'm very interested in the new PoC and want to see how we could implement low power features with it. And I would still implement Enhanced-ACK Probing on nrf52 (not perfect, with the problem I described above).


otlp_stats_sink: add stats prefix config option

Additional Description: Adds a config option to set a stat prefix for all stats flushed by the otlp stats sink. Resolves #28962.
Risk Level: low
Testing: Unit tests, integration tests
Docs Changes: API docs
Release Notes: None
Platform Specific Features: None

gentle ping @adisuissa

/wait-any


double with 15digits precision?

Hi, what is the reason to limit the precision to 9 digits only?
  // limit precision to 9, cause a prec >= 10 can lead to overflow errors
  while ((len < PRINTF_FTOA_BUFFER_SIZE) && (prec > 9U)) {

I would be happy to have double float printed with full 15digits precision - is that 9 digits limit an issue with some algorithms used? Thanks for your work!

uint32_t is used for printing, so e9 is limit

You work with double (64bits) already - line 487:
  union {
    uint64_t U;
    double   F;
  } conv;

  conv.F = value;
  int exp2 = (int)((conv.U >> 52U) & 0x07FFU) - 1023;           // effectively log2
  conv.U = (conv.U & ((1ULL << 52U) - 1U)) | (1023ULL << 52U);  // drop the exponent so conv.F is now in [1,2)

here is fractional part printing: https://github.com/mpaland/printf/blob/master/printf.c#L413

I added to the pow[] array the powers of up to 10^15 and changed the precision to 15, but still I get wrong results, usually the first 6 decimal places is zero, ie. like pi
3.000000237623847
etc.

ok, this looks better:
PI= 3.141592653589793e+00
A=  -1.234567898272192e+08
1 xyz = 1.000000001957684e+00
2 xyz = 1.999999999819259e+00
3 xyz = 2.999999998867262e+00
4 xyz = 4.000000000341832e+00
5 xyz = 4.999999999327491e+00
6 xyz = 5.999999999520980e+00
7 xyz = 6.999999999588305e+00
8 xyz = 7.999999999946748e+00
9 xyz = 8.999999999832568e+00

With uint64_t instead of long double
  int whole = (int)value;
  double tmp = (value - whole) * pow10[prec];
  uint64_t frac = (uint64_t)tmp;
  diff = tmp - frac;

@ledvinap : Is there any good reason to limit this to uint32_t and 1e9? I mean, uint64_t's are used elsewhere in printf.c after all.

@eyalroz, @ledvinap Thanks so much for this massive amount of input from you guys!
Right now I'm just too busy with another project, I'll get back to printf in August. Promised.

@mpaland : If you do, please email me and let's chat, as my fork currently integrates most other people's contributions...


csolution(1.0.0) 'output-dirs' issue

If output-dirs with sub outdir is maintained in cproject.yml, then cmd will output warning message "warning csolution: key 'output-dirs' was not recognized", correspondingly "outdir" doesn't work.
For multiple project csolution, each project may has its own output, thus cproject.yml instead of csolution.yml should be place for it.

For trust zone projects solution, if outdir is set in csolution.yml like

  output-dirs:
    outdir: ./$Project$/$Compiler$/$BuildType$

There will be issue message:  "Path not found: /trustzone_examples/hello_world/cm33_core0/hello_world_ns/..\hello_world_s$Project$$Compiler$$BuildType$hello_world_s.debug+Board_CMSE_Lib.o"

@tcsunhao thanks for the feedback!
There was indeed an issue when evaluating access sequences from interdependencies. I have already provided the fix #437, it will appear in the next release.

@tcsunhao Can you please test it with the latest CMSIS-Toolbox 1.1.0? Many thanks!
https://github.com/Open-CMSIS-Pack/cmsis-toolbox/releases/tag/1.1.0
Please note the output-dirs are currently supported only at csolution.yml level.

@tcsunhao we have not heard back from you on the above topic. Can you please help to validate the reported defect?

Hi @brondani , I confirm that this issue has been fixed. (Sorry for this late reply, just found it during check).