Feature: FLP Plugin Project Type

Hello Marius,
I was thinking to create a generator for the FLP plugin project. Can you suggest where should I add this generator  generator-ui5-project or generator-ui5-library or entirely create a new project in UI5 Community
I saw the main generator generator-easy-ui5  fetching repository from
UI5 Community & showing list if we don't pass any options to the generator.
Let me know any other contribution required from my side I am happy to do that.

Hi Amar,
thanks for opening this issue. You are right, easy-ui5 pulls the templates from this GitHub org.
My first reaction would be that it's probably easiest to fork this project, remove files that you don't need and add the plugin-specific details.
CC: @petermuessig WDYT?

Hi @ubheamar ,
nice to see you here! 👍
Regarding the FLP plugin: if it should be a standalone project which just creates the FLP plugin project, it makes sense IMO to have a separate generator. But if you intend to make this a flavour of a UI5 project - to add a FLP plugin there then it maybe belongs better to the ui5-project.
@IObert : we should also discuss how to externalize the platform specific enablement you have in the ui5-project generator. This can be maybe useful for different generators as an addition.
Best regards,
Peter

how to externalize the platform specific enablement

Yes, I was thinking along the same lines. But I'm not sure if we can do this. Then entire project is more or less just the platform specific enablement + the subgenerators for models etc. And some subgenerators (e.g. for views)  are even used for the main generator. So I'm not sure if it make much sense to split this project even further.

Thanks for the reply 👍  @IObert  & @petermuessig.
I think we already have sufficient generators for generator-ui5-project. it's better to not split more. Also for the FLPPlugin generator, There will be entirely different manifest.json structure & project structures, I thinking to fork this project build a standalone generator similar to  generator-ui5-project
Give me your comments so that I can start working on it.
Regards,
Amar Ubhe

One you are ready, let us know so that we can create a project for you

Hello @IObert & @petermuessig,
I am ready with the project. can you create a project for me so that I can upload my code?
Regards,
Amar Ubhe

How do you want to name this project? And would you prefer an fresh project or should I create a fork of ui5-project (so that you could merge upstream changes every now and then)?

I think fresh project will be good. I have given the app name generator-ui5-flp-plugin.

Alright, I created a (for now) private repo for you to test. And I also assigned your the "write" access.
@petermuessig Is this ok or do you usually give "maintain" access out?

https://github.com/ui5-community/generator-ui5-flp-plugin

Hi @IObert , yes - we give "maintain" access unless there are some issues in future. I am a big fan of trust... 😄

You could finally close this issue, right? The new project has been created...

Hi @IObert , I have uploaded the code & tested it from my side as well. it's working fine with the easy-ui5 generator.
If any of you test & provide feedback that will be great.
I will close this issue.
Also, if I have to communicate with you guys in the future, should I create an issue for that new repository or set up a discussion tab?

I tested it and I'll provide feedback via issues in the new repo, ok?
Yes, I guess opening issues for other repos is a good approach.


impl SystemParam for Option<Res> / Option<ResMut>

This allows users to write systems that do not panic if a resource does not exist at runtime (such as if it has not been inserted yet).
This is a copy-paste of the impls for Res and ResMut, with an extra check to see if the resource exists.
There might be a cleaner way to do it than this check. I don't know.

I think this needs an example and a mention in the Res / ResMut docstrings. I really like this functionality though!

Added doc comments.
I can't come up with a meaningful way to add it to the ecs_guide example right now.

I'm in favor of these changes. Lets just update this when #1525  is merged.

Updated for ECS v2.
This time, thanks to the functionality being split across 2 separate traits, I could implement it more cleanly by wrapping an underlying ResState and delegating to it, rather than copypasting the trait impl code.
There is also no extra check, because the resource fetch API returns an Option now, so we can just map that.

bors r+


Closes #2042 fix compute_dtf bug

Thank you for your Pull Request! We have developed this task checklist from the Development Process Guide to help with the final steps of the process. Completing the below tasks helps to ensure our reviewers can maximize their time on your code as well as making sure the admiral codebase remains robust and consistent.
Please check off each taskbox as an acknowledgment that you completed the task or check off that it is not relevant to your Pull Request. This checklist is part of the Github Action workflows and the Pull Request will not be merged into the devel branch until you have checked off each task.

[x] Place Closes #<insert_issue_number> into the beginning of your Pull Request Title (Use Edit button in top-right if you need to update)
[x] Code is formatted according to the tidyverse style guide. Run styler::style_file() to style R and Rmd files
[x] Updated relevant unit tests or have written new unit tests, which should consider realistic data scenarios and edge cases, e.g. empty datasets, errors, boundary cases etc. - See Unit Test Guide
[x] If you removed/replaced any function and/or function parameters, did you fully follow the deprecation guidance?
[x] Update to all relevant roxygen headers and examples, including keywords and families. Refer to the categorization of functions to tag appropriate keyword/family.
[x] Run devtools::document() so all .Rd files in the man folder and the NAMESPACE file in the project root are updated appropriately
[x] Address any updates needed for vignettes and/or templates
[x] Update NEWS.md if the changes pertain to a user-facing function (i.e. it has an @export tag) or documentation aimed at users (rather than developers)
[x] Build admiral site pkgdown::build_site() and check that all affected examples are displayed correctly and that all new functions occur on the "Reference" page.
[x] Address or fix all lintr warnings and errors - lintr::lint_package()
[x] Run R CMD check locally and address all errors and warnings - devtools::check()
[x] Link the issue in the Development Section on the right hand side.
[x] Address all merge conflicts and resolve appropriately
[x] Pat yourself on the back for a job well done! Much love to your accomplishment!

Are there any other variations that we need to be worried about here?

For the most part, any non-standard-datetime formatting is caught by the warn_if_invalid_dtc() higher up in the code

Are there any other variations that we need to be worried about here?

For the most part, any non-standard-datetime formatting is caught by the warn_if_invalid_dtc() higher up in the code

But this one is not caught?

Are there any other variations that we need to be worried about here?

For the most part, any non-standard-datetime formatting is caught by the warn_if_invalid_dtc() higher up in the code

But this one is not caught?

Something like
compute_dtf("2019---06T00:00", as.Date("2019-06-06"))
would've slipped through the cracks too outputting NA instead of the desired "M"
but I added a check for the date-portion of a date-time string to properly determine if its the M or the D that needs to be imputed


uuidFromObject would throw a error in example

Describe the bug
A clear and concise description of what the bug is.
when:
object['id'] is int,it will throw a error
where it is:
graphql-flutter/examples/starwars/lib/client_provider.dart
final String id = object['id'] as String;  // line 7

Expected behavior
final String id = "${object['id']}";  // line 7

Thanks for reporting, can you make a PR to fix this?

Yes, but it takes some time to learn pull request

wouldn't object['id'].toString() be a cleaner fix?

I think they are just the same.
and "${object['id']}" is more simple.
@eusdima

I have to agree with @eusdima for clarity purpose, in this case, object['id'].toString() is cleaner and clearer since its the only thing being assigned to the variable. This "${object['id']}" makes sense only when it is part of a larger string.

fixed in #317

:tada: This issue has been resolved in version 1.1.1-beta.3 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:

:tada: This issue has been resolved in version 2.0.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


[GHSA-wf5p-c75w-w3wh] Null pointer dereference in TFLite MLIR optimizations

Tensorflow-lite doesn't seem to be a package name on https://pypi.org/search/?q=tensorflow-lite
Checking this link though: https://github.com/tensorflow/tensorflow/commit/d6b57f461b39fd1aa8c1b870f1b974aac3554955
...I think they may be referring to https://pypi.org/project/tflite/ ?
Updates

Affected products

Hello,
TFLite and Tensorflow-Lite are used interchangeable. Since the PyPI link is TFLite, TFLite is better to use, so let's go with that.
Thank you for the fix.

Thanks, @mihaimaruseac ! I'll leave the description as-is since to your point it's interchangeable. Unfortunately, without using the proper package name in the metadata, Dependabot can't send updates on this alert since our Dependency Graph doesn't recognize the name. Something to keep in mind for future advisories!

Thank you very much for the context!


Fix Rust Execution

This fixes the Rust argument code to use cargo eval instead of cargo run.
I chose to make a new setting key instead of reusing cargoArgs because if people already had v1.0.0 installed, cargoArgs would be set to run in their data.json. I think that this solution is preferable to having an adapter function to change the property, but I'm open to review on that.

[x] Tested and verified to work well (Windows 10, mingw64)

This closes #81
This closes #119

Not sure if I missed it somewhere, but the above requires cargo-eval to be installed.
cargo install cargo-eval

After that it worked correctly under MacOS Monterey.

Yep! This is in the README-- https://github.com/twibiral/obsidian-execute-code/blame/master/README.md#L245
Do you have any ideas how we could make it more prominent? If people are missing it, that's something I want to help with :)

It depends how people are reading the install instructions. Rust was the fifth or sixth language I was interested in and I probably figured I'd learned enough so I just tried it without expanding the language-specific section. My guess is most people are going to be interested in only one or two language options so they'll probably not skim over the section.
Also, just confirmed that it also works under MacOS Catalina.


Fix security issues identified by github

What kind of issue is this?

[X] Bug report
[ ] Feature request
[ ] Question not answered in documentation
[ ] Cleanup needed

This can be accessed from https://github.com/UWB-Biocomputing/BrainGrid/network/alerts
What is affected by this?

Workbench, specifically Tools/Workbench/WorkbenchProject/pom.xml
How do we replicate the issue/how would it work?

Expected behavior (i.e. solution or outline of what it would look like)

Other Comments

I can't see it, the link 404s. I think the alerts are only visible by the owner.

That's useful.  Actually, a very nice service. Not a critical issue for us right now, but something we can deal with sometime this quarter, I suspect.

bug


NO-JIRA: bump golangci-lint to v1.56.2

also run gofumpt.

/lgtm

/retest

@wewang58 this does not affect the product in any way, it's just bumping a linter. can you qe approve?
/assign @wewang58

/test e2e-azure-operator


uv_spawn_error: operation not supported on socket

After upgrading to electron-prebuilt 0.31.0, I started receiving the error "uv_spawn_error: operation not supported on socket" when trying to execute a uv_spawn() command.  This code functioned correctly before the electron-prebuilt update (PATHMAX is a #define to help support cross-platform, pid is set correctly higher in the script, and installerPath32 is getting set correctly in the GetInstallerPath() function).
TCHAR installerPath32[PATHMAX];
	GetInstallerPath(installerPath32, false);
	char *args32[4];
	args32[0] = installerPath32;
	args32[1] = pid;
	args32[2] = "Wait";
	args32[3] = NULL; // libuv requires last arg to be a NULL

  uv_process_options_t options = {0};
	options.exit_cb = GameTrackerPlugin::OnExit;
	options.file = args32[0];
	options.args = args32;
  if(uv_default_loop())
  {
    if ((r = uv_spawn(uv_default_loop(), &child_req, &options))) {
      fprintf(stderr, "uv_spawn_error: %s\n", uv_strerror(r));
      return false;
    } else {
      fprintf(stdout, "Launched %s with pid %d\n", installerPath32, child_req.pid);
    }
  }
  else
  {
    fprintf(stderr, "uv_default_loop was invlid");
    return false;
  }

	return true;
}

The output I'm getting is:
uv_spawn_error: operation not supported on socket

Any help, or insights would be greatly appreciated :+1:

What version of libuv is that and what did you use before?

Sorry for being such a newbie, but could you tell me how to display the libuv version (Google failed me for this information)

@Tulrath http://docs.libuv.org/en/latest/version.html?highlight=version

So... I need to write and run a javascript program to display the libuv version?  Is that correct?

If you're using JavaScript (node.js), you should be able to just echo process.versions.

Looks like it's libuv 1.6.1
Here's how I got the information (not sure if this is the correct information?):
cat  ~/.electron-gyp/.node-gyp/0.31.0/deps/uv/include/uv-version.h
#define UV_VERSION_MAJOR 1
#define UV_VERSION_MINOR 6
#define UV_VERSION_PATCH 1
#define UV_VERSION_IS_RELEASE 1
#define UV_VERSION_SUFFIX ""

There have been quite a few fixes since v1.6.1 so my first suggestion would be to upgrade the embedded libuv and try again.

No follow up, closing. If you still see the failure with the latest libuv please leave a comment and we'll reopen the issue, thanks!


Fix 'Redundant blank line at the start of a code block should be deleted.' issue in deque\PLayWIthSTL\Solution.cpp

CodeFactor found an issue: Redundant blank line at the start of a code block should be deleted.
It's currently on:
deque\PLayWIthSTL\Solution.cpp:12

Hello, fixed an issue with this file. Should I also take up this issue if available?


Added A Simple Weather-App

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

[X] 🚀 Added Name
[ ] ✨ Feature
[X] 🌟 ed the repo
[ ] 🐛 Grammatical Error
[ ] 📝 Documentation Update
[ ] 🚩 Other

Description
A simple weather app working on OpenWeatherMap API and Tkinter.
Just add some necessary components like API key in app.py and in owmdta.py and Carry on.
Afterthis just run app.py
Add Link of GitHub Profile
https://github.com/Saurav-Navdhare

what happend? so that you closed the pull request.

There could be some improvement in code quality, I'll make a new PR soon


A non-null String must be provided to a Text widget. 'package:flutter/src/widgets/text.dart': Failed assertion: line 285 pos 10: 'data != null'

Steps to Reproduce

Run flutter create bug.
Update the files as follows: ...
...

Expected results:
Actual results:

Logs

What's the problem?
This is a request to automatically default null to empty string in Text widget or what?
The error is clear enough.

Hi @svprabath
opening an issue please try to provide
all or some of the information indicated in the template

Issue Template
If you are looking for support, please check out our documentation
or consider asking a question on Stack Overflow:
- https://flutter.dev/
- https://api.flutter.dev/
- https://stackoverflow.com/questions/tagged/flutter?sort=frequent

If you have found a bug or if our documentation doesn't have an answer
to what you're looking for, then fill our the template below. Please read
our guide to filing a bug first: https://flutter.dev/docs/resources/bug-reports

Steps to Reproduce

Please tell us exactly how to reproduce the problem you are running into.

Please attach a small application (ideally just one main.dart file) that
reproduces the problem. You could use https://gist.github.com/ for this.

If the problem is with your application's rendering, then please attach
a screenshot and explain what the problem is.

1. ...
2. ...
3. ...

Please tell us which target platform(s) the problem occurs (Android / iOS / Web / macOS / Linux / Windows)
Which target OS version, for Web, browser, is the test system running?
Does the problem occur on emulator/simulator as well as on physical devices?

Target Platform:
Target OS version/browser:
Devices:

Run your application with `flutter run --verbose` and attach all the
log output below between the lines with the backticks. If there is an
exception, please see if the error message includes enough information
to explain how to solve the issue.

Run `flutter analyze` and attach any output of that command below.
If there are any analysis errors, try resolving them before filing this issue.

Finally, paste the output of running `flutter doctor -v` here.

Closing this issue, since no information has been provided.
Thank you.


Dev

just wanted to comment that your support of magic commands would have justified increasing the version to 1.1.0, I think. You certainly added new features to your tool, not only bugfixes.

Thank @michaelaye for your comment,
But last week I have released the package as 1.0.6, so should I correct it and republish on PyPi again?

Don't think that's necessary. Maybe just consider it the next time you add more features, to follow the rules of semantic versioning. Patch increase = bugfix, no new features, minor increase:  new features, no change of API, major increase: potential break of API, major functionality, partial/complete rewrite etc...


de-internalize exampleoc

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

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

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
1533

Relevant Lines:
1732

💛  - Coveralls

I think you might also need to export testutil as well.

i don't see anything in there that should be exported. the schema doesn't correspond to the generated code and the gnmi utils are pretty trivial


Add Ayushma documentation

Add documentation for https://github.com/coronasafe/ayushma_fe and https://github.com/coronasafe/ayushma

Ayushma can be a seperate section, its not really connected to care.


[BUG] Assigning an incorrect variable type from a pointer of a different type

Problem:
Assigning a variable or passing a variable from a pointer of an imcompatible type
System:
openSUSE Leap 15.2 64 bit linux
Linux localhost.localdomain 5.3.18-lp152.106-default #1 SMP Mon Nov 22 08:38:17 UTC 2021 (52078fe) x86_64 x86_64 x86_64 GNU/Linux
Python 2.17.8
Cython version 3.0.0a10
Warning Message:
63263:[sagelib-9.4] build/cythonized/sage/calculus/ode.c:6333:26: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]

Source code:
        cdef gsl_odeiv_system sys
        if type:               # The user has passed a class with a compiled function, use that for the system
            sys.function = c_f_compiled
            sys.jacobian = c_jac_compiled
#         (<ode_system>self.function).the_parameters = self.params
            sys.params = <void *> self.function
        else:                  # The user passed a python function.
            sys.function = c_f
            sys.jacobian = c_jac
            sys.params = <void *> wrapper

Object code:
    /* "sage/calculus/ode.pyx":519
 *         cdef gsl_odeiv_system sys
 *         if type:               # The user has passed a class with a compiled function, use that for the system
 *             sys.function = c_f_compiled             # <<<<<<<<<<<<<<
 *             sys.jacobian = c_jac_compiled
 * #         (<ode_system>self.function).the_parameters = self.params
 */
    __pyx_v_sys.function = (void *) __pyx_f_4sage_8calculus_3ode_c_f_compiled;

Problem:
The problem is that the pointer for c_f_compiled is obviated and has been coerced to a void pointer type (void*) and a void pointer assigned to __pyx_v_sys.function
The class definition has
  ctypedef struct gsl_odeiv_system:
    int (* function) (double t,  double y[], double dydt[], void * params)
    int (* jacobian) (double t,  double y[], double * dfdy, double dfdt[], void * params)
    size_t dimension
    void * params

So it appears that the use of (void*) is invalid and it should have read (function*) instead, matching the class definition.
Warning Message:
63456:[sagelib-9.4] build/cythonized/sage/combinat/designs/subhypergraph_search.c:2644:64: warning: passing argument 4 of ‘qsort’ from incompatible pointer type [-Wincompatible-pointer-types]

Source Code:
    trace_hypergraph64(&h1,n,&tmp1)
    qsort(tmp1.sets,h1.m,sizeof(uint64_t *),cmp_128_bits)

Object Code:
 /* "sage/combinat/designs/subhypergraph_search.pyx":281
 *     """
 *     trace_hypergraph64(&h1,n,&tmp1)
 *     qsort(tmp1.sets,h1.m,sizeof(uint64_t *),cmp_128_bits)             # <<<<<<<<<<<<<<
 *
 *     cdef int i1,i2
 */
  qsort(__pyx_v_tmp1.sets, __pyx_v_h1.m, (sizeof(uint64_t *)), (void *) __pyx_f_4sage_8combinat_7designs_20subhypergraph_search_cmp_128_bits);

Problem:
argument #4, which is cmp_128_bits is the wrong pointer type to the qsort routine. Looking in the C-std, we find that qsort wants an integer compare function signature.
function in arg #4, NOT a (void*) pointer. This is definitely wrong! It is expected to be an integer compare function.

So in the ODE one:
cdef int c_f_compiled(double t, double *y, double *dydt, void *params):

is assigned to a function pointer of type
int (* function) (double t, const double y[], double dydt[], void * params)

So essentially one of the argument types is losing a constant. This looks like something that could be fixed in Sage but not Cython (although it may be there for good reason - previous versions of Cython didn't handle constants too well).
The qsort example is similarly missing a const on the pointer types.

I'm really not sure why Cython is generating the (void*) casts - it doesn't seem to be on any toy examples I can construct which leads me to think you may not actually be compiling with Cython 3.10

Cython 3.10

We're not there yet. ;-)

But yeah, I would also suggest making sure that you are using the latest Cython 3 release, and then start cleaning up and modernising the code in Sage. I also suggest enabling -Werror in both Cython and the C compiler to make sure you are not missing warnings that should be errors. Then you can still disable certain warnings selectively, but with an allow list instead of having them pass silently be default.

Closing this, as I don't see anything obvious that we should change in Cython.


Dropdown module is missing from "create a build".

Repro:

Click on create a build on this page: http://angular-ui.github.io/bootstrap/
Select only the "dropdown" module.
Observe that the files it generates are pretty much empty. They contain just this:
angular.module("ui.bootstrap", ["ui.bootstrap.tpls", "ui.bootstrap.dropdown"]);
angular.module("ui.bootstrap.tpls", []);

URL it tries to download: http://<IP_ADDRESS>:3001/api/bootstrap/download?modules=dropdown&

This issue seems to be fixed.
I reproduced the steps described by @wli and the generated custom build contains the dropdown code as expected.
@derzwen do you confirm?

Will close for now - can be reopened if one of the OPs comes back.

Works for me - thanks!


Accessibility Update

Made a small update to the code: Changed outline: none to outline-color: transparent. It's good to always have this in outlines for inputs and buttons and such, since users with higher contrasts and such could have issues using the tab button selector. This could have an unintentional effect of making special animations and attributes of the button disappear. Reference: https://www.youtube.com/shorts/4B_4WLpbyp8

Hi @7agabond - thank you for your contribution.
In this example, the class tna-!--no-focus-style is designed as an override class. In some instances, it is advantageous to not show a focus style on a focused element.
For example, when we click on a skip link to jump to an anchor on the page we want to focus on that element. However this element is not interactive and does not necessarily have to be accessible through keyboard navigation as it is just an area of the page.
In this instance, we don't want to show a focus style because the element is not focusable.
This example is used here: https://github.com/nationalarchives/tna-frontend/blob/main/src/nationalarchives/components/skip-link/skip-link.mjs#L23
We have followed the conventions of GOV.UK (skip link thread: https://github.com/alphagov/govuk-design-system-backlog/issues/66) which has resulted in a similar solution: https://github.com/alphagov/govuk-frontend/blob/50e6bd4168019a79dcaf4add3f10a57c4c97156d/packages/govuk-frontend/src/govuk/components/skip-link/_index.scss#L35-L46


Rename release title

Currently the release title is hypha-x.x.x which can be confusing, we should change it to hypha helm chart - x.x.x

It's currently auto generated by https://github.com/helm/chart-releaser-action and I can't immediately see how to change it


Add the HuBoard badge

Added the HuBoard badge and link to the HuBoard for the issue tracker on this repo into the top of the Readme file.

Due to protection rules, this is waiting on a successful build to be merged into master. I'll monitor and merge this through when we're able.


Fix python3.6 compatibility

The library currently uses methods like get_running_loop(), which are only available in python>=3.7
This PR fixes that.
Fixes the downstream-issue https://github.com/flyte/mqtt-io/issues/192

Nice one @fipwmaqzufheoxq92ebc ! Looks good to me, but I'll hang on until @frederikaalund has a look :smiley:

Thanks for this pull request. It looks good to me. :+1:
Do note that asyncio-mqtt officially targets Python 3.7. However, in the spirit of pragmatism:

We'll gladly merge in small compatibility fixes like this (thanks for the contribution :+1:)
We'll try not to break backwards compatibility (this is on a best-effort basis).


Permit to disable hover event title

Thanks again for the PR, I think i want to take a more holistic approach to this section, perhaps provide a more robust way to replace the entire component for those that are comfortable dealing with the positioning and style requirements


Fixed Mongoose Download Link

Fixed mongoose download link in "prepare_dependencies.py". Add mongoose release 5.5 download link.

There is a problem this link and it's not a cmake project. I fixed this and committed. I will open new pull request.


Feature Request: Style/InlineComment Exception for Rubocop Comments

In general I like to avoid inline comments (obviously with some exceptions), but when I attempted to try out this cop, I ran into a huge hurdle.
Rubocop uses inline comments to disable certain cops.  This is a useful feature as it doesn't require re-enabling the cop on the next line.
Unfortunately, because the InlineComment cop doesn't provide an exception for rubocop comments, it requires every Rubocop inline comment to also require disabling the InlineComment cop.

Implemented here: https://github.com/bbatsov/rubocop/pull/5697


itest: find channel restore flake [test]

Still relevant? If so needs rebase

This PR only contains some debug code. Closing until needed again.


Added entry for Insight

:tada: This PR is included in version 1.0.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


images: FIXES edge-management nav urls.

Description
edge-management nav urls is broken this PR fixes this behavior.
FiXES: https://issues.redhat.com/browse/THEEDGE-3569
Type of change
What is it?

[X] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Documentation update
[ ] Tests update

Checklist:

[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] I have added tests that prove my fix is effective or that my feature works
[X] New and existing unit tests pass locally with my changes
[X] I run npm run lint:js:fix to check that my code is properly formatted

Codecov Report
Patch has no changes to coverable lines.

:exclamation: Current head 7236e4e differs from pull request most recent head 9bd238f. Consider uploading reports for the commit 9bd238f to get more accurate results

Files Changed
Coverage

src/Routes/ImageManager/ImageSetsTable.js
ø

src/Routes/ImageManager/ImageTable.js
ø

src/Routes/ImageManagerDetail/DetailsHeader.js
ø

src/Routes/ImageManagerDetail/ImageDetailTab.js
ø

src/Routes/ImageManagerDetail/ImageVersionsTab.js
ø

:loudspeaker: Thoughts on this report? Let us know!.


Fixed directives for azure stack hci 2024-04-01

Contributing to the Azure SDK
Please see our CONTRIBUTING.md if you are not familiar with contributing to this repository or have questions.
For specific information about pull request etiquette and best practices, see this section.

API change check
APIView has identified API level changes in this PR and created following API reviews.
Azure.ResourceManager.Hci


Wrong Delhi Test Data

The number of cumulative tests done in Delhi on 8th May is 81,367 according to the daily health bulletin, while the site shows 82,367.
Seems like a common typo.

Also notifications is showing new cases in delhi but State table

Also notifications is showing new cases in delhi but not in State table

Also notifications is showing new cases in delhi but not in State table

That happens when you view the site while they are updating the data. It takes a few minutes after they receive the date for them to upload it to the database.

Closing the issue as it seems to be an understanding issue.


Valve operation status notification might get parsed incorrectly

2023-01-20T22:45:15.376Z DRIVER « [Node 028] [REQ] [ApplicationCommand]
                                  └─[Security2CCMessageEncapsulation]
                                    │ sequence number: 24
                                    └─[SupervisionCCGet]
                                      │ session id:      54
                                      │ request updates: false
                                      └─[NotificationCCReport]
                                          notification type:   Water Valve
                                          notification status: 255
                                          notification state:  Valve operation
                                          event parameters:    0x00
2023-01-20T22:45:15.391Z CNTRLR   [Node 028] [~] [Notification] Water Valve[Valve operation status] [Endpoint 0]
                                  : 1 => 1

2023-01-20T22:45:45.320Z DRIVER « [Node 028] [REQ] [ApplicationCommand]
                                  └─[Security2CCMessageEncapsulation]
                                    │ sequence number: 28
                                    └─[SupervisionCCGet]
                                      │ session id:      57
                                      │ request updates: false
                                      └─[NotificationCCReport]
                                          notification type:   Water Valve
                                          notification status: 255
                                          notification state:  Valve operation
                                          event parameters:    0x01
2023-01-20T22:45:45.328Z CNTRLR   [Node 028] [~] [Notification] Water Valve[Valve operation status] [Endpoint 0]
                                  : 1 => 1

different event parameters, both times value 1 gets used.

Duplicate of #264


Proposed fixes for catalan numbers

Trying to propose a fix for #74. I'm making heavy use of BigInteger because it allows greater accuracy in calculations.

@nickntg - Sorry for being late, we were cleaning up the project and moving things around. Just tested your changes locally and it works.
Thanks for your addition and welcome to the contributors list!

Glad to be of help. Cheers!


key : on Azerty keyboard launches / to find

Hi,
Congratulations for this software and your work.
I use the latest version via a gentle git pull.
i meet this issue on every azerty keyboard (windows 10 or Ubuntu 18.04.02), when i type on the : key, Orca reacts as y type on the / character which is on a azerty keyboard the same key.
it's annoying to play just a little midi note.

An idea ?
Thanks

Just pushed an update that should fix that :)

Perfect ! Merci for french users !


should solve issue 595

Issue #595 - variables that are supposed to be in one realm but are in a different one - eg fgco2 is looked up in ocean but is in ocnBgchem; in fact the current solution should solve any problem with variables that have messed up realms; tested with a bunch of cases and fx files retrieval is done correctly too. Shit, this took a bit longer than I expected :cow:

@schlunma @bouweandela the solution includes adding 'special' variables in config-developer but a more general solution would be to have these variables stored in a file since I assume they may be tons of them, but if you think they are just a few then config-developer would do fine; the syntax is set up so they are dictionaries so that an external file is read then it's nice and easy

I really think we should use the existing CMOR tables for that so we don't have to check every variable manually. Maybe we can translate them into a yaml file?

@schlunma is right: this information is available in the cmor tables and should be read from there. The whole table CMIP5/realm_frequency in config developer is probably unnecessary and should be removed. There is no need to translate the CMOR tables to yaml because we have a CMOR table reader that we use in other parts of the tool as well to look up things in the CMOR tables.
I think the easiest solution would be to automatically add modelling_realm and frequency keys  to variable in _recipy.py. The only thing that needs attention seems to be that variables can have more than one value for modelling_realm.

@bouweandela @schlunma I couln't agree more with you guys - can I be a massive a-hole and ask for you to do this or reassign someone else (@jvegasbsc is a wizard of CMOR :grin: ) - I already have my hands full of ESMValTool stuffs at the mo :sweat:

Done in #600


fix v3 api ref issues in getting started doc

Signed-off-by: Abhay Narayan Katare<EMAIL_ADDRESS>Commit Message: redirection issues in getting started docs for v3 API reference.
Additional Description: same has been identified in v1.15 and v1.16 as well ( see below urls)
https://www.envoyproxy.io/docs/envoy/v1.15.0/start/start
https://www.envoyproxy.io/docs/envoy/v1.16.0/start/start
https://www.envoyproxy.io/docs/envoy/v1.17.0/start/start
Risk Level: LOW
Testing:
Docs Changes: Yes
Release Notes:
Platform Specific Features:
[Optional Runtime guard:]
[Optional Fixes:]
[Optional Deprecated:]
[Optional API Considerations:]
part of #11027

@alyssawilk as suggested , open this new PR  for main stream fix.


[BUG] Unable to create account

Describe the bug
Unable to create an account after initial install. The client is accessible, and the server is running without errors, but when an account is registered nothing happens and there are no logs indicating any activity.
Product Flavor

Self Hosted

To Reproduce

Create containers
Navigate to localhost:3000
Click "Register"
Enter all information
The create an account window stays active and nothing happens.

Expected behavior
An account is created with some form of confirmation.
Screenshots

Desktop (please complete the following information):

OS: Debian11 [Docker]
Browser edge
Version 104.0.1293.70

Additional context
The database is Postgres12, but the same behavior exists when created with Postgres Alpine per the compose example.

Could you share the PUBLIC_URL and PUBLIC_SERVER_URL env vars of your configuration?

Here is the snippet of my compose file.
  rxresume_server:
    image: amruthpillai/reactive-resume:server-latest
    container_name: rxresume_server
    restart: unless-stopped
    networks:
      - internal
    ports:
      - '3100:3100'
    depends_on:
      - postgres12
    security_opt:
      - no-new-privileges:true
    logging:
      options:
        max-size: '2m'
        max-file: '3'
    environment:
      TZ: $TIMEZONE
      PUBLIC_URL:  http://rxresume_client:3000
      PUBLIC_SERVER_URL: http://rxresume_server:3100
      POSTGRES_DB: rxresume
      POSTGRES_USER: $POSTGRES_DB_USER
      POSTGRES_PASSWORD: $POSTGRES_DB_PASS
      POSTGRES_HOST: postgres12
      POSTGRES_PORT: 5432
      SECRET_KEY: $RXRESUME_SECRET_KEY
      JWT_SECRET: $RXRESUME_JWT_SECRET
      JWT_EXPIRY_TIME: 604800
      MAIL_FROM_NAME: RxResume
      MAIL_FROM_EMAIL: $EMAIL_USER
      MAIL_HOST: $EMAIL_HOST
      MAIL_PORT: $EMAIL_PORT
      MAIL_USERNAME: $EMAIL_USER
      MAIL_PASSWORD: $RXRESUME_MAIL_PASS
      STORAGE_S3_ENABLED: 'false'

  rxresume_client:
    image: amruthpillai/reactive-resume:client-latest
    container_name: rxresume_client
    restart: unless-stopped
    networks:
      - proxy
    ports:
      - '3000:3000'
    depends_on:
      - rxresume_server
    security_opt:
      - no-new-privileges:true
    logging:
      options:
        max-size: '2m'
        max-file: '3'
    environment:
      TZ: $TIMEZONE
      PUBLIC_URL:  http://rxresume_client:3000
      PUBLIC_SERVER_URL: http://rxresume_server:3100
      PUBLIC_FLAG_DISABLE_SIGNUPS: 'false'
    labels:
      - 'traefik.enable=true'
      ## HTTP Routers
      - 'traefik.http.routers.rxresume-rtr.entrypoints=https'
      - 'traefik.http.routers.rxresume-rtr.rule=Host(`rxresume.$DOMAINNAME`)'
      ## Middlewares
      - 'traefik.http.routers.rxresume-rtr.middlewares=chain-authelia@file' #Authelia Authentication
      ## HTTP Services
      - 'traefik.http.routers.rxresume-rtr.service=rxresume-svc'
      - 'traefik.http.services.rxresume-svc.loadbalancer.server.port=3000'
      - ```

PUBLIC_URL:  http://rxresume_client:3000
PUBLIC_SERVER_URL: http://rxresume_server:3100

This would have to be the public facing URL instead of the docker network URL.
So it would be localhost:3000 and localhost:3100, on all services.

I tried using localhost and it did not solve my problem.

I tried using localhost and it did not solve my problem.

You could just simply use a previous version of docker-compose.yml.
Here is the snippet of the content
version: '3'

services:
  postgres:
    image: postgres
    container_name: postgres
    ports:
      - 5432:5432
    env_file: .env
    volumes:
      - pgdata:/var/lib/postgresql/data

  traefik:
    image: traefik
    container_name: traefik
    command:
      - --providers.docker=true
      - --providers.docker.exposedbydefault=false
      - --entrypoints.web.address=:80
    ports:
      - 80:80
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro

  server:
    image: amruthpillai/reactive-resume:server-latest
    container_name: server
    env_file: .env
    environment:
      - PUBLIC_URL=http://<SERVER-IP>
      - POSTGRES_HOST=postgres
    depends_on:
      - traefik
      - postgres
    labels:
      - traefik.enable=true
      - traefik.http.routers.server.entrypoints=web
      - traefik.http.routers.server.rule=Host(`<SERVER-IP>`) && PathPrefix(`/api/`)
      - traefik.http.routers.server.middlewares=server-stripprefix
      - traefik.http.middlewares.server-stripprefix.stripprefix.prefixes=/api
      - traefik.http.middlewares.server-stripprefix.stripprefix.forceslash=true

  client:
    image: amruthpillai/reactive-resume:client-latest
    container_name: client
    env_file: .env
    environment:
      - PUBLIC_SERVER_URL=http://<SERVER-IP>/api
    depends_on:
      - traefik
      - server
    labels:
      - traefik.enable=true
      - traefik.http.routers.client.rule=Host(`<SERVER-IP>`)
      - traefik.http.routers.client.entrypoints=web

volumes:
  pgdata:

Then, continue to deploy your own service according to official manual page: https://docs.rxresu.me/deployment/docker

Still not working, @AmruthPillai is there a way to turn on debug logging so I can better understand what's happening in the background when I try to create an account?

I had the same problem.
When I try to log in, it would pop-up alerts.

I was deploy successfully in a fresh environment, maybe you could also deploy follow my step.

Check your environment:

Docker Compose version v2.6.1
Docker version 20.10.16, build aa7e414
CentOS Linux release 7.9.2009 (Core)
Kernel Version 5.18.0-1.el7.elrepo.x86_64

Prepare .env and docker-compose.yml , now, assume that your machine IP is <IP_ADDRESS>:

.env file

# Turbo Cache (Optional)
TURBO_TEAM=
TURBO_TOKEN=

# Server + Client
TZ=UTC
PUBLIC_URL=http://<IP_ADDRESS>:3000
PUBLIC_SERVER_URL=http://<IP_ADDRESS>:3100
PUBLIC_GOOGLE_CLIENT_ID=

# Server + Database
POSTGRES_DB=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres

# Server
SECRET_KEY=DdYZpgIDbjKFxnKwTeeM
POSTGRES_HOST=postgres
POSTGRES_PORT=5432
POSTGRES_SSL_CERT=
JWT_SECRET=DdYZpgIDbjKFxnKwTeeM
JWT_EXPIRY_TIME=604800
GOOGLE_CLIENT_SECRET=
GOOGLE_API_KEY=
MAIL_FROM_NAME=
MAIL_FROM_EMAIL=
MAIL_HOST=
MAIL_PORT=
MAIL_USERNAME=
MAIL_PASSWORD=
STORAGE_BUCKET=
STORAGE_REGION=
STORAGE_ENDPOINT=
STORAGE_URL_PREFIX=
STORAGE_ACCESS_KEY=
STORAGE_SECRET_KEY=

# Flags (Client)
PUBLIC_FLAG_DISABLE_SIGNUPS=false

docker-compose.yml file

version: '3'

services:
  postgres:
    image: postgres
    container_name: postgres
    ports:
      - 5432:5432
    env_file: .env
    volumes:
      - pgdata:/var/lib/postgresql/data

  traefik:
    image: traefik
    container_name: traefik
    command:
      - --providers.docker=true
      - --providers.docker.exposedbydefault=false
      - --entrypoints.web.address=:80
    ports:
      - 80:80
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro

  server:
    image: amruthpillai/reactive-resume:server-latest
    container_name: server
    env_file: .env
    environment:
      - PUBLIC_URL=http://<IP_ADDRESS>
      - POSTGRES_HOST=postgres
    depends_on:
      - traefik
      - postgres
    labels:
      - traefik.enable=true
      - traefik.http.routers.server.entrypoints=web
      - traefik.http.routers.server.rule=Host(`<IP_ADDRESS>`) && PathPrefix(`/api/`)
      - traefik.http.routers.server.middlewares=server-stripprefix
      - traefik.http.middlewares.server-stripprefix.stripprefix.prefixes=/api
      - traefik.http.middlewares.server-stripprefix.stripprefix.forceslash=true

  client:
    image: amruthpillai/reactive-resume:client-latest
    container_name: client
    env_file: .env
    environment:
      - PUBLIC_SERVER_URL=http://<IP_ADDRESS>/api
    depends_on:
      - traefik
      - server
    labels:
      - traefik.enable=true
      - traefik.http.routers.client.rule=Host(`<IP_ADDRESS>`)
      - traefik.http.routers.client.entrypoints=web

volumes:
  pgdata:

Deploy service by typing docker-compose up -d, then access website on http://<IP_ADDRESS>, and you would be able to create account normally

Figured out what the issue was, I had to explicitly define the IP or hostname of the host machine for the PUBLIC_SERVER_URL and PUBLIC_URL environment variables instead of localhost.
Ideally the docker network URL would be good enough for these variables so ports wouldn't have to be exposed to the host and public access could be completely handled by a reverse proxy.

@BaileysRock you may need to add STORAGE_S3_ENABLED: 'false' to the server environment variables.

@BaileysRock you may need to add STORAGE_S3_ENABLED: 'false' to the server environment variables.

I have tried, but it remains.
The .env document is as follows
# Turbo Cache (Optional)
TURBO_TEAM=
TURBO_TOKEN=

# Server + Client
TZ=UTC
PUBLIC_URL=http://ip:3000
PUBLIC_SERVER_URL=http://ip:3100
PUBLIC_GOOGLE_CLIENT_ID=

# Server + Database
POSTGRES_DB=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres

# Server
SECRET_KEY=DdYZpgIDbjKFxnKwTeeM
POSTGRES_HOST=postgres
POSTGRES_PORT=5432
POSTGRES_SSL_CERT=
JWT_SECRET=DdYZpgIDbjKFxnKwTeeM
JWT_EXPIRY_TIME=604800
GOOGLE_CLIENT_SECRET=
GOOGLE_API_KEY=
MAIL_FROM_NAME=
MAIL_FROM_EMAIL=
MAIL_HOST=
MAIL_PORT=
MAIL_USERNAME=
MAIL_PASSWORD=
STORAGE_BUCKET=
STORAGE_REGION=
STORAGE_ENDPOINT=
STORAGE_URL_PREFIX=
STORAGE_ACCESS_KEY=
STORAGE_SECRET_KEY=
STORAGE_S3_ENABLED=false
# Flags (Client)
PUBLIC_FLAG_DISABLE_SIGNUPS=false

I'm still having echos of this issue, I've been successful crating an account and logging in on the local network, but when I try to configure a reverse proxy to access over a domain, I get this same error. This issue seems to be related to this one https://github.com/AmruthPillai/Reactive-Resume/issues/752.
Here's my current compose file that is working locally, if I use my domain as the URLs I get the same error accessing over the web, but I am unable to access the app locally, however, the launch page still displays.
## Reactive Resume - A Free and Open-Source Resume Builder That Respects Your Privacy
  rxresume-server:
    image: amruthpillai/reactive-resume:server-latest
    container_name: rxresume-server
    restart: unless-stopped
    networks:
      - internal
    ports:
      - '3100:3100'
    depends_on:
      - postgres12
    security_opt:
      - no-new-privileges:true
    logging:
      options:
        max-size: '2m'
        max-file: '3'
    volumes:
      - '/etc/localtime:/etc/localtime:ro'
      - '/opt/docker/rxresume/exports:/app/server/dist/assets/exports'
      - '/opt/docker/rxresume/uploads:/app/server/dist/assets/uploads'
    environment:
      TZ: $TIMEZONE
      PUBLIC_URL:  http://$LAB_IP:3000 #https://resume.$DOMAINNAME
      PUBLIC_SERVER_URL: http://$LAB_IP:3100 #https://resume.$DOMAINNAME
      POSTGRES_DB: rxresume
      POSTGRES_USER: $POSTGRES_DB_USER
      POSTGRES_PASSWORD: $POSTGRES_DB_PASS
      POSTGRES_HOST: postgres12
      POSTGRES_PORT: 5432
      SECRET_KEY: $RXRESUME_SECRET_KEY
      JWT_SECRET: $RXRESUME_JWT_SECRET
      JWT_EXPIRY_TIME: 604800
      MAIL_FROM_NAME: 'Reactive Resume'
      MAIL_FROM_EMAIL: $EMAIL_USER
      MAIL_HOST: $EMAIL_HOST
      MAIL_PORT: $EMAIL_PORT
      MAIL_USERNAME: $EMAIL_USER
      MAIL_PASSWORD: $RXRESUME_MAIL_PASS
      STORAGE_S3_ENABLED: 'false'
    labels:
      - 'traefik.enable=true'
      ## HTTP Routers
      - 'traefik.http.routers.resumeserver-rtr.entrypoints=https'
      - 'traefik.http.routers.resumeserver-rtr.rule=Host(`resume.$DOMAINNAME`) && PathPrefix(`/api/`)'
      ## Middlewares
      - 'traefik.http.routers.resumeserver-rtr.middlewares=chain-authelia@file,resume-api' #Authelia Authentication
      #- 'traefik.http.routers.resumeserver-rtr.middlewares=chain-no-auth@file,resume-api' # No Authentication
      - 'traefik.http.middlewares.resume-api.stripprefix.prefixes=/api'
      - 'traefik.http.middlewares.resume-api.stripprefix.forceslash=true'
      ## HTTP Services
      - 'traefik.http.routers.resumeserver-rtr.service=resumeserver-svc'
      - 'traefik.http.services.resumeserver-svc.loadbalancer.server.port=3100'
    healthcheck:
      test: curl -fSs http://localhost:3100/health || exit 1
      interval: 30s
      timeout: 5s
      retries: 3

  rxresume-client:
    image: amruthpillai/reactive-resume:client-latest
    container_name: rxresume-client
    restart: unless-stopped
    networks:
      - proxy
      - internal
    ports:
      - '3000:3000'
    depends_on:
      - rxresume-server
    security_opt:
      - no-new-privileges:true
    logging:
      options:
        max-size: '2m'
        max-file: '3'
    environment:
      TZ: $TIMEZONE
      PUBLIC_URL:  http://$LAB_IP:3000 #https://resume.$DOMAINNAME
      PUBLIC_SERVER_URL: http://$LAB_IP:3100 #https://resume.$DOMAINNAME
      PUBLIC_FLAG_DISABLE_SIGNUPS: 'true'
    labels:
      - 'traefik.enable=true'
      ## HTTP Routers
      - 'traefik.http.routers.resume-rtr.entrypoints=https'
      - 'traefik.http.routers.resume-rtr.rule=Host(`resume.$DOMAINNAME`)'
      ## Middlewares
      - 'traefik.http.routers.resume-rtr.middlewares=chain-authelia@file' #Authelia Authentication
      ## HTTP Services
      - 'traefik.http.routers.resume-rtr.service=resume-svc'
      - 'traefik.http.services.resume-svc.loadbalancer.server.port=3000'
    healthcheck:
      test: curl -fSs <IP_ADDRESS>:3000 || exit 1
      interval: 30s
      timeout: 5s
      retries: 3

I had the same problem. When I try to log in, it would pop-up alerts.

Did you ever resolve your problem?

Yes, I can log in. But I can't upload my photo.

@BaileysRock are you accessing locally or with a reverse proxy?

@BaileysRock您是在本地访问还是使用反向代理？

I deploy it on my oracle Servers

So does that mean you're accessing only from the host machine or over the internet?

So does that mean you're accessing only from the host machine or over the internet?

Over the internet.

Mind sharing your compose file for the client and server?

Mind sharing your compose file for the client and server?

like this. https://github.com/AmruthPillai/Reactive-Resume/issues/994#issuecomment-1240331709

I have the same issue.
version: "3.8"

services:
  postgres:
    image: postgres:alpine
    ports:
      - 5432:5432
    networks:
      - traefik-public
    volumes:
      - pgdata:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      start_period: 15s
      interval: 30s
      timeout: 30s
      retries: 3
    environment:
      - POSTGRES_DB=*****
      - POSTGRES_USER=*****
      - POSTGRES_PASSWORD=*****

  server:
    image: amruthpillai/reactive-resume:server-latest
    ports:
      - 3100:3100
    depends_on:
      - postgres
    networks:
      - traefik-public
    environment:
      - PUBLIC_URL=https://${SUBDOMAIN}.{DOMAIN}
      - PUBLIC_SERVER_URL=http://${SUBDOMAIN}.{DOMAIN}/api
      - PUBLIC_GOOGLE_CLIENT_ID=
      - POSTGRES_DB=*****
      - POSTGRES_USER=*****
      - POSTGRES_PASSWORD=*****
      - SECRET_KEY=*****
      - POSTGRES_HOST=postgres
      - POSTGRES_PORT=5432
      - JWT_SECRET=*****
      - JWT_EXPIRY_TIME=604800
      - GOOGLE_CLIENT_SECRET=*****
      - GOOGLE_API_KEY=*****
      - MAIL_FROM_NAME=Reactive Resume
      -<EMAIL_ADDRESS>      - MAIL_HOST=
      - MAIL_PORT=
      - MAIL_USERNAME=
      - MAIL_PASSWORD=
      - STORAGE_BUCKET=
      - STORAGE_REGION=
      - STORAGE_ENDPOINT=
      - STORAGE_URL_PREFIX=
      - STORAGE_ACCESS_KEY=
      - STORAGE_SECRET_KEY=
    deploy:
      replicas: 1
      labels:
        - "traefik.enable=true"
        - "traefik.http.routers.resumeserver.entrypoints=web"
        - "traefik.docker.network=traefik-public"
        - "traefik.http.routers.resumeserver.rule=Host(`${SUBDOMAIN}.${DOMAIN}`) && PathPrefix(`/api/`)"
        - "traefik.http.services.resumeserver.loadbalancer.server.port=3100"
        - "traefik.http.routers.resumeserver.middlewares=resumeserver-stripprefix"
        - "traefik.http.middlewares.resumeserver-stripprefix.stripprefix.prefixes=/api"
        - "traefik.http.middlewares.resumeserver-stripprefix.stripprefix.forceslash=true"

  client:
    image: amruthpillai/reactive-resume:client-latest
    networks:
      - traefik-public
    ports:
      - 3000:3000
    depends_on:
      - server
    environment:
      - PUBLIC_URL=https://${SUBDOMAIN}.{DOMAIN}
      - PUBLIC_SERVER_URL=http://${SUBDOMAIN}.{DOMAIN}/api
      - PUBLIC_GOOGLE_CLIENT_ID=*****
    deploy:
      replicas: 1
      labels:
        - "traefik.enable=true"
        - "traefik.http.routers.${SUBDOMAIN}.rule=Host(`${SUBDOMAIN}.${DOMAIN}`)"
        - "traefik.http.routers.${SUBDOMAIN}.entrypoints=websecure"
        - "traefik.http.routers.${SUBDOMAIN}.tls=true"
        - "traefik.http.routers.${SUBDOMAIN}.tls.certresolver=letsencryptresolver"
        - "traefik.docker.network=traefik-public"
        - "traefik.http.services.${SUBDOMAIN}.loadbalancer.server.port=${PORT}"

volumes:
  pgdata:

networks:
  traefik-public:
    external: true

@VinistoisR I noticed you used https:// in the URL env. Do you have https/ssl enabled on the domain and subdomain? Otherwise, I think http:// should suffice.

yes via traefik its all ssl

but the server is setup http only as you can see from the urls

I had the same problem. When I try to log in, it would pop-up alerts.

Has anyone found a solution to this problem? I have the same problem and it only works if I use the IP address and port number, but the moment I use a reverse proxy or SSL it comes up with that message.

Hi I got the same issue, here is my compose file
version: "3"

services:
  resume-server:
    image: amruthpillai/reactive-resume:server-latest
    networks:
      - traefik
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.resume-server.rule=Host(`resume.the-machine.eu`) && PathPrefix(`/api/`)"
      - "traefik.http.routers.resume-server.tls.certresolver=le"
      - "traefik.http.middlewares.resume-server.stripprefix.prefixes=/api"
      - "traefik.http.middlewares.resume-server.stripprefix.forceslash=true"
    container_name: resume-server
    environment:
      - USER_UID=1000
      - USER_GID=1002
      - PUBLIC_URL=https://resume.the-machine.eu
#      - PUBLIC_SERVER_URL=https://resume.the-machine.eu/api
#      - PUBLIC_GOOGLE_CLIENT_ID=
      - POSTGRES_DB=db
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=pw
      - SECRET_KEY=key
      - POSTGRES_HOST=postgre
      - POSTGRES_PORT=5432
#      - POSTGRES_SSL_CERT=
      - JWT_SECRET=secret
      - JWT_EXPIRY_TIME=604800
#      - GOOGLE_CLIENT_SECRET=
#      - GOOGLE_API_KEY=
#      - MAIL_FROM_NAME=Reactive Resume
#      -<EMAIL_ADDRESS>#      - MAIL_HOST=
#      - MAIL_PORT=
#      - MAIL_USERNAME=
#      - MAIL_PASSWORD=
#      - STORAGE_BUCKET=
#      - STORAGE_REGION=
#      - STORAGE_ENDPOINT=
#      - STORAGE_URL_PREFIX=
#      - STORAGE_ACCESS_KEY=
#      - STORAGE_SECRET_KEY=
#      - PDF_DELETION_TIME=
    restart: always

  resume-client:
    image: amruthpillai/reactive-resume:client-latest
    networks:
      - traefik
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.resume-client.rule=Host(`resume.the-machine.eu`)"
      - "traefik.http.routers.resume-client.tls.certresolver=le"
    container_name: resume-client
    depends_on:
      - resume-server
    environment:
      - USER_UID=1000
      - USER_GID=1000
#      - PUBLIC_URL=https://resume.the-machine.eu
      - PUBLIC_SERVER_URL=https://resume.the-machine.eu/api
#      - PUBLIC_GOOGLE_CLIENT_ID=
    restart: always

networks:
  traefik:
    external: true

Any news on this?

I got this up and working today, seems the issue is the front end not communicating with the server. So the environmental variables for PUBLIC_URL and  PUBLIC_SERVER are critical. I have mine open to the web and routed through the reverse proxy NPM. I had to create two DNS, one for the public url and one for the public server. So something like cv.MYDOMAIN.com and cv-server.MYDOMAIN.com. I thought I could set it up where NPM routed cv.MYDOMAIN.com/api to my server on port 3100, but I couldn't get that to work. I had to have separate dns.

I got this up and working today, seems the issue is the front end not communicating with the server. So the environmental variables for PUBLIC_URL and PUBLIC_SERVER are critical. I have mine open to the web and routed through the reverse proxy NPM. I had to create two DNS, one for the public url and one for the public server. So something like cv.MYDOMAIN.com and cv-server.MYDOMAIN.com. I thought I could set it up where NPM routed cv.MYDOMAIN.com/api to my server on port 3100, but I couldn't get that to work. I had to have separate dns.

I don't know how you fixed it, but your suggested solution did not solve my problem. I made 2 different DNS as you said for the public and server URLs but to no avail. If I try to log in with my domain name it doesn't let me go through. i can only log in if change the Public server and Public URL into an IP address and port number.
The creator of the software doesn't seem to care based on the fact that many people mention almost the same problem.
In my configuration, I don't use Traefik, so I remove all the lines in my docker-compose files regarding Traefik. I want it to work first before I incorporate Traefik in my Docker compose file

I had it working no problem on my local network by using the docker-compose.yml file in the code. Make sure you start there.

@wiebereu I misread you previous reply, if you can get it working locally, then it is an issue with PUBLIC_SERVER setting most likely. Look out for the small things like http vs https. You can double check from your web browser that the server address actually brings you to the server page (it should just give you a 404 error from the api).

Hi, everyone!
I have the same issue - register button doesn't do anything, basically the front doesn't communicate with the back as has been mentioned above.
I've tried localhost, ipv4 for PUBLIC_SERVER_URL\PUBLIC_URL -- doesn't work...
Below is my compose file.
Any ideas how to make it work without traefik?
version: "3.8"

services:
  postgres:
    image: postgres:alpine
    restart: always
    hostname: postgres
    container_name: postgres
    ports:
      - 5432:5432
    volumes:
      - /docker/reactive_resume/db:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      start_period: 15s
      interval: 30s
      timeout: 30s
      retries: 3
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
      - POSTGRES_HOST=localhost

  server:
    image: amruthpillai/reactive-resume:server-latest
    restart: always
    ports:
      - 3100:3100
    depends_on:
      - postgres
    environment:
      - PUBLIC_URL=http://localhost:3000
      - PUBLIC_SERVER_URL=http://localhost:3100
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
      - SECRET_KEY=change-me-to-something-secure
      - POSTGRES_HOST=postgres
      - POSTGRES_PORT=5432
      - JWT_SECRET=change-me-to-something-secure
      - JWT_EXPIRY_TIME=604800
    volumes:
      - /docker/reactive_resume/exports:/app/server/dist/assets/exports
      - /docker/reactive_resume/uploads:/app/server/dist/assets/uploads

  client:
    image: amruthpillai/reactive-resume:client-latest
    restart: always
    ports:
      - 3000:3000
    depends_on:
      - server
    environment:
      - PUBLIC_URL=http://localhost:3000
      - PUBLIC_SERVER_URL=http://localhost:3100

Using developer tools on firefox I was able to retrieve this error object when clicking on Register button, hope it helps
{
    "stack": "F@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:195:202788\n75120/eT</</l.onerror@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:195:216955\nEventHandlerNonNull*75120/eT</<@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:195:216932\n75120/eT<@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:195:215548\neZ@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:195:219190\npromise callback*request@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:195:222623\n75120/</t/<@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:195:223211\n75120/l/<@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:195:197871\nt_@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:195:131242\nfn@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:210:6121\nu@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:210:26858\nc@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:210:27621\n56288/t.executeMutation@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:210:6059\n56288/t.execute/l<@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:210:5077\npromise callback*56288/t.execute@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:210:5052\n45523/r.mutate@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:210:35029\np@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:195:136626\n61682/tr/$/t.current<@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:195:124683\nasync*eU@https://reactive-resume.MY_DOMAIN/_next/static/chunks/framework-2bc61a9deeafa95a.js:9:14910\neH@https://reactive-resume.MY_DOMAIN/_next/static/chunks/framework-2bc61a9deeafa95a.js:9:15064\n2920/re/<@https://reactive-resume.MY_DOMAIN/_next/static/chunks/framework-2bc61a9deeafa95a.js:9:33370\nre@https://reactive-resume.MY_DOMAIN/_next/static/chunks/framework-2bc61a9deeafa95a.js:9:33469\nrn@https://reactive-resume.MY_DOMAIN/_next/static/chunks/framework-2bc61a9deeafa95a.js:9:33885\n2920/ro/<@https://reactive-resume.MY_DOMAIN/_next/static/chunks/framework-2bc61a9deeafa95a.js:9:39341\noP@https://reactive-resume.MY_DOMAIN/_next/static/chunks/framework-2bc61a9deeafa95a.js:9:96292\neF@https://reactive-resume.MY_DOMAIN/_next/static/chunks/framework-2bc61a9deeafa95a.js:9:14048\nro@https://reactive-resume.MY_DOMAIN/_next/static/chunks/framework-2bc61a9deeafa95a.js:9:35176\nnU@https://reactive-resume.MY_DOMAIN/_next/static/chunks/framework-2bc61a9deeafa95a.js:9:20845\nnD@https://reactive-resume.MY_DOMAIN/_next/static/chunks/framework-2bc61a9deeafa95a.js:9:20627\n",
    "message": "Network Error",
    "name": "AxiosError",
    "code": "ERR_NETWORK",
    "config": {
      "transitional": {
        "silentJSONParsing": true,
        "forcedJSONParsing": true,
        "clarifyTimeoutError": false
      },
      "adapter": [
        "xhr",
        "http"
      ],
      "transformRequest": [
        null
      ],
      "transformResponse": [
        null
      ],
      "timeout": 0,
      "xsrfCookieName": "XSRF-TOKEN",
      "xsrfHeaderName": "X-XSRF-TOKEN",
      "maxContentLength": -1,
      "maxBodyLength": -1,
      "env": {},
      "headers": {
        "Accept": "application/json, text/plain, */*",
        "Content-Type": "application/json",
        "Authorization": "Bearer null"
      },
      "baseURL": "http://reactive-resume-server:3100",
      "method": "post",
      "url": "/auth/register",
      "data": "{\"name\":\"dsadsa dsadsa\",\"username\":\"asd\",\"email\":\"dsadsa@asd.dsa\",\"password\":\"pingpong\"}"
    },
    "request": {}
  }

Context:
version: "3"
name: test

services:
  postgres:
    container_name: postgres
    image: postgres:15.2-alpine
    restart: always
    networks:
      private_net:
  reactive-resume-client:
    container_name: reactive-resume-client
    image: amruthpillai/reactive-resume:client-3.8.4
    restart: unless-stopped
    networks:
      - private_net
      - public_net
    environment:
      - PUBLIC_URL=http://reactive-resume-client:3000
      - PUBLIC_SERVER_URL=http://reactive-resume-server:3100
  reactive-resume-server:
    container_name: reactive-resume-server
    image: amruthpillai/reactive-resume:server-3.8.4
    restart: unless-stopped
    depends_on:
      - postgres
    networks:
      - private_net
    environment:
      - PUBLIC_URL=http://reactive-resume-client:3000
      - PUBLIC_SERVER_URL=http://reactive-resume-server:3100
      - POSTGRES_DB=*
      - POSTGRES_USER=*
      - POSTGRES_PASSWORD=*
      - SECRET_KEY=*
      - POSTGRES_HOST=*
      - POSTGRES_PORT=5432
      - JWT_SECRET=*
      - JWT_EXPIRY_TIME=604800
      - MAIL_FROM_NAME=Reactive Resume
      -<EMAIL_ADDRESS>      - MAIL_HOST=*
      - MAIL_PORT=*
      - MAIL_USERNAME=*
      - MAIL_PASSWORD=*
  traefik:
    container_name: traefik
    image: traefik:3.0
    restart: always
    networks:
      - private_net
      - public_net
    ports:
      - mode: host
        protocol: tcp
        published: 80
        target: 80
      - mode: host
        protocol: tcp
        published: 443
        target: 443

Using developer tools on firefox I was able to retrieve this error object when clicking on Register button, hope it helps

{

    "stack": "F@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:195:202788\n75120/eT</</l.onerror@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:195:216955\nEventHandlerNonNull*75120/eT</<@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:195:216932\n75120/eT<@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:195:215548\neZ@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:195:219190\npromise callback*request@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:195:222623\n75120/</t/<@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:195:223211\n75120/l/<@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:195:197871\nt_@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:195:131242\nfn@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:210:6121\nu@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:210:26858\nc@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:210:27621\n56288/t.executeMutation@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:210:6059\n56288/t.execute/l<@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:210:5077\npromise callback*56288/t.execute@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:210:5052\n45523/r.mutate@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:210:35029\np@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:195:136626\n61682/tr/$/t.current<@https://reactive-resume.MY_DOMAIN/_next/static/chunks/pages/_app-f31e2bb922f3d062.js:195:124683\nasync*eU@https://reactive-resume.MY_DOMAIN/_next/static/chunks/framework-2bc61a9deeafa95a.js:9:14910\neH@https://reactive-resume.MY_DOMAIN/_next/static/chunks/framework-2bc61a9deeafa95a.js:9:15064\n2920/re/<@https://reactive-resume.MY_DOMAIN/_next/static/chunks/framework-2bc61a9deeafa95a.js:9:33370\nre@https://reactive-resume.MY_DOMAIN/_next/static/chunks/framework-2bc61a9deeafa95a.js:9:33469\nrn@https://reactive-resume.MY_DOMAIN/_next/static/chunks/framework-2bc61a9deeafa95a.js:9:33885\n2920/ro/<@https://reactive-resume.MY_DOMAIN/_next/static/chunks/framework-2bc61a9deeafa95a.js:9:39341\noP@https://reactive-resume.MY_DOMAIN/_next/static/chunks/framework-2bc61a9deeafa95a.js:9:96292\neF@https://reactive-resume.MY_DOMAIN/_next/static/chunks/framework-2bc61a9deeafa95a.js:9:14048\nro@https://reactive-resume.MY_DOMAIN/_next/static/chunks/framework-2bc61a9deeafa95a.js:9:35176\nnU@https://reactive-resume.MY_DOMAIN/_next/static/chunks/framework-2bc61a9deeafa95a.js:9:20845\nnD@https://reactive-resume.MY_DOMAIN/_next/static/chunks/framework-2bc61a9deeafa95a.js:9:20627\n",

    "message": "Network Error",

    "name": "AxiosError",

    "code": "ERR_NETWORK",

    "config": {

      "transitional": {

        "silentJSONParsing": true,

        "forcedJSONParsing": true,

        "clarifyTimeoutError": false

      },

      "adapter": [

        "xhr",

        "http"

      ],

      "transformRequest": [

        null

      ],

      "transformResponse": [

        null

      ],

      "timeout": 0,

      "xsrfCookieName": "XSRF-TOKEN",

      "xsrfHeaderName": "X-XSRF-TOKEN",

      "maxContentLength": -1,

      "maxBodyLength": -1,

      "env": {},

      "headers": {

        "Accept": "application/json, text/plain, */*",

        "Content-Type": "application/json",

        "Authorization": "Bearer null"

      },

      "baseURL": "http://reactive-resume-server:3100",

      "method": "post",

      "url": "/auth/register",

      "data": "{\"name\":\"dsadsa dsadsa\",\"username\":\"asd\",\"email\":\"dsadsa@asd.dsa\",\"password\":\"pingpong\"}"

    },

    "request": {}

  }

Context:

version: "3"

name: test

services:

  postgres:

    container_name: postgres

    image: postgres:15.2-alpine

    restart: always

    networks:

      private_net:

  reactive-resume-client:

    container_name: reactive-resume-client

    image: amruthpillai/reactive-resume:client-3.8.4

    restart: unless-stopped

    networks:

      - private_net

      - public_net

    environment:

      - PUBLIC_URL=http://reactive-resume-client:3000

      - PUBLIC_SERVER_URL=http://reactive-resume-server:3100

  reactive-resume-server:

    container_name: reactive-resume-server

    image: amruthpillai/reactive-resume:server-3.8.4

    restart: unless-stopped

    depends_on:

      - postgres

    networks:

      - private_net

    environment:

      - PUBLIC_URL=http://reactive-resume-client:3000

      - PUBLIC_SERVER_URL=http://reactive-resume-server:3100

      - POSTGRES_DB=*

      - POSTGRES_USER=*

      - POSTGRES_PASSWORD=*

      - SECRET_KEY=*

      - POSTGRES_HOST=*

      - POSTGRES_PORT=5432

      - JWT_SECRET=*

      - JWT_EXPIRY_TIME=604800

      - MAIL_FROM_NAME=Reactive Resume

      -<EMAIL_ADDRESS>
      - MAIL_HOST=*

      - MAIL_PORT=*

      - MAIL_USERNAME=*

      - MAIL_PASSWORD=*

  traefik:

    container_name: traefik

    image: traefik:3.0

    restart: always

    networks:

      - private_net

      - public_net

    ports:

      - mode: host

        protocol: tcp

        published: 80

        target: 80

      - mode: host

        protocol: tcp

        published: 443

        target: 443

You retrieve the error but what is the solution?

@wiebereu I don't have the solution but I thought the error might be useful for the developer to figure out a solution

I give it up, because I know for sure that my settings are correct, but the developer for some reason restrict the use of his app behind a reverse proxy. I found a better solution and that is Sharelatex-Overleaf. If gave me all the things I need. You have cloud version, which you can simply log in on their website or you can use the container which you can find on Github.


feat: AsyncBulkCreateMixin added (fixes #259)

Bulk creation mixin added as proposed by @legau in #259.

Hello @markdoerr
In #259 Léni showed you an example of the code to implement it directly in your code app. As DRF do not have a BulkCreate mixins we are not implementing it directly in DSG. It could be in the how to of the doc or maybe in the futures in a specific dsg-mixins repo.


Wurst Manual "Standard Lib" navbar link leads to Jenkins login

If you navigate here:
http://peq.github.io/WurstScript/manual.html
And click the Standard Lib link in the navbar:
http://peeeq.de/hudson/job/Wurst/HotDoc_Standard_Library_Documentation/index.html
You get:
http://peeeq.de/hudson/login?from=%2Fhudson%2Fjob%2FWurst%2FHotDoc_Standard_Library_Documentation%2Findex.html

Should be fixed, but the generated documentation is still not very helpful.


crash

i tried to load with only 2 mods "fabric-api-0.76.1+1.19.3" and "show-me-your-skin-1.3.7+1.19.3" but it crashes everytime i join the game using TLauncher
here's the log:
latest.log

and here's the crash report
crash-2023-05-27_19.22.09-client.txt

please help

Pirated launchers are not supported, please buy the game and use a proper launcher if possible.

somehow after you replied its working again, tysm


Refactor: useTitle maching function in jsonifyResult

Detail
I've done refactoring jsonifyResult function as follows:

Refactor  the functions when TESTRAIL_TITLE_MATCHING environment is setted:

When TESTRAIL_TITLE_MATCHING is "true"

match assertions that includes newman execution results with test case titles on TestRail

Example

(Normal Behavior)

Newman assertion Name C1 HogeTest is matched with test case id1: FugaTestCase  on TestRail

(If TESTRAIL_TITLE_MATCHING is true)

Newman Assertion Name HogeTest is matched with test case id1: HogeTest on TestRail

User don't have to include test case id in assertion titles on newman executions

I created a class which is named NewmanResultModifier

This classe is responsible for changing newman execution results if needed

In the end, I reduce lines from jsonifyResult , divided responsibilities into classes with clearer behavior and improving testability

Confirmed

I've done system test on my TestRail
Confirmed points are as follows:

[x] Check TESTRAIL_TITLE_MATCHING isn't setted (default false)
[x] Check TESTRAIL_TITLE_MATCHING is setted

User can match TestRail test case by using tittle name
Please refer to the ./test/systemTest/useTitle.json

Codecov Report
Attention: Patch coverage is 97.82609% with 1 line in your changes missing coverage. Please review.

Project coverage is 82.80%. Comparing base (b409a4e) to head (e0bcf5c).

Files with missing lines
Patch %
Lines

lib/TestrailReporter.js
93.33%
1 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #28      +/-   ##
==========================================
- Coverage   83.08%   82.80%   -0.29%
==========================================
  Files           5        6       +1
  Lines         479      500      +21
  Branches      105      113       +8
==========================================
+ Hits          398      414      +16
- Misses         78       83       +5
  Partials        3        3

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Performance Fix

unsetting a non-existing rule doesn't throw an error.
In our Project this change improves loading time from 55 sec to 0.5 sec
(14412 Resources, 11694 Rules)
see also
https://github.com/zendframework/zf1/pull/737

Thanks, @schrankenstein!


Split transaction implementation

This PR adds a new flag to pachctl delete pipeline and pachctl delete repo called --split-txn that splits the large transactions that can get created with these operations into multiple smaller ones. This flag should only be used as a fallback when a pipeline / repo cannot be deleted because of how large it is. This operation needs to be run to completion and retried upon failure or else Pachyderm can be left in an inconsistent state. This flag is not available through pachctl delete all, so for that case the user will want to use pachctl delete pipeline --all --split-txn and / or pachctl delete repo --all --split-txn followed by pachctl delete all.

Could we add messaging to this command which is printed out when the command is being run? Ideally, something to let the user know that this may take time + if it fails, please re-run it. Similar messaging should prompt the user to rerun the command if the command has failed.


Make tangent normalization more robust

Tangent normalization consists of projecting a case sample onto the reduced PoN (to get the coverage signal in the absence of CNVs) and subtracting off this projection.  One small glitch of this is that this projection represents a compromise between targets without CNVs and targets with CNVs.  If duplications and deletions are balanced this doesn't pose much of a problem, but if there is an imbalance due to large events the projection will contain a significant amount of CNV signal.  Thus, for example, if there is a large deletion the projection will try to match this deletion and the resulting tangent normalized signal will show lines of low-level amplification.  This problem will become more severe when we try to model purity, ploidy, and subclonality.
The problem arises because projection minimizes the L2 error -- the sum of squared errors between the projection and the hyperplane defined by the reduced PoN.  Since this error is convex it penalizes large errors disproportionately.  That is, it will try to hard to make the projection match any CNVs present.  This is the opposite of what we want!  A concave error , such as L_1/2 would try to minimize small errors, thereby yielding a "projection" that weighs non-CNV targets most heavily.
Such a minimization objective is hard to handle, but here's a simple idea to handle it without difficulty.  First, project as usual to get a vector v.  We know that unbalanced CNVs skew the signal by giving an incorrect relative depth for non-CNV sites, so we expect that the correct projection is v times a scalar constant x.  Thus we only really have to do a 1-D brute force minimization of the L_1/2 error with respect to x.  After that tangent normalization would consist of subtracting x*v.

Actually, an L_1/2 error is silly because the derivative of the square root is infinite at zero so you'll get stuck in local minima.  Something differentiable and sublinear, like tanh or a sigmoid, is a better idea.

Now that we can get the per-target variances from the PoN, a simpler approach would be to exclude targets that are anomalously far from the PoN mean.

Now that we can get the per-target variances from the PoN, a simpler approach would be to exclude targets that are anomalously far from the PoN mean.

Subsumed under issue #429.


[$250] Settings - Payment options are overlapping with Add Payment Method under Settings

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:

Log in to NewDot with any account
Go Setting - Payments
Tap on the middle "Add Payment Method"

Expected Result:
Payment options are not overlapping with Add Payment Method under Settings
Actual Result:
Payment options are overlapping with Add Payment Method under Settings
Workaround:
Visual
Platform:

Where is this issue occurring?

Web
Desktop App

Version Number: <IP_ADDRESS>
Reproducible in staging?: Y
Reproducible in production?: Y
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos:

https://user-images.githubusercontent.com/43996225/171507737-2ce1c6f5-63dc-496b-86a9-c8543dca8528.mp4
Expensify/Expensify Issue URL:
Issue reported by: Applause internal team
Slack conversation:
View all open jobs on GitHub

Job post: https://www.upwork.com/jobs/~014470d4b94fc99a28

Proposal
Problem
We're using event.target.getBoundingClientRect to get the placement position of the dropdown. The target can be any child of the element to which the listener is attached. As such, we're getting incorrect positions.
Solution
We should use event.currentTarget.getBoundingClientRect instead to get the correct element position.
The following changes:
https://github.com/allroundexperts/Expensify/blob/1b74843140f609fa8900d754148fa9e9e7009176/src/libs/getClickedElementLocation/index.js#L8
To
    return nativeEvent.currentTarget.getBoundingClientRect();

Result
https://user-images.githubusercontent.com/30054992/171672913-23d7aa42-3b2d-4cb8-90a2-f5e9fbdb7392.mov

Proposal
To keep the position of the menu when resizing the window.

Add styles.pointerEventsNone to container of childrens inside the . Line 198
https://github.com/Expensify/App/blob/d2f9d6124a50b8420ce1378a2a3c9422df691c18/src/components/Button.js#L198

<View style={[styles.justifyContentBetween, styles.flexRow, styles.pointerEventsNone]}>
....
</View>

Preview

Without window resize & with window resize

https://user-images.githubusercontent.com/5449119/171684157-3dd3ec74-2775-4913-8765-bdad9051a1b8.mp4

Hey @mananjadhav , maybe you are wrong, by adding styles.pointerEventsNone in the renderContent which renders inside the Button it won't affect any cursor options for the Button itself.
https://github.com/Expensify/App/blob/72aac1c027fa8ff20ba2aa966680a5afda4dab2c/src/components/Button.js#L272
However, the Button is wrapped by Pressable and OpacityView, see:
https://github.com/Expensify/App/blob/72aac1c027fa8ff20ba2aa966680a5afda4dab2c/src/components/Button.js#L230
https://github.com/Expensify/App/blob/72aac1c027fa8ff20ba2aa966680a5afda4dab2c/src/components/Button.js#L252
Sorry but the proposal of @allroundexperts only gets the position of Button once. It will cause an issue that I fixed before when the user resizes the window width of the browser, see:
Issue: https://github.com/Expensify/App/issues/7385
Fixed by: https://github.com/Expensify/App/pull/7847 & https://github.com/Expensify/App/pull/7566

@phivh This isn't the root of the problem. The root is a wrong usage of target. Also, I'm not sure how this will effect the fix you made.

Proposal
Problem
As shared by @allroundexperts the root cause of this is the use of target instead of currentTarget in the function getClickedElementLocation method call.
event.currentTarget tells us on which element the event was attached or the element whose eventListener triggered the event whereas event.target tells where the event started.
However, there are two problems with @allroundexperts' solution:

setMenuPosition registered at Dimensions.addEventListener('change', this.setMenuPosition) throws an error when the browser is resized:

It doesn't handle the resize event of the browser - meaning, if the payment method pop-up is visible and the browser is resized, the pop-up stays in the same place.

Solution
The fix for this issue is a two part solution:

To store the current target from the native event inside the state for later use
A new folder for getClickedTargetLocation which takes care of the web and native platforms and returns the getBoundingClientRect from the passed target stored in step 1.

paymentMethodPressed(nativeEvent, accountType, account, isDefault) {
   // ++ Changes starts
    const position = getClickedTargetLocation(nativeEvent.currentTarget);

    this.setState({
        addPaymentMethodNativeEventCurrentTarget: nativeEvent.currentTarget,
        addPaymentMethodButton: nativeEvent,
    });
   // ++ Changes Ends

    if (accountType) {
        let formattedSelectedPaymentMethod;
        if (accountType === CONST.PAYMENT_METHODS.PAYPAL) {
            formattedSelectedPaymentMethod = {
                title: 'PayPal.me',
                icon: account.icon,
                description: account.username,
                type: CONST.PAYMENT_METHODS.PAYPAL,
            };
        } else if (accountType === CONST.PAYMENT_METHODS.BANK_ACCOUNT) {
            formattedSelectedPaymentMethod = {
                title: account.addressName,
                icon: account.icon,
                description: `${this.props.translate('paymentMethodList.accountLastFour')} ${account.accountNumber.slice(-4)}`,
                type: CONST.PAYMENT_METHODS.BANK_ACCOUNT,
            };
        } else if (accountType === CONST.PAYMENT_METHODS.DEBIT_CARD) {
            formattedSelectedPaymentMethod = {
                title: account.addressName,
                icon: account.icon,
                description: `${this.props.translate('paymentMethodList.cardLastFour')} ${account.cardNumber.slice(-4)}`,
                type: CONST.PAYMENT_METHODS.DEBIT_CARD,
            };
        }
        this.setState({
            isSelectedPaymentMethodDefault: isDefault,
            shouldShowDefaultDeleteMenu: true,
            selectedPaymentMethod: account,
            selectedPaymentMethodType: accountType,
            formattedSelectedPaymentMethod,
        });
        this.setPositionAddPaymentMenu(position);
        return;
    }
    this.setState({
        shouldShowAddPaymentMenu: true,
    });

    this.setPositionAddPaymentMenu(position);
}

And change the setMenuPosition function as below:
setMenuPosition() {
        if (!this.state.addPaymentMethodNativeEventCurrentTarget) {
            return;
        }
        const buttonPosition = getClickedTargetLocation(this.state.addPaymentMethodNativeEventCurrentTarget);
        this.setPositionAddPaymentMenu(buttonPosition);
    }

I also set the addPaymentMethodNativeEventCurrentTarget to null when the pop-up is dismissed:
hideAddPaymentMenu() {
        this.setState({
            addPaymentMethodNativeEventCurrentTarget: null,
            shouldShowAddPaymentMenu: false
        });
    }

Attached is the screencast (with voice) showing the issue with browser resize and the applied fix:
https://user-images.githubusercontent.com/911879/172020231-a1fb0629-6387-4752-b23c-8b6a2c50aa5e.mp4
@mananjadhav kindly review my proposal.
Thank you!

Apparently the screencast uploaded in the previous message doesn't seem to play. You may view it here: https://www.veed.io/view/3dda4edd-5079-4314-8683-1386e373ac05

The browser resize issue exists with the original implementation as well. No where in the ticket, was it mentioned that responsiveness needs to be fixed.The ticket and the video posted, mention the issue which was fixed in my PR.

Sure, no offence please @allroundexperts.
Your did still introduce the javascript error as shared in my proposal and so I opted to propose a new solution. Cheers :)

@liyamahendra Thanks for pointing out the error. We can easily fix it by changing the getClickedElementLocation to:
function getClickedElementLocation(nativeEvent) {
    return (nativeEvent.currentTarget || nativeEvent.target).getBoundingClientRect();
}
```. I've updated my proposal to handle that as well.

The browser resize issue exists with the original implementation as well. No where in the ticket, was it mentioned that responsiveness needs to be fixed. The ticket and the video posted, mention the issue which was fixed in my PR.

I was wrong here. The original version WAS responsive. It was my change which introduced the bug that @liyamahendra pointed out. I've updated my proposal to handle that bug. I still feel like my solution is more simpler and to the point.

Just catching up as there is a lot of back and forth and I'm not sure if I understand the root cause.

@allroundexperts's proposal looks good to me. I can see this isn't used at other places except for KYCWall within the Payments Screen. @marcaaron What are your thoughts?

One question I have about this solution is that we are not being very specific about the html element we are targeting and why we are targeting it. Why would we use target sometimes and currentTarget other times and not one or the other? More explanation is needed.
@phivh I'm also not getting where we are disabling pointer events and why it resolves the issue. Can you give some explanation?
@mananjadhav Please ask more clarifying questions before accepting a proposal.

@marcaaron did you have a chance to review my proposal? Would love to hear your comments please!

Just catching up as there is a lot of back and forth and I'm not sure if I understand the root cause.

@allroundexperts's proposal looks good to me. I can see this isn't used at other places except for KYCWall within the Payments Screen. @marcaaron What are your thoughts?

One question I have about this solution is that we are not being very specific about the html element we are targeting and why we are targeting it. Why would we use target sometimes and currentTarget other times and not one or the other? More explanation is needed.
@phivh I'm also not getting where we are disabling pointer events and why it resolves the issue. Can you give some explanation?
@mananjadhav Please ask more clarifying questions before accepting a proposal.

@marcaaron We're using target only when currentTarget is undefined. This is to handle the case that @liyamahendra pointed out.

@marcaaron I'll explain why we need to use currentTarget and not target to address the root cause of this issue.
The "Add payment method" is a composite control (if I may say so) consisting of the text label wrapped inside a Button. This issue specifically occurs when the click is on the text of the button. If the click is anywhere in the green background, the issue doesn't occur. This can be seen from the below screencast:
https://user-images.githubusercontent.com/911879/172217470-6356d94d-a499-43a7-8e59-14de0dfaaef6.mp4
Now, the click event handler is attached to the button and not to the text.  event.currentTarget tells us on which element the event was attached or the element whose eventListener triggered the event whereas event.target tells where the event started.
The code was earlier using nativeEvent.target which makes it clear that if you click on the text of the button, the event started from the text and so the pop-up would be positioned below the text label, which is what is happening. Since we need to show the pop-up below the button, we need to use the currentTarget which is where the event is attached.
BTW, my solution only uses currrentTarget.

I see that the screencast showing the issue and my fix which I uploaded on a 3rd party service is no longer available today. Uploading the screencast on YouTube. Here is the link to it: https://www.youtube.com/watch?v=PmpMYSfhKuQ
@marcaaron @mananjadhav please share your comments and review my proposal! Thank you!

Will review the new comments/questions and update them here.

waiting for @mananjadhav

@mananjadhav can you help us move this along? Thanks.

@liyamahendra I understand that we might have to use currentTarget. Overall your proposal looks good but I have a few questions on your proposal before we finalize.

What does the body of getClickedTargetLocation look like for web and native. Can you share that please?
Are you suggesting we discard getClickedElementLocation? and use only getClickedTargetLocation?
getClickedElementLocation is also used in BaseKYCWall, so I am assuming we will also have to update that component as it might have the same problem?
I can see addPaymentMethodButton in the state is used for the purpose of finding the position. Do we still need it after your proposed change of adding  addPaymentMethodNativeEventCurrentTarget. Can we just retain addPaymentMethodButton state with your new variable's value?

Thank you for your time and sorry for the delay.

Thank you @mananjadhav for getting back on this!

New folder src/libs/getClickedTargetLocation with below two files (one for web & another one for native):

index.js
/**
 * Returns the Bounding Rectangle for the passed native event's target.
 *
 * @param {Object} target
 * @returns {Object}
 */
function getClickedTargetLocation(target) {
    return target.getBoundingClientRect();
}

export default getClickedTargetLocation;

index.native.js
/**
 * We don't need to get the position of the element on native platforms because the popover will be bottom mounted
 *
 * @returns {Object}
 */
function getClickedTargetLocation() {
    return {
        bottom: 0,
        left: 0,
    };
}

export default getClickedTargetLocation;

Yes because getClickedElementLocation ins't used inside BasePaymentsPage screen anywhere else.
Would you please share insights into how can I test BaseKYCWall. Then, I'll make sure I update getClickedElementLocation as required.
Ideally, if we go ahead with my changes, addPaymentMethodButton won't be required. Can be safely removed from state.

Please let me know your comments!

@mananjadhav Whats wrong with my proposal?

Thanks for the clarifying comments @liyamahendra. I am fine with your proposal but I feel we're making too many unwanted changes.  We can retain getClickedElementLocation and change the parameter to target as your function describes. Secondly, we simplify the BasePaymentsPage with just these changes as discussed in the above comments.
       const position = getClickedElementLocation(nativeEvent.currentTarget);
        this.setState({
            addPaymentMethodButton: nativeEvent.currentTarget,
        });

What I am recommending is, instead of removing all current variables and adding functions, lets reuse the current ones and update the body/value wherever required.
@marcaaron I feel @liyamahendra's proposal is good to go. Let me know your thoughts.

Whats wrong with my proposal?

@allroundexperts Having currentTarget || target condition will lead to unexpected behaviour. Additionally, if you try the solution you'll see it breaks when resizing. Because we don't have the reference to currentTarget all the time, it picks target and ends up repositioning the menu. Attached is the video applied with your fix.
https://user-images.githubusercontent.com/3069065/173933364-300ce7b6-9ca2-4ac8-80f9-ba4c1c93258f.mov

@marcaaron I am reviewing this proposal for the issue  where we're trying to get the "Add Payment Method" outside the flat list. If we were to do that, we might not need this issue to be fixed. The button will be docked at the button and the Popovermenu will always open above like the "IOU Payment" button.

Good call @mananjadhav. Let's move the discussion to one issue. There is also this https://github.com/Expensify/App/issues/7375 issue where we are trying to fix the popover for Native devices, especially for Tablets.
But I think https://github.com/Expensify/App/issues/7375 is good as a separate issue it needs a few unrelated changes.

@parasharrajat @mananjadhav There is another issue which effecting the Add Payment Method and Delete button. Do you want us to create separate issue ?
https://user-images.githubusercontent.com/93399543/174348206-c9360efe-fdc7-46ae-a912-163d9b726b42.mp4

@mananjadhav and @parasharrajat I see https://github.com/Expensify/App/issues/7375 issue mentions about https://github.com/Expensify/App/issues/9283 and vice versa.

@marcaaron I feel @liyamahendra's proposal is good to go. Let me know your thoughts.

Since @mananjadhav reviewed my proposal to this issue, just wanted to check the status here. @marcaaron Do we plan to fix this or just close it?

@liyamahendra Lets wait, I've been testing the other proposal and it seems the issue of the overlap still exists even if we push the button on the bottom. So we might be able to solve them separately.

@marcaaron Can you help us with the way forward?

@parasharrajat @mananjadhav There is another issue which effecting the Add Payment Method and Delete button. Do you want us to create separate issue ?

@kbecciv I am guessing the issue is that when the "Add Payments" popup is open, it doesn't show the "Delete Payment" on the first click. If thats the issue then yeah it would be separate issue.

@mananjadhav "Delete payment" does show on the first click. Its about the overlapping of "Delete"

https://user-images.githubusercontent.com/43996225/174644319-0d84e81f-372c-4c7b-9832-58915a26f153.mp4
button on "add payment" button. Attaching video and screenshot.

Yeah this won't be a problem if the "Add Payment" button is moved to the bottom in #8929

@marcaaron The issue still exists even if we move the button to the bottom. @liyamahendra's proposal is good to go with the feedback https://github.com/Expensify/App/issues/9283#issuecomment-1156966917 here.

@marcaaron @mananjadhav Please let me know if you guys would like me to raise a PR.

@liyamahendra Please wait for the proposal to be accepted and to be hired (atleast here on GH). You can then start with the PR. Thank you for your patience.

@liyamahendra Can you please summarize in a new comment the complete proposal?

Perfect, thanks!

@marcaaron I have applied for the job on Upwork. Have created the PR here

Gladly! :) Adding the reviewing label as there's a PR up for this.

👋 @liyamahendra can we get a status update on the linked PR please? What's left to do and when do you expect to be able to get it over the line? Thanks!

I think @mananjadhav gave his clearance here. There were a couple of comments after that from @marcaaron which were resolved as well.
Maybe @mananjadhav or @marcaaron can provide a status update if there is anything pending.

Bump @mananjadhav & @marcaaron shouldn't this PR be merged by now? 🤔

@marcaaron Wanted to check something before we merge this. If there's any changes based on his feedback, @liyamahendra and I would take this up.

Sorry, I'm not sure what is needed from me. What is it exactly that you wanted to check?

Seems like we are waiting for @liyamahendra to request another review.

I think we probably must consider this abandoned? It's been a month without an update.

Seems like we are waiting for @liyamahendra to request another review.

@marcaaron sorry, I'm not aware what are we waiting for here from me. Happy to do the needful if you please let me know. Thanks

@marcaaron I had reviewed the PR and approved. Waiting for your final approval.

@mananjadhav will you review the changes again?

My expectations here are that @liyamahendra will let us know when the PR is ready for re-review and that @mananjadhav responds to the review request. So, that's what I've been waiting for :)

@marcaaron the PR is ready for review. @mananjadhav please do the needful!

I'll do that today.

Issue not reproducible during KI retests. (First week)

@trjExpensify Quick bump on Upwork payment.

Yep, I've been OOO. Sorry! So looking at the Upwork job, we've already settled up with @liyamahendra a while back. @NicMendonca might have some insight into that, but seems like we're settled:

As for C+ payment @mananjadhav, I've settled up with you.
Going to close this out, but @liyamahendra of course reopen if I didn't get something right here.


Doesn't Log Raid Loot

Raid loot is shown as "Special Loot" in the chat box doesn't come up at valuable or collection log message. Therefore it does not get logged. Could this please get a new option for "Special Loot"
Thanks!

Added this in for version 1.1, will need some testing though to confirm it works :)


Add support for yang-lsp

yang-lsp
I hope I've done everything right!
One thing I did hesitate over: I've gone with just ale-yang-lsp etc where perhaps the consistent thing would be to spell out the filetype and the linter both in full - giving ale-yang-yang-lsp etc.  But that stutter seemed pretty ugly to me, so that's why I made the choice that I did.  Happy to change if that's preferred.
(This particular language server will be more useful if and when theia-ide/yang-lsp#140 is fixed, allowing us to benefit from going to definitions, finding references, etc.  Meanwhile we still get linting via publishDiagnostics so it's not nothing).

Cheers! :beers:


Changed .run() callback signature to (err, resp)

Changed signature of .run() callback to match the recent PR to match to node-style callback.

Thanks!


Add pipeline and/or service name for deploys

More of a new feature but the ability to specify a service name for a deploy or the ability to do pipeline deploys would be great!  for a deploy by name it would just take a name arg like
with:
            command: deploy
            app: app
            env: test
            name: webserver

Included service name and tag parameters.