Version does not have a latest option

Hi guts I use this task to download a package from our devops feed. This is super useful but there is one thing that really annoys me. There is no option to select the 'latest' version. As such every time my package changes version I have to manually go into the pipeline that uses this task and change the version number to the latest one. could you please add a 'latest' option to the version argument.
Thanks

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

ID: ff8354ee-807f-0c1f-8e5b-9303c4591c60
Version Independent ID: 1fd42523-8504-76cf-deec-26c5fccd0109
Content: Download Package task - Azure Pipelines
Content Source: docs/pipelines/tasks/utility/download-package.md
Product: devops
Technology: devops-cicd
GitHub Login: @chasewilson
Microsoft Alias: phwilson

I also agree this could be very helpful! Using the release tags in any form could be helpful, or version wildcards, or both!

It looks like you've encountered an issue with the product itself, rather than an issue with the documentation. To make sure it gets in front of the right people, please submit your bug here.

@WilliamAntonRohm Not a bug: https://developercommunity.visualstudio.com/content/problem/718698/download-package-task-missing-latest-version.html


Utility Groups for Desktop first variants

I have define a class like example below:
class="-md:(top-0 right-0)"
Then in browser it renders like below:
class="-lg:top-0 lg:right-0" (notice that right-0 doesn't have the - prefix).
So i had to define it in css instead:
@screen -md {
  @apply top-0 right-0;
}

Am i missing something here?

Using Vite? Might be a bug I guess


Update README: Removes duplicate Travis CI build badge

Explanation About What Code Achieves:

The Travis CI build badge is duplicated in the README, this PR removes the duplicate.

Pull Request Test Coverage Report for Build 151

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 38.158%

Totals

Change from base Build 141:
0.0%

Covered Lines:
29

Relevant Lines:
62

💛  - Coveralls


Make it work with websockets

Make'a'da websockets have the headers. I use socket.io, and it aint a da worka

i make for socket.io and pure ws okay?
later tho

socket.io only rn


ambiguity with qr in v1.7

Using the release candidate of 1.7:
julia> using BlockArrays, ArrayLayouts, LinearAlgebra

julia> A = BlockArray(rand(10,10));

julia> qr(A, Val(true))
ERROR: MethodError: qr(::BlockMatrix{Float64, Matrix{Matrix{Float64}}, Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}}}, ::Val{true}) is ambiguous. Candidates:
  qr(A::AbstractMatrix, ::Val{true}; kwargs...) in LinearAlgebra at deprecated.jl:70
  qr(A::LayoutMatrix, args...; kwds...) in ArrayLayouts at /Users/daan/.julia/packages/ArrayLayouts/NI7mz/src/factorizations.jl:315
Possible fix, define
  qr(::LayoutMatrix, ::Val{true})
Stacktrace:
 [1] top-level scope
   @ REPL[9]:1

This arises because v1.7 switches to ColumnNorm() as second argument instead of Val(true) and because it also supplies a fallback for AbstractMatrix now. The commands qr(A, ColumnNorm()) and qr(A, NoPivot()) do work.

It turns out I had to fix my package regardless for v1.7, so the error is now gone on my end. Feel free to apply or disregard the pull request here.


Do some shell parsing

I'm checking out some different Atom shells.  I notice that the shell parsing is fairly primitive in this project, e.g., echo "$PATH" doesn't expand $PATH.
I happen to have written a shell parser a while back, and maybe it would be useful.  Coincidentally also written in CoffeeScript.
The code is a little old and not commented, but it might be helpful.  window.parse(string) returns a Node object, and node.toArgs(onDone, homedirResolver, varResolver, interpolateResolver, wildcardResolver) resolves the command into strings.  E.g., you'd do:
function varResolver(node, callback) {
  callback(process.env[node.stringContents()]);
}

(Note it doesn't consistently use Node-style callbacks)
Anyway, this code might be useful in your project.

Thank you! I will definately look into it. Parsing has been one of the great challenges of this project and I'm definately open to out-sourcing that particular aspect.


Creating a C++ mod

Hi, i have been following this tutorial https://docs.ue4ss.com/dev/guides/creating-a-c%2B%2B-mod.html on creating c++ mod, at the end it says to build the project but after that it does not mention the next steps

The current directory structure for C++ mods is: Mods/<ModName>/dlls/main.dll.
As long as that file exists, and it's enabled in mods.txt, an attempt to load it will be made.
Please close this issue if this answers your question.

Yep thank you


fix(network): remove unneeded failing test

Pull Request type
Please check the type of change your PR introduces:

[ ] Bugfix
[ ] Feature
[ ] Code style update (formatting, renaming)
[ ] Refactoring (no functional changes, no API changes)
[ ] Build-related changes
[ ] Documentation content changes
[ ] Other (please describe):

What is the current behavior?

Issue Number: N/A
What is the new behavior?

Does this introduce a breaking change?

[ ] Yes
[ ] No

Other information

This change is

#1934  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @nagmo-starkware and the rest of your teammates on  Graphite


To adapt it to local video stream

Hi Wang,
Can the code be adapted to local video stream?
Will the pre-trained model released in this repository still be effective?
Thank you.

@guy-guy
Of course, this code is easy to integrate into any application, we write a demo (less than 40 lines) to test our tracker.


submission of yiweiyi for ass1

18307130367

Sorry, your submission won't be merged, please put all these files in your working directory.


Updated Italian Telegram group link

Updated the italian Telegram support group link because previous owner deleted his account.

thank you for the update! Can you please just include the one change in: 27e826c
In your branch:
git reset --hard HEAD~16
add back the change
git push -f

thank you for the update! Can you please just include the one change in: 27e826c
In your branch: git reset --hard HEAD~16 add back the change git push -f

Thanks, done.

Thanks, so is this ready?

Thanks, so is this ready?

Yes

Default branch has protection and would need a PR to be merged into. With the v1.11.0 not too far away I think its also OK to wait for the next release.


Support ESLint 8.x

ESLint v8.0.0 is released 🎉
It would be awesome to have official ESLint 8 support. 👊
I'm happy to help where I can of course 🙂

Thanks! Work in progress for this can also be tracked here: https://github.com/standard/eslint-config-standard/pull/193


some comments are missing when using the compiler API

TypeScript Version:  4.1.0-dev.20200816

Search Terms: comments are missing
Code
const ts = require('typescript');
const printer = ts.createPrinter();
const sourceFile = ts.createSourceFile('', `
const arr = [//hello
    {
        obj: ''
    }
]
`)

console.log(printer.printFile(sourceFile))

Expected behavior:
output:
const arr = [//hello
    {
        obj: ''
    }
]

Actual behavior:
output(comments are missing):
const arr = [
    {
        obj: ''
    }
]

Playground Link:
Related Issues:

AND  THIS:
https://www.typescriptlang.org/play?target=99&jsx=3&ts=4.0.0-beta#code/FDDGBsEMGdoAgBpwN7DuuAPOBedqNC5IAuOAckknIBo4B6euAWwEtZWA7AczSPQBGZStTr0AVC3bQu3OOPp9+AE2FVaDcQEIpHHvMX90AUzWjNk3TP0KlRUGWQBfBkwDurcODgBrY8YAHOycQQlAAe05oABcAJwBXUGjw2LgACgBKFDtCADdIVIBPXGyjIlIKdTFJNj05WzLCIThOeK9XOA92v0CcjBDCELtGFmNogAtw5ThCu2LMlA7mMcnpwvX02utuDL70EeWJqZn19eDgJyA

All the missing part, we want keep it in the result.

The parser doesn't preserve 100% of comments and isn't intended for this purpose. You should use a different library if preserving 100% of comments is a design constraint for your application.

https://github.com/microsoft/TypeScript/issues/17689

I found following unexpected behaviour with tsx (v4.1.2):
class Component {
    render() {
        return <div>
            {/* missing */}
            {null/* preserved */}
        </div>;
    }
}


Old release

Hello,
your latest release is from Jan 21 Iast pipeline is from 3 months ago. Is the project still up?

Last run was 3 months ago indeed, I can't remember that I changed anything. Strange...

Any update on this?

Triggered a manual run. Let's see if the cron job springs back to life.


⚠ Bofrost.at has degraded performance

In 2b5755f, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 2098 ms

Resolved: Bofrost.at performance has improved in 7497f79 after 29 minutes.


Migrate selection to RectangleGeometry

@fredj, Cesium deprecated the RectanglePrimitive so the selection feature will soon be broken in Cesium.
We should use instead the RectangleGeometry. Good opportunity to try selection with on-the-ground primitive.

Superseded by #314.


High CPU usage under imac 5K

Hi,
thank you for your great work. I would like to know if it is some kind of bug or if is something i have mistaken (most probable).
I have a video, taken from a raspberry pi 2, in this way:
raspivid -t 0 -w 1280 -h 720  -o - | nc -k -l 2222
then from my imac i run ffmpeg:
ffmpeg -an -f h264 -vcodec h264  -i tcp://raspberry_ip:2222 -f mpeg1video -s 430x240 -pass 1 -coder 0 -bf 0  -wpredp 0 -an http://<IP_ADDRESS>:8083/secret/430/240
And i am able to see a video in a html page (using node-webkit) with canvas and websocket. The problem is CPU usage that is  20% for most time, but in some moments goes up to 120-130% (making my app almost frozen).
I am trying to use webgl, but it looks like i am not able to "activate" webgl under node-webkit....
Is there a way to obtain a slower CPU usage? Some "tweak" of jsmeg?

I was able to try my project using webgl canvas. Things go better but stil, after 2-3 minutes of playing, there are some moments CPU goes to 120% for 2/3 seconds. Something like "freeing memory"?

Are you able to determine if the nodejs script or the jsmpeg decoder in webkit is responsible for the high CPU load? Check the profiler in the Dev Tools for Chrome.
I'd also guess it's related to Garbage Collection - I'm not sure if you can do much about it. Maybe there's a way to force the GC to run more often in node-webkit.


Github Security Lab Vulnerability Report

Hello,
Github Security Lab has found a vulnerability in codeium-chrome. Please enable private-vulnerability-reporting  or provide a point of contact so that we can help you fix this issue.

Enabled private vulnerability reporting for all Exafunction repositories.

Thank you.


git semver get is returning the wrong version

$ cat .git-semver
# See https://github.com/markchalloner/git-semver
VERSION_PREFIX=v

$ git semver get
v1.40.0

$ git semver major
v2.0.0

$ git push origin v2.0.0
Everything up-to-date

$ git semver get
v1.40.0

I have pushed a PR (#46) that I believe fixes this (hope it will be merged soon), please let me know if you see further issues.


CommandResult and company card ui updated

The failing CI is due to EditCommandParser.Test and EditPersonDescriptor.Test (Will rectify in next PR)


Escaping "" for the paths returned to Vim, an issue on Win32

The output of the ctrlp matcher is scrambled on windows. All the path separator are interpreted by vim during the python->vim transfer, which cause problems. It should probably be the same on other systems, if anyone is crazy enough to put "" in a filename.
This very simple fix add a step where all "" are correctly escaped. Other problems remains, mostly on "filename-only", but the fix is less straightforward and I don't know enough vim to complete it cleanly.
Thank you for this plugin ! It greatly enhance the experience !

Hi @Blizarre , could you do the same but in one loop?
For example something like this:
vimrez = ['"%s"' % line.replace('\\', '\\\\').replace('"', '\\"') for line in rez]

I made a quick benchmark... Your solution is about 10% quicker, and takes probably less RAM. However, I've been surprised to see that string concatenation was a bit quicker (only by a small margin) :
vimrez = ['"' + line.replace('\\', '\\\\').replace('"', '\\"') + '"' for line in rez]
Probably because there was no need to parse the formatting string ?

Probably yes, looking forward for updated PR. Thanks for contributing.

done !


Fixed #31846 -- Add support for old composite keys

MySQL may declare pk in a way ignored by ORM. So we add when possible primary key to 'id' fields. Else we rename it because Django doesn't acccepts non-pk 'id' fields.
See https://code.djangoproject.com/ticket/31846

Closing due to lack of follow up.


[Search v2.5] If Search in suggests a workspace chat, we should add the reportID filter instead of in. Same goes for invoice and trip rooms

Coming from this thread, we should make expenses the default type when suggesting contextual report searches if the report is a workspace chat or invoice room

Head to the workspace chat
Click the router, opt for Search in
Add the merchant/description from a historical expense

Expected result
Standard search for a workspace chat would be the expense type
Actual result
I land on the Search results page with type:chats selected
cc @SzymczakJ

Hi I am Adam from SWM and I'd like to work on this issue

From my understanding, using: type:expense reportID:<workspace chat> and type:invoice reportID:<invoice room> should get all expenses/invoices from a specific room, but I'm not receiving any results. Is this supported on the backend, or should a different query be created?

I think the reason you don't see any results is because those reportIDs belong to a chat report and the expenses are actually reported on expense or invoice type reports, which is a child of the chat report. So I think a more accurate filter would be type:expense policyID:<workspaceID> from:<workspace chat participant email> since that'd filter all expenses sent by a user to the workspace, which should live in the workspace chat. Similarly, for invoice type:invoice policyID:<invoice room policyID> from:<invoice room participant email>.
cc @JmillsExpensify to confirm since you suggested this change

Adding External to create the Upwork job

Payment Summary:
Contributor: @289Adam289 does not require payment
Contributor+: @rayane-djouah paid $250 via Upwork
Upwork job here! Please apply

Just dropping a note for Melv. This will be eligible for payment in two days 👍

@rayane-djouah can you please accept the invite to the job?

Paid! Thanks for your contributions! 🎉


API Test cases for MOVE between project/personal/shares spaces

Continued and extended form of https://github.com/owncloud/ocis/issues/4087
MOVE
1. Using file path
Test cases

from
from (role)
to
to (role)
result
API coverage

project
manager/editor
project(same)

201 :+1:
:heavy_check_mark:

project
viewer
project(same)

403 :+1:
:heavy_check_mark:

project
manager/editor
project
manager/editor
502 :question:
:heavy_check_mark:

project
manager/editor
project
viewer
403 :+1:
:heavy_check_mark:

project
viewer
project
manager/editor/viewer
403 :+1:
:heavy_check_mark:

project
manager/editor
personal

502 :question:
:heavy_check_mark:

project
viewer
personal

403 :+1:
:heavy_check_mark:

project
manager/editor/viewer
share jail
all/editor/viewer
403 :+1:
:heavy_check_mark:

personal

personal(same)

201 :+1:
:heavy_check_mark:

personal

personal(subfolder)

201 :+1:
:heavy_check_mark:

personal

project
manager/editor
502 :question:
:heavy_check_mark:

personal

project
viewer
403 :+1:
:heavy_check_mark:

personal

share jail
all/editor/viewer
403 :+1:
:heavy_check_mark:

share jail
all/editor/viewer
personal

403 :+1:
:heavy_check_mark:

share jail
all/editor/viewer
project
manager/editor/viewer
403 :+1:
:heavy_check_mark:

share jail
all/editor/viewer
share jail
all/editor/viewer
403 :+1:
:heavy_check_mark:

share jail
all/editor
share jail(same)

201 :+1:
:heavy_check_mark:

share jail
viewer
share jail(same)

403 :+1:
:heavy_check_mark:

Bug Reports

https://github.com/owncloud/ocis/issues/8116
https://github.com/owncloud/ocis/issues/7618
https://github.com/owncloud/ocis/issues/8063
https://github.com/owncloud/ocis/issues/2442
https://github.com/owncloud/ocis/issues/764

2. Using file id (updating...)
Test Cases

from
from (role)
to
to (role)
result
API coverage

project
manager/editor
project(same)

201 :+1:
:heavy_check_mark:

project
viewer
project(same)

403 :+1:
:heavy_check_mark:

project
manager/editor
project
manager/editor
502 :question:
:heavy_check_mark:

project
manager/editor
project
viewer
403 :+1:
:heavy_check_mark:

project
viewer
project
manager/editor/viewer
403 :+1:
:heavy_check_mark:

project
manager/editor
personal

502 :question:
:heavy_check_mark:

project
viewer
personal

403 :+1:
:heavy_check_mark:

project
manager/editor/viewer
share jail
all/editor/viewer
403 :+1:
:heavy_check_mark:

personal

personal(same)

201 :+1:
:heavy_check_mark:

personal

personal(subfolder)

201 :+1:
:heavy_check_mark:

personal

project
manager/editor
502 :question:
:heavy_check_mark:

personal

project
viewer
403 :+1:
:heavy_check_mark:

personal

share jail
all/editor/viewer
403 :+1:
:heavy_check_mark:

share jail
all/editor
share jail(same)

403 :x:
:heavy_check_mark:

share jail
viewer
share jail(same)

403 :+1:
:heavy_check_mark:

share jail
all/editor
personal

502 :question:
:heavy_check_mark:

share jail
viewer
personal

403 :+1:
:heavy_check_mark:

share jail
all/editor/viewer
share jail
all/editor/viewer
403 :+1:
:heavy_check_mark:

share jail
all/editor
project
manager/editor
502 :question:
:heavy_check_mark:

share jail
all/editor
project
viewer
403 :+1:
:heavy_check_mark:

share jail
viewer
project
manager/editor/viewer
403 :+1:
:heavy_check_mark:

Bug Reports

https://github.com/owncloud/ocis/issues/7617
https://github.com/owncloud/ocis/issues/8124
https://github.com/owncloud/ocis/issues/8125

Edge cases:

https://github.com/owncloud/ocis/issues/6739
https://github.com/owncloud/ocis/issues/1976
https://github.com/owncloud/ocis/issues/3882
https://github.com/owncloud/ocis/issues/777

There will be change in statuscode expectation.
See https://github.com/owncloud/ocis/issues/8063#issuecomment-1883281975

We should  treat a "Cross-Storage" MOVE in ocis like a cross-server move in the RFC like ...when the destination is on another sub-section of the same server namespace. This has the implication that we need to roll back the changes and respond with a 502 Status code like described in the RFC:

Fixes:

https://github.com/cs3org/reva/pull/4480

All test cases are added and there is coverage for all bug reports. So closing this issue.


Clarify purpose field and privacy

This change clarifies usage of purpose field and compliance with privacy regulation. An additional roadmap note is added but does not need to be included describing roadmap to address the regulatory issue. Issue #307

LGTM, @JanLin if you wanted to merge @bumblefudge's suggestions I think this could be merged :)

to live with https://github.com/decentralized-identity/presentation-exchange/issues/307


Drop graphs for now

Closes #485

Coverage decreased (-0.9%) to 88.165% when pulling 4036dc123c1a63b1cb7955f0e1869e7caf22a3fc on eatonphil:drop-graphs into 6e069f5732db6c1d27c5284eb3822624d3668849 on linode:master.

Coverage decreased (-0.9%) to 88.165% when pulling c2c521eec9e87a6ce907b3abb08861d95bf699fe on eatonphil:drop-graphs into 6e069f5732db6c1d27c5284eb3822624d3668849 on linode:master.

Coverage decreased (-0.9%) to 88.156% when pulling 31629eaea3462cd8c2d5ed7bb8cf0d3c1c51f23a on eatonphil:drop-graphs into 6e069f5732db6c1d27c5284eb3822624d3668849 on linode:master.


Wrong creation of collections.deque parameter

Initial Checks

[X] I have searched GitHub for a duplicate issue and I'm sure this is something new
[X] I have searched Google & StackOverflow for a solution and couldn't find anything
[X] I have read and followed the docs and still think this is a bug
[X] I am confident that the issue is with pydantic (not my code, or another library in the ecosystem like FastAPI or mypy)

Description
When creating a class from a Pydantic BaseModel with a collections.deque parameter, the maxlen parameter is not propagated through when an instance is initialized with an existing deque object.
Example Code
from pydantic import BaseModel
from typing import Deque
from collections import deque

class PastConsumption(BaseModel):
consumption: Deque[int] = deque(maxlen=5)

a = PastConsumption()

print(a.consumption.maxlen)   # -> 5 as output, as expected

b = PastConsumption(consumption=deque(maxlen=8))

print(b.consumption.maxlen)    # -> "None", BUG

Python, Pydantic & OS Version
❯ python -c "import pydantic.utils; print(pydantic.utils.version_info())"

             pydantic version: 1.10.7
            pydantic compiled: True
                 install path: <hidden>
               python version: 3.10.9 (main, Jan 10 2023, 15:38:42) [Clang 14.0.0 (clang-14<IP_ADDRESS>)]
                     platform: macOS-13.2.1-arm64-arm-64bit
     optional deps. installed: ['typing-extensions']

Affected Components

[ ] Compatibility between releases
[X] Data validation/parsing
[ ] Data serialization - .dict() and .json()
[ ] JSON Schema
[ ] Dataclasses
[ ] Model Config
[ ] Field Types - adding or changing a particular data type
[ ] Function validation decorator
[ ] Generic Models
[ ] Other Model behaviour - construct(), pickling, private attributes, ORM mode
[ ] Plugins and integration with other tools - mypy, FastAPI, python-devtools, Hypothesis, VS Code, PyCharm, etc.

Thanks @wardvandriessche-centrica for reporting.
I can confirm this on both V1 and V2. Don't have any clue what is the reason here.
@samuelcolvin @dmontagu  any idea?

I think I've got a fix for v2, will open PR shortly.

Update: the (v2) fix for this is now available in the latest v2 alpha release v2.0a3

As @dmontagu mentioned this is fixed in V2 and is available in v2.0a3


Urls in Github issues reader should be normal url not api url

Currently url saved by Github issues reader is https://api.github.com/repos/.... but should be
https://github.com/....

Just looked at code:

"url" is API url
"source" is source url


fix: POST, PUT and PATCH now always generate body on stub

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


[WC-2741]: Combobox: Handle multi select selection order

Pull request type

Bug fix (non-breaking change which fixes an issue)

Description
This ensures that the multi-select combobox displays options in the order the user selects them, rather than relying on the index values to determine the display order.

make it as option to sort selection items based on caption / value
don't see it yet


Fixed JSDoc comments and optional params parsing

Closes https://github.com/TypeStrong/typedoc/issues/1804 and https://github.com/TypeStrong/typedoc/issues/567

Any chance to get this merged anytime soon?

Can someone enlighten me why the [] is removed/what is it used for originally in jsdocs?

Its to mark optional parameter: https://jsdoc.app/tags-param.html#optional-parameters-and-default-values

Its to mark optional parameter: jsdoc.app/tags-param.html#optional-parameters-and-default-values

Currently these get removed completely, so any parameter name that might be in there will be lost, before it is analyzed.
Rendering it unusable. I thought there might be a different usecase where you don't need the thing inside the [].

I believe with 0.23, this is handled by the completely reworked comment parser, thanks for the PR though!


SignalR in embedded web browser control

I have an embedded web-browser control and an embedded Kestrel server in a Windows application. The embedded control uses an older version of IE.  IE throws a syntax error when it hits "class Base64EncodedHubProtocol" when it loads Base64EncodedHubProtocol.js What do I need to do to fix this?
change  Base64EncodedHubProtocol.js  to  Base64EncodedHubProtocol.ts and re-compile targeting ES5?

Yes, IE does not support ES6 so you need to compile to ES5 (or use the ES5 version included in the dist/browser folder).

I am also using Angular 4, so I tried setting the .angular-cli.json to:
"scripts": [
<EMAIL_ADDRESS>"js/odometer.min.js",
"js/scroller.min.js"
],
but somehow it gets mapped to loading Base64EncodedHubProtocol.js  from the src directory which is not ES5. I have no idea how "ng build" does this but the downloaded file (vendor.js) using the embedded web browser control or Internet Explorer 11 is different than if I download it using Edge or Chrome. Any suggestions?

Take a look at:
https://github.com/aspnet/SignalR/issues/729
https://github.com/angular/angular-cli/issues/7532
https://github.com/aspnet/SignalR/issues/867
and let me know if this helps.

I included the client sources in my project so they would compile down to ES5 and it seems to work. Haven't tried to do "ng build --prod" yet. Not a great solution for those trying to support old browsers...

As per https://github.com/aspnet/SignalR/issues/867#issuecomment-331803584 it might be fixed soon in the Angular-cli


Custom login sample doesn't work

IdentityServer3.Samples/source/CustomLoginPage/
The resource cannot be found.
Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable.  Please review the following URL and make sure that it is spelled correctly.
Requested URL: /

Does it work if you browser to ~/core?

Yes /core works = Welcome to IdentityServer3

I think we're not aligned, when I said it worked I was referring to the fact the default IS3 welcome page is displayed and not the custom login page.

You said that you did not see any sign of IdentityServer working when visiting the root of the web server. All of our samples are configured to run at ~/core (this is discoverable by looking in Startup), so I was trying to show you that it is running.
As for your custom login pages, thin about when that's shown with IdentityServer... a login page is only needed in the context of trying to signin to a client application.


Support Redmine 5

Please, when you have the chance, please check the compatibility with Redmine 5 and make the necessary adaptations, if any is needed. Thanks in advance.

@tofi86 any update plz

@tofi86 I did a cleanup and adapted for redmine 5. I did not test back on older pre-redmine 5 setups since I do not care at all on our side. The major thing is that we decided to get completely rid of the deface dependency. Basically there is no need to use deface at all since redmine provides adequate hooks in order to do the job in this case.
As the changes are pretty big let me know if you desire to take them partly I can then maybe provide small PRs one by one. If you feel like to take over parts by yourself, just go on. I made the changes by myself on my spare time, I am the author and it is
MIT licensed, so feel free to have a look and grasp what you consider being useful:
https://github.com/tools-aoeur/redmine_maintenance_mode

Hello,
with this
About your application's environment
Rails version             6.1.7
Ruby version              ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux-gnu]
RubyGems version          3.3.5
Rack version              2.2.4
Middleware                ActionDispatch::HostAuthorization, Rack::ContentLength, Rack::Sendfile, ActionDispatch::Static, ActionDispatch::Executor, ActiveSupport::Cache::Strategy::LocalCache::Middleware, Rack::Runtime, Rack::MethodOverride, ActionDispatch::RequestId, RequestStore::Middleware, ActionDispatch::RemoteIp, Rails::Rack::Logger, ActionDispatch::ShowExceptions, ActionDispatch::DebugExceptions, ActionDispatch::ActionableExceptions, ActionDispatch::Callbacks, ActionDispatch::Cookies, ActionDispatch::Session::CookieStore, ActionDispatch::Flash, ActionDispatch::ContentSecurityPolicy::Middleware, ActionDispatch::PermissionsPolicy::Middleware, Rack::Head, Rack::ConditionalGet, Rack::ETag, Rack::TempfileReaper
Application root          /opt/redmine-5.0.3
Environment               production
Database adapter          mysql2
Database schema version<PHONE_NUMBER>4639

I got error
** Invoke redmine:plugins:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
rake aborted!
LoadError: cannot load such file -- maintenance_mode_hooks
/var/lib/gems/3.0.0/gems/polyglot-0.3.5/lib/polyglot.rb:65:in `require'
/var/lib/gems/3.0.0/gems/polyglot-0.3.5/lib/polyglot.rb:65:in `require'
/var/lib/gems/3.0.0/gems/zeitwerk-2.6.6/lib/zeitwerk/kernel.rb:38:in `require'
/var/lib/gems/3.0.0/gems/activesupport-6.1.7/lib/active_support/dependencies/zeitwerk_integration.rb:51:in `require_dependency'
/opt/redmine-5.0.3/plugins/redmine_maintenance_mode/init.rb:1:in `<top (required)>'
/opt/redmine-5.0.3/lib/redmine/plugin_loader.rb:31:in `load'
/opt/redmine-5.0.3/lib/redmine/plugin_loader.rb:31:in `run_initializer'
/opt/redmine-5.0.3/lib/redmine/plugin_loader.rb:108:in `each'
/opt/redmine-5.0.3/lib/redmine/plugin_loader.rb:108:in `block in load'
/var/lib/gems/3.0.0/gems/activesupport-6.1.7/lib/active_support/callbacks.rb:427:in `instance_exec'
/var/lib/gems/3.0.0/gems/activesupport-6.1.7/lib/active_support/callbacks.rb:427:in `block in make_lambda'
/var/lib/gems/3.0.0/gems/activesupport-6.1.7/lib/active_support/callbacks.rb:198:in `block (2 levels) in halting'
/var/lib/gems/3.0.0/gems/activesupport-6.1.7/lib/active_support/callbacks.rb:604:in `block (2 levels) in default_terminator'
/var/lib/gems/3.0.0/gems/activesupport-6.1.7/lib/active_support/callbacks.rb:603:in `catch'
/var/lib/gems/3.0.0/gems/activesupport-6.1.7/lib/active_support/callbacks.rb:603:in `block in default_terminator'
/var/lib/gems/3.0.0/gems/activesupport-6.1.7/lib/active_support/callbacks.rb:199:in `block in halting'
/var/lib/gems/3.0.0/gems/activesupport-6.1.7/lib/active_support/callbacks.rb:512:in `block in invoke_before'
/var/lib/gems/3.0.0/gems/activesupport-6.1.7/lib/active_support/callbacks.rb:512:in `each'
/var/lib/gems/3.0.0/gems/activesupport-6.1.7/lib/active_support/callbacks.rb:512:in `invoke_before'
/var/lib/gems/3.0.0/gems/activesupport-6.1.7/lib/active_support/callbacks.rb:105:in `run_callbacks'
/var/lib/gems/3.0.0/gems/activesupport-6.1.7/lib/active_support/reloader.rb:88:in `prepare!'
/var/lib/gems/3.0.0/gems/railties-6.1.7/lib/rails/application/finisher.rb:124:in `block in <module:Finisher>'
/var/lib/gems/3.0.0/gems/railties-6.1.7/lib/rails/initializable.rb:32:in `instance_exec'
/var/lib/gems/3.0.0/gems/railties-6.1.7/lib/rails/initializable.rb:32:in `run'
/var/lib/gems/3.0.0/gems/railties-6.1.7/lib/rails/initializable.rb:61:in `block in run_initializers'
/usr/lib/ruby/3.0.0/tsort.rb:228:in `block in tsort_each'
/usr/lib/ruby/3.0.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
/usr/lib/ruby/3.0.0/tsort.rb:431:in `each_strongly_connected_component_from'
/usr/lib/ruby/3.0.0/tsort.rb:349:in `block in each_strongly_connected_component'
/usr/lib/ruby/3.0.0/tsort.rb:347:in `each'
/usr/lib/ruby/3.0.0/tsort.rb:347:in `call'
/usr/lib/ruby/3.0.0/tsort.rb:347:in `each_strongly_connected_component'
/usr/lib/ruby/3.0.0/tsort.rb:226:in `tsort_each'
/usr/lib/ruby/3.0.0/tsort.rb:205:in `tsort_each'
/var/lib/gems/3.0.0/gems/railties-6.1.7/lib/rails/initializable.rb:60:in `run_initializers'
/var/lib/gems/3.0.0/gems/railties-6.1.7/lib/rails/application.rb:391:in `initialize!'
/opt/redmine-5.0.3/config/environment.rb:16:in `<top (required)>'
/var/lib/gems/3.0.0/gems/polyglot-0.3.5/lib/polyglot.rb:65:in `require'
/var/lib/gems/3.0.0/gems/polyglot-0.3.5/lib/polyglot.rb:65:in `require'
/var/lib/gems/3.0.0/gems/zeitwerk-2.6.6/lib/zeitwerk/kernel.rb:38:in `require'
/var/lib/gems/3.0.0/gems/activesupport-6.1.7/lib/active_support/dependencies.rb:332:in `block in require'
/var/lib/gems/3.0.0/gems/activesupport-6.1.7/lib/active_support/dependencies.rb:299:in `load_dependency'
/var/lib/gems/3.0.0/gems/activesupport-6.1.7/lib/active_support/dependencies.rb:332:in `require'
/var/lib/gems/3.0.0/gems/railties-6.1.7/lib/rails/application.rb:367:in `require_environment!'
/var/lib/gems/3.0.0/gems/railties-6.1.7/lib/rails/application.rb:533:in `block in run_tasks_blocks'
/usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/task.rb:281:in `block in execute'
/usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/task.rb:281:in `each'
/usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/task.rb:281:in `execute'
/usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/task.rb:219:in `block in invoke_with_call_chain'
/usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/task.rb:199:in `synchronize'
/usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/task.rb:199:in `invoke_with_call_chain'
/usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/task.rb:243:in `block in invoke_prerequisites'
/usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/task.rb:241:in `each'
/usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/task.rb:241:in `invoke_prerequisites'
/usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/task.rb:218:in `block in invoke_with_call_chain'
/usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/task.rb:199:in `synchronize'
/usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/task.rb:199:in `invoke_with_call_chain'
/usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/task.rb:188:in `invoke'
/usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/application.rb:160:in `invoke_task'
/usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/application.rb:116:in `block (2 levels) in top_level'
/usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/application.rb:116:in `each'
/usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/application.rb:116:in `block in top_level'
/usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/application.rb:125:in `run_with_threads'
/usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/application.rb:110:in `top_level'
/usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/application.rb:83:in `block in run'
/usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/application.rb:186:in `standard_exception_handling'
/usr/share/rubygems-integration/all/gems/rake-13.0.6/lib/rake/application.rb:80:in `run'
/usr/share/rubygems-integration/all/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
/usr/bin/rake:25:in `load'
/usr/bin/rake:25:in `<main>'
Tasks: TOP => redmine:plugins:migrate => environment

Thanks

@tofi86 I did a cleanup and adapted for redmine 5. I did not test back on older pre-redmine 5 setups since I do not care at all on our side. The major thing is that we decided to get completely rid of the deface dependency. Basically there is no need to use deface at all since redmine provides adequate hooks in order to do the job in this case.
As the changes are pretty big let me know if you desire to take them partly I can then maybe provide small PRs one by one. If you feel like to take over parts by yourself, just go on. I made the changes by myself on my spare time, I am the author and it is MIT licensed, so feel free to have a look and grasp what you consider being useful:
https://github.com/tools-aoeur/redmine_maintenance_mode

For me your version works! Thank you very much!


Add ondestruct() to typings

Description:
This adds the ondestruct() lifecycle method to the typings. That's currently missing.

Thanks! Do you need this published now, or can it wait a bit to see if any more changes happen along?

Thanks! Do you need this published now, or can it wait a bit to see if any more changes happen along?

We already depend on it, so if it's not too much work for you, I'd really appreciate a release.


Auto enable vkb enable portability

Description
Attempt to make the Framework requirement of enabling the Portability extension if on an OSX device and running Vulkan greater than or equal to 1.3 (when the Portability extension is introduced).  Without this, the moltenvk instance wont be detected in instance creation.  Please check instance.cpp for details.
Fixes #476
General Checklist:
Please ensure the following points are checked:

[x] My code follows the coding style
[x] I have reviewed file licenses
[x] I have updated the header Copyright to reflect the current year (CI build will fail if Copyright is out of date)
[x] I have commented any added functions (in line with Doxygen)
[x] I have commented any code that could be hard to understand
[x] My changes do not add any new compiler warnings
[x] My changes do not add any new validation layer errors or warnings
[x] I have used existing framework/helper functions where possible
[x] My changes build on Windows, Linux, macOS and Android. Otherwise I have documented any exceptions
[x] My changes do not add any regressions
[x] I have tested every sample to ensure everything runs correctly
[x] This PR describes the scope and expected impact of the changes I am making

Sample Checklist
If your PR contains a new or modified sample, these further checks must be carried out in addition to the General Checklist:

[x] I have tested the sample on at least one compliant Vulkan implementation
[x] If the sample is vendor-specific, I have tagged it appropriately
[x] I have stated on what implementation the sample has been tested so that others can test on different implementations and platforms
[x] Any dependent assets have been merged and published in downstream modules
[x] For new samples, I have added a paragraph with a summary to the appropriate chapter in the samples readme

Merging as this is a simple fix for a significant blocking issue.  LMK if there are any problems - we can revert if needed.


Multiple presentations with the same website

It would be cool if it were possible to have various presentations within the same website and then some sort of global readable store where that you can use to display info about all presentations in the index page (such as title, etc) and redirect to each one.

You can have multiple presentations if you enable embedded in the configuration which is what I do for the custom Animotion component for the docs.


v1.34.0 - Fixed heading sizes.

Fixed

Heading font size resolved for large and narrow devices.
Divider missing for main section heading.

Hi @kevinrodrigues, thank you for working on this.
@ashleynolan has raised a concern about the font size headings before here. do you think your fix aligns with the issue he raised?

Hi @kevinrodrigues, thank you for working on this. @ashleynolan has raised a concern about the font size headings before here. do you think your fix aligns with the issue he raised?

Yup so @ashleynolan has a point I did notice. These fixes align with the figma designs but i do think we need to look at fozzie and try and align them properly as they seem a little out. Is there a ticket for this? If so Im happy to look at it.


Cannot see my device android studio

I'm using flutter on windows 10 everything is great
i ran flutter doctor :

[√] Flutter (Channel stable, v1.9.1+hotfix.6, on Microsoft Windows [Version 10.0.18362.207], locale en-US)
[√] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
[√] Android Studio (version 3.5)
[√] VS Code (version 1.40.2)
[√] Connected device (1 available)
• No issues found!

but when i'm using android studio cannot see my device or run the emulator :

I have a custom location for android sdk and add it to environment variables under ANDROID_HOME
I used flutter devices :

1 connected device:
Redmi Note 7 • f65a232 • android-arm64 • Android 9 (API 28)

what is wrong ?

Hi @AhmedAlaa96

from your screenshot I see the device is mounted

@iapicca That can be an emulator that's not started from Android studio. The real connected devices for me appears on the left.

I would say problem is that Studio didn't recognize the Flutter project or something with Flutter plugin.

@itsJoKr  I think you are right


new event "listStatus"

Hello,
Sorry for reopening the issue. I have the same error today when listening on UserData Stream.
I have verified the version of unicorn-fy, it's 0.6.0.
  File "/usr/lib/python3.7/threading.py", line 926, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.7/threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "/home/jean/myriad/projects/pyenv/crypto/lib/python3.7/site-packages/unicorn_binance_websocket_api/unicorn_binance_websocket_api_manager.py", line 415, in _create_stream_thread
    loop.run_until_complete(socket.start_socket())
  File "/usr/lib/python3.7/asyncio/base_events.py", line 579, in run_until_complete
    return future.result()
  File "/home/jean/myriad/projects/pyenv/crypto/lib/python3.7/site-packages/unicorn_binance_websocket_api/unicorn_binance_websocket_api_socket.py", line 114, in start_socket
    received_stream_data = self.unicorn_fy.binance_com_websocket(received_stream_data_json)
  File "/home/jean/myriad/projects/pyenv/crypto/lib/python3.7/site-packages/unicorn_fy/unicorn_fy.py", line 85, in binance_com_websocket
    return UnicornFy.binance_websocket(stream_data_json, exchange="binance.com", show_deprecated_warning=False)
  File "/home/jean/myriad/projects/pyenv/crypto/lib/python3.7/site-packages/unicorn_fy/unicorn_fy.py", line 249, in binance_websocket
    if stream_data['data']['e'] == 'aggTrade':
KeyError: 'data'

[Update]
I have identified the response that causes the error.
{
    "e": "listStatus",
    "E":<PHONE_NUMBER>870,
    "s": "BTCUSDT",
    "g": 10610159,
    "c": "OCO",
    "l": "EXEC_STARTED",
    "L": "EXECUTING",
    "r": "NONE",
    "C": "VR0br4b4QJEFkbMqCsDUBJ",
    "T":<PHONE_NUMBER>869,
    "O": [{
        "s": "BTCUSDT",
        "i": xxx,
        "c": "xxx"
    }, {
        "s": "BTCUSDT",
        "i": xxx,
        "c": "xxx"
    }]
}

Can you add support for this ? Thanks in advance for your help!
Originally posted by @giahung24 in https://github.com/oliver-zehentleitner/unicorn_fy/issues/6#issuecomment-735872583

@giahung24
From which exchange did you receive that data?

could you post me the original raw data JSON string? thx!

These are examples of raw data I get from binance_websocket_api_manager.pop_stream_data_from_stream_buffer() when the KeyError exception occurs:
{"e":"listStatus","E":1606946194410,"s":"ETHUSDT","g":10717037,"c":"OCO","l":"ALL_DONE","L":"ALL_DONE","r":"NONE","C":"i8B7NXuB37QkJ2Vy8f5KHh","T":1606946194409,"O":[{"s":"ETHUSDT","i":2175939815,"c":"electron_648187c31bda49b6a2e81d23ae0"},{"s":"ETHUSDT","i":2175939816,"c":"84wruoWCZdkBUqbqlKfpv6"}]}

{"e":"listStatus","E":1606946303696,"s":"ETHUSDT","g":10717129,"c":"OCO","l":"EXEC_STARTED","L":"EXECUTING","r":"NONE","C":"xbLYz3UmLud2uIYDTqa9Qx","T":1606946303694,"O":[{"s":"ETHUSDT","i":2175947289,"c":"electron_86b14903e6f047bc9869e85e3d2"},{"s":"ETHUSDT","i":2175947290,"c":"qhL7WPy7sENJOhvB6lfoCu"}]}

This is the converted result:
result: {'stream_type': 'ethusdt@listStatus', 'event_type': 'listStatus', 'event_time':<PHONE_NUMBER>410, 'symbol': 'ETHUSDT', 'order_list_id': 10717037, 'contingency_type': 'OCO', 'list_status_type': 'ALL_DONE', 'list_order_status': 'ALL_DONE', 'list_reject_reason': 'NONE', 'list_client_order_id': 'i8B7NXuB37QkJ2Vy8f5KHh', 'transaction_time':<PHONE_NUMBER>409, 'objects': [{'symbol': 'ETHUSDT', 'order_id':<PHONE_NUMBER>, 'client_order_id': 'electron_648187c31bda49b6a2e81d23ae0'}, {'symbol': 'ETHUSDT', 'order_id':<PHONE_NUMBER>, 'client_order_id': '84wruoWCZdkBUqbqlKfpv6'}], 'unicorn_fied': ['binance.com', '0.6.0.dev']}

If you think thats fine too, I can prepare a release!

Hi,
I think that's good! Glad to have quick reaction from you.

Its released: https://pypi.org/project/unicorn-fy/


Move search suggestions in search layout

@samuelhwilliams spotted that in the 0 results case the search suggestions look out of place since #795.
This commit fixes this by moving the search suggestions out of the search summary component to inside the search results wrapper.
The suggestions have to be inside the results wrapper so it is updated dynamically with the live search.

Side by side

It would be worth having a functional test on the dynamic behaviour of the search suggestions (i.e. it appears and disappears correctly when using live search)

Hey @samuelhwilliams @lfdebrux
Thanks for this. While having an empty right column and an occasional page jump isn't ideal, I think it's important that the Suggestions bit and the search summary 0 results found [...] sit close to each other. With some extra padding added above the Save your search button, I don't think it looks strange at all, so not sure if we need to go ahead with this PR?

I guess I disagree. I think it looks pretty weird and that the page jump is quite jarring.
I understand the idea of proximity with these two elements, but I don't feel like they're too far apart here. Happy to be overruled, as design is your domain, but it felt broken enough when I encountered it to bring it up - and I think the other people who've seen it so far agreed.

I talked to @kubabartwicki about this in a bit more detail, we agreed on two options:

Add a margin to the bottom of the suggestions text

pros: quick and easy, improves spacing at top of page
cons: leaves a lot of empty space, doesn't fix 'jump'

Move the suggestions to the right column and add/improve the intro text so it is clear that the suggestions are related to the fact they are zero searches
- pros: fills the empty space, fixes jump
- cons: more work, content needs to be common to both direct award and further competition searches

I've asked @karlchillmaid to look at content

@lfdebrux
New content
Improve your search results by:

removing filters
choosing a different category
      {% if framework_family == 'g-cloud' %}
        double-checking your spelling
using fewer keywords
searching for something less specific, you can refine your results later


docker compose failing - frontend connecting to backend?

Having issues running via docker compose, screen comes up "half blank" and + New Bot does not work etc. Logs suggest issues connecting opengpts-frontend to backend?

Populated .env simply with an OPENAI_API_KEY="sk-...
Docker Version:  24.0.7 (Mac 14.4)
docker compose up
Containers all start, Uvicorn serving the "1/2 blank" page and opengpts-backend container generating errors, However the key issue may well be the opengpts-frontend see log output below
opengpts-frontend  |
opengpts-frontend  |   VITE v4.5.0  ready in 117 ms
opengpts-frontend  |
opengpts-frontend  |   ➜  Local:   http://localhost:5173/
opengpts-frontend  |   ➜  Network: http://<IP_ADDRESS>:5173/
opengpts-backend   | Process SpawnProcess-1:
opengpts-backend   | Traceback (most recent call last):
opengpts-backend   |   File "/usr/local/lib/python3.11/multiprocessing/process.py", line 314, in _bootstrap
opengpts-backend   |     self.run()
opengpts-backend   |   File "/usr/local/lib/python3.11/multiprocessing/process.py", line 108, in run
opengpts-backend   |     self._target(*self._args, **self._kwargs)
opengpts-backend   |   File "/usr/local/lib/python3.11/site-packages/uvicorn/_subprocess.py", line 76, in subprocess_started
opengpts-backend   |     target(sockets=sockets)
opengpts-backend   |   File "/usr/local/lib/python3.11/site-packages/uvicorn/server.py", line 61, in run
opengpts-backend   |     return asyncio.run(self.serve(sockets=sockets))
opengpts-backend   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
opengpts-backend   |   File "/usr/local/lib/python3.11/asyncio/runners.py", line 190, in run
opengpts-backend   |     return runner.run(main)
opengpts-backend   |            ^^^^^^^^^^^^^^^^
opengpts-backend   |   File "/usr/local/lib/python3.11/asyncio/runners.py", line 118, in run
opengpts-backend   |     return self._loop.run_until_complete(task)
opengpts-backend   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
opengpts-backend   |   File "/usr/local/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
opengpts-backend   |     return future.result()
opengpts-backend   |            ^^^^^^^^^^^^^^^
opengpts-backend   |   File "/usr/local/lib/python3.11/site-packages/uvicorn/server.py", line 68, in serve
opengpts-backend   |     config.load()
opengpts-backend   |   File "/usr/local/lib/python3.11/site-packages/uvicorn/config.py", line 467, in load
opengpts-backend   |     self.loaded_app = import_from_string(self.app)
opengpts-backend   |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
opengpts-backend   |   File "/usr/local/lib/python3.11/site-packages/uvicorn/importer.py", line 21, in import_from_string
opengpts-backend   |     module = importlib.import_module(module_str)
opengpts-backend   |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
opengpts-backend   |   File "/usr/local/lib/python3.11/importlib/__init__.py", line 126, in import_module
opengpts-backend   |     return _bootstrap._gcd_import(name[level:], package, level)
opengpts-backend   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
opengpts-backend   |   File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
opengpts-backend   |   File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
opengpts-backend   |   File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
opengpts-backend   |   File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
opengpts-backend   |   File "<frozen importlib._bootstrap_external>", line 940, in exec_module
opengpts-backend   |   File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
opengpts-backend   |   File "/backend/app/server.py", line 9, in <module>
opengpts-backend   |     from app.api import router as api_router
opengpts-backend   |   File "/backend/app/api/__init__.py", line 3, in <module>
opengpts-backend   |     from app.api.assistants import router as assistants_router
opengpts-backend   |   File "/backend/app/api/assistants.py", line 7, in <module>
opengpts-backend   |     import app.storage as storage
opengpts-backend   |   File "/backend/app/storage.py", line 9, in <module>
opengpts-backend   |     from app.agent import AgentType, get_agent_executor
opengpts-backend   |   File "/backend/app/agent.py", line 23, in <module>
opengpts-backend   |     from app.tools import (
opengpts-backend   |   File "/backend/app/tools.py", line 163, in <module>
opengpts-backend   |     v()
opengpts-backend   |   File "/backend/app/tools.py", line 124, in _get_action_server
opengpts-backend   |     toolkit = ActionServerToolkit(
opengpts-backend   |               ^^^^^^^^^^^^^^^^^^^^
opengpts-backend   |   File "/usr/local/lib/python3.11/site-packages/pydantic/main.py", line 341, in __init__
opengpts-backend   |     raise validation_error
opengpts-backend   | pydantic.error_wrappers.ValidationError: 2 validation errors for ActionServerToolkit
opengpts-backend   | url
opengpts-backend   |   none is not an allowed value (type=type_error.none.not_allowed)
opengpts-backend   | api_key
opengpts-backend   |   none is not an allowed value (type=type_error.none.not_allowed)
opengpts-frontend  | Error: connect ECONNREFUSED <IP_ADDRESS>:8000
opengpts-frontend  |     at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1278:16)
opengpts-frontend  | 11:37:25 AM [vite] http proxy error at /runs/config_schema:
opengpts-frontend  | Error: connect ECONNREFUSED <IP_ADDRESS>:8000
opengpts-frontend  |     at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1278:16)
opengpts-frontend  | 11:37:25 AM [vite] http proxy error at /assistants/public/:
opengpts-frontend  | Error: connect ECONNREFUSED <IP_ADDRESS>:8000
opengpts-frontend  |     at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1278:16)
opengpts-frontend  | 11:37:25 AM [vite] http proxy error at /assistants/:
opengpts-frontend  | Error: connect ECONNREFUSED <IP_ADDRESS>:8000

I figured out that this happens because of missing API key for robocorp agent tool, I tried adding the keys, and it moves forward, but now it is stuck because it cannot find openai api schema on the endpoint that I specify for robocorp agent tool. I am trying to figure out how to get it to stop expecting to use robocorp, that should ideally solve the issue. Perhaps.  See the trace below: opengpts-redis     | 8:M 03 Feb 2024 14:23:34.604 * Server initialized
opengpts-redis     | 8:M 03 Feb 2024 14:23:34.605 * Ready to accept connections tcp
opengpts-frontend  | yarn run v1.22.19
opengpts-frontend  | $ vite --host
opengpts-backend   | INFO:     Will watch for changes in these directories: ['/backend']
opengpts-backend   | INFO:     Uvicorn running on http://localhost:8000 (Press CTRL+C to quit)
opengpts-backend   | INFO:     Started reloader process [1] using StatReload
opengpts-frontend  |
opengpts-frontend  |   VITE v4.5.0  ready in 106 ms
opengpts-frontend  |
opengpts-frontend  |   ➜  Local:   http://localhost:5173/
opengpts-frontend  |   ➜  Network: http://xx:5173/
opengpts-backend   | Process SpawnProcess-1:
opengpts-backend   | Traceback (most recent call last):
opengpts-backend   |   File "/usr/local/lib/python3.11/site-packages/langchain_robocorp/toolkits.py", line 121, in get_tools
opengpts-backend   |     api_spec = reduce_openapi_spec(self.url, json_spec)
opengpts-backend   |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
opengpts-backend   |   File "/usr/local/lib/python3.11/site-packages/langchain_robocorp/_common.py", line 30, in reduce_openapi_spec
opengpts-backend   |     for route, operation in spec["paths"].items()
opengpts-backend   |                             ~~~~^^^^^^^^^
opengpts-backend   | KeyError: 'paths'
opengpts-backend   |
opengpts-backend   | During handling of the above exception, another exception occurred:
opengpts-backend   |
opengpts-backend   | Traceback (most recent call last):
opengpts-backend   |   File "/usr/local/lib/python3.11/multiprocessing/process.py", line 314, in _bootstrap
opengpts-backend   |     self.run()
opengpts-backend   |   File "/usr/local/lib/python3.11/multiprocessing/process.py", line 108, in run
opengpts-backend   |     self._target(*self._args, **self._kwargs)
opengpts-backend   |   File "/usr/local/lib/python3.11/site-packages/uvicorn/_subprocess.py", line 76, in subprocess_started
opengpts-backend   |     target(sockets=sockets)
opengpts-backend   |   File "/usr/local/lib/python3.11/site-packages/uvicorn/server.py", line 61, in run
opengpts-backend   |     return asyncio.run(self.serve(sockets=sockets))
opengpts-backend   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
opengpts-backend   |   File "/usr/local/lib/python3.11/asyncio/runners.py", line 190, in run
opengpts-backend   |     return runner.run(main)
opengpts-backend   |            ^^^^^^^^^^^^^^^^
opengpts-backend   |   File "/usr/local/lib/python3.11/asyncio/runners.py", line 118, in run
opengpts-backend   |     return self._loop.run_until_complete(task)
opengpts-backend   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
opengpts-backend   |   File "/usr/local/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
opengpts-backend   |     return future.result()
opengpts-backend   |            ^^^^^^^^^^^^^^^
opengpts-backend   |   File "/usr/local/lib/python3.11/site-packages/uvicorn/server.py", line 68, in serve
opengpts-backend   |     config.load()
opengpts-backend   |   File "/usr/local/lib/python3.11/site-packages/uvicorn/config.py", line 467, in load
opengpts-backend   |     self.loaded_app = import_from_string(self.app)
opengpts-backend   |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
opengpts-backend   |   File "/usr/local/lib/python3.11/site-packages/uvicorn/importer.py", line 21, in import_from_string
opengpts-backend   |     module = importlib.import_module(module_str)
opengpts-backend   |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
opengpts-backend   |   File "/usr/local/lib/python3.11/importlib/init.py", line 126, in import_module
opengpts-backend   |     return _bootstrap._gcd_import(name[level:], package, level)
opengpts-backend   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
opengpts-backend   |   File "", line 1204, in _gcd_import
opengpts-backend   |   File "", line 1176, in _find_and_load
opengpts-backend   |   File "", line 1147, in _find_and_load_unlocked
opengpts-backend   |   File "", line 690, in _load_unlocked
opengpts-backend   |   File "", line 940, in exec_module
opengpts-backend   |   File "", line 241, in _call_with_frames_removed
opengpts-backend   |   File "/backend/app/server.py", line 9, in
opengpts-backend   |     from app.api import router as api_router
opengpts-backend   |   File "/backend/app/api/init.py", line 3, in
opengpts-backend   |     from app.api.assistants import router as assistants_router
opengpts-backend   |   File "/backend/app/api/assistants.py", line 7, in
opengpts-backend   |     import app.storage as storage
opengpts-backend   |   File "/backend/app/storage.py", line 9, in
opengpts-backend   |     from app.agent import AgentType, get_agent_executor
opengpts-backend   |   File "/backend/app/agent.py", line 23, in
opengpts-backend   |     from app.tools import (
opengpts-backend   |   File "/backend/app/tools.py", line 163, in
opengpts-backend   |     v()
opengpts-backend   |   File "/backend/app/tools.py", line 128, in _get_action_server
opengpts-backend   |     tools = toolkit.get_tools()
opengpts-backend   |             ^^^^^^^^^^^^^^^^^^^
opengpts-backend   |   File "/usr/local/lib/python3.11/site-packages/langchain_robocorp/toolkits.py", line 123, in get_tools
opengpts-backend   |     raise ValueError(
opengpts-backend   | ValueError: Failed to fetch OpenAPI schema from Action Server - https://cloud.robocorp.com/api/v1/workspaces/xxx^CGracefully stopping... (press Ctrl+C again to force)

Update: I got the bots working (RAG and simple chat) if I comment out, them in tools.py in backend. I also made a small change in the makefile. Still trying: but here is the change:
tools.py in Backend:

class AvailableTools(str, Enum):
    # ACTION_SERVER = "Action Server by Robocorp"
    # DDG_SEARCH = "DDG Search"
    # TAVILY = "Search (Tavily)"
    # TAVILY_ANSWER = "Search (short answer, Tavily)"
    # RETRIEVAL = "Retrieval"
    # ARXIV = "Arxiv"
    # YOU_SEARCH = "You.com Search"
    # SEC_FILINGS = "SEC Filings (Kay.ai)"
    # PRESS_RELEASES = "Press Releases (Kay.ai)"
    # PUBMED = "PubMed"
    WIKIPEDIA = "Wikipedia"

TOOLS = {
    # AvailableTools.ACTION_SERVER: _get_action_server,
    # AvailableTools.DDG_SEARCH: _get_duck_duck_go,
    # AvailableTools.ARXIV: _get_arxiv,
    # AvailableTools.YOU_SEARCH: _get_you_search,
    # AvailableTools.SEC_FILINGS: _get_sec_filings,
    # AvailableTools.PRESS_RELEASES: _get_press_releases,
    # AvailableTools.PUBMED: _get_pubmed,
    # AvailableTools.TAVILY: _get_tavily,
    AvailableTools.WIKIPEDIA: _get_wikipedia,
#     AvailableTools.TAVILY_ANSWER: _get_tavily_answer,
}

TOOL_OPTIONS = {e.value: e.value for e in AvailableTools}

The dockerfile in backend changed IP address:
ENTRYPOINT [ "uvicorn", "app.server:app", "--host", "<IP_ADDRESS>" ]
at least the bots are working. I will continue to check what is going on. If someone finds out, pl let us know!

Thanks @abhinandanshahdev - so now I have progress by adding to .env (eg copying from .env-example)
ROBOCORP_ACTION_SERVER_URL=https://dummy-action-server.robocorp.link
ROBOCORP_ACTION_SERVER_KEY=dummy-api-key

However new issues remain. UI renders but on a save I get
opengpts-frontend  |   ➜  Network: http://<IP_ADDRESS>:5173/
opengpts-backend   | No UI directory found, serving API only.
opengpts-backend   | INFO:     Started server process [8]
opengpts-backend   | INFO:     Waiting for application startup.
opengpts-backend   | INFO:     Application startup complete.
opengpts-backend   | INFO:     <IP_ADDRESS>:44840 - "GET /runs/config_schema HTTP/1.1" 200 OK
opengpts-backend   | INFO:     <IP_ADDRESS>:44854 - "GET /threads/ HTTP/1.1" 422 Unprocessable Entity
opengpts-backend   | INFO:     <IP_ADDRESS>:44864 - "GET /assistants/ HTTP/1.1" 422 Unprocessable Entity
opengpts-backend   | INFO:     <IP_ADDRESS>:44880 - "GET /assistants/public/ HTTP/1.1" 200 OK
opengpts-backend   | INFO:     <IP_ADDRESS>:45142 - "PUT /assistants/407845c4-1d48-4915-8e6e-f25d9b4243a8 HTTP/1.1" 422 Unprocessable Entity

Try adding all the env variables that are present in .env.example, even if they are there as placeholders.
So you should have your OPENAI_API_KEY, and the rest you can use the same placeholders.

Same here, the project doesnt work. Very frustrating.
opengpts-redis     | 8:M 24 Feb 2024 14:30:19.426 * Server initialized opengpts-redis     | 8:M 24 Feb 2024 14:30:19.426 * Ready to accept connections tcp opengpts-frontend  | yarn run v1.22.19 opengpts-frontend  | $ vite --host opengpts-backend   | INFO:     Will watch for changes in these directories: ['/backend'] opengpts-backend   | INFO:     Uvicorn running on http://<IP_ADDRESS>:8000 (Press CTRL+C to quit) opengpts-backend   | INFO:     Started reloader process [1] using StatReload opengpts-frontend  | opengpts-frontend  |   VITE v4.5.0  ready in 122 ms opengpts-frontend  | opengpts-frontend  |   ➜  Local:   http://localhost:5173/ opengpts-frontend  |   ➜  Network: http://<IP_ADDRESS>:5173/ opengpts-backend   | Process SpawnProcess-1: opengpts-backend   | Traceback (most recent call last): opengpts-backend   |   File "/usr/local/lib/python3.11/multiprocessing/process.py", line 314, in _bootstrap opengpts-backend   |     self.run() opengpts-backend   |   File "/usr/local/lib/python3.11/multiprocessing/process.py", line 108, in run opengpts-backend   |     self._target(*self._args, **self._kwargs) opengpts-backend   |   File "/usr/local/lib/python3.11/site-packages/uvicorn/_subprocess.py", line 76, in subprocess_start ed opengpts-backend   |     target(sockets=sockets) opengpts-backend   |   File "/usr/local/lib/python3.11/site-packages/uvicorn/server.py", line 61, in run opengpts-backend   |     return asyncio.run(self.serve(sockets=sockets)) opengpts-backend   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ opengpts-backend   |   File "/usr/local/lib/python3.11/asyncio/runners.py", line 190, in run opengpts-backend   |     return runner.run(main) opengpts-backend   |            ^^^^^^^^^^^^^^^^ opengpts-backend   |   File "/usr/local/lib/python3.11/asyncio/runners.py", line 118, in run opengpts-backend   |     return self._loop.run_until_complete(task) opengpts-backend   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ opengpts-backend   |   File "/usr/local/lib/python3.11/asyncio/base_events.py", line 654, in run_until_complete opengpts-backend   |     return future.result() opengpts-backend   |            ^^^^^^^^^^^^^^^ opengpts-backend   |   File "/usr/local/lib/python3.11/site-packages/uvicorn/server.py", line 68, in serve opengpts-backend   |     config.load() opengpts-backend   |   File "/usr/local/lib/python3.11/site-packages/uvicorn/config.py", line 467, in load opengpts-backend   |     self.loaded_app = import_from_string(self.app) opengpts-backend   |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ opengpts-backend   |   File "/usr/local/lib/python3.11/site-packages/uvicorn/importer.py", line 21, in import_from_string opengpts-backend   |     module = importlib.import_module(module_str) opengpts-backend   |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ opengpts-backend   |   File "/usr/local/lib/python3.11/importlib/__init__.py", line 126, in import_module opengpts-backend   |     return _bootstrap._gcd_import(name[level:], package, level) opengpts-backend   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ opengpts-backend   |   File "<frozen importlib._bootstrap>", line 1204, in _gcd_import opengpts-backend   |   File "<frozen importlib._bootstrap>", line 1176, in _find_and_load opengpts-backend   |   File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked opengpts-backend   |   File "<frozen importlib._bootstrap>", line 690, in _load_unlocked opengpts-backend   |   File "<frozen importlib._bootstrap_external>", line 940, in exec_module opengpts-backend   |   File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed opengpts-backend   |   File "/backend/app/server.py", line 9, in <module> opengpts-backend   |     from app.api import router as api_router opengpts-backend   |   File "/backend/app/api/__init__.py", line 3, in <module> opengpts-backend   |     from app.api.assistants import router as assistants_router opengpts-backend   |   File "/backend/app/api/assistants.py", line 7, in <module> opengpts-backend   |     import app.storage as storage opengpts-backend   |   File "/backend/app/storage.py", line 10, in <module> opengpts-backend   |     from app.agent import AgentType, get_agent_executor opengpts-backend   |   File "/backend/app/agent.py", line 200, in <module> opengpts-backend   |     ConfigurableChatBot(llm=LLMType.GPT_35_TURBO, checkpoint=CHECKPOINTER) opengpts-backend   |   File "/backend/app/agent.py", line 189, in __init__ opengpts-backend   |     chatbot = get_chatbot(llm, system_message) opengpts-backend   |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ opengpts-backend   |   File "/backend/app/agent.py", line 155, in get_chatbot opengpts-backend   |     llm = get_openai_llm() opengpts-backend   |           ^^^^^^^^^^^^^^^^ opengpts-backend   |   File "/backend/app/llms.py", line 14, in get_openai_llm opengpts-backend   |     http_client = httpx.AsyncClient(proxies=proxy_url) opengpts-backend   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ opengpts-backend   |   File "/usr/local/lib/python3.11/site-packages/httpx/_client.py", line 1395, in __init__ opengpts-backend   |     proxy_map = self._get_proxy_map(proxies, allow_env_proxies) opengpts-backend   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ opengpts-backend   |   File "/usr/local/lib/python3.11/site-packages/httpx/_client.py", line 228, in _get_proxy_map opengpts-backend   |     proxy = Proxy(url=proxies) if isinstance(proxies, (str, URL)) else proxies opengpts-backend   |             ^^^^^^^^^^^^^^^^^^ opengpts-backend   |   File "/usr/local/lib/python3.11/site-packages/httpx/_config.py", line 334, in __init__ opengpts-backend   |     raise ValueError(f"Unknown scheme for proxy URL {url!r}") opengpts-backend   | ValueError: Unknown scheme for proxy URL URL('your_proxy_url') opengpts-frontend  | 2:30:40 PM [vite] http proxy error at /threads/: opengpts-frontend  | Error: connect ECONNREFUSED <IP_ADDRESS>:8000 opengpts-frontend  |     at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1278:16) opengpts-frontend  | 2:30:40 PM [vite] http proxy error at /assistants/public/: opengpts-frontend  | Error: connect ECONNREFUSED <IP_ADDRESS>:8000 opengpts-frontend  |     at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1278:16) opengpts-frontend  | 2:30:40 PM [vite] http proxy error at /assistants/: opengpts-frontend  | Error: connect ECONNREFUSED <IP_ADDRESS>:8000 opengpts-frontend  |     at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1278:16) opengpts-frontend  | 2:30:40 PM [vite] http proxy error at /runs/config_schema: opengpts-frontend  | Error: connect ECONNREFUSED <IP_ADDRESS>:8000 opengpts-frontend  |     at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1278:16)

@felipeggrod try removing PROXY_URL=your_proxy_url from your .env file. Worked for me.


remove cheking of ProvisionFailedCondition

The related issue: https://issues.redhat.com/browse/ACM-2531
Signed-off-by: Yang Le<EMAIL_ADDRESS>

/lgtm


⚠ Bofrost.es has degraded performance

In ec91bf2, Bofrost.es (https://www.bofrost.es) experienced degraded performance:

HTTP code: 200
Response time: 1737 ms

Resolved: Bofrost.es performance has improved in cd78eea after 6 minutes.


feat: use repository recommendations from the API

What type of PR is this? (check all applicable)

[x] 🍕 Feature
[x] 🐛 Bug Fix
[ ] 📝 Documentation Update
[ ] 🎨 Style
[x] 🧑💻 Code Refactor
[ ] 🔥 Performance Improvements
[ ] ✅ Test
[ ] 🤖 Build
[ ] 🔁 CI
[ ] 📦 Chore (Release)
[ ] ⏩ Revert

Description

Connects user recommendations tab to selected user interests
Refactors User Repository Recommendations into a separate component
Fixes bug where tab switching was not reflected in the URL
Adds a URL for recommendations to the user profile
Also cleans up some linter checks for imports

Related Tickets & Documents

Mobile & Desktop Screenshots/Recordings

BEFORE:

AFTER:

Added tests?

[ ] 👍 yes
[ ] 🙅 no, because they aren't needed
[ ] 🙋 no, because I need help

Added to documentation?

[ ] 📜 README.md
[ ] 📓 docs.opensauced.pizza
[ ] 🍕 dev.to/opensauced
[ ] 📕 storybook
[ ] 🙅 no documentation needed

[optional] Are there any post-deployment tasks we need to perform?
[optional] What gif best describes this PR or how it makes you feel?

Are we filtering based on stars in the data still? Freecodecamp and React seem so out of reach for even an experienced developer.

No, we're not filtering on stars. Its the active repositories that have been most recently updated that are returned. This is development data so its a bit stale

Oh that makes. The dev data always throws me off. I also tried testing the api in swagger but couldn't get a dev token to test on beta.
Regardless, let's move forward with this. It is much better than our current solution.
We will continue to tweak it after it's live.


The sale never changes

The sale is always 13% off on the 4th item down and 29% off on the 6th item down. Never ever seen it change across 30 quotas and 7 runs
(Unrelated Beekeeper Question) Does the beehive value multiplier on beekeeper stack across players?(add/multiply?) and does it only apply when beekeeper is at whatever the max level is based on your config or is the bonus automatically divided across the levels?
also what is the distances in? Discombobulating has a radius of 40 but like 40 what?

I would imagine it could have to do with having less than the standard amount in the ship by configging an few out?

I haven't experienced this but will test more.
Beekeeper is server wide and on the last level
1 unity unit is 1 meter. Iirc this game is scaled a little larger though so my gut tells me 1 unit is about 0.75 meters. If you want to get a feel for distances buy the walkie gps, make note of where you're standing. Then walk 40 units in one direction. That's 40 units.

so if beekeeper adds a 1.1 multiplier, 5 people having it makes it a 1.5 multiplier or is it just 1.1 still?

Important note, this was occurring while I had a value of .75 and .50 for the sale chance


Infer overloads instead of union returns from flow analysis

Given the following code:
const flip = (x: number) => x.toString()
const flop = (x: string) => x.length

// What is the return type of flipFlop?
const flipFlop = (x: string | number) => isNumber(x) ? flip(x) : flop(x)

Today flipFlop is inferred as having a return type of string | number. Intuitively though, flipFlop is an overloaded function of type (x: number) => string & (x: string) => number.
Given that TypeScript already performs flow analysis in order to discover the union return type string | number, it seems like some useful information is being discarded. Specifically, when performing the analysis that yields a return type of number | string, it seems a shame to throw away the associated information that x is narrowed to number in the exit block where the function's return type is string, and vice versa.
If we instead utilize this information, it becomes possible to infer the much more accurate type (x: number) => string & (x: string) => number.

In general, it might be nice if union parameters, overloaded functions, and control flow could be integrated more smoothly.
A function type with a union parameter (x: number | string) => Date is basically equivalent to the overloaded function (x: number) => Date & (x: string) => Date. Similarly, a branched function with various return points (such as flipFlop) is overloaded with respect to the return type.
If the CFA treats each type in the union type of a parameter as a separate entry point, and solves the control flow for each indepenently, it should be possible to discover multiple independent mappings of input types to output type (i.e. overloads).
For functions with multiple parameters of union types, the overloads inferred must be a cartesian product of the unions. This can get expensive quickly, but some analysis of the function body to predict which types are actually discriminated against should allow "inert" unions that do not participate in control flow to be grouped together and treated as a single overload/entrypoint.

After adding conditional types and trying out some related patterns with other features, this doesn't seem like a good fit. Once you start pushing the CFA through to the return type, you can quickly end up with a return type expression that looks like an unholy restating of the function implementation, and in general function implementations should be opaque by default - the caller today might return a string when given a number and vice versa, but the maintainable-by-default version is to not expose the internal logic of your function unless that's what you actually intend to do.


Using the extension on Ubuntu 20.04

Hi Gilles,
I'm trying to use this extension in vscode on Ubuntu 20.04.
Seems to be working ;-).
Have others tried this?
Is there a way to run ABL Unit Test Classes?
Thx, Lieven

I know a few people have tried (successfully) using the VSCode plugin on Linux. As long as the Linux platform is supported by Progress, it will be possible to use it with VSCode.
Regarding ABL Unit tests, there's no specific way to execute the unit tests. You may try executing them from Ant (there's a vscode plugin for that), or directly with VSCode tasks.

What I can't seem to get working is a full build. I'm able to run a procedure (p file) but I'm not able to compile it.
This is my openedge-project.json file:
{
  "name": "MyProject",
  "version": "1.0",
  "oeversion": "12.2",
  "graphicalMode": false,
  "charset": "utf-8",
  "extraParameters": "",
  "buildPath": [
    { "type": "source", "path": "src" }
  ],
  "buildDirectory": "build",
  "dbConnections": [
    /*{
      "name": "sp2k",
      "connect": "-db db/sp2k -RO",
      "dumpFile": "dump/sp2k.df",
      "aliases": [ "foo", "bar"]
    }*/
  ],
  "numThreads": 1,
  "procedures": [
    { "name": "foo/bar.p", "mode": "once"  }
  ],
  "profiles": [  ]
}

I have one test.p in src folder.
Running ABL: Rebuild project doesn't do anything... Is there a way to debug this? A log file showing what's happening in the background?

Ahhh, it's working now. Restarted vscode and now I think it has picked up the new openedge-project.json (had changed it).
Man, thx for this. I can now work on linux with an ide.


Issue found by Svace static analyzer

Hello
This warning found with the Svace.
It may cause unforeseen problems.
https://github.com/prometheus/prometheus/blob/77e648534e2f716cc3cf090eadf009d4c37d0dbf/scrape/scrape.go#L508
Usage of variable l is found in goroutine while its value may be changed by one of outer loops before this goroutine's execution (race condition).
https://github.com/prometheus/prometheus/blob/77e648534e2f716cc3cf090eadf009d4c37d0dbf/scrape/scrape.go#L510

I don't think this is an issue in practice because that variable is local and we don't have other pull requests which could change it.
We could rewrite it as go func(sl scrapeLoop) { sl.run(interval, timeout, nil)  }(l) but i don't know if that brings any benefit.

By adding l as a parameter to the closure, l is evaluated at each iteration and placed on the stack for the goroutine, so each uniqueLoops element is available to the goroutine when it is eventually executed.
for _, l := range uniqueLoops {
		if l != nil {
			go func(lp loop) {
				lp.run(interval, timeout, nil)
			} (l)
		}
	}

May I contribute to fix this issue with a pull request?

yes

Before we can put the function to the go routine stack, we must know l, so I am not sure that this is an actual bug ? we would not go to the next iteration of the loop before getting the function in the stack?

https://play.golang.org/p/yz_ifHC-Hut -> does not seem to cause issues

The for loop might not do what you expect because their l variable is actually a single variable that takes on the value of each uniqueLoops element. Because the closures are all only bound to that one variable, there is a very good chance that when you run this code you will see the last element printed for every iteration instead of each value in sequence, because the goroutines will probably not begin executing until after the loop.

I have asked this question in golang-nuts and got a reply: https://groups.google.com/g/golang-nuts/c/2vZ0IBm3Q18
The provider answer, which I invite you to read, points at https://golang.org/ref/spec#Go_statements

The function value and parameters are evaluated as usual in the calling goroutine, but unlike with a regular call, program execution does not wait for the invoked function to complete.

As the function value is evaluated in the calling go routing, I expect this to just work as expected, and to be a false positive of your static analyzer.

I agree with @roidelapluie here. What your static analyzer should flag is something like this:
	for _, l := range uniqueLoops {
		if l != nil {
			go func(){
				l.run(interval, timeout, nil)
			}()
		}
	}

However, we never access l from the goroutine that is started here. On the contrary, we are retrieving the method to call from l and then start it as a goroutine.

I have asked this question in golang-nuts and got a reply: https://groups.google.com/g/golang-nuts/c/2vZ0IBm3Q18
The provider answer, which I invite you to read, points at https://golang.org/ref/spec#Go_statements

The function value and parameters are evaluated as usual in the calling goroutine, but unlike with a regular call, program execution does not wait for the invoked function to complete.

As the function value is evaluated in the calling go routine, I expect this to just work as expected, and to be a false positive of your static analyzer.

You are right. I agree with you. I misunderstood. Sorry. It's FP. On your case we'll fix it.


feat: opaque symlink support

Summary
This is a follow-up to #6993.
Its goals include:

crawl any directory that's been linked to by a project root (eg: installed via yarn link)
cache all symlinks in jest-haste-map for later consumption
add a follow method to the HasteMap class (for lazily resolving symlinks)

More details in the commit messages and code comments.
What's missing
No support for symlinks in watch mode. 😢 But regular files in linked packages are watched.
More details on watch mode here: https://github.com/facebook/jest/pull/7549#issuecomment-468794373
Test plan
I've fixed most of the tests that were broken by my changes. Please provide guidance on the remaining unfixed tests. Also, we could use some automated tests for symlinks.
I've tested locally on projects using:

pnpm install
yarn link
npm install

For manual testing, you can use this repository:
https://github.com/aleclarson/repro/tree/jest-symlinks

+1

@mjesun when do you think you have time to review this branch?

@SimenB  ^

This is a thing FB devs have to review as it's for RN/Metro. I'm not sure if it's needed for anything Jest itself does?

I'll get to this soon.

The watchman crawler changes are a bit sensitive as that area was highly optimized for performance. Can you confirm that with your change ideally this will have no performance impact if there are no symlinks in the project, and if there are no symlinks in node_modules the behavior stays the same as now, is that correct?

The only impact is in the HasteFS#follow method. We search the set of "link roots" to check if the given file path exists in one of them. If a match is found, we then access the root's "link cache" to check if the given file path was identified as a symlink in the crawling phase.
We could achieve O(1) lookups by keeping a flat map of known symlink paths (which would be rebuilt between restarts).

Symlink paths if they exist in node_modules are stored as absolute paths in the HasteMap cache, is that right? Is there a chance we could make it relative to the root?

Sounds like a plan!

Why is it not necessary to make the same changes in the node crawler?

It is necessary for anyone not using Watchman, but I can't be spending time on code I don't need.

After migrating this PR to TypeScript, I can't seem to run the tests. I get the following error:
$ yarn
$ yarn jest
Error: jest-haste-map: File to process was not found in the haste map.
    at HasteMap._processFile (~/jest/packages/jest-haste-map/build/index.js:625:13)
    at HasteMap._buildHasteMap (~/jest/packages/jest-haste-map/build/index.js:793:30)
    at _buildPromise._buildFileMap.then.data (~/jest/packages/jest-haste-map/build/index.js:418:28)
    at processTicksAndRejections (internal/process/next_tick.js:81:5)

Any suggestions?

@aleclarson thanks for the explanations. Could you make the change to use relative paths instead?
If you could spend some time on updating the node crawler to support the links feature, that would be really awesome. I think a lot of people don't use watchman, or in some cases jest-haste-map has to transparently switch between the two when invoked multiple times (ie. watchman dies) and the intent is that jest-haste-map will exhibit exactly the same behavior with or without watchman. I understand if you can't do it, but if you can spare a little bit to also update it (since you did most of the work already for watchman), that would be fantastic.
@SimenB can you help on the testing issue?

in some cases jest-haste-map has to transparently switch between the two when invoked multiple times

That's not an issue here, because these are crawlers (which only run on startup). Correct me if I'm wrong.
It shouldn't be hard to support symlinks in the node crawler. It would be great if a super profitable corporation like Facebook could help out with that. :) Of course, I assume y'all are using Watchman too, so whoever isn't using Watchman needs to pick up the slack here.

Could you make the change to use relative paths instead?

Sure thing. I'm looking into symlink support for watch mode, too.

in some cases jest-haste-map has to transparently switch between the two when invoked multiple times

Personally, I've never had an issue with Watchman dying. Does Metro or Jest ever have a reason to use the crawler after startup? This isn't really an issue I need to handle.
It shouldn't be hard to support symlinks in the node crawler. It would be great if a super profitable corporation like Facebook could help out with that. :) Of course, I assume y'all are using Watchman too, so whoever isn't using Watchman needs to pick up the slack here.

Could you make the change to use relative paths instead?

Sure thing. I'm looking into symlink support for watch mode, too.

@SimenB can you help on the testing issue?

Just seems like broken code, no? Adding some logging statements above the thrown error
    const relativeFilePath = fastPath.relative(rootDir, filePath);
    const fileMetadata = hasteMap.files.get(relativeFilePath);
    if (!fileMetadata) {
      console.log(relativeFilePath);
      console.log(hasteMap.files);
      throw new Error(
        'jest-haste-map: File to process was not found in the haste map.',
      );
    }

__tests__/CheckboxWithLabel-test.js
Map {
  '../../examples/react-testing-library/__tests__/CheckboxWithLabel-test.js' => [ '',<PHONE_NUMBER>941, 616, 0, [], null ],
  '../../examples/react-testing-library/package.json' => [ '',<PHONE_NUMBER>069, 389, 0, [], null ],
  '../../examples/react-testing-library/.babelrc.js' => [ '',<PHONE_NUMBER>941, 147, 0, [], null ],
  '../../examples/react-testing-library/CheckboxWithLabel.js' => [ '',<PHONE_NUMBER>941, 787, 0, [], null ] }
Error: jest-haste-map: File to process was not found in the haste map.
    at HasteMap._processFile (/Users/simen/repos/jest/packages/jest-haste-map/build/index.js:627:13)
    at HasteMap._buildHasteMap (/Users/simen/repos/jest/packages/jest-haste-map/build/index.js:795:30)
    at _buildPromise._buildFileMap.then.data (/Users/simen/repos/jest/packages/jest-haste-map/build/index.js:418:28)
    at process._tickCallback (internal/process/next_tick.js:68:7)

So the relative path is wrong. AT least on my machine, not sure why CI does not have the same issue

Currently, the Watchman query searches the entire tree of node_modules instead of doing one query per node_modules directory. The idea is that one fell swoop is faster, but I haven't measured it. We could make an assumption that, for example, node_modules/foo won't contain linked dependencies if it's not a linked dependency itself. But the current implementation assumes that it's faster for Watchman to check every single node_modules directory for symlinks. I'm curious what your thoughts on this are, if any.

Adding symlink support to watch mode will be tricky. We'll need to implement what's essentially an incremental crawler, because a new project root can be added at any time (by linking to a directory that lives outside of any existing project root, which is common when adding new dependencies that are locally developed). I definitely don't have time to design and implement that right now. A good first step would be the Jest team outlining how such an "incremental crawler" should be implemented.
For now, Metro users will need to restart the server whenever they add a new dependency via yarn link or similar means.

Note: When a symlink resolves to a file that exists outside every project root, the resolved file path is not added to hasteMap.files, but it probably should be. I won't be implementing that, since I don't have a need for it. But it's worth mentioning!

Please notify me before merging this, so I can turn those refactor: commits into fixups. Thanks! 👍

We do squash merges, so feel free to keep an ugly commit history.

PS: I still need guidance on the remaining failed tests.

Maybe @rubennorte can help? This is a part of the codebase I'm not too familiar with

I created a repository that anyone can use to test this PR:
https://github.com/aleclarson/repro/tree/jest-symlinks

I've made a few changes.

The search for linked dependencies is now parallelized, instead of batched.
Should this be rate limited?

The array of project roots is now cached, which allows for linked roots to be crawled even when the --resetCache flag is used.

Configured roots (eg: the roots option) are now validated just like linked roots are, which means they cannot be inside a node_modules directory nor an existing project root.

LGTM?

I just fixed a bug where the dependency links weren't being cached when Watchman was a "fresh instance". 🐛
Still waiting for assistance with the failing tests. 👀

@SimenB could you help on this one?

Hey @rubennorte and @SimenB, unfortunately, this PR blocks https://github.com/facebook/metro/pull/257#pullrequestreview-208918934, which is a blocker for us and is one of top voted issues on react-native side. It would be very nice to get this reviewed and merged as soon as possible, so we can hope to get it into 0.59 release or at least in 0.60 alpha. Please please please :)
@aleclarson does it makes sense to resolve conflicts?

@rubennorte  @rafeca @rickhanlonii @mjesun guys, it's not a nice way to treat your contributors. It's the top voted jest pull request.. Again, this is a blocker for other FB projects.

I took a look at the merge conflicts to try and help move this forward. This PR isn't going to be straightforward to resolve.
Basically, for performance, we rely on Watchman telling us what files are changed. Watchman has no support for symlinks (https://github.com/facebook/watchman/issues/105). That means if files are updated from a symlink, the haste map won't update it. So we'll need to add special logic to always process all files that are under a symlink. This will be a significant performance hit, but at least it should only apply to the symlink situation.
I'm also not completely clear on how symlinked files are stored in the haste map. Specifically, if I have a file that (via symlink) is at /my/folder/MyTestFile-test.js and I run jest my/folder/MyTestFile-test.js, will this implementation have a map to that file and properly run my test? What about if I reference the file via it's real path? Will it be picked up then? It probably should work for both cases.
I'll have to do some more research to figure out how these issues can be resolved, I don't have good answers right now. We also must benchmark this before/after to ensure it's not a significant performance hit for the non-symlink situation (and if it is, have the ability to turn that off).

Basically, for performance, we rely on Watchman telling us what files are changed. Watchman has no support for symlinks (facebook/watchman#105).

That's already handled in this PR, where Watchman watches the symlink paths –– which does not include changes to the "real path", only the value of the symlink itself (its target path). Every symlink in node_modules that resolves to a directory is added as a "project root" and thus watched recursively.

That means if files are updated from a symlink, the haste map won't update it.

When you say "files are updated from a symlink", what do you mean?

fs.writeFileSync(symlink, data) –– I'm assuming this one.
fs.symlinkSync(target, symlink)
fs.writeFileSync(target, data)

Is "the haste map won't update it" strictly a theory, or have you tested this and can provide a repository with a minimal reproduction?

I'm also not completely clear on how symlinked files are stored in the haste map. Specifically, if I have a file that (via symlink) is at /my/folder/MyTestFile-test.js and I run jest my/folder/MyTestFile-test.js, will this implementation have a map to that file and properly run my test? What about if I reference the file via it's real path? Will it be picked up then? It probably should work for both cases.

Feel free to test this PR out, and let me know what does and doesn't work! 👍

We also must benchmark this before/after to ensure it's not a significant performance hit for the non-symlink situation (and if it is, have the ability to turn that off).

Thoughts on what the benchmarks should be?

The reason I'm hesitant about this is because it's a change to the public interface that is then implemented in other places. It's a long-term commitment. If this implementation added support for symlinks in a way that was implemented internally only with no modifications to the public interface and could be turned off via a config flag (for performance reasons), I'd be working on resolving your merge conflicts myself right now.
I understand that you're trying to resolve the issue for Metro, not Jest, but this a PR into Jest and I'm approaching it from that perspective. If you want to re-approach this in a way within Metro that doesn't modify the Jest HasteFS interface, feel free.
I think to move forward we need to explore if it's possible to implement this in a way that hides symlinks from the rest of the system. Right now, what this PR does at a high-level (correct me if I'm wrong) is just add the ability to resolve symlinks and cache that result.
The problem with that approach is it doesn't really add symlink support to the rest of the system. For example, in Jest, there's a function in SearchSource that does pattern matching against the input to find test files to run. It works by asking HasteFS for all of the files and then it checks some regex against every file path. However, it's currently only checking one file path, so it's not going to match both the symlink and the real path.
SearchSource also has functionality to pass in file paths directly (lots of tooling does this based on changed files), but that can fail too too. In this case, it fails just because it's trying to ensure the path is in one of the whitelisted root directories (as listed in the config file). Obviously, the real path is not there, so it wouldn't work if you passed in a symlink. This is probably the same root cause as the warning you put above.
I'm willing to help move this forward but I think what actually needs to happen is a larger change in multiple PRs, probably starting with reducing the reliance on getAllFiles() and similar methods in the HasteFS that currently de-centralize all of the logic needed for symlinks.
Specifically, if you want to match RegEx against file paths, to centralize that logic, a method could be added to HasteFS that allows you to return all files for a specific set of RegEx matchers in one PR and migrate consumers to begin using that. Next, symlink support could be added to that method, which would automatically propagate out to everything using it.
I would be happy to work with you to review any PRs that:

Centralize logic into HasteFS and reduce reliance on getAllFiles(). Getting all files that match a RegEx and adapting it into places using getAllFiles(), including SearchSource, would be a definite push in the right direction.
Failing tests (disabled by default) that test for symlink support so anyone working on adding it has test cases available. I'd prefer e2e style tests for this.

CC: @SimenB @cpojer Please provide any thoughts you have and if you see any issues with what I've outlined here.

I think to move forward we need to explore if it's possible to implement this in a way that hides symlinks from the rest of the system.

If the Jest team decides on transparent symlinks, Metro will need to check whether each directory in the node_modules of a project root is actually a symlink (using fs.lstat probably) in order to recursively watch any locally-developed packages (eg: those installed via yarn link).
I don't have the bandwidth to work on transparent symlinks in Jest, but I'd be happy to help on Metro once transparent symlinks are shipped. For now, using this PR has been working "good enough" for me.

Any updates on this issue?

Any chance we can get moving on this again?

Really appreciate If anyone can merge this pr，I'm blocked...

Hi, thanks for your work so far, we also experienced issues with symlinks, can you please give an update on this? Thanks!

Any updates with this?

Latest in this space is #9351

As @nicojs said, you're my personal hero too @aleclarson!
Please don't give up, you've gone this far so far. I saw this starting here https://github.com/facebook/metro/issues/1#issuecomment-421628147 more than 1 year ago.
How could I help to get this done?

One of the biggest problem of adopting react-native-web and mono repo setup, definitely voting fo this one!

Hi @SimenB just trying to understand what we need to do to get symlinks in Metro working nicely.
Does #9351 need to be merged to unblock this PR?

Rebased onto v24.9.0

Probably the longest PR as duration I have seen. @aleclarson - nice job trying to address this!

Any update from this PR?

Landed #9351 which supports crawling symlinks (which fixes support for Bazel at least). Is the extra features of this PR needed? If yes, can you rebase so we can re-evaluate?

Is the extra features of this PR needed?

Metro users can't use linked dependencies without this PR. (https://github.com/facebook/metro/pull/257)

If yes, can you rebase so we can re-evaluate?

I'm hesitant to rebase, because of past concerns here and here.
But I will rebase if you tell me it will be merged. :)

But I will rebase if you tell me it will be merged. :)

I cannot make that promise (or even that it'd be reviewed in a timely manner), unfortunately ☹

Is the extra features of this PR needed?

Metro users can't use linked dependencies without this PR. (facebook/metro#257)

I am one of them, any update on this one?

Since a custom fork of jest-haste-map has been added to metro, it may be appropriate to work on there.
https://github.com/facebook/metro/tree/main/packages/metro-file-map


[New game]: Bouncing button

🎮 Game Request
Old drawers hold hidden treasures and lot of fun. Try to grab all of them!
Point down the features
Game points will be awarded as you advance to next levels
Select program in which you are contributing
GSSoC23
Code of Conduct

[X] I follow CONTRIBUTING GUIDELINE of this project.

Hey @S-ishita !
Thank you for raising an issue 💗
You can self assign the issue by commenting /assign in comment 😀
Make sure you follow CODE OF CONDUCT and CONTRIBUTING GUIDELINES 🚀
Don’t Forget to ⭐ our GameZone🎮
Make sure you join our Discord🕹

Hey @S-ishita ! Thank you so much for your raising the issue💗
It’s all yours, you can come anytime again and make some contributions! 🚀
Alone, we can do little, but together we can do so much! 😇


Fix to 'cant find column' error message

Switch to airtable link.
Add "Try again".

Fixed by https://github.com/usdigitalresponse/npi-lawyer-client-matching/commit/287e538a733dccd3759c7d9828da7ed446835e27


(chores) camel-route-parser: use specific exceptions instead of generic ones

This actually often makes using the API harder because of endless exceptions that has no value, it may be better to make it not throw any checked exceptions at all

This actually often makes using the API harder because of endless exceptions that has no value, it may be better to make it not throw any checked exceptions at all

Hm, noted, thanks! Let me take a look at that.


Review Swagger

The goal is to review and give feedback on Swagger based on the discussion of ERD with @Jim1151 .
This is the agenda for 06.25.2021

Can you share a link to the ERD?

Done based on #190


Void Worlds

Just a suggestion, but also very needed. Please add a void world generation option. Thank you!

Refer to https://wiki.traincarts.net/p/MyWorlds/Commands#Void_Worlds or just get a void world generator plugin and refer to https://wiki.traincarts.net/p/MyWorlds/Commands#Generator_Plugins


Editor handleDroppedFiles

when I dropFiles, mouse on  placeholder,the editor show the file content.
How to forbid  to show the content.
thanks!

handlePastedFiles can be used for this.