Expand math fingerprinting

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math

Include more static methods and properties
Show unique results separate from Chrome V8

tests: https://es6console.com/kcvb8uvr/
Diff Tester:
https://jsfiddle.net/bvkptdj3/14/

Math.sin() in some cases returns different results in Tor Browser and Firefox.
const bigN =<PHONE_NUMBER>27728400000000000000000000000
Math.sin(Math.PI)
// FF => 1.2246467991473532e-16
// TB => 1.2246063538223773e-16
Math.sin(bigN)
// FF => 0.994076732536068
// TB => -0.20876350121720488

I calculate only 3 values in ECMA6 .. and I do all three differently to you: and mine can detect diffs between FF architecture, and certainly picks up on browser differences (safari !== chrome !== firefox !== edge (the non chrome one) !== internet explorer)
here is exmpl(1)
		let n = 0.123
		let bigN = 5.860847362277284e+38
		let fns = [
			['acos', [n], 0],
			['acos', [Math.SQRT1_2], 1],
			['acosh', [1e308], 2],
			['acosh', [Math.PI], 3],
			['acosh', [Math.SQRT2], 4],
			['asin', [n], 5],
			['asinh', [1e300], 6],
			['asinh', [Math.PI], 7],
			['atan', [2], 8],
			['atan', [Math.PI], 9],
			['atanh', [0.5], 10],
			['atan2', [1e-310, 2], 11],
			['atan2', [Math.PI, 2], 12],
			['cbrt', [100], 13],
			['cbrt', [Math.PI], 14],
			['cos', [n], 15],
			['cos', [Math.PI], 16],
			['cos', [bigN],17], // unique in Tor
			['cosh', [1],18],
			['cosh', [Math.PI], 19],
			['expm1', [1],20], // <----------------------- this fucker
			['expm1', [Math.PI], 21],
			['exp', [n], 22],
			['exp', [Math.PI], 23],
			['hypot', [1, 2, 3, 4, 5, 6], 24],
			['hypot', [bigN, bigN], 25],
			['log', [n], 26],
			['log', [Math.PI], 27],
			['log1p', [n], 28],
			['log1p', [Math.PI], 29],
			['log10', [n], 30],
			['log10', [Math.PI], 31],
			['log10', [Math.E], 32],
			['log10', [Math.LN2], 33],
			['log10', [Math.LOG2E], 34],
			['log10', [Math.LOG10E], 35],
			['log10', [Math.SQRT1_2], 36],
			['log10', [Math.SQRT2], 37],
			['sin', [bigN], 38], // unique in Tor
			['sin', [Math.PI], 39], // unique in Tor
			['sin', [Math.E], 40],
			['sin', [Math.LN2], 41],
			['sin', [Math.LOG2E], 42],
			['sin', [Math.LOG10E], 43],
			['sin', [Math.SQRT1_2], 44],
			['sin', [Math.SQRT2], 45],
			['sinh', [1], 46],
			['sinh', [Math.PI], 47],
			['sinh', [Math.E], 48],
			['sinh', [Math.LN2], 49],
			['sinh', [Math.LOG2E], 50],
			['sinh', [Math.LOG10E], 51],
			['sinh', [Math.SQRT1_2], 52],
			['sinh', [Math.SQRT2], 53],
			['sqrt', [n], 54],
			['sqrt', [Math.PI], 55],
			['tan', [-1e308], 56],
			['tan', [Math.PI], 57],
			['tanh', [n], 58],
			['tanh', [Math.PI], 59],
			['pow', [n, -100], 60],
			['pow', [Math.PI, -100], 61],
			['pow', [Math.E, -100], 62],
			['pow', [Math.LN2, -100], 63],
			['pow', [Math.LN10, -100], 64],
			['pow', [Math.LOG2E, -100], 65],
			['pow', [Math.LOG10E, -100], 66],
			['pow', [Math.SQRT1_2, -100], 67],
			['pow', [Math.SQRT2, -100], 68]
		]
		let maths = []
		let test = Math.exp(1) - 1 // expm1(1)
		for(let i=0; i < fns.length; i++) {
			let fn = fns[i]
			let result = Math[fn[0]](...fn[1])
			maths.push(fn[2] + ": " + result)
			if (i==20) {
				maths.push("20.1:" + test)
			}
		}

But here's the diff when you calculate exmpl(1) my way (windows7)
		// FF60-67
		//- 20  : 1.718281828459045
		//- 20.1: 1.7182818284590455
		// FF68+
		//- 20  : 1.718281828459045
		//- 20.1: 1.718281828459045

See how 20.1 which is my method changes in 67- vs 68+.
here are some others I haven't tested against yours yet
x = 0.5
return Math.log((1 + x) / (1 - x)) / 2 // atanh(0.5)  <--- this is your number 10

x= 1
let y = Math.exp(x)
return = (y - 1 / y) / 2 // sinh(1)  // this is your number 46

I've thought about using polyfills, but it there are some cases where the engine/arch/os computation differs from the polyfill.
Example:
// exmp1: false in Safari
(Math.exp(1) - 1) == Math.expm1(1)

// sinh: false in Safari
((Math.exp(Math.PI) - 1 / Math.exp(Math.PI)) / 2) == Math.sinh(Math.PI)

// atanh: false in Firefox, Chrome, Safari
n = 9e-8
(Math.log((1 + n) / (1 - n)) / 2) == Math.atanh(n)

// hypot from https://github.com/MaxArt2501/es6-math/blob/master/es6-math.js
// false in Chrome and Safari
function hypot(value1, value2) {
  let i, n = 0, args = arguments, len = args.length
  for (i = 0; i < len; i++) {
    n += args[i] * args[i]
  }
  return Math.sqrt(n)
}
let n = 5.860847362277284e+38
hypot(n, n) == Math.hypot(n, n)

it appears there are some cases where the engine/arch/os computation differs from the polyfill

That's exactly what we want to be doing - it adds more entropy :)

so I tacked on the math test to the end of file:///D:/DLs/Torrents%20[In%20Progress]/TorZillaPrintBD/versions.html
Here is my modified ToDo entry in https://github.com/ghacksuserjs/TorZillaPrint/issues/66

:small_blue_diamond: math

[ ] math: build a matrix (ECMAScript 1st vs 6th) of all results

retest, create/test more Linux VM distros
99% sure this is all correct, but may find new hashes

[ ] math: research: see https://github.com/abrahamjuliot/creepjs/issues/36

add more ECMA6 tests
add polyfills: e.g. ((Math.exp(Math.PI) - 1 / Math.exp(Math.PI)) / 2) == Math.sinh(Math.PI)

[ ] math: use a new math FP test for FF78+

So in a new test page, we could output the equation vs a polyfill (where applicable) like I did for those three: e.g. pad the number, pad the boolean and in fact I would color code the false red to stand out, and add a copy to clipboard button
00:  true, 1.4474840516030247, description
01: false: 0.7853981633974483, description

Then I can test it in FF78+, 32+64bit builds on OS-64bit, 32bit on OS-32bit. I have several VMs which I should expand. I have Windows7 32 + 64bit, Windows 10 (64bit), Mint 64, Mint 32, openSUSE, Ubuntu, Debian
I can already determine FF from other browsers (my ECMA1 cos tests do that): and I don;t think ECMA6 will provide any more entropy within FF. But I'm willing to do a heap on updating and setting up new VMs and testing and create a new FF78+ math test for it
We can create a list of the hashes as we find them and for each add the browser + version + build-bit + os-bit + OS-name and the results. When we have tested everything we can then compare each hash to see what is changing to get the items tested down to basic ... something like that

...output the equation vs a polyfill (where applicable)
...create a list of the hashes as we find them and for each add the browser + version + build-bit + os-bit + OS-name and the results.

I like this idea.

// atanh: false in Firefox, Chrome, Safari
n = 9e-8
(Math.log((1 + n) / (1 - n)) / 2) == Math.atanh(n)

not much use if all three engines do the same (FF + chrome are same values, no idea about safari)
8.999999990174443e-8 <-- polyfill
9.000000000000024e-8 <-- function

When n = 0.5 they matched (which is test 10) - 10 shows up in 32bit TB60 (and 32bit FF67 and lower etc). I suspect a lot of these in FF are no longer applicable since FF68 (when they did something to the libm: compression) - I'm adding polyfills and am yet to find something that differs (in FF)

based on some old data (FP Central used polyfills [1]), only these three had (in older firefoxes - my notes only go to FF66)

atanh, expm1, sinh

I used the above to decide what to limit my ECMA 6th edition tests to, and since 68 they no longer differ from chrome etc (AFAIK)

[1] https://fpcentral.tbb.torproject.org/fp/tor/mathRoutine.js

Some interesting finds through attempts to mimic pow
expected = 2.5600000000000008e-62

// custom 1
x = 2e-8;[...Array(3)].forEach((val, i) => x*=x)
x == expected // true in FF and Chrome

// native Math.pow(2e-8,8)
Math.pow(2e-8, 8) == expected// false in Chrome (yields 2.5600000000000003e-62)

// native exponentiation operator 2e-8**8 -- equivalent to Math.pow(2e-8,8) and implementation-dependent
2e-8**8 == expected // false in Chrome (yields 2.5600000000000003e-62)

// custom 2
2e-8*2e-8*2e-8*2e-8*2e-8*2e-8*2e-8*2e-8 == expected // false in FF and Chrome (yields 2.5600000000000003e-62)

// custom 3: altering the operation order changes the result
2e-8*2e-8*2e-8*2e-8*(2e-8*2e-8*2e-8*2e-8) // true in FF and Chrome

...all three engines

((Math.exp(Math.PI) - 1 / Math.exp(Math.PI)) / 2) is the same in FF, Chrome, Safari, but Math.sinh(Math.PI) is different in Safari.

polyfills

From what I gather, the entropy obtained through a polyfill (if any) can be reduced to testing the implementation-dependent methods: log, pow, exp, sqrt etc. A polyfill free from native methods should yeild the same result across systems. Entropy is introduced when the calculation uses an implementation-dependent method (or operator in the case of **). This is just my limited observation, however.

the implementation-dependent methods: log, pow, exp, sqrt etc

All I know is it the older ones (if that's the right word) that gives me the entropy within FF (I only needed to use 8 cos tests).
^^ So if something based on cos that has entropy, is then used in a polyfill, then that polyfill also gets entropy
FF68+ seems to now be consistent in the newer ones (ECMA6?), but we can test more
The newer ones seems to give entropy between engines (which to me is less important)
I'm lost - is there a list somewhere of what math functions belong to what ECMA version?
I don't know how browsers choose or use or bundle math or libm's, or if the OS is used for some math functions
I don't really know what I'm talking about 😀 , but I do try :)

There's two things going on here

A: I can already detect FF, so the entropy (for me) within FF is the most important thing, and so far I see none of that with ECMA 6th edition (not since FF68), but tests will be a better indicator
B: entropy between engines (see pic of Opera): running my test in chromium for example, shows a lot of diffs between chromium and FF (FF is the control), so expanding the ECMA tests in TZP to include some of these (I'll use the old math function in 67- and a new one in 78+) is OK, not essential for me (see previous point)
we need to finish the list of math tests and then do some actual tests on browsers. I see you added a shitload more tests. See my issue here - I've now set up the framework

I'm using user-specified numbers so we can easily refer to them
after testing every browser in all configs (bit build, os, os build, version), all the "numbers in play" will give us a list of meaningful math tests for max entropy: some may still be redunant, but at least we can weed out the ones that do not make a difference
I need a better way to auto-generate the polyfills since each type uses the same method. At the moment I've manually added them

feel free to chime in on the other issue at TZP
Opera: note: I only have 6 polyfills set up

There's nice short list of es6 functions at https://github.com/MaxArt2501/es6-math/blob/master/README.md#usage


Question: support for Quill 2.x

Hi @visualjerk,
sorry to ask a question as an issue, hope this is ok for you.
Actually I just wanted to ask if you tested your magic URL module with Quill 2.0. I can't get it working and wanted to know if it's just me or if this 'is as it is'.
Cheers,
Stephan

Hi! Currently I do not have any capacity to do work on this plugin, so the answer is "is as it is" unfortunately. I would be grateful, if anyone forks it and creates a version von Quill 2.0.

Hi! @stephanstapel @visualjerk ,I've integrated this module into my project that is using Quill 2.x for testing. Currently, I've noticed that pasting doesn't work. Have you encountered any other issues?

I just needed pasting and also found out that it didn't work with :(

i've done some debugging, in a nutshell quill no longer sends a url like https://google.com/ through the matchers because it's not detected as text/html, it's detected as text/plain. sorry for wall of text, i just need to vent lol
in the following snippet (from quill v1.3.7), you can see the only way to return early from the convert function is if there is html or there's a code block format. in other words, we're gonna hit the matcher, even if there's no html detected from the browser paste event.
    if (typeof html === 'string') {
      this.container.innerHTML = html.replace(/\>\r?\n +\</g, '><'); // Remove spaces between tags
      return this.convert();
    }
    const formats = this.quill.getFormat(this.quill.selection.savedRange.index);
    if (formats[CodeBlock.blotName]) {
      const text = this.container.innerText;
      this.container.innerHTML = '';
      return new Delta().insert(text, { [CodeBlock.blotName]: formats[CodeBlock.blotName] });
    }
    let [elementMatchers, textMatchers] = this.prepareMatching();
    let delta = traverse(this.container, elementMatchers, textMatchers);

however, in the next snippet (from the latest version of quill), you can see that there is a !html check that returns early just passing the text through without calling convertHTML.
  convert(
    { html, text }: { html?: string; text?: string },
    formats: Record<string, unknown> = {},
  ) {
    if (formats[CodeBlock.blotName]) {
      return new Delta().insert(text || '', {
        [CodeBlock.blotName]: formats[CodeBlock.blotName],
      });
    }
    if (!html) {
      return new Delta().insert(text || '', formats);
    }
    const delta = this.convertHTML(html);

and finally, in the new protected converHTML function, you can see where the code path needs to reach in order to run the matcher. seems kinda like a bug in quill...
  protected convertHTML(html: string) {
    const doc = new DOMParser().parseFromString(html, 'text/html');
    this.normalizeHTML(doc);
    const container = doc.body;
    const nodeMatches = new WeakMap();
    const [elementMatchers, textMatchers] = this.prepareMatching(
      container,
      nodeMatches,
    );
    return traverse(
      this.quill.scroll,
      container,
      elementMatchers,
      textMatchers,
      nodeMatches,
    );
  }

maybe there's a new, different way to get the formats to change the resulting delta from a simple { insert: 'the_link' } to the "correct" { insert: 'the_link', attributes: { link: 'the_link' } }. i think i'm gonna report this on quill if i can't find or figure something out.


[stable/falco] Enable using Falco minimal image with EBPF

Before making changes I wanted to hear your opinion on the following: I would like to use the Falco minimal image and to do so I need to fetch the EBPF probe because the minimal image doesn't do that by itself. Besides that, I need to mount the correct folder (kernel debug) for Falco to work. Currently, this is not possible without manually changing the chart.
I would propose to allow extra init container(s) to be added, as Grafana does https://github.com/helm/charts/pull/12343. This allows anyone to add an init container, for example, to fetch the correct EBPF probe and place it in "/root/.falco" so Falco can find it. Besides that, I would propose doing the same thing with the volumes for Falco allowing people to add for example "/sys/kernel/debug". Or because the necessity to add volumes is small we could make "/sys/kernel/debug" enabled or disabled with a flag as part of enabling EBPF.
@bencer
@nestorsalceda

For your init container you could use the new falcosecurity/driverloader image
/cc @leogr

Hi @arminc ,
the feature you described is almost similar to what we are trying to achieve in the next Falco release. Basically, we want to provided all pieces and fixes needed to let third-party integrations - like the helm chart - implement the "init container approach" easily.
As @leodido said we are preparing a new image for this purpose.
But, note that:

falcosecurity/driverloader is not yet released, we're going to rename it soon (maybe it will be falcosecurity/falco-driver-loader
minimal vs. slim: we would like to keep just one of them, and I hope that will be decided soon
the next Falco release should happen in less than 2 weeks

Thus I would ask you to wait a bit until these pieces are ready if you don't mind.
Furthermore, we will have our community call later today and we will talk about this topic. I would be happy to hear your opinions!

Thanks for the quick replies. My understanding is that the falco-driver-loader is still creating the eBPF module (as init container). We use the falco-driver-loader to create the eBPF module while creating (hardening) the AMI. Then we just download the module with the init container which means the init container is simple as well.
I will join the call later


Handling NSFW items

I'm curious, how we handle NSFW pictures rn? This one is ai-gen but when someone post real nsfw, what we will do?

https://beta.kodadot.xyz/rmrk2/gallery/17268749-ec7643ba2b58f4567d-36978-RHU_465_NSFW-00000004

ref #285 & https://github.com/kodadot/rubick/issues/173#issuecomment-1377214535

Test items

https://canary.kodadot.xyz/rmrk/gallery/17384275-C46E1CCC37647EC061-NEO-FEMAI_5-0000000000000005


resistor-color: sync

Sync the resistor-color exercise with the latest data, as defined in https://github.com/exercism/problem-specifications/tree/main/exercises/resistor-color.

Feel free to close this PR if there is another PR that also syncs this exercise.
When approved, feel free to merge this PR yourselves (you don't have to wait for me).

As this PR only updates docs and/or metadata, it won't trigger a re-run of existing solutions (see the docs).

My approval has no effect because I am not a member of the wasm team.


Why does this seem to work for some apps and not others?

My company is piloting this right now and has run into an issue where in some cases the device authentication flow gets invoked and in some cases it doesn't. The pattern looks like it might be related to the authentication protocol that the app uses with OIDC flows looking like they are supported and SAML and WS-Fed apps look like they are not. However, we aren't clear if we've diagnosed this correctly or not. Any comment either way? If this is the issue, will this be addressed at some point in the future? Let us know if we can supply more details.

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

ID: ee6ac70d-5853-6a3a-0964-23b46910b4c4
Version Independent ID: a5beda87-9845-8807-6221-7fdc64079587
Content: Passwordless sign-in with the Microsoft Authenticator app - Azure Active Directory
Content Source: articles/active-directory/authentication/howto-authentication-passwordless-phone.md
Service: active-directory
Sub-service: authentication
GitHub Login: @iainfoulds
Microsoft Alias: iainfou

@accenture-eso thanks for this feedback. Can you provide any more details about the scenarios where it doesn't work? Without knowing more details about your setup I'm unsure what might be causing this.
I can get someone from the product team looped in or open a support case for you if needed.

Yeah, I can definitely provide more details. I'd rather not share URLs or Fiddler traces here but I can definitely do that offline or through a different channel. My org has an Azure AD CXP person assigned, we have guest accounts in Microsoft's Teams environment and there is always email as well. We'd love to get some more feedback on this. We have an existing thread on this issue in our CXP collaboration teams site and our CXP person is trying to chase this down too but I figured it wouldn't hurt to post publicly here as well. Thanks!

Hi @accenture-eso ,
If you want to go over these traces, you can reach me at<EMAIL_ADDRESS>I'm also happy to open a support case for this if you would prefer.
Please provide for me:
Subscription ID
Any fiddler traces or screenshots
The name of the CXP engineer working on your case
Closing this out but please feel free to reach out over email or on Microsoft Q&A.

Did we get a response from the product team to go with this being closed?
Thanks!
Joe Kaplan
Architecture and Strategy Lead – Technology Security Senior Manager
Accenture CIO Identity and Access Management Organization
Mobile:<PHONE_NUMBER> | E-mail: joseph.e.kaplan<EMAIL_ADDRESS>From: Marilee Turscak - MSFT<EMAIL_ADDRESS>Sent: Thursday, June 11, 2020 11:13 AM
To: MicrosoftDocs/azure-docs<EMAIL_ADDRESS>Cc: Kaplan, Joseph E<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: [External] Re: [MicrosoftDocs/azure-docs] Why does this seem to work for some apps and not others? (#55155)
This message is from an EXTERNAL SENDER - be CAUTIOUS, particularly with links and attachments.

Closed #55155https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_MicrosoftDocs_azure-2Ddocs_issues_55155&d=DwMCaQ&c=eIGjsITfXP_y-DLLX0uEHXJvU8nOHrUK8IrwNKOtkVU&r=bMt_UnlytCDSQk0a4tILEzGjbczHChT6eBxxL_IAH8s&m=CDCHkevf-GgaUKFCbkJRHKTdP07w0nLdf9dXH1FNHe0&s=cTwKQdKGZMaSoY_MeIyzdhmx0AjWXyB5NODUJl00Nv8&e=.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_MicrosoftDocs_azure-2Ddocs_issues_55155-23event-2D3434910779&d=DwMCaQ&c=eIGjsITfXP_y-DLLX0uEHXJvU8nOHrUK8IrwNKOtkVU&r=bMt_UnlytCDSQk0a4tILEzGjbczHChT6eBxxL_IAH8s&m=CDCHkevf-GgaUKFCbkJRHKTdP07w0nLdf9dXH1FNHe0&s=uL43QIQM2IGVwTUYeaSQMacqn313s57xwhsRXuxsv0k&e=, or unsubscribehttps://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_notifications_unsubscribe-2Dauth_AA2QO54B5MR6A3RBXUIHTNDRWD7AJANCNFSM4NFAHOCQ&d=DwMCaQ&c=eIGjsITfXP_y-DLLX0uEHXJvU8nOHrUK8IrwNKOtkVU&r=bMt_UnlytCDSQk0a4tILEzGjbczHChT6eBxxL_IAH8s&m=CDCHkevf-GgaUKFCbkJRHKTdP07w0nLdf9dXH1FNHe0&s=lNXLSDXSJ4wO3OBl0GeOSbwoU1iQMeZrQVKqdStVHS8&e=.

This message is for the designated recipient only and may contain privileged, proprietary, or otherwise confidential information. If you have received it in error, please notify the sender immediately and delete the original. Any other use of the e-mail by you is prohibited. Where allowed by local law, electronic communications with Accenture and its affiliates, including e-mail and instant messaging (including content), may be scanned by our systems for the purposes of information security and assessment of internal compliance with Accenture policy. Your privacy is important to us. Accenture uses your personal data only in compliance with data protection laws. For further information on how Accenture processes your personal data, please see our privacy statement at https://www.accenture.com/us-en/privacy-policy.

www.accenture.com


Add a family of AND_ALIGN_D_S keywords

Hey @ljleb , I'm looking for feedback on a novel method that I developed for blended guidance.
The idea is to compare guidance conds in two different-sized windows around each latent pixel: a detail window of size DxD and a structure window of size SxS. For each latent pixel, we compute a pair of alignment maps between the two tensors, called the detail_alignment and structure_alignment respectively.
The detail_alignment map considers all 2x2 sub-regions in the DxD regions and computes the cosine similarity between the parent and child tensors in each 2x2 sub-region, then averaging these values over all such sub-regions in the DxD regions. The structure_alignment map is computed similarly, using regions of size SxS instead for the structure.
Because cosine similarity of two random vectors in R^n tends to 0 as n grows sufficiently high (intuitively, random vectors tend to be increasingly orthogonal as the dimension of the space increases), averaging cosine similarity over 2x2 sub-regions instead of directly computing cosine similarity in regions of size DxD and SxS, is used as a normalization method to ensure the values computed at different resolutions DxD and SxS are comparable.
The detail alignment will tend to be higher when the details are similar between the two latents, and have a negative value instead when the details in the child latent are contrasting to the details in the parent latent, indicating that the second prompt contains novel details that can be blended. The structure alignment will instead be positive when the structure is similar, and negative where the child latent would significantly diverge from the compositional structure of the parent at resolution SxS.
An alignment weight is computed by starting with the structure alignment and subtracting the detail alignment, giving a single alignment map which is positive when the child latent guidance can enhance the details of the parent latent guidance, without disrupting its structure. The negative values are clamped, and each latent pixel is blended according to its resulting alignment weight.
I currently have this implemented for a range of values for D and S, from 2 to 33 latent pixels each, for experimentation. Decreasing the value of D will typically make it easier for the child prompt to influence the details of the resulting image, while increasing the value of S will work to relax the preservation of higher level compositional structure. For most prompts, structure prompt AND_ALIGN_3_7 detail prompt feels like a good starting point, but I recommend trying different combinations with a range of different prompts to get a feel for how they behave.
I've tested this method rather extensively and found it to be very useful, and I'm excited to share it. Please let me know if you have any questions, comments, suggestions, feedback, etc.

This looks really cool! I'll run some generations later today to try to get a feel for it.
From a usability perspective, we might want to add 2 sliders (1 for D, 1 for S) that become visible when selecting "Alignment blend". Using AND_ALIGN without D and S could fallback on reasonable defaults, perhaps 7 and 3 as you suggested.
Can't wait to try this!

From a usability perspective, we might want to add 2 sliders in the prompt formatter (1 for D, 1 for S) that become visible when selecting "Alignment blend". Using a AND_ALIGN b without D and S could fallback on reasonable defaults, perhaps 3 and 7 as you suggested.

Indeed. For me, a big unresolved question is how to make this a tool that people can use easily and intuitively without a deep understanding of diffusion models, latent space, linear algebra, differential equations. While ideally still allowing people to tweak parameters if they want to, in order to dial in a specific vision of what they are really trying to express.
And since it's your project, I thought it's a better approach to present the general method first and then start a conversation about what is the best UX.
One idea that occurs to me is that we could ship a few presets like AND_ALIGN_FINE, AND_ALIGN_MEDIUM, AND_ALIGN_COARSE, and a general AND_ALIGN_D_S with sliders like you suggested for D and S. I'm new to Gradio though, and might need some suggestions on the best way to implement sliders for a single keyword only.

Can't wait to try this!

Cool, I'm glad. :)
Some of the more interesting tests that I did beyond just varying D and S, that helped develop some intuition for how it works:
I. When the two prompts are very similar and have only subtle differences
II. When the two prompts are very different
III. Disabling AuxCondDeltaVisitor for first ~10% of steps (Very powerful for giving the first prompt a head start to define the composition, then structure alignment will already be higher when 2nd prompt is enabled, although this same principle works well with other conciliation strategies as well -- https://github.com/ljleb/sd-webui-neutral-prompt/issues/25)
Some tests I'd like to explore further:
IV. Is there any use for D > S ? It's not exactly the same interchanging the two prompts (due to the clamping of negative alignment weight, I think)
V. Testing without the clamping of negative alignment weight
VI. Computing a binary alignment mask instead, like AND_SALT (early results were very promising here, but I haven't tried it since I made the change to use average similarity over 2x2 sub-neighborhoods)
V. Nesting like [ a AND_ALIGN_11_19 b ] AND_ALIGN_3_11 c

To facilitate comparison of the techniques without repeated checking out a different commit and restarting, I pushed an additional commit that adds AND_MASK_ALIGN_D_S which uses a binary alignment_mask instead of soft alignment_weight. (I didn't add UI support for it, but the prompt keyword is parsed)
This commit is purely for experimentation. AND_ALIGN_D_S is unchanged. I will try to carve out some time for a thorough comparison later.

Apologies for the delay here. I generated 2 large grids locally to try to understand the method a bit better but didn't take more time yet.
Is it okay with you if I update the UX code and refactor the parser directly in your PR?

Sure. We should look for the one that gives the best results and only keep this one in my opinion. Let me know if this is what you intended to do.

Yes, we're on the same page there. After some further testing today, I think I like AND_ALIGN_D_S better as it allows better blending. The one disadvantage is that sometimes you have to increase the weight of the prompt quite a bit to get the intended effect to be strong enough.

Is it okay with you if I update the UX code and refactor the parser directly in your PR?

Yeah, it's totally fine with me. Reading the code in this extension is what inspired the idea in the first place and I'm happy to work together on it.


TouchEvent bug

neko target
touchPointID is a increase number
everytime touchPointID will add 1 number when TouchEvent.TOUCH_BEGIN dispatched
and i restart the application the touchPointID is the last number,maybe the touchPointID  saved in A file
i just test it in neko and html5 target and html5 is ok
by theway ,i can not build windows target ,a lot error like this:
D:/haxelib/openfl/3,1,2/openfl/display3D/textures/Texture.hx:123: characters 2-38 : Invalid null expression: null.id
the error line code is : GL.bindTexture (GL.TEXTURE_2D, null);

I believe the touchpoint ID is given by SDL (from the operating system?) and is not intended to be used as anything other than a unique ID. It may or may not have some order to it.
I think that error you are having may be fixed in more recent versions of OpenFL?

hi,this issue comeback


Add hal_ethsw functions to support WanManager build

Adding stubs for
GWP_RegisterEthWan_Callback
GWP_GetEthWanInterfaceName

https://jenkins.code.rdkcentral.com/job/github-triggered/10227/ started

https://jenkins.code.rdkcentral.com/job/build-component-rdk-next/35734/ started.

https://jenkins.cmf.code.rdkcentral.com/job/github-triggered/5033/ started

Smoke tests for ['build-tur-bb'] added.
https://jenkins.cmf.code.rdkcentral.com/job/test-components-flow/90422/


Add match_keystd::regex tag

Added a tag match_key<std::regex> for regexp key filters osmium::tags::Filter<std::regex>

Thanks @oxidase. Accepted despite the wrong formatting. Next time please use the same formatting as in the rest of the code.

Oh, it is the OSRM formatting style, i have to be careful with project styles.


Don't exit epicbox listener on >= 5 reconnections

This was causing listener to exit gracefully after 5 reconnection attempts.  This can happen naturally, and shouldn't force wallets to close
This behavior no longer occurs, and listener persists, with these portions of code removed

@johanneshahn I recognize this was the intent. However, it’s causing an inability for epic-wallet to remain listening, when there are non-fatal errors.
Additionally, reconnect counter never resets to 0, as it appears was intended.

Feel free to use this branch, to verify this: https://github.com/who-biz/epic-wallet/tree/keepalive
I added logging that shows counter is never reset

Closing - fixed in https://github.com/fastepic/epic-wallet/pull/1


Failure to read model in Tensorflow r1.0

Hey I'm getting this error in Tensorflow 1.0 after modifying the code to get working
NotFoundError (see above for traceback): Tensor name "rnnlm/multi_rnn_cell/cell_0/gru_cell/candidate/biases" not found in checkpoint files models/reddit/model.ckpt-4682964
	 [[Node: save/RestoreV2_4 = RestoreV2[dtypes=[DT_FLOAT], _device="/job:localhost/replica:0/task:0/cpu:0"](_recv_save/Const_0, save/RestoreV2_4/tensor_names, save/RestoreV2_4/shape_and_slices)]]

Here's the updated code by the way
Model.py
import tensorflow as tf
from tensorflow.contrib.rnn import core_rnn_cell as rnn_cell
from tensorflow.contrib import legacy_seq2seq as seq2seq

import numpy as np

class Model():
    def __init__(self, args, infer=False): # infer is set to true during sampling.
        self.args = args
        if infer:
            # Worry about one character at a time during sampling; no batching or BPTT.
            args.batch_size = 1
            args.seq_length = 1

        # Set cell_fn to the type of network cell we're creating -- RNN, GRU or LSTM.
        if args.model == 'rnn':
            cell_fn = rnn_cell.BasicRNNCell
        elif args.model == 'gru':
            cell_fn = rnn_cell.GRUCell
        elif args.model == 'lstm':
            cell_fn = rnn_cell.BasicLSTMCell
        else:
            raise Exception("model type not supported: {}".format(args.model))

        # Call tensorflow library tensorflow-master/tensorflow/python/ops/rnn_cell
        # to create a layer of rnn_size cells of the specified basic type (RNN/GRU/LSTM).
        # cell = cell_fn(args.rnn_size, state_is_tuple=True)
        cell = cell_fn(args.rnn_size)

        # Use the same rnn_cell library to create a stack of these cells
        # of num_layers layers. Pass in a python list of these cells.
        # (The [cell] * arg.num_layers syntax literally duplicates cell multiple times in
        # a list. The syntax is such that [5, 6] * 3 would return [5, 6, 5, 6, 5, 6].)
        self.cell = cell = rnn_cell.MultiRNNCell([cell] * args.num_layers, state_is_tuple=True)

        # Create two TF placeholder nodes of 32-bit ints (NOT floats!),
        # each of shape batch_size x seq_length. This shape matches the batches
        # (listed in x_batches and y_batches) constructed in create_batches in utils.py.
        # input_data will receive input batches, and targets will be what it compares against
        # to calculate loss.
        self.input_data = tf.placeholder(tf.int32, [args.batch_size, args.seq_length])
        self.targets = tf.placeholder(tf.int32, [args.batch_size, args.seq_length])

        # Using the zero_state function in the RNNCell master class in rnn_cell library,
        # create a tensor of zeros such that we can swap it in for the network state at any time
        # to zero out the network's state.
        # State dimensions are: cell_fn state size (2 for LSTM) x rnn_size x num_layers.
        # So an LSTM network with 100 cells per layer and 3 layers would have a state size of 600,
        # and initial_state would have a dimension of none x 600.
        self.initial_state = self.cell.zero_state(args.batch_size, tf.float32)

        # Scope our new variables to the scope identifier string "rnnlm".
        with tf.variable_scope('rnnlm'):
            # Create new variable softmax_w and softmax_b for output.
            # softmax_w is a weights matrix from the top layer of the model (of size rnn_size)
            # to the vocabulary output (of size vocab_size).
            softmax_w = tf.get_variable("softmax_w", [args.rnn_size, args.vocab_size])
            # softmax_b is a bias vector of the ouput characters (of size vocab_size).
            softmax_b = tf.get_variable("softmax_b", [args.vocab_size])
            # [TODO: Why specify CPU? Same as the TF translation tutorial, but don't know why.]
            with tf.device("/cpu:0"):
                # Create new variable named 'embedding' to connect the character input to the base layer
                # of the RNN. Its role is the conceptual inverse of softmax_w.
                # It contains the trainable weights from the one-hot input vector to the lowest layer of RNN.
                embedding = tf.get_variable("embedding", [args.vocab_size, args.rnn_size])
                # Create an embedding tensor with tf.nn.embedding_lookup(embedding, self.input_data).
                # This tensor has dimensions batch_size x seq_length x rnn_size.
                # tf.split splits that embedding lookup tensor into seq_length tensors (along dimension 1).
                # Thus inputs is a list of seq_length different tensors,
                # each of dimension batch_size x 1 x rnn_size.
                inputs = tf.split(axis=1, num_or_size_splits=args.seq_length, value=tf.nn.embedding_lookup(embedding, self.input_data))
                # Iterate through these resulting tensors and eliminate that degenerate second dimension of 1,
                # i.e. squeeze each from batch_size x 1 x rnn_size down to batch_size x rnn_size.
                # Thus we now have a list of seq_length tensors, each with dimension batch_size x rnn_size.
                inputs = [tf.squeeze(input_, [1]) for input_ in inputs]

        # THIS LOOP FUNCTION IS NEVER ACTUALLY USED.
        # IT IS EXPLICITLY NOT USED DURING TRAINING.
        # DURING INFERENCE, SEQ_LENGTH == 1, SO SEQ2SEQ.RNN_DECODER() ONLY USES THE LOOP ARGUMENT
        # ON SEQUENCE LENGTH ITEMS SUBSEQUENT TO THE FIRST.
        # This looping function is used as part of seq2seq.rnn_decoder only during sampling -- not training.
        # prev is a 2D Tensor of shape [batch_size x cell.output_size].
        # returns a 2D Tensor of shape [batch_size x cell.input_size].
        def loop(prev, _):
            # prev is initially the top cell state.
            # Convert the top cell state into character logits.
            prev = tf.matmul(prev, softmax_w) + softmax_b
            # Pull the character with the greatest logit (no sampling, just argmaxing).
            # WHY IS THIS ARGMAXING WHEN ACTUAL SAMPLING IS DONE PROBABILISTICALLY?
            # DOESN'T THIS CAUSE OUTPUTS NOT TO MATCH INPUTS DURING SEQUENCE GENERATION?
            prev_symbol = tf.stop_gradient(tf.argmax(prev, 1))
            # Re-embed that symbol as the next step's input, and return that.
            return tf.nn.embedding_lookup(embedding, prev_symbol)

        # Set up a seq2seq decoder from the seq2seq.py library.
        # This constructs the outputs and states nodes of the network.
        # Outputs is a list (of len seq_length, same as inputs) of tensors of shape [batch_size x rnn_size].
        # These are the raw output values of the top layer of the network at each time step.
        # They have NOT been fed through the decoder projection; they are still in network space,
        # not character space.
        # State is a tensor of shape [batch_size x cell.state_size].
        # This is also the step where all of the trainable parameters for the LSTM (weights and biases) are defined.
        outputs, self.final_state = seq2seq.rnn_decoder(inputs,
                self.initial_state, cell, loop_function=loop if infer else None, scope='rnnlm')
        # tf.concat concatenates the output tensors along the rnn_size dimension,
        # to make a single tensor of shape [batch_size x (seq_length * rnn_size)].
        # This gives the following 2D outputs matrix:
        #   [(rnn output: batch 0, seq 0) (rnn output: batch 0, seq 1) ... (rnn output: batch 0, seq seq_len-1)]
        #   [(rnn output: batch 1, seq 0) (rnn output: batch 1, seq 1) ... (rnn output: batch 1, seq seq_len-1)]
        #   ...
        #   [(rnn output: batch batch_size-1, seq 0) (rnn output: batch batch_size-1, seq 1) ... (rnn output: batch batch_size-1, seq seq_len-1)]
        # tf.reshape then reshapes it to a tensor of shape [(batch_size * seq_length) x rnn_size].
        # Output will now be the following matrix:
        #   [rnn output: batch 0, seq 0]
        #   [rnn output: batch 0, seq 1]
        #   ...
        #   [rnn output: batch 0, seq seq_len-1]
        #   [rnn output: batch 1, seq 0]
        #   [rnn output: batch 1, seq 1]
        #   ...
        #   [rnn output: batch 1, seq seq_len-1]
        #   ...
        #   ...
        #   [rnn output: batch batch_size-1, seq seq_len-1]
        # Note the following comment in rnn_cell.py:
        #   Note: in many cases it may be more efficient to not use this wrapper,
        #   but instead concatenate the whole sequence of your outputs in time,
        #   do the projection on this batch-concatenated sequence, then split it
        #   if needed or directly feed into a softmax.
        output = tf.reshape(tf.concat(axis=1, values=outputs), [-1, args.rnn_size])
        # Obtain logits node by applying output weights and biases to the output tensor.
        # Logits is a tensor of shape [(batch_size * seq_length) x vocab_size].
        # Recall that outputs is a 2D tensor of shape [(batch_size * seq_length) x rnn_size],
        # and softmax_w is a 2D tensor of shape [rnn_size x vocab_size].
        # The matrix product is therefore a new 2D tensor of [(batch_size * seq_length) x vocab_size].
        # In other words, that multiplication converts a loooong list of rnn_size vectors
        # to a loooong list of vocab_size vectors.
        # Then add softmax_b (a single vocab-sized vector) to every row of that list.
        # That gives you the logits!
        self.logits = tf.matmul(output, softmax_w) + softmax_b
        # Convert logits to probabilities. Probs isn't used during training! That node is never calculated.
        # Like logits, probs is a tensor of shape [(batch_size * seq_length) x vocab_size].
        # During sampling, this means it is of shape [1 x vocab_size].
        self.probs = tf.nn.softmax(self.logits)
        # seq2seq.sequence_loss_by_example returns 1D float Tensor containing the log-perplexity
        # for each sequence. (Size is batch_size * seq_length.)
        # Targets are reshaped from a [batch_size x seq_length] tensor to a 1D tensor, of the following layout:
        #   target character (batch 0, seq 0)
        #   target character (batch 0, seq 1)
        #   ...
        #   target character (batch 0, seq seq_len-1)
        #   target character (batch 1, seq 0)
        #   ...
        # These targets are compared to the logits to generate loss.
        # Logits: instead of a list of character indices, it's a list of character index probability vectors.
        # seq2seq.sequence_loss_by_example will do the work of generating losses by comparing the one-hot vectors
        # implicitly represented by the target characters against the probability distrutions in logits.
        # It returns a 1D float tensor (a vector) where item i is the log-perplexity of
        # the comparison of the ith logit distribution to the ith one-hot target vector.
        loss = seq2seq.sequence_loss_by_example([self.logits], # logits: 1-item list of 2D Tensors of shape [batch_size x vocab_size]
                [tf.reshape(self.targets, [-1])], # targets: 1-item list of 1D batch-sized int32 Tensors of the same length as logits
                [tf.ones([args.batch_size * args.seq_length])], # weights: 1-item list of 1D batch-sized float-Tensors of the same length as logits
                args.vocab_size) # num_decoder_symbols: integer, number of decoder symbols (output classes)
        # Cost is the arithmetic mean of the values of the loss tensor
        # (the sum divided by the total number of elements).
        # It is a single-element floating point tensor. This is what the optimizer seeks to minimize.
        self.cost = tf.reduce_sum(loss) / args.batch_size / args.seq_length
        # Create a summary for our cost.
        tf.summary.scalar("cost", self.cost)
        # Create a node to track the learning rate as it decays through the epochs.
        self.lr = tf.Variable(args.learning_rate, trainable=False)
        self.global_epoch_fraction = tf.Variable(0.0, trainable=False)
        self.global_seconds_elapsed = tf.Variable(0.0, trainable=False)
        tvars = tf.trainable_variables() # tvars is a python list of all trainable TF Variable objects.

        # tf.gradients returns a list of tensors of length len(tvars) where each tensor is sum(dy/dx).
        grads, _ = tf.clip_by_global_norm(tf.gradients(self.cost, tvars),
                args.grad_clip)
        optimizer = tf.train.AdamOptimizer(self.lr) # Use ADAM optimizer with the current learning rate.
        # Zip creates a list of tuples, where each tuple is (variable tensor, gradient tensor).
        # Training op nudges the variables along the gradient, with the given learning rate, using the ADAM optimizer.
        # This is the op that a training session should be instructed to perform.
        self.train_op = optimizer.apply_gradients(zip(grads, tvars))
        self.summary_op = tf.summary.merge_all()

    def save_variables_list(self):
        # Return a list of the trainable variables created within the rnnlm model.
        # This consists of the two projection softmax variables (softmax_w and softmax_b),
        # embedding, and all of the weights and biases in the MultiRNNCell model.
        # Save only the trainable variables and the placeholders needed to resume training;
        # discard the rest, including optimizer state.
        save_vars = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, scope='rnnlm')
        save_vars.append(self.lr)
        save_vars.append(self.global_epoch_fraction)
        save_vars.append(self.global_seconds_elapsed)
        return save_vars

    def forward_model(self, sess, state, input_sample):
        '''Run a forward pass. Return the updated hidden state and the output probabilities.'''
        shaped_input = np.array([[input_sample]], np.float32)
        inputs = {self.input_data: shaped_input,
                    self.initial_state: state}
        [probs, state] = sess.run([self.probs, self.final_state], feed_dict=inputs)
        return probs[0], state

I guess you have to retrain model with tensorflow 1.0?

Yeah it looks like the variable names changed with Tensorflow 1.0 (this repo was created under v0.11). I haven't looked into this in depth yet but I expect the right dictionary used in connection with a saver will make it possible to fix this without retraining the model from scratch.

I got the same problem.I retrained the model with tensorflow1.0.It worked.That`s all.

Did you modify your code to make it work on TensorFlow 1.0?
On Thu, Mar 2, 2017, 3:00 AM aguang1201<EMAIL_ADDRESS>wrote:

I got the same problem.I retrained the model with tensorflow1.0.It
worked.That`s all.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/pender/chatbot-rnn/issues/6#issuecomment-283583094,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAPfBKGXbZPvNGzbDdYmYUvQexgDB1idks5rhncHgaJpZM4MMpA2
.

--
Sent from my phone

Anyone who success to convert pre-trained model working on TF >1.0 without retraining?

I am getting the same error with tesorflow 1.3 . Can anyone help on how to resolve this issue

@pender

Yeah it looks like the variable names changed with Tensorflow 1.0 (this repo was created under v0.11). I haven't looked into this in depth yet but I expect the right dictionary used in connection with a saver will make it possible to fix this without retraining the model from scratch.

I tried this and it works. Thank you. But can you please confirm if what i have done is correct?
I used the below dictionary
names_list=[
        "rnnlm/softmax_w",
        "rnnlm/softmax_b",
        "rnnlm/embedding",
 "rnnlm/MultiRNNCell/Cell0/GRUCell/Gates/Linear/Matrix",
 "rnnlm/MultiRNNCell/Cell0/GRUCell/Gates/Linear/Bias",
  "rnnlm/MultiRNNCell/Cell0/GRUCell/Candidate/Linear/Matrix",
 "rnnlm/MultiRNNCell/Cell0/GRUCell/Candidate/Linear/Bias",
"rnnlm/MultiRNNCell/Cell1/GRUCell/Gates/Linear/Matrix",
 "rnnlm/MultiRNNCell/Cell1/GRUCell/Gates/Linear/Bias",
  "rnnlm/MultiRNNCell/Cell1/GRUCell/Candidate/Linear/Matrix",
 "rnnlm/MultiRNNCell/Cell1/GRUCell/Candidate/Linear/Bias",
 "rnnlm/MultiRNNCell/Cell2/GRUCell/Gates/Linear/Matrix",
 "rnnlm/MultiRNNCell/Cell2/GRUCell/Gates/Linear/Bias",
  "rnnlm/MultiRNNCell/Cell2/GRUCell/Candidate/Linear/Matrix",
 "rnnlm/MultiRNNCell/Cell2/GRUCell/Candidate/Linear/Bias",
 "rnnlm/MultiRNNCell/Cell3/GRUCell/Gates/Linear/Matrix",
 "rnnlm/MultiRNNCell/Cell3/GRUCell/Gates/Linear/Bias",
  "rnnlm/MultiRNNCell/Cell3/GRUCell/Candidate/Linear/Matrix",
 "rnnlm/MultiRNNCell/Cell3/GRUCell/Candidate/Linear/Bias",

]

Then in sample_main(args) function I assigned this dictionary to variables tensors like below:
saver = tf.train.Saver(builtins.dict(zip(names_list,tf.trainable_variables())))
Placed the whole code here https://github.com/NarahariKaushik/toy_chatbot . Not sure how to contribute to this repo(still new to git hub)

@aguang1201 It would be of great help to me if you can upload your trained model here.

@NarahariKaushik This solved the problem for me. Thank you.


Use ternary instead of if statement in module export

This fixes an issue we are seeing when building apps in production mode. This issue was introduced in version 1.0.3 with PR #35.
Before this change, when building in production mode, we would not get the config from the app:

Now with this change, we get the config in production and all other modes:

Paired with @eugenioenko.

@josemarluedke Could you cross-post this issue to the Embroider repo? Sounds like there might be an underlying issue that we would want to look into over there as well?

@josemarluedke Could you cross-post this issue to the Embroider repo? Sounds like there might be an underlying issue that we would want to look into over there as well?

Hey thanks for your contribution @josemarluedke 🎉
As it turns out I got nerd sniped while pairing with @pichfl and we fixed this problem, along with the issue with duplication of configs 💪
You can take a look here https://github.com/mansona/ember-get-config/pull/41


Fix update_role and add tests

fix update_role and add tests
Add Issue templates and dependabot.yml
Update .travis.yml
Add python 3.9 to travis tests
The bot tag is given to the FakeApp ClientUser
(Correct Branch from #12 )

Ok haha. I have a partial review that mostly says "erm did you mean to commit this?"
Fixing up my docker install so I can make sure your code runs ok with my bot and tests.

So I actually still want to confirm, there seem to be a bunch of things you were adding that seem to be for your bot?  templates that seem specific to your bot, an updated .gitignore (could go either way), removing requirements.txt(??)
I don't see anything wrong with your actual edits, it wasn't an issue that I came across but I'll believe it was an issue since I come across things like this all the time.  Anyways, I'm tracking backend.py, state.py and test_role.py as all making sense to me.  Can you confirm the rest of the changes?

So I added requirements.txt but realised that I should be using dev-requirements.txt so removed it again later
.gitignore change allows developers to use virtual environments (including me)
As for templates I believe I have removed all specifics for Koala, only other thing that can be removed if you want is the contact details section on the bug report. I added that as most of the people finding bugs may not use GitHub enough to respond through it, but I guess on this repo everyone accessing it would be active anyway.

thanks for responding!  I think that helps.  I'll go ahead and accept... and we'll see what the upstream does with some of the new things.


Issue/3623 modules update dependencies

Description

Moved inmanta module update to inmanta project update. The former still works but triggers a deprecation warning.
Fixed bug where inmanta project update would not install v1 modules' Python dependencies (bug exists on master only).
inmanta project update now also updates Python dependencies, in contrast to iso4 behavior.

Additional notes:

While I put in the issue description that a test should be added to test this behavior on the server, I now believe the test on the module tool covers this sufficiently. I have not added a test for the server.

closes #3623
Self Check:
Strike through any lines that are not applicable (~~line~~) then check the box

[x] Attached issue to pull request
[x] Changelog entry
[x] Type annotations are present
[x] Code is clear and sufficiently documented
[x] No (preventable) type errors (check using make mypy or make mypy-diff)
[x] Sufficient test cases (reproduces the bug/tests the requested feature)
[x] Correct, in line with design
[x] End user documentation is included or an issue is created for end-user documentation (add ref to issue here: )

Reviewer Checklist:

[ ] Sufficient test cases (reproduces the bug/tests the requested feature)
[ ] Code is clear and sufficiently documented
[ ] Correct, in line with design

Processing this pull request

Pull request rejected by merge tool. Failed to parse change entry file: Change entry /tmp/tmpoxtxl8re/changelogs/unreleased/3623-module-update-dependencies.yml does not match pydantic schema: 1 validation error for ChangeEntry
destination-branches
field required (type=value_error.missing)

Processing this pull request

Merged into branches master in 258ae33226f86364e6e3fb7f7d26c636e7958108


Support encoding 8KHz source

Currently encoders crashes for 8 KHz with the following:
---- lc3::test::lc3_encode stdout ----
thread 'lc3::test::lc3_encode' panicked at /home/kayo/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lc3-codec-0.2.0/src/encoder/bandwidth_detector.rs:36:34:
attempt to subtract with overflow
stack backtrace:
   0: rust_begin_unwind
             at /rustc/9b00956e56009bab2aa15d7bff10916599e3d6d6/library/std/src/panicking.rs:645:5
   1: core::panicking::panic_fmt
             at /rustc/9b00956e56009bab2aa15d7bff10916599e3d6d6/library/core/src/panicking.rs:72:14
   2: core::panicking::panic
             at /rustc/9b00956e56009bab2aa15d7bff10916599e3d6d6/library/core/src/panicking.rs:145:5
   3: lc3_codec::encoder::bandwidth_detector::BandwidthDetector::new
             at /home/kayo/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lc3-codec-0.2.0/src/encoder/bandwidth_detector.rs:36:34
   4: lc3_codec::encoder::lc3_encoder::Lc3Encoder::new
             at /home/kayo/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lc3-codec-0.2.0/src/encoder/lc3_encoder.rs:134:38

Seems it happened because fs_idx for 8KHz is 0: https://github.com/ninjasource/lc3-codec/blob/c912899e0ebbf8c2c4c79eaadb89966a48db0609/src/common/config.rs#L44

Hi, thanks for reporting this. I can see the issue there but I'm going to have to figure out what start and stop bandwidth number to use for 8k sampling frequency and why originally chose the ones I did. Therefore I'm not going to be able to fix this immediately since I need to test the other cases for breakages.


serialDevice.py first review

May the Force be with me if I'm doing this the wrong way xD

Good Job @Venturi


Remove race condition - Fixes 2143

Fixes #2143
Adds a new internal command: release_validators. The validators themselves no longer try to free up the parent job. The release_validators is a command that performs an active polling checking for the jobs to complete. It is automatically submitted to the queue after the validators have been submitted.

Codecov Report

Merging #2203 into master will decrease coverage by 13.68%.
The diff coverage is n/a.

@@             Coverage Diff             @@
##           master    #2203       +/-   ##
===========================================
- Coverage   92.04%   78.36%   -13.69%
===========================================
  Files         191        9      -182
  Lines       19515      550    -18965
===========================================
- Hits        17963      431    -17532
+ Misses       1552      119     -1433

Impacted Files
Coverage Δ

...ita_pet/handlers/study_handlers/sample_template.py

qiita_db/ontology.py

qiita_db/metadata_template/sample_template.py

qiita_pet/handlers/api_proxy/prep_template.py

qiita_db/investigation.py

qiita_db/sql_connection.py

...ndlers/study_handlers/tests/test_vamps_handlers.py

qiita_db/handlers/artifact.py

qiita_pet/uimodules/__init__.py

qiita_db/handlers/tests/test_plugin.py

... and 169 more

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 a058102...723d0ed. Read the comment docs.

@josenavas, just FYI, the PR actually has failed tests.

Ready for review!

I deployed this in the test environment and executed ~10 deblur jobs. All of them succeeded and I haven't seen the race condition occurring again. I'm pretty confident that the issue has been solved because conceptually the race condition has been removed.


IndexedDBStorage root can get out of sync in case of error

I noticed that IndexedDBStorage#setRoot assigns the new root to this.#currentRoot before calling async set(...). If the latter fails, then the field will be out of sync with storage. Suggest changing to:
  async setRoot(r: Hash): Promise<void> {
    await set(this._prefixHash, r, this._store);
    this.#currentRoot = r;
  }

FYI @Kolezhniuk

Hello @nedgar good catch, I'll take a look


Reply packet comes to the Node but not received by the container

Is there an existing issue for this?

[X] I have searched the existing issues

What happened?
Packets are going out through the lxc interface and the response reaches the Node but fails to be received by the container.
Here is the tcdump
$ tcpdump -i any host <IP_ADDRESS> -n

11:37:10.245478 lxcf5cbf63f3d30 In  IP <IP_ADDRESS> > <IP_ADDRESS>: ICMP echo request, id 104, seq 42, length 64
11:37:10.245513 eno1  Out IP <IP_ADDRESS> > <IP_ADDRESS>: ICMP echo request, id 104, seq 42, length 64
11:37:10.291637 eno1  In  IP <IP_ADDRESS> > <IP_ADDRESS>: ICMP echo reply, id 104, seq 42, length 64
11:37:11.269480 lxcf5cbf63f3d30 In  IP <IP_ADDRESS> > <IP_ADDRESS>: ICMP echo request, id 104, seq 43, length 64
11:37:11.269515 eno1  Out IP <IP_ADDRESS> > <IP_ADDRESS>: ICMP echo request, id 104, seq 43, length 64
11:37:11.315629 eno1  In  IP <IP_ADDRESS> > <IP_ADDRESS>: ICMP echo reply, id 104, seq 43, length 64
11:37:12.293481 lxcf5cbf63f3d30 In  IP <IP_ADDRESS> > <IP_ADDRESS>: ICMP echo request, id 104, seq 44, length 64
11:37:12.293520 eno1  Out IP <IP_ADDRESS> > <IP_ADDRESS>: ICMP echo request, id 104, seq 44, length 64
11:37:12.339660 eno1  In  IP <IP_ADDRESS> > <IP_ADDRESS>: ICMP echo reply, id 104, seq 44, length 64

The first 3 lines shows that the packet leaves the lxc interface and goes out public through eno1 and the response is received by eno1 but it doesn't go back to the lxc interface.
We have seen this issue couple of times in the past and every time we restart the Cilium pod this issue goes away.
Cilium Version
1.14.0-rc.1
Kernel Version
5.10.0-22-amd64 #1 SMP Debian 5.10.178-3 (2023-04-22) x86_64 GNU/Linux
Kubernetes Version
1.25.9
Sysdump
cilium-sysdump-20230728-120624.zip
Relevant log output
No response
Anything else?
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct

This happens when netfilter is restarted on the Node which was getting executed during pushing new code to our Nodes.
Closing this since we can avoid netfilter restart.


Feature: Bulk ingestion as temporary table

An adbc.ingest.mode.temporary ingestion mode might be useful.

Ideally we'd add the new option to adbc.h, but things like this feel like we shouldn't have to go through a whole revision. Given it's just a config option, maybe we can just add it without bumping the version (or else, we can just have all drivers support it and formally add it to the header the next time we do actually bump the version).
Thoughts @zeroshade @paleolimbot @kou?

How does adbc.ingest.mode.temporary work?
It creates a new temporary table and INSERT data to the created temporary table, right?
I think that we can add it as an experimental feature to 1.1.0 because it just adds an option value to an existing option. And we can mark it as a stable feature when we release 1.2.0.

For clarity, is the idea here to add a new ingestion mode (like create_append/create/append/create_replace) or to add an option which would be compatible with all ingestion modes?

The latter

I'm working on this now, sorry - but you generally don't need to differentiate:
sqlite> CREATE TEMP TABLE foo (bar);
sqlite> INSERT INTO foo VALUES (1);
sqlite> SELECT * FROM main.foo;
Error: no such table: main.foo
sqlite> SELECT * FROM temp.foo;
1
sqlite> SELECT * FROM foo;
1

MSSQL does require you to refer to the table specially, though.

I'm working on this now, sorry - but you generally don't need to differentiate:

I appreciate that you mostly don't have to in the SQL - it was more a question of whether the driver should be able to drop/edit a non-temporary table then the ingest option is false? Unless carefully documented a user could easily misunderstand and result in data loss.

Ah, good point. I think I would favor being explicit.


feat: smoldot + codegen

WIP

The main thing blocking this is figuring out how to incorporate the chain spec into the url. I'd suggest we use //s as separators, but deno's LS currently breaks on this – we should open an issue.

figuring out how to incorporate the chain spec into the url

Good question: I was thinking something along the lines of...
https://capi.dev/smoldot/ipfs:{hash}/mod.ts

in this example, the {hash} is an IPFS CID, pointing to a chain spec.

I suppose this doesn't take into account the full life cycle

get a quick reference during development
bundle/ship an app, with the chain spec (?)
app instances must somehow maintain versions of the chain spec / keep it up to date
...

Thoughts @wirednkod?

Let me try to give my 2 cents here - which is based on some assumptions:

There is an API on substrate (or potentially could be created) that can generate the specs on the spot with the latest state in it;
There will still be 4 "known-specs" (Polkadot, Kusama, Westend, Rococo);

Having said that I think that there could be 2 possible solutions:
a) CAPI will expose an api for each app to receive/generate the latest chainspec as needed "on-the-spot"; This way the app owner is responsible for calling that api in order to get the latest specs (and bootnodes?) for the well known chain (or even better CAPI internally could call that API when a known-spec is used);
b) an internal parity worker is generating and saving chainspecs on an IPFS and a CAPI api is retrieving latest chainspecs from that IPFS (we could also have a domain name link to that IPFS etc).
TBH I do not think that chainspecs should be "saved" somewhere in a URL/IPFS or anything if there is a Substrate on-chain API that one can use to retrieve those;
For dev purposes we could have the (b) solution above providing "dev specs"
Finally I want to bring to your attention the whole bootnodes thing, as food for thought: ATM we are shipping for known chains the Parity maintained bootnodes, but this comes with the assumption that devs trust Parity endpoints. With latest release of SC extension we provide the option for a user to alter those bootnodes based on his preference. I think that altering bootnodes should be possible for dApp devs to provide or add their own bootnodes if interested into doing that;

I think we should separate the discovery value used for the codegen from the discovery value used at runtime. Right now they're linked, but theoretically it shouldn't matter if, say, a proxy server is used for the codegen but then smoldot is used at runtime, as the codegen only cares about the metadata, as AFAIK that is independent of the way you connect to the chain.
I think it's much more important to support using smoldot at runtime by divorcing the codegen discovery value from the runtime discovery value than by supporting smoldot for the codegen discovery value (although that will, of course, be important). Right now, I don't think there's a great way to do this, but I think this will be feasible upon the integration of env into Rune.
In terms of supporting smoldot for the codegen discovery value: As those who have concern about using proxy servers would likely have similar concerns about using capi.dev, we could, if useful, only support smoldot codegen on the local server, which would allow us to, say, rely on some config passed in via command line to specify the chain spec. For example, the url could just be something like /smoldot/polkadot, and the server could have config mapping polkadot to an appropriately up-to-date chain spec. This way, the URLs are stable, and don't have to change as the chain spec evolves. (Although, given the stability & caching of the codegen, I suspect that the chain spec would not need to be updated all that often for the codegen, though I may be mistaken.)
This would mean:

people using capi.dev would use a proxy server for the codegen (which, I'll note, greatly aids the readability of the URLs), but would be free to (and, no doubt, encouraged to) use smoldot at runtime
those running their own server would have the additional option of using smoldot for the codegen, albeit at the price of some extra configuration

if we wanted to ease this transition, we could additionally support in the config mapping an alias like polkadot to either to a proxy endpoint or a chain spec, so that people could easily switch at any time

I think it's much more important to support using smoldot at runtime by divorcing the codegen discovery value from the runtime discovery value than by supporting smoldot for the codegen discovery value

I completely agree –– I believe this merits a dedicated issue. @tjjfvi, would you like to copy the body of your latest comment into a new issue?
Meanwhile, I've renamed this PR to reflect a more minor change (not touching on codegen).


Add missing vargs call

... cough...

I believe there is nothing stopping this being merged once it has another review - is there @jodh-intel (I think you got rid of your cough right? ;-) )

Hi @amshinde - could you take a look?


fix #5 - Breaks when a Package title != name

I can't open an upstream PR because fix_tests hasn't been merged yet...
This PR should address bug #5. Please have a look there for context.
In summary: when computing the set of managed packages, we can't just look them up by title in the Catalog. Because title and name can be different, we need to look into the "resource aliases" table too.
package {'arbitrarytitle': name => 'pkgname'}

I couldn't find a public API to access @aliases, hence the instance_variable_get hack... :(
/cc  @hashbrowncipher @solarkennedy @oholiab

In the last commit I've collapsed everything down to:
catalog_r = catalog.resource(r.ref) || find_resource_alias(["Package", r.name, :held_apt])

Is that any better?

#2 , which I just merged, also includes this.


Deadlock

Pulse 4.0.5
Creating a proxy delegate (let delegate = URLSessionProxyDelegate()) leads to deadlock because of Coredata performBlockAndWait

TCA on main thread

Pulse

after wrapping these in an async block

the app is stuck in LoggerStore.postInitialization()

using async version fixes problem but since I have zero experience with core data this is probably wrong solution

Thanks for the detailed report, @cpd. It should be fixed in https://github.com/kean/Pulse/releases/tag/4.1.1.
Workaround: make sure the store is initialized somewhere in your app delegate before you record any logs – simply access LoggerStore.shared to get it initialized.


Update cached repository with latest from upstream

When using a cached repository, make sure we have all the latest changes from the upstream repository.

Closing for now because we're going to need to fix #1079 before we can confidently say this is fixed too


Release crossplane package to upbound market

Summary

Release crossplane package to upbound market.
The build operation of package image has changed, meanwhile the push is done to both upbound market and the ghcr repository.

This PR will not be merged until a newer version (current v0.14.0) of up CLI is available which will add support for webhook configuration.
Update:

The package image is still rejected on the upbound marketplace. Crossplane support is looking into it. I will update the source code in case there will be changes required by Crossplane.

Update 2:

Upbound released a new version of its CLI that allows webhook configuration in their xpkg.
Test the release process with act on local machine.

Checklist

[x] Categorize the PR by setting a good title and adding one of the labels:
bug, enhancement, documentation, change, breaking, dependency
as they show up in the changelog

@ccremer as discussed yesterday. I left the process of building the package for the local install the same meanwhile it has been updated for ghcr and upbound.


Simon add belstrom 2017

Hi Jeff, this is the pull request for adding "Metagenomic and metatranscriptomic analysis of saliva reveals disease-associated microbiota in patients with periodontitis and dental caries" to the dashboard.
Additionally this PR:

comments out the entry for "Cebria-Mendoza 2021" in sample_metadata_classifier.py. The presence of this entry breaks the pipeline: The dictionary that gets read out by the script contains no entry for "Cebria-Mendoza 2021" because  the relevant BioProject is currently skipped within prepare-dashboard-data.py (link).
Fixes the structure of import-accession.sh to account for the new $SRA_FILES structure (see your dm here)

After running prepare-dashboard-data.py the script returns:
Now check in data.js and the json files and check out on prod
Then run copy-down-hvreads.sh and send the result to prod out of band

Is the latter part something you do, or something I should do?

Note to self, do the following once PR is done:

After review is complete and the changes are merged, you'll need to
ssh into data.securebio.org and run:
cd mgs-pipeline/
git pull
To update the dashboard.

In general it's much better to do a larger number of smaller PRs. For example, cbc9d53 could have been its own PR. This makes reviewing easier and makes it less likely people overlook bugs.
I also see lots of removals from unrelated papers. Can you try deleting dashboard/top_species_counts and dashboard/top_species_scratch and rerunning prepare dashboard data.

I removed those folders and reran prepare-dashboard-data.sh. I'm not entirely sure what you mean by removals from unrelated papers, though I do see that comparison_sample_counts files for other BioProjects have added content (and I do not know if this is to be expected."

Ok that makes sense, thanks!


feat: Notification options for when auto clicker starts and/or finishes

Description
An extra tab has been added to Settings for notifications. Two checkboxes to toggle whether you receive a macOS notification when the auto clicker starts and/or finishes running.
macOS will request notification permissions when a checkbox has been toggled for the first time.
A notification service has been added for future expansion of app notifications in mind (it's just a single static function atm).
Related Issue
None
Motivation and Context
Addresses the Issue 'Notifications #64' with tag 'Enhancement'.
How Has This Been Tested?
Tested thoroughly on two different machines (intel and Apple Silicon).
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist

[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.

Closes #64 when merged

I'll make sure I use SwiftLint next time. Is there anything else I missed for next time?

Just taking a look now, Xcode is doing its usual thing and updating lmao

Other than a few formatting things that SwiftLint picked up, there was a bug with notification intervals <= 0 silently throwing an exception and not registering the notification. I've put in a bug fix for this, but that was it that I could see!

Thanks for the PR, greatly appreciated

there was a bug with notification intervals <= 0

Ah yeah, sorry I saw that but forgot the fix it.

Thanks for the PR, greatly appreciated

No worries. It was a nice project to work in, well-organised. I'll get started on the feature I requested soon.

No worries. It was a nice project to work in, well-organised. I'll get started on the feature I requested soon.

Thanks! Its handy to have some feedback on that as its difficult to know when working alone haha


query for a reference does not work

When I try to query a collection for a document with a reference value I get the following error:

Error: Argument "value" is not a valid FieldValue. Detected an object of type "DocumentReference" that doesn't match the expected instance. Please ensure that the Firestore types you are using are from the same NPM package.

Fixed and released as 1.0.0-dev.14.0.

Thanks for the update. The queries are working now.
However I have a similar problem, when I try to store a document with a property that is an array of references. Looking at the firestore online editor in the firebase console this is possible/allowed.
The error messages says:

Error: Detected an object of type "DocumentReference" that doesn't match the expected instance. Please ensure that the Firestore types you are using are from the same NPM package.

Right, complex values in lists are not supported currently. There is nothing that prevents us from making it work though.
I created #24 to track this issue.

Just an FYI, a new version is up on Pub with support for complex types in Firestore lists.


Sync with master to level

Each release should be tagged on master branch. So syncing them.

Codecov Report

Merging #166 into master will not impact coverage.

@@          Coverage Diff          @@
##           master   #166   +/-   ##
=====================================
  Coverage       0%     0%
=====================================
  Files           1      1
  Lines          36     36
=====================================
  Misses         36     36

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 9423b59...f841dff. Read the comment docs.


Henry Ecker: Watch smmcpan.com

Henry Ecker requests the watch of the watch_keyword smmcpan\.com. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

smmcpan\.com has been seen in 0 true positives, 0 false positives, and 0 NAAs.

Approved by Spevacus in Charcoal HQ


Problem: run_mutation.pl using the test suite from Evosuite.

Hi,
I have a problem when doing mutation analysis with the test set generated by Evosuite.
Specifically, mutation.test fails  with the following message:

initialise:

compile:
    [javac] /home/donghwan/defects4j/framework/projects/Chart/Chart.build.xml:50: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds

compile-experimental:
    [javac] /home/donghwan/defects4j/framework/projects/Chart/Chart.build.xml:99: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
    [javac] Compiling 4 source files to /tmp/run_mutation.pl_10654_1450680089/5f/build
    [javac] warning: [options] bootstrap class path not set in conjunction with -source 1.4
    [javac] 1 warning

compile.tests:
    [mkdir] Created dir: /tmp/run_mutation.pl_10654_1450680089/5f/build-tests
    [javac] /home/donghwan/defects4j/framework/projects/Chart/Chart.build.xml:116: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
    [javac] Compiling 373 source files to /tmp/run_mutation.pl_10654_1450680089/5f/build-tests
    [javac] warning: [options] bootstrap class path not set in conjunction with -source 1.4
    [javac] Note: Some input files use or override a deprecated API.
    [javac] Note: Recompile with -Xlint:deprecation for details.
    [javac] 1 warning

update.all.tests:

mutation.test:
     [echo] Running mutation analysis ...
    [junit] MAJOR: Mutation analysis enabled
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
    [junit] MAJOR: org.jfree.data.xy.XYSeries_ESTest[initializationError] failed!
    [junit] MAJOR:  -> java.lang.LinkageError
    [junit] MAJOR:  -> "loader constraint violation: when resolving method "org.evosuite.runtime.thread.ThreadStopper.<init>(Lorg/evosuite/runtime/thread/KillSwitch;J[Ljava/lang/String;)V" the class loader (instance of org/apache/tools/ant/loader/AntClassLoader5) of the current class, org/jfree/data/xy/XYSeries_ESTest_scaffolding, and the class loader (instance of sun/misc/Launcher$AppClassLoader) for resolved class, org/evosuite/runtime/thread/ThreadStopper, have different Class objects for the type untime/thread/KillSwitch;J[Ljava/lang/String;)V used in the signature"

BUILD FAILED
/home/donghwan/defects4j/framework/projects/defects4j.build.xml:214: Test org.jfree.data.xy.XYSeries_ESTest failed

Total time: 3 seconds

I guess SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". is the problem, but I cannot fix this issue by myself.
I tested the test_evosuite.sh script given in `defects4j/framework/test/', and it failed with the same error message.
For your information, this is my test set generated by Evosuite (Chart-5f): https://www.dropbox.com/s/ndn76zkaufcbx4q/Chart-5f-evosuite-branch.1.tar.bz2?dl=0
Help me! Thank you!
Donghwan Shin
p.s. In the same environment, the test set generated by Randoop has no error for mutation analysis.

Hi @donghwan-shin,
Can you please let me know what your system configuration is (OS and Java version)? I am trying to reproduce the issue.
Thanks,
René

Sure, my system configuration is as follows:
(uname -a)
Linux donghwan-ELOS 3.19.0-42-generic #48~14.04.1-Ubuntu SMP Fri Dec 18 10:24:49 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

(java -version)
java version "1.7.0_91"
OpenJDK Runtime Environment (IcedTea 2.6.3) (7u91-2.6.3-0ubuntu<IP_ADDRESS>)
OpenJDK 64-Bit Server VM (build 24.91-b01, mixed mode)

In fact, my OS is elementary-os freya (https://elementary.io/) which is based on Ubuntu 14.04 as I know.
If you need any other information, please let me know.
Thank you!

I fixed the problem for the currently used version of EvoSuite. However, note that this version of EvoSuite is rather old and will be replaced in Defects4J soon.


Selecting a stash throws an unexpected error

Selecting a stash (without a description), throws an error:
GitLG: An unexpected error happened. Error summary: {"error_response":"usage: git stash show [<options>] [<stash>]\n\n\n","request":{"command":"git","data":"-c core.quotepath=false stash show --include-untracked --numstat --summary --format=\"\" 8fb1d953a","id":47,"type":"request-from-web"}}

https://vuejs.org/error-reference/#runtime-3. For details, see VSCode developer tools console. Please consider reporting this error.

I am using  v0.1.21 of the extension in Ubuntu 22.04 VSCode version
Version: 1.94.2
Commit: 384ff7382de624fb94dbaf6da11977bba1ecd427
Date: 2024-10-09T16:08:44.566Z
Electron: 30.5.1
ElectronBuildId: 10262041
Chromium: 124.0.6367.243
Node.js: 20.16.0
V8: <IP_ADDRESS>-electron.0
OS: Linux x64 6.8.0-45-generic

Please let me know what other information I can provide.

Additionally I am running within a Remove Devcontainer.  My git version is 2.30.2.  From what I can tell from the command line being displayed, git does not like the parameter --include-untracked.

Hi! This is the first time I'm hearing of this problem.
Git v2.30.2 is 3,5 years old: https://github.com/git/git/commits/master/Documentation/RelNotes/2.30.2.txt
The version shipped with Ubuntu 22.04 is 2.34.1 https://launchpad.net/ubuntu/jammy/+source/git, 3 years old: https://github.com/git/git/blob/master/Documentation/RelNotes/2.34.1.txt
Option --include-untracked however was introduced with version 1.7.8 https://github.com/git/git/commit/7f41b6bbe3181dc4d1687db036bf22316997a1bf#diff-42319772e8fb97d341d8f749aa5169a5183a700b8b8c394d2c4048bea51df82aR40 13 years ago.
So something's not right here. Can you please have another look? - copy and run the failing command git -c core.quotepath=false stash show --include-untracked --numstat --summary --format="" 8fb1d953a via command line, verify the Git version and figure out why it fails.

I am running in a docker container, so it could be the age of the docker container.
Git version output from the docker container.
> git --version
git version 2.30.2

On the host OS, it is version 2.34.1 and the command you asked me to run worked great.
> git -c core.quotepath=false stash show --include-untracked --numstat --summary --format="" 8fb1d953a
61      0       utils/dlopen_test/CMakeLists.txt
122     0       utils/dlopen_test/dlopen_test.c
 create mode 100644 utils/dlopen_test/CMakeLists.txt
 create mode 100644 utils/dlopen_test/dlopen_test.c

But on the docker container, in the same folder, using the version 2.30.2 of git, I get:
> git -c core.quotepath=false stash show --include-untracked --numstat --summary --format="" 8fb1d953a
usage: git stash show [<options>] [<stash>]


image-upload-widget: Fix avatar changes disabled hover behavior.

Currently, if an organization has disabled users from changing their avatars, the CSS rules do not hide the text / button for updating or deleting the current avatar/profile picture. Also, on the organization profile page, non-admin users see the text / button for updating and deleting the organization image and logos.
Fixes #23844.
Current screenshots:

User avatar - changes disabled

Organization profile - non-admin user

Note that even though the user sees the button text, the user cannot interact with these buttons and change the images.

Changes:

The first commit adds a more specific CSS rule for the image upload widgets so that the hide class is setting display to none correctly.
The second commit updates the live update function in settings_account.js for when the organization updates/changes the realm/server setting avatar_changes_disabled.
The third commit moves the image-disabled-text CSS rule to be more general so that the cursor is set to not-allowed for the organization profile settings images for non-admin users.
The fourth commit updates the names for the logos in the organization profile tab since that was something I noted while working on these changes and seemed related / worth doing.

Screenshots and screen captures:

Non-admin user avatar - changes disabled

Admin users - changes disabled
This is also what non-admin users see if changes are not disabled.

Organization profile - non-admin user
Note changes to logo titles.

Organization profile - admin user
Note changes to logo titles.

Self-review checklist

[x] Self-reviewed the changes for clarity and maintainability
(variable names, code reuse, readability, etc.).

Communicate decisions, questions, and potential concerns.

[x] Explains differences from previous plans (e.g., issue description).
[ ] Highlights technical choices and bugs encountered.
[ ] Calls out remaining decisions and concerns.
[x] Automated tests verify logic where appropriate.

Individual commits are ready for review (see commit discipline).

[x] Each commit is a coherent idea.
[x] Commit message(s) explain reasoning and motivation for changes.

Completed manual review and testing of the following:

[x] Visual appearance of the changes.
[ ] Responsiveness and internationalization.
[ ] Strings and tooltips.
[ ] End-to-end functionality of buttons, interactions and flows.
[ ] Corner cases, error conditions, and easily imagined bugs.

The user profile change looks good to me in manual testing! We should make sure the commit message indicates that it'll resolve https://github.com/zulip/zulip/issues/23844.

For the org profile, I think we'd be better off having no hover behavior at all for the logos if the user doesn't have permission to change them.

Updates:

The first commit is now the prior work done and reviewed in #23882.
The third commit now adds a new class so that the organization icon and logos have a different CSS behavior when the user cannot change / delete those images. See updated screenshots below.

Updated Screenshots:
Note that the above screenshots for the avatar / profile picture updates are still accurate.

Non-admin user - organization profile no hover changes (see mouse cursor in images)

Admin user - organization profile no hover changes

I haven't retested, but that looks great to me based on the screenshots!
@sahil839 Would you be up for doing a code review on this one?

I tested it and works fine. Code also looks good to me.
Just one thought, can we just have image-disabled div only if we have some disabled_tex present, otherwise that element is of no use.

@sahil839 - I reworked the commit that updated the image_upload_background CSS class. The current 2nd commit now renames that class to image_hover_background and wraps the image_disabled div in an if statement for whether there is disabled text or not. Is that more or less what you were thinking?
Also, I did find one more issue that already exists before these changes. The direct upload widget for the avatar is only built/returned if the settings_data.user_can_change_avatar() is True (see build_user_avatar_widget in avatar.js).
So even though we remove the hide class on updating that setting, the button / widget still does nothing until the user closes and reopens the settings overlay. Oddly, the delete click handler is created so that works on the live update (and is a bug because this means users can currently delete profile pics even if the org has disabled changes).
We could remove the check and build the widget even if the realm has disabled these changes, so the live update works. Or we could move the check to return undefined early and before the delete click handler is created, and not worry too much about the live update since it does work if the user closes and reopens the overlay?

I reworked the commit that updated the image_upload_background CSS class. The current 2nd commit now renames that class to image_hover_background and wraps the image_disabled div in an if statement for whether there is disabled text or not. Is that more or less what you were thinking?

Yes, this is what I had in my mind. Changes LGTM.

So even though we remove the hide class on updating that setting, the button / widget still does nothing until the user closes and reopens the settings overlay. Oddly, the delete click handler is created so that works on the live update (and is a bug because this means users can currently delete profile pics even if the org has disabled changes).

I think the user will not be able to delete the picture if org has disabled changes even though the handler is created since we correctly hide the button to delete. But yeah seems worth fixing to only create the delete handler when user has permission to delete the picture.

We could remove the check and build the widget even if the realm has disabled these changes, so the live update works. Or we could move the check to return undefined early and before the delete click handler is created, and not worry too much about the live update since it does work if the user closes and reopens the overlay?

Can we just build the widget by calling build_user_avatar_widget again when the setting is changed? And along it we could move the check to return undefiened early to avoid creating delete handler when not required. Basically the delete handler code and build_direct_upload_widget will be called only when user has permission to change the avatar.

I think the user will not be able to delete the picture if org has disabled changes even though the handler is created since we correctly hide the button to delete.

Yeah, this is correct. It's mostly just confusing currently in that the user can click on the confirm delete module, but then nothing happens.

Can we just build the widget by calling build_user_avatar_widget again when the setting is changed? And along it we could move the check to return undefined early to avoid creating delete handler when not required. Basically the delete handler code and build_direct_upload_widget will be called only when user has permission to change the avatar.

Added a final commit with these changes. I had to update the settings_org node test so that the delete click handler didn't get built twice as we test first for non-admin users and then for admin users. I wasn't sure if their was a better way to do that.

We actually need to fix the bug of handlers created twice. I can observe a bug where the menu to upload picture opens twice when I click on the image only once. Steps to reproduce -

Initially the user (non-admin) is allowed to change avatar and user opens the Personal settings view.
In a different window, the setting is changed to disable changing avatar. The UI for non-admin user live-updates correctly.
Now again admin changes the setting to enable changing avatar. The UI for non-admin user updates correctly.
Now when non-admin user clicks on the picture, the file upload menu of the system opens. After user selects a file and closes the menu, another menu is opened due to click handler being created twice.

Maybe we can use a module-level variable to track down whether we already created the upload widget or not.

Maybe we can use a module-level variable to track down whether we already created the upload widget or not.

Would it make more sense to do this in avatar.js or in settings_account.js? In avatar.js, it would have to be set before the return, which doesn't seem great. If settings_account.js, we could track whether the return value of build_user_avatar_widget as undefined or not. That would need to be taken into account in the node test.

@sahil839 - Pushed an update to that final commit with your above suggestions. Let me know if how those updates look.
One question I had was whether the tracking variable that's added to settings_account.js is something to add to the node test? If so, I think I'd break that miscellaneous test in frontend_tests/node_tests/settings_org.js into more specific tests.
I manually tested with the steps you noted in this comment (and with updating the user's role as well) in Firefox and Chrome on Linux and wasn't able to reproduce the bug anymore.

I think breaking into specific tests would be eventually helpful, but probably would be better as a separate follow-up targetted towards improving tests. We can skip it for now for this PR.

I tested the PR and everything works fine. Code changes also looks good.

@alya - This should be ready for you to look at.
Just to review the various changes covered in the PR:

Fixes #23844 where the update/delete button text was appearing when avatar changes were disabled/not allowed.
If users are not administrators, then the organization profile images (org icon and logo) do not have any changes on hover. This way there is no visual indication that the user might be able change/delete these organization images.
The above change also covers the case of the wide logos in ZulipCloud organizations that are not on the Standard plan. These logos do not have any hover behavior.
When/if the organization setting for avatar changes is updated (or the active user's permissions change to/from admin level), then the avatar image is updated for the new settings.
Updates header text for logos to be Light/Dark theme logo vs Day/Night logo.

Looks good to me in manual testing! I didn't verify the live update behavior.
@timabbott This PR has been reviewed by @sahil839 and me -- over to you. :)

Merged, thanks @laurynmm and @sahil839!


The console app requesting for tier data is not relevant for on-prem Identity Server

Describe the issue:
The console app is requesting for tier data at the console landing. It may be required for IDaaS deployments of IS. Hence this call and any other related API calls should be blocked for on-prem product.
Actually those API calls should be completely removed from the product and invoked based on the extensions added on top of default console app.

How to reproduce:
Login to the console and check the network trace.
Expected behavior:
The API calls which are not relavent for IS should not be invoked.
Environment information (Please complete the following information; remove  any unnecessary fields) :

Product Version: [7.0.0-beta2]
OS: [Mac]
Database: [H2]
Userstore: [JDBC]

Duplicate of https://github.com/wso2/product-is/issues/17675


extend W1 to parse layer.lkml files

While following the layered architecture as mentioned in here, LAMS linter ignores any indentation issues in .layer.lkml files. Since W1 is built-in rule, providing custom match param is not supported.
Can W1 be extended somehow to report indentation issues in layer files?

Happy to provide examples here if needed

same is the case with F4

The issue was the default source files not including layer files. Provided argument
--source='**/{.model,.explore,.layer,.view,manifest}.lkml'


possible to create TOC based on article created date?

First of all, thanks for the amazing work! The rss-to-html and then html-to-epub workflow works well.
The rss-to-html gives the following outputs:
[Advanced Reactive Java][The Reactive-Streams API (part....6b0b][2015-06-15 11.46.00].html
[Advanced Reactive Java][The Reactive-Streams API (part....9b93][2015-06-13 15.15.00].html
[Advanced Reactive Java][The Reactive-Streams API (part....ec63][2015-06-15 13.34.00].html
[Advanced Reactive Java][The new Completable API (part ....43f5][2015-12-14 15.05.00].html
[Advanced Reactive Java][The new Completable API (part ....aa85][2015-12-11 15.01.00].html
[Advanced Reactive Java][When multiple subscribeOn()s d....5e49][2017-11-29 12.33.00].html
[Advanced Reactive Java][Writing a custom reactive base....139a][2016-03-20 13.18.00].html

The only thing troubles me is the current TOC is based on alphabetical order rather than the article created date. It shouldn't be too difficult to support this right?

Hi, @Zane-XY
Thanks for your issue.
I will check it out later when I got some time.

Hi, @Zane-XY
Output files of rss-to-html now has their published time as their file mod time, would you like to do a update
go install<EMAIL_ADDRESS>
After this update you could pass generated .html files in order of published time to html-to-epub
ls -t *.html | xargs html-to-epub

@gonejack
Thanks for the updates!
I got this working by using
ls -tr *.html | tr '\n' '\0' | xargs -0 html-to-epub


Figure out which X2 table/column best encodes SPED status

student column STD_FIELDB_068, "ProgramAssigned" looks like a good candidate, but need to better understand range of values:
{ Sp Ed, Reg Ed, SEIP, 2Way English, 2Way Spanish, Waivered SEIP, Smile, ECIP, Choice, NULL ... }
Our current understanding of SPED status the app is as a boolean, true/false.

@alexsoble: On it. Can we pull it into the data exports we are getting from John Breslin?

Still in works (partial list) ...

Sp Ed = Special Education
Reg Ed = Regular Education
SEIP = Sheltered English Immersion Program
Waivered SEIP
2Way English & 2Way Spanish = "teaches native speakers of English and Spanish in both languages"
Smile = free preschool program
ECIP = Early Childhood Intervention Program
Choice

@alexsoble: Will add to this list when I have access to the full data. These are for those values listed in the issue.

So perhaps instead of a SPED column in the roster view we want a Program Assigned column. @marimuraki

@alexsoble: I'm always for more detail than less. This is a good question to ask the teachers.
The Program Assigned values include both SPED, ELL and other special programs so may be helpful in the "intervention" piece e.g., do ELL students who are enrolled in 2Way English/Spanish vs. SEIP vs. Reg Ed, etc perform better in ELA/Reading?

Update full list as of 2015-07-07

2Way English, 2Way Spanish, 2Way Other teaches native speakers of English and Spanish in both languages
All English
Another Lang
Child Develpmnt
Choice
ECIP = Early Childhood Intervention Program is a multi-sensory preschool program that serves both children with special needs and typically developing children
Head Start
Low Incidence
More Lang
Not Attending
Reg, Reg Ed = Regular Education
SEEK, Seek Program = Social and Educational Enrichment at Kennedy for students with behavior needs
SEIP = Sheltered English Immersion Program is a K-12 program for international students and students who speak other languages than English
SKIP = Specialized Kennedy Intensive Program for students with physical and cognitive needs
Smile = free preschool program
SP Ed, Sp Ed = Special Education
SP Ed ECIP, Sp Ed ECIP
Sp Ed LAB
TBE = Transitional Bilingual Education
Two Way
Waivered SEIP

@alexsoble

@marimuraki — Great! Added "ProgramAssigned" to the X2 export via https://github.com/codeforamerica/somerville-teacher-tool/commit/2943bf446c59d2d6f0dc71557cf9e927f5c8a34c.


Error: Cannot find module 'hap-nodejs'

my Homebridge run as a docker.
After I update to version 0.26.0 I read this error. When I store version 0.23.0 no error
I have model Roborock S7 pro

This is a duplicate to #528

Thank you for the head up! I'll submit a fix in a bit. I'll update here.

https://github.com/homebridge-xiaomi-roborock-vacuum/homebridge-xiaomi-roborock-vacuum/releases/tag/v0.26.1 should have fixed it :)


bezierCurve : false seems not work.

I tried to draw a straight line line chart and set option to false but only curve line shows there. I'm using V2.0 so what else can I do to make the line straight?

@BELIEVEWSW to turn off bezier curves in v2 for all lines you can do
config = {
    elements: {
        line: {
            tension: 0
        }
    }
}

You can also set tension: 0 on a per dataset basis.

@etimberg I'm trying the beta release and tension:0 doesn't work, but tension: 0.1 or 0.000001 works

@dfromero this was an issue in the beta. It is fixed if you use the latest from the v2.0-dev branch

@etimberg thanks, is there any ETA to have the branch merged into beta I want to use it on production?


Add circleci config

Add relevant configuration files for circle ci

@jli , I think the configuration to let CircleCI run on every PR will require some admin rights, to enable GitHub checks, GitHub status and to set up the environment variables. We also need to build pull requests from forked repos as described here: https://circleci.com/docs/2.0/oss/#build-pull-requests-from-forked-repositories. I'll be following up on this.