[BUG] Resource not found trying to recompile with no changes

Information

Apktool Version 2.7.0
Operating System Windows
APK From? Playstore

When trying to de/recompile gboard with no changes, error message indicates that some resources that are referenced in the xmls are not found (I assume 'declared'). Judging by the name of the referenced resource it appears that the name was obfuscated -- that's fine, I don't need the original name, but I see that the actual resource it's complaining about (with the obfuscated name) doesn't exist in the relevant XML where it needs to be declared.
For example, "id/0_resource_name_obfuscated" which should be declared in ids.xml just isn't there.
Stacktrace/Logcat
C:\Users\home\Android>apktool d -f gboard126.apk -o "C:\Users\home\Android\gboard126"
I: Using Apktool 2.7.0 on gboard126.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: C:\Users\home\AppData\Local\apktool\framework\1.apk
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Baksmaling classes.dex...
I: Baksmaling classes2.dex...
I: Baksmaling classes3.dex...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...
I: Copying META-INF/services directory

C:\Users\home\Android>apktool b -f --use-aapt2 -d gboard126
I: Framework installed to: C:\Users\home\AppData\Local\apktool\framework\1.apk
I: Using Apktool 2.7.0
I: Smaling smali folder into classes.dex...
I: Smaling smali_classes2 folder into classes2.dex...
I: Smaling smali_classes3 folder into classes3.dex...
I: Building resources...
I: Using aapt2 - setting 'debuggable' attribute to 'true' in AndroidManifest.xml
W: C:\Users\home\Android\gboard126\res\values\attrs.xml:632: error: resource id/0_resource_name_obfuscated (aka com.google.android.inputmethod.latin:id/0_resource_name_obfuscated) not found.
W: C:\Users\home\Android\gboard126\res\values\attrs.xml:1876: error: resource id/0_resource_name_obfuscated (aka com.google.android.inputmethod.latin:id/0_resource_name_obfuscated) not found.
W: C:\Users\home\Android\gboard126\res\values\dimens.xml:43: error: resource dimen/0_resource_name_obfuscated (aka com.google.android.inputmethod.latin:dimen/0_resource_name_obfuscated) not found.
W: C:\Users\home\Android\gboard126\res\values\styles.xml:926: error: resource font/0_resource_name_obfuscated (aka com.google.android.inputmethod.latin:font/0_resource_name_obfuscated) not found.
W: C:\Users\home\Android\gboard126\res\values\styles.xml:926: error: resource font/0_resource_name_obfuscated (aka com.google.android.inputmethod.latin:font/0_resource_name_obfuscated) not found.
W: C:\Users\home\Android\gboard126\res\values\styles.xml:1204: error: resource font/0_resource_name_obfuscated (aka com.google.android.inputmethod.latin:font/0_resource_name_obfuscated) not found.
W: C:\Users\home\Android\gboard126\res\values\styles.xml:1204: error: resource font/0_resource_name_obfuscated (aka com.google.android.inputmethod.latin:font/0_resource_name_obfuscated) not found.
W: C:\Users\home\Android\gboard126\res\values\styles.xml:2406: error: resource dimen/0_resource_name_obfuscated (aka com.google.android.inputmethod.latin:dimen/0_resource_name_obfuscated) not found.
W: C:\Users\home\Android\gboard126\res\values\styles.xml:2407: error: resource dimen/0_resource_name_obfuscated (aka com.google.android.inputmethod.latin:dimen/0_resource_name_obfuscated) not found.
W: C:\Users\home\Android\gboard126\res\values\styles.xml:2406: error: resource dimen/0_resource_name_obfuscated (aka com.google.android.inputmethod.latin:dimen/0_resource_name_obfuscated) not found.
W: C:\Users\home\Android\gboard126\res\values\styles.xml:2407: error: resource dimen/0_resource_name_obfuscated (aka com.google.android.inputmethod.latin:dimen/0_resource_name_obfuscated) not found.
W: C:\Users\home\Android\gboard126\res\values\styles.xml:4172: error: resource attr/0_resource_name_obfuscated (aka com.google.android.inputmethod.latin:attr/0_resource_name_obfuscated) not found.
W: C:\Users\home\Android\gboard126\res\values\styles.xml:4173: error: resource attr/0_resource_name_obfuscated (aka com.google.android.inputmethod.latin:attr/0_resource_name_obfuscated) not found.
W: C:\Users\home\Android\gboard126\res\values\styles.xml:4172: error: resource attr/0_resource_name_obfuscated (aka com.google.android.inputmethod.latin:attr/0_resource_name_obfuscated) not found.
W: C:\Users\home\Android\gboard126\res\values\styles.xml:4173: error: resource attr/0_resource_name_obfuscated (aka com.google.android.inputmethod.latin:attr/0_resource_name_obfuscated) not found.
W: C:\Users\home\Android\gboard126\res\values\styles.xml:4285: error: resource attr/0_resource_name_obfuscated (aka com.google.android.inputmethod.latin:attr/0_resource_name_obfuscated) not found.
W: C:\Users\home\Android\gboard126\res\values\styles.xml:4286: error: resource attr/0_resource_name_obfuscated (aka com.google.android.inputmethod.latin:attr/0_resource_name_obfuscated) not found.
W: C:\Users\home\Android\gboard126\res\values\styles.xml:4285: error: resource attr/0_resource_name_obfuscated (aka com.google.android.inputmethod.latin:attr/0_resource_name_obfuscated) not found.
W: C:\Users\home\Android\gboard126\res\values\styles.xml:4286: error: resource attr/0_resource_name_obfuscated (aka com.google.android.inputmethod.latin:attr/0_resource_name_obfuscated) not found.
W: C:\Users\home\Android\gboard126\res\values\styles.xml:5428: error: style attribute 'attr/0_resource_name_obfuscated (aka com.google.android.inputmethod.latin:attr/0_resource_name_obfuscated)' not found.
brut.androlib.AndrolibException: brut.common.BrutException: could not exec (exit code = 1): [C:\Users\ITAYNA~1\AppData\Local\Temp\brut_util_Jar_39724244080885536784648859253930036022.tmp, link, -o, C:\Users\ITAYNA~1\AppData\Local\Temp\APKTOOL7747251418954349550.tmp, --package-id, 127, --min-sdk-version, 23, --target-sdk-version, 33, --version-code, 102451614, --version-name, <IP_ADDRESS>1625702-beta-arm64-v8a, --no-auto-version, --no-version-vectors, --no-version-transitions, --no-resource-deduping, --allow-reserved-package-id, -e, C:\Users\ITAYNA~1\AppData\Local\Temp\APKTOOL4362795320748915216.tmp, -0, arsc, -I, C:\Users\home\AppData\Local\apktool\framework\1.apk, --manifest, C:\Users\home\Android\gboard126\AndroidManifest.xml, C:\Users\home\Android\gboard126\build\resources.zip]
Unknown error.

Steps to Reproduce

decompile using apktool
recompile with no changes (I used aapt2)

Frameworks
N/A
APK
If this APK can be freely shared, please upload/attach a link to it.
https://m.apkpure.com/gboard-the-google-keyboard/com.google.android.inputmethod.latin/download/102451614-APK
Questions to ask before submission

Have you tried apktool d, apktool b without changing anything? Yes
If you are trying to install a modified apk, did you resign it? N/A
Are you using the latest apktool version? Yes

Not sure what is happening here. All resources are named - 0_resource_name_obfuscated, so the first one gets the name, but the remaining are conflicting resource names and thus become a different iteration.
    <attr name="APKTOOL_DUPLICATE_attr_0x7f04027b">
        <flag name="0_resource_name_obfuscated" value="0x00000002" />
        <flag name="APKTOOL_DUPLICATE_id_0x7f0b0003" value="0x00001000" />
        <flag name="APKTOOL_DUPLICATE_id_0x7f0b0004" value="0x00000008" />
        <flag name="APKTOOL_DUPLICATE_id_0x7f0b0006" value="0x00010000" />
        <flag name="APKTOOL_DUPLICATE_id_0x7f0b0009" value="0x00000001" />
        <flag name="APKTOOL_DUPLICATE_id_0x7f0b000d" value="0x00000004" />
    </attr>

So in a regular application - we trust the named attributes. I wonder if we have some sort logic issue here with renaming of attributes in such a way that we mark the original attribute (0_resource_name_obfuscated) as DUPLICATE resources further on in processing leading to the mismatch.
That however, is not valid. There is only 1 reference for that ID
➜  2980 grep -r -i '0x7f0b0000' *
2980/res/values/public.xml:    <public type="id" name="0_resource_name_obfuscated" id="0x7f0b0000" />
➜  2980

However, we key the resources by the type, but look for them via the name specific to that type. So that might be our cause, since we might have the id type marked as original resource, but then as your issue suggests the attrs, dimens and styles would have the duplicate resource name.

Nah wasn't that. Will backlog this, not sure.
    <public type="anim" name="0_resource_name_obfuscated" id="0x7f010002" />
    <public type="animator" name="0_resource_name_obfuscated" id="0x7f020000" />
    <public type="array" name="0_resource_name_obfuscated" id="0x7f030000" />
    <public type="attr" name="0_resource_name_obfuscated" id="0x7f040000" />
    <public type="bool" name="0_resource_name_obfuscated" id="0x7f050000" />
    <public type="color" name="0_resource_name_obfuscated" id="0x7f060000" />
    <public type="dimen" name="0_resource_name_obfuscated" id="0x7f070000" />
    <public type="drawable" name="0_resource_name_obfuscated" id="0x7f080000" />
    <public type="font" name="0_resource_name_obfuscated" id="0x7f090000" />
    <public type="fraction" name="0_resource_name_obfuscated" id="0x7f0a0000" />
    <public type="id" name="0_resource_name_obfuscated" id="0x7f0b0000" />
    <public type="integer" name="0_resource_name_obfuscated" id="0x7f0c0000" />
    <public type="interpolator" name="0_resource_name_obfuscated" id="0x7f0d0000" />
    <public type="layout" name="0_resource_name_obfuscated" id="0x7f0e0000" />
    <public type="menu" name="0_resource_name_obfuscated" id="0x7f100002" />
    <public type="mipmap" name="0_resource_name_obfuscated" id="0x7f110001" />
    <public type="plurals" name="0_resource_name_obfuscated" id="0x7f120000" />
    <public type="raw" name="0_resource_name_obfuscated" id="0x7f130000" />
    <public type="string" name="0_resource_name_obfuscated" id="0x7f140001" />
    <public type="style" name="0_resource_name_obfuscated" id="0x7f150000" />
    <public type="xml" name="0_resource_name_obfuscated" id="0x7f170000" />

Thank you for your attention to this, your work is much appreciated!

A very similar issue happens when trying to decompile and recompile (no changes) the latest version (34.4.16-21) of the Play Store (single apk, no bundle, downloaded from ApkMirror).
I: Building resources...
W: /mnt/data/android/play_store_34.4.16-21/res/values/attrs.xml:90: error: resource id/0_resource_name_obfuscated (aka com.android.vending:id/0_resource_name_obfuscated) not found.
W: /mnt/data/android/play_store_34.4.16-21/res/values/attrs.xml:2048: error: resource id/0_resource_name_obfuscated (aka com.android.vending:id/0_resource_name_obfuscated) not found.
W: /mnt/data/android/play_store_34.4.16-21/res/values/dimens.xml:41: error: resource dimen/0_resource_name_obfuscated (aka com.android.vending:dimen/0_resource_name_obfuscated) not found.
W: /mnt/data/android/play_store_34.4.16-21/res/values/styles.xml:1473: error: resource font/0_resource_name_obfuscated (aka com.android.vending:font/0_resource_name_obfuscated) not found.
W: /mnt/data/android/play_store_34.4.16-21/res/values/styles.xml:1473: error: resource font/0_resource_name_obfuscated (aka com.android.vending:font/0_resource_name_obfuscated) not found.
W: /mnt/data/android/play_store_34.4.16-21/res/values/styles.xml:1771: error: resource font/0_resource_name_obfuscated (aka com.android.vending:font/0_resource_name_obfuscated) not found.
W: /mnt/data/android/play_store_34.4.16-21/res/values/styles.xml:1771: error: resource font/0_resource_name_obfuscated (aka com.android.vending:font/0_resource_name_obfuscated) not found.
W: /mnt/data/android/play_store_34.4.16-21/res/values/styles.xml:3123: error: resource dimen/0_resource_name_obfuscated (aka com.android.vending:dimen/0_resource_name_obfuscated) not found.
W: /mnt/data/android/play_store_34.4.16-21/res/values/styles.xml:3124: error: resource dimen/0_resource_name_obfuscated (aka com.android.vending:dimen/0_resource_name_obfuscated) not found.
W: /mnt/data/android/play_store_34.4.16-21/res/values/styles.xml:3123: error: resource dimen/0_resource_name_obfuscated (aka com.android.vending:dimen/0_resource_name_obfuscated) not found.
W: /mnt/data/android/play_store_34.4.16-21/res/values/styles.xml:3124: error: resource dimen/0_resource_name_obfuscated (aka com.android.vending:dimen/0_resource_name_obfuscated) not found.
W: /mnt/data/android/play_store_34.4.16-21/res/values/styles.xml:4858: error: style attribute 'attr/0_resource_name_obfuscated (aka com.android.vending:attr/0_resource_name_obfuscated)' not found.
W: /mnt/data/android/play_store_34.4.16-21/res/values/styles.xml:4910: error: style attribute 'attr/0_resource_name_obfuscated (aka com.android.vending:attr/0_resource_name_obfuscated)' not found.
W: error: failed linking references.
brut.androlib.AndrolibException: brut.common.BrutException: could not exec (exit code = 1): [/tmp/brut_util_Jar_146934250591862605138441301672493754285.tmp, link, -o, /tmp/APKTOOL8074483388451500670.tmp, --package-id, 127, --min-sdk-version, 21, --target-sdk-version, 33, --version-code, 83441610, --version-name, 34.4.16-21 [0] [PR] 507539062, --no-auto-version, --no-version-vectors, --no-version-transitions, --no-resource-deduping, --allow-reserved-package-id, -e, /tmp/APKTOOL10209900601815719859.tmp, -0, arsc, -I, /home/tfonda/.local/share/apktool/framework/1.apk, --manifest, /mnt/data/android/play_store_34.4.16-21/AndroidManifest.xml, /mnt/data/android/play_store_34.4.16-21/build/resources.zip]

The build tool aapt2 has an optimization flag named --collapse-resource-names. When used, all resource IDs are assigned the same name, 0_resource_name_obfuscated. Obviously this breaks Resources.getIdentifier() but if you can live without that, it's often an optimization worth having.
The workaround I have is to add the following line to constructor ofbrut.androlib.res.data.ResResSpec :
    `if ("0_resource_name_obfuscated".equals(name)) name = null;`

i.e. duplicate the existing logic for the case where the resource name is "(name removed)". This lets apktool generate unique dummy IDs instead of hundreds of clashes.
With this change I am now able to recompile the latest Google Chrome .apk.

thanks @reubenscratton for the tip on aapt2 feature. Will help to make a POC and tweak Apktool for this.

No problem, glad to help. Thanks for creating such an awesomely useful tool.
FWIW Google's own apps will often be the first to use new tools changes that might break apktool. If you have an automated testing pipeline it might be worth scripting something that downloads the latest chrome/play/etc .apks and rebuilds them. Just a thought.

@reubenscratton thank you for finding this!
I just built apktool with the change you suggested in brut.androlib.res.data.ResResSpec and I can confirm gboard now succesfully roundtrips.

Thanks for tip. Started a PR for this change to support the various forms that aapt uses to strip attribute names.
https://github.com/iBotPeaches/Apktool/pull/3067

@reubenscratton
Sort of. At first it would crash because there's a certificate check in the code itself. Once I bypassed it in the smali code and rebuilt it would run, but wasn't fully functional. I could run the app and browse through the settings, but was unable to add any keyboard languages, if I try I just get a never-ending loading bar and it doesn't show any available languages.
In the logcat I found this error:
05-15 14:44:30.373 10597 21714 E GoogleApiManager: Failed to get service from broker.
05-15 14:44:30.373 10597 21714 E GoogleApiManager: java.lang.SecurityException: GoogleCertificatesRslt: not allowed: pkg=com.testing.android.inputmethod.latin, sha256=[1e08a903aef9c3a721510b64ec764d01d3d094eb954161b62544ea8f187b5953], atk=false, ver=231613045.true (go/gsrlt)
05-15 14:44:30.373 10597 21714 E GoogleApiManager: 	at android.os.Parcel.createExceptionOrNull(Parcel.java:3040)
05-15 14:44:30.373 10597 21714 E GoogleApiManager: 	at android.os.Parcel.createException(Parcel.java:3024)
05-15 14:44:30.373 10597 21714 E GoogleApiManager: 	at android.os.Parcel.readException(Parcel.java:3007)
05-15 14:44:30.373 10597 21714 E GoogleApiManager: 	at android.os.Parcel.readException(Parcel.java:2949)
05-15 14:44:30.373 10597 21714 E GoogleApiManager: 	at fyp.r(PG:15)
05-15 14:44:30.373 10597 21714 E GoogleApiManager: 	at fic.run(PG:27)
05-15 14:44:30.373 10597 21714 E GoogleApiManager: 	at android.os.Handler.handleCallback(Handler.java:942)
05-15 14:44:30.373 10597 21714 E GoogleApiManager: 	at android.os.Handler.dispatchMessage(Handler.java:99)
05-15 14:44:30.373 10597 21714 E GoogleApiManager: 	at android.os.Looper.loopOnce(Looper.java:240)
05-15 14:44:30.373 10597 21714 E GoogleApiManager: 	at android.os.Looper.loop(Looper.java:351)
05-15 14:44:30.373 10597 21714 E GoogleApiManager: 	at android.os.HandlerThread.run(HandlerThread.java:67)

But I can't be sure if this error is the actual issue and if it is -- is it a result of something in apktool.
If anyone has insight, that'd be awesome.
Thanks!

It doesn't look like an apktool issue so far. You must have changed the package ID (to 'com.testing.android.inputmethod.latin'), but presumably GBoard requires Google Play Services to run and the relevant system process doesn't recognise your app. You may need to set up API access in the Play Console... see https://developers.google.com/android/guides/client-auth for what needs doing. You'll have to take a guess as to what Google APIs GBoard needs.


items in normal state classified as unknown and needing acknowledgement

right after starting, all these checks become normal, yet they show up as normal and needing ack.
why? looks like a bug?

@Dieterbe Can you let me know if this is still an issue?

i have no idea. someone will need to reopen if so.


Mark name as a required field in PromptQuestion type

Resolves difference in requirements of the name field (required in Yeoman, optional in Inquirer) by marking the name field as required for Yeoman.
Fixes https://github.com/yeoman/generator/issues/1575

Closing in favor of https://github.com/yeoman/generator/pull/1578


Documentation: Add and update examples in main navigation methods and BrowserSettings

Branching name corrected and reopened in #559.


Initial scale for a 2D stack view using StackViewPort does not fit a 512x512 image exactly to a 512x512 viewport

Describe the Bug
Applications written using the framework do not display 2D images at the expected default zoom.    This is different behaviour than the old cornerstone framework.
For example a 2D stack view using StackViewPort does not fit a 512x512 image exactly to a 512x512 viewport.
(This report started as a slack discussion with @sedghi)
Steps to Reproduce

Create an application with a viewport of type ViewportType.STACK and size 512x512.
Keep all scaling options to their defaults.
Run the application and load an DICOM image of size 512x512.
Look at the rendered image on screen.

The current behavior
The rendering of the image data does not fill the 512x512 view.
The displayed image contains a rendering of the data within an invisible bounding box that is <512x512
All pixels outside of this bounding box are rendered at the background color.
The image looks like an image that has been slightly zoomed out.
The expected behavior
The rendering of the data should completely fill the 512x512 view.
Pixels on the edge of the image data should correlate to pixels on the edge of the displayed view.
In a simple set up where devicepixelratio =1 (e.g. 96dpi display and default 100% brower zoom) there should be a notional 1:1 mapping of pixel data from the DICOM to pixels displayed in the view (ignoring anything the OS/graphics driver/display do at a lower level).
OS
Windows 10
Node version
20.5.0
Browser
chrome 115.0.5790.171

@sedghi
Thanks for progressing this issue - I've tested the linked pull request and I have some feedback.
I tested the fix in an application we have that can switch between several rendering implementations including both the old cornerstone and cornerstone3D.
#743 Greatly improves the behaviour but dosn't seem to quite finish the fix.
The remaining error is much more subtle, mainly a very small zoom change that causes ~1 pixel of cropping around a 512x512 image and also a slight upscaling of the image.
I took a look at the code and tried a few things.
In the file  cornerstone3D/packages/core/src/RenderingEngine/Viewport.ts there is a section that tweaks the bounding box just before it is used to as part of the initial scaling calculation.
 // Todo: remove this, this is just for tests passing
    if (imageData) {
      const spc = imageData.getSpacing();

      bounds[0] = bounds[0] + spc[0] / 2;
      bounds[1] = bounds[1] - spc[0] / 2;
      bounds[2] = bounds[2] + spc[1] / 2;
      bounds[3] = bounds[3] - spc[1] / 2;
      bounds[4] = bounds[4] + spc[2] / 2;
      bounds[5] = bounds[5] - spc[2] / 2;
    }

This looked interesting so I commented it out.
 // Todo: remove this, this is just for tests passing
/*    if (imageData) {
      const spc = imageData.getSpacing();

      bounds[0] = bounds[0] + spc[0] / 2;
      bounds[1] = bounds[1] - spc[0] / 2;
      bounds[2] = bounds[2] + spc[1] / 2;
      bounds[3] = bounds[3] - spc[1] / 2;
      bounds[4] = bounds[4] + spc[2] / 2;
      bounds[5] = bounds[5] - spc[2] / 2;
    }*/

This corrected the behaviour and the image now seemed to be correct and a match for other renderers including the old cornerstone.  This looks to be worth undertstanding and fixing.
As I was looking around I spotted a couple of other chnages that are more speculative.  They didn't have noticable effect but I thought I would mention them as well.
In the same area of code there is a line:
const middleIJK = dimensions.map((d) => Math.floor(d / 2));
I wonder if this would be better as:
const middleIJK = dimensions.map((d) => (d-1)/2);
I don't see a reason to floor the values as they are passed on to a function that does a floating point conversion.
I think the values need to be shifted by 1 to go from absolute sizes to data space.  So in my version the centre of something with dimensions 512, 512, 1 would be 255.5, 255.5, 0, representing the centre of 0...511, 0...511, 0.
I also saw the line:
 const distance = 1.1 * radius;
This is a different occurence of 1.1 frm the one removed in the pull request.
Following the reference
https://github.com/Kitware/vtk-js/blob/5ec65e9d9ad06ef4d6450df75cb1f7f15ed11501/Sources/Rendering/Core/Renderer/index.js
I wonder of this line would be better as:
//assumes viewing angle of 90 degrees
const distance = radius * Math.SQRT2;

@allanbarklie I think your suggestions makes sense. I saw for the bounds manipulation it has a comment that says only to make tests pass, which is ok i will remove and re-capture diff images.
For the const middleIJK = dimensions.map((d) => Math.floor(d / 2)); we were talking with @wayfarer3130 and we agree there should not be any flooring happening, but at the same time we think d/2 is correct and does not need to be changed to d-1 / 2
for the following example, it makes more sense to me d/2

Any thoughts?
Also would love to hear why you think const distance = radius * Math.SQRT2; is better

@sedghi
Thanks for checking back
Sounds good on the test stuff and the floor removal.
I'll try and explain my other points a bit better and include whatever caveats I may have relied on or guesses I might have made.
For the question of (d-1)/ 2 versus d/2:
My understanding is that we initially get the values for d by asking for dimensions.  These dimensions are not in the same coordinate space as we need later.  Much like in many languages an array will return a size or length that is not a valid index for that array, I think the dimensions have a plus 1 difference from the space we need.
If we have a single 8x8 image we would get a dimension result where:
(x,y,z) is (8,8,1)
However we might repesent such an image in a view or on a canvas more like:
0 1 2 3 4 5 6 7
1
2
3
4
5
6
7
Where we define the origin to be in one corner and the highest valid index for either x or y is 7.
Caveat - I couldn't find a standalone definition of the coordinate spaces used in the codebase so there is some guess work here.
We want to find the centre of this image - which would be (3.5,3.5)
Extending the same pattern to 3d would give us (3.5,3.5,0)
This is the value we get if we use (d-1)/ 2.
If we use d/2  we get (4,4,0.5).
Extending this to a 8x8x8 cube we would get:
(d-1)/ 2  -->  (<IP_ADDRESS>,3.5)
d/2 --> (4,4,4)
This is the thinking that I went through - I also did some debugging that showed that dimensions were returned in that form.
For the distance calculation
The commit https://github.com/cornerstonejs/cornerstone3D/pull/743/commits/2da8c4eee8396f8d12772b24bf5467b35fe181ac
adds the comment:
// parallel scale should be equal to the radius to make the image
// fit the window see https://github.com/Kitware/vtk-js/blob/5ec65e9d9ad06ef4d6450df75cb1f7f15ed11501/Sources/Rendering/Core/Renderer/index.js
If we follow that link we can see a method:
publicAPI.resetCamera
which includes the lines:
const angle = vtkMath.radiansFromDegrees(model.activeCamera.getViewAngle());
const parallelScale = radius;
const distance = radius / Math.sin(angle * 0.5);
In our case we have:
viewAngle: 90,
So my thinking was:
90 degrees = PI/2
const distance = radius / Math.sin(PI/2 * 0.5);
const distance = radius / Math.sin(PI/4);
const distance = radius / ((SQRT2)/2)
const distance = radius * 2/(SQRT2)
const distance = radius * SQRT2
Caveat: I've quickly assumed that the distance calculation in that link is valid for the thing we are trying to do - I haven't checked that assumption in any detail.
I hope this helps - I don't know the codebase well so these are really my best quick guesses - they may be missing some context.

Hi @sedghi ,
This issue still appears to exist in the latest version of Cornerstone3D. We have created a minimal demo to show this behaviour, please see this example: https://jsfiddle.net/92ez5to8/
It can also be seen in the basic stack live example: https://www.cornerstonejs.org/live-examples/stackbasic
In both examples with default settings, there is a clear border all the way around the image that can be seen in the viewport, showing that the image is not fitting to the view.
The behaviour has also been documented (and fixed at the time!) in this previously closed PR: https://github.com/cornerstonejs/cornerstone3D/pull/743
I suspect since then, some changes in the Viewport have introduced an insetImageMultiplier which is producing the same effect as before with a default inset multiplier of 1.1 .
Could you please look into this?
For some context, this is important for our application as we wish to know precisely where the data is positioned on screen, for instance to be able to accurately overlay measurements on top of it. If the design of Cornerstone will not change this default behaviour so data fits view exactly, a possible workaround for us is to know exactly how the default camera/scale is being set so we know how to compensate.
Thanks in advance!

@canon-cmre-jess-mcintosh Sure I will look, it is a great to see how you run cornerstone in jsfiddle pretty cool


[CI] add timeout to vm boot retries

This change is

test-me-please

test-me-please

test-me-please

Coverage decreased (-0.007%) to 45.851% when pulling 42515e183638b301fabb4ceffa3e7f10eaa6f113 on pr/ci-add-vm-retry-timeout into 0d5062e99cfb71a4c09e3b74604f5c4ecd8027a8 on master.

test-me-please

test-me-please

test-me-please


⚠ Jerry Savelle Ministries International Australia has degraded performance

In f62eda3, Jerry Savelle Ministries International Australia (https://jsmiaustralia.org) experienced degraded performance:

HTTP code: 200
Response time: 9979 ms

Resolved: Jerry Savelle Ministries International Australia performance has improved in 6b75b49 after 30 minutes.


README.md summary is inaccurate

Currently it says

uses 2 bytes/characters instead of 3. Currently targeting only 64-bits machine

Based on the rest of the README, it's using 2 WORDs (so 16 bytes on a 64-bit architecture), not 2 bytes.

Thanks for reporting the issue. But so far I haven't work on this project lately because during the initial benchmarks it didn't appear to have as much performance gain compared to beef crate.


Wallpaper not set on full screened video when swiping workspace

Hyprland Version
v0.27.2
Bug or Regression?
Bug
Description
when i swipe workspace on full screened video the wallpaper is black and not what i set with swaybg
During the swiping transition the wallpaper is black
How to reproduce
full screen any YouTube video and swipe with touchpad to another workspace
Crash reports, logs, images, videos
No response

aint this fixed in -git?

i'm on stable
I don't know maybe?

it was fixed with https://github.com/hyprwm/Hyprland/commit/f4f0f35c5b2725189563fc65e17a0141fd801eb7

Thank you


Windows autoUpdater tutorial

Electron version: 0.36.0
Operating system: Windows

I'm trying to make autoUpdating work on my Electron app, which will only be distributed on Windows.
Regarding the autoUpdater module for Windows, the Electron documentation says "The server-side setup is also different from OS X. You can read the documents of Squirrel.Windows to get more details."
But I've spent hours looking at the Electron documentation and the Squirrel.Windows documentation, and even looking at the source code of Electron, and I still do not even know where to begin.
Could someone create a basic tutorial for integrating the autoUpdater for a Windows app, from beginning to end?
The really important questions for me are the following: For the autoUpdater.setFeedURL(url) call, what should that url point to? What should be located at that URL? Files? Which files and what should they contain and how do I make them?
The Squirrel Windows documentation seems to be (understandably) very geared for developing in Visual Studio/.Net, so I'm not sure what parts of the process will stay the same when integrating with Electron, and which will need to be changed.
Edit:
I should add that I have successfully used the grunt-electron-installer to create an installer for my app. And I've successfully integrated with Squirrel (in order to create create the app's shortcuts, for example). So, given that I already have this level of integration with Squirrel completed, what is required to get the auto updates working?

So, given that I already have this level of integration with Squirrel completed, what is required to get the auto updates working?

All you have to do is take that folder that gets generated and serve it up on S3 - the setFeedURL method should point to that folder on S3 (i.e. not to any one file, to the folder containing the files)

That worked great - my app is now downloading and automatically installing updates as expected. Need to finish handling the update events well in my app, but I am now off and running.

:sparkles: :sparkles: :sparkles:

i agree with you @jpost


Publish Documentation

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 88.36%.  Consider uploading reports for the commit eef72c5 to get more accurate results

Additional details and impacted files
@@            Coverage Diff            @@
##               main     #104   +/-   ##
=========================================
  Coverage     88.36%   88.36%
  Complexity      117      117
=========================================
  Files            13       13
  Lines           421      421
  Branches         68       68
=========================================
  Hits            372      372
  Misses           17       17
  Partials         32       32

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


Feature: Support external functions in #[abi(embed_v0)] and #[abi(per_item)] blocks

Feature Request Summary
Currently the Interact tab only parse external functions from #[external(v0)] blocks but since cairo v2.3.0 it's recommended to use #[abi(embed_v0)] blocks (all external functions) and/or #[abi(per_item)] (with functions marked #[external(v0)] individually). It would be nice to support these external functions in the Interact tab.

Sure, we will support these functions!. Thank you very much for highlighting this issue.


[3.2.x] #356: Support flush statements via Mapper interface

(cherry picked from commit 56198b2aec73631b3fc0520405bc5a175c9e8c7a)
Note: Conflicts resolve by manually.
Conflicts:
src/test/java/org/apache/ibatis/binding/BoundAuthorMapper.java
Backport to 3.2.x.
Please review #356 .

@emacarron
Hi!
Probably, this PR should be set a 3.2.9 as Milestone.

Yep! Thank you!
2015-03-18 18:02 GMT+01:00 Kazuki Shimizu<EMAIL_ADDRESS>
@emacarron https://github.com/emacarron
Hi!
Probably, this PR should be set a 3.2.9 as Milestone.
—
Reply to this email directly or view it on GitHub
https://github.com/mybatis/mybatis-3/pull/361#issuecomment-83057994.


Clarify and Improve Path for Enabling "Invite the User to Set Their Own Password" in User Creation Wizard

Describe the issue:
While navigating the user creation wizard, users may face confusion in finding the correct path to enable the "Invite the User to Set Their Own Password" feature. To enhance user experience, it is suggested to provide a more explicit and accurate path.
" Login & registration >  Invite User to Set Password > Enable user email verification

Decided to add a link in the hint to enable email verification.

https://github.com/wso2/identity-apps/pull/5232

Verified in the latest wso2is-7.0.0-beta6-SNAPSHOT


[API KEY - Service Account] - suppressed from tfstate but not on Confluent Cloud

Hi team,
We have uncountered a problem using terraform provider. We used 1.27.0 version.
We first create 2 service account and there 2 related api key for a cluster. 2 service account and 2 api key are correctly create.
Then, we tried to suppress these 2 service account and 2 api Keys.
We assumed that deleted a service account results in related API KEYs destruction.
Here, we obtained a correct destruction of the service account but no destruction of related API KEY. The owner link was suppressed on GUI confluent console.
Moreover, we failed to delete the 2 API KEY using the GUI confluent console.
Is that a normal behaviour ?
Is the destruction of service account does not resulted in api key destruction when using terraform provider ?  unlike deleting the service account on the GUI confluent console.
Tell me if you need more information/details.
Best Regards,
Mathias

Sorry, bad time refresh on GUI confluent console...
We can close the issue.
Sorry for that.


Set the brower action icon enabled / disabled status on startup.

This merge request is a bugfix to set the brower action icon to its enabled / disabled status on startup.
Also, it adds a blacklist browser action icon: when a site is blacklisted, it shows the icon as white-on-black.
(Browser action icons are the ones showing extensions to the right of the URL bar.)

Closing this pull request because I have a silly bug in it: the blacklist icon is being set globally.  I'll fix this when I get a chance and submit a new pull request.


Serialization: reader/writer usage

Scorex RC4 provides us different mechanism of serialization/deserialization, than RC3.
In RC3 we were obliged during deserialization to put the exact byte array into serializer. For example, if object A contains object B inside, than during serialization of A we should put at first length of serialized B, than B itself. So, during desearilization of A we can extract exact bytes of B and provide serializer of B with those bytes.
In RC4 we have the mechanism like in Zen Core, when B during deserialization receives a Reader and knows, that reader cursor points to the place where B bytes starts. B takes its bytes, than return control to containing object. So, no messy "next object length" needed.
Moreover, some classes now works incorrect in a case of using .serialize(...) and .parse(...) methods as a part of complex objects.

We need to be sure that we don't serialize unnecessary data. For example fixed-size fields should be serialized as is without additional "data length value" before the data itself.
For example, now SchnorrSecret also serialize secret key length before secret bytes, but secret bytes length is known and constant.


Z-index

Would you be able to implement a z-index in the dialog box?

Hello, there's already a z-index implemented for both dialog and toast. Did you have any issues while implementing it?

FYI, this lib was created for studies purpose, I intend to update it and add it to npm later on, in a way it also has compatibility with frameworks such as Vue, React, etc. Feel free to push PRs if you find any bugs or have an idea that would contribute with the project.

As of the moment there is no parameter for it, but instead, it's already set as default to 999999, shouldn't be causing that error with the modal.

Hello, dear, in my situation, if I put Z-index: 999999 in the alert-wrapper style class instead of alert-frame, the problem is solved.
Analyzing the component code, I understood that the div with alert-wrapper is the top container of the component. Do you see any side effects that could harm the component in a situation where there are no other modalities?
If there is no problem, could you update your source code with this solution?
Note: this change is applied when there is another modal in the project.

Sure, will do that, seems like a solid approach to me, thanks for the tip.

Gustavo, we are using cute-alert on the cdn, what time is more or less the update on the cdn?

As of the moment I don't have a CDN version for this library. I might upload create one in the future but as I mentioned before, it's a project that I created for studies purpose only, and currently I don't have much time to keep it up to date.


docker-compose up fails

Hello, when attempting the 'docker-compose up', the build fails with the following error message:
Step 6/8 : ADD ttn-gateway-collector/build/distributions/ttn-gateway-collector.tar /opt/
ERROR: Service 'java' failed to build: ADD failed: file not found in build context or excluded by .dockerignore: stat ttn-gateway-collector/build/distributions/ttn-gateway-collector.tar: file does not exist
I cannot find the ttn-gateway-collector.tar file in any of the provided directorys.

What is happening is that docker tries to build the image from scratch, instead of just pulling it from the github container registry. So somehow the 'build: ..' line in docker-compose.yaml takes precendence over the 'image: ghcr.io/bertrik/ttn-gateway-collector' line.
To be honest, I don't know why and under what conditions docker (or docker-compose) behaves this way. I believe different versions of docker have different behaviour in this regard. I cannot reproduce this on my development machine, but I have seen this on other machines.
Things you can try:

first run 'docker-compose pull' to manually/explicitly pull the image from the registry, then use 'docker-compose up'
temporarily remove the 'build: ..' line from docker-compose.yaml, then try 'docker-compose up' again.
or, just actually build the java image (although the point was to avoid this by using docker), by running './gradlew assemble' in the root directory of the project, then 'docker-compose up' in the docker directory. This requires the java-17 JDK though.

Removing the 'build: ..' then running 'docker-compose pull', then 'docker-compose up' got it to work :3 Thank you!


BUG: room save button problem

save button doesn't actually save activeDays checkboxes.
any idea why?

have you tried to serialize the active days before saving?

FIXED
eb62c277278acb83cf9b2e9f2fe74f59c754c4ed


delete seed?

Why after the webui-aria2 delete the seed, the file remains on the disk to be manually deleted?

Because of aria2/aria2


Authentication Details

Hi, I am trying to use the authentication part of your project in my own project.
However, I am using ASP.NET tables on SQL to do the auth using Microsoft accounts. I have ported the auth code succesfully and I am able to log in. However: when doing calls on the AcccountController, the server does not know I have logged in. How is this handled in your project? Does the client get authed? And how does the client know this? Using cookies maybe?
Could you try and explain a little bit about the auth process in your project? It would be greatly appreciated.

did you check the MVC middleware is inserted after the authentication middleware on your Startup.cs ? (method Configure) I met this problem before, it's difficult to troubleshoot.

  app.UseAuthentication();

            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "/api/{controller}/{action}/{id?}");
            });

I close it. If you still have the error please send more details


Couple more i18n adjustments

Fixing a typo (or two :)
And back porting some of the ammendments I did for my web to improve the i18n of the web page.

Your commit messages are really nice, could you add a description for the PR too? 😄

You've also got merge conflicts now, due to your other PR merging. As soon as you can fix those I'll 🚢 @svetlemodry


calling nick.exit() closes chrome process and node process

use case is where i want a process to run chrome to do web scrapping and the close it when done. when nick.exit() is called node process also closes.

@spearmootz
If you really want to use nick.exit() then you better go for pm2.
It will auto-restart when node process is killed.

Related reading: #26, #27


Some dev-env enhancements

Description
These are a few little changes I gathered over time and which should make life a bit easier.
Checklist

[ ] Investigated and inspected CI test results
[ ] Updated documentation accordingly There doesn't seem to be any reference to make tests

/test all

/retest

Thanks for the very valuable review @Molter73 . I will rework it a bit :)


Empty diff page

Description
empty diff page:

diff.Files is empty but diff.NumFiles is 1

How to reproduce:
Not know what happened. Maybe this is a coincidence. Can't reproduce this now. 😕
Gitea Version
latest
Can you reproduce the bug on the Gitea demo site?
No
Log Gist
No response
Screenshots
No response
Git Version
No response
Operating System
No response
How are you running Gitea?
build
Database
None

It seems that this is caused by WhitespaceBehavior
git command in Gitea:

git command in local without -b

git command in local with -b

It comes from user's setting? Where can I change this setting.

There is an option on top right dropdowns.

I see it.


Investigate USB3 Vision support

I have a few cameras that could work well
Maybe this? https://github.com/AravisProject/aravis

Probably not directly relevant but also good to have on radar: https://github.com/joshdoe/gst-plugins-vision

Other: I've discovered I only have one (not two) USB3 Vision camera. The one camera I do have doesn't seem to be working reliably (even using OEM software). Hmm...
The other camera though might be controllable via this: https://github.com/atdgroup/gst-plugin-lumenera


docs: #33 improve mobile demo

make the github page better on mobile devices

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Correct and Absent Keyboard Colors are the Same

See: https://github.com/alanrsoares/weirdle/blob/main/src/components/Keyboard.tsx#L68-L70
Looks like the absent color should be changed.

fixed


Allow CLI to find a different port

Smol quality of life request: can we make it so that the CLI will attempt a range of ports if 3006 isn't available (e.g. 3007-3012)? Very handy if you are working on multiple apps.

it's available in release 0.8.1


safe local doesn't work with vault v1.1.2

When issuing the safe x509 issue command, the secrets path doesn't exist because it was not created by default when safe local -m command was issued.

Fixed in 31671ac3c803fbb82e8d4910a3ff3efbbcd81f6f

Release coming after I finish up one more thing.

I believe this has been fixed in v1.2.0 (https://github.com/starkandwayne/safe/releases/tag/v1.2.0)
Can you take that for a spin, @sriniketh923 ?  Should be able to brew it up-to-date...

Updated my safe using brew and it works fine now.


simplify jflex grammars by using difference rather than negation

This change uses a new jflex feature (https://github.com/jflex-de/jflex/pull/654) to simplify emoji processing in the grammar. We can do a set difference rather than workaround it with complement + demorgan stuff.
It is cosmetic: doesn't change the resulting tokenizers (see diff), but makes the emoji parts easier to read.
bonus: major speed up to regenerating that huge UAX29UrlEmail DFA.
Before:
> Task :lucene:analysis:common:generateUAX29URLEmailTokenizer
Aggregate task times (possibly running in parallel!):
 918.87 sec.  generateUAX29URLEmailTokenizerInternal

After:
> Task :lucene:analysis:common:generateUAX29URLEmailTokenizer
Aggregate task times (possibly running in parallel!):
 285.26 sec.  generateUAX29URLEmailTokenizerInternal

This was suggested by jflex developers to help with the very-slow-regeneration on https://github.com/jflex-de/jflex/issues/715 . It doesn't solve all of our problems there, but it makes things a lot less painful :)

I'll take care of the precommit. There's some build wierdness in the regeneration where we pull the TLDs and make the new included-TLD.jflex after we recompile the grammar. Maybe dependencies are backwards. Anyay, I didn't really want to suck in today's new TLDs and trigger any changes to the parsers anyway, as I wanted to show this change "makes no difference".
Oh well, ill just force-regenerate everything (you really need to do it twice right now to really pull in the new TLDs) and push again.

and don't worry about the gradle build, I think part of the issue is that this TLDs file annoyingly changed while I was iterating and working on this:
# Version<PHONE_NUMBER>, Last Updated Sat Dec  4 07:07:01 2021 UTC

I opened https://issues.apache.org/jira/browse/LUCENE-10285 about the TLD task dependency. For now, I just ran regenerate again and it brought in the TLD changes. It is a lot less painful at least now that it takes 1/3 of the time!

That's a nice improvement!

@dweiss i think it's good win just for getting a simpler grammar.
There is probably evil stuff we could do to speed up the monster. Yes, I am slightly tempted to import org.apache.lucene.util.automaton into GenerateJFlexTLDMacros.java... but I agree with your thoughts on the JFlex issue, it is better to just generate the simple "transparent" grammar of TLDs, despite how slow it makes things.


Redshift EnhancedVpcRouting response data

The PR enables to determine which redshift clusters are and which are not using enhanced VPC routing. Currently there is no way to check whether enhanced VPC routing is enabled when using describe_cluster
I'll be adding the unittests soon

We don't accept PRs to service JSON files, as we generate those upstream. (see contributing guide)


Remove agora's Hash module, use our dependency's

Why is ldc-1.24.0 on ubuntu failing ..

It's spurious.

Will apply this commit to faucet's dependency.


add sicapacitacion.com

http://sicapacitacion.com

@aldosolis I am sorry; according to the website of this school, it provides students with distance learning and online education. I have to close the request without merging, because JetBrains does not grant free educational subscriptions to online educational institutions.
Please ensure that you are familiar with this repository rules located at the bottom of this page.  Please reopen the request and post a comment here, if I am mistaken and your school actually provides most of the courses in classrooms. Please mention a page on the official website, where we can see that the courses are taught offline (in classrooms) and there is at least one IT-related long-term (>1 year) course.
Thank you for the understanding!


fix: less verbose Windows builds

Description

By default, building on Windows will be less verbose. There's still a couple of warnings there, and should be fixed in a separate PR.
Motivation and Context

To increase the developer experience on Windows.

How Has This Been Tested?

Travis CI Build OK
Ran npm install on a Windows 10 VM manually (both with and without the verbose flag set).

Types of changes

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

Checklist:

[x] I have read the code of conduct.
[x] I have read the contributing guide.
[x] I have updated the documentation accordingly (if applicable).

I'll just go ahead and merge this one.


MSID: 91985 Version: 1 DOI: 2<IP_ADDRESS>8048

"msas": "Microbiology and Infectious Disease"
"msid": "91985"
"preprintDoi": "10.1101/2<IP_ADDRESS>8048"
"Reviewed Preprint posted": "2023-12-05"
"Sent for peer review": "2023-09-13"
"Posted to bioRxiv": "2023-09-14" (link: "Go to bioRxiv": "https://www.biorxiv.org/content/10.1101/2<IP_ADDRESS>8048v2/")
[PLACE PDF URL HERE WHEN AVAILABLE] See step 7
Step 1. Inform bioRxiv
Who can help: @QueenKraken, @nlisgo, @scottaubrey

[x] Manuscript is in data hub index (https://data-hub-api.elifesciences.org/enhanced-preprints/docmaps/v2/by-publisher/elife/get-by-manuscript-id?manuscript_id=91985)

Step 2. Create preview of manuscript
Who can help: @fred-atherden, @nlisgo, @scottaubrey

[ ] Manuscript is available for preview (https://prod--epp.elifesciences.org/preview/91985/v1)

[ ] Trigger import for staging: https://prod--epp.elifesciences.org/import
[ ] Sync data folder with s3://prod-elife-epp-data/data
[ ] Trigger import for staging: https://staging--epp.elifesciences.org/import
[ ] Sync data folder with s3://staging-elife-epp-data/data
[ ] Pull request created to enhanced-preprint-data
[ ] Post link to pull request below

Pull request: [PLACE LINK TO PULL REQUEST HERE]
Detailed instructions: https://github.com/elifesciences/enhanced-preprints-data#add-a-manuscript
Step 3: Awaiting public reviews and QC
Who can help: Production team

[ ] QC passed or QC not needed

Who can help: Editorial team

[x] Public reviews available on sciety (https://sciety.org/articles/activity/10.1101/2<IP_ADDRESS>8048)
[x] Manuscript and editor details at the top of this issue (Supplied by Editorial team)
[ ] Reviews returned by EPP - https://prod--epp.elifesciences.org/api/reviewed-preprints/91985/v1/reviews

Example
"msas": "Genetics and Genomics", "Neuroscience"
"msid": "84628"
"version": "1"
"preprintDoi": "10.1101/2<IP_ADDRESS>4241"
"articleType": "Reviewed Preprint"
"status": "Published from the original preprint after peer review and assessment by eLife."

"Reviewed Preprint posted": "2023-01-02"
"Sent for peer review": "2022-10-28"
"Posted to bioRxiv": "2022-11-21" (link: "Go to bioRxiv": "https://www.biorxiv.org/content/10.1101/2<IP_ADDRESS>4241v1")

Editors:
Reviewing Editor
Michael B Eisen
University of California, Berkeley, United States
Senior Editor
Michael B Eisen
University of California, Berkeley, United States

Step 4: Modify manuscripts.json (no PDF)

[ ] Reviewed preprint is published to EPP (https://elifesciences.org/reviewed-preprints/91985)

[ ] Pull request created to enhanced-preprint-client
[ ] Pull request switched to "Ready for review"
[ ] Post link to pull request below

[ ] Request that a doi be registered

[ ] Post link to #enhanced-preprint comment below

Pull request: [PLACE LINK TO PULL REQUEST HERE]
#enhanced-preprint comment thread: [PLACE LINK TO COMMENT HERE]

Instructions to modify manuscripts.json

Visit: https://github.com/elifesciences/enhanced-preprints-client/actions/workflows/publish-manuscript.yaml
Click: Run workflow
Complete the form and click "Run workflow"
A successful run should result in a new pull request at https://github.com/elifesciences/enhanced-preprints-client/pulls
Open the pull request and click the "Ready for review" button to trigger tests
Once the tests pass and you are happy with the changes the PR can be merged

Example pull request: https://github.com/elifesciences/enhanced-preprints-client/pull/334/files
Once the pull request is merged in it should be available a few minutes later.

Request that a doi
Post the following in #enhanced-preprint:
@Fred can you register a doi for https://elifesciences.org/reviewed-preprints/91985

Step 5: Awaiting search reindex

[ ] Reviewed preprint is avaliable on journal homepage (https://elifesciences.org)

The search reindex is triggered once an hour. We need the reviewed preprint to be indexed as the search application serves the journal homepage.

Additional info
If needed, the jenkins pipeline to reindex search can be triggered sooner.
https://alfred.elifesciences.org/job/process/job/process-reindex-reviewed-preprints/

Step 6: Published! Request PDF generation

[ ] Post the link to the PDF url at the top of the issue

[ ] Post link to #enhanced-preprint comment below

#enhanced-preprint comment thread: [PLACE LINK TO COMMENT HERE]
Post the following to the #enhanced-preprint on slack:
@Ryan Dix-Peek please can you generate a PDF for https://elifesciences.org/reviewed-preprints/91985

Step 7: Introduce PDF to data folder and git repo

[ ] PDF is avaliable at https://github.com/elifesciences/enhanced-preprints-data/raw/master/data/91985/v1/91985-v1.pdf

Detailed instructions: https://github.com/elifesciences/enhanced-preprints-data#add-a-pdf
Step 8: Add PDF url to manuscripts.json

[ ] Reviewed preprint PDF is available for download (https://prod--epp.elifesciences.org/reviewed-preprints/91985)

[ ] Pull request created to enhanced-preprint-client
[ ] Pull request switched to "Ready for review"
[ ] Post link to pull request below

[PLACE LINK TO PULL REQUEST HERE]

Instructions to add PDF url to manuscripts.json

Visit: https://github.com/elifesciences/enhanced-preprints-client/actions/workflows/add-pdf-url-to-manuscript.yaml
Click: Run workflow
Complete the form and click "Run workflow"
A successful run should result in a new pull request at https://github.com/elifesciences/enhanced-preprints-client/pulls
Open the pull request and click the "Ready for review" button to trigger tests
Once the tests pass and you are happy with the changes the PR can be merged

Example pull request: https://github.com/elifesciences/enhanced-preprints-client/pull/397/files
Once the pull request is merged in it should be available a few minutes later.

Step 9: Done!

[ ] Kettle is on!

Article text is displaying in the figures and data tab


🐛 [Nextcloud] Bug after update

Description
After updating addon to ver 27, it doesn't boot up. After entering a site it shows: This version of Nextcloud is not compatible with PHP>=8.2.
You are currently running 8.2.6.
Reproduction steps
1. Update Nextcloud to version 27
2. Reboot addon

Addon Logs
Nextcloud for Home Assistant
-----------------------------------------------------------
 Add-on version: 27.0.0
 You are running the latest version of this add-on.
 System: Debian GNU/Linux 11 (bullseye)  (aarch64 / raspberrypi4-64)
 Home Assistant Core: 2023.6.2
 Home Assistant Supervisor: 2023.06.2
-----------------------------------------------------------
 Please, share the above information when looking for help
 or support in, e.g., GitHub, forums
-----------------------------------------------------------
 Provided by: https://github.com/alexbelgium/hassio-addons
-----------------------------------------------------------
 Defining permissions for main user :
User UID: 1000
User GID : 1000
-----------------------------------------------------------
[11:16:44] INFO: Execute /config/addons_autoscripts/nextcloud-ocr.sh if existing
[11:16:44] INFO: ... no script found
Setting user to 1000:1000
Updating permissions...
... Config directory : /data
... Data directory detected : /media/Chmura
Disabling check_data_directory_permissions
This version of Nextcloud is not compatible with PHP>=8.2.
You are currently running 8.2.6.Please install nextcloud first
...done

Cleaning files
Setting logs

-------------------------------------------------
 Unknown error detected, auto-repair will launch
-------------------------------------------------
Error message:
This version of Nextcloud is not compatible with PHP>=8.2.
You are currently running 8.2.6.
------------------------------------------------------------------
---
MariaDB addon was found! It can't be configured automatically due to the way Nextcloud works, but you can configure it manually when running the web UI for the first time using those values :
Database user : service bashio::log.blue Database user : service
Database password : -
Database name : nextcloud
Host-name : core-mariadb:3306
---

New version available : 27.0.0
...auto_updater not set in addon options, please update from nextcloud settings

Architecture
armv7
OS
HAos

Hi, you are running an old version of nextcloud. Was the automatic update disabled ? The only solution is to restore a previous vesrion of the addon (backups are the default setting when updating an addon), updating manually the addon through the administrative interface, then updating again to 27.0.0.
Here is a similar thread in which the content might also support you : https://github.com/alexbelgium/hassio-addons/issues/878

I've restored to previous version already. I've enabled auto_updater in configuration. However, I don't see any options to update nextcloud from web interface. Now, in System tab, it shows that PHP is in version 8.1.19. I don't know if before it was 8.2.6, maybe auto_updater updated that. There is one thing that wonders me. My logs after reverting setting auto_update back to true:
Cleaning files
Setting logs

----------------------------------------
 Nextcloud 25.0.5 is installed
----------------------------------------

---
MariaDB addon was found! It can't be configured automatically due to the way Nextcloud works, but you can configure it manually when running the web UI for the first time using those values :
Database user : service bashio::log.blue Database user : service
Database password : -
Database name : nextcloud
Host-name : core-mariadb:3306
---
Auto_updater set, checking for updates
Nextcloud Updater - version: v25.0.3-2-gd49ee0d

Step 4 is currently in process. Please call this command later.
[09:24:54] INFO: Installing additional apps :
... inotify-tools

So I don't know if it updated something, this line Step 4 is currently in process. Please call this command later. is suspicious.
That's the log from today, yesterday it showed the same exact thing.

This is indeed suspiscious. Are you able to log in your nextcloud instance ?
This is the way to update : https://docs.nextcloud.com/server/latest/admin_manual/maintenance/update.html#using-the-web-based-updater

I did what you said - removed .step and rebooted. It first updated to last 25 and then to 26.0.3.
---
Auto_updater set, checking for updates
Nextcloud Updater - version: v25.0.3-2-gd49ee0d

Current version is 25.0.5.

Update to Nextcloud 25.0.8 available. (channel: "stable")
Following file will be downloaded automatically: https://download.nextcloud.com/server/releases/nextcloud-25.0.8.zip
Open changelog ↗

Updater run in non-interactive mode.

Start update

Info: Pressing Ctrl-C will finish the currently running step and then stops the updater.

[ ] Check for expected files ...
[✔] Check for expected files
[ ] Check for write permissions ...
[✔] Check for write permissions
[ ] Create backup ...
[✔] Create backup
[ ] Downloading ...
[✔] Downloading
[ ] Verify integrity ...
[✔] Verify integrity
[ ] Extracting ...
[✔] Extracting
[ ] Enable maintenance mode ...
[✔] Enable maintenance mode
[ ] Replace entry points ...
[✔] Replace entry points
[ ] Delete old files ...
[✔] Delete old files
[ ] Move new files in place ...
[✔] Move new files in place
[ ] Done ...
[✔] Done

Update of code successful.
Updater run in non-interactive mode - will start "occ upgrade" now.

Nextcloud or one of the apps require upgrade - only a limited number of commands are available
You may use your browser or the occ upgrade command to do the upgrade
Setting log level to debug
Repair step: Repair MySQL collation
Repair info: All tables already have the correct collation -> nothing to do
Repair step: Repair SQLite autoincrement
Repair step: Copy data from accounts table when migrating from ownCloud
Repair step: Drop account terms table when migrating from ownCloud
Updating database schema
Updated database
Updating <oauth2> ...
Repair step: Update OAuth token expiration times
Updated <oauth2> to 1.13.1
Repair step: Repair MySQL collation
Repair info: All tables already have the correct collation -> nothing to do
Repair step: Repair mime types
Repair step: Clean tags and favorites
Repair info: 0 tags of deleted users have been removed.
Repair info: 0 tags for delete files have been removed.
Repair info: 0 tag entries for deleted tags have been removed.
Repair info: 0 tags with no entries have been removed.
Repair step: Repair invalid shares
Repair step: Move .step file of updater to backup location
Repair info: .step file exists
Repair info: .step-previous-update removed
Repair info: .step file moved to .step-previous-update
Repair step: Add move avatar background job
Repair info: Repair step already executed
Repair step: Add preview cleanup background jobs
Repair step: Migrate oauth2_clients table to nextcloud schema
Repair info: Update the oauth2_access_tokens table schema.
Repair info: Update the oauth2_clients table schema.
Repair info: Delete clients (and their related access tokens) with the redirect_uri starting with oc:// or ending with *
Repair step: Fix potential broken mount points
Repair info: No mounts updated
Repair step: Repair language codes
Repair step: Add log rotate job
Repair step: Clear frontend caches
Repair info: Image cache cleared
Repair info: JS cache cleared
Repair step: Clear every generated avatar
Repair info: Avatar cache clearing job added
Repair step: Add preview background cleanup job
Repair step: Queue a one-time job to cleanup old backups of the updater
Repair step: Cleanup invalid photocache files for carddav
Repair step: Add background job to cleanup login flow v2 tokens
Repair step: Remove potentially over exposing share links
Repair info: No need to remove link shares.
Repair step: Clear access cache of projects
Repair step: Reset generated avatar flag
Repair step: Keep legacy encryption enabled
Repair step: Check encryption key format
Repair step: Remove old dashboard app config data
Repair step: Add job to cleanup the bruteforce entries
Repair step: Queue a one-time job to check for user uploaded certificates
Repair step: Repair DAV shares
Repair step: Add background job to set the lookup server share state for users
Repair step: Add token cleanup job
Repair step: Clean up abandoned apps
Repair step: Add possibly missing system config
Starting code integrity check...
Finished code integrity check
Update successful
Maintenance mode is kept active
Resetting log level

Updater run in non-interactive mode - will disable maintenance mode now.
Maintenance mode disabled

Maintenance mode is disabled
Nextcloud is already latest version
previewgenerator new version available: 5.3.0
previewgenerator updated
-----------------------------------------------------------------------
  new version available, updating. Please do not turn off your addon!
-----------------------------------------------------------------------
Nextcloud Updater - version: v25.0.3-2-gd49ee0d

Current version is 25.0.8.

Update to Nextcloud 26.0.3 available. (channel: "stable")
Following file will be downloaded automatically: https://download.nextcloud.com/server/releases/nextcloud-26.0.3.zip
Open changelog ↗

Updater run in non-interactive mode.

Start update

Info: Pressing Ctrl-C will finish the currently running step and then stops the updater.

[ ] Check for expected files ...
[✔] Check for expected files
[ ] Check for write permissions ...
[✔] Check for write permissions
[ ] Create backup ...
[✔] Create backup
[ ] Downloading ...
[✔] Downloading
[ ] Verify integrity ...
[✔] Verify integrity
[ ] Extracting ...
[✔] Extracting
[ ] Enable maintenance mode ...
[✔] Enable maintenance mode
[ ] Replace entry points ...
[✔] Replace entry points
[ ] Delete old files ...
[✔] Delete old files

I don't know if this repair stuff is normal tho. Am I safe to update the addon now? The version is: [Nextcloud Hub 4] (26.0.3)

In theory you should be able (after rebooting) to update to 27 too!

Well I never had an issue with the updating system... The auto update just executes the updater.phar at boot to make sure that versions are not stuck in the past. Actually as several people had the same issue as you I've modified the behavior of the disable_updates feature : now it disables APP updates and not anymore NEXTCLOUD updates.

Okay, thank you for helping me.


Change LogBox level from "fatal" to "error" for component errors caught with ErrorBoundary

Summary
Error Screen displayed by ErrorBoundary is just another state of the app. It should not be treated as fatal crash. Showing LogBox Notification is better in this case than showing LogBox full screen.
Changelog
[General] [Changed] - Change LogBox level from "fatal" to "error" for component errors caught with ErrorBoundary
Test Plan

Start the app in dev mode
Wrap your app with ErrorBoundary

class ErrorBoundary extends Component {
  static getDerivedStateFromError(error) {
    return { hasError: true }
  }

  state = {
    hasError: false,
  }

  render() {
    const { hasError } = this.state

    if (hasError) {
      return (
        <View
          style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}
        >
          <Text>Sorry, something went wrong</Text>
        </View>
      )
    }

    return this.props.children
  }

  componentDidCatch(error, extraInfo) {}
}

Raise a rendering error on any level of your app. You can just add an undeclared variable inside rendering code or try to read some property from existing variable with nullish value.

You should see "Sorry, something went wrong" text in the middle of the screen and LogBox Notification with error message at the bottom.

You should not see a full screen LogBox.

In our app developer UX looks like this today

and I want to make it look like this

From my opinion, the second variant is better as it's shorten and less aggressive, plus it follows end-users UX in close.

In our app developer UX looks like this today

and I want to make it look like this

From my opinion, the second variant is better as it's shorten and less aggressive, plus it follows end-users UX in close.

Hey @serhiipalash, thanks for the suggestion.
This is intentional behavior. Though it's true that some errors you want to minimize, others you don't want to miss and until we have a better option we're choosing to be too eager rather than too silent.

Hi @rickhanlonii ! Ok np.
Still, I think if some code catch the error, you should leave the whole error handling to this code. I would even remove bottom notification as componentDidCatch can add it by itself.
So, should I close pr?

Hey @serhiipalash, thanks for the suggestion.
This is intentional behavior. Though it's true that some errors you want to minimize, others you don't want to miss and until we have a better option we're choosing to be too eager rather than too silent.

Hi @rickhanlonii ! Ok np.
Still, I think if some code catch the error, you should leave the whole error handling to this code. I would even remove bottom notification as componentDidCatch can add it by itself.
So, should I close pr?

If we collapsed all caught errors by default, then any app with an error boundary at the top of their app would have all React errors collapsed (e.g a React key error). You want to see those immediately because they're issues you want to fix in development.
I'll close this, but again, I appreciate the thought and effort.

If we collapsed all caught errors by default, then any app with an error boundary at the top of their app would have all React errors collapsed (e.g a React key error). You want to see those immediately because they're issues you want to fix in development.
I'll close this, but again, I appreciate the thought and effort.

I'll close this, but again, I appreciate the thought and effort.

Np. I have already created a patch in our project code. We will try to work in this way, at least for some time.

If we collapsed all caught errors by default, then any app with an error boundary at the top of their app would have all React errors collapsed (e.g a React key error). You want to see those immediately because they're issues you want to fix in development.

I'll try to explain more the motivation of this pr. Please don't feel it like arguing. I am okey with closing this pr.
Our project is not just a mobile app, but in first place - a universal app build with JS. Thinking of it in this way, I would like to have the same developer experience in all environments. There is no full screen error report in Web. Usually you check why the app crashed in Console. There is a Console in RN (Terminal). So, it seems logical to unify app in this part.

I'll close this, but again, I appreciate the thought and effort.

Np. I have already created a patch in our project code. We will try to work in this way, at least for some time.

If we collapsed all caught errors by default, then any app with an error boundary at the top of their app would have all React errors collapsed (e.g a React key error). You want to see those immediately because they're issues you want to fix in development.

I'll try to explain more the motivation of this pr. Please don't feel it like arguing. I am okey with closing this pr.
Our project is not just a mobile app, but in first place - a universal app build with JS. Thinking of it in this way, I would like to have the same developer experience in all environments. There is no full screen error report in Web. Usually you check why the app crashed in Console. There is a Console in RN (Terminal). So, it seems logical to unify app in this part.


Plugin references both monochrome_logs and monochromeLogs

The plugin configures its own logging using nf-core conventions. For this it uses both parameters monochrome_logs and monochromeLogs. I assume the latter is supported for backwards compatibility. However, the current code creates a slightly annoying warning (as in, the warning may confuse users who don't know what it means).
WARN: Access to undefined parameter `monochromeLogs` -- Initialise it to a default value eg. `params.monochromeLogs = some_value`

I looked a bit in the code and I think it must be triggered by the containsKey method on line 248 in the SchemaValidator.groovy file, since you set the value afterwards, which I guess was intended to avoid exactly this.
        if( !params.containsKey("monochromeLogs") ) {
            params.monochromeLogs = false
        }

Alternatively, setting the value does not work as expected such that it is still null in the outer scope.
I'm, unfortunately, not familiar with the gradle build tools and testing, otherwise I could work on a fix myself. One suggestion would be to use the session.params, to initialize the plugin's own settings (which can be more or less a copy), rather than continuing to use those for checks.

This problem has been solved by moving to the validation.monochromeLogs configuration option instead in nf-schema


Parser library variables escape & template includes

Added functionality for escaping data and including template in to template.
{var} - prints escaped data
{{var}} - prints unescaped data
@include(template_name) - includes one view to another

I see what you're doing with escape by default, but that's a huge BC break and the escaping itself is not really sensible. Even otherwise, you should use a templating engine like Twig if you want such functionality.
CI's Parser class is meant to be dead simple and if we start accepting changes like these, we're also dedicating ourselves to adding and supporting more and more templating features and that's just beyond our targets. In fact, I've thought a few times already about dropping the Parser class in favor of external templating engines for those same reasons, but that will probably happen in CI4.

@narfbg for what reason does CI need templating engine at all? Why not just use PHP in views, really? One more absolutely useless abstraction layer. For whom it is intended? Designers? Pfff. Replacing $var with {{var}} and require_once() with @include() makes makes no sense for me.

@kakysha well, I don't want to create flame here, but php framework that does not use templating engine that cares about escaping can be hacked under 5 seconds.
Funny thing is that even sophisticated templating engine that by default everything escapes cannot ensure that attacker wont be able to run his code on your site via XSS or something.
The true purpose of existence of templating engines is not simplification of the way we write html but lack of security layer when printing stuff via PHP to html.

@vojtatranta citation for hack claim?

@LouisMilotte well, you need citation for  it?
If you do not use templating engine, you have to manually escape every string in every template, you can't even use .
If someone saves his username as  then mostly this code will be executed (or it might com as parameter from URL).
Even Codeigniter's official tutorial does not escape strings.
Thats extremely dangerous, we all should know about that.

@vojtatranta CI's Parser library doesn't escape the output for you, either. It's relatively simple to override it to do so, but, in the end, you're really left to your own devices to secure output in CI.

@vojtatranta  that's not a citation; citation please.

@mwhitneysdsu thats what I am talking about.
@LouisMilotte Well I hope that explanation would be enough, XSS is usually used to steal session of logged user, I think you can find yourself some articles about it.
If you really want a citation I can write article about how you can simply steal session from some administrators using XSS and Javascript.

@vojtatranta more so as to why template engines resolve that. At this point it's probably best to just point me at one of these "engines" that achieve what you're talking about rather than flooding this issue log.

@LouisMilotte Very well, then mostly commonly use in PHP world is propabably Smarty or you can also use Mustache/handlebars Symfony relies on Twig Laravel has nice engine called Blade and last but not least, czech framework Nette has awesome templating library which I use in CI if I have something in legacy code, it's called Latte.
All of them can be installed via composer. There is also fork of smarty that is meant to be used in CI.
Using bold PHP (unescaped, manually escaped) HTML I consider huge hole in security, so huge that I would fear to use such app.

well, I don't want to create flame here, but

"I don't want to ... but here it is". You resurrected a 4-months old discussion for the sake of argument.
Please don't use our issue tracker as a forum board.


Add libfontconfig1 explicitly to openjdk-8-jre for https://bugs.debian.org/793210

Closes #46

Build failure is in java 6, so LGTM

LGTM :+1:
Looks like the Java 6 failure indicates the need for a run of update.sh.


Not Updating

The Spanish word of the day doesn't update properly. My other modules pulling are pulling data from the internet

The Spanish word of the day doesn't update properly. My other modules pulling are pulling data from the internet

This is also true for me. I have a fresh MagicMirror and the word has been the same for three days.

Well... it seems like it works now. Thanks!

mine will be the same word for weeks if i don't refresh the magic mirror


DPL-067 Cardinal - Sample pooling plate

User story
As a user of the Cardinal pipeline, I need to be able to pool the samples on the LCA PBMC plate into wells of a new plate. The samples assigned to the pools, the number of samples in a pool and the volume of each sample used needs to be determined by the LIMS.
Who are the primary contacts for this story
Stef L
Acceptance criteria
To do this I need to:

Create a new plate "LCA PBMC Pools plate", coming after the "LCA PBMC plate" in the pipeline.
Based on the number of samples that are taken forward from the LCA PBMC plate (not failed), the LIMS determines the number of pools and the number of samples per pool, using the following table (Figure 3). For instance, if there are 96 passed wells on the LCA PBMC plate, the samples get split into 8 pools, with 12 samples per pool.

Figure 3: Plexing parameters

Samples should be assigned to the pools randomly and not in an ordered fashion. E.g. A1, B1, & C1  should not all be assigned to pool 1.
Wherever possible, pools should contain samples from more than one blood collection site.

Dependencies
This story cannot be completed without the previous plate type existing, and basics of the pipeline being set up. https://github.com/sanger/limber/issues/757
Relates to https://github.com/sanger/limber/issues/768

Q's:

"Based on the number of samples that are taken forward" - as in, ones that weren't failed based on cell count / viability?

See existing models/labware_creators in Limber for custom steps like this e.g. normalised_binned_plate.rb

Collection site will be selected from the 'supplier' dropdown when generating the sample manifests - so is a field on the sample manifest table, which can be accessed through the 'sample_manifest_id' on 'sample'

Meeting on 14th Sept: Tag Clashes in the PBMC Plate
Attendees: Stef, Harry, Andrew, James, Ben, Steve, Stuart, Eduardo
We discussed how at the creation of the PBMC Pooling plate, it is currently failing due to a tag clash error; On the PBMC Pools Plate, we are adding up to 8 pools, one pool per well, onto the pooling plate. The samples in the pools at this stage are untagged. There is currently tag clash detection in the aliquots table in Sequencescape's database, where a unique index is on tag_1, tag_2 and receptacle. Meaning that multiple samples in one well, with no tags are hitting this constraint.
We discussed a few options with Stef. And decided to, in summary, add a new column to the aliquots table, which can be added to the unique index, so many untagged samples in one pool are unique. A new story DPL-xxx was created


the current point is too close to the previous point

Hello, there are many dense points on the steering path I set, which leads to an error: the current point is too close to the previous point, how can I improve it

Could you please elaborate a little bit, and maybe provide some parameters you used?

Closing this to clean up old issues.


Send Okta logs to Splunk

Only do this once for both SimpleReport and Datahub

duplicate a more complete version of this ticket is tracked in the ReportStream backlog


VSCode failed to update extensions!

Here's my VSCode details :
Version: 1.40.1 (system setup)
Commit: 8795a9889db74563ddd43eb0a897a2384129a619
Date: 2019-11-13T16:49:35.976Z
Electron: 6.1.2
Chrome: 76.0.3809.146
Node.js: 12.4.0
V8: 7.6.303.31-electron.0
OS: Windows_NT x64 10.0.18362
Check attached screenshot and let me know what is causing that issue please !

/needsMoreInfo does this only happen for this particular extension? Does it also happen for other extensions.

@egamma yea it's happens for all !
Failed to update 'ms-python.python'.
Failed to update 'formulahendry.code-runner'.

issue resolved by changing DNS after verifying that i were unable to access https://ms-python.gallerycdn.vsassets.io/extensions/ms-python/python/2019.8.29288/1565127378610/Microsoft.VisualStudio.Services.Icons.Default


Cisco vpn interface template

Pull Request summary:
Added constants and removed root validator definition from interface_model
Description of changes:
[Add more in depth analysis of what changed, provide logs, examples of usage]
Checklist:

[x] Make sure to run pre-commit before commiting changes
[x] Make sure all checks have passed
[x] PR description is clear and comprehensive
[x] Mentioned the issue that this PR solves (if applicable)
[x] Make sure you test the changes

This issue was migrated from an old repository: https://github.com/CiscoDevNet/catalystwan/pull/360


Dialog position is wrong when current camera is moving

The problem
Describe the bug
I have a scene which is larger than the current viewport. So the active camera is moving when player goes to the right
and following him. When the camera viewport is on the right, the dialog stays on the old screencenter.
set_position or set_global_position doesn't seem to have an effect placing it right.
To Reproduce
Steps to reproduce the behavior:

Create a scene with a camera
Move the camera to the right and set it to "current"
Add a dialog

Expected behavior
The dialog should be centered on screen or it reacts correctly when setting global_position or current camera moves
Screenshots
This is how it should be:

This is how it looks when camera is moving away:

Solutions
Workaround
My workaround is create the dialog under a CanvasLayer-Node in the scene.

It seems like you need to add Dialogic as a child of a CanvasLayer node.
If you use version 1.2 this is done automatically for you :)
Closing because it is not a bug and this has been fixed, hopefully I will be able to release 1.2 stable soon 😅


How to align these buttons?

Hey, thanks for creating a wonderful alternative to other (costly) programs.
I understand that buttons auto-align. I'm trying to top align the right arrow button to the up arrow - is that possible?

layout_width: 4
button_size: 24
margin: 8

left:
    action: left
    icon: arrow_left_thick
    size: 1,2

  up:
    action: up
    icon: arrow_up_thick
    size: 2,1

  down:
    action: down
    icon: arrow_down_thick
    size: 2,1

  right:
    action: right
    icon: arrow_right_thick
    size: 1,2

...fixed it right after posting this. Just switched the down and right buttons in the code 👍


Bump sctk dependency

I think types from sctk are used in the public API, so this will probably also require a major version bump for this crate?

Thanks!


Block-comment entire functions from definition line with a keyboard shortcut

Hello,
It should be really cool if it would be possible to place the cursor on the line of a 'def' or a 'class' definition then press a shortcut (for example Ctrl + 6) and have all the function block-commented.
That way it would be easy to uncomment using Ctrl + 5.
And if it could go alongside with future code folding (issue #706) that would be great.
I think the same function could be used for finding all the lines of the definition for that feature as well as for code folding.
But it may be difficult to have the folding of block-commented functions as well as non-commented functions.

Maybe @goanpeca can take a look at it when he implements code folding.


Cannot review PRs with 0.78.0 / VSCode 1.85.0, "GraphQL error: Field 'mergeQueueEntry' doesn't exist

Extension version: 0.78.0
VSCode Version: 1.85.0
OS: macOS Sonoma 14.1.2
Repository Clone Configuration (single repository/fork of an upstream repository): N/A (doing pull requests on a single repo)
Github Product (Github.com/Github Enterprise version x.x.x): GHE 3.7.0 (on-prem)

Steps to Reproduce:

Update the extension and VSCode to the aforementioned versions
Go to the Pull Request view
Receive the error Fetching pull requests failed: GraphQL error: Field 'mergeQueueEntry' doesn't exist on type 'PullRequest' GraphQL error: No such type MergeQueueEntry, so it can't be a fragment condition

(Is this a dependency on a newer version of GitHub/GHE?)

Reverting to v0.76.1 fixes the issue.

My settings.json shows, for the queries section:
  "githubPullRequests.queries": [
    {
      "label": "Waiting For My Review",
      "query": "is:open user-review-requested:${user}"
    },
    {
      "label": "Waiting For Team Review",
      "query": "is:open review-requested:${user} draft:false"
    },
    {
      "label": "Assigned To Me",
      "query": "is:open assignee:${user}"
    },
    {
      "label": "Created By Me",
      "query": "is:open author:${user}"
    }
  ],

Yes, looks like this isn't available in your version of GHE.

@janakjjp I'm not able to reproduce this issue. I've made a possible fix and it is available in the pre-release build. Would you be able to try out the latest pre-release build and see if the issue still occurs there.

@janakjjp I'm not able to reproduce this issue. I've made a possible fix and it is available in the pre-release build. Would you be able to try out the latest pre-release build and see if the issue still occurs there.

I can confirm the newest pre-release works!

@janakjjp that's great news! Thank you for trying it out. I will include the fix in the recovery release this week.

Nice, thanks, fixes for me too! (on Windows 11)
For those who didn't know, you can manage VSCode Pull Request extension in your VS Code extensions
Click on the gear/settings icon to choose "Switch to Pre-Release Version"

GitHub Enterprise Server 3.9.10

I'm not able to reproduce this. Are you somehow also signed in with a non-enterprise GH account?

I'm not able to reproduce this. Are you somehow also signed in with a non-enterprise GH account?

Sorry, I cannot reproduce this too, because two weeks passed by, and I have tried again, it works fine. Thanks.


Saving multi-branch model : Unable to create group (Name already exists)

I created a model with two branches (each a VGG16), but it generate the following error when I try to save it:

h5py/_objects.pyx in h5py._objects.with_phil.wrapper (/tmp/pip-4rPeHA-build/h5py/_objects.c:2684)()
h5py/_objects.pyx in h5py._objects.with_phil.wrapper (/tmp/pip-4rPeHA-build/h5py/_objects.c:2642)()
h5py/h5g.pyx in h5py.h5g.create (/tmp/pip-4rPeHA-build/h5py/h5g.c:2756)()
ValueError: Unable to create group (Name already exists)

Here is my model:
from keras.applications.vgg16 import VGG16

input_1 = Input(shape=(3, 224, 224))
base_model_1 = VGG16(input_tensor=input_1, weights='imagenet', include_top=False)
x = base_model_1.output
x = Flatten()(x)
x = Dense(4096, activation='relu')(x)
branch_1 = Dense(4096, activation='relu')(x)
model_1 = Model(input=base_model_1.input, output=branch_1)

input_2 = Input(shape=(3, 224, 224))
base_model_2 = VGG16(input_tensor=input_2, weights='imagenet', include_top=False)
x = base_model_2.output
x = Flatten()(x)
x = Dense(4096, activation='relu')(x)
branch_2 = Dense(4096, activation='relu')(x)
model_2 = Model(input=base_model_2.input, output=branch_2)

model = Sequential()
merged = Merge([model_1, model_2], mode='concat')
model.add(merged)
model.add(Dense(129, activation='softmax'))

# compile the model
sgd = SGD(lr=1e-4, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(optimizer=sgd, loss='categorical_crossentropy', metrics = ['accuracy'])

model.save('both.hdf5')

As I am using keras.applications.vgg16, I cannot change the name of layers if that's the problem (having two VGG16 with same layer name).
How can I fix the issue?
Thank you,
Update:
I tried to solve the problem by adding the following code:
...
model_1 = Model(input=base_model_1.input, output=branch_1)
for i in range(len(model_1.layers)):
    model_1.layers[i].name = model_1.layers[i].name + '1'

input_2 = Input(shape=(3, 224, 224))
...

and now it generates a new error:

...
/usr/local/lib/python2.7/dist-packages/keras/models.pyc in save_model(model, filepath, overwrite)
50     f.attrs['model_config'] = json.dumps({
51         'class_name': model.class.name,
---> 52         'config': model.get_config()
53     }, default=get_json_type).encode('utf8')
54
/usr/local/lib/python2.7/dist-packages/keras/models.pyc in get_config(self)
955             for layer in self.layers[0].layers:
956                 layer_config = {'class_name': layer.class.name,
--> 957                                 'config': layer.get_config()}
958                 layers.append(layer_config)
959             merge_config = self.layers[0].get_config()
/usr/local/lib/python2.7/dist-packages/keras/engine/topology.pyc in get_config(self)
2317             node_index = self.input_layers_node_indices[i]
2318             node_key = layer.name + '_ib-' + str(node_index)
-> 2319             new_node_index = node_conversion_map[node_key]
2320             tensor_index = self.input_layers_tensor_indices[i]
2321             model_inputs.append([layer.name, new_node_index, tensor_index])
KeyError: 'input_11_ib-0'

I fixed it by changing the name of the first VGG16 immediately after loading:
from keras.applications.vgg16 import VGG16

input_1 = Input(shape=(3, 224, 224))
base_model_1 = VGG16(input_tensor=input_1, weights='imagenet', include_top=False)
for i in range(1,len(base_model_1.layers)):
    base_model_1.layers[i].name = base_model_1.layers[i].name + '1'
...

It fixed the issue with model.save() and I can load the model immediately after I saved it. But after I train it and save it again then I cannot load it again. It gives me the following error when I want to load the trained model:

Exception: Optimizer weight shape (64,) not compatible with provided weight shape (64, 3, 3, 3)

I installed HDFview and opened the hdf5 file and deleted the optimizer part of the file. Now I can load the model and it works like a charm ! However, I think it is a bug and should get fixed.

For anyone else:
I had this issue when I pretrained a part of a model, saved it, and then attempted to load and train it more as a part of a larger network.
What worked for me is to first create a temporary, equivalently structured (new, untrained) model, and then overwrite it with a load_model(...) call. This serves to give all of the model layers unique names, such that they can be concurrently trained and then saved.
E.g.
# Create an identically structured model
# This will "obtain" unique names for the layers in the saved version of this model
model = Sequential()
model.add(....)
model.add(....)
..
..

# Now load the actual saved model
model = load_model('savedModel.h5')

# Use/Train/Save the model jsut fine
model.save('ReSavedModel.h5')

Thanks  @patyork, you just saved me a lot of time figuring out what is wrong!
I am, however, using separate programs to create the smaller model and the larger model and I would prefer not to give all information about the small model to the program of the larger model.
Based on the abovementioned information I tried renaming the layers of the smaller model after loading and it works fine for me.
E.g.

# Load existing model
model = load_model(...)

# Rename layers for saving
i = 0
for layer in model.flattened_layers:
    layer.name = "small_model_{0}".format(i)
    i += 1

# Continue constructing larger model
...

Thanks  @patyork, you just saved me a lot of time figuring out what is wrong!
I am, however, using separate programs to create the smaller model and the larger model and I would prefer not to give all information about the small model to the program of the larger model.
Based on the abovementioned information I tried renaming the layers of the smaller model after loading and it works fine for me.
E.g.

# Load existing model
model = load_model(...)

# Rename layers for saving
i = 0
for layer in model.flattened_layers:
    layer.name = "small_model_{0}".format(i)
    i += 1

# Continue constructing larger model
...


Allow selecting the service's ClusterIP

This is mostly useful to be able to set it to "None", creating a headless service that can be scraped using DNS discovery (dns_sd_configs).
No change in default behavior.

The commit is signed-off (git commit -s) as requested by your contributing guide.

Sorry for the confusion. The contribution guide needs to be updated as the repository rules prevent us from merging commits that have not been signed with "git commit -S".


How to convert cosmos public key to ethereum address?

use @cosmjs/crypto?

What exactly do you mean @chismo950 ? Cosmos public keys aren't related to Ethereum addresses.

⚠ Warning: With great power comes great responsibility
This is very well possible. It is probably big hackery and should not be done, but it can be done.
Like Ethereum, Cosmos SDK uses secp256k1 keypairs. So you can (not should) use an Ethereum keypair for a Cosmos chain and vice versa. The biggest difference is that Ethereum uses uncompressed secp256k1 pubkeys and Cosmos uses compressed secp256k1 pubkeys.
The steps are as follows:

Uncompress the secp256k1 pubkey (#1047)
Create a Keccak256 hash of the 64 bytes after the leaxing 0x04 byte and cut the last 20 bytes (as done here)
Hex encode the 20 byte result of 2. and prefix with 0x
(optional) Implement the upper/lower case checksum from EIP-55 as implemented here.

Point 4 is out of scope for CosmJS but the rest can be done with the general purpose tooling you find here.

⚠ Warning: With great power comes great responsibility
This is very well possible. It is probably big hackery and should not be done, but it can be done.
Like Ethereum, Cosmos SDK uses secp256k1 keypairs. So you can (not should) use an Ethereum keypair for a Cosmos chain and vice versa. The biggest difference is that Ethereum uses uncompressed secp256k1 pubkeys and Cosmos uses compressed secp256k1 pubkeys.
The steps are as follows:

Uncompress the secp256k1 pubkey (Add Secp256k1.uncompressPubkey #1047)
Create a Keccak256 hash of the 64 bytes after the leaxing 0x04 byte and cut the last 20 bytes (as done here)
Hex encode the 20 byte result of 2. and prefix with 0x
(optional) Implement the upper/lower case checksum from EIP-55 as implemented here.

Point 4 is out of scope for CosmJS but the rest can be done with the general purpose tooling you find here.

Thank you very much, I did it!

Hi. Is there a way to convert from eth address to cosmos chain address in Go?

⚠ Warning: With great power comes great responsibility
This is very well possible. It is probably big hackery and should not be done, but it can be done.
Like Ethereum, Cosmos SDK uses secp256k1 keypairs. So you can (not should) use an Ethereum keypair for a Cosmos chain and vice versa. The biggest difference is that Ethereum uses uncompressed secp256k1 pubkeys and Cosmos uses compressed secp256k1 pubkeys.
The steps are as follows:

Uncompress the secp256k1 pubkey (Add Secp256k1.uncompressPubkey #1047)
Create a Keccak256 hash of the 64 bytes after the leaxing 0x04 byte and cut the last 20 bytes (as done here)
Hex encode the 20 byte result of 2. and prefix with 0x
(optional) Implement the upper/lower case checksum from EIP-55 as implemented here.

Point 4 is out of scope for CosmJS but the rest can be done with the general purpose tooling you find here.

⚠ THIS IS NOT TRUE!
Ethereum uses different HD path (m/44'/60'/0'/0/0) than Cosmos (m/44'/118'/0'/0/0). So the secp256k1 Cosmos pubkey you find in transactions will NOT CONVERT.
Please do not use this in production. ❌

Ethereum uses different HD path (m/44'/60'/0'/0/0) than Cosmos (m/44'/118'/0'/0/0)

The chain itself does not care which derivation path you use. In fact it can't even know where the derived keypair is coming from. The problem you will have though is compatibility with other wallets.

You can derive addresses the "Ethereum way" and the "Cosmos way" because in both cases the addresses are just derived from the pubkey, which comes from the private key, which comes from the HD path of the mnemonic.

For simplicity reasons and avoiding confusion, TAILWIND will just return the Ethereum path public key for users. I think it's pretty stress-inducing when you import the same keys and the addresses don't match.
Although for Dapps (as opposed to wallets), getting the Ethereum key from Cosmos key would presumably be easier.
Thanks @webmaster128 @codebycarson for the clarification. One more question: "The chain does not care about HD Path." Is this true for Ethereum as well or is it just Cosmos SDK chains?

It's the same for both Ethereum and Cosmos. You don't need to use HD derivation at all and can just have a raw private and public secp256k1 key.
mnemonic + HD path  ----->  private key  ----->  public key  ------>  address
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
client-side only (invisible to the chain)

then I assume that would not be the same for two different HD paths from the same mnemonic

Two paths just give you two different private keys, two different public keys, two different addresses. So completely independent accounts from the perspective of the chain.


Kindly add the new install process(Forestry CMS)

Hi, how are you?
Is this theme maintained?
Kindly add Forestry CMS

hey there, we are adding CMS to all our theme step by step, if you need it urgently then you can contact us at<EMAIL_ADDRESS>for paid support. thanks


Search for employee by name is prone to error

Searching for an employee by name does not fully work and throws error (sometimes?). More testing required.

Search by name is now removed until a later release.