url_launcher forceSafariVC set to true does not work in iOS

Steps to Reproduce

url_launcher version 5.4.2 (latest)
Call await launch(URL, forceSafariVC: true)
It should open the URL in iOS Safari, instead, it opens in the app.

Expected results:
It should open the URL link to the native Safari browser
Actual results:
It opens the URL link inside the app
Sample Code:
String url = 'https://apple.com';
if (await canLaunch(url)) {
    await launch(url, forceSafariVC: true);
} else {
  throw 'Could not launch $url';
}

flutter doctor -v
[✓] Flutter (Channel stable, v1.12.13+hotfix.9, on Mac OS X 10.15.4 19E287, locale en-US)
    • Flutter version 1.12.13+hotfix.9 at /Users/marco/Development/flutter
    • Framework revision f139b11009 (3 weeks ago), 2020-03-30 13:57:30 -0700
    • Engine revision af51afceb8
    • Dart version 2.7.2

[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at /Users/marco/Library/Android/sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b4-5784211)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.4.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.4.1, Build version 11E503a
    • CocoaPods version 1.8.4

[✓] Android Studio (version 3.6)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 45.1.1
    • Dart plugin version 192.7761
    • Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b4-5784211)

[✓] VS Code (version 1.41.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.7.1

[✓] Connected device (1 available)
    • iPhone 11 Pro Max • D9C04753-CBD3-43F7-8AD8-0F70963082E8 • ios • com.apple.CoreSimulator.SimRuntime.iOS-13-4 (simulator)

• No issues found!

can you provide screenshot ?

The first image shows the originating iOS app page being moved away as the in-app browser is starting to show:

The second image shows the in-app browser with the page loaded:

By using the await launch(URL, forceSafariVC: true) it should have opened the Safari browser outside of the app.
Thanks

Give us url example and your project package name ..

This issue persist no matter which URL we use.
The following is the code we are using, you can substitute the URL with anyone you like. https://microsoft.com, https://google.com and so on. The flag forceSafariVC: true does not make a difference, it always opens in the app instead of launching the iOS device Safari browser. Apple does not allow to open up links inside app to any websites that might take donations, they require for the websites to open externally to the Safari browser ( or which other default browser the user has setup).
String url = 'https://apple.com';
if (await canLaunch(url)) {
    await launch(url, forceSafariVC: true);
} else {
  throw 'Could not launch $url';
}

Thank you

It's all working, I was passing the value of true instead of false
But what is weird, the default value is false and it was still not launching to Safari Browser, but once I forced the value to be forceSafariVC: false it worked.


Checking Whitelisted Pools contain UST

Adds the check for UST in the pool

Codecov Report

Merging #1482 (b8f54f9) into mattverse/gov-unpool (3aebe9a) will not change coverage.
The diff coverage is n/a.

@@                  Coverage Diff                  @@
##           mattverse/gov-unpool    #1482   +/-   ##
=====================================================
  Coverage                 20.54%   20.54%
=====================================================
  Files                       200      200
  Lines                     25913    25913
=====================================================
  Hits                       5325     5325
  Misses                    19619    19619
  Partials                    969      969

Continue to review full report at Codecov.

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


Improve horizontal spacing of fractions

A fraction is surrounded by a box of width \nulldelimiterspace on either side.
That size is 1.2pt and does not scale with the style or font size.
Furthermore, a \frac creates a brace-enclosed group which results in a \mathord, not a \mathinner.
This addresses #249. I'll attach visual diffs of the changed screenshots in a moment.

I'm displaying two diffs for each test case. The first is old file in red and new file in green, the second is new file in red and LaTeX in green.
Arrays:

BinomTest

DeepFontSizing

There is no comparison against TeX for this one, since deep font sizing doesn't work there yet.
DisplayMode

DisplayStyle

FractionTest

I've added some extra text to this one, to catch some of the group type related issues described in https://github.com/mathjax/MathJax/issues/969.
NestedFractions

Phantom

RlapBug

Text

On the whole I'd say the changes are all going in the right direction, even though some of the cases are not yet as close to the TeX rendering as one would wish.
By the way: the second image for each test case was created by the newly merged texcmp utility. The first was the result of the following command:
rm -rf imgdiff
mkdir imgdiff
for i in $(git status --porcelain test/screenshotter/images | awk '/^.M /{print $2}'); do
  git show HEAD:$i | convert \
  \( $i -grayscale Rec709Luminance \) \( png:- -grayscale Rec709Luminance \) \
  \( -clone 0-1 -compose darken -composite \) -channel RGB -combine -trim imgdiff/${i##*/}
done

Looks good to me! :+1: @kevinb7 any thoughts?

@gagern sorry for not responding earlier.  I saw this one morning and thought "this is awesome" and then I got side-tracked.  @xymostech big improvement, especially with fractions.  LGTM ^_^.

I think we'll find lots of uses for makeNullDelimiter.

Thanks for the pull request.


vimPlugins.bufdelete-nvim: init at 2021-07-24

Motivation for this change
Delete Neovim buffers without losing window layout
https://github.com/famiu/bufdelete.nvim
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 133272 at 97d4432b run on aarch64-linux 1

4 packages built successfully:

spacevim
vimPlugins.telescope-fzf-native-nvim
vimPlugins.telescope-fzy-native-nvim
vimPlugins.vim-clap

2 suggestions:

warning: missing-phase-hooks
buildPhase should probably contain runHook preBuild and runHook postBuild.
Near pkgs/misc/vim-plugins/build-vim-plugin.nix:28:14:
   |
28 |       inherit unpackPhase configurePhase buildPhase addonInfo preInstall postInstall;
   |              ^

warning: missing-phase-hooks
configurePhase should probably contain runHook preConfigure and runHook postConfigure.
Near pkgs/misc/vim-plugins/build-vim-plugin.nix:28:14:
   |
28 |       inherit unpackPhase configurePhase buildPhase addonInfo preInstall postInstall;
   |              ^


[cleanup] Mass replace tabs with spaces

Mass search and replace of tabs with 2 spaces. This makes diffs easier. This is done on the entire repo. Image files, vendor directories and Makefiles are skipped.
Signed-off-by: Srikrishna Iyer<EMAIL_ADDRESS>

Thanks for doing this (and sorry for the assembly snippets with the tabs!). I wonder whether we should add a CI check for this sort of thing. What command did you run to get the list of files?

Thanks for doing this (and sorry for the assembly snippets with the tabs!). I wonder whether we should add a CI check for this sort of thing. What command did you run to get the list of files?

Nothing special! Just find . -type f | xargs sed -i 's/\t/  /g'. And manually restore images, vendor directories and makefiles. It was surprisingly not that painful. I am sure there is a better strategy than this though. A CI check would indeed be quite useful.


Metamethods should be defined in class method table

Hey,
I noticed in your constructors you make a new table as the object's metatable for each object which can impact memory negatively. Instead you should define your metamethods inside of the table that contains the functions so a single table used as the metatable is shared among all objects. It's a pretty minor change but,
local ParticleEmitter = {}
ParticleEmitter.__index = ParticleEmitter

-- ... then later in your ParticleEmitter constructor:
return setmetatable(self, ParticleEmitter)

Great recommendation! Metatables have always confused me but your simple explanation makes it clear why this would be beneficial. I plan on working on some updates tonight so I will definitely add this to the list.


Rename package from http/server to http_server.

Don't ask, docs quirks.

ooo does this mean the version is becoming 0.2.0?

Indeed! B-)


Updated to use go modules

removed the vendor directory and initiated as a module
updated tfjson_test
Updated circle ci config
Added env variable to turn on modules
added env variable to test run and added names to runs
updated env variable
installed terraform
downloading dependencies before building terraform

Thanks for the PR!
I've updated the project to use CircleCI 2.0, so it should be possible to update/touch up your PR and have the jobs run. Once this is running in CI I can provide feedback on the actual PR.

Hi I have updated my PR to pass all of the tests, the only problem is go version 1.10 doesn't support modules and so the vendor directory has to be included so implementing modules then becomes pointless as the dependencies are satisfied within the repo.


Move documentation to versioned repo?

Currently docs are held within the docs/ folder of the maverick repo.  Github pages are then used with the master branch option.  However, this only allows a single version of docs to be served, and work-in-progress docs are served as the live docs.
Should be able to work on next version of docs along with next version of code while still having a stable version of docs served.
Or, would be nice to have a history of versioned docs, perhaps by making subfolders within doc folder, named by version.

I like the versioned docs idea... We could host the docs on an external site (docs.goodrobot.org ?) and have the pages an webserver code in the Maverick repo (possibly as a submodule?). Links to old docs would point to old versions of the page with a notice that the user is not viewing the current release docs.

https://bokeh.pydata.org/en/0.12.10/

concur about versioned site files.  to be clear - are we talking about running github pages from a laster branch vs running from a /docs subdir in a master branch?
eventually a good way for us to eat our own dog food when it comes to front end dev.
if we go this way the first step is goodrobots.github.io repo correct?

I've tried running github pages from gh-pages branch and from /docs subdir - they both effectively behave the same way because it updates the public docs as you update the branch.
To note, I've used docsify (https://docsify.js.org/#/) so far, because it looks nice, it's very lightweight and quick to use, and it doesn't require a webserver - that is, it can run from a local folder or just use a webserver to serve out static files, it doesn't require any dynamic interpreter.  The goal is to have it available in the browser completely offline (as a PWA), but it doesn't work very well so far (https://github.com/QingWei-Li/docsify/issues/289).
I'm open to moving it if there is a significantly better alternative.   Having the docs offline when you're in the field is a big +.

One possibility I was thinking of is to have a separate maverick-docs repo, and mirror the release branches.
Another possibility is to have a separate repo with subdirectories for each version.  Not sure we need separate versions of docs for each version of maverick, but a separate master/stable would be very useful.

If a separate docs repo is used could it be added as a submodule to automatically capture the correct doc commit hash for each particular release version of maverick?

So for every release of maverick you would commit the submodule update of the docs just prior. That way the correct doc commit hash is checked out along with the maverick version. +1 for offline capable docs.

I read that submodules are more trouble than they're worth so studiously ignored them up to now (but open to it if that's the best way).  One deployment option is to use maverick itself to manage the documentation - add a manifest to manage the git clone of the docs of a specific version (probably easiest to just match the version of maverick) into a specific point in the webserver doctree.

Another method is to use the maverick self-update mechanism or something similar from the main maverick wrapper/shell script:
https://github.com/fnoop/maverick/blob/stable/bin/maverick#L244
This updates maverick itself from github, but also maverick-fcs (maverick-fcs is where the webserver doctree currently comes from, 'Flying Control Station')

One benifit of using submodules for this task would be that the docs still exist in the maverick git repo on github (github will follow the submodule link). Using the scripted clone after technique just means we will need to manage the version links in the readme to provide access to the correct doc version.
Regardless of submodule vs no submodule ultimately a seperate repo is required for the docs so perhaps we can start there?

Yes sure, let's start with the separate repo, we can work out the details later.  I've no idea what the best way will be!

Okay, that raises the question of maverick only docs or make a goodrobots docs that contains the maverick docs in a section? I don't know what the other sections will be but just a thought...


Error E5108 occurs every time I run PackerSync

I'm guessing this has something to do with 8b6ed0e?
I thought it was already fixed by https://github.com/luukvbaal/statuscol.nvim/commit/467c61a38eb70fa0f0f2175e1f44f1b98f7d064b, but apparently Packer will still try to reference callargs

Please provide reproduction steps. I don't see how wss can be nil in the latest commit🤔

Please provide reproduction steps. I don't see how wss can be nil in the latest commit🤔

I did nothing except run : PackerSync
Removing the packer_compiled.lua file and running PackerSync again didn't help either.

I will test it again with a minimal config when I have time later.

That would be great, thanks. I haven't found a way to reproduce it yet.

That would be great, thanks. I haven't found a way to reproduce it yet.

That is strange indeed. I wasn't able to reproduce it with a minimal config, so I uninstalled statuscol with :PackerClean and then re-install it. The issue is gone now.
I assumed it's fixed now?


Fix Community Typo

This fixes a typo in the docs ("Cummunity" -> "Community").

@zokioki Great catch! Thank you so much for your contribution!


What is your source for accuracy reported on this repo?

Hey
First of all - great work, really. Your direct competitor is paperswithcode, which is a Facebook company, so you sure did something great!
As for my question - I have seen some differences in your leader board and the provided papers (and my own trials...), and would like to know what is the source of the accuracy reported here.
It should be noticed that while paperswithcode tries to get all of their information from the paper itself, there are many errors in their leader board(s), also they cite non peer-reviewed papers, which makes it more difficult to accept.

Sorry, I have just missed the big "source" column on the right


Sidebar scrolling not working properly on iOS Safari

Issue type
I'm submitting a ...  (check one with "x")

[ X ] bug report
[ ] feature request
[ ] question about the decisions made in the repository

Issue description
Current behavior:
Dear Ngx-Admin Team, we really like your work, and thank You for your contribution and we would like to introduce it in one of our project.
The sidebar menu scrolling is not working properly on iOS Safari. Unfortunately we cannot ignore users with Safari :(
Expected behavior:
It would be good to experience the same behavior as on Chrome, Firefox, etc. So when I scroll on sidebar menu it will only scroll on that one, not on the background underneath the sidebar.
Steps to reproduce:
Context: ngx-admin demo content, nothing source code modification. Basically this can be experienced when we open Your demo page as well:
When I open the sidebar with the hamburger menu, the sidebar opens it properly, but the touch scroll is "active" on the background underneath thus scrolling the body. When i expand a menu in the sidebar I can finally scroll within the sidebar menus, but when I scroll down to the bottom of the sidebar the Safari elastic feature comes in picture, and again afterwards scrolling on the sidebar is "active" on the background underneath so once again i cannot scroll within the sidebar menus
Related code:
On iOS Safari
https://akveo.com/ngx-admin/
Other information:
IOS 12.1.4.
Safari
Angular, Nebular
As in the demo:
"@angular/core": "^7.0.3",
"@nebular/theme": "3.1.0",

Thank you very much in advance for your assistance.

Dear Ngx-Admin Team or @yggg,
Can you provide any update on this issue?
As we have tight project-deadlines as well, it is important to know whether we can use Ngx-Admin in our project or we should search for another solution.
Thank You in advance!

Open the dashboard page on iOS safari, quickly scroll down to the bottom, and when scrolling close to the footer, it bounces back. You need to scroll down again to see the contents of the footer. At this point, scroll up quickly, and you'll find that you've bounced back before you scroll to the top of the page. This problem can be serious if your page content is just a little more than a screen.

Dear Ngx-Admin Team or @yggg,
Can you provide any update on this issue?
As we have tight project-deadlines as well, it is important to know whether we can use Ngx-Admin in our project or we should search for another solution due to this significant wrong behavior on Safari.
Thank You in advance!
@pnorbi1  did you fix it?

Dear Ngx-Admin Team or @yggg,
Can you provide any update on this issue?
As we have tight project-deadlines as well, it is important to know whether we can use Ngx-Admin in our project or we should search for another solution due to this significant wrong behavior on Safari.
Thank You in advance!
@pnorbi1  did you fix it?

So is this problem still valid? I'm sorry to hear that!
@vinayak12 unfortunately no, we had to look for other solutions as we didn't receive any fix/solution and we had to move forward. Hope Ngx-Admin Team will have some answers after a year for further users who aim to use this package.

@vinayak12 , @pnorbi1 - I have faced same issue on Mac/iPad's with ngx-admin Angular Template and solved this by using some CSS tweaks.
Problem:
I noticed that the scroll bar is started after header and that is only for main content,  that's why when we scrolling close to the footer, it bounces back, so this need to be start from the very top of the browser even if header is fixed.
The actual problem is with the scroll, the scroll does not gets applied on whole page it is instead just on the layout component. So once you correct this it gets fixed.
Solution:
This solution worked for me. Added below CSS in main _layout.scss page
body {
   overflow: scroll !important;
}

nb-layout.with-scroll .scrollable-container {
  height: auto !important;
}

Thank you.

Is there still no official solution to this problem? If I open the demo of nebular at  https://www.akveo.com/ngx-admin/pages/dashboard?theme=material-light on an iOS device I have a very poor user experience.
Scrolling in the menu results in scrolling the page in the background which makes navigation on bigger menus nearly impossible.
https://user-images.githubusercontent.com/12115859/201668120-8fb858ac-564d-4592-a330-4121db242195.MOV


Task deadlock?

Two client access servers using the same ID are not automatically disconnected.

Hi, thank you for reporting this. I am already working on a fix.
Best regards
Christian

okay, thank you

Please try again with 2.8.0-alpha1. It should be fixed now.


Support for SPDY protocol [moved]

This is Issue 748 moved from a Google Code project.
Added by 2012-03-12T20:12:44.000Z by<EMAIL_ADDRESS>Please review that bug for more context and additional comments, but update this bug.
Original labels: Type-Enhancement, Priority-Low, v1.5
Original description
http://dev.chromium.org/spdy/spdy-whitepaper

Given that Google is dropping support for this (in favor of HTTP2) is this support needed?

You're right, this is remained old. Closing it...


plausible: unbreak with latest nodejs

Description of changes
following https://github.com/NixOS/nixpkgs/pull/230760
but until https://github.com/NixOS/nixpkgs/pull/229201
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.05 Release Notes (or backporting 22.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Thanks !


Property 'onLocation' does not exist on type 'AppComponent'.

i am using in nativescript angular project and all event listeners show's this error

this is my code in app.component.ts
` private _state: any;
constructor() {
// 1. Listen to events
BackgroundGeolocation.on("location", this.onLocation.bind(this));
BackgroundGeolocation.on("motionchange", this.onMotionChange.bind(this));
BackgroundGeolocation.on("http", this.onHttp.bind(this));
BackgroundGeolocation.on("heartbeat", this.onHeartbeat.bind(this));
BackgroundGeolocation.on("schedule", this.onSchedule.bind(this));
BackgroundGeolocation.on("error", this.onError.bind(this));

// 2. Configure it.
BackgroundGeolocation.configure({
  debug: true,
  desiredAccuracy: 0,
  stationaryRadius: 25,
  distanceFilter: 50,
  activityRecognitionInterval: 10000,
  url: 'http://localhost:8080/locations',
  autoSync: true
}, (state) => {
  // 3. Plugin is now ready to use.
  if (!state.enabled) {
    BackgroundGeolocation.start();
  }
});
// NOTE:  Do not execute *any* method which access location-services until
//  the callback to #configure method executes:

}`
How can i implement this with angular nativescript please guide with some details step by step

That example code you pasted assumes the existence of those functions in YOUR app component.
YOU have to define those functions.


Implement a means to react on retries

Context
Currently we're facing a situation, where we either swallow an exception from a message handler immediately after it's raised, or wait for the consumer to die because the heartbeats timing out after retrying too many times.
We'd need something like a hook or callback after all the retries are used up on trying to handle a certain message, in which we can decide to prevent the client crashing by committing the event. Alternatively a counter that tells us how deep are we in the retry-cycle, and act with our own logic.
Proposal

Implement a retry option, that would be called with the last or all exceptions during retrying after all the retries are exceeded.
Feed the retry cycle counter to the eachMessage handler, or the batch message handler.

Implemented on #643


Add test code

Write unit tests using testthat:

Use a small dataset (e.g. iris)
Test out each of public-facing EDA classes
Write tests for datasets with and without metadata
Pass in inappropriate inputs / edge cases (e.g. 1 x n data frames)
Add Travis config and link to Github

Units tests have been written for much of the main functionality. Additional tests will be written as issues are encountered and development continues.


Add License

Hi! The code in this repo seems super useful for us working with pydantic + fastapi, but we can't use it without a LICENSE. Could you add LICENSE file to the repo? MIT is a permissive one if you don't have an opinion otherwise

https://github.com/dotX12/pyfa-converter/releases/tag/<IP_ADDRESS>

@dzcode, thanks for joining the community, Made!

thank you!


AuthorizationCode "redirect_uri" missing

Hi,
While doing some test whit AutorizationCode, I've notice that the "redirect_uri" is missing, so I added it in AuthorizationCode.php, as follows:
class AuthorizationCode implements GrantTypeInterface
{
    /** @var ClientInterface The token endpoint client */
    protected $client;

    /** @var Collection Configuration settings */
    protected $config;

    public function __construct(ClientInterface $client, $config)
    {
        $this->client = $client;
        $this->config = Collection::fromConfig($config, array(
            'client_secret' => '',
            'scope' => '',
            'redirect_uri' => '',
        ), array(
            'client_id', 'code', 'redirect_uri'
        ));
    }

    /**
     * {@inheritdoc}
     */
    public function getTokenData()
    {
        $postBody = array(
            'grant_type' => 'authorization_code',
            'code' => $this->config['code'],
            'redirect_uri' => $this->config['redirect_uri'],
        );
        if ($this->config['scope']) {
            $postBody['scope'] = $this->config['scope'];
        }
        $request = $this->client->post(null, array(), $postBody);
        $request->setAuth($this->config['client_id'], $this->config['client_secret']);
        $response = $request->send();
        $data = $response->json();

        $requiredData = array_flip(array('access_token', 'expires_in', 'refresh_token'));
        return array_intersect_key($data, $requiredData);
    }
}

I'm trying to use the AuthorizationCode flow, but I can't figure out how. Could you improve the documentation by explain this flow as well?
Thank you

So this looks like it was fixed in 90b375330080175a9aaad2bc897d1de111813e69. Feel free to re-open the issue if I'm wrong


brunch exp_opus_features3

I try to compile the brunch "exp_opus_features3" (for paper https://arxiv.org/pdf/1905.04628.pdf)
I didn't find commit ec5bf39 of https://github.com/xiph/opus/...
and I cant compile this  LPCNet brunch . get errors about missing some opus files
Any help is appreciated
Thanks!

For some reason it seems to have disappeared from the server at some point. I've re-uploaded it now.

thank you!
should I build the code in commit 2b64e3e  as in the master? ./autogen.sh, ./configure, make,
and then use /lpcnet_demo -encode and  /lpcnet_demo -decode ?
when I tried this I have errors regarding opus.h
how it should work? there are 2 projects (lpcnet, opus), how to bulid them together?
thanks!


Need to define withCredentials

XHR objects are expected to have xhr.withCredentials == false.  This is important for feature detection (primarily in code that distinguishes between IE's partial XHR implementations and modern, spec-compliant, implementations.

This would be great to have added please!


使用教程

有使用文档手册么，或者相关论文

Basically, the toolbox is very easy to use, there is a test example in test_dcam.m, you will understand immediately how to use it.


Clarify licences, pls

You can use the provided scripts for your own projects, but please note that the car model used in this series is not owned by us. You may encounter issues if you use these models for commercial purposes.

Just add license file to this repo (MIT or apache 2 if you want attribution or cc0 if don't is most common and simple licenses for "free to use anywhere" projects) and link to car model (or just license of car model) inside readme.
It's very important because without this none can't use this code legally.
(P.S. Godot under MIT license and it's most common license in godot community)

You can use the provided scripts for your own projects, but please note that the car model used in this series is not owned by us. You may encounter issues if you use these models for commercial purposes.

Just add license file to this repo (MIT or apache 2 if you want attribution or cc0 if don't is most common and simple licenses for "free to use anywhere" projects) and link to car model (or just license of car model) inside readme. It's very important because without this none can't use this code legally. (P.S. Godot under MIT license and it's most common license in godot community)

You can use the provided scripts for your own projects, but please note that the car model used in this series is not owned by us. You may encounter issues if you use these models for commercial purposes.

Just add license file to this repo (MIT or apache 2 if you want attribution or cc0 if don't is most common and simple licenses for "free to use anywhere" projects) and link to car model (or just license of car model) inside readme. It's very important because without this none can't use this code legally. (P.S. Godot under MIT license and it's most common license in godot community)

I will add an MIT license to this repository.
I've made extensive efforts to find the original link to the car model before uploading it to GitHub, but unfortunately, it seems that the user may have removed the model from Sketchfab, or there is another issue preventing access to the exact license and link. Given this situation, it's best to inform users to avoid using the car model, especially for commercial purposes.


Kosovo country

The country of Kosovo is missing

This library is using Debian's package https://salsa.debian.org/iso-codes-team/iso-codes that in turn made according to ISO 3166. Currently this iso does not contain codes related to Kosovo as independent country.
I understand how sensitive this issue is, and know how many countries already recognized it, but this library is just a wrapper aroung other Debians library, and that library is just representation of ISO.


User requests feature to sample reads in teh assembly service

User's request (attached to JIRA-927) is below:
"The company that did our sequencing peculiarly decided to run one K. pneumoniae genome on a Hiseq flow cell alone, so we have ~650x coverage of our genome. I didn’t see a feature to sample reads in the assembly services, so I used the entire set of reads. I’m pretty sure that made PATRIC a little nauseous. Could you please let me know if there is an option in PATRIC to sample reads, or must that be done prior to uploading a data set?"

I think this is a one-off sort of request. Having it as an option could cause more confusion than help.
Of course, it could be done if it gets asked for more.


feat(query-graphql): Added disableFilter and disableSort

With these options you can disable the filter and sorting of relations.
Changes without the linting

Codecov Report

Merging #10 (e768900) into master (f3ec75c) will decrease coverage by 0.04%.
The diff coverage is 83.51%.

:exclamation: Current head e768900 differs from pull request most recent head 41190a1. Consider uploading reports for the commit 41190a1 to get more accurate results

@@            Coverage Diff             @@
##           master      #10      +/-   ##
==========================================
- Coverage   62.41%   62.36%   -0.05%
==========================================
  Files         229      229
  Lines        5135     5131       -4
  Branches      760      762       +2
==========================================
- Hits         3205     3200       -5
  Misses       1239     1239
- Partials      691      692       +1

Impacted Files
Coverage Δ

packages/core/src/helpers/comparison.builder.ts
5.55% <ø> (ø)

packages/core/src/helpers/filter.builder.ts
11.11% <ø> (ø)

packages/query-graphql/src/common/dto.utils.ts
88.23% <0.00%> (-5.89%)
:arrow_down:

...aphql/src/decorators/authorize-filter.decorator.ts
83.87% <ø> (ø)

packages/query-graphql/src/decorators/index.ts
100.00% <ø> (ø)

packages/query-graphql/src/index.ts
100.00% <ø> (ø)

.../query-graphql/src/resolvers/resolver.interface.ts
100.00% <ø> (ø)

...graphql/src/types/connection/offset/pager/pager.ts
75.86% <ø> (ø)

...ages/query-graphql/src/types/query/paging/index.ts
100.00% <ø> (ø)

...hql/src/types/validators/property-max.validator.ts
66.66% <0.00%> (ø)

... and 56 more

:mega: Codecov can now indicate which changes are the most critical in Pull Requests. Learn more


Failed to create containerKill chaos using chaos dashboard

Bug Report
What did you do?

Try to create a container kill chaos using chaos dashboard.
But I see this action fails because the container_name not set.

The problem is that we are deleting fields when submitting https://github.com/pingcap/chaos-mesh/blob/14493ac9df745ba3b223c541c98e52c76e493879/ui/src/lib/formikhelpers.ts#L67.
This works well for network chaos but it will delete the container_name field for container kill chaos.

This is fixed by #603. Close this now.


[Question] How to get all tags for package using NuGet v3 API

@jamesqo
moved from https://github.com/NuGet/Home/issues/6554
It looks like sometimes the tags displayed on the nuget.org website are not reflected in the metadata returned by the catalog API. Example: this has a javascript tag, but there is no tags attribute here: https://api.nuget.org/v3/catalog0/data/2<IP_ADDRESS>.22.45/adam.jsgenerator.1.1.0.json How can I reliably get the tags associated with a package?

@jamesqo, this seems to have been an old bug. The package itself does not have any tags so in this base the gallery was incorrect. I have reflowed the package so the gallery is now correct.
In general, these two sets of data should match. I have filed https://github.com/NuGet/NuGetGallery/issues/5439 to investigate how our monitoring did not catch this.
Concerning how to reliable get tags, I would recommend querying the registration (package metadata) resource for a specific package ID and version. This is easy if you know the package ID (and optionally version) in advance. Documentation for the package metadata resource is here:
https://docs.microsoft.com/en-us/nuget/api/registration-base-url-resource
If you are already reading the catalog, this is always a good way to get package tags... but the catalog is not indexed by package ID so you have to process the whole thing to find data about a specific package.

@jamesqo, please feel free to re-open this issue if you have follow-up questions.


Changes necessary for SOLR realtime updates

@xuezhaokun @dtarb @rayi113 @hyi @pkdash
Turning on real-time updates in SOLR doesn't work at all. Neither do any of the patterns for queueing updates. Changes need to be made so that this will work properly.
Here is the crux of the problem as I see it now:
By default, RealtimeSignalProcessor.setup only schedules responders for the subclasses of SearchIndex that you register in haystack. Since we only have a subclass for BaseResource, this means – in particular – that it only registers responders for BaseResource, and that is not what is being deleted. What is being deleted is a proxy class, but haystack does not understand that a proxy class has no other data to harvest, so that it does not automagically harvest changes in BaseResource relative to the proxy classes.
One fix is to do the following;

Create a custom subclass of RealtimeSignalProcessor.
Override RealtimeSignalProcessor.setup to register the proxy classes and other classes that influence resource content, e.g., ResourceAccess. These should also trigger updates to BaseResource SOLR data.
Override RealtimeSignalProcessor.update and delete to appropriately harvest or delete from the BaseResource SearchAPI instead of the proxy classes (by using super()).
Override RealtimeSignalProcess.teardown to delete BaseResource rather than proxy classes.

@dtarb @rayi @pkdash @jsadler2 @mjstealey
Status report on this issue:
We have correctly configured real-time delete using this method.
Update still doesn't work due to a much deeper problem.
When updating a single record using the haystack update API, haystack looks for -- and does not find -- fields in the AbstractResource class that is an abstract base class for BaseResource. Thus the update crashes with a field not found error, which is expressed as a template not found error for the base class Page (which we're trying not to index).  If we put in an empty SOLR template for Page, it becomes a field not found error for real.
This is quite curious because these fields are found properly when using the command-line rebuild_index command.
So, we've likely found a bug in haystack.
One possibility is to switch to using haystack-celery, which queues all updates and probably uses the command-line interface :)

@jbradberry See the above.... what is your view on this bug?

@alvacouch taking a look...

I pushed the latest changes for real time processor in PR: #1152 . And there are also some other fixed discovery issues in this PR.

We got mixed up with issue numbers. So I am actually not part of this one. Sorry about the mix up.

Note: the final fix was a bit different than the above suggestion:

We left the events coming in from the various subclasses of BaseResource.
We cast the superclass instance to BaseResource and update or delete that subclass instance.

@dtarb @jbradberry @xuezhaokun @rayi113 @mjstealey
Suggestion from Jeff was that the super() call may be messing up Haystack due to the unusual way that super() is implemented. We tried omiting the super call to cast from proxy class to BaseResource and -- instead -- trust Haystack to descend into subclasses (the way it has been observed to do during testing). This did not work. Same symptoms as before. However, the theory that super() messes things up in haystack is quite reasonable. I read up on it in detail and Jeff’s hypothesis is quite likely.

And that does work, because proxy classes and their base classes share the same object keys! Thus this simple hack hands a real instance of BaseResource to the indexer, which wants a real instance of BaseResource. Since the indexer is a post-save hook, this object is guaranteed to be saved so that this query will always succeed. So, the indexer is happy now!
So, it looks very much like Jeff’s theory was correct.
At this point the main issue is that there is a writers’ race between GenericResource.create and ResourceAccess.create in hydroshare.create_resource. First the resource is created and gets implicitly indexed, before the ResourceAccess.create occurs. This fires off an index request before the access control object attribute exists. Solution is to make harvesting tolerant of the non-existence of the ResourceAccess attribute (“newinstance.raccess”).  The code will update the index again upon access control object creation.
Will write when this is done.

@alvacouch Doing a read immediately after a write in this manner is going to cause problems by intermittently giving the indexer stale data.  I recommend against taking this course of action.

@jbradberry We live in a very imperfect world and I must choose between undesirable alternatives. It is not practical -- at this time -- to redesign the BaseResource class so that the race does not exist. I could -- however -- skip the indexing the first time, knowing that the indexer will be called again upon raccess instantiation. This makes sense because the resource cannot be made public until the raccess object exists.

@xuezhaokun Please see note above. Trick would be to simply not call index unless hasattr for 'raccess' returns True.

@dtarb @rayi113 @jbradberry @xuezhaokun @mjstealey
Current status report.

Real-time updates of resource metadata seem to be working now.
Real-time updates of public/discoverable flags are problematic and are not always logged. Even though the exact same object is used in both cases! Worse, it is possible to do this:

change to discoverable.
doesn't appear in discoverable list.
change title
appears in discoverable list.

We haven't posted the changes yet because of this bug. We are very close to having this working.
We'll resume work on this this afternoon.

@mjstealey @dtarb @jbradberry @xuezhaokun @rayi113
By George, I think we've got it! Current PR #1152 contains a real-time harvester that works.
Solution and issues were truly bizarre. The super() problem (that there is no such thing as a real superclass in Django) bit us twice.
First, recall that we installed SOLR by indexing the BaseResource class of which all real resource classes are proxy subclasses. Thus, BaseResource contains all metadata that the subclasses might expose. This means that we only need one SOLR indexing class for all kinds of resources. But this presents its own difficulties when we try to update or delete a resource in real time, because we receive an event that a subclass has been deleted and have to translate it to a superclass.

We had to use the BaseResource upcast hack
newinstance = BaseResource.objects.get(pk=instance.pk)
to upcast from an arbitrary resource subtype as a proxy class to the BaseResource class. This got updates working properly.

Getting deletes working was even more tricky, because super() again failed us and the upcast trick above doesn't work because the resource has already been deleted from Django at the time of SOLR's handle_delete. This took some inventiveness:

We noted that a pre-cast version of the resource as a BaseResource exists in ResourceAccess.resource as a back-reference from the access control system.
So, instead of handling the delete event for the Resource,** we handled the delete event for the ResourceAccess object** (which is deleted as a result of deleting the resource), recovered the BaseResource pointer from it, and deleted that object (which still exists at that time) from SOLR!

(this took about 8 hours of Zhaokun and I working together; neither of us could have found this alone)

Perhaps the proper way to do this is to insert a pre-delete signal. We can do that later. For now, it works properly.

I truly appreciate your persistence.  Let's hope this fix holds.

@dtarb, @alvacouch - Took the latest updates to the discovery-issue-fix branch and merged them with the release-candidate-1.6.10 branch.
This is running on: https://alpha.hydroshare.org
Results were the that merged branch passes all tests, but the PR to merge this into master failed one test. Reference
More specific output:
Error Message
False is not true
-------------------- >> begin captured logging << --------------------
hs_core.HydroRealtimeSignalProcessor: DEBUG: Changes to <class 'django.contrib.auth.models.Group'> excluded from SOLR index
hs_core.HydroRealtimeSignalProcessor: DEBUG: Changes to <class 'django.contrib.auth.models.User'> excluded from SOLR index
hs_core.HydroRealtimeSignalProcessor: DEBUG: Changes to <class 'theme.models.UserProfile'> excluded from SOLR index
hs_core.HydroRealtimeSignalProcessor: DEBUG: Changes to <class 'django.contrib.auth.models.User'> excluded from SOLR index
hs_core.HydroRealtimeSignalProcessor: DEBUG: Changes to <class 'hs_access_control.models.UserAccess'> excluded from SOLR index
hs_core.HydroRealtimeSignalProcessor: DEBUG: Changes to <class 'hs_labels.models.UserLabels'> excluded from SOLR index
hs_core.HydroRealtimeSignalProcessor: DEBUG: update SOLR for <class 'hs_core.models.GenericResource'> with short_id 330890f14b4549eab738d933b2d3d11c
hs_core.HydroRealtimeSignalProcessor: DEBUG: Skipped premature change to <class 'hs_core.models.GenericResource'>
hs_core.HydroRealtimeSignalProcessor: DEBUG: update SOLR for <class 'hs_core.models.GenericResource'> with short_id 330890f14b4549eab738d933b2d3d11c
hs_core.HydroRealtimeSignalProcessor: DEBUG: Skipped premature change to <class 'hs_core.models.GenericResource'>
hs_core.HydroRealtimeSignalProcessor: DEBUG: update SOLR for <class 'hs_core.models.GenericResource'> with short_id 330890f14b4549eab738d933b2d3d11c
hs_core.HydroRealtimeSignalProcessor: DEBUG: Skipped premature change to <class 'hs_core.models.GenericResource'>
hs_core.HydroRealtimeSignalProcessor: DEBUG: update SOLR for <class 'hs_core.models.GenericResource'> with short_id 330890f14b4549eab738d933b2d3d11c
hs_core.HydroRealtimeSignalProcessor: DEBUG: Changes to <class 'hs_core.models.CoreMetaData'> excluded from SOLR index
hs_core.HydroRealtimeSignalProcessor: DEBUG: update SOLR for <class 'hs_core.models.GenericResource'> with short_id 330890f14b4549eab738d933b2d3d11c
hs_core.HydroRealtimeSignalProcessor: DEBUG: baseresource should_update is True
hs_core.search_indexes: ERROR: resource object does not have metadata field
hs_core.search_indexes: ERROR: resource object does not have metadata field
pysolr: DEBUG: Starting to build add request...
pysolr: DEBUG: Built add request of 1 docs in 0.00 seconds.
pysolr: DEBUG: Starting request to 'http://<IP_ADDRESS>:8983/solr/update/?commit=true' (post) with body 'u'<add><do'...
requests.packages.urllib3.connectionpool: DEBUG: "POST /solr/update/?commit=true HTTP/1.1" 200 None
pysolr: INFO: Finished 'http://<IP_ADDRESS>:8983/solr/update/?commit=true' (post) with body 'u'<add><do' in 0.033 seconds.
hs_core.search_indexes: ERROR: resource object does not have metadata field
hs_core.search_indexes: ERROR: resource object does not have metadata field
pysolr: DEBUG: Starting to build add request...
pysolr: DEBUG: Built add request of 1 docs in 0.00 seconds.
pysolr: DEBUG: Starting request to 'http://<IP_ADDRESS>:8983/solr/update/?commit=true' (post) with body 'u'<add><do'...
requests.packages.urllib3.connectionpool: DEBUG: "POST /solr/update/?commit=true HTTP/1.1" 200 None
pysolr: INFO: Finished 'http://<IP_ADDRESS>:8983/solr/update/?commit=true' (post) with body 'u'<add><do' in 0.140 seconds.
hs_core.HydroRealtimeSignalProcessor: DEBUG: baseresource should_update is True
hs_core.search_indexes: ERROR: resource object does not have metadata field
hs_core.search_indexes: ERROR: resource object does not have metadata field
pysolr: DEBUG: Starting to build add request...
pysolr: DEBUG: Built add request of 1 docs in 0.00 seconds.
pysolr: DEBUG: Starting request to 'http://<IP_ADDRESS>:8983/solr/update/?commit=true' (post) with body 'u'<add><do'...
requests.packages.urllib3.connectionpool: DEBUG: "POST /solr/update/?commit=true HTTP/1.1" 200 None
pysolr: INFO: Finished 'http://<IP_ADDRESS>:8983/solr/update/?commit=true' (post) with body 'u'<add><do' in 0.024 seconds.
hs_core.search_indexes: ERROR: resource object does not have metadata field
hs_core.search_indexes: ERROR: resource object does not have metadata field
pysolr: DEBUG: Starting to build add request...
pysolr: DEBUG: Built add request of 1 docs in 0.00 seconds.
pysolr: DEBUG: Starting request to 'http://<IP_ADDRESS>:8983/solr/update/?commit=true' (post) with body 'u'<add><do'...
requests.packages.urllib3.connectionpool: DEBUG: "POST /solr/update/?commit=true HTTP/1.1" 200 None
pysolr: INFO: Finished 'http://<IP_ADDRESS>:8983/solr/update/?commit=true' (post) with body 'u'<add><do' in 0.055 seconds.
hs_core.HydroRealtimeSignalProcessor: DEBUG: Changes to <class 'hs_access_control.models.UserResourcePrivilege'> excluded from SOLR index
hs_core.HydroRealtimeSignalProcessor: DEBUG: Changes to <class 'hs_labels.models.ResourceLabels'> excluded from SOLR index
hs_core.HydroRealtimeSignalProcessor: DEBUG: Changes to <class 'hs_core.models.Title'> excluded from SOLR index
hs_core.HydroRealtimeSignalProcessor: DEBUG: Changes to <class 'hs_core.models.Language'> excluded from SOLR index
hs_core.HydroRealtimeSignalProcessor: DEBUG: Changes to <class 'hs_core.models.Rights'> excluded from SOLR index
hs_core.HydroRealtimeSignalProcessor: DEBUG: Changes to <class 'hs_core.models.Identifier'> excluded from SOLR index
hs_core.HydroRealtimeSignalProcessor: DEBUG: Changes to <class 'hs_core.models.Type'> excluded from SOLR index
hs_core.HydroRealtimeSignalProcessor: DEBUG: Changes to <class 'hs_core.models.Date'> excluded from SOLR index
hs_core.HydroRealtimeSignalProcessor: DEBUG: Changes to <class 'hs_core.models.Date'> excluded from SOLR index
hs_core.HydroRealtimeSignalProcessor: DEBUG: Changes to <class 'hs_core.models.Creator'> excluded from SOLR index
hs_core.HydroRealtimeSignalProcessor: DEBUG: update SOLR for <class 'hs_core.models.GenericResource'> with short_id 330890f14b4549eab738d933b2d3d11c
hs_core.HydroRealtimeSignalProcessor: DEBUG: baseresource should_update is True
pysolr: DEBUG: Starting to build add request...
pysolr: DEBUG: Built add request of 1 docs in 0.00 seconds.
pysolr: DEBUG: Starting request to 'http://<IP_ADDRESS>:8983/solr/update/?commit=true' (post) with body 'u'<add><do'...
requests.packages.urllib3.connectionpool: DEBUG: "POST /solr/update/?commit=true HTTP/1.1" 200 None
pysolr: INFO: Finished 'http://<IP_ADDRESS>:8983/solr/update/?commit=true' (post) with body 'u'<add><do' in 0.025 seconds.
pysolr: DEBUG: Starting to build add request...
pysolr: DEBUG: Built add request of 1 docs in 0.00 seconds.
pysolr: DEBUG: Starting request to 'http://<IP_ADDRESS>:8983/solr/update/?commit=true' (post) with body 'u'<add><do'...
requests.packages.urllib3.connectionpool: DEBUG: "POST /solr/update/?commit=true HTTP/1.1" 200 None
pysolr: INFO: Finished 'http://<IP_ADDRESS>:8983/solr/update/?commit=true' (post) with body 'u'<add><do' in 0.027 seconds.
--------------------- >> end captured logging << ---------------------

Stacktrace*

  File "/usr/local/lib/python2.7/unittest/case.py", line 329, in run
    testMethod()
  File "/home/docker/hydroshare/hs_core/tests/api/native/test_create_resource.py", line 82, in test_create_resource_without_content_files
    self.assertTrue(res.created.strftime('%m/%d/%Y %H:%M') == res.updated.strftime('%m/%d/%Y %H:%M') )
  File "/usr/local/lib/python2.7/unittest/case.py", line 422, in assertTrue
    raise self.failureException(msg)
'False is not true\n-------------------- >> begin captured logging << --------------------\nhs_core.HydroRealtimeSignalProcessor: DEBUG: Changes to <class \'django.contrib.auth.models.Group\'> excluded from SOLR index\nhs_core.HydroRealtimeSignalProcessor: DEBUG: Changes to <class \'django.contrib.auth.models.User\'> excluded from SOLR index\nhs_core.HydroRealtimeSignalProcessor: DEBUG: Changes to <class \'theme.models.UserProfile\'> excluded from SOLR index\nhs_core.HydroRealtimeSignalProcessor: DEBUG: Changes to <class \'django.contrib.auth.models.User\'> excluded from SOLR index\nhs_core.HydroRealtimeSignalProcessor: DEBUG: Changes to <class \'hs_access_control.models.UserAccess\'> excluded from SOLR index\nhs_core.HydroRealtimeSignalProcessor: DEBUG: Changes to <class \'hs_labels.models.UserLabels\'> excluded from SOLR index\nhs_core.HydroRealtimeSignalProcessor: DEBUG: update SOLR for <class \'hs_core.models.GenericResource\'> with short_id 330890f14b4549eab738d933b2d3d11c\nhs_core.HydroRealtimeSignalProcessor: DEBUG: Skipped premature change to <class \'hs_core.models.GenericResource\'>\nhs_core.HydroRealtimeSignalProcessor: DEBUG: update SOLR for <class \'hs_core.models.GenericResource\'> with short_id 330890f14b4549eab738d933b2d3d11c\nhs_core.HydroRealtimeSignalProcessor: DEBUG: Skipped premature change to <class \'hs_core.models.GenericResource\'>\nhs_core.HydroRealtimeSignalProcessor: DEBUG: update SOLR for <class \'hs_core.models.GenericResource\'> with short_id 330890f14b4549eab738d933b2d3d11c\nhs_core.HydroRealtimeSignalProcessor: DEBUG: Skipped premature change to <class \'hs_core.models.GenericResource\'>\nhs_core.HydroRealtimeSignalProcessor: DEBUG: update SOLR for <class \'hs_core.models.GenericResource\'> with short_id 330890f14b4549eab738d933b2d3d11c\nhs_core.HydroRealtimeSignalProcessor: DEBUG: Changes to <class \'hs_core.models.CoreMetaData\'> excluded from SOLR index\nhs_core.HydroRealtimeSignalProcessor: DEBUG: update SOLR for <class \'hs_core.models.GenericResource\'> with short_id 330890f14b4549eab738d933b2d3d11c\nhs_core.HydroRealtimeSignalProcessor: DEBUG: baseresource should_update is True\nhs_core.search_indexes: ERROR: resource object does not have metadata field\nhs_core.search_indexes: ERROR: resource object does not have metadata field\npysolr: DEBUG: Starting to build add request...\npysolr: DEBUG: Built add request of 1 docs in 0.00 seconds.\npysolr: DEBUG: Starting request to \'http://<IP_ADDRESS>:8983/solr/update/?commit=true\' (post) with body \'u\'<add><do\'...\nrequests.packages.urllib3.connectionpool: DEBUG: "POST /solr/update/?commit=true HTTP/1.1" 200 None\npysolr: INFO: Finished \'http://<IP_ADDRESS>:8983/solr/update/?commit=true\' (post) with body \'u\'<add><do\' in 0.033 seconds.\nhs_core.search_indexes: ERROR: resource object does not have metadata field\nhs_core.search_indexes: ERROR: resource object does not have metadata field\npysolr: DEBUG: Starting to build add request...\npysolr: DEBUG: Built add request of 1 docs in 0.00 seconds.\npysolr: DEBUG: Starting request to \'http://<IP_ADDRESS>:8983/solr/update/?commit=true\' (post) with body \'u\'<add><do\'...\nrequests.packages.urllib3.connectionpool: DEBUG: "POST /solr/update/?commit=true HTTP/1.1" 200 None\npysolr: INFO: Finished \'http://<IP_ADDRESS>:8983/solr/update/?commit=true\' (post) with body \'u\'<add><do\' in 0.140 seconds.\nhs_core.HydroRealtimeSignalProcessor: DEBUG: baseresource should_update is True\nhs_core.search_indexes: ERROR: resource object does not have metadata field\nhs_core.search_indexes: ERROR: resource object does not have metadata field\npysolr: DEBUG: Starting to build add request...\npysolr: DEBUG: Built add request of 1 docs in 0.00 seconds.\npysolr: DEBUG: Starting request to \'http://<IP_ADDRESS>:8983/solr/update/?commit=true\' (post) with body \'u\'<add><do\'...\nrequests.packages.urllib3.connectionpool: DEBUG: "POST /solr/update/?commit=true HTTP/1.1" 200 None\npysolr: INFO: Finished \'http://<IP_ADDRESS>:8983/solr/update/?commit=true\' (post) with body \'u\'<add><do\' in 0.024 seconds.\nhs_core.search_indexes: ERROR: resource object does not have metadata field\nhs_core.search_indexes: ERROR: resource object does not have metadata field\npysolr: DEBUG: Starting to build add request...\npysolr: DEBUG: Built add request of 1 docs in 0.00 seconds.\npysolr: DEBUG: Starting request to \'http://<IP_ADDRESS>:8983/solr/update/?commit=true\' (post) with body \'u\'<add><do\'...\nrequests.packages.urllib3.connectionpool: DEBUG: "POST /solr/update/?commit=true HTTP/1.1" 200 None\npysolr: INFO: Finished \'http://<IP_ADDRESS>:8983/solr/update/?commit=true\' (post) with body \'u\'<add><do\' in 0.055 seconds.\nhs_core.HydroRealtimeSignalProcessor: DEBUG: Changes to <class \'hs_access_control.models.UserResourcePrivilege\'> excluded from SOLR index\nhs_core.HydroRealtimeSignalProcessor: DEBUG: Changes to <class \'hs_labels.models.ResourceLabels\'> excluded from SOLR index\nhs_core.HydroRealtimeSignalProcessor: DEBUG: Changes to <class \'hs_core.models.Title\'> excluded from SOLR index\nhs_core.HydroRealtimeSignalProcessor: DEBUG: Changes to <class \'hs_core.models.Language\'> excluded from SOLR index\nhs_core.HydroRealtimeSignalProcessor: DEBUG: Changes to <class \'hs_core.models.Rights\'> excluded from SOLR index\nhs_core.HydroRealtimeSignalProcessor: DEBUG: Changes to <class \'hs_core.models.Identifier\'> excluded from SOLR index\nhs_core.HydroRealtimeSignalProcessor: DEBUG: Changes to <class \'hs_core.models.Type\'> excluded from SOLR index\nhs_core.HydroRealtimeSignalProcessor: DEBUG: Changes to <class \'hs_core.models.Date\'> excluded from SOLR index\nhs_core.HydroRealtimeSignalProcessor: DEBUG: Changes to <class \'hs_core.models.Date\'> excluded from SOLR index\nhs_core.HydroRealtimeSignalProcessor: DEBUG: Changes to <class \'hs_core.models.Creator\'> excluded from SOLR index\nhs_core.HydroRealtimeSignalProcessor: DEBUG: update SOLR for <class \'hs_core.models.GenericResource\'> with short_id 330890f14b4549eab738d933b2d3d11c\nhs_core.HydroRealtimeSignalProcessor: DEBUG: baseresource should_update is True\npysolr: DEBUG: Starting to build add request...\npysolr: DEBUG: Built add request of 1 docs in 0.00 seconds.\npysolr: DEBUG: Starting request to \'http://<IP_ADDRESS>:8983/solr/update/?commit=true\' (post) with body \'u\'<add><do\'...\nrequests.packages.urllib3.connectionpool: DEBUG: "POST /solr/update/?commit=true HTTP/1.1" 200 None\npysolr: INFO: Finished \'http://<IP_ADDRESS>:8983/solr/update/?commit=true\' (post) with body \'u\'<add><do\' in 0.025 seconds.\npysolr: DEBUG: Starting to build add request...\npysolr: DEBUG: Built add request of 1 docs in 0.00 seconds.\npysolr: DEBUG: Starting request to \'http://<IP_ADDRESS>:8983/solr/update/?commit=true\' (post) with body \'u\'<add><do\'...\nrequests.packages.urllib3.connectionpool: DEBUG: "POST /solr/update/?commit=true HTTP/1.1" 200 None\npysolr: INFO: Finished \'http://<IP_ADDRESS>:8983/solr/update/?commit=true\' (post) with body \'u\'<add><do\' in 0.027 seconds.\n--------------------- >> end captured logging << ---------------------'

@xuezhaokun @dtarb @jbradberry @mjstealy
This is very, very weird. We don't change the resource at all...! All we do is to read from it....!  We don't execute a single save()...!
The DEBUG messages are all correct. The system is working properly from that standpoint.
The ERROR messages should probably be warnings: the resource is not indexed until it contains metadata.

the resource is not indexed until it contains metadata.

The error comes from this hs_core/tests/api/native/test_create_resource.py
Unsure as to the specifics of how this particular test operates, but that is what threw the error.

The specific assertion that fails is this one: https://github.com/hydroshare/hydroshare/blob/develop/hs_core/tests/api/native/test_create_resource.py#L82.  As an aside, using more specific assertion calls (in this case assertEqual) rather than wrapping a boolean expression in assertTrue will result in output that is more useful.
Tracing things over to the create_resource function, I find this: https://github.com/hydroshare/hydroshare/blob/develop/hs_core/hydroshare/resource.py#L483.  Since the default value of create_metadata is True, this save() call will be executed.  Presumably .save() is overridden to update the updated time field?

@alvacouch @mjstealey Any idea how much time it to took for the real time update? I assume it's not more than a minute.

It takes about a second. We can make this faster by skipping indexing of non-public resources.

@jbradberry We certainly didn't call a new save. We've exposed a latent bug.
The indexer skips any resource that doesn't have metadata and/or access control. So It does nothing at all until metadata is defined. And then, it only reads.
I am puzzled.

The failing test has a comparison of date string value up to the minute. If the indexing upon resource creation is less than a second then that should not cause the mismatch in the test leading to test failure.

@pkdash It takes about 5 seconds to create a new resource on our development instance. This includes indexing.

@alvacouch Are you able to reproduce this test failure locally?

@pkdash No time to try right this second.

I guess if I pull this branch, I should be able to reproduce it.

I could not reproduce the error locally. I am not sure if the real time indexing happening locally.

@pkdash:
Hmm... It is possible that local indexing (with few resources) is faster!
I can prevent the error.... but I have zero time in the next two days to test the fix.... The fix is to avoid indexing new resources until discoverable or public is true, as in issue #1183. Then the time for initial resource build will drastically decrease.

@alvacouch I used the discovery-issue-fix branch. Is that the right branch?

@pkdash: yes, discovery-issue-fix is the proper branch.
@xuezhaokun: See branch 1183-discovery-speed for some possible fixes. The basic algorithm is to delete anything that isn't public/discoverable from SOLR and to check whether it's there via a simple SOLR query:
self.hydro_resource_is_present(resource)
that queries SOLR by the base object id. I don't have time or energy to debug this. This should inform you of the basic pattern to use. You will need to test this routine carefully.
If you have time, please take a look, fix any errors, and merge into your PR.
This implements most of issue #1183
(I also switched logger.error to logger.debug in search_indexes.py.)

@alvacouch I will take a look and do some tests on that branch.

@xuezhaokun one note:
It is possible that a delete of a non-existent SOLR record will not raise an exception, and that remove_object can safely be called without checking for existence first. This could be faster than checking for existence. I don't know.

@alvacouch I do not know why I cannot check out your 1183 branch. I just copied HydroRealtimeSignalProcessor.py and search_indexes.py to my branch for testing.
I fixed to a minor haystack syntax issue in HydroRealtimeSignalProcessor and did some tests on it. I think it works as we expect.

I created a new resource, and filled all the necessary metadata fields for making it discoverable. At this point, the resource was not indexed in SOLR so far.
I changed this resource from "Private" to "Discoverable". It was indexed in SOLR now. And we can find it on discovery page.
Then I changed it back to "Private". It  was removed from SOLR.
I deleted this record. SOLR did not raise any exception.

One thing I notice that if we want this strategy work properly, we can never do ./hsctl managepy rebuild_index. Once we do a "rebuild_index", all the resources will be indexed in SOLR again.
I pushed the latest changes to my branch

we can never do ./hsctl managepy rebuild_index

Will need a tighter bounds on what never means.
Also, is there any negative effect to the update_index call? Reference
I believe there is presently a nightly cron job that rebuilds the index using one or both of the above calls. (defer to @hyi for specifics)
The rebuild_index call is made twice during the loaddb portion which is triggered during a new install, or as a standalone command to use a new database: Reference

The proper way to make sure that your indexing only pulls in the items that you want is to override index_queryset, using the exact filter statements necessary.  In this case it sounds like you would want something like
    def index_queryset(self, using=None):
        return self.get_model().objects.filter(discoverable=True)

Once you do this, running update_index or rebuild_index will be fine.

@xuezhaokun @mjstealey
I agree with Jeff. However, I think the statement you need is:
def index_queryset(self, using=None):
return self.get_model().objects.filter(SQ(raccess__discoverable=True) | SQ(raccess__public=True))

@xuezhaokun
(You need to put the above code into your SearchIndex subclass.)

SQ -> Q

Fixed. Was writing queries in SOLR....!

@alvacouch @xuezhaokun @mjstealey Yes, a nightly running cron job is set up only for update_index call. Do we still need this nightly cron job after this real-time index update working for resource deletion and resource update?

@hyi @mjstealey @jbradberry @xuezhaokun
A facetious answer: We need to keep running the nightly indexes only if we screwed up!
If we did everything correctly, we will not have to update_index overnight ever again.
The only open question is whether what we are doing is going to be fast enough that queueing will not be necessary. The next step would be to queue anything we really need to queue.

@alvacouch I edited the index_queryset function, and did couple tests on "rebuild_index". I think it works properly now. We only index the discoverable or public resources. I pushed the latest version.

Responding to the facetious answer only if we screwed up, it is almost impossible (and I hesitate to say almost) to get things perfectly right the first time in a system like this, so it seems like a periodic index rebuild is the conservative approach.  Perhaps it can be less frequent than nightly, but we need to figure out logging and system monitoring to stay on top of this.

I would like to know why we feel that the indexed resources should be obtained in their BaseResource form before indexing.  If these things are all proxies of BaseResource, they should all be exposing the same fields and should by-and-large be compatible in the indexer.  In order to support the multiple models using the same indexing code and logic, one would be able to do something like
class BaseResourceIndex(indexes.SearchIndex):  # note the removal of indexes.Indexable!
    # buik of the indexing logic here...

class MyProxySubclassIndex(BaseResource, indexes.Indexable):
    def get_model(self):
        return MyProxySubclass

class MyProxySubclass2Index(BaseResource, indexes.Indexable):
    def get_model(self):
        return MyProxySubclass2

and so on.  This would have the advantage of making Haystack aware of the different types of resources, as well as obviating the need to cast the object back to the plain BaseResource.

This is pretty simple to explain:

There are 25+ of these now.
We expect 50+ by end of grant.
These are largely created by people without knowledge of the discovery system.
We don't want to make lots of updates to this file.

It is a software maintenance issue.

@alvacouch @xuezhaokun I believe this issue can be closed. Please check it and close if it has been resolved.

I think we can close this issue.


[Feature Request] Extending Features

Hi
thanks for sharing this boilerplate, I gets the job done pretty easily.
I believe, a nice-to-have addition would be the support for OpenAPI, maybe through the usage of the generator.
Another one would be move all the parts into docker containers.

Thanks for the request! OpenAPI could be an interesting option, I should research more. As for docker, we already have one request for it (see closed issues) and I include it into our future features.


Attempt to Workaround for Chrome-based browsers offsetting the canvas by a pixel

Increase or decrease #board-container size depending on window and board size
Ability to toggle workaround on and off

This is probably missing browsers like Safari and Opera, which might be affected by the bug but are discriminated out of the workaround for now.
Please test to see if this works for all canvas and window sizes (tested with odd and even of both).

Pixels are offset to the right by one (Chrome 79.0.3945.79) with an innerWidth/innerHeight of 1159/443 respectively. They're also shifted one down and to the right with 955/374. Cannot reproduce on Firefox 71.0 or iOS 13.2.3 Safari.

Fix tested and working on latest Chrome on macOS.


Auto convert to contiguous format for all_gather

What does this PR do?

Fixes https://github.com/PyTorchLightning/pytorch-lightning/issues/4781
When syncing using gather_all, tensors are required to be in contiguous memory format. This PR converts tensors that are not and warns the user.
Before submitting

[ ] Was this discussed/approved via a Github issue? (no need for typos and docs improvements)
[ ] Did you read the contributor guideline, Pull Request section?
[ ] Did you make sure your PR does only one thing, instead of bundling different changes together? Otherwise, we ask you to create a separate PR for every change.
[ ] Did you make sure to update the documentation with your changes?
[ ] Did you write any new necessary tests?
[ ] Did you verify new and existing tests pass locally with your changes?
[ ] If you made a notable change (that affects users), did you update the CHANGELOG?

PR review
Anyone in the community is free to review the PR once the tests have passed.
Before you start reviewing make sure you have read Review guidelines. In short, see the following bullet-list:

[ ] Is this pull request ready for review? (if not, please submit in draft mode)
[ ] Check that all items from Before submitting are resolved
[ ] Make sure the title is self-explanatory and the description concisely explains the PR
[ ] Add labels and milestones (and optionally projects) to the PR so it can be classified; Bugfixes should be including in bug-fix release milestones (m.f.X) and features should be included in (m.X.b) releases.

Did you have fun?
Make sure you had fun coding 🙃

Hello @SkafteNicki! Thanks for opening this PR.

In the file pytorch_lightning/utilities/distributed.py:

Line 91:1: W293 blank line contains whitespace

Do see the Hitchhiker's guide to code style

@SkafteNicki mind check the latest comments? 🐰


WinHttp with SSL enabled is not binding valid certificates to https requests

Describe the bug
On Windows 10 the S3Crt client will not send requests when SSL is enabled. The issue lies where the system is not processing certificates specifically in this case self signed ones in the local windows certification store. In effect I am struggling to load a custom cert similar to this github issue https://github.com/aws/aws-sdk-cpp/issues/1863.
Expected Behavior
I expected to be able to configure the tls configuration options of the S3Crt client and be able to send a request to the endpoint via https and my own self signed certification. The reproduction step more or less demonstrates what I am trying to do there might be more issues with putObject and others but right now this simple example does not work.
Current Behavior
For the first few warns they time out from my testing this is from the initialization of Aws::S3Crt::ClientConfiguration object which pings for EC2 metadata or something, this is not the subject of the bug. Search for WinHttpSyncHttpClient [47408] Send request failed: A security error occurred. This is from the request being sent. When I looked into the lower level calls this is from 'WinHttp' returned 'ERROR_WINHTTP_SECURE_FAILURE' error, which is about how the certificate provided is not good for SSL communication.
aws_sdk_2023-07-24-19.log
However, you can look in the logs and see earlier on we have the lines
[DEBUG] 2023-07-24 19:32:35.152 tls-handler [47408] static: assuming certificate is in a system store, loading now.
[INFO] 2023-07-24 19:32:35.152 pki-utils [47408] static: loading certificate at windows cert manager path 'LocalMachine\MY\7F680C430C91C55AE8CCCCE63D1043A4E61919E4'.
[DEBUG] 2023-07-24 19:32:35.152 pki-utils [47408] static: determined registry value for lookup as 131072.
[DEBUG] 2023-07-24 19:32:35.154 HttpClientFactory [47408] Initializing Http Static State

The certificate is a self signed one from OpenSSL which has been installed in the windows system store. pki-utils does check if it is in the system store so the cert does exist.
Therefore as we have a network error for the certificate and debugging into WinHttpSyncHttpClient showed there was no
 WinHttpSetOption( hRequest,
                            WINHTTP_OPTION_CLIENT_CERT_CONTEXT,
                            (LPVOID) pCertContext,
                            sizeof(CERT_CONTEXT) );

as seen https://learn.microsoft.com/en-us/windows/win32/winhttp/ssl-in-winhttp, then perhaps the cert is not being added to handle.
Reproduction Steps
#pragma once
#include <iostream>
#include <aws/core/Aws.h>
#include <aws/core/utils/logging/DefaultLogSystem.h>
#include <aws/core/utils/logging/AWSLogging.h>
#include <aws/core/utils/memory/stl/AWSStringStream.h>
#include <aws/core/utils/logging/CRTLogSystem.h>
#include <aws/s3-crt/S3CrtClient.h>
#include <aws/s3-crt/model/CreateBucketRequest.h>
#include <aws/s3-crt/model/BucketLocationConstraint.h>
#include <aws/s3-crt/model/DeleteBucketRequest.h>
#include <aws/s3-crt/model/PutObjectRequest.h>
#include <aws/s3-crt/model/GetObjectRequest.h>
#include <aws/s3-crt/model/DeleteObjectRequest.h>
#include <aws/core/utils/UUID.h>

int main(int argc, char* argv[])
{
	const char *systemStoreCertPath;
	const char *exampleCert = "CurrentUser\\MY\\A11F8A9B5DF5B98BA3508FBCA575D09570E0D2C6";
	systemStoreCertPath = exampleCert;
	Aws::SDKOptions options;
	options.loggingOptions.logLevel = Aws::Utils::Logging::LogLevel::Trace;

#ifdef _WIN32
	options.ioOptions.tlsConnectionOptions_create_fn = [systemStoreCertPath]() {

		Aws::Crt::Io::TlsContextOptions tlsCtxOptions;
		tlsCtxOptions = tlsCtxOptions.InitClientWithMtlsSystemPath(systemStoreCertPath);
		Aws::Crt::Io::TlsContext tlsContext(tlsCtxOptions, Aws::Crt::Io::TlsMode::CLIENT);
		return Aws::MakeShared<Aws::Crt::Io::TlsConnectionOptions>("connection", tlsContext.NewConnectionOptions());
   };
#endif

	Aws::InitAPI(options);
	//make your SDK calls in here.
	{
		Aws::S3Crt::ClientConfiguration config;
		config.region = Aws::Region::US_EAST_1;
		config.endpointOverride = Aws::String(("YOUR IP HERE" + ":" + "PORT HERE").c_str());
		config.verifySSL = true; config.scheme = Aws::Http::Scheme::HTTPS;

		Aws::S3Crt::S3CrtClient s3CrtClient(
			Aws::Auth::AWSCredentials("USERNAME", "PASSWORD"),
			config,
			Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy::Never,
			false
		);

		Aws::S3Crt::Model::ListBucketsOutcome outcome = s3CrtClient.ListBuckets();

		if (outcome.IsSuccess()) {
			std::cout << "All buckets under my account:" << std::endl;

			for (auto const& bucket : outcome.GetResult().GetBuckets())
			{
				std::cout << "  * " << bucket.GetName() << std::endl;
			}
			std::cout << std::endl;

		}
		else {
			std::cout << "ListBuckets error:\n" << outcome.GetError() << std::endl << std::endl;
		}
	}
	Aws::ShutdownAPI(options);
}

Provide the necessary values. You can find relevant cert from the windows store by opening PowerShell and running
Set-Location Cert:\CurrentUser\My\
Get-ChildItem

Which should show some valid certs else cd up a level and then run Get-ChildItem and then cd into a non empty store.
Possible Solution
In WinHttpSyncHttpClient.cpp add the following for either Windows or if it has winhttp client enabled for the build of the sdk.

WinHttpSyncHttpClient::WinHttpSyncHttpClient(const ClientConfiguration& config){

    //code

    m_tlsOtptions = config.tlsConnectionOptions;

    //code
}

void* WinHttpSyncHttpClient::OpenRequest(const std::shared_ptr<HttpRequest>& request, void* connection, const Aws::StringStream& ss) const
{
    //code

    // WinHttpOpenRequest uses a connection handle to create a request handle
    HINTERNET hHttpRequest = WinHttpOpenRequest(connection, StringUtils::ToWString(HttpMethodMapper::GetNameForHttpMethod(request->GetMethod())).c_str(),
        wss.c_str(), nullptr, nullptr, accept, requestFlags);

    //more code

    if (m_verifySSL) //SSL on
    {
#ifdef _WIN32
       //https://learn.microsoft.com/en-us/windows/win32/winhttp/ssl-in-winhttp
       //alloc store and context like in above here not sure how you all want to handle that
        if (!WinHttpSetOption( hHttpRequest,
                            WINHTTP_OPTION_CLIENT_CERT_CONTEXT,
                            (LPVOID) pCertContext,
                            sizeof(CERT_CONTEXT)){
            AWS_LOGSTREAM_FATAL(GetLogTag(), "Failed to sign with cert.");

    }
    CertFreeCertificateContext( pCertContext );
#endif
    // more code
}

Additional Information/Context
This was built from the package manager vcpkg build. I also built from source with both curl enabled and disabled, and the issue was similar. Perhaps I built with curl I followed the instructions found from here:  but debugging into the program showed the sdk was still using the winhttp client instead so I gave up more or less on that route. Although I should let it be noted that using the command line cURL I was able to hit the endpoint if I used a correct cert. from the windows certificate store.
AWS CPP SDK version used
1.11.65 (vcpkg build)
Compiler and Version used
Microsoft Visual Studio 2017 Version 15.9.54
Operating System and version
Windows 10 Pro 22H2

Thanks for the detailed write up. Looking into the possible cause of this.

Hi, just asking a related question.  It appears that setting the TlsConnectionOptions in Aws::SDKOptionsdoes not apply globally, but only for S3.  So for example, it doesn't affect any https calls throughAws::Http::CreateHttpRequest()` etc.
Taken from the code snippet of this issue:
Aws::SDKOptions options;

options.ioOptions.tlsConnectionOptions_create_fn = [systemStoreCertPath]() {
	Aws::Crt::Io::TlsContextOptions tlsCtxOptions;
	tlsCtxOptions = tlsCtxOptions.InitClientWithMtlsSystemPath(systemStoreCertPath);
	Aws::Crt::Io::TlsContext tlsContext(tlsCtxOptions, Aws::Crt::Io::TlsMode::CLIENT);
	return Aws::MakeShared<Aws::Crt::Io::TlsConnectionOptions>("connection", tlsContext.NewConnectionOptions());
};

Aws::InitAPI(options);

tlsConnectionOptions_create_fn ends up calling Aws::SetDefaultTlsConnectionOptions(tlsConnectionOptions)
Which can be retrieved via Aws::GetDefaultTlsConnectionOptions()
But only S3CrtClient actually calls Aws::GetDefaultTlsConnectionOptions()

So overriding the cert path must be done "manually" on every https call like so? :
Aws::Client::ClientConfiguration config;
config.caFile = Aws::String("/etc/ssl/certs/ca-certificates.crt");
std::shared_ptr<Aws::Http::HttpClient> httpClient = Aws::Http::CreateHttpClient(config);

std::shared_ptr<Aws::Http::HttpRequest> request = Aws::Http::CreateHttpRequest(Aws::String("https://aws.amazon.com/"), Aws::Http::HttpMethod::HTTP_GET, Aws::Utils::Stream::DefaultResponseStreamFactoryMethod);
std::shared_ptr<Aws::Http::HttpResponse> response = httpClient->MakeRequest(request);

In my testing that's what it seems like, but would like to validate I'm not missing some other way to do it globally :)
Thanks!


Add an OIDC Docker container for testing #8088

Description
DRAFT PR for testing #8088 (includes that PR)
This PR includes a new OIDC Docker Container & HTTPS proxy containers which can be used to test OIDC Authentication. See the last few commits (from me in this PR).
Also see README for instructions on how to spin up OIDC auth in Docker.

Since we've had good luck testing OIDC authentication using https://phantauth.net/ I think we can close this PR?

@hardyoyo : Yes, agreed.  This isn't needed any longer.


CFFL

CFFL

Linter check found the following problems:
The following problems have been found:
ERROR: /tmp/abs_ad35f1pwxn/clone/recipe/meta.yaml:14: pip_install_args: pip install should be run with --no-deps.
ERROR: /tmp/abs_ad35f1pwxn/clone/recipe/meta.yaml:19: missing_wheel: For pypi packages, wheel should be present in the host section
ERROR: /tmp/abs_ad35f1pwxn/clone/recipe/meta.yaml:46: missing_dev_url: The recipe is missing a dev_url
ERROR: /tmp/abs_ad35f1pwxn/clone/recipe/meta.yaml:46: missing_documentation: The recipe is missing a doc_url or doc_source_url
WARNING: /tmp/abs_ad35f1pwxn/clone/recipe/meta.yaml:46: missing_description: The recipe is missing a description
ERROR: /tmp/abs_ad35f1pwxn/clone/recipe/meta.yaml:46: missing_license_family: The recipe is missing the about/license_family key.
Errors were found


add ElectronicArts.Origin version <IP_ADDRESS>512

[x] Have you signed the Contributor License Agreement?
[x] Have you checked that there aren't other open pull requests for the same manifest update/change?

[x] Does your manifest conform to the 1.0 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

It's failing because of MSVCP140.dll missing. Installer needs Visual C++ Redistributable for Visual Studio 2015. And weirdly enough this file exists in the installer itself.

When using https://www.dm.origin.com/download/originThinSetup.exe the install appears to work fine with out the call for  MSVCP140.dl vs using https://download.dm.origin.com/origin/live/OriginSetup.exe

I try again today, also both originThinSetup.exe and OriginSetup.exe

When using https://www.dm.origin.com/download/originThinSetup.exe the install appears to work fine with out the call for MSVCP140.dl vs using https://download.dm.origin.com/origin/live/OriginSetup.exe

Both of them requires VC++. You likely had the dependencies already installed which is why it works fine for you, but if you try it out on Windows Sandbox then it will fail.

/AzurePipelines run


Convert flash-message to Glimmer component

Install @glimmer/component,  @glimmer/tracking
Convert flash-message component to Glimmer component
Use co-located template

@charlesfries I updated a lot of things in the repo. Could you please rebase?

@charlesfries looks like a template lint error. Not sure why it is showing up all the sudden. Can you add a template-lint-disable comment for that?

Thanks for the PR!


Notification when unlocking

Every time you unlock the system, the notification that a smart card is inserted appears after the system unlocks. Feels a bit redundant since the system used the smartcard to unlock the screen and the card was inserted before the desktop appears.

Resolved in 1.7


[$500] IOU Distance - App displays 'Hmm its not here' for default waypoint links for first time after login

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

Action Performed:

Open the app
Open plus and click request money
Click on distance and click on start/finish
Copy the URL and send to any chat
Select any addresses for start and finish and click next
Copy the the URL and send to same chat as step 4
logout and login again with same user
Open chat open in step 4
Click on waypoint link and observe that app doesn't handle that link properly and displays 'Hmm its not here' page
Click on participant page and observe that app redirects to request money page which is correct way of handling such links

Expected Result:
App should redirect back to request money page if we try to open waypoint link first time after login as it does for other similar links like participant link
Actual Result:
App displays 'Hmm its not here' for default waypoint links for first time after login
Workaround:
Unknown
Platforms:

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

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

Version Number: 1.3.70-5
Reproducible in staging?: Yes
Reproducible in production?: Yes
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/78819774/5f9bded7-e2f0-4117-a800-b462c698767f
https://github.com/Expensify/App/assets/78819774/5c10f0d5-b6d3-42da-abf6-9eba09c88ab4
Expensify/Expensify Issue URL:
Issue reported by: @Dhanashree-Sawant
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1694595781503769
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~0165405184ecd0395e
Upwork Job ID:<PHONE_NUMBER>110902784
Last Price Increase: 2023-09-15

Looks like this issue was created twice: https://github.com/Expensify/App/issues/27571

Actually if you see #27571 slack link, it was a different issue, ideally, that can closed leaving this open

Proposal
Please re-state the problem that we are trying to solve in this issue.
App displays 'Hmm... it's not here' for default waypoint links for the first time after login.
What is the root cause of that problem?
At the point when the link is clicked immediately after login, the waypointCount is 0, and the FullPageNotFoundView is displayed when this condition is met.
https://github.com/Expensify/App/blob/76c1559fb3fbee1d07c8f210b522b63edd03920e/src/pages/iou/WaypointEditor.js#L166
What changes do you think we should make in order to solve the problem?
Similar to the participants page, add a useEffect hook in the WaypointEditor to navigate back to the distance request page when waypointCount is 0. We can optionally set the force fallback parameter to true.
useEffect(() => {
    if (waypointCount === 0) {
        Navigation.goBack(ROUTES.getMoneyRequestDistanceTabRoute(iouType), true /* optional */);
    }
}, [waypointCount]);

What alternative solutions did you explore? (Optional)
None.

Actually if you see #27571 slack link, it was a different issue, ideally, that can closed leaving this open

Copying my proposal here just in case.

@akinwale The Root cause is very unclear. Can you explain it? Also, the

Please re-state the problem that we are trying to solve in this issue.

Expects your understanding of the issue, not the title to be reposted.

@parasharrajat I posted my proposal at 1am in the morning running on very little sleep. I've updated it to be more detailed.

@parasharrajat please give a quick look to my proposal if possible.

Hi i want help with this

Proposal
Please re-state the problem that we are trying to solve in this issue.
Actual: App displays 'Hmm its not here' for default waypoint links for first time after login.
Expected: We expect the waypoint page to be opened where the user can select address.
My understanding: I think we should keep it simple and not complicate the user flow or code logic. We should navigate to the  distance request page whenever we have some data missing in any of the user flows inside distance request. So, we should navigate to distance request page whether waypoint link or participants link is shared.
What is the root cause of that problem?
Transaction is not initialized when the waypoint link is opened directly from link on first login. As a result, we fallback to FullPageNotFoundView component. The logic is as below -
<FullPageNotFoundView shouldShow={(Number.isNaN(parsedWaypointIndex) || parsedWaypointIndex < 0 || parsedWaypointIndex > waypointCount - 1) && isFocused}>
What changes do you think we should make in order to solve the problem?
We should navigate back to distance request page if transaction is not initialized and waypoint link is opened.
What alternative solutions did you explore? (Optional)
An alternative option is to create an empty transaction in case the transaction is missing and the user has opened waypoints link directly. But, I feel this will be an over-engineered solution.
Also, in terms of user flow, if the user is taken back to base page in case of opening a /participants link, then we should do the same for /waypoints link to keep it consistent.

Contributor details
Your Expensify account email<EMAIL_ADDRESS>Upwork Profile Link: https://www.upwork.com/freelancers/~01570752db7999b850

Hi Can i work on this task now ?

Problem Statement:
Upon logging in and navigating to the /request/new/waypoint/0 path in Expensify's app, the user encounters the "Hmm...its not here" page. Ideally, they should be directed to the waypoint page to select an address.
Root Cause:
Within the Expensify app, the transaction isn't initialized when the user accesses the waypoint link right after logging in. This results in no available waypoints, which triggers the error display condition in the FullPageNotFoundView component.
Proposed Solution:
Just-In-Time Initialization with Redirect (JITIR):

Upon user's attempt to access a waypoint link directly after login within Expensify's app, check the transaction state.
If uninitialized, employ a "Just-In-Time" strategy to initialize the transaction and redirect the user to the 'request money' page.
This approach ensures that users, while navigating Expensify, will always find the necessary transaction and waypoints ready when they access the waypoint editor from the 'request money' page.

Implementation:
// Within the Expensify app, when a user tries to navigate to the waypoint page
if (path === '/request/new/waypoint/0') {

    // Check the transaction's initialization state
    if (!transactionInitialized) {
        IOU.createEmptyTransaction();
        Transaction.createInitialWaypoints(transactionID);

        // Guide the user to the 'request money' page within Expensify
        Navigation.navigate(ROUTES.REQUEST_MONEY);
    }
}

Pros:

Resource Efficiency: Only initializes resources when demanded, optimizing performance within Expensify.
User Experience: Offers a consistent navigation experience across the app.

Cons:

Possible Redirection: Users might find the redirection unexpected if they aim to land directly on the waypoint page.

Alternative Solution:
Dynamic Resource Allocation with User Feedback (DRAUF):

If a user, post-login, tries to access the waypoint link in Expensify and the transaction isn't initialized, show a feedback message or loader: "Setting things up for you..."
Behind the scenes, dynamically allocate resources to initialize the transaction and waypoints.
Once the resources are set, automatically guide the user to the waypoint editor, ensuring a fluid navigation experience.

// In the context of Expensify, when a user tries accessing the waypoint page
if (path === '/request/new/waypoint/0' && !transactionInitialized) {

    // Display a user-friendly feedback
    DisplayMessageOrLoader("Setting things up for you...");

    // Initialize the transaction and waypoints dynamically
    IOU.createEmptyTransaction();
    Transaction.createInitialWaypoints(transactionID);

    // Once ready, redirect to the waypoint editor within the app
    Navigation.navigate(ROUTES.WAYPOINT_EDITOR);
}

Pros:

User Feedback: Keeps users informed about background processes, enhancing user experience in Expensify.
Fluid Experience: Creates resources on-the-go, providing a seamless experience.

Cons:

Implementation Complexity: Introducing dynamic resource allocation with feedback might add complexity to the app's codebase.
Dependency: Relies heavily on a responsive feedback system.

the concepts of "Just-In-Time Initialization" (JIT) and "Dynamic Resource Allocation" (DRA) describe strategies for on-demand resource allocation or initialization, enhancing performance and user experience. Such strategies can be particularly beneficial for apps like Expensify to maintain fluidity and responsiveness.

Isn't this expected behaviour bcoz when a user comes out of the Distance flow we are clearing the waypoints data, so when user tries to access the direct waypoint editor page we should show the NotFound page?

Isn't this expected behaviour bcoz when a user comes out of the Distance flow we are clearing the waypoints data, so when user tries to access the direct waypoint editor page we should show the NotFound page?

@dhanashree-sawant @parasharrajat would you agree with following?

Yes, you're right. Based on the current design and logic of the application, if the waypoints data is cleared when a user exits the Distance flow, then attempting to access the waypoint editor page directly afterwards would naturally result in missing data. Therefore, showing the "NotFound" page in this scenario makes sense as a way to handle unexpected or incorrect navigation.
However, from a user experience perspective, it might be more intuitive if the application provides a clearer message or redirects the user back to the start of the Distance flow. This way, users can understand the context of why they are seeing the "NotFound" page and can take appropriate actions rather than being left confused.

Proposal
Please re-state the problem that we are trying to solve in this issue.
Deeplink to /request/new/waypoint/0 Tab causes FullPageNotFoundView to be rendered after fresh login
What is the root cause of that problem?
transactionID and other props are not set, because deeplinking to the WaypointEditor View was not intended.
What changes do you think we should make in order to solve the problem?
Redirect to Distance Tab Route if transactionID is not set
What alternative solutions did you explore? (Optional)
None

Contributor details
Your Expensify account email<EMAIL_ADDRESS>Upwork Profile Link: https://www.upwork.com/freelancers/~01812ef38a798441d4

Agree with @imranaalam, users can actually visit other pages like confirmation and we redirect them to step 1 of request money, ideally if any user tries to access further step pages, its ideal to redirect them back to step 1 rather then providing 'Hmm its not here' page.

@parasharrajat what do you think we should do next here?

@parasharrajat @NicMendonca
As always, diving deep into such issues has revealed the complexity and nuances that need to be addressed for a more generic solution. Crafting a truly comprehensive remedy, especially one that is generic and applicable across the platform, would demand significantly more effort and resources.
While I've taken the time to propose a viable solution, I'd like to notify you that I won't be available to implement this solution personally. Given the depth of the work and the intricacies involved, I believe the bounty should be reconsidered and possibly increased to attract the right talent that can deliver a robust fix.
Alternatively, if increasing the bounty isn't feasible, this issue might be better suited for internal handling. After all, it touches on core functionalities and navigation flows which are fundamental to the user experience.
Lastly, if resource constraints are pressing, a temporary fix might be applied to address the immediate concern. However, I'd advocate for not "hiding it under the bed" for too long as it might lead to more complex issues in the future.
It's also worth noting that contributors who invest time and effort to steer the project in the right direction should perhaps be acknowledged in some policy or system. This ensures that valuable insights and solutions aren't lost simply because the original contributor couldn't see the solution through to implementation.
Given the feedback, it's clear that a more holistic approach is required to handle direct accesses to pages nested within a specific flow. Here's a proposed approach:

Problem Statement:
Direct access to pages nested within a specific flow leads to missing context and data. The result is non-intuitive user experiences, such as the "Hmm its not here" page.
Root Cause:
Pages within specific flows, like the waypoint editor, expect certain contextual data to be present (like waypoints). Directly accessing these pages without going through the preceding steps of the flow can lead to this data being absent.
Proposed Solution:
Flow-Based Redirect System (FBRS):

Flow Metadata: Attach metadata to each page or route that indicates its position within a specific flow. For example, the waypoint editor might have metadata indicating it's the 3rd step in the Distance flow.
Context Checker: Before rendering a page, check if the required context and data for that page are present. This is determined based on its metadata and the expected state of the app.
Redirect Logic: If the required context and data are missing, redirect the user to the beginning of the flow. For example, if someone directly accesses the waypoint editor (3rd step), but the required waypoints data isn't present, redirect them to the 1st step of the Distance flow.

Implementation:
// For each route or page in the app
if (currentRoute.hasFlowMetadata && !currentRoute.hasRequiredContext()) {
    Navigation.navigate(currentRoute.flowStart);
}

Pros:

Generality: This approach isn't tied to a specific flow or page but can be applied across the app.
User Experience: Ensures users always start flows from the beginning, reducing confusion and errors.
Flexibility: Easily adaptable to add new flows or modify existing ones.

Cons:

Implementation Overhead: Initial setup requires adding metadata to routes and defining the required context for each.
Performance: The context checker runs every time a page is accessed, potentially adding a slight delay.

Alternative Solution:
Flow State Management (FSM):

Flow States: Define distinct states for each flow in the app. Each state encompasses the necessary data and context required for a specific step in the flow.
State Restoration: If a user tries to access a step directly, the app attempts to restore the state for the preceding steps. If it can't, it redirects the user to the beginning of the flow.
Persistent Storage: Store the state of each flow in a persistent storage (like local storage). This ensures even if a user exits and returns, the context is maintained.

Pros:

Data Persistence: Maintains user progress within flows, enhancing user experience.
Direct Access: Allows for direct access to nested pages while ensuring the necessary context is available.

Cons:

Complexity: Requires a sophisticated state management system.
Storage Overhead: Storing flow states persistently can increase the storage demands of the app.

Given the feedback, the Flow-Based Redirect System (FBRS) offers a more generic solution suitable for Expensify. It ensures that any direct accesses to nested pages are handled gracefully by redirecting users to the beginning of the respective flow.

I'd like to take a moment to extend our heartfelt thanks to @dhanashree-sawant for uncovering this critical bug. Her keen observation and diligence in identifying the issue have been instrumental in bringing it to the forefront.
It's evident that @dhanashree-sawant is not just a bug finder but a pro at it. Her expertise and commitment to ensuring the quality of the application shine through her contributions. It's always a privilege to have contributors like her who consistently push for excellence and make the platform better for all users.
Thanks again, @dhanashree-sawant! Your efforts are greatly appreciated.

@parasharrajat do I need to adjust price here?

Waiting for Wednesday when @parasharrajat is back!

Issue not reproducible during KI retests. (First week)

ohhhh ^

https://expensify.slack.com/archives/C01GTK53T8Q/p1695209109095579 - Seems like this one

@parasharrajat bump ^^

@parasharrajat any update on next steps here?

bumped: https://expensify.slack.com/archives/C02NK2DQWUX/p1697831843955809

@lanitochka17 is this still reproducible?

@parasharrajat bumped you again!

bumped here: https://expensify.slack.com/archives/C02NK2DQWUX/p1698952519248639?thread_ts=1697831843.955809&cid=C02NK2DQWUX

@parasharrajat update please

@parasharrajat does that mean we should hold for https://github.com/Expensify/App/issues/26538?

I am going to close this in favour of seeing what happens here: https://github.com/Expensify/App/issues/26538
We'll reopen later/ once ^^ is completed.