Make nav localizable.

Right now it's only in English. I think it should be pretty straightforward with the withContent HoC.

I'm willing to try once I set up the website locally


Fix: Date shown in Daily/Week stats

We're getting dates back as UTC... and I notice when it's before midnight for me (Eastern time) the day for data switches over, but the day still shows as my current date.
This makes sense because the atom is just creating a new date based on the user's machine.
To make this safer I should reconsider the structure for the fetchDailyStats function. Perhaps working with Date objects isn't the best approach and we should more heavily rely on the date indicated by the most recent data we're receiving.

The more I worked on this, the more I found I was overthinking some of this.
I would be better off focusing on many of these these points once it's time to add the ability for time conversion. But that's a rabbit hole I'd rather not go down until more of the app has substance.


[RFC][language] Implement a primitive LibraTime module

Motivation
Implement a LibraTime module for a better wrapper of the notion of time on chain.
Have you read the Contributing Guidelines on pull requests?
Yes

General thoughts:

Should we have a LibraTime.MutT vs LibraTime.T so that LibraTime.T is immutable?
Should we make a LibraTime.T a resource?
What are the other basic apis we need to support?

:umbrella: The latest upstream changes (presumably e8034b820c38722f2edaa6c4c0d2ade8a325328e) made this pull request unmergeable. Please resolve the merge conflicts.

cc @zekun000 @dmitri-perelman just to keep an eye on Move's time implem

Should we make a LibraTime.T a resource?

My vote would be no; this doesn't need to be published at the top level, and there's no problem with copying it.

What are the other basic apis we need to support?

I think utilities like is_before_minutes(&Time.T, u64), is_before_hours(&Time.T, u64), is_before_days(&Time.T, u64), etc. would be useful.

:umbrella: The latest upstream changes (presumably e9a2a11ac1ae3b641c236b65b36a488b31afd45d) made this pull request unmergeable. Please resolve the merge conflicts.

:umbrella: The latest upstream changes (presumably 81ee8a7b5e07141ce5739fc5f17536889494f8bd) made this pull request unmergeable. Please resolve the merge conflicts.


feat: add show cutout prop

Addresses #198 by adding the showCutout prop to DonutChart. It is set to false by default, so it does not change existing behavior. Also, when it is set to false the label in the center won't be rendered.
I also added a story to showcase it:

@dmytro-tinybird Nice detail, thank you very much!


Doc , update image_lib.rst

improve with add default location when creating thumbnail

Feel free to give me revision and feedback. I don't mid to make more changes for awesome changes and also awesome documentation. :smile:

@narfbg I already move it to next line. Anything else?

Also, please keep it in sync with other line lenghts - we generally start a new line after the 76th character.

Did i miss something to read?

What you've quoted was in reference with starting a new line, but you did miss the first part of my comment:

at the same level as

Bolded words are corrections ...
Also, please rebase your patch on the latest code. I don't know what you did, but your own commit doesn't show now.

@narfbg sorry i new when using git, really mess up by what is shown on cli and here.
i already change the doc as your request.
is it now relevant with rebase that you request?
if not more specific rebase command will help me, sorry for this.
last PR what i made also like this, as i know it about line ending :confused:

Look at the diff and you'll see it's obviously not ok ...


feat: add optional activity logs for several entities

Some Create actions are actually does upsert, this is called every period to sync rules and resources from buckets to Shield.
The periodic jobs do not need to logs the activity to avoid spamming activity logs for now
We could remove this option once we have on-demand approach of syncing rules and resources

closing this and reopen if this still relevant


Add bigrock.txt to /it

URL: https://www.bigrock.it
Address: via Boschi 12, 31056 Roncade (TV) - Italy
Course: https://www.bigrock.it/coding/

@begg-io Thank you for your patience while waiting for a review and processing your request. Pull request merged.


nameserver got <IP_ADDRESS>

Windows Version
Windows 11 home edition
WSL Version
<IP_ADDRESS>
Are you using WSL 1 or WSL 2?

[X] WSL 2
[ ] WSL 1

Kernel Version
<IP_ADDRESS>-2
Distro Version
Ubuntu 24.04
Other Software
No response
Repro Steps
cat /etc/resolv.conf got wrong server
how should I got correct one if edit manullay
Expected Behavior
# generateResolvConf = false
nameserver 172.x.x.x
search lan

Actual Behavior
generateResolvConf = false
nameserver <IP_ADDRESS>
search lan

Diagnostic Logs
WslLogs-2024-09-29_23-49-07.zip

Disable dnsTunneling.  It's enabled  by default. Add dnsTunneling=false to your $HOME\.wslconfig

Create or edit the .wslconfig file in the directory %UserProfile% in Windows host, following this url.


Styling flags is impossible

I tried using the builder to style the flag, for example to wrap with a circular shaped container instead of the default squared container but couldn't access other things such as the image file from within the package.

I just added a pull request for this issue #134

I just added a pull request for this issue #134

merged


Sort title is missing in some records

Some records do not to have a title to sort by.  The backend is expecting them to be identified by /json/identified_by[./classified_as/equivalent/id='http://vocab.getty.edu/aat/300451544'].  Examples:

With: https://lux.collections.yale.edu/data/person/8d1e529c-6853-4fef-8519-56e18f9ba3b0
Without: https://lux.collections.yale.edu/data/person/81ed8efd-5dbd-4ddc-9d2c-c3609483da92

Impact: when sorted by name, they are always last regardless of sort direction.
Related ticket: ML 363

We think we've fixed it, hopefully in next build

^-- dataset 2024-11-23

Indeed, the last results for agents born/started at London are different between ascending and descending order.  Thanks!

Last page, ascending
Last page, descending

@brent-hartwig excellent, good to confirm it's widespread fixed!


.then method for vcRecaptchaService.execute()?

I am using anuglar-recaptcha for adding Google Invisible Recaptcha to my login form
The issue I am facing is, immediately after I call vcRecaptchaService.execute, if I print the recaptcha_reponse I will see undefined as output. But if I print recaptcha_reponse few seconds afterwards by using a test function printRecaptchaReponse I will see the recaptcha_reponse getting printed.
The Issue here is, the library function vcRecaptchaService.execute() is not returning a $promise here. Its actually returning none
Is there any way to promisify this ?
Whats the ISSUE:
// 1. Call this function from html first
 $scope.testRecaptchaExecute = function() { 	vcRecaptchaService.execute($scope.widgetId); 	console.log($scope.user.recaptcha_reponse); 	// undefined 	return(); }
// 2. Call this function from html few seconds after testRecaptchaExecute() is called
 $scope.printRecaptchaReponse = function() { 	console.log($scope.user.recaptcha_reponse); 	//JVRk4cZ4J_RluoH2 }
WHAT I want:
vcRecaptchaService.execute().then(ret => { //do something here })
Question Summary
How to use .then method for vcRecaptchaService.execute()?

Refer to this stackoverflow discussion for solution


Body damage from multiple dice terms is incorrect

Shouldn't this be 5 body?

On ½d6 of Normal Damage, the STUN is half the face value rolled (rounded up), and it does 1 BODY on a roll of 4-6.  Reminder that we roll 1d3 not a 1d6.  I actually prefer the 1d3 as it is clear it is a half dice.

This should be counted correctly now with the new roller.


Initial Migration Error

I'm assuming this is because I have the wrong Core 2.1 instead of 2.2. (would be great to know how to update it). Here is the error:
The EF Core tools version '2.1.1-rtm-30846' is older than that of the runtime '2.1.4-rtm-31024'. Update the tools for the latest features and bug fixes.
Microsoft.EntityFrameworkCore.Model.Validation[30000]
No type was specified for the decimal column 'Price' on entity type 'Movie'. This will cause values to be silently truncated if they do not fit in the default precision and scale. Explicitly specify the SQL server column type that can accommodate all the values using 'ForHasColumnType()'.
Microsoft.EntityFrameworkCore.Infrastructure[10403]
Entity Framework Core 2.1.4-rtm-31024 initialized 'RazorPagesMovieContext' using provider 'Microsoft.EntityFrameworkCore.SqlServer' with options: None
To undo this action, use Remove-Migration.

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

ID: 6719f08e-3bd7-dc1a-71df-f2ef9fbca9d8
Version Independent ID: 7096fdb3-612e-9e00-bd0b-8ea4886a09ce
Content: Add a model to a Razor Pages app in ASP.NET Core
Content Source: aspnetcore/tutorials/razor-pages/model.md
Product: aspnet-core
GitHub Login: @Rick-Anderson
Microsoft Alias: riande

See https://docs.microsoft.com/en-us/aspnet/core/tutorials/razor-pages/razor-pages-start?view=aspnetcore-2.2&tabs=visual-studio#prerequisites


[resotocore][feat] Show ck mascot on help

Description

Do not show the logo if color is not supported.

What do you think about having the resoto cli version to the right from the image? so that the empty space is filled with something


AMBARI-22897 - Tez view button doesnt works in ambari views 1.5

What changes were proposed in this pull request?
https://issues.apache.org/jira/browse/AMBARI-22897 : Tez view button doesnt works in ambari hive views 1.5
Visual-explain, visualization , tez , and settings was 'views' is not made route due to those buttons where not working as it was hitting : emberjs/ember.js#10780
How was this patch tested?
Tested the UI changes
All works fine
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 50.773 s
[INFO] Finished at: 2018-03-08T18:08:26+05:30
[INFO] Final Memory: 77M/1423M
[INFO] ------------------------------------------------------------------------
UT cases corrected and folder made correct
[INFO] Results:
[INFO]
[INFO] Tests run: 94, Failures: 0, Errors: 0, Skipped: 0
[INFO]
No change to Apperance even though there are changes in the implementation logic.

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/Ambari-Github-PullRequest-Builder/1046/
Test PASSed.


System.TimeSpan encoded as "hh:mm:ss" string, but at decoding time a float is expected

I have the following type shared between the backend and front end.
type Config = {
    ....
    HistoryPeriod: System.TimeSpan
}

On the backend, this is encoded using Thoth.Json.Net and sent across the wire to a Fable app, where Thoth.Json is used to decode it into the same Config type defined above. At decode time, I get the following error:
Error at: `$.Config.HistoryPeriod`
Expecting a float but instead got: "01:00:00"

I spent a bunch of time debugging this, and it seems like there may be some asymmetry happening between Thoth and (maybe?) Fable. The former, on the backend, decides to do a custom string encoding, but on the front end (JS runtime) seems to rely on reflection info that's generated by (I think) Fable, which looks like this:
export function Config$reflection() {
    return record("LibInfraHealth.Types.Config", [], Config, () => [
        ...
        ["HistoryPeriod", float64],
    ]);
}

So the decoder decides it wants a float. For what it's worth, Fable lists https://fable.io/docs/compatibility.html that System.TimeSpan is represented as number.
Am I understanding this correctly? What's the right way to get all this working?
I'm pretty sure it shouldn't matter, but I had to hack together an OutputFormatter wrapper over Thoth.Json.Net to get it working with ASP.NET Core MVC, based on the Thoth.Json.Giraffe implementation.

So the decoder decides it wants a float. For what it's worth, Fable lists https://fable.io/docs/compatibility.html that System.TimeSpan is represented as number.

I think you are on the right track with this.
It seems like a bug in Fable.
open Fable.Core
open Thoth.Json
open System

let json =
    TimeSpan.FromHours(10.)
    |> Encode.timespan
    |> Encode.toString 0

let value =
    Decode.Auto.fromString<TimeSpan> json

JS.console.log(value)

generates:
import { float64 } from "fable-library/Reflection.js";
import { fromHours } from "fable-library/TimeSpan.js";
import { Auto$$$fromString$$Z33228D48 as Auto$0024$0024$0024fromString$0024$0024Z33228D48 } from "fable-repl-lib/src/Decode";
import { toString, timespan } from "fable-repl-lib/src/Encode";
export const json = toString(0, timespan(fromHours(10)));
export const value = Auto$0024$0024$0024fromString$0024$0024Z33228D48(json, null, null, {
  ResolveType() {
    return float64;
  }

});
console.log(value);

See how ResolveType is returning instead of return type("System.TimeSpan").

cc @anchann @isaacabraham
Fable 2.3.14 has been released. https://github.com/fable-compiler/Fable/releases/tag/2.3.14
Can you please confirm that this fixed the issue?

Hi, thank you for looking into this.
I've pulled in 2.3.14 into my project. Decoding no longer fails, but there's a number of other issues that I've come across:

Decoding (in the JS runtime) of negative TimeSpans (that were successfully produced by encoding in the dotnet runtime) fails
Encoding in the JS runtime fails, producing a number of some sort (so I imagine trying to send values back to the server would fail on decode)
Decoding (in the JS runtime) of values that contain milliseconds seems buggy. On the right is the value produced by encoding on the dotnet side, on the left is the result of calling TotalSeconds on the decoded value. Things seem off by a few orders of magnitude, but also notice the situation with the second line.

"00:00:00.0278460" -> 278.46
"00:02:00.0156900" -> 276.9
"00:00:00.0156800" -> 156.8
"00:00:00.0277320" -> 277.32
"00:00:00.0277400" -> 277.4
"00:00:00.0277050" -> 277.05

I'm under some time pressure, so can't do more digging at the moment, sorry. Reverting to working with raw milliseconds for now.

Thoth.Json is doing nothing special, it's calling TimeSpan.Tryparse so I guess the TimeSpan implementation is broken and so this is a bug in Fable.

You seem to already have a working relationship with the author of fable — may I ask you to propagate the bug report there? If not, I'll eventually get to writing up the report.

Decoding (in the JS runtime) of negative TimeSpans (that were successfully produced by encoding in the dotnet runtime) fails

Negative TimeSpan parsing is not implemented in Fable, I have a fix for it.

Encoding in the JS runtime fails, producing a number of some sort (so I imagine trying to send values back to the server would fail on decode)

I can't reproduce or don't understand the problem. Can you please provide me with a set of examples?

I tried upgrading to the newer version and everything just worked for us. Although we weren't using negative timespans!

@anchann I have a PR https://github.com/fable-compiler/Fable/pull/1867 fixing point 1 and 3 of your list.
But I can't fix point 2 because I can't repro it.

@MangelMaxime thank you for fixing 1 and 3.
I tried to put together a repro case for 2 in the REPL. Please let me know if my expectations are off.
open Fable.Core
open Thoth.Json
open System

let timespan = TimeSpan.FromSeconds(5.0)

JS.console.log("timespan")
JS.console.log(timespan)

let timespanStringified = Encode.Auto.toString(0, timespan)

JS.console.log("timespanStringified")
JS.console.log(timespanStringified)

this produces the following output, as it does on the dotnet runtime:
timespan
5000
timespanStringified
5000

I would have expected it to produce the following output:
timespan
5000
timespanStringified
"00:00:05"

I also briefly wondered if toString in some way fails to infer time correctly at runtime (sorry, don't fully know how this stuff works), so I tried supplying a type manually:
let timespanStringifiedTyped = Encode.Auto.toString<TimeSpan>(0, timespan)

JS.console.log("timespanStringifiedTyped")
JS.console.log(timespanStringifiedTyped)

but this still produced output that didn't match expectations
timespanStringifiedTyped
5000

@anchann Thank you for the example.
Did you run it against latest version of Fable 2..3.14? Because here it seems like it's using the float encoder instead of the timespan encoder which match with the problem I fixed first in the reflection API.

@MangelMaxime just tried running against a local copy of the repl where I updated the version of fable-compiler to 2.3.14 in package.json (verified by hovering a random file in dev tools — it does seem to come from the right version: http://localhost:8080/js/repl/lib/fable-library.2.3.14/Reflection.js). The results are the same as what I posted. Hopefully I'm not screwing anything up in my testing.

Hmm, actually, as another check, I tried adding a decode test:
let decodeTest = Decode.Auto.fromString<TimeSpan> "\"00:15:42\""
JS.console.log(decodeTest)

this should work in 2.3.14, as verified within my app, but should fail in 2.3.10, as it did before. In my local repl, it fails with
Error at: `$`↵Expecting a float but instead got: "00:15:42"

So... I don't know what to think. I've definitely successfully decoded this format with 2.3.14, yet in this repl it's failing.
Do you know how I can verify that I'm indeed using 2.3.14 in the repl?

I'm wondering if the repl has two separate instances of fable-compiler, one with which the repl app itself is built, and one which the user's input is piped into for evaluation. This is just a guess...

There do have 2 instances indeed.
You have the instance used to compile the REPL itself like any Fable project.
And then when you run code from the browser it's another instance hosted directly in the browser which uses a custom version of the F# and Fable compiler.
To test your code its in general easier to start a fresh project. Because it's easier to set up and check that everything is ok ^^.
But because, I don't have tests for TimeSpan and Auto coder, I will add them to the repos and will see what the CI says :)

Awesome, thank you.
Ideally the REPL would allow one to choose the version the user's code is compiled with, but I imagine this is a nontrivial change.

Everything should be fixed with<EMAIL_ADDRESS>If there is still a bug or you discover a new one about TimeSpan please open it on Fable repo.
Unless it's due to json serialisation/deserialization but the CIs pass the tests so it should works.

@MangelMaxime Thank you! I've tried it out, and things seem to be mostly working, except for the serialization of negative values in the JS runtime.
Thoth.Json.Encode.Auto.toString(4, TimeSpan.FromSeconds -153.0)

produces this:
"-1.-1:-3:-33"

Fixed by latest version of Fable

Thank you very much, verified to be working correctly.


Message never arrive if server lost or network change to wifi or 3g

The problem cames when a device change the network ( change from 3g to WiFi, change 3g IP. or the device lost the network ( turn off 3g, wifi or lost connection ). The server thinks that the device is online and send the message but it (obviusly) never arrive try to fix this or any other option like automatic resend if network or user is online/available .

We have implemented improved auto-resend, and now also show delivery confirmation check marks.


Log scale

Hi,
it would be great if tessera supported log scale on the y-axis of a e.g. standard time series graph.
That's a tiny yet powerful feature to display spikes in response time, lag, choose-your-metric. Currently a huge spike makes the chart unreadable. Setting a predefined max is not enough.
Any thoughts on this?
Cheers,
Kornel

Done

works great, thanks


Handle whitescreen after splash screen removed

Hi All,
I am showing splash screen(TWA splash) when launching TWA, but i see white screen for 4-5 seconds after splash screen when launch app after a delay, as my web code needs to load a lot more data before launch, i know my web code should not take too much time to load, but i want to handle this white screen with a loader on native end only due to some limitation.
I have not extended LauncherActivity neither used it as launcher in Manifest, i had copied code(what ever required) from this activity to my native activity Abc due to some conditional launch.
I am not able to figure out which activity is hosting web content now after TWA launch. As my activity Abc seems to be in onPause state. so i can not use this activity to show loader. I f i used a new activity to show a loader my web content does not load in background, it starts loading only when web content is in foreground.
I want to show loader when there is time to load web content, is there any way to do it?
Note: i have few redirects in my web urls for launch.

The splash screen provided by the TWA will go away according to the progress on the page load - IIRC, when DOMContentLoaded is fired, but this may not be exact.
From your description, it looks like the web app is showing performance issues, and that's what needs to be improved. Start by making sure that the startUrl is the final URL and avoid any redirects. Check out https://web.dev/fast/ for more tips on performance.
As a reminder, we strongly recommend a Lighthouse performance score equal or larger than 80. You can use https://web.dev/measure/ to check the web app's performance.

The splash screen provided by the TWA will go away according to the progress on the page load - IIRC, when DOMContentLoaded is fired, but this may not be exact.
From your description, it looks like the web app is showing performance issues, and that's what needs to be improved. Start by making sure that the startUrl is the final URL and avoid any redirects. Check out https://web.dev/fast/ for more tips on performance.
As a reminder, we strongly recommend a Lighthouse performance score equal or larger than 80. You can use https://web.dev/measure/ to check the web app's performance.


Add instructions on how to run Dynamodb locally with docker

Now that we have support for running Dynamodb, thought it would be a good idea to add readme instruction on how one could set it up to run locally.

Instructions have been added by @M1chaelTran


⚠ ClamAV has degraded performance

In 1a86fb5, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 68 ms

Resolved: ClamAV performance has improved in 9829303.


Ability to syntax check network policies using calicoctl dry-run

Expected Behavior

Just wondering if there is a --dry-run option or anything similar for networkpolicy and globalnetworkpolicy kinds to check the validity of policies before applying.
The idea is to have a step in our pipeline for each PR to check the syntax/validity of rules before applying to the cluster.
Current Behavior

Possible Solution

Having --dry-run option.
Steps to Reproduce (for bugs)

Context

Your Environment

Felix version (if using Felix binary directly calico-felix --version):
And/Or, calico/node container version (if running Felix in a container):
Which orchestrator are you using (e.g. Kubernetes, OpenStack, Docker, Mesos):
Orchestrator version (if used):
Etcd version (if using etcd datastore driver):
Operating System and version:
Link to your project (optional):

What do you mean by checking the validity of a network policy? If you mean syntactically correct then that is probably possible but if you mean more like check if it will block or allow what you want I think would be next to impossible to tell based on a single policy by itself.

Going to close as a duplicate of https://github.com/projectcalico/calicoctl/issues/2117


Rename github.com/codegangsta to github.com/urfave

Noticed the below comment from the cli module used by swarm, hence updated the path to keep the dependency consistent
"Notice: This is the library formerly known as github.com/codegangsta/cli -- Github will automatically redirect requests to this repository, but we recommend updating your references for clarity."

Please sign your commits following these rules:
https://github.com/docker/docker/blob/master/CONTRIBUTING.md#sign-your-work
The easiest way to do this is to amend the last commit:
$ git clone -b "master" git@github.com:yehohanan7/swarm.git somewhere
$ cd somewhere
$ git commit --amend -s --no-edit
$ git push -f

Ammending updates the existing PR. You DO NOT need to open a new one.

I'm ok to do a rename, but I see +4,185 / −1,404 so it's more than a rename.
I guess you also updated to a newer version ?

Hi, Yes, I used the latest revision. If that's unnecessary, I will revert to the older revision.

updated to use the same revision of the package now.


Add helper script to change the deployed MCO image

Description of the change:
Added a small shell script to automate changing the MCO image deployed in a cluster through the CSV resource.
Motivation for the change:
Manual work that has many steps which can have mistakes or be forgotten.

@douglascamata this might not work from ACM 2.9 onwards. We now change the MCO image via a configmap - https://github.com/stolostron/multiclusterhub-operator#add-image-overrides-via-configmap
Context https://redhat-internal.slack.com/archives/CUEMEHRA9/p1697051515351129

@coleenquadros ack. Will take a look at this when I have some time.


Manage more than 1 COLOR_X attributes

Currently, only COLOR_0 is managed.
(see #212 where I found this problem)
Multiple question on how to handle more than one COLOR_X attribute:

If material has no baseColor, how to handle? Blender can display only 1 vertex color at time
If material has baseColor, vertex color is used as multiplier factor. Should I multiply each vertex color themself before multiply baseColor ?

@donmccurdy Any thoughts? Should I ask directly on glTF repo ?

Hello @scurest
After your changes, merged yesterday, we manage more than one COLOR_x, but not sure how this is handle in material stuff

Right now it's exactly as donmccurdy said above. The COLOR_1, etc. layers will be imported if they exist, but nothing is done with them. They don't affect the materials in any way.

@julienduroure What still needs to be done for this?

Seems this can be closed


Project name doesn't show default in projects browser

Needs an asterix at the end like the project list browser

Now shows a *. Fixed in 3.0.17


Support for multiple annotation targets

Hi,
I notice that the target of the annotation generated by annotorious is a single element. The web annotation specification allows multiple targets. For the web application This is a requirement for the web app I'm developing as each annotation points to a IIIF region but also to the corresponding segment of text in a TEI file. Ideally annotorious would be able to accept a collection of targets and leave untouched those that are not relevant to the image viewer.
Is there any plan to support multiple targets in that way?
Note that in the meantime, my work around consists in an encoding/decoding layer between the single target annotorious annotations and the multi-target annotations my app loads/saves. From outside openseadragon it is multi-target, but for the purpose of the plugin it is temporarily turned into a single-target.

At the moment, Annotorious will strip off extra targets, I believe, yes. So you'll need to stick with the workaround for the time being I'm afraid. I'm already working on Annotorious v3, though, which will be a complete re-write from scratch. I'll definitely put this on the list!

Hi, no problem, thanks for letting me know and glad it might be part of the next version.


Number of percentiles and group by tags significantly affects performance

Hi,
We observed what we could consider as an abnormal performance behaviour related to percentiles and group by computations.
The elapsed time of the query grows significantly when new values are added (no new tags).
Also, if we:

reduce the numbers of percentiles computed
and/or
reduce the number of tags in the group by clause

then the elapsed time of the query decrease significantly.
Our test case:
Influx: 1.2.2
1 measurement
76 numseries
624644 values
9 Tags
Tag1: nbr distinct keys: 13
Tag2: nbr distinct keys: 3
Tag3: nbr distinct keys: 76
Tag4: nbr distinct keys: 2
Tag5: nbr distinct keys: 3
Tag6: nbr distinct keys: 16
Tag7: nbr distinct keys: 76
Tag8: nbr distinct keys: 4
Tag9: nbr distinct keys: 1
Results:
Query1 duration 23 seconds:
SELECT percentile("cpu", 100) AS "max", percentile("cpu", 99) AS "99th Pctl", percentile("cpu", 90) AS "90th Pctl", percentile("cpu", 75) AS "75th Pctl", percentile("cpu", 50) AS "50th Pctl", mean("cpu")
AS "avg" FROM "testcasemeasure" GROUP BY "Tag1", "Tag2", "Tag3", "Tag4", "Tag5", "Tag6", "Tag7", "Tag8", "Tag9"
Query2 duration 6 seconds:
SELECT percentile("cpu", 100) AS "max", percentile("cpu", 99) AS "99th Pctl", percentile("cpu", 90) AS "90th Pctl", percentile("cpu", 75) AS "75th Pctl", percentile("cpu", 50) AS "50th Pctl", mean("cpu")
AS "avg" FROM "testcasemeasure" GROUP BY "Tag6"
Query3 duration 5 seconds:
SELECT percentile("cpu", 99) FROM "testcasemeasure" GROUP BY "Tag1", "Tag2", "Tag3", "Tag4", "Tag5", "Tag6", "Tag7", "Tag8", "Tag9"
Query4 duration 1 second:
SELECT percentile("cpu", 99) AS "99th Pctl" FROM "testcasemeasure" GROUP BY "Tag6"
So much performance differences between the queries is a normal behaviour?
If not, we can provide our test case.
Thanks
William

I think I have a similar case with distinct instead of percentile, using version 1.6.0. The performance seems impacted when adding more tags to group by.
tagKey
------
account
host
stock
timescale
version

fieldKey fieldType
-------- ---------
execid   string

> select count(*) from running_strategies where time >= '2018-07-27'
name: running_strategies
time                 count_execid
----                 ------------
2018-07-27T00:00:00Z 898355

> explain analyze  select count(distinct(execid)) from running_strategies where time >= '2018-07-27'
EXPLAIN ANALYZE
---------------
.
└── select
    ├── execution_time: 1.317090234s
    ├── planning_time: 68.933715ms
    ├── total_time: 1.386023949s
    └── build_cursor
        ├── labels
        │   └── statement: SELECT count(distinct(execid::string)) FROM influxdb_llvm.autogen.running_strategies
        └── iterator_scanner
            ├── labels
            │   └── expr: count(distinct(execid::string))
            └── create_iterator
                ├── labels
                │   ├── measurement: running_strategies
                │   └── shard_id: 402
                ├── cursors_ref: 2670
                ├── cursors_aux: 0
                ├── cursors_cond: 0
                ├── float_blocks_decoded: 0
                ├── float_blocks_size_bytes: 0
                ├── integer_blocks_decoded: 0
                ├── integer_blocks_size_bytes: 0
                ├── unsigned_blocks_decoded: 0
                ├── unsigned_blocks_size_bytes: 0
                ├── string_blocks_decoded: 2434
                ├── string_blocks_size_bytes: 10252806
                ├── boolean_blocks_decoded: 0
                ├── boolean_blocks_size_bytes: 0
                └── planning_time: 68.653108ms

> explain analyze  select count(distinct(execid)) from running_strategies where time >= '2018-07-27' group by time(5m), host
EXPLAIN ANALYZE
---------------
.
└── select
    ├── execution_time: 2.345479996s
    ├── planning_time: 70.348459ms
    ├── total_time: 2.415828455s
    └── build_cursor
        ├── labels
        │   └── statement: SELECT count(distinct(execid::string)) FROM influxdb_llvm.autogen.running_strategies GROUP BY time(5m), host
        └── iterator_scanner
            ├── labels
            │   └── expr: count(distinct(execid::string))
            └── create_iterator
                ├── labels
                │   ├── measurement: running_strategies
                │   └── shard_id: 402
                ├── cursors_ref: 2676
                ├── cursors_aux: 0
                ├── cursors_cond: 0
                ├── float_blocks_decoded: 0
                ├── float_blocks_size_bytes: 0
                ├── integer_blocks_decoded: 0
                ├── integer_blocks_size_bytes: 0
                ├── unsigned_blocks_decoded: 0
                ├── unsigned_blocks_size_bytes: 0
                ├── string_blocks_decoded: 2434
                ├── string_blocks_size_bytes: 10252806
                ├── boolean_blocks_decoded: 0
                ├── boolean_blocks_size_bytes: 0
                └── planning_time: 70.069905ms


ScanOption "useCamera" not working

BUG REPORTS WITHOUT PROVIDING THESE INFORMATIONS WILL BE CLOSED DIRECTLY. DON'T REMOVE THE SECTIONS!
Describe the bug
Whatever I set as useCamera - option is ignored.
I found four cameras on my device with numberOfCameras, used options 0 to 3 and 1 to 4 - no changes. Only the back camera is used. Even if I set the option to 20 or something entirely outside the range - doesn't matter.
To Reproduce
This is my code:
Future barcodeScanning() async {
try {
var _numberOfCameras = await BarcodeScanner.numberOfCameras;
var options = ScanOptions(
useCamera: 1
);
var barcodeRes = await BarcodeScanner.scan(options: options);
barcode = barcodeRes.rawContent;
Expected behavior
I want to switch between cameras with option useCamera as described.
Found out, that index 1 should be front camera (https://stackoverflow.com/questions/55770802/flutter-how-to-scan-qr-code-with-front-camera). But first useCamera must work in general.
Screenshots
If applicable, add screenshots to help explain your problem.
Logs
If applicable, add the verbose output of flutter run.
Environment (please complete the following information):

[ ] iOS? Version: ...(testing after Android is working)
[ ] Android? Version: 10
[ ] Real Device? Which?: Samsung Galaxy S10 plus
[ ] Emulator/Simulator? Which?: ...
Version of barcode_scan 3.0.1
Output of flutter --version:
Flutter 1.17.4 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 1ad9baa8b9 (2 weeks ago) • 2020-06-17 14:41:16 -0700
Engine • revision ee76268252
Tools • Dart 2.8.4

Flutter ...
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, v1.17.4, on Microsoft Windows [Version 10.0.19041.329], locale de-AT)

[√] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
[√] Android Studio (version 4.0)
[√] VS Code, 32-bit edition (version 1.45.1)
[√] Connected device (1 available)

• No issues found!

Additional context
Add any other context about the problem here.
Thanks for your help!
Markus

Found the issue with the wrong kotlin-version. Updated it - works now!


Transformation guidance

Q
A

content fix?
no

New article?
yes

Related issues?
n/a

What's in this Pull Request?
Transformation guidance

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/solution-guidance/Transformation.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/solution-guidance/Transformation.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


#38-Add Header - Footer - Main page-Rabia Avci

Description
Added a modern header and footer to the application.
Related to
Fixes #38

Good job. Please kindly make a route to redirect users to the home page when they login successfully

Thank you, Taiwo. I've done it.


Region

My devices are placed into 'central europe' region (although I'm in western Europe). This can't be chosen from the config UI and I don't know what's the correct shortcut, if it even is defined in the project…

My devices are placed into 'central europe' region (although I'm in western Europe). This can't be chosen from the config UI and I don't know what's the correct shortcut, if it even is defined in the project…

Mine worked with just Europe, if that’s any help?

Mine worked with just Europe, if that’s any help?

Correct, in the end it has been another issue. Now I'm having another problem but don't even know how to report it :) I'll see.

Europe should work. There are some critical fixes in v1.0.5. Please test and let me know.


How to configure a Slurm Job?

A standard Slurm script looks like
#! /bin/bash
#SBATCH -t 01:00:00
#SBATCH --nodes=2
#SBATCH --ntasks-per-node=24
#SBATCH -J test
#SBATCH -p short

some_commands_here

The question is then, how can I pass the number of nodes, number of task per node, partion name ,etc. to  xenon ?

Hi felipeZ,
You can configure Xenon by creating a JobDescription like so:
    JobDescription description = new JobDescription();
    description.setExecutable("/bin/hostname");
    description.setArguments("--long");
    description.setStdout("stdout.txt");
    description.setStderr("stderr.txt");

You can then pass this job description to a Scheduler like so:
     Jobs jobs = xenon.jobs();
     Scheduler scheduler = jobs.newScheduler(location.getScheme(), location.getAuthority(), null, null);
     Job job = jobs.submitJob(scheduler, description);

where location is a URI that describes where the jobs needs to be submitted to.
You can have a look at the Xenon-example repo, which explains this in more detail:
https://github.com/NLeSC/Xenon-examples
(the code above is part of the SubmitBatchJobWithOutput.java example)

Just to give a bit more detail. For the "standard" configuration options that are pretty much supported by any scheduler we have methods in the JobDescription. For example:
JobDescription d = new JobDescription();
d.setExecutable("/bin/hostname");
d.setArguments("--long");
d.setStdout("stdout.txt");
d.setStderr("stderr.txt");
d.setQueueName("short");
d.setNodeCount(2);
d.setProcessesPerNode(1);
d.setMaxTime(15);

You can find a description of these in the JavaDoc:
http://nlesc.github.io/Xenon/versions/1.1.0/javadoc/nl/esciencecenter/xenon/jobs/JobDescription.html
In addition to these generic options, there may also be some adaptor specific options that you need to set. For example, the if an ssh agent should be used, or what grace time should be used in torque accounting. Such options can be set using properties, a list of which can be found in the Adaptor Documentation section of the JavaDoc:
http://nlesc.github.io/Xenon/versions/1.1.0/javadoc/
To set one of these properties, you need to pass it to Xenon when it is created, for example:
Map<String, String> properties = new HashMap<>();
properties.put("xenon.adaptors.ssh.agent", "true");
properties.put("xenon.adaptors.ssh.agentForwarding", "true");
xenon = XenonFactory.newXenon(properties);

Note that these properties are most often used as a 'back door' to configure SSH. The options to configure SLURM, Torque, SGE, etc. are hardly ever used.


 I just love how readable it is. Instead of burying things deep down in the code base we can keep it at the surface. This is really great for learning and letting people prototype.
@at-wat would love your opinion as well! This is heavily inspired by your ideas :)

This is really great @masterada I am all for merging and we can keep iterating! This really feels like a few more days of iteration at most. I am trying to get the v3 Track API changes in, just haven't been able to find time though :(


Clarification of flow dataset

Let's say we have an image sequence (I1, I2, I3, ...).
How did you generate u and v? Did you use the following equation?
u1 = flow_x(I1, I2)
v1 = flow_y(I2, I3)

Please read the paper for these details, we do extract flow with a 3-frame gap to avoid flicker.

Got it, thank you.

One more question:
Exactly how did you bound/normalize each flow data?
e.x.
bound=20
flow[flow>bound] = bound
flow[flow<-bound] = -bound
flow += bound
flow = (255./(2bound))


Ftrack project prepare problem to create project default

Describe the bug
Ftrack project prepare problem to create project default once pype-config is having default.yaml with root[work] and root.json correctly set to have root[work]
Traceback (most recent call last):
  File "C:\Users\jezsc\CODE\pype-setup\vendor\python\ftrack-python-api\ftrack_api\event\hub.py", line 710, in _handle
    response = subscriber.callback(event)
  File "C:\Users\jezsc\CODE\pype-setup\repos\pype\pype\modules\ftrack\lib\ftrack_action_handler.py", line 155, in _launch
    self.session, entities, event
  File "C:\Users\jezsc\CODE\pype-setup\repos\pype\pype\modules\ftrack\lib\ftrack_action_handler.py", line 107, in _interface
    interface = self.interface(session, entities, event)
  File "C:\Users\jezsc\CODE\pype-setup/repos/pype/pype/modules/ftrack/actions\action_prepare_project.py", line 63, in interface
    root_items = self.prepare_root_items(anatomy)
  File "C:\Users\jezsc\CODE\pype-setup/repos/pype/pype/modules/ftrack/actions\action_prepare_project.py", line 123, in prepare_root_items
    root_names = anatomy.root_names()
  File "C:\Users\jezsc\CODE\pype-setup\pypeapp\lib\anatomy.py", line 157, in root_names
    return self.root_names_from_templates(self.templates)
  File "C:\Users\jezsc\CODE\pype-setup\pypeapp\lib\anatomy.py", line 219, in root_names_from_templates
    raise RootCombinationError(roots)
pypeapp.lib.anatomy.RootCombinationError: Combination of root with and without root name in Templates. "root[renders]", "root[work]", "root", "root[publish]", "root[production]"

To Reproduce
Steps to reproduce the behavior:

set your pype-config/anatomy/default.yaml to be pointing to individual roots like for example root[work], root[render]
define correct paths in root.json to host pointers for root[work], root[render]
then create new project in ftrack and run Project prepare action on it
it should be returning error in terminal

this was caused by a wrong combination of anatomy (using simple root) and multiroot setup. We'll be doing more checks in 3.0 settings to is becoming irrelevant.


Frontend is killed while changing the set values.

Describe the bug
The backend kills the frontend, when the user is setting any value through modal. Since the backend waits for ~1s of delay of message from the frontend before spawning the kill process, it seems like no messages from the frontend are sent when the modal is being operated.
To Reproduce

Start the backend and the frontend in a linux machine.
Open any modal
Keep changing the value till the chromium browser is killed.

Expected behavior
The backend should not kill the frontend.
Screenshots
If applicable, add screenshots to help explain your problem.
Device (please complete the following information):

Hardware Model: [Raspberry Pi 4B]

Software (please complete the following information):

Domain: [backend, frontend]
Version: [0c3dfc4]

This issue is related to #124: for some reasoning, opening the modal or doing other React graphics-redraw-heavy things appears to momentarily freeze all processing of the frontend (and with freeze durations which vary across different trials of the same test); when no waveform data is received for a graph 2 sec, then the graph resets itself. I am not sure how we can solve this problem - @Sudhir-dev , do you have ideas for where the performance bottleneck might be that is causing such a long freeze in the frontend?

Out of curiosity, I had opened the Preact Dev Tools with redraw highlighting, and it looks like the frontend is wasting a lot redraws on things which aren't actually changing - this includes various pieces of the topbar, as well as almost everything in the dashboard. How much of the dashboard consists of nested components, vs. containers which are passed in by dependency injection?

We will implement a work-around for this by limiting the rate at which the modal dialog's increment and decrement buttons may be clicked, to a rate which is low enough that the frontend can do some processing with the communication protocol in between button clicks.


Includes GitHub Releases along with git tags

Basically, GitHub has its own idea of git tags called "Releases", and Carthage uses releases instead of tags when you specify GitHub.
So the following two lines in a Cartfile are not necessarily equivalent.
github "Moya/Moya"
git "https://github.com/Moya/Moya.git"

By added a GitHub Release, we avoid confusion with people installing older versions of Moya by accident. I've automated this to make sure I don't forget.
See https://github.com/Moya/Moya/issues/335 & https://github.com/Moya/Moya/issues/332

Current coverage is 84.84%

Merging #336 into master will not affect coverage as of b1ed4e6

@@            master    #336   diff @@
======================================
  Files           13      13
  Stmts          640     640
  Branches         0       0
  Methods          0
======================================
  Hit            543     543
  Partial          0       0
  Missed          97      97

Review entire Coverage Diff as of b1ed4e6

Uncovered Suggestions

+2.50% via Source/Result.swift#53...68
+1.72% via Source/Result.swift#38...48
+1.25% via ...ource/Response.swift#75...82
See 7 more...

Powered by Codecov. Updated on successful CI builds.

@mpurland When you get a moment, could you review this PR?

:+1:

@ashfurrow Okay, sure, let me have a look

Want to hit that merge button @mpurland?

:boat:


Deployment Workflow Documentation

Description: Divided into 2 documents:

Network Measurement Box Assembly
Device Deployment and Activation
Requirements:
cms, active-netrics, passive-netrics, local dash packages tested and validated
The definition of both hardware and software to be (pre) installed
The definition of "if" or "when" to link random id to time participants email (and the box assembly time? or via GUI survey?)
The definition of the box layout
Content (?)

Goals:

with this documentation, someone can start assembling and delivering the measurement boxes

I think that we have thought through most of the items in this issue. I think now it is a matter of compiling all of this information into a single shareable document.


Show the shorthand for defining a function inside a method

In the Vue documentation under methods  it gives the following example:
var vm = new Vue({
  data: { a: 1 },
  methods: {
    plus: function () {
      this.a++
    }
  }
})
vm.plus()
vm.a // 2

It's noted why you shouldn't use arrow functions but doesn't note the shorthand for defining functions (or at least I can't find where it talks about it 😅) so for the above example, you could do:
var vm = new Vue({
  data: { a: 1 },
  methods: {
    plus() {
      this.a++
    }
  }
})
vm.plus()
vm.a // 2

Is this documented? If so where? There's an entire section dedicated Event Handler Shorthands  .
I propose another note be added underneath to explain it although what most important is that it is explained. Hopefully, this hasn't been brought up already I had a quick search and couldn't see anything.

Thank you for opening the issue! This shorthand is not something Vue-specific, it's common ES6 feature known as object method shorthand syntax.
In Vue3 upcoming documentation, all the examples will use this syntax, so we won't need a dedicated section explaining it.


Make code less bad

The code has ben less-badified:

camelCase instead of snake_case (because this is JS, not Python)
async/await instead of .then() (code is prettier and easier to follow now)
Using let instead of globally declaring variables inside of functions
=== instead of == to prevent any weird typecasting bugs

I haven't tested this. Please test it lol

Wow @tjhorner you sure did unbadlify the code!


Typeahead input text sets cursor to the end of line

If you have an input with a shorter width that a selected text, the cursor goes to the end of the line and the text is cut off.
To replicate it see attached link, and select a long option (eg: Massachusetts) and click this option. If you select the option by pressing Enter key it does not happen
http://plnkr.co/edit/n2ZFVOAwCqXr6iZVOc8H?p=preview
Only in IE and Chrome

However, the text jumps back to the first character as soon as that window loses focus.
Would there be any better behaviour?

I don't think this is an actual issue. It has nothing to do with UI Bootstrap, this is just default browser behavior for these browsers.


Management command to load new tissue records

FEATURE DESCRIPTION
Feature Inspiration
New studies occasionally will add new tissue types, similar to how new compounds are added. The ability to add these to the study loading process would be helpful.
Feature Description

A new management command to load tissue records (analogous to the load_compounds command)
Update tests, etc. to load tissues using this new method

Alternatives Considered
New tissues records could be added to the current tissues fixture and the fixture reloaded when tissues need to be updated. This may be sufficient, since tissues are likely to be added less often that compounds.
Comment
If this is implemented, the https://github.com/PrincetonUniversity/tracebase-rabinowitz-data repository should be updated to include this functionality.

ISSUE OWNER SECTION
Assumptions

List of assumptions made WRT the code
E.g. We will assume input is correct (explaining why there is no validation)

Requirements

List of conditions to be met for the feature
E.g. Every column/row must display a value, i.e. cannot be empty

Limitations

A list of things this work will specifically not do
E.g. This feature will only handle the most frequent use case X

Affected/Changed Components

Files
Environment variables
External executables
Database tables
Cron job settings
Etc.

DESIGN
GUI Change description
Describe changes the user will see.
Code Change Description (Pseudocode optional)
Describe code changes planned for the feature.
Tests
A test should be planned for each requirement (above), where possible.

@fkang-pu @jcmatese @hepcat72 We have one dataset submitted with two new tissue types that I would like to get loaded.
Are people generally in agreement that tissues should be handled more like compounds (and thus loaded along with other data)?

If yes, then

We could implement this before loading that dataset.
We could add the tissues to the fixture, load the dataset, and implement this later.

If not, I could simply add the tissue types to the fixture, load that on tracebase-dev, and load the new study and we can hold off any decision regarding loading of new tissues.

Thoughts or preferences? I think I'd rather make this change, then load the dataset myself, but any of these options would be OK depending on peoples thoughts.

@lparsons Might be prompted by my [likely-one-off] issues when running through the contributing steps the other day (#372 ), for the first time after applying the validation migration.  Uncertain if the "fix" is updated docs, coding tweaks, or just let it be (because may not be a persistent issue).  Not stressing about it, but come publication time (e.g."code-in-the wild"), we might want to decide on philosophies on data releases, assumptions that databases generally can/should be blown away and reloaded from scratch, etc.  I think the validation migration was kind of exceptional, though, in that it was an entire new database, intended to mirror a subset of tables of the existing database.

Thank @jcmatese , that makes sense. Perhaps something is still missing from docs. I'm don't have all of the steps to setup caching and validation databases straight in my head yet. I'll be sure to run through everything and update docs as necessary when we push out the updates and data to tracebase-dev.

How did I even come by this issue? Was there a comment added that was deleted or am I going insane?  I only commented on it because I thought it was new.  I'd thought this was done, but my default is to assume I'd forgotten something.

Not sure. It was closed 23 days ago, and then commented on by you about an hour ago. Anyway, let me know if something is amiss.

Yeah, I saw that. That's why I questioned my sanity.

TGIF!


Changed totalBorrowedAmountValue sum in userLoanInfo

Previously the sum was not summing the dollarized amounts, screwing things a bit.
Noticed this because totalBorrowedAmountValue had not 4 d.p. during tests

Good catch, thank you! Would you mind if I flag it in the upstream JS sdk, because it comes from there?

Yes no prob!


Download the video link of each session

Hi, What's your idea about converting videos to mp4 which could be downloadable?
I use https://github.com/createwebinar/bbb-download  but there is another options which I never used as https://github.com/tilmanmoser/bbb-video-download.
What is your optimized options?
If we want to have a video beside a webcams (like as Zoom or etc.), what's your idea?

You can try our other open-sourced project to create downloadable MP4 version of recordings: https://github.com/manishkatyan/bbb-mp4
You can automate MP4 conversion and uploading to AWS S3: https://github.com/manishkatyan/bbb-mp4#automate-mp4-conversion
Plus there are a bunch of scripts, with detailed comments, to take care of manual conversion and other use cases. Check them out.

Thanks a lot.

It is capture Chrome browser screen? I mean that it has the same vide as playback view?

Yes

Can we have an output like as below?

I'm looking for this solution. Can you help me?

Sorry I can't. That's beyond the scope of this project.

Sorry I can't. That's beyond the scope of this project.

Thank you so much. If you have any guide or ideas, please share with me to collaborate .
Thanks again

Hi again, How can we install bbb-mp4 for BBB 2.2 ?
it is just nodjs 8 but your installation is nodejs 14.?

Nodejs 14 would work.


Tag jenkins builds with build number

Add a version tag to every master build so that we can specify which version to deploy to each AWS environment.
This requires the jenkins build to use SSH to connect to github.

Yes, I'll write it all up when it's done. This just adds a version tag - we still need to update the deployment jobs so that they update the integration branch.


ROM Clustering

Pull Request Description
What issue does this change request address? (Use "#" before the issue to link it, i.e., #42.)
Closes #876
What are the significant changes in functionality due to this change request?
Beyond simply segmentation, allows clustering of ROMs for truncated representation. Currently only allows evaluating as a full history; the next PR will add the ability to truncate the evaluation representation (hopefully).
Moves clustering from the LearningGate into a new SupervisedLearning type: the ROMCollection, of which there are Segmented and Clustered options. They are not exposed to the user; they are internal constructs to facilitate ROM clustering.
By way of note, the current time-snapshot handling for ROMs could probably very easily migrate to a new RomCollection type and clean up the Gate even more (nearly eliminate it, even).
This PR has a lot of additional user options that could be made available; many of these potential improvements are documented in PR #913, and can be addressed as needed.

For Change Control Board: Change Request Review
The following review must be completed by an authorized member of the Change Control Board.

[ ] 1. Review all computer code.
[ ] 2. If any changes occur to the input syntax, there must be an accompanying change to the user manual and xsd schema. If the input syntax change deprecates existing input files, a conversion script needs to be added (see Conversion Scripts).
[ ] 3. Make sure the Python code and commenting standards are respected (camelBack, etc.) - See on the wiki for details.
[ ] 4. Automated Tests should pass, including run_tests, pylint, manual building and xsd tests. If there are changes to Simulation.py or JobHandler.py the qsub tests must pass.
[ ] 5. If significant functionality is added, there must  be tests added to check this. Tests should cover all possible options.  Multiple short tests are preferred over one large test. If new development on the internal JobHandler parallel system is performed, a cluster test must be added setting, in  XML block, the node <internalParallel> to True.
[ ] 6. If the change modifies or adds a requirement or a requirement based test case, the Change Control Board's Chair or designee also needs to approve the change.  The requirements and the requirements test shall be in sync.
[ ] 7. The merge request must reference an issue.  If the issue is closed, the issue close checklist shall be done.
[ ] 8. If an analytic test is changed/added is the the analytic documentation updated/added?

Tests are passed, this is ready for review.

Checklist passed...
Approved...
Merging...


feat(script): final reward calculation for test-net 1 and 2

Script for final reward calc on testnet campaigns

@b00f Thanks.


Re-write LU scraper with beautifulsoup

Parsing tables is a pain, so I decided to give it another try using beautifulsoup.

@baryluk would like to have your feedback here.

@metaodi Looks good to me.


RShiny bus-dashboard example returns 500

Bug description

Running RShiny bus-dashboard example with repo2docker is timing out and reporting "500 : internal server error" on loading.
Expected behaviour

jupyter-repo2docker rshiny-bus builds a container and runs it.
Visiting http://<IP_ADDRESS>:<port>?token=<token> in browser brings you to Jupyter.
Visiting http://<IP_ADDRESS>:<port>/shiny/bus-dashboard runs the example shiny app.
Actual behaviour

Visiting http://<IP_ADDRESS>:<port>/shiny/bus-dashboard reports "500 : internal server error".
In the console this traceback is logged:
[E 00:31:47.512 NotebookApp] Uncaught exception GET /shiny/bus-dashboard (<IP_ADDRESS>)
HTTPServerRequest(protocol='http', host='<IP_ADDRESS>:49558', method='GET', uri='/shiny/bus-dashboard', version='HTTP/1.1', remote_ip='<IP_ADDRESS>')
Traceback (most recent call last):
  File "/srv/conda/envs/notebook/lib/python3.7/site-packages/tornado/web.py", line 1699, in _execute
    result = await result
  File "/srv/conda/envs/notebook/lib/python3.7/site-packages/jupyter_server_proxy/websocket.py", line 94, in get
    return await self.http_get(*args, **kwargs)
  File "/srv/conda/envs/notebook/lib/python3.7/site-packages/jupyter_server_proxy/handlers.py", line 391, in http_get
    return await self.proxy(self.port, path)
  File "/srv/conda/envs/notebook/lib/python3.7/site-packages/jupyter_server_proxy/handlers.py", line 387, in proxy
    return await super().proxy(self.port, path)
  File "/srv/conda/envs/notebook/lib/python3.7/site-packages/jupyter_server_proxy/handlers.py", line 209, in proxy
    response = await client.fetch(req, raise_error=False)
tornado.simple_httpclient.HTTPTimeoutError: Timeout during request

Your personal set up

OS: OSX
Docker version 19.03.5
repo2docker version repo2docker version 0.11.0

This is working for me with the latest repo2docker (master), and also works on mybinder (https://mybinder.org/v2/gh/binder-examples/r/master) if you go through the New menu. However if I remove the trailing / I get an error.
Does adding the trailing / to http://<IP_ADDRESS>:<port>/shiny/bus-dashboard/ work for you?

No, it also fails with the trailing slash.

This just got weird.

Works in Chrome
Works in Firefox private window
Works in Firefox regular window if I change <IP_ADDRESS> to localhost (have to enter the token)
Fails in Firefox regular window
Fails in Firefox regular window with all add-ons disabled

Here is a screenshot of the console when it fails in Firefox regular window

This sounds like a caching issue, especially since it works with localhost but not <IP_ADDRESS>. Could you try clearing your cache for that site? In Firefox history search for <IP_ADDRESS>, right click, Forget About This Site.

Yup, clearing the cache got it working. Thank you so much!


[ADP-3010] Remove readLocalTxSubmissionPending from DBLayer

Overview
We want to remove functions from the DBLayer record until essentially all DB access is done through the walletsDB :: DBVar .
This task is about removing readLocalTxSubmissionPending from the DBLayer record.
As this function is tested in a unit test in WalletSpec, we add it to Cardano.Wallet instead.
Issue number
ADP-3010

bors merge

bors merge

bors merge

bors merge

bors retry


Would be helpful to have family name somewhere (languages.csv)

That's just a self-join of languages.csv on Family_ID away!
Simon J Greenhill<EMAIL_ADDRESS>schrieb am Mi., 18. Sep. 2019,
13:55:

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/glottolog/glottolog-cldf/issues/2?email_source=notifications&email_token=AAGUOKHKJCNH7NJC7YLJUY3QKIJLZA5CNFSM4IX5UD62YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HMD2K6A,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAGUOKDL2YB2QBKICLWVBOLQKIJLZANCNFSM4IX5UD6Q
.

Ahh, of course! thanks!

...and in case a future R user wants to solve this problem:
languages <- read.csv("languages.csv", header=TRUE)

languages <- merge(
   languages[c('ID', 'Family_ID', 'Name')],
   languages,
   by.x="Family_ID", by.y="ID",
   all.x=TRUE,
   suffixes=c(".Language", ".Family")
)


IPMISensorStateNotOk alert should ignore type="Slot/Connector"

We received a lot of false positive alerts:
ipmi_generic_sensor_value{instance="openstack_da86533f-1112-430b-9bf3-6bad455a2a7a_ceph-osd_ceph-osd/0", job="hardware-observer_0_default", juju_application="ceph-osd", juju_model="openstack", juju_model_uuid="da86533f-1112-430b-9bf3-6bad455a2a7a", juju_unit="ceph-osd/0", name="LOM P1 Link Down", state="Warning", type="Slot/Connector", unit="N/A"

By default, type="Slot/Connector" warnings should be ignored, all disconnected LOM ports will keep generating the alerts otherwise.

We can provide a similar fix like #101 .


Optional authentication question

Question
I apologize if I'm just blind and missed this or just didn't understand it in the documentation... Lets say I have a route for login but then I have another route that I want to be able to be called publicly, just do different things if the user already logged into the other page. How do I go about getting what user is logged in?

Hey @robertfshort,
Sorry for the late response here, I've been ill this past week :(
If I'm reading you correctly: you want a route, that is publicly available, to do one thing; but if a user happens to be logged in (ie, has a session) then do a slightly different thing?
That sounds about right, or am I way off? 😂 If it's this, then I don't actually think there's a way of having an "optional" authorised route currently; something I can look into though!

I'll have a look to see if there's a possible way of doing this currently, but off the top of my head I don't think there is. If not, I'll see if it can be added in :)

thanks, I appreciate it!

I'm pretty sure I can make this work with the middleware sessions. If I'm not logged in, that middleware session is null. But this would be an area where the tutorials could use a bit more in depth description.

Side question to this though... How do I clear a session on logout...?

Which middleware session value are you referring to? If it's $WebEvent.Session, then there will be cases where this will have a "session" when nobody is logged in; as you can set data against an anonymous session.
One way to do it would be like how Pode.Web handles this with the Home page, where it's viewable by logged in and anonymous users. There, it checks both $WebEvent.Auth as well as the Auth data within the session:
function Get-PodeWebAuthData
{
    $authData = $WebEvent.Auth
    if (($null -eq $authData) -or ($authData.Count -eq 0)) {
        $authData = $WebEvent.Session.Data.Auth
    }

    return $authData
}

If nobody is signed in, that function returns $null. It's not the most elegant way of doing it, and could probably do with a proper function and to document that.

Do you have a dedicated route with the -Logout switch? That should remove the session automatically. If not, there's Remove-PodeSession which will remove the current session.


Chore/main

Codecov Report
Attention: 4 lines in your changes are missing coverage. Please review.

Comparison is base (920346e) 65.59% compared to head (8d05011) 66.92%.

Files
Patch %
Lines

src/components/Notifications.tsx
55.55%
4 Missing :warning:

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #851      +/-   ##
==========================================
+ Coverage   65.59%   66.92%   +1.32%
==========================================
  Files          45       43       -2
  Lines         529      520       -9
  Branches       73       76       +3
==========================================
+ Hits          347      348       +1
+ Misses        176      167       -9
+ Partials        6        5       -1

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


Cannot report on multiple coverage.json files

I have two sub-directories with coverage outputs produced by istanbul in them.  One is from running functional tests, and the second is from unit tests.  I can use istanbul to report on them individually; however, reporting on them together (istanbul report --include **/coverage.json) fails.
Below shows the directory listing with 2 coverage sub-directories created from previous runs of istanbul cover:
LMDV-JEFFREYB:ns-api jburke$ ls
./              applogs/            notes/              test/
../             coverage-functionaltests/   package.json            x.istanbul.yml
README.md           coverage-unittests/     scripts/            xunit-functionaltests.xml*
app.js              node_modules/           src/                xunit-unittests.xml*

Below shows a successful report run on the coverage-functionaltests sub-directory:
LMDV-JEFFREYB:ns-api jburke$ node_modules/.bin/istanbul report --root ./ --include coverage-functionaltests/coverage.json --dir ./coverage text-summary

=============================== Coverage summary ===============================
Statements   : 71.48% ( 218/305 )
Branches     : 40% ( 36/90 )
Functions    : 65.48% ( 55/84 )
Lines        : 71.48% ( 218/305 )
================================================================================
Done

Below shows a successful report run on the coverage-unittests sub-directory:
LMDV-JEFFREYB:ns-api jburke$ node_modules/.bin/istanbul report --root ./ --include coverage-unittests/coverage.json --dir ./coverage text-summary

=============================== Coverage summary ===============================
Statements   : 52.23% ( 434/831 )
Branches     : 33.76% ( 133/394 )
Functions    : 40.11% ( 73/182 )
Lines        : 52.23% ( 434/831 )
================================================================================
Done

Below shows the error when I glob them:
LMDV-JEFFREYB:ns-api jburke$ node_modules/.bin/istanbul report --root ./ --include **/coverage.json --dir ./coverage text-summary
/Users/jburke/Documents/Src/NS/ns-api/node_modules/istanbul/lib/reporter.js:58
            throw inputError.create('Invalid report format [' + fmt + ']');
                             ^
Error: Invalid report format [coverage-unittests/coverage.json]
    at Object.module.exports.create (/Users/jburke/Documents/Src/NS/ns-api/node_modules/istanbul/lib/util/input-error.js:7:15)
    at Object.Reporter.add (/Users/jburke/Documents/Src/NS/ns-api/node_modules/istanbul/lib/reporter.js:58:30)
    at /Users/jburke/Documents/Src/NS/ns-api/node_modules/istanbul/lib/reporter.js:69:18
    at Array.forEach (native)
    at Object.Reporter.addAll (/Users/jburke/Documents/Src/NS/ns-api/node_modules/istanbul/lib/reporter.js:68:14)
    at ReportCommand.Command.mix.run (/Users/jburke/Documents/Src/NS/ns-api/node_modules/istanbul/lib/command/report.js:101:18)
    at runCommand (/Users/jburke/Documents/Src/NS/ns-api/node_modules/istanbul/lib/cli.js:78:19)
    at runToCompletion (/Users/jburke/Documents/Src/NS/ns-api/node_modules/istanbul/lib/cli.js:82:5)
    at Object.<anonymous> (/Users/jburke/Documents/Src/NS/ns-api/node_modules/istanbul/lib/cli.js:88:5)
    at Module._compile (module.js:460:26)

Entering the following directly in node works correctly:
LMDV-JEFFREYB:ns-api jburke$ node
> process.version
'v0.12.2'
> var fs = require('fs'), istanbul = require('istanbul')
undefined
> var reporter = new istanbul.Reporter(), collector = new istanbul.Collector()
undefined
> reporter.addAll(['lcov', 'html', 'cobertura'])
undefined
> collector.add(JSON.parse(fs.readFileSync('coverage-functionaltests/coverage.json', 'utf8')))
undefined
> collector.add(JSON.parse(fs.readFileSync('coverage-unittests/coverage.json', 'utf8')))
undefined
> reporter.write(collector, true, function () { console.log('done') })

The above sequence produces a correct set of 'merged' output results in ./coverage/.
If I reverse the order of additions of the coverage.json files in the above example, the 2nd add fails.  I'm guessing that this is somehow related to what happens when running from the CLI.  Here is the failure on the 2nd add:
> collector2.add(JSON.parse(fs.readFileSync('coverage-unittests/coverage.json', 'utf8')))
undefined
> collector2.add(JSON.parse(fs.readFileSync('coverage-functionaltests/coverage.json', 'utf8')))
TypeError: Cannot read property 'length' of undefined
    at /Users/jburke/Documents/Src/NS/ns-api/node_modules/istanbul/lib/object-utils.js:247:37
    at Array.forEach (native)
    at Object.mergeFileCoverage (/Users/jburke/Documents/Src/NS/ns-api/node_modules/istanbul/lib/object-utils.js:244:31)
    at /Users/jburke/Documents/Src/NS/ns-api/node_modules/istanbul/lib/collector.js:71:44
    at Array.forEach (native)
    at Object.Collector.add (/Users/jburke/Documents/Src/NS/ns-api/node_modules/istanbul/lib/collector.js:68:31)
    at repl:1:12
    at REPLServer.defaultEval (repl.js:132:27)
    at bound (domain.js:254:14)
    at REPLServer.runBound [as eval] (domain.js:267:12)

I can mail/post the input coverage.json files if needed.
Version of istanbul is 0.3.17, and I know it also happens with 0.3.15
Running on Mac host:
LMDV-JEFFREYB:ns-api jburke$ uname -a
Darwin LMDV-JEFFREYB 14.3.0 Darwin Kernel Version 14.3.0: Mon Mar 23 11:59:05 PDT 2015; root:xnu-2782.20.48~5/RELEASE_X86_64 x86_64

I came here to ask whether multiple coverage tooling was possible.  This is interesting.
@potatopankakes - If you'll share the config that leads to this, I'll pitch in on a quick hack resolution until upstream does something proper.

I just ran into this issue. @potatopankakes @StoneCypher were you able to work around the problem?

yes, i used the javascript that i provided above that runs in nodejs.
On Fri, Jan 8, 2016 at 6:19 PM, Richard Herrera<EMAIL_ADDRESS>wrote:

I just ran into this issue. @potatopankakes
https://github.com/potatopankakes @StoneCypher
https://github.com/StoneCypher were you able to work around the problem?
—
Reply to this email directly or view it on GitHub
https://github.com/gotwarlost/istanbul/issues/403#issuecomment-170175261
.

+1
Having the same issue. I have two json reports, and I can run text-summary against either of them individually as above, but I get the same error message as above when trying to merge them. From fiddling with this for a while, it appears that when it gets to the 2nd file, it's treating the file name as the report format which is causing the error message above:
Error: Invalid report format [dir/coverage.json]

+1 any solution to this?

Command seems to work as expected:
**/coverage.json should be sorrounded by quotes, otherwise it will be expanded by the shell resulting in istanbul report --include coverage-functionaltests/coverage.json coverage-unittests/coverage.json.
coverage-unittests/coverage.json is then correctly interpreted as argument, but no format is found called coverage-unittests/coverage.json

@alekitto 's response is correct.  After I surrounded the arguments to --include with quotes, the error went away and I get correct output.


Docs should call out that Cosmos backed tables do not allow reserved property name ResourceId for entities

Library name and version
Azure.Data.Tables 12.7.0
Query/Question
Is it possible to create and work on a table entity with byte[] or BinaryData typed properties using "API for table" (on cosmos db table)?
It looks like TableClient.AddEntityAsync does not support a TableEntity that has property type as Byte[] or BinaryData. AddEntityAsync returned below exception when I tried to insert an entity with BinaryData or Byte[] properties.
    /// <summary>
    /// The task entity for asynchronous task execution.
    /// </summary>
    public class TaskEntity : AzureTableEntity
    {
        /// <summary>
        /// Gets or sets the TaskId of the task.
        /// </summary>
        public string TaskId { get; set; }

        /// <summary>
        /// Gets or sets the task name.
        /// </summary>
        public string TaskName { get; set; }

        /// <summary>
        /// Gets or sets checkpoint chunk 1.
        /// </summary>
        public BinaryData Chunk0 { get; set; }

        /// <summary>
        /// Gets or sets checkpoint chunk 2.
        /// </summary>
        public BinaryData Chunk1 { get; set; }

Azure.RequestFailedException: Cannot implicitly convert type 'Newtonsoft.Json.Linq.JObject' to 'string'. An explicit conversion exists (are you missing a cast?)
Even the UI on azure portal does not allow defining a property to be defined as Binary.
This is a seriously limitation and may block us migrating from Azure table storage to API for tables (cosmos db tables).

Environment
No response

It looks like issue here is that TaskEntity (table entity ) had a property with name: "ResourceId". and that caused an exception when trying to add task entity .
Renaming ResourceId to "ResourceIdentifier" fixed the issue. I could even get BinaryData\byte[] properties working after renaming the property from ResourceId to ResourceIdentifier.
This simple naming issue took at least few hours to identify.
This should have been part of some "Api for Table" documentation.
"Do not have property ResourceId in your table entity"! when working with Cosmos DB tables.

Thank you for your feedback.  Tagging and routing to the team member best able to assist.

I created this PR to update the documentation. https://github.com/MicrosoftDocs/azure-docs/pull/104993


Upgrade regex dependency to latest

Describe the bug
Arrow currently uses regex = 1.3:
https://github.com/apache/arrow-rs/blob/cedaf8a6ab55826c34f3b1bc9a21dbaf3e0328bc/arrow/Cargo.toml#L49
There is a security vulnerability in all versions older than 1.5.4 - https://blog.rust-lang.org/2022/03/08/cve-2022-24713.html
To Reproduce
N/A
Expected behavior
Use a version that is not vulnerable
Additional context
N/A

PR is coming!


Possible duplicated ID record

Both ico-ton.org and refereum-token.com are assigned on id #2805, which is the only exception of a unique id on URL to date shown through GET "https://etherscamdb.info/api/scams/"

Thank you Seki!


Improve variables

Each variable should be used only once outside of other variables.
Incorrect
variables/_type.scss
$line-height: 24px !default;

mixins/_content-block.scss
@mixin content-block($spacing: $line-height, $location: bottom ) {}

Also see: https://github.com/timble/illusion/blob/d4f32f81853204cf9044231953fff942a792d8a8/scss/tools/mixins/_content-block.scss#L3
Correct:
variables/_type.scss
$line-height: 24px !default;
$content-block-margin: $line-height !default;

mixins/_content-block.scss
@mixin content-block($spacing: $line-height, $location: bottom ) {}

In short, do not re-use variables directly on other elements they are meant for but use a middle-variable instead.

https://github.com/timble/illusion/releases/tag/v4.0.0


Update scalafmt-core to 3.3.0

Updates org.scalameta:scalafmt-core from 3.2.2 to 3.3.0.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.scalameta", artifactId = "scalafmt-core" } ]

labels: library-update, early-semver-minor, semver-spec-minor, commit-count:1

Codecov Report

Merging #1042 (e8ced9d) into develop (5a947cb) will increase coverage by 0.01%.
The diff coverage is n/a.

@@             Coverage Diff             @@
##           develop    #1042      +/-   ##
===========================================
+ Coverage    89.65%   89.66%   +0.01%
===========================================
  Files          124      124
  Lines         9912     9912
  Branches       509      509
===========================================
+ Hits          8887     8888       +1
+ Misses        1025     1024       -1

Impacted Files
Coverage Δ

...src/main/scala/com/twitter/algebird/Interval.scala
82.60% <0.00%> (-0.87%)
:arrow_down:

.../main/scala/com/twitter/algebird/HyperLogLog.scala
89.61% <0.00%> (-0.44%)
:arrow_down:

.../main/scala/com/twitter/algebird/BloomFilter.scala
94.24% <0.00%> (ø)

.../scala/com/twitter/algebird/immutable/BitSet.scala
97.00% <0.00%> (+0.42%)
:arrow_up:

...main/scala-2.12-/com/twitter/algebird/compat.scala
83.33% <0.00%> (+16.66%)
:arrow_up:

Continue to review full report at Codecov.

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

Superseded by #1046.


Enhanced Landing page buttons before and after UI experience

PR Description 📜
I have worked on the CSS files and edited and added the codes where the before and after indexes for the buttons were collapsing with each other and fixed that issue now the buttons doesn't have any overflow of the after effect. I have also implemented button spacing in between (as shown in the image i have attached) to enhance the UI of the website and not making it look congested.
[Bug]: Landing page buttons needs  #107

Mark the task you have completed ✅

[X] I follow CONTRIBUTING GUIDELINE & CODE OF CONDUCT of this project.
[X] I have performed a self-review of my own code or work.
[X] I have commented my code, particularly in hard-to-understand areas.
[X] My changes generates no new warnings.
[X] I have followed proper naming convention showed in CONTRIBUTING GUIDELINE
[X] I have added screenshot for review.

## Add your screenshots(Optional) 📸
Before ->

After ->

Thank you soo much for contributing to our repository 💗

I have fixed the issue assigned to me ,just asking i didn't see any labels for Level for my task ,if possible kindly assign the label tags.
Thank you

@triggereddown This pull request is causing issue to the game and the content of the home page is not aligned properly. Do the changes and create a new pull request.

@thevirengarg I did not get what's the problem can you please explain it to me , because in my localhost everything's working fine and the PR here is showing merged successfully.

@triggereddown You will be getting points for this PR, it's just that the alignment of the buttons is shifted little towards bottom, if you could correct it.

Sir it might be because i have added spacing between the buttons as there was no spacing between them previously.

@triggereddown Create a new PR and fix it. I will score you for it as well.

Sir it might be because i have added spacing between the buttons as there was no spacing between them previously.

@thevirengarg can u please attach a screenshot how is this effecting the alignment  so i should be able to fix it because on my localhost it's not showing errors
Thank you


Consider providing a non-concurrent Saga

Having support for parallel execution is great! However it comes at the cost of requiring Concurrent for transacting a Saga. Possibly there could be a version of Saga which doesn't need Concurrent and could support types like doobie's ConnectionIO.

This is biting me because I also use MTL MonadState in the F stack, and there's no StateT instance for Concurrent. The lack of StateT+Concurrent is, IIUC, because if the Concurrent forks Fibers, state updates would have to be discarded on all but one of the branches.

@benhutchison could you please look at my PR https://github.com/VladKopanev/cats-saga/pull/51 ? It moves Concurrent typeclass requirement to Saga methods that actually meant to do parallel composition.


[firebase_app_check]: The new Firebase App Check token is not being updated in Firestore and other services that have App Check enforced.

Is there an existing issue for this?

[X] I have searched the existing issues.

Which plugins are affected?
App Check
Which platforms are affected?
Android, iOS
Disclaimers

I was able to reproduce the issue on Android, but a similar issue exists on iOS. I just have a hard time reproducing it locally (Crashlytics shows a lot of errors with get, update, set, and listen operations, resulting in permission denied for many users on both iOS and Android). 2% of our user base is impacted by this issue and similar ones related to App Check in one way or another.

This issue is reproduced in debug mode due to the nature of App Check and how difficult it is to reproduce it in a release build.

Scenario
Imagine the following scenario:

I installed the brand new app (the app requires Firebase Auth to proceed further).

I made a successful sign-in to the app (the app requires making a get call to Firestore to fetch the user to proceed further).

I tried to fetch the user, but I was hit with the error: [cloud_firestore/permission-denied] The caller does not have permission to execute the specified operation.

I started digging and thinking, "Okay, maybe it's the security rules." However, the rules were simple: allow read if auth != null, and I had just made a successful sign-in before requesting data from Firestore, so that wasn't the issue. I began wondering what else could be causing the problem, and the only other reason it could fail was because of issues with the App Check token.

I thought, "What if the App Check token wasn't fetched properly before making the call to Firestore? This is plausible, maybe it's some kind of race condition." So, I decided to ensure that the token was 100% valid by fetching it beforehand. It sounded like a good idea. I made a fetch and successfully fetched the token. I then made the call to Firestore, thinking that now everything should be rock solid, but no, it threw: [cloud_firestore/permission-denied] The caller does not have permission to execute the specified operation.

I started thinking again, "WHAT? Okay, I know what it is. Firestore is not picking up the newly fetched token, but why not? Isn't it how it's supposed to work?" I wondered if there was a way to pass it manually to Firestore, but it seemed like there was no way.

So, here's where the issue lies: even if I ensure app attestation by fetching the token, Firestore, Cloud Functions, and Realtime Database will still fail because they won't pick up the new token until the app is restarted.

Yes, you heard me right. If I hot restart the app in debug mode, it picks up the token (which is equivalent to killing the app and opening it again), but this is not a great solution because no user will do this. They will just churn and delete the app, so this is a serious issue here.

Prerequisites

Have a bare-bones Firebase Flutter app ready.
Activate App Check in main.dart as follows:

if (kDebugMode) {
  await FirebaseAppCheck.instance.activate(
    appleProvider: AppleProvider.debug,
    androidProvider: AndroidProvider.debug,
  );
} else {
  await FirebaseAppCheck.instance.activate(
    appleProvider: AppleProvider.appAttest,
  );
}

Even though it's part of the story, authentication is not needed here to simplify the case.
Firestore
Make sure your Firestore rules look like this to get them out of the way:
rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if true;
    }
  }
}

Now, enforce App Check on your Firestore in Firebase.
App Setup
Have 2 buttons ready:

One that makes a get request to Firestore like this:try {
  await FirebaseFirestore.instance.collection('path').doc('id').get(
        const GetOptions(
          source: Source.server,
        ),
      );
} catch (e) {
  print(e);
}

Another that fetches the token like this:try {
  final token = await FirebaseAppCheck.instance.getToken(true);
  print(token); // ensure token is fetched properly
} catch (e) {
  print(e);
}

Steps to Reproduce

Build the app for Android in debug mode on a real Android device, making sure you activated App Check in main.dart. Copy the App Check debug token from the debug console, you will need it later.

Press the 1st button (ensure that the call fails due to App Check).

Press the 2nd button (ensure it fails with a 403 error - app attestation failed).

Since this is debug mode, to emulate App Check behavior, take the debug token you copied in the 1st step and add it to App Check debug tokens for Android (in Firebase).

Once you've added the debug token, press the 2nd button again. The token should now be printed, indicating that you were attested by Firebase without issues.

Now, press the 1st button again, and it should throw cloud_firestore/permission-denied.

Hot restart the app.

Press the 1st button again, it should fetch without issues.

The issue here is that it should have worked on the 6th step.
To test this multiple times, delete the app and reinstall it again so a new debug token can be generated.
Firebase Core version
2.30.1
Flutter Version
3.22.0
Relevant Log Output
No response
Flutter dependencies

Expand Flutter dependencies snippet

  firebase_core: 2.30.1
  firebase_crashlytics: 3.5.4
  firebase_analytics: 10.10.4
  firebase_dynamic_links: 5.5.4
  firebase_app_check: 0.2.2+4
  firebase_auth: 4.19.4
  firebase_database: 10.5.4
  firebase_performance: 0.9.4+4
  firebase_remote_config: 4.4.4
  cloud_firestore: 4.17.2
  cloud_functions: 4.7.3

Additional context and comments
Maybe related to:

https://github.com/firebase/firebase-android-sdk/issues/5101
https://github.com/firebase/firebase-android-sdk/issues/5235

@eli1stark - I created a pure android implementation of the same setup:https://github.com/russellwheatley/firebase-android-project
It took some time (around 5 mins) for the firestore request to be successful. This was also the case when I tested the flutter app check example app. This appears to be how it works. Might be worth asking Firebase support if this is intended behaviour as it appears that this is how it works.

@russellwheatley Thank you for looking into it! If that's how it works by design, then it's a big issue for apps that use App Check, because applications could potentially cut functionality for 2-3% of their user base without even realizing it. And these are legit iOS and Android devices. This is especially concerning now when Google is heavily pushing App Check with Gemini AI. For now, the only feasible option is to disable App Check and rely only on security rules. Once I disabled App Check, 95% of all permission related issues in Crashlytics went away.
What's the best way to reach out to them, is this a good link?

@russellwheatley Thank you for looking into it! If that's how it works by design, then it's a big issue for apps that use App Check, because applications could potentially cut functionality for 2-3% of their user base without even realizing it. And these are legit iOS and Android devices. This is especially concerning now when Google is heavily pushing App Check with Gemini AI. For now, the only feasible option is to disable App Check and rely only on security rules. Once I disabled App Check, 95% of all permission related issues in Crashlytics went away.
What's the best way to reach out to them, is this a good link?

It might be worth asking on Stack Overflow as you could get advise on how to circumvent it perhaps 🤔


Provide short options for common arguments

Common arguments such as --columns and --group should have short options, such as -c and -g.

Done


I2S: feature request or RFC about changing sample_freq "on-the-fly"

While hacking my MP3 player/ Web radio app
(which you can find here https://gitlab.com/esp322054205/esp32s3-radio)
I came across the issue that web radio streams can have different sample frequencies (typically 48000 or 44100)
and I did not found a way to change an I2S channel frequency after creation.
So I took the "crowbar approach" and created this
https://github.com/maxwen/esp-hal/commit/b5e73680d61a22b7b40bd08fa907cada06fcdc3c
While this works I am wondering if

did I simply miss a way to do this already right now?
would this be a reasonable feature that would make sense to be added in general
and if yes if someone could guide me what would be an acceptable way to do this
so I might be able to contribute that feature.

That's a very nice project!

The only way right now would be to destroy the instance and re-create it
I guess yes - would be a nice enhancement
An update_config function would be good to have. Probably it doesn't need to be a trait - just an additional function on the I2s struct as the user-facing API would be more convenient

This is being tracked in #2416


Exit interview

Users who leave CodeTriage for good force a hard delete of the data. This is good for saving space and privacy, but bad for understanding:

If a user left because their needs aren't being met or because they're "graduating" and no longer need the tool
Associated anonymous metrics with leaving users (i.e. is someone more likely to leave if they have subscribed to zero repos, my guess is yes). Could record: streak_ count, number of repos subscribed, age of the account
Any free-form user thoughts on why they wanted to leave.
Optional email if they would be willing to have a follow-up conversation about what they posted

I don't know if there's some kind of an acts_as_survey gem or not. We could code this up in as described and store to a new database table, which would make future metric extraction easier. The alternative would be to throw things in a google sheet. That would get lossy fast though or could rely on self reporting of metrics (not reliable).
A possible next iteration could be to implement a whole "before unsubscribe" wizard where we give them the option of reducing email frequency (one guess for deletions), then show the survey, then go to the actual deletion step.

I'll take this one


WIP: matchparen: delayed/lazy display via timers

This improves performance when moving around without really stopping
(i.e. holding h/j/k/l etc).

This change should only take effect if the timers feature is supported.

there is still missing a condition like if has("timers") around the timer_start/stop calls

I've downloaded this WIP version of plugin/matchparen.vim. However, I've noticed following error message when invoking :NoMatchParen and again :DoMatchParen:
Error detected while processing CursorMoved Auto commands for "*":
E716: Key not present in Dictionary: highlight

@kiryph
What Vim/Neovim version are you using?

Thanks for this quick fix.

I have one question:
I would like to enable this plugin on demand. So I would like to disable it on startup. I can't use let g:loaded_matchparen = 1 in my vimrc because the command :DoMatchParen will not be defined and I can't activate it on demand.
Is there another solution? Should I add something like execute("NoMatchParen") to my vimrc?

@kiryph The purpose of adding an "idle" timer is to eliminate the cost of enabling the plugin. So why make it on-demand?

First of all: right now the timer feature is still WIP. I do not know when this will be merged into upstream. Of course I can maintain my own copy. In general I try to avoid keeping too many things personalized. I prefer sticking to upstream if possible.
Second some people might not like the (delayed) visual feedback and consider it as a distraction, in particular, if there is a time gap. However, sometimes it can be useful and would like to enable it on demand as I was saying. This doesn't seem to be a very complicated feature.
And if one gets really ambitious any loaded plugin contributes to startuptime.
Is this a good enough motivation?

I do not know when this will be merged into upstream

I guess I just have to address the feedback that has been provided already, but it's not high prio for me: I think it's fine to have this here WIP, so more feedback like yours can be provided.

some people might not like the (delayed) visual feedback and consider it as a distraction

The timeout would become configurable, and then you set it to a very low number - even when not wanting it to be delayed really, you still not want to have it displayed before e.g. 10ms / all the time really.
Regarding the lazy-loading: most plugin managers allow to trigger lazy-loading in case of commands, so that would work if it would be a separate plugin (and not being loaded anyway by default).
I could imagine configuring the timeout to be -1 would skip enabling it, but still enable/define the commands?!
Or setting up the commands could be done at the top, before loaded is checked?

@blueyed Thanks for your feedback. Highly appreciated.
Another thought: does the new version only work if timers are available or is there a fallback to the old behaviour?

I could imagine configuring the timeout to be -1 would skip enabling it, but still enable/define the commands?!
Or setting up the commands could be done at the top, before loaded is checked?

I guess I would prefer the first option. I think the variable g:loaded_matchparen has a certain semantic meaning. Moving parts of the plugin before would change it. I guess I am a little too petty here. I trust your judgement.
You should also update the documentation of runtime/doc/pi_paren.txt. Afaik this is mandatory before this gets merged.
BTW I really like this change of matchparen.vim. Thanks for this.

A simple solution to activate pi_paren.vim on demand could be done as following.
Put this into your vimrc
autocmd VimEnter * NoMatchParen
" Unimpaired-style mappings
nnoremap [op :DoMatchParen<CR>
nnoremap ]op :NoMatchParen<CR>
nnoremap cop :<C-R>=exists("g:loaded_matchparen") ? 'NoMatchParen' : 'DoMatchParen'<CR><CR>

Use cop to enable and disable it.

Codecov Report

Merging #1338 into master will increase coverage by <.01%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #1338      +/-   ##
==========================================
+ Coverage    74.7%   74.71%   +<.01%
==========================================
  Files          77       77
  Lines      125686   125686
  Branches    28123    28123
==========================================
+ Hits        93900    93902       +2
+ Misses      31782    31780       -2
  Partials        4        4

Impacted Files
Coverage Δ

src/os_unix.c
52.35% <0%> (-0.39%)
:arrow_down:

src/channel.c
83.93% <0%> (-0.05%)
:arrow_down:

src/gui_gtk_x11.c
47.5% <0%> (+0.2%)
:arrow_up:

src/if_xcmdsrv.c
85.37% <0%> (+0.92%)
:arrow_up:

src/version.c
80.2% <0%> (+1.01%)
:arrow_up:

Continue to review full report at Codecov.

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

Updated to handle missing timers, and some other improvements.
If you're testing/using this already, please update and report back how it works for you.

we still need the documentation for the timer variables. Also can you please squash into a single commit? I find it easier to review then.

@chrisbra

Added a TODO list
You can view the whole diff at https://patch-diff.githubusercontent.com/raw/vim/vim/pull/1338 and https://patch-diff.githubusercontent.com/raw/vim/vim/pull/1338.diff in raw.
I've thought that it would get squashed / applied manually anyway in the end.

Added docs (a while ago).

I tried it, but I don't like the delay.  I also don't like that the highlight disappears after half a second.
I am also not aware of the current implementation causing slowness, thus I don't see a good reason to include this.