Lack of permission to share location on Safari causes "Patient Wallet" to freeze after scan

On v0.5.9, on the "Patient Wallet" running on a Safari browser,
after scanning a data matrix,
if the user denied location sharing,
the application hangs with a blank screen saying "Scan done," and stops there.

There is a JS error on the console log.
[Log] Acdc Settings Added (acdc.js, line 113)
[Log] Uploaded settings.json to /data/settings.json (DSUStorage.js, line 42, x2)
[Log] Uploaded languages.json to /data/languages.json (DSUStorage.js, line 42)
[Log] Uploaded settings.json to /data/settings.json (DSUStorage.js, line 42)
[Log] Random new DID generated: A18ibqUvcQH8JuGcuUsyFXQAR2znzkAiD9F78LRvv1s4u3q36gnrTzudVLvc2MiHKjPsgp2M4HZnFamfRcGLd841QkXceFAvZp777Jwptwx9DMUszRTRx2up6ykxoqmBikxWgXwMkmbaFJDZQsXbiVdh7kTDUXu3nkVfakFrLT1o8KzTQKpGVBeqXdBKMLLr7JmMMy6RdKfypH4yH3d8nMaoQxGruZbGYKUZopFMR8uS2hhdQUH3ywKfujpuUQC5Gxw7dC4JnUjvwgmyY8P1uhfDSZDvUt54HqkURF6U8H4p5rKPbiZRHoR94XDnyakARpAbrim2iuXvPTakid8hHPWVr7fcFs (acdc.js, line 125)
[Log] Uploaded settings.json to /data/settings.json (DSUStorage.js, line 42, x2)
[Error] Failed to load resource: the server responded with a status of 404 () (index.js.map, line 0)
[Log] Trying to play video that is already playing. (iframeBoot.js, line 22635)
[Log] result – Result {text: "\u001d01021131000000112143023992515022\u001d10MAY1701\u001d17220429", rawBytes: Uint8Array, numBits: 240, …} (p-f126c525.entry.js, line 1)
Result {text: "\u001d01021131000000112143023992515022\u001d10MAY1701\u001d17220429", rawBytes: Uint8Array, numBits: 240, resultPoints: Array, format: 5, …}Result
[Error] Unhandled Promise Rejection: NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission.
	(anonymous function)
	rejectPromise
	play
	(anonymous function) (p-f126c525.entry.js:1:8599)
	loop (zxing.js:3464)
[Log] New GTIN_SSI in domain:epi and bricksDomain:undefined (gtinResolver.js, line 73)
[Log] User denied the request for Geolocation. (acdc.js, line 218)
[Error] TypeError: JSON.stringify cannot serialize cyclic structures.
	stringify (acdc.js:262)
	(anonymous function) (acdc.js:262)
	(anonymous function) (acdc.js:233)
[Error] TypeError: null is not an object (evaluating 'this.scannerContainer.appendChild')
	addCanvasToView (p-f126c525.entry.js:1:939)
	createOverlaysCanvases (p-f126c525.entry.js:1:1207)
	drawOverlays (p-f126c525.entry.js:1:8095)
	(anonymous function) (p-f126c525.entry.js:1:7896)

The correct behaviour should be to report the scan without the GPS info (as it happens in google chrome).

Fixed on 2885ebdfe1b7bf849d04620faba026f965d3aaa2

Re-testing on DEV env...

Fix evidence by S.Mota:

Ok to deploy.


Use particles to animate objects

Instead of creating new frames for the objects to be animated we can use particles (like smoke effect) to make them less static.

Not too sure, if it will look good. Remember, that we have a plenty free memory that is not used by music and sounds. We can always use poke/peek to access it.


End the game in monster phase

Description of Problem or Question
In my scenario investigators have a limited ammount of turns until a StarSapwn spawns. And when it spawns they have a limited amount of rounds until the monster reaches a certain location.
In the monster phase the investigatiosn have the usual option to attack or evade that monster but also the option to select that the Monster has reached the end location.
When this option is selected, the end-game tekst is displayed (invesigators losing) and $end is set to 1
However, the game stays in the Monster (horror phase) and the continue button in the end text cannot be clicked, Nor can the move turn to next phase (end-horror phase) button in the lower right corner be selected.
The only way to end the game now is to select the option from the menu in the top right corner.
So what I would like to request is a way to force the game out of its myhtos and horror phase so I can end the game nice and clean.
NOTE : the other ways to end is when investigator dies, or when the scenario is completed succesfully but this all happens in the investigator phase
NOTE: The attached scenarion is NOT ready for publishing, it is stll being tested and finetuned. Although my friends already enjoyed playing it :).
Valkyrie Version
Brynhildr_2.1.0b
Attach Save, Quest or Scenario
Saves:
%appdata%/Valkyrie/MoM/Save
%appdata%/Valkyrie/D2E/Save
Quest:
%appdata%/Valkyrie/D2E/Editor
Scenario:
DisturbanceAtTheDocks.zip

Not addressing the bug, but you could make the monster moves event trigger at End round or start round. This might fire a little better. Also you could even track the monsters movement with variables so you don't have to even ask the investigators where the monster is.

Hi @antontimmermans , I tried to reproduce the issue with your scenario but the scenario is quite big, and I've got stuck with the bell UI after a while, and the clear button doing nothing.
I've not reached the part you have described here in your issue.
And I'm not reading text too much, as the scenario looks quite good, and I don't want to spoil myself too much :)
Would you be able to do a mini scenario to reproduce the issue only ?

Thank you,
I wasn't aware that the testsessions would be recorded too. I thought only the published version would be recorded. My apologies. I was not trying to fake good score.

Van: BenRQ<EMAIL_ADDRESS>Verzonden: maandag 15 oktober 2018 00:20
Aan: NPBruce/valkyrie
CC: antontimmermans; Mention
Onderwerp: Re: [NPBruce/valkyrie] End the game in monster phase (#913)
BTW, I've deleted the ratings you created during your tests session of this scenario (the ratings with only a few minutes of gameplay). I kept the real play session you did of course :)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/NPBruce/valkyrie/issues/913#issuecomment-429668314, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AoH5NFNDZsjhpyBt32I2n34hT3GqWO7uks5uk7jHgaJpZM4XbIz1.

Not addressing the bug, but you could make the monster moves event trigger at End round or start round. This might fire a little better. Also you could even track the monsters movement with variables so you don't have to even ask the investigators where the monster is.

Thank you for your suggestion. The end round or start round trigger might work, I will look into it. Tracking the monsters movements with variables could have been a clean option if the end turns are really fixed. The problem is that the investigators have the option to slow down the progress of the monster (not stopping) by engaging it. Through some items (I believe the .45) they even have the option to push the monster back. This makes automatic tracking very difficult.

Hi @antontimmermans , I tried to reproduce the issue with your scenario but the scenario is quite big, and I've got stuck with the bell UI after a while, and the clear button doing nothing.
I've not reached the part you have described here in your issue.
And I'm not reading text too much, as the scenario looks quite good, and I don't want to spoil myself too much :)
Would you be able to do a mini scenario to reproduce the issue only ?

In fact, I have a test button (a little hidden clue token just above the townsquare) to trigger/test end conditions. I have disabled it in the attached version but can easily be added during the EventTownSquarePlace tile sequence (first tile).
The turn in which the StarSpawn Spawns is set in the EventQStart and depends on the number of investigators. So this issue can be reproduced by patiently clicking away turns .. but that will take a while.  In the testversion I will force this to turn 2.
Later today I will attach a version of this scenario to this ticket with both modifications.
SPOILER ALERT
**** do not continue reading if you wish to play the scenario ****
As for getting stuck with the bell: you should be able to clear the Bell UI always. If you cannot, then I made a mistake in the scenario.
The bell UI checks 2 two things: 1. Enter the correct number of stones. (randomized) 2. Collect at least enough stones to match that number.

Hi @antontimmermans , I tried to reproduce the issue with your scenario but the scenario is quite big, and I've got stuck with the bell UI after a while, and the clear button doing nothing.
I've not reached the part you have described here in your issue.
And I'm not reading text too much, as the scenario looks quite good, and I don't want to spoil myself too much :)
Would you be able to do a mini scenario to reproduce the issue only ?

In fact, I have a test button (a little hidden clue token just above the townsquare) to trigger/test end conditions. I have disabled it in the attached version but can easily be added during the EventTownSquarePlace tile sequence (first tile).
The turn in which the StarSpawn Spawns is set in the EventQStart and depends on the number of investigators. So this issue can be reproduced by patiently clicking away turns .. but that will take a while. In the testversion I will force this to turn 2.
Later today I will attach a version of this scenario to this ticket with both modifications.
SPOILER ALERT
**** do not continue reading if you wish to play the scenario ****
As for getting stuck with the bell: you should be able to clear the Bell UI always. If you cannot, then I made a mistake in the scenario.
The bell UI checks 2 two things: 1. Enter the correct number of stones. (randomized) 2. Collect at least enough stones to match that number.

As promissed a test version. After you go through the intro you will notice a clue token north of the townsquare. That token allows you to select the option "spawn Big Bad". After you selected that, end the turn and you will get the monster dialogue where you select "monster reached the town square".
This will trigger the end-dialogue where you cannot click the end-turn button , or the continue button in the end UI
DisturbanceAtTheDocksTest.zip

Hi @antontimmermans,
I'm testing with version 2.1.2 (fresh from today).
I don't see the issue, as you describe it: if I press continue I just see the end screen rating (if the quest is in a valkyrie package), or I go back to menu (if the quest is not packaged, and is played from a directory).
So from my point of view, it is the expected behaviour.
Can you please test again in 2.1.2 ?
Please tell me if you expect something else at this point.
PS: No problem for the test ratings, it's easy to filter out the ratings coming from short tests, as there is a "game duration" info for each rating.

Tested on 2.1.2. It seems to work properly now.
Clicking the UI Continue button in the final graphics brings me back to the main menu as expected.
Thanks.

Cool, I hope I can test it soon :)


Living things in a slime's internal inventory will be sent to nullspace until they are taken out again

I'm not sure if this happens BECAUSE they are a sentient player, or EVERY item gets sent to nullspace in this way, due to being unable to observe what happens if it's not a sentient object/thing.

This issue doesn't apply anymore since Geras was removed in #29731.


Add a new log in section

Let;s change the second sentence for this:
"Please verify your identity using your wallet."
And then on the blue button: " Verify your identity"

@ValMBO @l-br1  What do you think, should we leave this background to be like govtool, because the header on govtool is not white, or should we set the PDF to be white?


Add git repo to Orb description.

Add git repo link to orb description.
Guideline:
https://github.com/CircleCI-Public/Orb-Policies/blame/master/Orb Best Practices Guidelines.md#L13

I'll make sure to add this

@KyleTryon I assumed this is what you wanted: https://github.com/CircleCI-Public/cloudfoundry-orb/pull/16

Fixed in #16


PUD-1216|SR|add tests for change history for prison held in - serenti…

…ty framework

Branch is out of date, also, shouldn't we be changing cypress at the same time? Don't think we should be changing just 1 and not the other.


Let users control full-screen mode via URL

Sometimes different devices needs different startup screen mode, e.g. RPi Cam Web Interface on landscape oriented displays tend to work great in fullscreen mode, but at the same time this mode provides poor experience on portrait oriented displays. So in such cases it would be great (beside mode setting in /etc/raspimjpeg config file) to control live feed screen mode directly through URL
http://someurl/index.html#fullscreen will override config setting and start in a fullscreen (also just #full will do the job), and respectively #normalscreen (or just #normal) will start in a normal mode.

Thanks for the contribution. I'd be happy to merge it but I want to ask a question first.
If the intention is to have the different modes for different devices might this be better handled with cookies rather than a separate url switch. That way the mode is set up once and then remembered on the device without having to modify urls.
There is already a cookie called display_mode which remembers whether that device wants 'simple' preview only display or the full functionality with all buttons.

Thanks Robert for the reply and the question, it made me look a bit deeper.
Mentioned "cookies way" still needs some code, it's not working for me out of the box, cause it's about control environment (to show the interface or to hide it), whereas offered code is about the size of the feed (image) itself. I think it would be nice to handle latest display mode with cookie, whether it was fullscreen or normal size.
Still my point was to be able to define that state via URL. So it will be possible to have a bookmark, a home screen link with predefined state or even use such URL as a parameter, e.g. I have RPi with a display (non-touch one), it starts in kiosk mode and displays feed in fullscreen mode despite value of fullscreen parameter in /etc/raspimjpeg; And as I've mentioned before current version is not easy to operate in fullscreen mode on small portrait oriented displays (image overflows and being cut due to chosen CSS rules, including transform-translate). Maybe it needs some work ¯_(ツ)_/¯ I would suggest having three modes: "normal", "fullscreen-contain" when image (scaled keeping aspect ratio of-course) touches window from inside so user can see the whole picture with nothing cut (e.g. can be achieved with CSS object-fit: contain) and the last mode "fullscreen-fill" where smallest dimension fills the screen and largest overflows, but still the rest of the image is available through scrolling.
Again thanks for the question, it made me test the code under more conditions and find some bugs, so I've had those fixed. I'm sorry for the forced push, felt real urge to fix those bugs and make code prettier.

OK


Window overlapping with taskbar

Microsoft PowerToys version
0.57.2
Running as admin

[X] Yes

Area(s) with issue?
FancyZones
Steps to reproduce

Set windows taskbar to be on the left side of the screen
FancyZones is working properly
log off from windows or restart PC
log in again
When dragging a window to the left side of the screen (where the taskbar is located) it gets covered by the taskbar.

Zones in the editor seems to recognize the taskbar correctly.
✔ Expected Behavior

❌ Actual Behavior
Window disappears behind taskbar on the left side

Window doesn't attach to the side of screen on the right side. Maybe fancy zone is thinking that the taskbar is on the right side of the screen.

Other Software
No response

I deleted all layouts and recreated them after moving the taskbar to the left side. The issue stays.

/dup of https://github.com/microsoft/PowerToys/issues/11180


Phone App for Machinaris - Android & iOS

Currently, the Machinaris website is somewhat mobile friendly, but intended for LAN use-only.  You can proxy & secure it with Nginx/Organizr however if you want to browse from outside your LAN.
A phone app would be nice for Android and iOS though. As suggested by TroggoMan from the MadMax discord.

Just adding that with release of Machinaris v0.4.0, there is now a REST API available, though again LAN-only without proxy setup.


Fix for issues #54, #55

See Details...
https://github.com/aritchie/userdialogs/issues/55

Thanks.  I will release these in 4.0.5 sometime tomorrow


napari cannot be run interactively in nbclient

🐛 Bug
This isn't a napari specific thing, but it could be a blocker for our docs, so I'm creating an issue here so we can track it.
I have been experimenting with Jupyter Book for the scikit-image tutorials.  Even better, you can hide certain input/output cells or even remove them altogether (ie have the code not appear on the page, only the output). So I think it's actually a great thing for reproducible napari demos because you can do:
Cell 1:
v = napari.Viewer()
layer = v.add_image(data)

(Narrative text telling user to annotate points interactively.)
Cell 2 (hidden or removed):
pts = np.array([[...]])
v.add_points(pts)
v.dims.set_point(<some interesting coordinate>)
napari.nbscreenshot(v)

However, it's currently impossible to do this because nbclient doesn't work with notebooks that have %gui qt. See these issues:
https://github.com/executablebooks/jupyter-book/issues/840
https://github.com/jupyter/nbclient/issues/97
I think this is a critical part of our ecosystem to fix, because having this working would make it easy to produce very high quality docs automatically with our CI.
I have not yet tried to see whether using napari.gui_qt() instead of the magic would work, but it wouldn't be ideal, because then our notebooks would differ from real-world usage. If it does work and the above problems with nbclient turn out to be intractable, an alternative could be to create a sphinx post-processor that adds %gui qt to the top of a notebook and removes and unindents all gui_qt() blocks...

fwiw, I tried using the with napari.gui_qt() context manager approach and works fine in the jupyter

I would have thought this would work, but it didn't :(
from ipykernel.kernelapp import IPKernelApp
kernel = IPKernelApp.instance()
kernel.initialize(['python', '--gui=qt'])

>python
Python 3.7.9 (default, Aug 31 2020, 17:10:11) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from ipykernel.kernelapp import IPKernelApp
>>> kernel = IPKernelApp.instance()
>>> kernel.initialize(['python', '--gui=qt'])
NOTE: When using the `ipython kernel` entry point, Ctrl-C will not work.

To exit, you will have to explicitly quit this process, by either sending
"quit" from a client, or using Ctrl-\ in UNIX-like environments.

To read more about this, see https://github.com/ipython/ipython/issues/2049

To connect another client to this kernel, use:
    --existing kernel-66600.json
In : import napari
In : viewer = napari.Viewer()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "c:\users\genevieve\documents\github\napari\napari\viewer.py", line 68, in __init__
    raise RuntimeError(message)
RuntimeError: napari requires a Qt event loop to run. To create one, try one of the following:
  - use the `napari.gui_qt()` context manager. See https://github.com/napari/napari/tree/master/examples for usage examples.
  - In IPython or a local Jupyter instance, use the `%gui qt` magic command.
  - Launch IPython with the option `--gui=qt`.
  - (recommended) in your IPython configuration file, add or uncomment the line `c.TerminalIPythonApp.gui = 'qt'`. Then, restart IPython.
In :

It's possible we might also run into this problem with PySide2 and environment variables: https://github.com/ipython/ipykernel/issues/398
If we do, there is a PR attempting to address it here: https://github.com/ipython/ipykernel/pull/444

Exciting news! If we use runipy* to execute jupyter notebooks we can finally run them with the %gui qt magic. (See the discussion here for more details) 🚀 🚀 🚀
*Note: runipy is no longer maintained, but it's very small so we could potentially maintain a fork of it in the napari org. I'd say the benefits would be worth it.
pip install runipy
runipy example-notebook.ipynb

# cell 1
%gui qt

# cell 2 - this MUST be in a separate cell after the qt magic above, you can't combine these two into one cell
import time
time.sleep(5)

# cell 3
import napari
viewer = napari.Viewer()

I think I tried runipy earlier, but wasn't vigilant about always having time.sleep in a separate cell. This part is important!

Related discussion:

https://github.com/napari/napari/issues/1387
https://github.com/napari/tutorials/issues/70

So the problem with nbclient is that we need a separate time.sleep(1) cell, that comes after the cell with the %gui qt magic, and before the cell where we import napari. The magic is an asynchronous process, and for reasons that remain mysterious to me you can't put the sleep in the same cell as the magic.
This works:
# cell 1
%gui qt

# cell 2
import time
time.sleep(1)

# cell 3
import napari
from napari.utils import nbscreenshot
viewer = napari.Viewer()
nbscreenshot(viewer)

# final cell
viewer.close()

We can hide cells 1 and 2 in our docs if we like, that's what I've done in the template notebook included here:
https://github.com/napari/tutorials/pull/95


Caching game pages in steam client and users avatars

From: https://github.com/steamcache/generic/issues/77
Describe the issue you are having
When i start a Steam Client with the cache working in the network, it starts caching Game pages in the client (not the store) and pictures and users avatars. This makes Steam unstable on certain clients and stops loading some images and avatars. But caching games works flawlessly!
 PR incoming


Allow tilelive 5.x

Most apps that depend on tilelive-vector pin their own version of tilelive. So, this change allows for them to get their desired version of tilelive without dupes.

failing with node v0.12:
not ok 28 should be equal
  ---
    operator: equal
    expected: 'Tue, 26 Jan 2016 18:35:20 GMT'
    actual:   'Thu, 01 Jan 1970 00:00:00 GMT'
    at: cbTile (/home/travis/build/mapbox/tilelive-vector/test/backend.js:115:27)
  ...
not ok 29 backend-object=default
  ---
    operator: equal
    expected: 'default'
    actual:   'empty'
    at: cbTile (/home/travis/build/mapbox/tilelive-vector/test/backend.js:116:27)
  ...

@yhahn @rclark @GretaCB - do you anticipate any problems with this? My motivation is to avoid dupes of tilelive ending up landing in apps like studio classic after new tilelive minor revisions.
WRT to the test failures with node v0.12, I'm stumped at the moment, but not seeing them locally so thinking whatever it is they are minor.

jfdi, merging.


run a shell command in PHP

I want to run a command in PHP to generate an image :
$make_test      = system("/usr/local/bin/aimg  version ");
$make_image  = system("/usr/local/bin/imagine  --outdir ../outputs 'a orange bird'  ");

Results in :
11.1.0
✨ Generate images faster using a persistent shell session. Just run `aimg` to start. This makes generation and editing much quicker since the model can stay loaded in memory.

I can't generate outputs... Empty folder.
Any suggestions ?

PHP is running from XAMPP:
error-log:
Original error was: dlopen(/Library/Python/3.8/site-packages/numpy/core/_multiarray_umath.cpython-38-darwin.so, 0x0002): tried: '/Library/Python/3.8/site-packages/numpy/core/_multiarray_umath.cpython-38-darwin.so' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64'))

SOLVED !
This works > $make_magic  = system("arch -arm64 /usr/local/bin/imagine  --outdir ./output_site/outputs 'a orange bird'  ");
'arch -arm64 ' <-- force to use arm64
No i can make my own web UI. (local)

Glad you got it working. I'm pretty confused as to why it wouldn't have been working. Must be something about running PHP on an M1.
I'd point out that your current approach means that you'll be reloading the models from disk for every command invocation. This could be pretty slow.  Running a python server would probably be easier and faster.
Also you'll have to figure out how to handle or prevent concurrent image generations.


Need to complete the Home screen UI of Student-Port

The UI development is not complete. Need to complete the Home screen UI of Student-Port

Completed Home screen ui


Issues on some modded maps due to interpolation

For example on DennisStanistan's Moonlit Blossom Optimized map the walls completely glitch out, if interpolation stays off until the character intro then enabled it bypasses the issue, if that was automated when enabled it would be great.
-- also im playing at 165 fps if that's relevant

Interpolation causes a few glitches like this, yes. It also causes some character items to be enlarged to the point where the game is unplayable for that match. I never got to fixing it. To fix these problems, the feature would have to be reimplemented using a different approach. I don't know when I'm going to get to it, maybe in Tekken 8.


chore(deps): upgrade dependencies

Upgrades project dependencies. See details in workflow run.

Automatically created by projen via the "upgrade" workflow

Codecov Report

Merging #120 (c12d858) into main (2974dfe) will not change coverage.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##             main     #120   +/-   ##
=======================================
  Coverage   83.33%   83.33%
=======================================
  Files           2        2
  Lines         126      126
  Branches       31       31
=======================================
  Hits          105      105
  Misses         21       21

Impacted Files
Coverage Δ

example/src/main.ts
88.46% <100.00%> (ø)

src/index.ts
82.00% <100.00%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update bd3c1f1...c12d858. Read the comment docs.


Accented character on url responds with 404

Hi,
I was trying to fetch the content of an image using request and the module responds with a 404. Debugging on the onRequestResponse method I get the following response:
onRequestResponse http://www.tecnofanatico.com/wp-content/uploads/2015/07/Sin-título-1-150x150.png 404 { date: 'Wed, 15 Jul 2015 16:04:59 GMT',
  server: 'Apache/2.2.29 (Unix) mod_ssl/2.2.29 OpenSSL/1.0.1e-fips mod_bwlimited/1.4',
  'x-powered-by': 'PHP/5.4.33',
  vary: 'Cookie',
  'x-pingback': 'http://www.tecnofanatico.com/xmlrpc.php',
  expires: 'Wed, 11 Jan 1984 05:00:00 GMT',
  'cache-control': 'no-cache, must-revalidate, max-age=0',
  pragma: 'no-cache',
  connection: 'close',
  'transfer-encoding': 'chunked',
  'content-type': 'text/html; charset=UTF-8' }

The url is valid and displays an image, but I've noticed an accented i character í in the filename.
Btw I am using node version 0.12.6.
So, this is not all.
I tried with node version 0.10.38 and it works...
Here's the debugging output, while using 0.10.38
onRequestResponse http://www.tecnofanatico.com/wp-content/uploads/2015/07/Sin-título-1-150x150.png 200 { date: 'Wed, 15 Jul 2015 16:13:30 GMT',
  server: 'Apache/2.2.29 (Unix) mod_ssl/2.2.29 OpenSSL/1.0.1e-fips mod_bwlimited/1.4',
  'last-modified': 'Wed, 01 Jul 2015 15:29:46 GMT',
  etag: '"54603fd-82ed-519d1fe2a7d25"',
  'accept-ranges': 'bytes',
  'content-length': '33517',
  'keep-alive': 'timeout=5, max=100',
  connection: 'Keep-Alive',
  'content-type': 'image/png' }

@dinostheo : I managed to fix it at our end.

@mvdwalle what exactly was the fix?

Basicly properly URL encoding the URL. Below is how I done it
// Prevent double decoding
url = decodeURIComponent(url);

// Encode path if needed
var parts = urllib.parse(url);
if (parts.pathname) {
    parts.pathname = parts.pathname.split('/').map(function (part) {
        return encodeURIComponent(part);
    }).join('/');
    url = urllib.format(parts);
}

Same issue here.

I think it's the same issue as #926.


Open Publishing redirects doesn't work for GH content

Is your feature request related to a problem? Please describe.
When adding redirects in a doc repo to the openpublishing config, the website is fixed, but when you're working on editing or navigating in GH, the hyperlink navigation remains broken.
Describe the solution you'd like
Update the links at the same time as adding in the redirect. This might partially defeat the purpose of the redirect.
Describe alternatives you've considered
Leave a placeholder file in the old location with the redirect information. This would likely confilct with the real openpublishing redirect
Additional context
I've been trying to run some link validators like https://github.com/tcort/markdown-link-check, but they get confused because these redirects are virtual.
I did chat with some of the @thedanfernandez at MSBuild about this, so maybe there is already an internal ticket.

@thedanfernandez Have we already opened a internal ticket?

@nschonni what repo are you working with where you are trying to set up redirects?

Mostly I've been chipping in a bit of stuff on VSTS-docs, but the issue is a general one about using the openpublishing.redirect.json means the GitHub naviation/linking doesn't work unless the Markdown files are also updated.

I am going to go ahead and open an internal ticket for this - thanks for the suggestion, @nschonni 👏

#log-suggestion

🚀 ATTENTION: Internal request logged.

GitHub user thedanfernandez has been removed from the MicrosoftDocs organization, so they were automatically removed as an assignee.

Hello - reviewing and cleaning up some older feedback/issues. Thanks!

@keziamicro was the internal ticket raised ever resolved?

@keziamicro @nschonni the internal ticket was resolved As Designed. The process for redirecting files includes manually updating links as the writer's responsibility. We have a backlog Epic to completely redo the redirection tooling to make it more automated, but it hasn't been committed to a quarter yet and we don't plan to make incremental improvements to the current system before then.


Format of zone file?

What format do you want the zone to be in?  bind? cli53 output? djbdns? powerdns?
Expected Behavior
Docs should be a little more verbose of format to be used.
Current Behavior
Docs don't tell us format for the zone file?
Possible Solution
Fixing the docs.
Steps to Reproduce (for bugs)

Read the docs.
Search for any clue of zone format (hint: if I search for bind as I'm making a guess as the format, it doesn't turn up)

Context
I'm wishing to use https://github.com/barnybug/cli53 to be able to parse aws zones.
You can get a bind-compatible output by using "export".

Hey Brian,
Yeah, we could clarify that a little more.  This version currently only supports reading Bind / RFC 1035 style zone files.  If you're up for it, you can open a PR with the clarification.
Is there a generally recognized format for AWS R53 zone files?  It would definitely be possible to add support for parsing that.  One of our internal versions had support for loading records exported to an internal JSON format.  The implementation of that format wasn't very elegant, but I've got an idea of how it could be done more nicely.
Thanks,
Paul


Feature/stackn 159

Issue STACKN-159
Status

[X ] Ready
[ ] Draft
[ ] Hold

Description
Sometimes it is useful to be able to set environment variables in a model deployment in the config.json file.
Types of changes
What types of changes does your code introduce to STACKn?

[ ] Hotfix (fixing a critical bug in production)
[ ] Bugfix
[ X] New feature
[ ] Documentation update

Checklist
If you're unsure about any of the items below, don't hesitate to ask. We're here to help!
This is simply a reminder of what we are going to look for before merging your code.

[X ] This pull request is against develop branch (not applicable for hotfixes)
[X ] I have included a link to the issue on GitHub or JIRA (if any)
[ ] I have included migration files (if there are changes to the model classes)
[ ] I have read the CONTRIBUTING doc
[ ] I have included tests to complement my changes
[ ] I have updated the related documentation (if necessary)
[ ] I have added a reviewer for this pull request
[ ] I have added myself as an author for this pull request

Further comments
Anything else you think we should know before merging your code!

Also, the PR is against master. Shouldn't it be against develop?


[Fix #1820] Check only keys starting their lines in AlignHash

The problem was that we checked if a key was on the same line as the start of the previous key. That's no good, because it could be on the same line as the end of the previous key, and that's just as bad.

:+1:


Add Milky Way Galaxy Skybox from SpaceDock

This pull request was automatically generated by SpaceDock on behalf of Ub3rshadow, to add Milky Way Galaxy Skybox to CKAN.
Mod details:
name = /mod/2004/Milky%20Way%20Galaxy%20Skybox
author = Ub3rshadow
abstract = A skybox to replace KSP's default skybox with 4K textures of the Milky Way Galaxy.
license = CC BY-NC-ND 4.0
Homepage =
description = The name is pretty self explanatory. In the .zip folder is the license, installation guide and folder with the skybox textures inside. If you are unsure about how to correctly install them, read the installation guide file. If you still aren't sure, then look up a tutorial - there are plenty out there.
Please direct questions about this pull request to Ub3rshadow.

This was added in #6850.


Add JS implementation for BLAS Level 1 srotg routine

Fixes #280.
Checklist

[x] Add readme.md
[x] repl.txt
[x] types
[x] package.json
[x] lib
[x] examples
[x] benchmark
[x] test

@kgryte

I created a few more test, kindly have a look and do suggest if stronger tests are required.

For tests, I'd highly recommend including all the test cases found in the OpenBLAS test suite. Our implementation should return the same results.

Could you please provide the link for the test suite?

https://github.com/xianyi/OpenBLAS/blob/develop/lapack-netlib/BLAS/TESTING/sblat1.f

Some tests fail with
not ok 8 returns expected value
  ---
    operator: deepEqual
    expected: |-
      { 0: -0.5, 1: 1.659999966621399, 2: 0.6000000238418579, 3: 0.800000011920929 }
    actual: |-
      { 0: -0.5, 1: 1.6666666269302368, 2: 0.6000000238418579, 3: 0.800000011920929 }
    at: Test.test (/home/pranavchiku/stdlib/lib/node_modules/@stdlib/blas/base/srotg/test/test.main.js:68:5)
  ...

@kgryte kindly have a look and do tell any changes need to be made.

I applied suggestions from code review and left comments on a few of them which I was not able to understand clearly, those are majorly from docs/types/*.

Also, we have some lint errors in the TypeScript files: https://github.com/stdlib-js/stdlib/actions/runs/4168587179/jobs/7215562644.

I have added simple test for both positive and negative stride, and for offset as well kindly have a look and do tell me if more tests need to be added.
All tests and benchmarks cleared, kindly have a look at this PR. @kgryte

Iterated over suggested changes and added missing suggestions. This PR can have a final review. Apologies for inconvenience caused.

Aah, sorry for that, I will do that soon and ping you once done.

I do not know why typescript linters are not working for me, that is why facing so much trouble, once this PR gets merged I will again install node-modules.

Finally got all tests passed! @kgryte you can have a final review, apologies for highly messed up PR!

I updated typescript tests, applied recent code review, all tests and benchmarks cleared, this PR can have a review.


~ThreadObject() seems to be causing crashes

Destructor for ThreadObject is causing intermittent crashes

Specifically at this line:
listener->threadObjectToChangeSubscribers->erase(this->getThreadId());


Documents multi-tenant, auth-enabled deployment on IBM cloud

Supports #2000 by using GitHub OAuth app as 3rd party auth provider.

/cc @adrian555

Thanks @shawnzhu for documenting it clearly. I would suggest we hold this PR until the kfctl PR https://github.com/kubeflow/kfctl/pull/364 is merged.

/lgtm

@animeshsingh May ask for your approval?

/approve


Add watch history

The Issue
App should contain a watch history list. Been using the app for some time now and need to find a video watched some time back. No such feature exists currently.
Expected behaviour
A section in navigation drawer below "All Content" with name "Watch History". Opens up a list of all the videos watched previously.
System Configuration

Device: Any
Android version: All

Anything Else
For privacy reasons, watch history can be made local by default and user can have option to sync with email if required.
Acceptance Criteria

A section in navigation drawer below "All Content" with name "Watch History". Opens up a list of all the videos watched previously.

Definition of Done

[ ]  Tested against acceptance criteria
[ ] Tested against the assumptions of the user story
[ ] The project builds without errors
[ ] Unit tests are written and passing
[ ] Tests on devices/browsers listed in the issue have passed
[ ] QA performed & issues resolved
[ ] Refactoring completed
[ ] Any configuration or build changes documented
[ ] Documentation updated
[ ] Peer Code Review performed

Thank for opening this feature suggestion!


Director::host doesn't fallback to BASE_URL

The host function uses alternate_base_url instead of just calling baseURL() (which itself uses alternative_base_url if it exists).  This shoudl be changed so that if a site doesn't have alternate_base_url defined, it will now fall back to using the BASE_URL env variable
PRs

[ ] https://github.com/silverstripe/silverstripe-framework/pull/10155

On further inspection, as noted in the PR, BASE_URL via SS_BASE_URL is already used


not full promise interface (queries cannot be used in chains)

I am trying to chain couple of queries one after another - create table, insert, select ...
I want to create something like this:
createTable()
  .then(insertMockUsers)
  .then(selectUsers)

The problem is the .then interface is not acting like a promise interface.
Currently I can do this:
var selectUsers = knex.select().from("users");
selectUsers.then(...)

knex.select().from("users")  creates knex query object and
.then both executes the query itself and allows us to chain things afterwards.
Looks like a promise interface, but it's not.
You can only chain things afterwards but not the action selectUsers itself as it is not a promise.
My current solution is a promisifyKnexQuery function:
function promisifyKnexQuery(knexQuery){
  return function(){
    var deferred = Promise.pending();

    knexQuery.then(function(result){
      deferred.resolve(result);
    },function(err){
      deferred.reject(err);
    })

    return deferred.promise;
  }
}

which can be used like this:
var insertUsers = promisifyKnexQuery( knex("users").insert(mockUsers) );

createTable().then(insertUsers).then(selectUsers)

The solution for a proper promise interface is to implement a toPromise() method. Which would return a promise function that can be used both to start promise chain and be used inside a promise chain.
var insertUsers = knex("users").insert(mockUsers).toPromise();

Yep, I'm going to fix this before 1.0 by making the backing data for the query chain immutable and throwing if the query is mutated after the promise is executed. Otherwise you'll want to use the .clone method to re-use query partials.

See also #966

Workaround:
var selectUsers = () => knex.select().from("users");

createTable()
  .then(insertMockUsers)
  .then(selectUsers)

The promise-like functionality used by transactions is even worse and leads to a hang in my TypeScript application.  Here is an example:
let session = {
    commit = (txn: Knex.Transaction) => Promise<void> {
        if (!this._commitPromise) this._commitPromise = txn.table('session').insert(...);
        return this._commitPromise;
    }
};

let token = {
    session: session,
    commit: (txn: Knex.Transaction) => Promise<void> {
        if (!this._commitPromise) {
            this._commitPromise = this.session.commit(txn)
                .then(() => {
                    return txn.table('session').insert(...);
                });
            });
        return this._commitPromise;
    }
};

The intent of the logic is to:

prevent multiple concurrent commits of the same model
allow committing the session indepedent of the token
committing the session automatically, if not already done, when committing the token

The following works:
knex.transaction((txn) => {
    return token.commit(txn);
});

This does not:
knex.transaction((txn) => {
    return session.commit(txn);
});
knex.transacation((txn) => {
    return token.commit(txn);
});

The "promise" for the session, although resolved, does not invoke the new "then" clause added by the independent token commit.
To fix this issue, I have had to wrap all of the Knex promise-like stuff in another real promise like so:
let session = {
    commit = (txn: Knex.Transaction) => Promise<void> {
        if (!this._commitPromise) {
            this._commitPromise = new Promise<void>((resolve, reject) => {
                txn.table('session').insert(...).then(resolve).catch(reject);
            });
        }
        return this._commitPromise;
    }
};

@raijinsetsu QueryBuilder instance is not a promise, but it is a thing called thenable (check terminology in https://github.com/promises-aplus/promises-spec)... So your .toPromise() is currently actually the same that QueryBuilder.then.
One big difference between promise and thenable is that thenable does not have to be triggered already. If you have promise it is already running its code to resolve its status... so builder pattern is not really possible to be implemented if every query builder instance would be promise.
For the converting QueryBuilder instance to promise, one may use e.g. Promise.resolve() (from Promise specification).
e.g.
let session = {
    commit = (txn: Knex.Transaction) => Promise<void> {
        if (!this._commitPromise) this._commitPromise = Promise.resolve(txn.table('session').insert(...));
        return this._commitPromise;
    }
};

Btw. using commit word to tell that insert query is sent to DB was really confusing to me... It took me a while to understand that you actually were not committing transaction when calling .commit(txt), but only storing data do DB :)
That being said. If this fundamental API is being changed hopefully old API is stabilized to 1.0 before creating Knex 2.0 with new design (otherwise every single knex app will break in that update).

https://github.com/knex/knex/pull/2226#issuecomment-329589115


Support more layers

Hello, thanks for the efforts! Do you think it possible to modify the code to support larger number of sublayers, e.g. >75 layers?

Unfortunately I'm so far removed from this code at this point that I
wouldn't know where to start with that.
On Mon, Jun 7, 2021 at 10:17 PM jfhuang @.***> wrote:

Hello, thanks for the efforts! Do you think it possible to modify the code
to support larger number of sublayers, e.g. >75 layers?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/ocrickard/SHAKE16/issues/6, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAGRMQJKRGPCEPERK3TEMTLTRWDU5ANCNFSM46I57ATQ
.


CU-8677bmjqw - Compiler Plugin: Suspend in abstract class

for this we had to make sure the def continuation signature we create in the transformation is the same for all our cases.

~as a result though this breaks the polymorphic functions in PolymorphicDefsZeroContinuations.scala. this needs to be looked into.~ fixed in 6a997ce
~the other issue is calling the method on the point that we create the class eg new ExampleClass2Impl("AAA").continuations(1, 2)~ fixed in d6d3107
~existing tests need to be updated~ done in 1391837
new tests need to be added for the abstract class case

going through the commits maybe will help with the review

The continuations plugin, with its PRs, has been ported to a separate repository.


Build error (gradle?)

Hi!
Sorry if this is a rookie question, but I can't seem to figure it out by myself.
So when I try to use ./release.sh, I get this error;
The Meson build system
Version: 0.49.2
Source dir: /home/lamarca/Downloads/scrcpy
Build dir: /home/lamarca/Downloads/scrcpy/build_test
Build type: native build
Project name: scrcpy
Project version: 1.10
Native C compiler: cc (gcc 8.3.0 "cc (Debian 8.3.0-6) 8.3.0")
Build machine cpu family: x86_64
Build machine cpu: x86_64
Found pkg-config: /usr/bin/pkg-config (0.29)
Dependency libavformat found: YES 58.20.100
Dependency libavcodec found: YES 58.35.100
Dependency libavutil found: YES 56.22.100
Dependency sdl2 found: YES 2.0.9
Configuring config.h using configuration
Program ./scripts/build-wrapper.sh found: YES (/home/lamarca/Downloads/scrcpy/server/./scripts/build-wrapper.sh)
WARNING: Project targetting '>= 0.37' but tried to use feature introduced in '0.48.0': console arg in custom_target
DEPRECATION: build_always is deprecated. Combine build_by_default and build_always_stale instead.
Build targets in project: 8
WARNING: Project specifies a minimum meson_version '>= 0.37' but uses features which were added in newer versions:
 * 0.48.0: {'console arg in custom_target'}
Found ninja-1.8.2 at /usr/bin/ninja
ninja: Entering directory `build_test'
[32/40] Generating scrcpy-server with a custom command.

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ':server'.
> SDK location not found. Define location with an ANDROID_SDK_ROOT environment variable or by setting the sdk.dir path in your project's local properties file at '/home/lamarca/Downloads/scrcpy/local.properties'.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 1s
[38/40] Linking target app/scrcpy.
FAILED: server/scrcpy-server.jar
/home/lamarca/Downloads/scrcpy/server/./scripts/build-wrapper.sh /home/lamarca/Downloads/scrcpy/server server/scrcpy-server.jar debug
ninja: build stopped: subcommand failed.

Does anyone know why I get this error?
Any help is much appreciated!

Where is your Android SDK installed?
Either set ANDROID_SDK or ANDROID_SDK_ROOT to its directory, or create a file local.properties in the scrcpy repo, containing:
sdk.dir=/path/to/your/android/sdk

Oh I had forgotten to install the SDK. Oops!
Where is it located normally?

Never mind, I had misunderstood how to get the SDK.
But I get another error now;
`The Meson build system
Version: 0.49.2
Source dir: /home/lamarca/Downloads/scrcpy
Build dir: /home/lamarca/Downloads/scrcpy/build_test
Build type: native build
Project name: scrcpy
Project version: 1.10
Native C compiler: cc (gcc 8.3.0 "cc (Debian 8.3.0-6) 8.3.0")
Build machine cpu family: x86_64
Build machine cpu: x86_64
Found pkg-config: /usr/bin/pkg-config (0.29)
Dependency libavformat found: YES 58.20.100
Dependency libavcodec found: YES 58.35.100
Dependency libavutil found: YES 56.22.100
Dependency sdl2 found: YES 2.0.9
Configuring config.h using configuration
Program ./scripts/build-wrapper.sh found: YES (/home/lamarca/Downloads/scrcpy/server/./scripts/build-wrapper.sh)
WARNING: Project targetting '>= 0.37' but tried to use feature introduced in '0.48.0': console arg in custom_target
DEPRECATION: build_always is deprecated. Combine build_by_default and build_always_stale instead.
Build targets in project: 8
WARNING: Project specifies a minimum meson_version '>= 0.37' but uses features which were added in newer versions:

0.48.0: {'console arg in custom_target'}
Found ninja-1.8.2 at /usr/bin/ninja
ninja: Entering directory `build_test'
[32/40] Generating scrcpy-server with a custom command.

FAILURE: Build failed with an exception.

What went wrong:
A problem occurred configuring project ':server'.

SDK location not found. Define location with an ANDROID_SDK_ROOT environment variable or by setting the sdk.dir path in your project's local properties file at '/home/lamarca/Downloads/scrcpy/local.properties'.

Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

Get more help at https://help.gradle.org

BUILD FAILED in 866ms
[38/40] Linking target app/scrcpy.
FAILED: server/scrcpy-server.jar
/home/lamarca/Downloads/scrcpy/server/./scripts/build-wrapper.sh /home/lamarca/Downloads/scrcpy/server server/scrcpy-server.jar debug
ninja: build stopped: subcommand failed.`

Never mind, I misunderstood how to get the SDK.
But I get another error now;
`[0/1] Generating scrcpy-server with a custom command.

Configure project :server
File /home/lamarca/.android/repositories.cfg could not be loaded.
Checking the license for package Android SDK Build-Tools 28.0.3 in /home/lamarca/Documents/Android/licenses
Warning: License for package Android SDK Build-Tools 28.0.3 not accepted.

FAILURE: Build failed with an exception.

What went wrong:
A problem occurred configuring project ':server'.

Failed to install the following Android SDK packages as some licences have not been accepted.
build-tools;28.0.3 Android SDK Build-Tools 28.0.3
To build this project, accept the SDK license agreements and install the missing components using the Android Studio SDK Manager.
Alternatively, to transfer the license agreements from one workstation to another, see http://d.android.com/r/studio-ui/export-licenses.html

Using Android SDK: /home/lamarca/Documents/Android

Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

Get more help at https://help.gradle.org

BUILD FAILED in 1s
FAILED: server/scrcpy-server.jar
/home/lamarca/Downloads/scrcpy/server/./scripts/build-wrapper.sh /home/lamarca/Downloads/scrcpy/server server/scrcpy-server.jar release
ninja: build stopped: subcommand failed.`
How do I accept the license agreement and get the missing components?

https://stackoverflow.com/questions/39760172/you-have-not-accepted-the-license-agreements-of-the-following-sdk-components
(Note: use ``` for code blocks in GitHub comments)

Ah, sorry. I'll remember that.
Well, no luck so far. I get a java error when I try to use ./sdkmanager --licenses.
I hope it's okay if I post it here:
	at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156)
	at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75)
	at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81)
	at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:73)
	at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
	... 5 more```

Well, I got it to work by downloading the pre-built server.
Thanks for the help anyway!


Fix badges

Pull Request Test Coverage Report for Build 9f8dfe793b13d0b00fa104661fd2e7a861a01b2f-PR-226

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 100.0%

Totals

Change from base Build 2a1b8518fb901055390c2560d565fbe21ff33e26:
0.0%

Covered Lines:
236

Relevant Lines:
236

💛  - Coveralls


terminal not restored properly

When the connection gets closed by the remote host, the terminal gets not restored properly. e.g. the cursor is missing

shutting down properly seems to work.


Support for manylinux aarch64 (and armv7)

Hey! I'm running a Docker container (python:3.11) on an M1 mac and pip is unable to find a compatible version of mjml-python. It looks like cross compilation needs to be added to the Github action to get a compatible wheel built. The Pydantic package has a massive matrix to show how to do it: https://github.com/pydantic/pydantic-core/blob/main/.github/workflows/ci.yml
I think the key is just to set target on the maturin-action to aarch64, and maybe armv7 too. Thanks!

I've switched to https://pypi.org/project/mjml/ for now, but will come back once this works! Let me know if you need a tester :)

I saw that too, but the other Rust projects I saw seemed to be doing it somehow. I know some languages like Go support cross compiling binaries with different architectures on the same machine, maybe Rust can too? That action Pydantic uses seems to build inside a Docker container designed to cross compile on the x86 GitHub runners. Did you try and run into problems?

It works! And it's o, so fast. Thank you! I also suggested this get used in a mjml Django integration https://github.com/liminspace/django-mjml/issues/184, however, I'm on the fence about the template tag approach vs just doing what's in the README here. I'm not sure if it has any advantages. I guess it could be used in an "open in browser" feature where you'd need to inline an mjml template inside an HTML page. I'll be experimenting with it over the next few weeks.


Changes to selected test processing

The selected test node in the tree did not really belong in the model as it's part of the presentation logic. This PR  takes care of the problem.

Created more event handler delegates and event argument types, so events will be a bit more type-safe than they were. Discovered some errors in the code in the process.

Eliminated SelectedTest as a model property.

Added a model method NotifySelectedTestItemChanged, which causes the model to re-broadcast a change discovered by one of the presenters so that other presenters can handle it.

Each presenter that uses the selected item independently maintains a field with the current selection.

I plan to follow the rule of three here. That is, if we find a second event that needs to be handled by multiple presenters, I'll just add an event and notify method to the model. But once we find a third one, I would expect to add a subsystem that allows registering events to be broadcast.

@iCodeIT Would you take a look at this?

I think it looks good - one word of warning: I am out with a cold, so I have not been as thorough as I'd like. (there were a lot of code to cover)
And I like the rule of three.

At this stage of the game, we don't have to be terribly good about reviews. I will want to tighten up as we approach a release and follow our normal standards. For now, I'm merging this.


Vulkan: Using main Viewport as Sprite2D texture causing artefacts and error

Godot version
v4.0.alpha6.official [e4f0fc50f]
System information
Windows 11, Vulkan, Nvidia 3080Ti (511.79)
Issue description
Using main Viewport as Sprite2D texture causing artefacts and error:
E 0:00:02:0993   draw_list_bind_uniform_set: Attempted to use the same texture in framebuffer attachment and a uniform (set: 3, binding: 0), this is not allowed.
<C++ Error>    Condition "attachable_ptr[i].texture == bound_ptr[j]" is true.
<C++ Source>   drivers/vulkan/rendering_device_vulkan.cpp:7419 @ draw_list_bind_uniform_set()

Steps to reproduce
Create sprite 2d, assign main viewport texture to it.
Minimal reproduction project
Viewport.zip

This same error was mentioned in a few places so I want to create a link to them so that people eventually find this issue as it doesn't yet come up on Google:

https://github.com/godotengine/godot/issues/44473#issuecomment-748490674
https://github.com/godotengine/godot/issues/66483#issue-1387025952
https://godotengine.org/qa/132245/trying-shader-based-game-using-same-texture-uniform-allowed
https://youtu.be/VSwVwIYEypY?t=377 (clearly shows the error spam - watched by 66K times, not sure how many encountered the same error and also encountered 512x512 error fixed by #69256 )

This issue is still occurring in 4.0.3.

Still occurring in 4.1.1 stable. More or less any viewport texture to itself, in order to reference a prior frame. This all works in spite of the message suggesting that it is not allowed. The error spam ends up making the debugger quite useless that I will likely build Godot myself to silence it, which isn't the worst workaround.

I found a workaround that eliminates the warning.
try this:
var viewport_texture = get_viewport().get_texture()
node.texture = ImageTexture.create_from_image( viewport_texture.get_image() )

the docs mention that you might want to do
await RenderingServer.frame_post_draw

before creating the image texture. Which wasn't necessary for my usecase. But I thought I would still mention it here.

Just jumping in here to add some context. Using the root Viewport as a texture to draw a Sprite in the root Viewport is not supported and cannot be supported. The error is correct, but not very helpful for end-users.
What we probably need to do is detect if the user is trying to use the ViewportTexture of the root Viewport and then provide a proper error that this is not supported.
This will of course be tricky as we need to do the same for SubViewports (SubViewports cannot be used as a texture to draw an item that is a child of that SubViewport)


fix: put back "data_collection" module

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

v5.0.7
GitHub release

Your semantic-release bot :package::rocket:


Django 2.0 support

Django-scarface does not run properly on Django 2.0
ForeignKey's now require on_delete set on them as the release notes state

Hey @kennydude sorry for the late answer. If you would create a PR we would be happy to merge it. We still use this framework in production, but no further development is planned from us atm.


constrain all numpy-dependent packages to numpy <2

This addresses #516. It creates a huge diff (~~200k~ ~100k[^1] artefacts affected 😱), which can be viewed in this gist.
[^1]: after restricting to py>39 & noarch
AFAICT, this is mainly due to various feedstocks open-coding a pure run-dependency like - numpy >=1.16, which unsurprisingly doesn't get affected by the run-export we've had for 2 years (https://github.com/conda-forge/numpy-feedstock/commit/bca09161e46d1a986e061e4aaf6a21d8eb809a98) when building against numpy.

Not sure how well we can express that in the new yaml format, but we could restrict the patching to python >=3.9 builds, because anything below will never get a numpy 2.0 release.

we could restrict the patching to python >=3.9 builds, because anything below will never get a numpy 2.0 release.

OK, I did that now, gist is updated; now "only" 100k artefacts are affected, rather than 200k.

Thanks Axel! 🙏
Interesting observation. Yeah we could limit to Python 3.9+. Timestamp might be a good proxy as we can look at when Python 3.9.0 was packaged. How many would that affect?
If we limit to Python 3.9 or newer, we might want to handle noarch: python as well
Am guessing most of these are packages that simply depend on NumPy at runtime. Is that true?
Would think the ones with NumPy as a build dependency are already constrained, but it would be interesting to know if there are any exceptions

I've sorted the various sections in the output of show_diff.py; should be a bit easier to read now. Link to the gist in OP.

Interesting observation. Yeah we could limit to Python 3.9+. Timestamp might be a good proxy as we can look at when Python 3.9.0 was packaged. How many would that affect?
If we limit to Python 3.9 or newer, we might want to handle noarch: python as well

This is all already solved in https://github.com/conda-forge/conda-forge-repodata-patches-feedstock/pull/712/commits/9305679d4fdf23c2663aba769e74da4a1a44083e

Am guessing most of these are packages that simply depend on NumPy at runtime. Is that true?
Would think the ones with NumPy as a build dependency are already constrained, but it would be interesting to know if there are any exceptions

Anything built before the numpy builds using the run-export (which was actually backported until 1.19; https://github.com/conda-forge/numpy-feedstock/commit/b84c9f456a85a818bb6737d436e6cb7f0f44c9ae) would just be relying on pin_compatible, or whatever the recipe at the time specified. So realistically, every package compiled against numpy in the last 2 years has correct run exports. Anything older than that might be affected. The rest is from run-requirements.

 No-one has prepared for a numpy 2.0 world (except the last couple of months) - a few years ago this was considered a creature of mythology only. I disagree that we should just publish numpy 2.0 and let existing packages with unbounded numpy requirements crash and burn. Every package needs to validate that it's 2.0-ready.

Sorry Axel was posting on my phone with poor network. So I didn't see your comment. Thanks for following up!
IIUC Matt is just saying that if a package already has a constraint (or perhaps a tighter constraint) that already excludes NumPy 2, then we can skip those. Matt do you have a suggestion on syntax?

The issue is exactly unbounded requirements. No-one has prepared for a numpy 2.0 world (except the last couple of months) - a few years ago this was considered a creature of mythology only.

The historical approach of conda-forge has been to take a minimal approach to these issues. We manage and run ABI migrations primarily out of necessity. In the vast majority of cases, we leave API breaks to maintainers except for a few special cases (e.g., noarch python 2x to 3x).

I disagree that we should just publish numpy 2.0 and let existing packages with unbounded numpy requirements crash and burn.

We're not letting packages crash and burn. We're giving people choices about how they want to handle a partial API break. There are a lot of APIs in numpy that will stay the same.

Every package needs to validate that it's 2.0-ready.

This is potentially a ton of work we are foisting on maintainers and only one approach. My personal approach is to wait and see for feedstocks I maintain. If things break, I'll fix them.

IIUC Matt is just saying that if a package already has a constraint (or perhaps a tighter constraint) that already excludes NumPy 2, then we can skip those. Matt do you have a suggestion on syntax?

No, this is not what I am saying. The repodata patching code already knows how to do this.
What I am saying is that we should only be patching packages that used numpy at build time.

Except NumPy has made breaking changes in the pure Python layer

Except NumPy has made breaking changes in the pure Python layer

Yes, but as I have said above, we have always left the vast majority of API break to maintainers to handle.

Ok well I disagree and would agree with Axel here
The issue is insufficiently constraining packages will negatively impact users installing the packages (maybe with no idea what is going on) and ourselves as we will have to scramble to do what we are already proposing to do now
In terms of maintainers we can extend the NumPy migration to pure Python packages. That would build confidence that packages are working properly by testing them. Though ultimately it is a core package making a major version bump, it will be a lot of work no matter what

Yeah I disagree. Sorry for being late to the party here. I had to miss the meeting this week.
FWIW, I 100% agree we should be doing the ABI-related ones. IIUIC, the ABI related ones are already handled if people have been using pin_compatible properly and not putting numpy versions in host.
We should take a look at similar situations in the past. As far as I know, we did not make any global effort on patching when pandas had major version bumps. For sure pandas isn't as core to the ecosystem as numpy, but it is big. We did see quite a few breaks and they were fixed.

The issue is insufficiently constraining packages will negatively impact users installing the packages (maybe with no idea what is going on) and ourselves as we will have to scramble to do what we are already proposing to do now

We can leave this PR open and merge it later if the sky falls down or w/e. No scramble is needed.

In terms of maintainers we can extend the NumPy migration to pure Python packages. That would build confidence that packages are working properly by testing them.

That sounds nice but I think the marginal value is small. We don't typically do a ton of detailed testing in a build feedstock. OFC the build itself will test build issues very well!

Though ultimately it is a core package making a major version bump, it will be a lot of work no matter what

Agreed it will be a lot of work. I am advocating that we let people choose how they want to do that work instead of forcing them to come through with a new release of their package and new build of the associated feedstock. If this PR is merged, and I want to remove the patch from a feedstock I maintain, it is going to be a pain and also very confusing.
Why not make an opt-in system for the API-related patches here and let folks submit PRs to add their packages if they feel they need to?

Numpy has too big a blast radius IMO to just leave this to shake out "naturally". It's IMO a substantial risk that regular environments start breaking when they get upgraded to numpy 2.0 due to the packages not having foreseen numpy 2.0 and lacking that constraint - that's IMO not worth the hassle of breaking users, lots of confused bug reports, stressed feedstock maintainers, and ultimately reputational damage. I'd much prefer to take our time to roll out 2.0 more judiciously than just lobbing it into the room and seeing if things go boom.

I'd much prefer to take our time to roll out 2.0 more judiciously than just lobbing it into the room and seeing if things go boom.

Agreed! Let's do that in a way that gives people choices instead of patching 100k artifacts at once.

Sorry, our answers crossed wires.

Why not make an opt-in system for the API-related patches here and let folks submit PRs to add their packages if they feel they need to?

I don't see how we could reasonably distinguish that (unless you mean leaving out noarch). IMO the much easier way to opt in would be: if a feedstock wants 2.0 support, just rebuild it after numpy 2.0 is available (which is as simple as asking the bot to rerender).

Let's do that in a way that gives people choices instead of patching 100k artifacts at once.

The lack of constraints in the metadata forces our hand. Publishing numpy 2.0 to main will instantly make it installable with all those packages lacking a <2 cap, so I don't see how we'd be giving people any choice in the matter.

I don't see how we could reasonably distinguish that

Assuming folks have been following our docs (which is all we are responsible for anyways), then their packages that build against numpy use pin_compatible in run and so have a <2 constraint already. See an example here for a package I help maintain

So all of the ABI-related breakages have already been handled.
Thus we can reasonably assume that anything left without a <2 constraint is API-related only.

I don't see how we'd be giving people any choice in the matter.

We could imagine lots of procedures to help folks. Here are some ideas:

Publish numpy 2.0 but weigh it down with several track features for a period of six months. This will prevent most installs but give people room to opt-in and see what happens. After that time, we remove the extra track features under the assumption that most of the ecosystem has moved ahead.
As I mentioned above, give people a few months to opt-in to a patch excluding numpy 2.0 by adding their package to a text list in this repo. We could add a linter hint for feedstocks urging them to do so, make announcements, open an issue on feedstocks warning them to do something with instructions, etc.
We could add a specific numpy2 mutex that would let people have complete control over using numpy2 and then bump the default value for the mutex at a later date. This is a more formal version of my first item in this list.

Not to derail this important discussion, but would it be possible to look at whether there are any packages using NumPy at build, but missing an appropriate constraint at runtime?

Not to derail this important discussion, but would it be possible to look at whether there are any packages using NumPy at build, but missing an appropriate constraint at runtime?

Yes, this is a good question. Two ideas:

We can look at the recipes now and just check the meta.yaml. This will catch a lot of things.
For any artifact with the rendered recipes in it, we can check directly. I think the artifacts always have their recipes? This would be slow, but more complete.

We can look but ultimately folks who don't follow our docs are own their own at some level.

then their packages that build against numpy use pin_compatible in run and so have a <2 constraint already.

Even without pin_compatible, they'd already be getting the run-export for ~2 years if they host-depend on numpy. :)
Though there are still builds from before that time that the resolver would then take into account, e.g.
osx-arm64::tensorflow-base-2.4.1-py39h8c0364c_0.tar.bz2
osx-arm64::tensorflow-base-2.4.3-py39h34a2d98_0.tar.bz2
osx-arm64::tensorflow-estimator-2.6.0-py39h4ec10df_0.tar.bz2
-    "numpy >=1.19",
+    "numpy >=1.19,<2.0a0",

That is another side of the major risks IMO - the fact that we could be pushing the solver into a corner that hasn't been closed off, because it finds old package versions that are "compatible" while looking for ways to install numpy 2.0.

Thus we can reasonably assume that anything left without a <2 constraint is API-related only.

The various API incompatibilities are what I meant by not just releasing and waiting to see if things go boom.

We could imagine lots of procedures to help folks. Here are some ideas:

Agreed that with big hammers like track_features or mutexes we could avoid surprises, though at this point, the discussion should probably be moved to https://github.com/conda-forge/conda-forge.github.io/issues/1997. :)

Ah sorry @h-vetinari. I was responding to the comment you said about how we would know if the runtime dep was API or ABI. Agreed that the run export helps too.
I am all for preemptively patching selected packages (e.g., tensorflow, packages we can figure out build with numpy but are not pinned correctly, other common cases) which we know will have issues.
What I do not like is patching 100k artifacts at once. We can and should be using a more delicate approach.
Also, just to be clear, as usual since I am speaking up, I am more than happy to help out with the extra work I am creating here.

Also, just to be clear, as usual since I am speaking up, I am more than happy to help out with the extra work I am creating here.

Kind reminder @beckermr that we need to do something here. Otherwise a lot of stuff will break.

Thanks for the reminder. I think we should go ahead and formulate a list of big packages we know about with issues. IDK precisely which ones, but here is a possible start:

[ ] scipy
[ ] tensorflow
[ ] pandas
[ ] jax
[ ] pytorch
[ ] pyarrow
[ ] dask

What other packages do you think we should proactively include? I am happy with this list.
Once this PR has been restricted to those packages, we can make an announcement telling folks to add their package to the patch via a PR if they want. Then we should be good to go.

All packages compiled against numpy must get an upper bound. The only real discussion (to my understanding) was whether to also cap <2 for packages that are just runtime users.

All packages compiled against numpy must get an upper bound. The only real discussion (to my understanding) was whether to also cap <2 for packages that are just runtime users.

Yep and those packages already have an upper bound. So anything in the list I made above that is not compiled against numpy can be removed. Thanks for catching that!
Are there any big ones that are not compiled that you think we should patch? All of the ones above are compiled I think?

@jakirkham what about fastparquet? Should we go ahead and patch that to numpy < 2 ahead of time?

Yep and those packages already have an upper bound.

Not all of them. If someone relies on numpy being present as a transitive host-dependence, it won't get the run-export (yes, you can argue that the recipe is wrong, but we don't know how many could be affected).
Skimming the list of changes from this PR, I also found cases that are curious.
For example py39 builds of astropy 4.1, which correctly did:
  host:
    - python
    - numpy
  run:
    - python
    - {{ pin_compatible("numpy") }}

(though with a superfluous - numpy >=1.16 run-req...), ends up having only a numpy >=1.19 requirement. Since we still support python 3.9 for 1.5 years, I do not want to open up such kinds of holes for the solver to fall into.

I think we should go ahead and formulate a list of big packages we know about with issues.

Perhaps @rgommers can provide some perspective here.
Personally, I still think patching broadly to add numpy <2 is likely the best choice overall. Realistically, nothing is ready for it, and we won't break anything by adding the cap. All the efforts to reduce the number of packages we patch will IMO surface more issues than is worth our time.

Patching 100k artifacts is really not going to work. It also worries me from a technical perspective of the CDN and the workflow on the anaconda backend.
I flagged astropy already above in the list. Any others that you feel are needed?
As I said before, we cannot be responsible for incorrect recipes. We can provide tools and information for folks to help themselves.

The streamlit app is wrong here. cc @jaimergp
I looked directly on anaconda.org and see the upper bound for numpy.

As I said before, we cannot be responsible for incorrect recipes. We can provide tools and information for folks to help themselves.

I'm not saying to assume responsibility for incorrect recipes. But it is our responsibility if we do something that breaks existing packages/workflows, incorrect or not. Before it was working (even if partly by accident), then it suddenly breaks. Whether we like it or not, this IMO falls under our responsibility as stewards of "keeping the show on the road", and doubly so if we foresee the possibility of a problem beforehand.
If this is even moderately widespread, it'll create a lot of negative sentiment on conda & conda-forge. I worry that (through cumulative effects) we'd end up breaking a lot of current deployments/environments, and insisting that the recipes were wrong isn't gonna buy us any favours IMO.

It also worries me from a technical perspective of the CDN and the workflow on the anaconda backend.

Can we get input on that from the anaconda folks?

I also assume that Anaconda will have to deal with very similar issues once they introduce numpy 2.0. Perhaps its worth having the discussion how to tackle that in a wider circle?

Note also that widespread patching also causes issues, especially when the local repodata differs from upstream. Not all of our solvers correctly handle that case. Last I checked they use the local repodata instead of the downloaded repodata for already installed packages.

Note also that widespread patching also causes issues

Yeah, there's no free lunch... I'd like to understand better what the costs are though. Prioritizing local repodata is always going to be an issue in repodata patching efforts, so it's not especially related to how many packages we patch?
Out of curiosity, I removed the noarch-packages from the packages to patch here, which would save ~30k artefacts, leaving ~70k to be patched.

As I said before, we cannot be responsible for incorrect recipes. We can provide tools and information for folks to help themselves.

One reason I think we cannot really make that argument in the case of numpy, is that our own tooling creates false positive warnings like:
WARNING: run-exports library package conda-forge/linux-64::numpy==1.26.4=py312heda63a1_0 in requirements/run but it is not used (i.e. it is overdepending or perhaps statically linked? If that is what you want then add it to `build/ignore_run_exports`)

That's because numpy are never linked into the binary and only loaded at runtime (therefore not detected by lief; as an aside, conda-build really should special-case numpy IMO). But if someone takes our own warning  and adds it to ignore_run_exports, we'll have broken packages, and it gets much harder to say "the recipe was wrong" then.

Yeah we're in the weeds here on what we are and are not responsible for. Regardless of that issue or even if ananconda.org can handle the patches, I'm still not in favor because it is very intrusive. Repodata patching is fundamentally an ugly hack and while I am a big proponent of it as necessary evil, I'd like to minimize it.

Realistically, nothing is ready for it,

When there's usage of the C API, then yes - but I believe that case was in good shape already? Modulo the "transitive host-dependence" corner case that is.
For regular usage of NumPy's Python API, this may be overstating the problem. The fixes in many downstream packages were fairly small. So I expect most packages to fail some of their tests, but import fine and have most of their functionality work.

I think we should go ahead and formulate a list of big packages we know about with issues.

I would add everything from https://github.com/numpy/numpy/issues/26191 - it contains the exact versions that are compatible; older versions should get the constraint for Python >=3.9. That list is broad enough that I expect it to catch a lot of issues (most Python environments that use numpy are going to have one of those packages in them).

Thanks @rgommers. I took that list to come up with a more tightly-scoped alternative in #728


Migrate to Go 1.16 and update dependencies

Is your feature request related to a problem? Please describe.
go-openapi dependency is outdated. It blocks usage of Go 1.16 because of changes in reflect package.
Describe the solution you'd like to see
Look through go.mod and update dependencies.

Fixed in #324


Allow return types of initializers

SE-2305 allows returning Self and Self? from initializers so that the return type can be annotated with _borrow(a) etc.
So we need to allow return clauses on initializers.
rdar://123905900

@swift-ci Please test

@swift-ci Please test Windows

@swift-ci Please test

Note that this should probably go behind experimental

I don’t think it needs to be behind an experimental flag because the syntax tree has always allowed return types on initializers.

Thanks!


Clarify purpose and use of guide

A few questions I recommend you answer so users can find more use to the guide

What is the purpose of the guide
What does it prepare you for
What pre reqs should one have
How are you supposed to work through it
roughly how long would it take someone to accomplish everything the guide outlines
how do I know if I'm ready to move on to next phase

thanks @madebygps for the feedback, will add that


ceylon.file's reader's 'readBytes' crashes when no bytes left to read

After 62b8ea2, readBytes() no longer explicitly handles the case where size == -1, and due to https://github.com/ceylon/ceylon/issues/6954, throws when there are no bytes left to read.
I believe the condition should be size <= 0.

The workaround, of course, is:
[Byte*] readBytes(File.Reader reader, Integer count) {
    try {
        return reader.readBytes(count);
    }
    catch (AssertionError e) {
        if (e.message == "end must be positive") {
            return [];
        }
        throw e;
    }
}


Update promptflow exceptions reference

Description
Commit e301780992c5628b0c38b9b0d77963b95027732e moved the location of the exceptions.py. This PR adjusts sources to changes.
All Promptflow Contribution checklist:

[x] The pull request does not introduce [breaking changes].
[ ] CHANGELOG is updated for new features, bug fixes or other significant changes.
[x] I have read the contribution guidelines.
[ ] I confirm that all new dependencies are compatible with the MIT license.
[ ] Create an issue and link to the pull request to get dedicated review from promptflow team. Learn more: suggested workflow.

General Guidelines and Best Practices

[x] Title of the pull request is clear and informative.
[ ] There are a small number of commits, each of which have an informative message. This means that previously merged commits do not appear in the history of the PR. For more information on cleaning up the commits in your PR, see this page.

Testing Guidelines

[ ] Pull request includes test coverage for the included changes.

@nagkumar91 @luigiw @ninghu can you please reopen this PR and review it? The PR is ready


SPIKE - Trigger jobs based on data availability

Description
Short description of the issue you would like to solve.
Requirements

Requirement 1
Requirement 2

Nice to have or Goal Requirements

Nice to have 1
Nice to have 2

Additional notes
Any additional notes on the issue, if you have them.
Related tickets

#123

Follow up tickets
This spike is not considered complete until at least one follow up issue is created.

[ ] Placeholder ticket

**Below is the template for the response to this ticket. Add as many solutions as needed, but preferably include 2-5 for discussion. The response should be posted as a comment on this issue, or linked in a comment. **
Solution 1
Write an overview of the solution here.
Pros:

pro 1

Cons:

con 1

Additional notes:

note

Solution 2
Write an overview of the solution here.
Pros:

pro 1

Cons:

con 1

Additional notes:

note

Summary
Write up a summary of your findings, including your preferred solution.

Blocked on #71

SPIKE is closed by the comment above. SPIKE was re-opened for a data re-processing discussion, but that discussion has been pushed to SPIKE #187


[SciVee] Site not working

[x] I've verified and I assure that I'm running youtube-dl 2016.04.24

Before submitting an issue make sure you have:

[x] At least skimmed through README and most notably FAQ and BUGS sections
[x] Searched the bugtracker for similar issues including closed ones

What is the purpose of your issue?

[x] Bug report (encountered problems with youtube-dl)
[ ] Site support request (request for adding support for a new site)
[ ] Feature request (request for a new functionality)
[ ] Question
[ ] Other

It's unclear whether it's closed/made private/whatever. Wikipedia still claims it's active. I also haven't found any official announcement or statement.

According to this site down for at least for 3 months:
https://www.reddit.com/r/HelpMeFind/comments/41svmm
/help_me_find_a_video_from_a_defunct_website/?ref=search_posts

It's been a year and site is still down, maybe remove it for good now?

Good idea. Someone on Wikipedia believe it's down, too: https://en.wikipedia.org/w/index.php?title=SciVee&diff=prev&oldid=723161154. I've removed it in 892b47ab6. If it's up again we can add it back.


feat: add basic contracts

Closes #7

Thanks for the reviews! Merging this in. Will be iterating on this of course.


Global request timeout configuration

I would like to know if there is a global request timeout configuration in Envoy v1.20.0. I have read the docs but I couldn't find an answer. The property
route_config.virtual_hosts.routes.route.timeout works as expected, however, it would be nice if I could configure a global request timeout regardless of route.
The following envoy.yaml configures a per route timeout (this is OK):
static_resources:
  listeners:
  - address:
      socket_address:
        address: <IP_ADDRESS>
        port_value: 8080
    filter_chains:
    - filters:
      - name: envoy.filters.network.http_connection_manager
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
          codec_type: AUTO
          stat_prefix: ingress_http
          route_config:
            name: local_route
            virtual_hosts:
            - name: service
              domains:
              - "*"
              routes:
              - match:
                  prefix: "/service"
                route:
                  timeout: 52s # Route timeout is here!!!! Great!!! (header x-envoy-expected-rq-timeout-ms)
                  cluster: local_service
          http_filters:
          - name: envoy.filters.http.router

  clusters:
  - name: local_service
    type: STRICT_DNS
    lb_policy: ROUND_ROBIN
    load_assignment:
      cluster_name: local_service
      endpoints:
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: <IP_ADDRESS>
                port_value: 8888

admin:
  address:
    socket_address:
      address: <IP_ADDRESS>
      port_value: 8081

This second strategy does not work:
static_resources:
  listeners:
  - address:
      socket_address:
        address: <IP_ADDRESS>
        port_value: 8080
    filter_chains:
    - filters:
      - name: envoy.filters.network.http_connection_manager
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
          codec_type: AUTO
          stat_prefix: ingress_http
          common_http_protocol_options:
            max_connection_duration: 10s # Connection timeout
            max_stream_duration: 52s # Is this the same as a global request timeout?
          route_config:
            name: local_route
            virtual_hosts:
            - name: service
              domains:
              - "*"
              routes:
              - match:
                  prefix: "/service"
                route:
                  cluster: local_service
          http_filters:
          - name: envoy.filters.http.router

  clusters:
  - name: local_service
    type: STRICT_DNS
    lb_policy: ROUND_ROBIN
    load_assignment:
      cluster_name: local_service
      endpoints:
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: <IP_ADDRESS>
                port_value: 8888

admin:
  address:
    socket_address:
      address: <IP_ADDRESS>
      port_value: 8081

And this one does not work as well:
static_resources:
  listeners:
  - address:
      socket_address:
        address: <IP_ADDRESS>
        port_value: 8080
    filter_chains:
    - filters:
      - name: envoy.filters.network.http_connection_manager
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
          codec_type: AUTO
          stat_prefix: ingress_http
          route_config:
            name: local_route
            virtual_hosts:
            - name: service
              domains:
              - "*"
              routes:
              - match:
                  prefix: "/service"
                route:
                  cluster: local_service
          http_filters:
          - name: envoy.filters.http.router

  clusters:
  - name: local_service
    typed_extension_protocol_options:
      envoy.extensions.upstreams.http.v3.HttpProtocolOptions:
        "@type": type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions
        common_http_protocol_options:
          max_connection_duration: 52s # Timeout
    type: STRICT_DNS
    lb_policy: ROUND_ROBIN
    load_assignment:
      cluster_name: local_service
      endpoints:
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: <IP_ADDRESS>
                port_value: 8888
admin:
  address:
    socket_address:
      address: <IP_ADDRESS>
      port_value: 8081

I presume you want to have timeouts for upstream connections. You could try to set also max_stream_duration for the upstream cluster. max_connection_duration triggers if there's no active stream.
Maybe @Shikugawa can help.

@arcanjoaq There is no effect configuring max_stream_duration on common_http_protocol_options in HTTP connection manager filter.

How about using x-envoy-upstream-rq-timeout-ms header on the requests? Do note that if both the header as well as route level timeouts are set then the route level timeout will be ignored and the global timeout will be set from the value specified in the header.

@agrawroh
you have an example of configuration x-envoy-upstream-rq-timeout-ms ??
I tried in several ways and I still get error 504 the same as the @arcanjoaq

@arcanjoaq There is no effect configuring max_stream_duration on common_http_protocol_options in HTTP connection manager filter.

So, is there a way to configure a http request connection timeout besides my first example (regardless of route)?

@arcanjoaq You can use max_connection_duration [Link] regardless of route if you want to close the connection. It works for both the upstream as well as downstream.

@agrawroh you have an example of configuration x-envoy-upstream-rq-timeout-ms ?? I tried in several ways and I still get error 504 the same as the @arcanjoaq

@vicalixto The header needs to be added in a way that the router could see it. If you are trying to use add_request_headers on the Virtual Host/Route level then it won't work as the headers aggregation happens after the timeouts get finalized. One way is to use the LUA filter before the Router filter and inject this header directly into the stream so that router can see it.
...
"http_filters":
- "name": "envoy.filters.http.lua"
  "typed_config":
    "@type": "type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua"
    "inline_code": "function envoy_on_request(request_handle)\n  if request_handle:headers() ~= nil and request_handle:headers():get('x-envoy-upstream-rq-timeout-ms') == nil then\n    request_handle:headers():add('x-envoy-upstream-rq-timeout-ms', '60000')\n  end\nend"
- "name": "envoy.filters.http.router"
  "typed_config": { ... }
...

@agrawroh you have an example of configuration x-envoy-upstream-rq-timeout-ms ?? I tried in several ways and I still get error 504 the same as the @arcanjoaq

@vicalixto The header needs to be added in a way that the router could see it. If you are trying to use add_request_headers on the Virtual Host/Route level then it won't work as the headers aggregation happens after the timeouts get finalized. One way is to use the LUA filter before the Router filter and inject this header directly into the stream so that router can see it.
...
"http_filters":
- "name": "envoy.filters.http.lua"
  "typed_config":
    "@type": "type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua"
    "inline_code": "function envoy_on_request(request_handle)\n  if request_handle:headers() ~= nil and request_handle:headers():get('x-envoy-upstream-rq-timeout-ms') == nil then\n    request_handle:headers():add('x-envoy-upstream-rq-timeout-ms', '60000')\n  end\nend"
- "name": "envoy.filters.http.router"
  "typed_config": { ... }
...

@agrawroh
I configured but the timeout continues :( , and returning error 504
validate config and is ok - https://envoylint.com
my envoy config :
static_resources:
listeners:

address:
socket_address:
address: <IP_ADDRESS>
port_value: 80
filter_chains:

filters:

name: envoy.filters.network.http_connection_manager
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
access_log:

name: envoy.access_loggers.file
typed_config:
"@type": type.googleapis.com/envoy.extensions.access_loggers.file.v3.FileAccessLog
path: "/dev/stdout"
json_format: {
"start_time": "%START_TIME%",
"req_method": "%REQ(:METHOD)%",
"req_path": "%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%",
"protocol": "%PROTOCOL%",
"response_code": "%RESPONSE_CODE%",
"response_flags": "%RESPONSE_FLAGS%",
"bytes_received": "%BYTES_RECEIVED%",
"bytes_sent": "%BYTES_SENT%",
"duration": "%DURATION%",
"resp_time": "%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%",
"req_forwarded_for": "%REQ(X-FORWARDED-FOR)%",
"req_user_agent": "%REQ(USER-AGENT)%",
"req_id": "%REQ(X-REQUEST-ID)%",
"req_authority": "%REQ(:AUTHORITY)%",
"upstream_host": "%UPSTREAM_HOST%"
}
codec_type: auto
http_filters:
name: envoy.filters.http.lua
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua
inline_code: |
function envoy_on_request(request_handle)
if request_handle:headers() ~= nil and request_handle:headers():get('x-envoy-upstream-rq-timeout-ms') == nil
then
request_handle:headers():add('x-envoy-upstream-rq-timeout-ms', '60000')
end
end
name: envoy.filters.http.router
skip_xff_append: false
stat_prefix: ingress_http
use_remote_address: true
route_config:
virtual_hosts:

name: health_check
domains:

"10.196.*"
routes:
match:
prefix: "/health"
direct_response:
status: 200

name: kibana
domains:

"kibana.*"
routes:
match:
prefix: "/_plugin/kibana"
route:
cluster: kibana
timeout: 60s
match:
prefix: "/"
route:
cluster: kibana
prefix_rewrite: "/_plugin/kibana"
auto_host_rewrite: true
timeout: 60s

name: load_balancer_2
domains:

"a*"
"b*"
"c*"
"d*"
"e*"
"f*"
"g*"
"h*"
"i*"
"j*"
"k*"
"l*"
"m*"
routes:
match:
prefix: "/"
route:
cluster: load_balancer_2
timeout: 60s

name: load_balancer_3
domains:

"n*"
"o*"
"p*"
"q*"
"r*"
"s*"
"t*"
"u*"
"v*"
"w*"
"x*"
"y*"
"z*"
routes:
match:
prefix: "/"
route:
cluster: load_balancer_3
timeout: 60s
clusters:

name: kibana
connect_timeout: 5s
type: LOGICAL_DNS
dns_lookup_family: V4_ONLY
lb_policy: ROUND_ROBIN
load_assignment:
cluster_name: kibana
endpoints:

lb_endpoints:

endpoint:
address:
socket_address:
address: vpc1.es.amazonaws.com
port_value: 443
transport_socket:
name: envoy.transport_sockets.tls

name: load_balancer_2
connect_timeout: 5s
type: LOGICAL_DNS
dns_lookup_family: V4_ONLY
lb_policy: ROUND_ROBIN
load_assignment:
cluster_name: load_balancer_2
endpoints:

lb_endpoints:

endpoint:
address:
socket_address:
address: LB2.elb.amazonaws.com
port_value: 80

name: load_balancer_3
connect_timeout: 5s
type: LOGICAL_DNS
dns_lookup_family: V4_ONLY
lb_policy: ROUND_ROBIN
load_assignment:
cluster_name: load_balancer_3
endpoints:

lb_endpoints:

endpoint:
address:
socket_address:
address: LB3.elb.amazonaws.com
port_value: 80

@vicalixto What are you excepting out of this config? This should make the timeout for all your routes 60s and yes, you will get a 504 (Gateway Timeout) after 60s.

@arcanjoaq You can use max_connection_duration [Link] regardless of route if you want to close the connection. It works for both the upstream as well as downstream.

I have tried this configuration:
static_resources:
  listeners:
  - address:
      socket_address:
        address: <IP_ADDRESS>
        port_value: 8080
    filter_chains:
    - filters:
      - name: envoy.filters.network.http_connection_manager
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
          codec_type: AUTO
          stat_prefix: ingress_http
          #upstream_protocol_options: # Protobuf message (type envoy.config.bootstrap.v3.Bootstrap reason INVALID_ARGUMENT:upstream_protocol_options: Cannot find field.) has unknown fields
            #max_connection_duration: 52s
          #upstream_http_protocol_options: #  Protobuf message (type envoy.config.bootstrap.v3.Bootstrap reason INVALID_ARGUMENT:upstream_http_protocol_options: Cannot find field.) has unknown fields
            #max_connection_duration: 52s
          common_http_protocol_options:
            max_connection_duration: 52s # Does not work
          route_config:
            name: local_route
            virtual_hosts:
            - name: service
              domains:
              - "*"
              routes:
              - match:
                  prefix: "/service"
                route:
                  cluster: local_service
          http_filters:
          - name: envoy.filters.http.router

  clusters:
  - name: local_service
    type: STRICT_DNS
    lb_policy: ROUND_ROBIN
    load_assignment:
      cluster_name: local_service
      endpoints:
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: <IP_ADDRESS>
                port_value: 8888

admin:
  address:
    socket_address:
      address: <IP_ADDRESS>
      port_value: 8081

But it does not work as expected. It keeps sending "x-envoy-expected-rq-timeout-ms":"15000". If I uncomment upstream_protocol_options or upstream_http_protocol_options, envoy says that it is an invalid argument.
I have searched inside examples directory something about it, but I could not find it. Only per route timeout configuration works as expected.


FN (Global) Modifier

I like to have the FN key as modifier. Because I have many key binding in Code Editors that i can now not use any more.

Hi, sorry what do you mean by this? all keys on the 360 pro are remappable to anything you want

Hi, thanks for the answer. I'm using Mac Os. I launched Karabiner-EventViewer (Karabiner Elements) or Keyboard Viewer (Mac Os). If I press the FN Key on the MacBook Pro Keyboard it produces an event that is displayed in the keyboard viewer.
If I press the fn on the 360pro no event is displayed. How to remap a key that produce a fn event?

Apple FN key does not have a keycode associated with it in ZMK because it's a unique implementation, unfortunately you'll need to find a different way to trigger your keybindings

The FN key can also be found on notebook keyboards from other manufacturers. The FN key is not unique to Apple but common.

Do you see a approuch to make a common FN key event, that is not apple specific?

No, apple use additional HID pages and it's not intercompatible with any other fn key implementation

Okay how to make the other fn key implementation?

This is vendor and device dependent, there's no one size fits all solution

Think of it this way, lots of keys are called "Fn" but they have no relationship to each other.