methylglyoxal catabolic process (for slimming)

could this have the parent GO:1990748 cellular detoxification
(methylglyoxol is a toxic by-product of glycolysis)
GO:0051596 methylglyoxal catabolic process

Hi Val,
If this is always the case then I am tempted to rename the term 'cellular detoxification of methylglyoxal'. In this case 'catabolic process' seems to refer to the MF rather than to a biologically meaningful process.
There are about 30-40 EXP annotations; as far as I can tell these are all involved in the removal of methylglyoxal.
Groups with annotations:
ecocyc
TAIR @tberardini
uniprot
CGD
SGD
If it's OK with everyone I'll rename the term and change the definition to
"The chemical reactions and pathways resulting in the breakdown of methylglyoxal, CH3-CO-CHO, the aldehyde of pyruvic acid, to reduce or remove its toxicity."
Thanks, Pascale

I agree, I was going to suggest something along these lines.
There are a number of  "detoxification" pathways where the annotations do not map to  the slims ('catabolism' and  plain 'metabolism'  are too general to be useful as slim classifiers where the aim is to group into biologically relevant categories, they include too many disparate processes).
We included "detoxification" in the PomBase slim fairly recently  to pull  in a number of unslimmed gene products.
http://preview.pombase.org/browse-curation/fission-yeast-go-slim-terms
we still have 123 fission genes which do not slim, but are biological process are annotated. A number of these are in detoxification pathways. There are indications that many of the "unknown" process genes will also be "detoxification".
I guess the danger is that some of these metabolites turn out to have a role in some species,  but I agree that "catabolism" is really only describing the  function in a process-y way. I don't see any reason not to rename/redefine if it fits the existing annotation and others agree.

although we probably still want these processes classified as "catabolism" for other purposes.
I have used catabolism and anabolism/biosynthesis  come up in enrichments if you are looking at intersections with  viable or inviable  phenotypes and other orhtogonal classifiers which could be biologically useful, so I think maybe they still need a catabolism parentage...

Hello again,
I will create a new term 'cellular detoxification of methylglyoxal' as a child of 'methylglyoxal catabolic process' then. People can move their annotations to the more precise term if they want.
OK ?
Thanks, Pascale

yep!

Since the original term, 'methylglyoxal catabolic process', was left in place, I did not move the TAIR annotation.


maxicode uszeropad

code128: Avoid extraneous CodeC switch   Avoid extraneous CodeC switch (with immediate switch back to   CodeA/B) by re-checking digit runlength >= 4 after enca/encb push
maxicode: Zero-pad US postcodes that lack "+4" (Annex B.1.4a)   Adapted from OkapiBarcode, with stricter interpretation (only pad   if "+4" totally absent), props Daniel Gredler

@gitlost Was this closed in error, or are you reworking it?

My local master was out of sync so just fixed it up (I think) and pushed
again!
On Wed, Oct 9, 2024 at 5:53 PM Terry Burton @.***>
wrote:

@gitlost https://github.com/gitlost Was this closed in error, or are
you reworking it?
—
Reply to this email directly, view it on GitHub
https://github.com/bwipp/postscriptbarcode/pull/273#issuecomment-2402833255,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AADVVPTS7DKTBFAR5LIDXUTZ2VNO5AVCNFSM6AAAAABPU6AGNCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIMBSHAZTGMRVGU
.
You are receiving this because you were mentioned.Message ID:
@.***>

I hadn't no, just checked them out now.
Good cases, zint fails on the 1st one (FNC4), same as bwipp, as both use 5 chars as the non-terminal cut-off. A simple fix for that could be lower the cut-off to 4 - will check it out.
zint passes the 2 middle cases which bwipp fails, and both pass the last one.
Will have a look and let you know if I make headway (hopefully avoiding the usual whack-a-mole issues).


GMM-HMM class

[x] Use niw_posterior_update instead of closed form update for the parameters
[x] Add a test for GMMHMM
[x] Add KMeans initialization
[x] Use the kmeans_plus_plus from sklearn instead
[x] Add a test case for the initialization by kmeans_plus_plus

For now, it is better to not consider KMeans and KMeans++ initialization functions. I will update them once all GMM HMMs are done :)

LGTM. Can we add more rigorous tests, eg compare to hmm_learn, or compare to static GMM?


[Request] Remove or freeze RSSVE

I have been getting bug reports from users that are installing RSSVE via CKAN. I would like to request either a complete removal or a temporary freeze of the metadata (so it is not accessible) until a non-dev version is released (currently RSSVE is still in a "release candidate" state, meaning it does not have a proper package release).
Thank you for your time.

Try checking the "This is a pre-release" box when creating the releases on Github. CKAN should ignore such releases.

Done, sorry for the inconvenience

@HebaruSan Unfortunately i am not the one that manages the metadata. Someone went and added it, even if had explicitly stated that it should not be, for the time being, on CKAN.
@Olympic1 Thank you!

@PhineasFreak , I'm not referring to metadata. I mean the releases created on the repository on your GitHub account. When you create/edit them, there's a checkbox "This is a pre-release" that can be used to keep that release out of CKAN, even if someone else adds it without your permission:

Glad it's sorted now, though!

He is releasing them as pre-release's. This is the latest release:

https://github.com/PhineasFreak/RSSVE/releases

Sorry, my mistake. I thought I checked that.
I take it the "workaround" was to directly include the download field in the .netkan?

yes


Hello World example from doc not working

Environment
 Working directory: /home/projects/owaivrkzl.github
[11:24:56] Nuxt project info:

------------------------------
- Operating System: Linux
- Node Version:     v18.18.0
- Nuxt Version:     3.11.1
- CLI Version:      3.11.1
- Nitro Version:    2.9.4
- Package Manager<EMAIL_ADDRESS>- Builder:          -
- User Config:      -
- Runtime Modules:  -
- Build Modules:    -

Reproduction
https://nuxt.com/docs/examples/hello-world
https://owaivrkzlgithub-mzhb--3000--810981ba.local.webcontainer.io
Describe the bug
The project doesn't build.

Additional context
I noticed the nuxt.config its not present
Logs
[nuxt] [request error] [unhandled] [500] Cannot read properties of undefined (reading 'on')
  at new BroadcastChannel (https://owaivrkzlgithub-mzhb.w-staticblitz.com/blitz.810981ba.js:65:5652)
  at Module.initAppSeparateWindow (./node_modules/@vue/devtools-core/dist/index.js:711:19)
  at eval (./node_modules/@nuxt/devtools/dist/runtime/vue-devtools/overlay.mjs:8:23)
  at async ViteNodeRunner.runModule (./node_modules/vite-node/dist/client.mjs:379:5)
  at async ViteNodeRunner.directRequest (./node_modules/vite-node/dist/client.mjs:363:5)
  at async ViteNodeRunner.cachedRequest (./node_modules/vite-node/dist/client.mjs:206:14)
  at async ViteNodeRunner.dependencyRequest (./node_modules/vite-node/dist/client.mjs:250:12)

let's track in https://github.com/nuxt/devtools/issues/629 - it's a devtools issue.


Fix Chroma line highlight style

This PR proposes to fix the typo of the class for the line highlight: .hl → .hll (I've checked the other classes and they seem OK).
:information_source: Nice to know, it is possible to retrieve the list of classes (and meaning) by executing hugo gen chromastyles > chroma.css ; cat chroma.css
The following examples can be reproduced by integrating the following code in one of our Markdown pages:
{{< highlight go "linenos=table,hl_lines=8 15-17,linenostart=199" >}}
// GetTitleFunc returns a func that can be used to transform a string to
// title case.
//
// The supported styles are
//
// - "Go" (strings.Title)
// - "AP" (see https://www.apstylebook.com/)
// - "Chicago" (see https://www.chicagomanualofstyle.org/home.html)
//
// If an unknown or empty style is provided, AP style is what you get.
func GetTitleFunc(style string) func(s string) string {
  switch strings.ToLower(style) {
  case "go":
    return strings.Title
  case "chicago":
    return transform.NewTitleConverter(transform.ChicagoStyle)
  default:
    return transform.NewTitleConverter(transform.APStyle)
  }
}
{{< / highlight >}}

Before
(Nothing is highlighted)

With the modification

IMO white highlight is very difficult to see, so I tried in this PR --base02: #c8c8fa. Here is the rendering:

I'm not sure about the contrast and the color but that seemed the best choice regarding the available color palette.
If not we could introduce in the color palette of this file a light yellow :shrug:

Yes, we don't highlight anything right now. Diff is shown for example in the Migration guide but is based on another Chroma rule. So, as you said, let's focus on the color when we'll need it.


"list index out of range" in dvm.py

I got a IndexError when trying to decompile a dex file.
The Traceback info is as follows:
WARNING: unknown string item @ 41242
Traceback (most recent call last):
  File "build/bdist.linux-x86_64/egg/androguard/core/bytecodes/dvm.py", line 7011, in get_string
    off = self.__manage_item[ "TYPE_STRING_ID_ITEM" ][idx].get_string_data_off()
IndexError: list index out of range

Have you the APK/dex please ?

This one should be fixed already. @xia0pin9 can you check it? @adesnos you can close this once you get a confirmation


if delta is precisely 0, just return

If delta is precisely 0 in an increment or decrement, just return. Fixes a bug where increment(stat, 0) would increment it by 1.
@Raynos

lgtm.


Add LastTransitionTime to conditions

When working with kpack it is hard to understand when was the last time a condition was updated.
This PR adds the time to the condition

Did we verify if this does not force multiple reconciles because of the Time.Now?

Did we verify if this does not force multiple reconciles because of the Time.Now?

I had no time to verify it

I just tested and the date does not matter


[Dependency] Bump Gradle Version to 7.5.1

Description
This bumps gradle to version 7.5.1
Review checklist

[x] PR is split into meaningful commits for the ease of reviewing
[ ] Tests have been written
[ ] Screenshots added (where applicable)
[x] Appropriate labels have been applied

Codecov Report

Merging #18 (efb29a8) into main (4f7621e) will not change coverage.
The diff coverage is n/a.

:exclamation: Current head efb29a8 differs from pull request most recent head 55d7f2c. Consider uploading reports for the commit 55d7f2c to get more accurate results

@@          Coverage Diff          @@
##            main     #18   +/-   ##
=====================================
  Coverage   42.3%   42.3%
=====================================
  Files         23      23
  Lines        427     427
  Branches     108     108
=====================================
  Hits         181     181
  Misses       208     208
  Partials      38      38


Loading QR Code viewer in a container

The Current implementation doesn't provide a hook to embed the QR Code scanner into a container widget.

What would be needed to implement this? I would really like to embed the reader into my widget tree instead of using a totally different view/overlay.

Hello, I had the same need so I went and wrote my own library, feedback is welcomed! https://github.com/facundomedica/fast_qr_reader_view

That is good to hear! Why is the Firebase registration necessary?

@haarts it's because it uses ML Kit from them. You usually use it for push notifications, so it's more or less standard. Anyway, open an issue so we can discuss this! 😄


fix(useNamedParameters): use operationName instead of operationId

Status
READY
Description
This feature was using operationId to construct the PathParameters name. For consistency, it would be better to use operationName as it can be mapped to something by users.
Related PRs
List related PRs against other branches:

branch
PR

other_pr_production
link

other_pr_master
link

Todos

[ ] Tests
[ ] Documentation
[ ] Changelog Entry (unreleased)

Steps to Test or Reproduce
Outline the steps to test or reproduce the PR here.
> git pull --prune
> git checkout <branch>
> grunt jasmine

Hello @Marcel-G seems good but could be a breaking change in some cases no?

Hello @Marcel-G seems good but could be a breaking change in some cases no?

Technically yes, since the path parameter types are public and would effect consumers who:

Are already using useNamedParameters and
Have operations named with operationId or custom naming mutator and
Are directly importing the Path parameters model type in their projects

@Marcel-G should be a really little number of ppl tho no?

@Marcel-G should be a really little number of ppl tho no?

Yes very few I imagine

@Marcel-G I don't know if you are often on discord but if you could be discuss there with the other maintainers would be great


open-policy-agent: 0.30.0 -> 0.30.2

Motivation for this change
Bump opa to 0.30.2
Things done

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

[X] NixOS
[ ] macOS
[ ] other Linux distributions

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

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

[X] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 130234 run on x86_64-linux 1

1 package built:

open-policy-agent


Library is not working in Xcode 11

UITextField's _placeholderLabel ivar is prohibited. This is an application bug'

I submitted a PR with the fix for it, just waiting to be approved. If you need a fix supper fast you can check out the changes in the PR and do them locally, until it's merged.

Fixed check in latest pod version 1.8

Thank you ErAbhishekChandani
Thank a lot


adds stemcell uploading instructions

We wanted to tell them what to do if they needed to upload a stemcell, and provide a link to the stemcell that the release uses

@gmmeyer Thanks!


fix: display info from endpoint response property "message" in app-configs-undeploy

Display info from endpoint response property "message" in app-configs:undeploy

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Recently setup pi-hole along with pi-vpn, noticed an unknown IP address connected through my router log this morning

I've also posted this on reddit hoping to find some help. Would appreciate any advice on this matter.
I found an odd login in this morning that I'm wondering what it could be from. I just recently started using the pi-hole/pivpn setup and just did a fresh install yesterday on my Pi3. I've been checking my router logs and found this one line which I do not recognize: [LAN access from remote] from <IP_ADDRESS>:49530 to 192.168.1.xx:11548, Sunday, Jan 28,2018 09:20:17. This IP address makes no sense, the only other login was from the openvpn client through my phone that is showing the correct IP address from my cell provider.
I didn't use the 1194 standard port during setup but instead used a random number. I set everything up based on this guide here https://marcstan.net/blog/2017/06/25/PiVPN-and-Pi-hole/ other than this odd login, I haven't had anything else that seemed out of place.
Looks like it came from a Russian IP address. Are there any logs on the Pi I can check to see what this login is from and how can I see if this was someone that managed to hack into my network or something else?

First thing I would do is turn off port forwarding. And block the IP in your router's firewall

There is not much we can do to help you out on this one,
If you suspect that something is wrong and you might have a breach, I would recommend:

Review your firewall rules and ports
Change all your passwords, Routers, websites, you can assume all have been compromised.
Revoke all your VPN certificates
Format your SDCard
Reinstall PiVPN && Pi-Hole
Do not reuse any credentials

This is just a few things you can do to improve your security and privacy and to fix your suspected breach.
Closing issue.


Coverage tied to dependency isn't functioning properly.

I work on an app Android where I'm conducting snapshot tests using Paparazzi. However, due to some compatibility issues with company plugins and Robolectric, we had to create a separate module to house all the snapshot tests. In this case, we imported the feature modules into it and were able to achieve the expected results.
However, since the features are in a different module, the code coverage is showing as zero, and it can't locate the paths to the original files. I'm unsure if this is a genuine bug or if it's just not possible. My knowledge in this area is quite limited.
Example:
implementation(project(":feature"))

Hi,
could you clarify, :feature is a dynamic feature submodule?

Support for the dynamic feature modules was added in version 0.7.4, please reopen the issue if the problem also repeats in 0.7.4.


GeoTIFF AggregateError Error

My console is getting spammed with the following Error, if I add a GeoTIFF.

Uncaught (in promise) AggregateError: Request failed
at BlockedSource.fetch (blockedsource.js?df9a:155:1)
at async GeoTIFFImage.getTileOrStrip (geotiffimage.js?6f70:384:1)

I'm not sure if I do something wrong, however I can see the GeoTIFF, so nothing seems to be wrong.
Before I add any GeoTIFF to the Map, I do several translations with gdal:
//Translate to EPSG:3857
gdalwarp
	-t_srs,
	EPSG:3857,
	-r,
	near,
	-of,
	GTiff,
	INPUT,
	OUTPUT

//Create COG
gdal_translate
	INPUT,
	OUTPUT,
	-co,
	TILED=YES,
	-co,
	COPY_SRC_OVERVIEWS=NO,
	-co,
	COMPRESS=DEFLATE

//Add Overviews
gdaladdo
	INPUT,

Openlayers TIFF-Source:
const source = new GeoTIFF({
		sources: [
			{
				url: getFileRefUrl(path.value) || '',
			},
		],
	});

What is the url you pass to the GeoTIFF source? I don't see the getFileRefUrl() definition in your snippet.

And are you sure your range request support in the above is correct? To rule out various sources of problems, I'd

try with geotiff.js directly (without OpenLayers)
upload the GeoTIFF to an S3 storage or similar, with built in range request support.


Remove TAN hotline info from footer

Description
This PR removes the number of the TAN hotline from the footer and adapts the corresponding test.
What was changed?

src/data/global.json (removal of the hotline info)
cypress/e2e/hotline.cy.js (adapting of the tests to make them pass without TAN hotline info)

Preview of the changes
You can find a live preview of the changes here: https://cwa-website-f1w1d7ydv-ein-tim.vercel.app

This should not be merged until after Jan 31, 2023.

No need to wait longer, as the TAN hotline already shut down. The recorded message is in place.

Thanks for your PR @Ein-Tim!

Although the TAN checks were removed from the Cypress hotline test the test title was not changed:
https://github.com/corona-warn-app/cwa-website/blob/a3157f93534f906edd39b4cb9e47f0eae8b53c41/cypress/e2e/hotline.cy.js#L6
This shows in the logs of https://github.com/corona-warn-app/cwa-website/actions/workflows/cypress-test-prod.yml
See for example https://github.com/corona-warn-app/cwa-website/actions/runs/4150636512/jobs/7180428606#step:5:380
To clean up the change "and TAN " should be removed.

I'll provide a PR for this on Monday. Thanks @MikeMcC399!


docs: :pencil2: jsxFragmentFactory...

...not jsxFactory.

Description
The TypeScript docs 📝, don't mention jsxFragment. They do mention jsxFragmentFactory.
Additional context

What is the purpose of this pull request?

[ ] Bug fix
[ ] New Feature
[X] Documentation update
[ ] Other

Before submitting the PR, please make sure you do the following

[ ] Read the Contributing Guidelines.
[ ] Read the Pull Request Guidelines and follow the Commit Convention.
[ ] Check that there isn't already a PR that solves the problem the same way to avoid creating a duplicate.
[ ] Provide a description in this PR that addresses what the PR is solving, or reference the issue that it solves (e.g. fixes #123).
[ ] Ideally, include relevant tests that fail without this PR but pass with it.

This is an esbuild option, and it is called jsxFactory https://esbuild.github.io/api/#jsx-factory


Please add board Sh-esp32

https://docs.hatlabs.fi/sh-esp32/media/sh-esp32_r2.0.0_top_render.jpg

What board are you selecting in the Arduino IDE for the Sh-esp32 ?

Esp32-vroom-32e
Wiki docs
https://docs.hatlabs.fi/sh-esp32/
David Leonardi
Tel<PHONE_NUMBER>
On Fri, Jan 5, 2024 at 12:29 PM thelastoutpostworkshop <
@.***> wrote:

What board are you selecting in the Arduino IDE for the Sh-esp32 ?
—
Reply to this email directly, view it on GitHub
https://github.com/thelastoutpostworkshop/gpio_viewer/issues/49#issuecomment-1879023746,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BFEKH2YE5WEEYW6DZJQ7MLLYNAZ67AVCNFSM6AAAAABBOTRRMGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNZZGAZDGNZUGY
.
You are receiving this because you authored the thread.Message ID:
@.***>

The board is now available.


[Suggestion] add the demo url at the github repo link

Hi buddy,
it would be nice to have the link for the demo that you had shared on twitter here on the repo too 😄
https://lensflare-threejs-vanilla.vercel.app/
thanks o/
Best regards,
Erko Bridee

Ahhh yes! Very good point ehhe. I will add this now ;). Thank you.


crypto: remove legacy base58 encoding for SecretKeyEd25519

The previous base58 check encoding was incorrectly using the legacy format, where the encoded key was actually the concatenation of sk + pk.
fixes #45

I'm not very familiar with this code but the fix looks reasonable to me and the test seems to address issue #45.

Took the diff from this MR applied it to v0.5, it fixes the issue pointed in #45. Thanks.


Handling of Text component font scaling

In my project I need to set the 'maxFontSizeMultiplier' for Text components.
Is there some easy way to do this and have access to Text component props?

+1
or maybe be able to pass a custom text component?

I was thinking something like this: https://github.com/MarceloPrado/flash-calendar/pull/62


Let mid(null), left(null) and right(null) return empty

I'm not sure if there is reasoning behind left(null, n) returning null, but other StringUtils functions tends to return empty strings if their inputs are null. Likewise, I think it makes sense that mid(null, n), left(null, n) or right(null, n) returns an empty string instead of returning null. My use case is lambda logging. I have code like this:
log.debug("My output (first 256 chars): {}", StringUtils.left(output, 256)::toString);

I get an NullPointerExceptions when I do and not properly wrap the call, etc. So I can't take advantage of both the left function as well as lambda based logging.

Coverage decreased (-0.002%) to 94.955% when pulling 821a4a5b04f6fb4bbdcec014be48bf42df5f48ca on esend7881:patch-1 into 5689c91cf2a3a27f0a3a8a362857f2cf0919d4f6 on apache:master.

Coverage decreased (-0.002%) to 94.955% when pulling 821a4a5b04f6fb4bbdcec014be48bf42df5f48ca on esend7881:patch-1 into 5689c91cf2a3a27f0a3a8a362857f2cf0919d4f6 on apache:master.

I think that is because the total number of lines have been reduced (smaller denominator) which makes it seem like there is less coverage.

Not sure about the impact here of changing the behavior... needs a bit more study...

We are not consistent in StringUtils, some methods return null on null input, others return an empty string. Changing this would likely lead to unexpected results for call sites in apps and other libraries. If we change anything, we should do so consistently in the whole class. At least the Javadocs say what to expect. We should probably do this for 4.0 IMO.
Any thoughts?

We are not consistent in StringUtils, some methods return null on null input, others return an empty string. Changing this would likely lead to unexpected results for call sites in apps and other libraries. If we change anything, we should do so consistently in the whole class. At least the Javadocs say what to expect. We should probably do this for 4.0 IMO.

Personally I don't like method that return null on null input. Among the nullness checkers I know, only the Checker Framework supports this behavior with the @PolyNull annotation.
The "polynull" pattern has also the tendency to contaminate your code: you write a lot of "polynull" methods, so that you can compose those methods. You could save many LoCs by just checking for null once a having methods that don't return null.

Should we start a discussion on the dev ML as to whether all StringUtils should be normalized null to null vs. null to "" and if so for 3.x or 4.0?

Absolutely,
We should discuss it on dev@commons.

OK, I'll start a thread.

I think this PR should be moved to draft mode (or closed?) pending the discussion on the dev mailing list.

Almost certainly these changes can only be applied in 4.x, so we should probably close it.

Closing per the above discussion .


Add Workflow Permissions Support

Currently this leads to a workflow validation error
https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#permissions

Now it's noop, no known public github/gitea api have fine granular token generation available.


Build phantoms show file location shown instead of error message

Sublime Text Version
Sublime Text 3 (Build 3126)
Rust Enhanced Version
v1.2.1
Operating system
Microsoft Windows 10
10.0.14393 Build 14393.577
Expected behavior
Phantoms shown like in the Sublime Text blog:

Actual behavior
Instead, we get:

Steps to reproduce

Make a new project (e.g., with cargo new --bin)
Modify the Hello, world! default main.rs to have some invalid syntax. In our example, let's do this:fn main() {adsf
    println!("Hello, world!");
}

Observe as the phantoms show the file name

What version of rust are you using?

@dten:
nightly-x86_64-pc-windows-msvc: rustc 1.17.0-nightly
stable-x86_64-pc-windows-msvc: rustc 1.15.1

Oh wait this one is easier than I first thought.
Those messages for from Sublime, not this plugin
The style below is from this plugin. The style in your pictures are from the sublime setting "show_errors_inline"

Will see if i can replicate this this weekend


RegistrationPage_UserRegistration_ValidData

Environment: Windows 10 Pro. Google Chrome 87.0.4280.141
Reproducible: always
Build found: https://github.com/ita-social-projects/what-front/projects
Preconditions

WHAT app is opened
The 'Sign in' page is opened
The 'Registration' page is opened

Steps to reproduce

Fill 'First Name' field with test data  'Lana'
Fill 'Last Name' field with  test data 'Rey'
Fill 'Email address' with test data<EMAIL_ADDRESS>Fill the 'Fill 'Password' field with test data' field with test data 'lanarey2021'

Actual result
'Password' field  'Must contain at least one uppercase, one lowercase, one number'
Expected result
Test data is displayed as asterisks in the 'Confirm Password' field
Postconditions
User story and test case links
https://jira.softserve.academy/browse/WHAT-52
https://jira.softserve.academy/browse/WHAT-73
Labels to be added
"Bug", Priority ("Hight"), Severity ("critical"), Type ("functional"),

fixed by #611


Ingress upstream doesn't refresh after node failure

What kind of request is this (question/bug/enhancement/feature request): bug
Steps to reproduce (least amount of steps as possible):

Setup a 3 node cluster where each node has all roles (worker, etcd, control plane)
Deploy standard nginx:alpine image with scale 1 for a sample http app (any other will do as well) and configure load-balancer with a domainname to the workload/service
Check which node has the pod running on it and shutdown the node in your cloud provider - simulate a hard node failure
Wait few minutes (untill the cluster detects the node is unreachable and pod status becomes unknown - 5min later it should reschedule pod on a working node)

Result:
Very inconsistent, but sometimes after performing the steps above (every so often - like 1 out of 5) the hostname http request keeps returning 504 timeout (there is no 503 when the Pod switches to state Unknown) and then once the new pod is created on a working node the ingress still returns 504 code. Nothing at this stage helps - not even increasing the scale up - for example 3 replicas. They get created but ingress (nginx) still returns 504.
I've checked the Ingress logs and it only requests from upstream IP of the original pod that was on the node we shut down. Even redeploying the workload, reconfiguring the load balancer etc. never updates the service ip that the Ingress has in the upstream list.
Basically only way to make the service work again is to reconnect the node that failed.
Other details that may be helpful:
Environment information

Rancher version (rancher/rancher/rancher/server image tag or shown bottom left in the UI): 2.3.6
Installation option (single install/HA): HA

Cluster information

Cluster type (Hosted/Infrastructure Provider/Custom/Imported): Custom

Machine type (cloud/VM/metal) and specifications (CPU/memory): Hetzner Cloud - 8GB RAM

Kubernetes version (use kubectl version): v1.17.4-rancher1-2

Docker version (use docker version): 1.17.4

After some more testing I've noticed that this happens when the cattle-cluster-agent pod is scheduled on the node that is downed.


Should we make the mailing list public?

Should we integrate the form and joining the mailing list?

Ugh, can I say that I am surprised to see content as private? Of course, joining list for posting should be gated by a join request pegged to the membership, but reading should be simply open because it is an authoritative-formal channel of communications.

I don't see a reason why we wouldn't? Many established projects like Apertium have open mailing lists! :)


Fix for node 6

This fix adds compatibility for node 6. Works with node 6 (uses new Proxy), node 5 (uses no Proxy), and node 5 with the --harmony-proxies flag (uses Proxy.create) and I didn't spot any obvious errors.

Hey @JonnyBurger. Thanks a lot for this PR. You need to remove the semicolon so that it passes the standard test. Other than that lgtm.

Thanks for the heads-up. Fixed.

Cool. Lgtm. Don't know if @saintedlama has any other comments.

@sorribas ok for me - I'll fix some minimal stuff after merging :tada:


Estimate peak temp from sides and center pixels of Lepton 2.5

Hi,
I am using lepton 2.5 with Pi 3B+. This library has been working great. At the moment, I am trying to estimate the peak temp pixel from the sides as well as the center of the thermal camera. Can anybody suggest any approach here, for an instance, use innermask or outermask perhaps I dont know.
Any suggestions would be helpful.
Thanks,
Akshay

Resolved it.


juliaup will the be an official Julia installer

Comment:
See https://live.juliacon.org/talk/J9AX9Y

Does @davidanthoff want maintainer access?


nodejs-express: use pino-http directly

It turns out that express-pino-logger just returns pino-http, so use it
directly, as is the current recommendations.
See:

https://github.com/pinojs/pino/commit/3acca206f6cfa70fa20c6b1e7eee1311910ad671
https://github.com/pinojs/express-pino-logger/blob/2b9bd6a551610a4ba4a6c0e42de94b3fe7804298/logger.js#L2

Checklist:

[ ] Read the Code of Conduct and Contributing Guidelines.

[ ] Followed the commit message guidelines.

[ ] Stack adheres to Appsody stack structure.

Modifying an existing stack:

[ ] Updated the stack version in stack.yaml

Contributing a new stack:

Describe how application dependencies are managed:

Explain how Appsody file watcher is utilized:

Describe other Appsody environment variables defined by the stack image:

Describe any limitations and known issues:

Related Issues:

👍  Are you going to make this change in the Kafka PR too, @sam-github ?

@ianpartridge kafka is a template, no changes to it are required to get this change, it will have it if the stack of which it is a part has it.

Oops thanks!

@sam-github This LGTM. If you resolve the merge conflicts, we can get this in

rebased, repushed


Design random query position generation for FRI

During the recursive STARK verification, the verifier needs to draw random integers which are the indices of the deep queries used in the FRI protocol. These integers belong to the range 0 ... lde_domain_size and are drawn using the following method of a RandomCoin<BaseField, RPO>:
pub fn draw_integers(
        &mut self,
        num_values: usize,
        domain_size: usize,
    ) -> Result<Vec<usize>, RandomCoinError> {
        assert!(
            domain_size.is_power_of_two(),
            "domain size must be a power of two"
        );
        assert!(
            num_values < domain_size,
            "number of values must be smaller than domain size"
        );

        // determine how many bits are needed to represent valid values in the domain
        let v_mask = (domain_size - 1) as u64;

        // draw values from PRNG until we get as many unique values as specified by num_queries
        let mut values = Vec::new();
        for i in 0..1000 {
            // get the next pseudo-random value and read the first 8 bytes from it
            let bytes: [u8; 8] = self.next().as_bytes()[..8].try_into().unwrap();

            // convert to integer and limit the integer to the number of bits which can fit
            // into the specified domain
            let value = (u64::from_le_bytes(bytes) & v_mask) as usize;

            if values.contains(&value) {
                continue;
            }
            values.push(value);
            if values.len() == num_values {
                break;
            }
        }

        if values.len() < num_values {
            return Err(RandomCoinError::FailedToDrawIntegers(
                num_values,
                values.len(),
                1000,
            ));
        }

        Ok(values)
    }

This should be straight-forward to translate to Miden assembly code modulo the following remarks:

The loop's purpose is to keep drawing random indices until we get num_values distinct integers. How should we implement the continue and break for this loop?
Similar to the discussion in #751, we are using (at least) one permutation per random integer drawn. Since the lde_domain_size can not practically be larger than $2^{32} - 1$, does it make sense to modify the above method so that we draw $8$ random elements per permutation?

I think translating break and continue into if/else statements shouldn't be too difficult. But I am a bit worried bout checking uniqueness. Probably the simplest way to do it is to use a simple SMT of log2(lde_domain_size) to track already generated values - though I wonder if there is a better way to do it.

Since the lde_domain_size can not practically be larger than $2^{32}−1$, does it make sense to modify the above method so that we draw 8 random elements per permutation?

I think so, but we'll need to think through how to make this change in Winterfell as well.

Another solution would be to use ND input to signal a duplicate index. In this case, the (offset) pointer for the position of the duplicate index is also provided and we just check that indeed the newly drawn index is equal to a previously drawn one.

Partially closed by #937 with the issue of handling duplicate queries moved to #941


javascript rns updated

Harness Developer Pull Request
Thanks for helping us make the Developer Hub better. The PR will be looked at
by the CODEOWNERS.
What Type of PR is This?

[ ] Issue
[ ] Feature
[X] Maintenance/Chore

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://65d5e98e2ba2109aaaa0952b--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://65d5e9a927757397097e7f5d--harness-developer.netlify.app


Issue reporter - show notification that running with extensions disabled

Testing #46595
When selecting the link to run with disabled extension then we do everything automatically, even reloading the window (which is great). However, it is almost to transparent and @joaomoreno suggested to show a notification inside the workbench that VS Code is now run with extensions disabled..

Actually, the notification should always appear, regardless of whether it due to the issue reporter.

Also, maybe there should be an action in that notification to revert the process.


Unable to access all available cores for a platform

Initially I was able to access all cores for a plaftorm in daijisho.
However, i scanned my Final Burn Neo forlder a second time in retroarch.
when i did, All but 3 of the final burn cores dissappeared from daijisho.
To be clear, the cores are still available in retroarch, and function without issue.
I see no clear option to re-link available cores to a platform in daijisho.

Not following along what you're trying to achieve.
Final Burn Neo platform has 3 selectable cores by default. (Which is just the Final Burn Neo core but with each Retroarch build).
Are you saying those are not appearing?

Those 3 do appear, and that is great, but I also want other final burn
cores to appear.
 It is available in retoarch, and was
available in daijisho (until I performed a second scan of the final burn
neo rom folder in retroarch)
Not sure how/why a second scan would yield that result, but I would love to
address it.
If there is another way I can make the desired core available I am all ears.
Best Wishes,
Jerad
On Sun, Jan 22, 2023, 12:35 PM Jetup13 @.***> wrote:

Not following along what you're trying to achieve.
Final Burn Neo platform has 3 selectable cores
https://github.com/magneticchen/Daijishou/blob/main/platforms/FinalBurnNeo.json
by default. (Which is just the Final Burn Neo core but with each Retroarch
build).
Are you saying those are not appearing?
—
Reply to this email directly, view it on GitHub
https://github.com/magneticchen/Daijishou/issues/189#issuecomment-1399585057,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A5MYDK2WD3TNAVDG4C7JXCLWTWDZLANCNFSM6AAAAAAUC7OOCQ
.
You are receiving this because you authored the thread.Message ID:
@.***>


Revert "Update protobuf file headers"

The update was not necessary, as we want to keep the old format.

Updated the commit message too.


Restore previous behavior of gfxrecon.py capture

gfxrecon.py capture was replaced with gfxrecon.py capture-vulkan. Restore gfxrecon.py capture as an alias of gfxrecon.py capture-vulkan and print a deprecation warning. Also make commands case-insensitive.

CI gfxreconstruct build queued with queue ID 8706.

CI gfxreconstruct build # 2347 running.

CI gfxreconstruct build # 2347 failed.

CI gfxreconstruct build queued with queue ID 8730.

CI gfxreconstruct build # 2348 running.

CI gfxreconstruct build # 2348 passed.


Bump the version of pg-pglogical to 2.1.1

This version allows for drop_table to remove the table from the replication set before trying to drop it.
https://bugzilla.redhat.com/show_bug.cgi?id=1508402

This should be merged with https://github.com/ManageIQ/manageiq-schema/pull/126 to prevent bundler failures

Gaprindashvili backport details:
$ git log -1
commit 7f56ff49b0b2f12f2051141635125c59da54734b
Author: Jason Frey<EMAIL_ADDRESS>Date:   Thu Nov 16 11:08:28 2017 -0500

    Merge pull request #16466 from carbonin/bump_pg_pglogical_gem_version

    Bump the version of pg-pglogical to 2.1.1
    (cherry picked from commit 5ab9dba6fa503837e4a68471415c4b5425c0db24)

    https://bugzilla.redhat.com/show_bug.cgi?id=1514152


Added an exception in IP check.

Added an exception "matchUser.userid !== user.userid", so that the original user isn't recognized as an alt.
http://prntscr.com/6eyje8

you should give a better and shorter commit summary. like wifi plugin: added exception in ip check

@codelegend Done.

I meant the commit summary, not the pull req title.

Hmm well okay.

@Zarel , this can be merged.

No it can't, the commit summary is wrong.

I guess it can, but for future reference, prefix commit summaries with the mod/plugin name if there is one.

You did not add any exceptions to PS's own IP checks.

So the commit summary as it stands is sort of a lie.

@Zarel Lmao, okay, I'll type it in correctly next time. >.<


Wrong click position in recyclerview

Hi, Mike, i have tested the library with a simple example of a list in a recyclerview, only 2 items in the list.
I created a new proyect with the class and layout of your example, class "SampleItem" and the layout "sample_item"
The layout of the list item is the same as the example of the library, the only difference is i add a cardview around the items (name and description).
the list shows fine, with only 2 cardview, but when i click in the first item, the click event shows in the second item, is like add +1 position to the item i click, and viceversa, when i click in the second, the click shows in the first XD:

@seba123neo could you please provide the issue as a small sample so I could debug it?

it's probably my mistake, I'm missing something, I need to know what I'm missing.
now I upload the code I'm using.

This is the code of the example
app.zip

@seba123neo I can't see the issue with your sample either. If I click on the first item the toast will show "Item1" and if i click on the second it will show "Item2"

yes, the toast works fine, but the "click effect" is show in the other item.

Look the video
20160206_161547.zip

@seba123neo seems like a weird issue of the CardView. Somehow it does not show the click, neither does it show the ripple by default. seems like you would have to apply the ripple on your own.
I have modified your demo to show a touch effect.
demo.zip
I also have the description why it looked like the effect was always one off. If you click, the default behavior is that the FastAdater selects this item. So the view is in a selected state. (i disabled this now with withSelectable(false), so there will be no selected state, you can enable it again if you want)
If you now select the second item, the previous item is deselected, and this sometimes displayed the ripple.
So what I've done. I added a background to the CardView which has a touch color state, and a selected state. it will now probably display those things

now works, thanks for the explanation !!! thanks for your time
keep it up


When list-watch suffer from network , some kind of warning or alert may be helpful

What would you like to be added?
If there's a CRD or a prometheus metrics which tell user the sync is outdate , it will be a direct signal and  helpful to drive the user to diagnostic the network problem directly,
Why is this needed?
For example, when the outbound network bandwidth is full (especially the public cloud), or when the network condition is rather bad,  the list-watch will be out of sync , and the data will be out of date as well.
If there's a CRD or a prometheus metrics which tell user the sync is outdate , it will be a direct signal and  helpful to drive the user to diagnostic the network problem directly,

This log just shows that the list took a long time, but eventually the list succeeded and started watching
pediacluster has a synchronization status field for the resource, which shows specific information when the resource synchronization stops or is abnormal
status:
...
  syncResources:
  - group: apps
    resources:
    - kind: Deployment
      name: deployments
      namespaced: true
      syncConditions:
      - lastTransitionTime: "2023-01-10T09:46:55Z"
        status: Stop
        storageVersion: v1
        version: v1

We can add another state between list and watch, Syncing state means when the list finishes and watch starts, we can use Listing or other states when starting the list


Add html5shiv

Extracted out of #17 to fix master

I believe we misunderstood, and this isn't needed.
There's an html5shiv in package.json, which npm install will grab, and then it's correctly imported - easier to keep up to date this way.
The perils of using rails s instead of make serve!


AI Vectra Detect Workbook

Fixes #
Proposed Changes
Adding Vectra Detect Workbook
Adding Vectra Detect screenshots
Adding Vectra logo
Updating workbook metadata file

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.:x: danymello sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.


Change the color of the tabs to make them more visible

After the fix for issue #11, the tabs now are harder to differentiate between "in use" and "background".
Change the colours so that it's easier to notice the active one

I can do this if you want it's a pretty simple fix, ill just open a PR


pcli: auction end-all, withdraw-all

Describe your changes
Changes the pcli tx auction commands to support "end all", "withdraw all" rather than requiring specific auction IDs
Checklist before requesting a review

[x] If this code contains consensus-breaking changes, I have added the "consensus-breaking" label. Otherwise, I declare my belief that there are not consensus-breaking changes, for the following reason:

Only client-side changes

This doesn't work because there's not a way to track the "local" state of the auction NFT, which may lag the on-chain state. So once a GDA is completed, close-all doesn't work (because all the auctions are believed to be closed), but withdraw-all doesn't work (because the auction NFTs are not closed)

Suggestion: add a local_seq field to https://buf.build/penumbra-zone/penumbra/docs/main:penumbra.view.v1#penumbra.view.v1.AuctionsResponse that gives the local sequence number


Adds IpInIp to Felix config and alphabetizes tables

Description

Continues https://github.com/projectcalico/calico/pull/1431, which adds IpInIpEnabled.
Also alphabetizes the tables in Felix configuration. No content changes except for the addition of IpInIPEnabled. Apologies for the diff which looks more extensive than it is, but we really need to alphabetize these tables.

Todos

[ ] Tests
[ ] Documentation
[ ] Release note

Release Note

None required

Oh good point, I will add that.

Do we need to add IpInIPEnabled to the calicoctl Felix resource as well?

@emanic the calicoctl one refers to the values that are defined here in the FelixConfigurationSpec: https://github.com/projectcalico/libcalico-go/blob/master/lib/apis/v3/felixconfig.go
In that struct, the field is called IPIPEnabled  The discrepancy is unfortunate; we improved the naming in that struct but we didn't have enough time in v3.0 to bring Felix's names into sync.


Feature Request: Prereleases with version bump depending on commit messages

Current behaviour
Currently it is only possible to do a prereleaes with a specific version bump (preminor, prepatch, ...). So commit messages are  not considered when you provide the option --releaseAs.
Desired behaviour
There should be an option to release a prerelease version which lets semver decide which version bump to perform depending on the conventional commit messages.
E.g.

Current version: 1.0.0
Commit history includes a feat commit
Running nx version --preid=alpha project-name (not specifying --releaseAs)
New version: 1.1.0-alpha.0

Looks like related to this discussion #385.


'useSession' must be wrapped in '

Hello i tried to use this dependency to use useSession in my components but it doesn't work i followed instructions in the repo.

Versions
"next-auth": "^4.15.1", "next": "12.2.5", "@tomfreudenberg/next-auth-mock": "^0.5.5",
// .storybook/main.js

const path = require('path');
const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin');

module.exports = {
  stories: ['../src/**/*.stories.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'],
  /** Expose public folder to storybook as static */
  staticDirs: ['../public'],
  addons: [
    '@storybook/addon-links',
    '@storybook/addon-essentials',
    'storybook-dark-mode',
    'storybook-tailwind-dark-mode',
    '@tomfreudenberg/next-auth-mock/storybook',
    {
      name: '@storybook/addon-docs',
      options: {
        configureJSX: true,
      },
    },
    {
      name: '@storybook/addon-postcss',
      options: {
        postcssLoaderOptions: {
          implementation: require('postcss'),
        },
      },
    },
  ],
  core: {
    builder: 'webpack5',
  },
  webpackFinal: (config) => {
    /**
     * Add support for alias-imports
     * @see https://github.com/storybookjs/storybook/issues/11989#issuecomment-715524391
     */
    config.resolve.alias = {
      ...config.resolve?.alias,
      '@': [path.resolve(__dirname, '../src/'), path.resolve(__dirname, '../')],
    };

    config.resolve.roots = [path.resolve(__dirname, '../public'), 'node_modules'];
    config.resolve.plugins = [new TsconfigPathsPlugin()];

    return config;
  },
};

Hi @st4l1nR
thanks for testing and using this component. I would like to step in, first of all it looks well what you have done.
Simple question: Have you once cleared the storybook cache in node_modules and restarted the storybook process?
Is this available in a public repo that I may checkout by myself to have a look?
Cheers
Tom

Hi, you can check repo in https://github.com/st4l1nR/nc-clone. I tried without and with exporting decorator in preview.js. I tried the manual you posted in the discussion method and it worked but i can't get it done with the package.

Hey @st4l1nR - I wonder now :-)
It worked all out of the box ???
I did:
git clone https://github.com/st4l1nR/nc-clone.git
cd nc-clone
nvm use lts/gallium
pnpm install

add two files in case of missing auth story
src/components/molecules/Approve.jsx
import React from 'react';
import { useSession } from 'next-auth/react';

const ApprovePage = () => {
  const { data: session, status } = useSession();

  // get the status of authentification
  const isAuthenticated = React.useMemo(() => status === 'authenticated' && session, [session, status]);

  // When rendering client side don't display anything until loading is complete
  if (typeof window !== 'undefined' && status === 'loading') {
    return null;
  }

  return (
    <p>
      { isAuthenticated ? 'Authed' : 'Unauthed' }
    </p>
  );
};

export default ApprovePage;

src/components/molecules/Approve.stories.jsx

import ApprovePage from './Approve';

export default {
  title: 'Molecules/Approve',
  component: ApprovePage
};

export const ApprovePageStory = (props) => <ApprovePage />;

and start the storybook
pnpm start-storybook

Shows me:

and

Did I miss something?

Hi @st4l1nR , do you have any updates for me on your issue?
Cheers
Tom

Hi @st4l1nR
I close this issue now while everything worked fine and out of the box from your repository.
Feel free to re-open this issue if something still not ready.
Cheers
Tom

We're using a monorepo and I'm getting the [next-auth]: 'useSession' must be wrapped in a <SessionProvider /> error.
I'm not sure if it's because our Storybook is in a separate package from our UI & App?
Next-Auth's main setup is in @weareinreach/app (repo path: /apps/app/)
Components are defined in @weareinreach/ui (repo path: /packages/ui/)
Storybook lives in @weareinreach/storybook (repo path /packages/storybook/)
Am I missing something here, or am I just traversing repos too much?
Here is the current branch I'm actively working in right now:
https://github.com/weareinreach/InReach/tree/IN-687-base-layout/packages/storybook

Hey @JoeKarow I will check that

@TomFreudenberg
I got it working by moving the storybook install in to the @weareinreach/ui package. Must have been a bit too much transpiling. 🤷🏻♂

@JoeKarow Thanks for feedback - Good to hear it works for you


Streamline build processes with esbuild

Fixes https://github.com/CesiumGS/cesium/issues/10373
Fixes #10400
Fixes https://github.com/CesiumGS/cesium/issues/10313
Fixes https://github.com/CesiumGS/cesium/issues/6464
Fixes https://github.com/CesiumGS/cesium/issues/9906
Fixes https://github.com/CesiumGS/cesium/issues/8245
Fixes https://github.com/CesiumGS/cesium/issues/6993
Fixes https://github.com/CesiumGS/cesium/issues/9388
Should fix https://github.com/CesiumGS/cesium/issues/7669, verification needed
Workaround for https://github.com/CesiumGS/cesium/issues/9416
Performance

script
this branch
main

build (previously combine+ build-specs)
~4s
~25s + ~11s = ~36s

build-watch rebuild
300ms - 800ms
~6.5s (and stuck in an infinite re-build loop)

build --minify --pragmas (previously minifyRelease)
~4.5s
~40s

build-apps
~2s
~30s

Size

this branch
main

minified
3.6 MB
4.3 MB

unminified
8.4MB
12.5 MB

source map
17.2 MB
22 MB

Highlights include:

Removes rollup and instead bundles and minifies with esbuild, resulting in faster build and build-watch times.

CI times have gone from 15 min -> 12 min. The bottleneck here isn't build/bundle time so much as tests and building documentation.

Removes manual ThirdParty build/copy step; Instead use esbuild and resolve from node_modules directly
There are no more AMD/UMD style modules; Instead the build output is IIFE for the browser, generic ESM modules, or CJS for node.

Other projects, like three.js, ship separate files for separate targets
CJS needs to be built differently in order to run (we use the "node"  target esbuild), CC https://github.com/CesiumGS/cesium/issues/9906

Due mostly to removing jsdoc comments, the unminified distribution is much smaller. We also get a slight benefit to the minified version as well.
Make sure @legal comments are not removed during bundling or minification.
Cut down on redundant build tasks; Instead we have fewer tasks with command line options (which shouldn't be needed as part of normal development). Also use a consistant kabab naming convention.
Refine granularity of build-watch task, only rebuilding certain aspects depending on the file changed
Removes RequireJS from cesiumWorkerBootstrapper; Instead use importScripts directly
Build TestWorkers as part of building specs
Remove convertToModules. This task was put in place for the ES6 module transition a few years ago, and we don't have a need to maintain it going forward.
Test no longer use the Source code directly. Instead, they use the unminified IIFE build with source maps by default. Despite this, debugging still works as before since the debugger will handle the mapping back to the original source code. Therefor, there's no longer any need to have a build option or query anymore. The release option instead loads the minified IIFE build with pragmas removed instead, pretty much the same as before.
Update build guide. Notably, minimum recommended Node version is now documented as 14. Adds engine field to package.json to warn about this.
One big change in terms of ingesting Cesium is that, while you can still load the raw Source modules, we no longer build the workers to the Source/Workers directory. If a user want to do this, they should see the CESIUM_BASE_URL to one of the built directories. I'm not 100% sure this is the right decision.
For coverage, we now instrument up-front using the Istanbul instrumenter directly, as opposed to using a karma plugin. This gives us more control, and allows us to build the code after instrumentation rather than instrumenting the bundled output (so we don't need a karma plugin anymore).

Known TODOS:

[x] Release packaging

Update makeZipFile task to reflect new files
Are the output files all named appropriately?
Should CSS files have a copyright header?

[x] Smooth out build task granularity, and update build guide
[x] Some workers are not loading correctly
[x] Specs are not rebuilding on watch
[x] Update testing guide
[x] Include GLSL build in build-watch task
[x] Can we add a quick spec to make sure Cesium is working in .cjs/node?
[ ] Build warnings when running on travis? This worker code shouldn't be entered.  > node_modules/@zip.js/zip.js/lib/core/codecs/codec-pool-worker.js:110:51: warning: "import.meta" is not available in the configured target environment ("es2015") and will be empty
	return new Worker(new URL(workerData.scripts[0], import.meta.url), options);

> node_modules/@zip.js/zip.js/lib/core/codecs/codec-pool-worker.js:110:51: warning: "import.meta" is not available in the configured target environment ("es2015") and will be empty
	return new Worker(new URL(workerData.scripts[0], import.meta.url), options);

[x] Build Sandcastle
[x] Update remove RequireJS from credited third party libraries
[x] coverage shouldn't include third party modules
[x] Make sure third party licensing is not removed during minification (https://github.com/CesiumGS/cesium/issues/9388)
[x] Do an optimization pass; esbuild is fast, but biggest bottlenecks will be our JS plugins
[ ] The workers have significantly increased in size. I believe this is because there's no code splitting going on. However, code splitting is not supported for IIFE with esbuild, and Firefox still does not support ESM modules in workers. Potentially, we could output ESM with code splitting, and then post-process with rollup. Or we can rollback to rollup for web workers entirely for the time being until the Firefox support is there, at which time it may make sense to holistically address our worker strategy.
[ ] Update CHANGES.md

@sanjeetsuhag I'm still making a few tweaks based on the final TODO's, but most of this PR should be static. Could you give this a try and let me know if you have any general feedback?

Thanks @sanjeetsuhag! Your feedback should all be addressed.

There's no explicit mention of how we tested this. For example:

Did we compare the unminified output of the build process in this branch to be compared directly with main to look for any obvious issues? I know esbuild has different rules for how it brings in npm modules.
Did we compare overall bundle sizes to make sure minification was still working as expected?
What about performance?

I haven't thought about it much, but I'm sure there are more checks we'll want to do and post the results of.

Removes rollup

It looks like all of the npm rollup dependencies are still there

| this branch | main
-- | -- | --
minified | 3.6 MB | 4.3 MB
unminified | 8.4MB | 12.5 MB
source map | 17.2 MB | 22 MB
These numbers are so good that they are concerning. Do we understand how/why the unminified version so much smaller compared to main? What exactly changed?  These numbers alone would warrant a major improvement in CHANGES and a blog post, so we need to be sure to highlight them.

I'm also confused as to the new developer workflow and I think that warrants a summary in the PR.  My assumption is that all I would need to do is
npm install
npm start

And everything would "just work" since I assume esbuild is now "just-in-time" (this is how other repositories without a build step we have work).
I tried instead running
npm run build-watch

But immediately ran into the error I posted a few comments up.

But immediately ran into the error I posted a few comments up.

@mramato What was the error you were running into? Not sure I see the comment.

@ggetz sorry, not sure what happened to my previous comment:
$ npm run make-zip

><EMAIL_ADDRESS>make-zip
> gulp make-zip

[13:28:08] Using gulpfile ~/Git/CesiumGS/cesium/gulpfile.cjs
[13:28:08] Starting 'make-zip'...
[13:28:08] Starting 'release'...
[13:28:08] Starting '<anonymous>'...
▲ [WARNING] Top-level "this" will be replaced with undefined since this file is an ECMAScript module [this-is-undefined-in-esm]

    Source/ThirdParty/Workers/draco_decoder_nodejs.js:2:510:
      2 │ ...[n];if(l&&l.Math==Math)return l}throw Error("Cannot find global object");};$jscomp.global=$jscomp.getGlobal(this);
        │                                                                                ~~~~
        ╵                                                                                undefined

  This file is considered to be an ECMAScript module because the enclosing "package.json" file sets
  the type of this file to "module":

    package.json:42:10:
      42 │   "type": "module",
         ╵           ~~~~~~~~

✘ [ERROR] Transforming async generator functions to the configured target environment ("es2015") is not supported yet

    node_modules/@zip.js/zip.js/lib/core/zip-reader.js:90:1:
      90 │   async* getEntriesGenerator(options = {}) {
         ╵   ~~~~~

[13:28:09] '<anonymous>' errored after 1.16 s
[13:28:09] Error: Build failed with 1 error:
node_modules/@zip.js/zip.js/lib/core/zip-reader.js:90:1: ERROR: Transforming async generator functions to the configured target environment ("es2015") is not supported yet
    at failureErrorWithLog (/home/mamato/Git/CesiumGS/cesium/node_modules/esbuild/lib/main.js:1605:15)
    at /home/mamato/Git/CesiumGS/cesium/node_modules/esbuild/lib/main.js:1251:28
    at runOnEndCallbacks (/home/mamato/Git/CesiumGS/cesium/node_modules/esbuild/lib/main.js:1164:65)
    at buildResponseToResult (/home/mamato/Git/CesiumGS/cesium/node_modules/esbuild/lib/main.js:1249:7)
    at /home/mamato/Git/CesiumGS/cesium/node_modules/esbuild/lib/main.js:1358:14
    at /home/mamato/Git/CesiumGS/cesium/node_modules/esbuild/lib/main.js:666:9
    at handleIncomingPacket (/home/mamato/Git/CesiumGS/cesium/node_modules/esbuild/lib/main.js:763:9)
    at Socket.readFromStdout (/home/mamato/Git/CesiumGS/cesium/node_modules/esbuild/lib/main.js:632:7)
    at Socket.emit (node:events:527:28)
    at Socket.emit (node:domain:537:15)
    at addChunk (node:internal/streams/readable:315:12)
    at readableAddChunk (node:internal/streams/readable:289:9)
    at Socket.Readable.push (node:internal/streams/readable:228:10)
    at Pipe.onStreamRead (node:internal/stream_base_commons:190:23)
    at Pipe.callbackTrampoline (node:internal/async_hooks:130:17)
[13:28:09] 'release' errored after 1.16 s
[13:28:09] 'make-zip' errored after 1.16 s

These numbers are so good that they are concerning. Do we understand how/why the unminified version so much smaller compared to main? What exactly changed?

A big part of the unminified bundle sizes decreasing is that in this version comments and whitespace are removed. For instance, DeveloperError becomes:
  // Source/Core/DeveloperError.js
  function DeveloperError(message) {
    this.name = "DeveloperError";
    this.message = message;
    let stack;
    try {
      throw new Error();
    } catch (e2) {
      stack = e2.stack;
    }
    this.stack = stack;
  }
  if (defined_default(Object.create)) {
    DeveloperError.prototype = Object.create(Error.prototype);
    DeveloperError.prototype.constructor = DeveloperError;
  }
  DeveloperError.prototype.toString = function() {
    let str = `${this.name}: ${this.message}`;
    if (defined_default(this.stack)) {
      str += `
${this.stack.toString()}`;
    }
    return str;
  };
  DeveloperError.throwInstantiationError = function() {
    throw new DeveloperError("This function defines an interface and should not be called directly.");
  };
  var DeveloperError_default = DeveloperError;

Comments shouldn't be needed in the bundle since we do include the sourcemap.
Additionally, in both minified and unminified versions, it appears additional whitespace in the shaders has been removed.
Overall, esbuild minification appears to be very comparable to terser, and the difference we are seeing here appear to be due to whitespace and comments.

✘ [ERROR] Transforming async generator functions to the configured target environment ("es2015") is not supported yet

    node_modules/@zip.js/zip.js/lib/core/zip-reader.js:90:1:
      90 │   async* getEntriesGenerator(options = {}) {
         ╵   ~~~~~

The above error arose because of a recent zipjs update, which uses async generator syntax. For now, we can opt to lock the package version to the previous one, but we can also consider upgrading the target output to ES2018, which has been supported by our supported browsers for a few years now. I'm leaning towards the later option.

ES2018

Cesium should probably be on ES2020 at this point. That's what the eslint work @sanjeetsuhag is doing is moving too anyway.

@sanjeetsuhag Could you please give the latest updates a round of review? Assuming this is in a good place, it would help to get this merged and move https://github.com/CesiumGS/cesium/pull/10538 along as well.

Thanks @sanjeetsuhag! This is updated.

Does this or will this provide any mechanism to preload the workers up front?  Loading ~50 web worker files on our network kills us by delaying user polygon drawing.

I was going to say that your application might be able to improve the situation using link rel="preload" tags, but at least in Chrome, maybe not.  Might help in other browsers though?  I have not benchmarked, but would be interested in learning what provides the best user experience..

The inlining static assets in a single distributable would be great.  I have tried out the c137.js stuff and it a huge improvement for us regarding the time it takes to display user created polygons.


Tools to create acoustic models

I need to create an acoustic model for Julius in English.  The README says that Julius will accept AMs either in HTK format or in ARPA format.
The HTK toolkit looks very old;  last web site update was in 2009.  I can not get it to build properly on my x86-64but Linux system.
What tools are there for creating models in ARPA format?
While VoxForge claims to have English models for Julius, that website can not actually deliver the files - speed slows to zero.

Make sure you have the right site for HTK (http://htk.eng.cam.ac.uk/) - there is a note about the recently released beta 3.5 version which happened Dec 2015, so your source seems to be out of date.
I run openSUSE Leap 42.1 64 bit and have no problem compiling HTK. You might have to specify what error you see.
There are several tools for building models in ARPA and converting between formats. They tend to have minor differences in output, it depends what you are looking for. Try a google search for "language model generator."
Voxforge is occasionally slow, but right now it is ok for me. I selected a 4 MB file from the downloads section and it completed in 16 seconds on my slow connection.

I agree with colbec. HTK is old in some places, however there is a beta version available. I have been using HTK for years now for both language and acoustic modelling. Best way is to follow HTK tutorials provided in Voxforge for acoustic modeling and HTK tutorials for language modeling.
You need to be aware that creating a decent acoustic model is a non trivial process and you need to consider how much effort you are prepared to put into it. I myself have a few English UK models from my own experiments in the past, but their quality is not the best (around 25% WER).

Since colbec reported that VoxForge downloads worked, on a hunch I created a VPN tunnel out of my local area and tried again.  I was able to download the English model in just a few seconds.  So something is wrong with my local ISP.
At first glance the VoxForge model appeared to work, and a quite large pronounciation dictionary was included.  Unfortunately, the hmmdef file is missing many of the triphones that the dictionary uses.

One of the downsides of a phone based model is that triphone possibilities are of the order of N^3; in English this might mean 40^3 or 64000 triphone candidates. It is really hard to exercise them all, even the most commonly used ones unless you are working with a very large audio database. This is made harder by trying to get a wide variety of voices. Sometimes you can bend your requirements for additional words by substituting phones that the model is aware of.


Running into exception when testing SL training with cuda = False

SL training works fine if I turn on cuda = True although I am running a little short of budget so I wanted to try if running on CPU works.
If I turn off cuda, here is the exception I get. Any idea how to fix this? I tried to change that part of the code to with same issue.
if torch.cuda.is_available():
embedding = torch.zeros(bs * shape_y * shape_x, device=x[k].device)
bias = torch.arange(bs, device=x[k].device).unsqueeze(dim=1) * shape_y * shape_x
else:
embedding = torch.zeros(bs * shape_y * shape_x)
bias = torch.arange(bs).unsqueeze(dim=1) * shape_y * shape_x
[2022-12-04 14:37:58,901][checkpoint_helper.py][line: 140][    INFO] save checkpoint in /home/mark/projects/DI-star/experiments/sl_train_protoss/checkpoint/sl_train_protoss_iteration_1.pth.tar
[2022-12-04 14:37:58,902][  log_helper.py][line: 161][    INFO] BaseLearner139853483483344 save checkpoint in /home/mark/projects/DI-star/experiments/sl_train_protoss/checkpoint/sl_train_protoss_iteration_1.pth.tar
Traceback (most recent call last):
File "/home/mark/projects/DI-star/distar/ctools/torch_utils/checkpoint_helper.py", line 364, in wrapper
return func(*args, **kwargs)
File "/home/mark/projects/DI-star/distar/ctools/worker/learner/base_learner.py", line 266, in run
self._train(data)
File "/home/mark/projects/DI-star/distar/ctools/worker/learner/base_learner.py", line 129, in wrapper
ret = fn(*args, **kwargs)
File "/home/mark/projects/DI-star/distar/agent/default/sl_learner.py", line 50, in _train
logits, infer_action_info, hidden_state = self._model.sl_train(**data, hidden_state=self.hidden_state)
File "/home/mark/projects/DI-star/distar/agent/default/model/model.py", line 182, in sl_train
self.encoder(spatial_info, entity_info, scalar_info, entity_num)
File "/home/mark/anaconda3/envs/distar/lib/python3.8/site-packages/torch/nn/modules/module.py", line 727, in _call_impl
result = self.forward(*input, **kwargs)
File "/home/mark/projects/DI-star/distar/agent/default/model/encoder.py", line 43, in forward
embedded_spatial, map_skip = self.spatial_encoder(spatial_info, scatter_map)
File "/home/mark/anaconda3/envs/distar/lib/python3.8/site-packages/torch/nn/modules/module.py", line 727, in _call_impl
result = self.forward(*input, **kwargs)
File "/home/mark/projects/DI-star/distar/agent/default/model/obs_encoder/spatial_encoder.py", line 74, in forward
embedding[x[k].long()] = 1.
IndexError: index 9728000 is out of bounds for dimension 0 with size 9728000

I think it's because of data reuse in cpu, I have fixed it in new commit, please try it again

we have fixed this problem in this commit https://github.com/opendilab/DI-star/commit/96fbf65f4eb5f2f9fafa04f4c7d8876522ca542b

Works now.


Add direct render+export and notifications

Directly render and export things from the viewer, with notifications!
Uses a simple notification addition from nerfstudio-project/viser#225.
https://github.com/nerfstudio-project/nerfstudio/assets/42229107/147d3fd9-1c8e-432e-a616-9f2b5e2a0435

TODO:

[x] thoroughly test export functionality
[x] add error notifications if encountered during render/export

Nice PR. @ginazhouhuiwu, is it possible to also add the option to "capture frame" or something similar, where only a single image is saved instead of a video.

that sounds like a great feature I will try implementing! Thanks for taking a look : )

that sounds like a great feature I will try implementing! Thanks for taking a look : )

Yeah, it has been a feature that I have seen some users bring up a few times in the past, just to quickly take some snapshots from a certain angle (perhaps using the same camera intrinsics as the original training dataset, but I think that is configurable in the gui anyways). Just some additional thoughts ... :)

Super cool! Would also be great to build out some functionality for previewing the render as it goes and perhaps canceling it. Would be cool to also integrate with viser's download functionality to download the final render directly to someone's machine :)

Local download!
https://github.com/nerfstudio-project/nerfstudio/assets/42229107/901dcdd9-58c3-4730-ad47-6c0b7afbb9be

Some finishing touches with suggestions from @kerrj, namely disabling render button when render is already in progress or if no keyframes are added, only enabling download button once file is ready, and allowing render to be canceled. The generate command button is added back as an additional option.
This PR is ready once nerfstudio-project/viser#225 is.
https://github.com/user-attachments/assets/89b16cb0-c401-4945-8668-efa28576120d

Some observations from testing it out:

If you load a path the render button doesn't become available to click until you add another keyframe.
If you click render before 2000 steps, there's no error message except in the terminal (probably shouldn't give a rendering notification unless the render has successfuly started)

How is this going? would be good to merge soon so it doesn't go forgotten about

Fixed:

error message when user clicks render/export before 2000 training steps
able to directly load existing path for rendering


Update punctuation.js

add additional punctuation characters to support apostrophe, hyphen, semi-colon and colon

Merged into #20 for review.


WebDAVFileProvider - off-by-one bug in contents(path:offset:length:completionHandler)

Hi! First things first - great library and thank you for it!
I noticed one thing while using WebDAVFileProvider - implementation of contents(path: String, offset: Int64, length: Int, completionHandler: @escaping ((_ contents: Data?, _ error: Error?) -> Void)) -> OperationHandle? returns data of length length + 1, e.g. for contents(path: "some-path", offset: 0, length 10, completionHandler: { (data, error) in print(data) } it returns data of length 11. The problem is in Range header value which is set as "bytes=\(offset)-\(offset + length)" but should be "bytes=\(offset)-\(offset + length - 1)". Also side note, both offset and length could probably be unsigned types, don't you think?

Weird I didn't noticed yet. Indeed all providers have that issue. Will fix it soon, Thanks.


Feat/toast

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

GitHub release
npm package (@latest dist-tag)

Your semantic-release bot :package::rocket:


⚠ Cioos National CKAN has degraded performance

In 8bdecf4, Cioos National CKAN (https://catalogue.cioos.ca/) experienced degraded performance:

HTTP code: 200
Response time: 7629 ms

Resolved: Cioos National CKAN performance has improved in 9a475c0 after 23 minutes.


Library logo images are not part of the content modules

The content modules via the Library trait impl should provide references to the files where the library content logo image is located. Currently it's located in the site.

@raulraja @israelperezglez I have this mostly laid out, but I think it'd be a good idea to have a default logo for those libraries that don't come with a correct logo location. What are your thoughts about it?

@jdesiloniz I attach the icon
scala_exercises.svg.zip


Create Initial Version of Supervisor Agent for Kyma Companion

Description
The goal of this task is to create the initial version of the supervisor agent for Kyma Companion. This includes expanding the chat controller to accept necessary information, setting up a proper technique for the supervisor agent, and creating sample nodes for two agents and one tool for future development.
Subtasks
1. Expand Chat Controller:

Modify the chat controller to accept session ID and cluster access information from the busload backend.
Ensure the chat controller can properly handle and store this information for use by the supervisor agent.

2. Set Up Supervisor Agent Technique:
Select and set up a suitable technique for the supervisor agent (for example Planning, Routing).
3. Create Sample Nodes:

Develop dummy nodes for two agents that will be used by the supervisor agent. (Kyma agent, Kubernetes agent)
Develop a dummy node for one tool that will be utilized in future development. (Response conversion tool)

Acceptance Criteria

[x] The chat controller is expanded to accept session ID and cluster access information from the busload backend.
[x] The supervisor agent technique (for example Planning, Routing) is set up.
[x] Dummy nodes for two agents are created and functional.
[ ]  Planner should consider conversation history. Planning should be part of the SupervisorAgent.

If possible, planner should answer the common questions.

[ ]  Finalizer should intelligently analyse the agents responses and reject if doesn't answer the query.
[ ]  Should be able to answer general questions too. Planner routes to finalizer directly in this case.

https://github.com/langchain-ai/langgraph/blob/main/examples/multi_agent/agent_supervisor.ipynb

Make planner more intelligent by adding information from the state like conversation history and/or messages
Improve Finalizer so it would be able to analyze whether responses from agents make sense, and fail accordingly when they are not
Merge planner and common node for common question. In case there is no need to go with the plan, planner should be able to generate the response to user directly without going to the task executor

Improvements in the code:

[ ] Upgrade generative-ai-hub-sdk package
[ ] Improve route function according the discussion
[ ] Add unit tests for KymaGraph

Proper streaming format

Things that can be improved in the future:
- sometimes supervisor is failing with output parser error
- error handling can be improved with retry and fallback logic
- retry logic is introduced for each node

current LangGraph:


Missing headers fail make build, clean-libraries has no target

Summary:
Please provide a short couple sentence summary.
make build fails for cmdstan-2.33.1 on MacOS ARM2, but not for cmdstan-2.32.2
Description:
Describe the issue as clearly as possible.
We are not able to compile cmdstan on MacOS ARM2 due to (apparently) missing headers.
Reproducible Steps:
Please report steps to reproduce the issue. If it's not possible to reproduce, please include a description of how you discovered the issue.
If you have a reproducible example, please include it.
Current Output:
The current output. Knowing what is the current behavior is useful.
blum@lingn45 cmdstan-2.33.1 % make clean-all
rm -f -r test
rm -f
rm -f
rm -f
rm -f
  removing dependency files
rm -f
rm -f
rm -f
make: *** No rule to make target `clean-libraries', needed by `clean-all'.  Stop.
blum@lingn45 cmdstan-2.33.1 % make build
curl -L https://github.com/stan-dev/stanc3/releases/download/nightly/mac-stanc -o bin/stanc --retry 5 --retry-delay 10
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 11.5M  100 11.5M    0     0  8781k      0  0:00:01  0:00:01 --:--:-- 24.6M
chmod +x bin/stanc

--- Compiling the main object file. This might take up to a minute. ---
clang++    -c -o src/cmdstan/main.o src/cmdstan/main.cpp
src/cmdstan/main.cpp:1:10: fatal error: 'cmdstan/command.hpp' file not found
#include <cmdstan/command.hpp>
         ^~~~~~~~~~~~~~~~~~~~~
1 error generated.
make: *** [src/cmdstan/main.o] Error 1

Expected Output:
Describe what you expect the output to be. Knowing the correct behavior is also very useful.
Correct build.
Additional Information:
Provide any additional information here.
I tried to run make clean-all which helped with some previous issues, but this did not work, since the make command failed.
Current Version:
v2.33.1

Do you have the submodules populated (e.g., is there anything in the folder stan/ and stan/lib/stan_math)?

The folder is a fresh clone of the most recent release, and the stan-folder is completely empty.
 blum@lingn45 .cmdstan % git clone https://github.com/stan-dev/cmdstan/ --branch v2.33.1 cmdstan-2.33.1

CmdStan needs its submodules - you need to add --recursive to the git clone directive.
cf. the install instructions here:  https://mc-stan.org/docs/cmdstan-guide/cmdstan-installation.html#installation-from-github. (apologies for the rtfm)

I see now, should have read more carefully. Thanks!


[Q]how to uninstall lutris?

hi um how would i uninstall lutris im getting a 256 error trying to install epic game store im thinking lutris is buggered somewhere and possibly a clean install of it may fix it.. running bazzite-deck:latest
ive tried rpm -ev lutris
errors:
error: can't create transaction lock on /usr/share/rpm/.rpm.lock (Read-only file system)
tried rpm-ostree uninstall lutris:
error: Package/capability 'lutris' is not currently requested
so um how can i do this?

It's part of the image, you cannot uninstall it and even if you could you'd be in exactly the same place. If there's an issue it affects everyone or is in a file local to your install that a reinstall would not clear.

Ok... So is it something that i should contact lutris support about or open a new issue here? Im not sure if lutris support deals with built-in installs or if they will tell me to contact distro support. Im guessing they will probably tell me to come back here.

It's part of the image, you cannot uninstall it and even if you could you'd be in exactly the same place upon reinstall. If there's an issue it affects everyone or is in a file local to your install that a reinstall would not clear.

Ok... So is the issue with lutris something that i should contact lutris support about or open a new issue here? Im not sure if lutris support deals with built-in installs or if they will tell me to contact distro support. Im guessing they will probably tell me to come back here.

A differentiation of a "built-in" install vs an install you made yourself is kind of windows thinking. This isn't professional support, we're all hobbyists.
The lutris package and configuration used by default are unmodified from upstream, so lutris should be willing to help you. Generally speaking, projects support their own code, and issues that aren't directly caused by unofficial modifications (if those modifications exist). Especially since you aren't entitled to support anywhere, it's much more of a respect economy than anything. We're all just nerds playing with our really expensive calculators, at the end of the day

A differentiation of a "built-in" install vs an install you made yourself is kind of windows thinking. This isn't professional support, we're all hobbyists. The lutris package and configuration used by default are unmodified from upstream, so lutris should be willing to help you. Generally speaking, projects support their own code, and issues that aren't directly caused by unofficial modifications (if those modifications exist). Especially since you aren't entitled to support anywhere, it's much more of a respect economy than anything. We're all just nerds playing with our really expensive calculators, at the end of the day

Ah ok wasn't sure if it was modified compared to upstream ok i shall contact them on that then.


Add licence section in readme.md

Add licence section in readme.md

@akshitagupta15june pls assign this issue to me.

Hi its not required!


[HOLD for payment 2025-01-02] [$250] [Simple AA in NewDot] Update the approval chain / next receiver logic to handle correct optimistic next approver in Advanced Approval cases

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

Version Number: Current
Reproducible in staging?: Y
Reproducible in production?: Y
Expensify/Expensify Issue URL: https://github.com/Expensify/Expensify/issues/430318
[1] Action Performed:

Create a workspace in NewDot
Enable delay submission
Invite submitter, Approver A, Approver B
Set to Advanced Approval in OldDot via workspace owner (workspace should be type Control)
Set category approvals for Category A going to Approver A + Category B as Approver B
As submitter in NewDot, submit 2 expenses to the WS chat, one with Category A, one with Category B
Submit the report
Confirm first approver is Approver A
As Approver A, approve the report

[1] Expected Result:

Confirm the second approver is Approver B (both offline & online)
As Approver B, approve the report
Confirm the third approver is workspace owner (both offline & online)
As WS owner, approve and confirm that the report is final approved.

[2] Action Performed:

Create a workspace in NewDot
Enable delay submission
Invite submitter, Approver A, Approver B, Approver C
Set to Advanced Approval in OldDot via workspace owner (workspace should be type Control)
Set up approver workflow like this:

Submitter submitsTo Approver A
Approver A forwardsTo Approver B
Approver C forwardsTo workspace owner

As submitter, create an expense in the workspace chat & submit it -> this should get submitted to Approver A
As workspace owner, update approver workflow so that Submitter has submitsTo of Approver C
As Approver A, approve the report (in NewDot)

[2] Expected Result:

Verify that Approver C is the next approver (both offline & online)
As Approver C, approve the report
Verify the next approver is the workspace owner (both offline & online)
As the workspace owner, approve and confirm the report is final approved

Implementation details
ReportUtils.getApprovalChain
This function should ONLY return the submitter's approval chain based on the current policy.employeeList data.
We need to start including category & tag approvers in this function. Category approvers should come first, then tag approvers, then approvers in employeeList.
Here's what we have in C++ which should give a good starting point:
    vector<string> approvalChain;
    string nextApprover = Policy::getSubmitsToEmail(db, policyID, submitterEmail, employeeList);

    // If there's no submitsTo, just use the policy owner so we have someone to submit to
    if (nextApprover.empty()) {
        const string& policyOwner = Account::getEmail(db, Policy::getOwner(db, policyID));
        approvalChain.push_back(policyOwner);
    }

    // We don't want to add someone who's already in the approval chain, or it'd become an infinite loop
    const int64_t reportTotal = abs(getTransactionTotal(db, reportID, getCurrency(db, reportID)));
    while (!nextApprover.empty() && find(approvalChain.begin(), approvalChain.end(), nextApprover) == approvalChain.end()) {
        approvalChain.push_back(nextApprover);

        // Get the forwardsTo or overLimitForwardsTo (if over the approval limit)
        nextApprover = Policy::getForwardsTo(employeeList, policyID, nextApprover, reportTotal);
    }

    // The full approval chain with rule approvers before submitsTo/forwardsTo approvers and no repeats
    // We use an unordered_set to ensure unique elements while inserting and preserving the order of the original vectors
    vector<string> fullApprovalChain;
    unordered_set<string> uniqueApprovers;
    for (const auto& approver : ruleApprovers) {
        // Don't force the submitter to approve as a rule approver, because it could get confusing for the user
        if (ruleApprovers.contains(submitterEmail)) {
            SINFO("Submitter is also rule approver, skipping adding to approval chain");
            continue;
        }

        // If insertion was successful (i.e., not already in the set), then add to the full approval chain
        if (uniqueApprovers.insert(approver).second) {
            fullApprovalChain.push_back(approver);
        }
    }
    for (const auto& approver : approvalChain) {
        if (uniqueApprovers.insert(approver).second) {
            fullApprovalChain.push_back(approver);
        }
    }

    // If the submitter of the report is also the last person that needs to approve and the policy doesn't allow self-approval, then skip that person.
    if (!fullApprovalChain.empty() && fullApprovalChain.back() == submitterEmail && Policy::isPreventSelfApprovalEnabled(db, policyID)) {
        fullApprovalChain.pop_back();
    }

    return fullApprovalChain;

IOU.getNextApproverAccountID
This function should figure out who, in the policy's current approvalChain (built by buildApproverChain above) is next in line to approve the report.
This function will also check IF the report has been previously approved by someone in the approval chain - if so, they will be skipped.
Here's what we have in C++ which should give a good starting point:
string Report::getNextReceiver(SQLite& db, const int64_t reportID, const string& currentApprover, const vector<string>& approvalChain)
{
    if (!verifyState(db, reportID, STATE_OPEN) && !verifyState(db, reportID, STATE_SUBMITTED)) {
        return "";
    }

    const set<int64_t> previousReportApprovers = getAccountsThatHaveApprovedReport(db, reportID);

    // Loop through approval chain to find the next approver who has not yet approved the report
    const string& managerOnVacation = getValue(db, reportID, NVP_MANAGER_ON_VACATION);
    for (auto it = approvalChain.begin(); it != approvalChain.end(); ++it) {
        const string& approver = *it;
        string approverOrDelegate = approver;

        // Handle vacation delegate
        if (approver == managerOnVacation) {
            const string& vacationDelegate = Account::getVacationDelegate(db, managerOnVacation);
            approverOrDelegate = !vacationDelegate.empty() ? vacationDelegate : approver;
        }

        // Return early if the report is open
        if (verifyState(db, reportID, STATE_OPEN)) {
            return approverOrDelegate;
        }

        // Return the first approver in the approval chain that hasn't approved yet
        const bool reportHasBeenApprovedByApproverOrDelegate = previousReportApprovers.contains(Account::getID(db, approverOrDelegate));
        if (currentApprover != approverOrDelegate && !reportHasBeenApprovedByApproverOrDelegate) {
            return approverOrDelegate;
        }
    }

    return "";
}

set<int64_t> Report::getAccountsThatHaveApprovedReport(SQLite& db, const int64_t reportID)
{
    const set<string> RESET_APPROVAL_ACTIONS = {
        ACTION_REJECTED_TO_SUBMITTER,
        ACTION_RETRACTED,
        ReportAction::ACTION_SUBMITTED,
        ReportAction::ACTION_DELEGATE_SUBMIT,
        ACTION_REOPENED,
        ReportAction::ACTION_UNAPPROVED,
    };

    const set<string> APPROVAL_ACTIONS = {
        ReportAction::ACTION_APPROVED,
        ACTION_FORWARDED,
        ACTION_CLOSED,
    };

    set<string> allActionsOfInterest;
    allActionsOfInterest.insert(RESET_APPROVAL_ACTIONS.begin(), RESET_APPROVAL_ACTIONS.end());
    allActionsOfInterest.insert(APPROVAL_ACTIONS.begin(), APPROVAL_ACTIONS.end());
    allActionsOfInterest.insert(ACTION_REJECTED);

    SQResult result;
    DB::read(db, "SELECT action, accountID, created FROM reportActions WHERE reportID = " + SQ(reportID) + " AND action IN (" + SQList(allActionsOfInterest) + ") ORDER BY created DESC;", result);

    set<int64_t> recentApprovers;
    map<int64_t, int64_t> approversWithApprovalCount;
    for (const auto& row : result.rows) {
        const int64_t accountID = SToInt64(row["accountID"]);
        if (!SContains(approversWithApprovalCount, accountID)) {
            // Note: We don't care about approval order because we only care about the order of the "next approvers"
            // in the approval chain to figure out the next receiver, not the order in which previous approvers approved the report
            recentApprovers.insert(accountID);

            // Initialize this approver in the map
            approversWithApprovalCount[accountID] = 0;
        }
        if (APPROVAL_ACTIONS.contains(row["action"])) {
            approversWithApprovalCount[accountID] += 1;
        } else if (row["action"] == ACTION_REJECTED) {
            approversWithApprovalCount[accountID] -= 1;
        } else {
            // We reached an action that resets the "approval" state of a report, ignore rest
            break;
        }
    }

    // Take out all the approvers who had a net 0 amount of approvals (ex: they approved but then unapproved)
    for (const auto& [accountID, count] : approversWithApprovalCount) {
        if (count <= 0) {
            recentApprovers.erase(accountID);
        }
    }
    return recentApprovers;
}

View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~021856641526591668663
Upwork Job ID:<PHONE_NUMBER>591668663
Last Price Increase: 2024-11-13
Automatic offers:

nkdengineer | Contributor | 104876723

cc @nkdengineer in case you're interested to work on this, since you worked on https://github.com/Expensify/App/issues/51001 recently

@Beamanator I'd like to work on this.

Thank you @nkdengineer 👍
Please feel free to ask questions here before starting your PR IF you have any, either way I will try to do a very detailed review 🙏

Sure.

Update:

I'm looking into this with the provided logic, I'll finish and raise the PR tomorrow or Saturday.

@Beamanator I created a draft here. Please help test it with your local backend. Now I can only test with two rule approvers because it's marked as approved after the first rule approver approves the expense report.

Some problems I've seen so far in my testing

Note: I have the following setup:

Control policy, on Submit & Approve, default submitter is policy owner
2 tag approvers & 2 category approver set up
Submitter creates expenses in this order:

Tag approver 1
Category approver 1
Category approver 2

When Submitter first submits, I see that we submit to Category approver 2, though in it should be Category approver 1 as the first expense w/ a category approver, no? It shouldn't be "the latest category approver", it should be the first by created date.

Can you please try that and see if you reproduce the issue?
As for the approval order when there's multiple category approvers, i think i see the problem in the back end that i'll start working on a fix for

It shouldn't be "the latest category approver", it should be the first by created date.

@Beamanator  I tested this case and Category approver 1 is the first next approver

FYI backend PR was merged earlier today, hasn't been deployed yet

@nkdengineer backend PR was deployed 🙏  please continue with this one & let me know if you hit any more bugs

Sure I will retest soon.

@Beamanator I tested with the staging server and we still don't archive the expected:
Precondition:

A WS with a submitter, approver 1, approver 2, approver 3, approver4
Enable rules and add a category's approver for approver 1 (category 1), another one for approver 2 (category 2)
Add a tag's approver for approver 3 (tag 1), another one for approver 4 (tag 2)

Create 4 expenses with category 1, category 2, tag 1, tag 2
Submit the report
After the submit the first approver is approver 1 (Correct)
As approver 1 approves the report
Offline, the next approver is the approver 2 (Correct)
Online, the next step is waiting admin to pay the expense (Incorrect) (The expected should be the next approver is approver 2).

wtf... i see what you're seeing 🙃 @nkdengineer what approval mode have you been testing on? Me, Submit & Approve
https://github.com/user-attachments/assets/b4dfefb7-9fa5-4c5a-baf6-b95f44963f9d

@Beamanator Advance approve mode.

Sounds good - you should be good @ntdiary as long as you'll be free early next week!
I am working on fixing another internal bug 😬 https://github.com/Expensify/Expensify/issues/446644

@nkdengineer FYI the bug I found is actually in Submit & Approve flows... Because we DO actually need to test that this all works in both Submit & Approve (S&A) and Advanced Approval (AA) flows 😬
So once again, hopefully my fix will get merged today, not sureeeee if it'll get deployed by the weekend or not, but if not we'll have to pick this back up Monday 🙃
In the meantime, I would appreciate if you can let me know your exact setup for the Advanced Approval flow where you found a bug - cuz i don't thinkkk my fix will cover that case, only Submit & Approve

Okkkk that makes much more sense - thanks @nkdengineer 🙏
can you please test again on Advance Approval, and if it's working we can try to get the PR ready for that case? Hopefully today / tomorrow I'll get the fix in for BASIC approvals

Will re-test today.

Amazing, that's great to hear 👍 👍

FYI backend PR merged now, may not get deployed till tomorrow - we'll see

FYI backend PR merged now, may not get deployed till tomorrow - we'll see

@ntdiary The PR is ready for review. cc @Beamanator

Ooohhh goood question - I see that we should return updated Next Steps for the approver, but we may not live update that for all clients when we forward / approve 🤔  Thanks for reporting that! I will make sure to look into that

Ok I just discussed internally & we found the expected category vs tag approver sort order for NewDot here, and here's what we came up with:
Category vs Tag approver order (for now):

Category approvers come before tag approvers
If there's multiple category approvers for the report (for example, but same logic for tag approvers)

First choose approvers from expenses with earliest (farthest in the past) transaction created date (the selected date on the expense)
If there's multiple expenses on that day w/ different category approvers, sort by earliest transaction inserted date

If there's multiple tag approvers for any 1 single expense...

Sort approvers alphabetically

@Beamanator Currently, the transaction data in the frontend only have the created (the selected date on the expense), we don't have inserted date. It makes it a bit hard to sort the transaction list if multiple transactions have the same created. Because in this case, we need to compare the iou created action.

Ooh good shout @nkdengineer - I will fix that in a PR today which should get merged tomorrow

Good, I will complete the order after the PR is deployed.

I was OOO yesterday :D but the PR was deployed 👍

Updated the PR.

welcome!! 🤣

@puneetlath I'll need you for payment once this is done? Or I can find someone else 🤷

Ahh I see. Thought this was back-end. Re-assigned.

Nooooooo worries sir, I'm commenting a lot but yeah it's front end 👍 🙏

I definitely think it's fair to bump the bounty on this one, it's a pretty complicated issue that we're trying to get perfect 👍

@Beamanator Based on this, please help update the price. Thanks. cc @puneetlath

Thanks for bringing that up - @puneetlath I agreed that this PR is pretty complex & handles a LOT of approval use cases (both category & tag approvers, plus simple & advanced approval flows), so I believe both @nkdengineer and @ntdiary deserve bumps for this one.

What should the payout be?

I would think doubling to $500 is fair

Ok sounds good. @nkdengineer will be paid $500 here. And @ntdiary will be paid via NewDot.
@ntdiary can you please complete the checklist?

@Beamanator what do you think?