builder.rimraf is not a function

Describe the bug
I upgraded from .22 to .24 and got this regression:
> Using @sveltejs/adapter-static
> builder.rimraf is not a function
TypeError: builder.rimraf is not a function
    at adapt (file:///Users/pavel/projects/test222/node_modules/@sveltejs/adapter-static/index.js:15:12)
    at adapt (file:///Users/pavel/projects/test222/node_modules/@sveltejs/kit/dist/chunks/index4.js:393:8)
    at file:///Users/pavel/projects/test222/node_modules/@sveltejs/kit/dist/cli.js:896:11

I see that there were some changes around that 9 https://github.com/sveltejs/kit/commit/ecb423b54d459be8c0693c723799be4171369afd#diff-f3af5914d90b42d7d1ab55f490a7a72f62616570e6f48e58ae1567f8f845260c ) so i decided to report bug.
Thanks for all your great work :)
Edit
On second thought im not sure it is static-adapter fault. Im trying my best to make it work again, and even on .22 it does not. Which means it might be something else.
Reproduction
Clone https://github.com/EinLinuus/sveltekit-tailwindcss-template
Change adapter to static
npm run build
Logs
No response
System Info
System:
    OS: macOS 12.1
    CPU: (10) arm64 Apple M1 Pro
    Memory: 76.98 MB / 16.00 GB
    Shell: 5.8 - /bin/zsh
  Binaries:
    Node: 14.18.1 - ~/.nvm/versions/node/v14.18.1/bin/node
    Yarn: 1.22.17 - ~/.nvm/versions/node/v14.18.1/bin/yarn
    npm: 8.1.4 - ~/.nvm/versions/node/v14.18.1/bin/npm
  Browsers:
    Chrome: 96.0.4664.110
    Firefox: 95.0.2
    Safari: 15.2
  npmPackages:
    @sveltejs/adapter-auto: next => 1.0.0-next.3
    @sveltejs/adapter-static: ^1.0.0-next.24 => 1.0.0-next.24
    @sveltejs/kit: next => 1.0.0-next.201
    svelte: ^3.44.0 => 3.44.2

Severity
blocking all usage of SvelteKit
Additional Information
No response

Are you using the latest version of both @sveltejs/adapter-static and @sveltejs/kit?

I dont know, i pasted system info according to issue guidelines, so you can verify that.

For me, the error was solved when updating @sveltejs/kit to v1.0.0-next.208.

I'm running into the exact same issue. I used console.log(builder) and I believe @pavelloz is correct, there's a regression in adapter-static.  I made the following diff:
$ git diff

packages/adapter-static/index.js
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

─────────────────────────────────────────────────────────────────────────────────────┐
12: export default function ({ pages = 'build', assets = pages, fallback, precompres │
─────────────────────────────────────────────────────────────────────────────────────┘
│ 12 │        name: '@sveltejs/adapter-static',                                                                                │ 12 │        name: '@sveltejs/adapter-static',
│ 13 │                                                                                │ 13 │
│ 14 │        async adapt(builder) {                                                                                │ 14 │        async adapt(builder) {
│    │                                                                                │ 15 │            console.log(builder)
│ 15 │            builder.rimraf(assets);                                                                                │ 16 │            builder.rimraf(assets);
│ 16 │            builder.rimraf(pages);                                                                                │ 17 │            builder.rimraf(pages);
│ 17 │                                                                                │ 18 │

and this is the output when running npm run build:
{
  utils: {
    log: [Function: log] {
      success: [Function (anonymous)],
      error: [Function (anonymous)],
      warn: [Function (anonymous)],
      minor: [Function: noop],
      info: [Function: noop]
    },
    rimraf: [Function: rimraf],
    mkdirp: [Function: mkdirp],
    copy: [Function: copy],
    copy_client_files: [Function: copy_client_files],
    copy_server_files: [Function: copy_server_files],
    copy_static_files: [Function: copy_static_files],
    prerender: [AsyncFunction: prerender]
  },
  config: {
    preprocess: {
      defaultLanguages: [Object],
      markup: [AsyncFunction: markup],
      script: [AsyncFunction: script],
      style: [AsyncFunction: style]
    },
    extensions: [ '.svelte' ],
    kit: {
      adapter: [Object],
      amp: false,
      appDir: '_app',
      files: [Object],
      floc: false,
      host: null,
      hostHeader: null,
      hydrate: true,
      package: [Object],
      paths: [Object],
      prerender: [Object],
      router: true,
      serviceWorker: [Object],
      ssr: true,
      target: '#svelte',
      trailingSlash: 'never',
      vite: [Function: input]
    }
  }
}

The builder object has utils that needs to be used in this function.

You're not on the latest version of @sveltejs/kit, which is currently 1.0.0-next.208. There were coordinated breaking changes in Kit and in the adapters which were released at the same time.
I can't reproduce this on the skeleton app with the latest Kit and adapter-static.

@Conduitry im on 208 and this error still persists 🙁

I had to delete my node_modules folder and reinstall everything, and then it all worked. Joys of living on the bleeding edge :)

Running into it with adapter-netlify next.37 and kit next.216, it builds and previews fine locally but fails on deploy.
I should note that locally I'm building with Vite v2.7.10, however netlify seems to want to use Vite v2.6.13, prefixing the build command with a ci doesn't help

I had to delete my node_modules folder and reinstall everything, and then it all worked. Joys of living on the bleeding edge :)

This worked for me. I also had to update my kit config and add placeholder pages for broken links.


Globus

Discuss how the TERRAref team can use Globus and what we want to learn from Stu Martin.

Globus Share feature - we probably know enough
Publication and sharing system. May or may not be production ready.
What can Stu offer? Start with JD's architecture diagram.

Duplicated by #53


DOCS-9989 update to upgrade

DOCS-9989 update to upgrade

Mysti pointed out while reviewing another PR that ACM seems to use "update" but other platform components use "upgrade", and ACM really should be made consistent.


Concerns about cache.addAll not filtering non-200

AppCache, despite all of its flaws, guaranteed all resources transactionally cached had a status of 200.
For security reasons, cache.addAll can't give us these guarantees. Yet they-re critical to enable offline apps. Here are my concerns:
scenario 1: dev isn't aware cache.addAll accepts responses with a status other than 200
Consequence: Dev uses cache.addAll expecting all resources to be fully operational on a successful outcome of cache.addAll. Yet sometimes offline apps which have reported a fully successful install fail for odd and hard to debug reasons. Dev ends up finding out cache.addAll isn't really transactional to the extent he expected it to be, vows to never use it again, blames W3C for all the things and moves to native.
scenario 2: dev is aware cache.addAll accepts all kinds of responses
Consequence: "That's OK, he thinks, I'll build a transactional function using fetch, put and promise.all that works as expected." He then spends most of his days on Stackoverflow answering the questions of scenario 1 devs which don't understand why cache.addAll doesn't behave as expected; Writes a moderately successful library to fix SW issues; Gives a talk entitled "Service Workers are douchebags" and gets sued by the United Service Workers Union; blames W3C for all the things and moves to native.
Proposed solutions:

remove cache.add and cache.addAll completely,
Make filtering for a response status of 200 the default, throw on non-cors cross-origin request unless an allowNonCors option is present.
add a filter option to cache.addAll which is called with each request as first argument and allows to cancel the transaction (e.g. by throwing or returning false).

@wanderview how do you feel about:
cache.addAll(urls, {
  ensureOk: true
});

…that would fail if any response is opaque or response.ok is false for any response?
There's probably a better name for it.

@jakearchibald it seems if anything such a feature should be added to Request, not here.

@annevk this seems like something saying "the result of request needs to be X", which is more a function of the Response consumer than the Request itself.
@jakearchibald thats fine with me.  I don't really have a strong opinion one way or another.  Whatever is nicest for devs.  (Sorry, that isn't very helpful.)

@wanderview how can it be a property of the response? Isn't what you want here the semantics of give a me a response that meets these conditions or a network error? That's the kind of thing Request does all the time.

@annevk I guess I looked at this as filtering of cache.put(req, resp).  This is about putting in, not getting out of cache.
Anyway, I don't really care one way or the other.  I'll let you two cage match over it. :-)

Well addAll() first does a network fetch and you're placing conditions on the return value. If the condition is a non-match, you treat it identical to how you'd treat a network error. I don't really see how that does not make it a Request concern.

Hmm, having it on request would avoid the…
fetch(url).then(response => {
  if (!response.ok) throw Error("NAH");
  // etc
})

…boilerplate. It would make the cache code:
cache.addAll(
  urls.map(u => new Request(u, {ensureOk: true}))
);

…which is a bit more verbose, but it would allow:
cache.addAll([
  '/hello/',
  '/world/',
  new Request('//other-origin/blah.txt', {mode: 'no-cors'})
].map(request => {
  if (request instanceof Request) return request;
  return new Request(url, {ensureOk: true});
}));

…meaning you could mix ensureOk requests with others.

Moving to https://github.com/whatwg/fetch/issues/103


[#28] Create a Subcommand class that can hold multiple subcommands

Hi @JRbemt, would you like to review ? I don't know if you have time. If not I will merge the Pull request in the coming days


Node and Golang support

Are there any plans to support Node and Go languages? I know that we can use REST but would be more convenient to use official provided libraries.

This would be fantastic to see, NodeJs especially 🚀

This would be fantastic to see, NodeJs especially 🚀


Running build.fsx in FSI, a workaround

Description
I want to run some of the code in the build.fsx in the FSI. This is very handy to check the helper functions and figure out what they do.
Repro steps
NA
Expected behavior
NA
Actual behavior
NA
Known workarounds
I have modified the header of the build.fsx somewhat:
#if FAKE
#load ".fake/build.fsx/intellisense.fsx"
#endif

#if !FAKE
#load ".paket/load/netstandard2.1/Build/build.group.fsx"
#if !INTERACTIVE
#r "Facades/netstandard"
#endif
#r "netstandard"
#endif

#load "docsTool/CLI.fs"

This setup assumes that you run:
dotnet tool restore and
dotnet paket generate-load-scripts
There are 2 caveats do:

VS code crashes when changing the build.fsx this way
It works wel in VS2019, however, the build.group.fsx references Mono.Posix.dll which cannot be found on a non mono windows machine. So I manually comment out that reference in the build.group.fsx.

But then it works quite well. I don't know whether there is a better way to achieve this?
Related information

Operating system
Branch
.NET Runtime, CoreCLR or Mono Version
Performance information, links to performance testing scripts

Sorry wrong repository


Cannot add image source

Describe the bug
A clear and concise description of what the bug is.
Cannot add image source, always results in "unable to load selected file".
To Reproduce
Steps to reproduce the behavior:
1.Open EOCV sim
2. drag a png or jpeg image to the image source tab
or
2. select create
a. select image
b. select image from computer and select open
Expected behavior
The image does not add, and results in "unable to load selected file"
Screenshots

Desktop (please complete the following information):

OS: Windows 11
EOCV-Sim Version 3.8.3

Additional context
I have tried camera and video also, but those work fine.

Hi ! Thank you for reporting the issue, do you think you can, first of all, reproduce the issue by trying to import an image, then going to Help -> Export logs and send the logs file?
Also, just to make sure, are you able to open the image using windows?

HI! I can open every single image I tried using windows. Here is the log:
crashreport-eocvsim-2024_12_05-10.25.08.log

Hmmm, I can't catch anything wrong in the logs. Let's check two things;

Are you able to load the default image sources properly (e.g when you select Ultimate Goal 0 Ring, does it display properly?)
Do you think you could attach the image you're trying to use so that i might try to reproduce the issue on my end?

I can load all the default image sources properly. Here are some of the images:

I just dragged the images that I sent from github and pasted into the sources and it works fine. I think it was a problem with the images or the folders storing it somehow. Thank you


Do not raise RSpec/MultipleExpectations when using "ordered" message matchers

When you need to test for the order of certain messages, rspec has the ordered matcher modifier.
However, using this feature kinda forces you to have multiple expectations in a single test case, which triggers the RSpec/MultipleExpectations cop.
Is it possible to make this cop aware of this case? Disabling it around the case kinda feels like a work-around, to be honest.
I'll add an example when I have some time and if the issue proves interesting.

You can mark the example with aggregate_failures instead of disabling the cop - if this workaround seems better to you.
As for the ordered, I hesitate to handle it in the cop, as using ordered is not a recommended anyway.

This is not generally recommended because in most situations the order doesn't matter and using
ordered would make your spec brittle,

Yeah, that's what I thought.
Also, I didn't know about the aggregate failure, thanks for pointing it out!


Gridcoin Wallet Crashes after trying to sync with the Neural Net

As instructed, to sync the Neural net I am executing "execute syncdpor2", and then I open the Neural Net.
It begins the sync, and than towards the end of a progress bar, it crashes displaying this:
Problem signature:
Problem Event Name:	CLR20r3
Problem Signature 01:	gridcoinresearch.exe
Problem Signature 02:	<IP_ADDRESS>
Problem Signature 03:	57b09132
Problem Signature 04:	GRCSec
Problem Signature 05:	<IP_ADDRESS>
Problem Signature 06:	57939c9a
Problem Signature 07:	59
Problem Signature 08:	81
Problem Signature 09:	System.IO.FileNotFoundException
OS Version:	6.1.76<IP_ADDRESS>.256.1
Locale ID:	1033
Additional Information 1:	0a9e
Additional Information 2:	0a9e372d3b4ad19135b953a78882e789
Additional Information 3:	0a9e
Additional Information 4:	0a9e372d3b4ad19135b953a78882e789
Read our privacy statement online:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409
If the online privacy statement is not available, please read our privacy statement offline:
C:\Windows\system32\en-US\erofflps.txt
I am using win7 installed on Virtual Box.  There is some kind of a file missing. I will try playing around with the config but I doubt that it is a cause.

Hi thanks for posting this.  We do have a file handler around the file operations and that usually results in something being written to the "debug2.log".  But in this case googling the problem most point to something wrong in the .net 4.5 framework.  Can you please try reinstalling framework 4.5 in the VM, just to see if that fixes it?  Then rerun the execute syncdpor2?
Thanks, Rob

I am now trying to setup the Visual Studio and reinstall the .NET to see if I get rid of an error by doing so.

Here is what I think the error is, according to a debug2.log.
It is trying to get the C:\Users\damir\AppData\Roaming\gridcoinresearch\NeuralNetwork\projects*.dat
The files in that folder begin with project, so additional s could be a typo.
I still have to verify the .NET, and then will write a full report.

OK I have reinstalled the .NET and installed Visual C++ 2012, and it solved the issue.  Everything is in sync.


Use parallel GC

I've been running this locally now for two days without any problems, so I think it works good. Have also run this PR through CI 3 times without a hitch.


searchbst.cpp added

Searches element in Binary Search Tree
@arin2002 please check it out

Hey what is this label error?
Even I am getting the same.


App Service limits - 500GB or 1TB for isolated?

In the App Service limits section there's a table with 1TB storage limit for Isolated tier.
However, the 5 reference says that:

The total content size of all apps across all App service plans in a single resource group and region cannot exceed 500 GB.

Is it valid? If so what can be remaining 500GB used for?

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

ID: 36f49a06-90b1-cbe1-3853-2c38277b79f8
Version Independent ID: 02ff6f6c-3ef6-b48f-060d-b290419e0aba
Content: Azure subscription limits and quotas - Azure Resource Manager
Content Source: articles/azure-resource-manager/management/azure-subscription-service-limits.md
Service: azure-resource-manager
Sub-service: management
GitHub Login: @tfitzmac
Microsoft Alias: tomfitz

@Rashair - I believe the difference is that the app could be created in a different resource group and therefore not part of the 500 GB limit for a single resource group and region.
@msangapu-msft can confirm if that in interpretation is correct.

Hi @rashair The limit is total storage usage across all apps deployed in a single Isolated tier (ASE) (regardless of how they are allocated across different resource groups) is 1 TB. I see how the footnote is confusing so I'll get that updated.


Improve UI

Add a cool  Box shadow and make it look more professional with gradient effect.

Can you assign me... you .won't regret!!

Hi !
What would you like to add ?

A box around the add task ...let give it a try , I am unable to explain but it would look good for sure.


Prevent IP leak. WebRTC

I have installed TOR in my server, and using it as proxy server for puppeteer. It is running on port 9060
// Dependencies
const puppeteer = require('puppeteer');
const fs = require('fs');
const request = require('request');

const USER_AGENTS = [
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0'
];

const SS_PATH = '/var/www/storage/app/public/images/';

// Variables
let page = null;

let response = {success: true, screenshot: null, message: null};

async function register()
{

    try
    {

        const extensionPath = 'extensions/webrtc';

        await puppeteer.launch({ userDataDir: './cache', slowMo: 10, headless: true, args:[
            `--disable-extensions-except=${extensionPath}`,
            `--load-extension=${extensionPath}`,
            '--lang=en-US,en',
            '--no-sandbox',
            '--disable-setuid-sandbox',
            '--disable-infobars',
            '--proxy-server=socks5://<IP_ADDRESS>:9060'],
            ignoreHTTPSErrors: true, dumpio: false
        }).then(async browser => {

            await createTab(browser);

            await page.evaluateOnNewDocument(() => {
                chrome.privacy.network.webRTCIPHandlingPolicy.set({
                    value: "default_public_interface_only"
                });
            });

            await page.goto('https://www.expressvpn.com/webrtc-leak-test');

            await page.waitFor(20000);

            let screenshotName5 = `ipleak${Date.now()}.jpg`;
            response.screenshot = screenshotName5;
            await takeScreenshot(screenshotName5, page);

            process.exit();
            await browser.close();

        });

    } catch(err) {

        console.log(err);

    }

}

register().then(function()
{

    console.log(JSON.stringify(response));
    process.exit();

});

// Creates new tab
async function createTab(browser)
{

	page = await browser.newPage();
	page.on('error', err=> {});
    page.on('pageerror', err=> {});

    await page.deleteCookie(...cookies);
    await page._client.send('Network.clearBrowserCookies');
    await page.setViewport({
        width: 1920,
        height: 1080
    });
    await page.setUserAgent(
        USER_AGENTS[Math.floor(Math.random()*USER_AGENTS.length)]
    );
    await page.setExtraHTTPHeaders({
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/png,*/*;q=0.8',
        'Accept-Encoding': 'gzip, deflate, br',
        'Accept-Language': 'en;q=0.9',
        'Connection': 'keep-alive'
    });

}

// Takes screenshot
async function takeScreenshot(name, page)
{

    let options = {
        path: SS_PATH+'/'+name,
        fullPage: true
    }
    await page.screenshot(options);

}

Tell us about your environment:

Puppeteer version: 1.13 (I guess, I installed newest version a month ago)
Platform / OS version: Ubuntu 18.04
URLs (if applicable):
Node.js version: v10.11.0

What is the expected result?
See that my public sever's IP is not leaking.
What happens instead?
I see this:

Even tough I am using TOR, i see that my real IP address is leaking through WebRTC.
Im sure that TOR proxy is working cause puppeteer works fine and if I go to whatismyip.com I see a different IP addres than mine's.
As you can see I tried to use this:
https://github.com/GoogleChrome/puppeteer/issues/2878
as a solution, but it didn't help. (I assume extension works fine, cause I get no errors while running the code).
So my question is, how can I disable WebRTC so it won't leak my public IP address?

I noticed that headless mode does not support extensions. At least that was 9 months ago, is there any improvement in this? If not, is there any way to prevent leaking IP address through webrtc without extension? Thank you.

Have you tried --load-extension argument to load an extension?
Maybe it lets you run the one you wanted

(I assume extension works fine, cause I get no errors while running the code).

@dudeperfect95 as you noticed later, headless doesn't support extensions and probably won't in a foreseeable future. You can run headful though - it should solve the issue.

If not, is there any way to prevent leaking IP address through webrtc without extension?

This I'm not sure about. What's the extension and what does it do?

I used headless: false and it works fine. Extension is webrtc disabler. Cant find exact link where did I get it. I have another question, if I want to load more than one extension, how should I declare path?
I have such folder tree:
root/
extensions/
webrtc
another
const extensionPath = 'extensions/webrtc';

    await puppeteer.launch({
        slowMo: 10,
        headless: false,
        args:[
            `--disable-extensions-except=${extensionPath}`,
            `--load-extension=${extensionPath}`,

... trimmed
This code works fine, but If I want to add another extension, what should I do? If I change extension path to /extensions/ none of them works.

@dudeperfect95 you can pass a comma-separated list of paths for both --disable-extensions-except and --load-extension flags.

Blocking all outgoing UDP traffic except DNS can help in headless mode.

Another way to do it:
await page.evaluateOnNewDocument(
        `navigator.mediaDevices.getUserMedia = navigator.webkitGetUserMedia = navigator.mozGetUserMedia = navigator.getUserMedia = webkitRTCPeerConnection = RTCPeerConnection = MediaStreamTrack = undefined;`
      );

@ediweissmann   I used your solution but its not helping . some how my local ip is being exposed

Another way to do it:
await page.evaluateOnNewDocument(
        `navigator.mediaDevices.getUserMedia = navigator.webkitGetUserMedia = navigator.mozGetUserMedia = navigator.getUserMedia = webkitRTCPeerConnection = RTCPeerConnection = MediaStreamTrack = undefined;`
      );

Doesn't work

Another way to do it:
await page.evaluateOnNewDocument(
        `navigator.mediaDevices.getUserMedia = navigator.webkitGetUserMedia = navigator.mozGetUserMedia = navigator.getUserMedia = webkitRTCPeerConnection = RTCPeerConnection = MediaStreamTrack = undefined;`
      );

It works. Thanks

the example for evaluateOnNewDocument didn't work for me
but this works for me (if you don't mind disabling rtc):
Object.defineProperty(window, 'RTCPeerConnection', {
  get: () => {
    return {};
  },
});
Object.defineProperty(window, 'RTCDataChannel', {
  get: () => {
    return {};
  },
});

With new headless puppeteer + proxies I am not able to hide IP address. Any suggestions? I tested on pixelscan but it shows location is being spoofed or IP adddress leaked on webrtc test page.

await page.evaluateOnNewDocument(
navigator.mediaDevices.getUserMedia = navigator.webkitGetUserMedia = navigator.mozGetUserMedia = navigator.getUserMedia = webkitRTCPeerConnection = RTCPeerConnection = MediaStreamTrack = undefined;
);

Thanks it worked with latest new headless puppeteer

Another way to do it:
await page.evaluateOnNewDocument(
        `navigator.mediaDevices.getUserMedia = navigator.webkitGetUserMedia = navigator.mozGetUserMedia = navigator.getUserMedia = webkitRTCPeerConnection = RTCPeerConnection = MediaStreamTrack = undefined;`
      );

It works for me


TimePicker style missing

Currently I do not see a style for the TimePicker. Has this been lost? DatePicker works without any problems at this point.
v<IP_ADDRESS>-nightly

Hi! @dojo90
I'm planning to update the dialog package. Please use older package, if you need TimePicker at this moment.
The new TimePicker and DatePicker style will be available in 3.0 stable release

TimePicker included in 3.0.0 package.


⚠ Thumbnails API Endpoint has degraded performance

In 08b0bbf, Thumbnails API Endpoint (https://thumbnails.roblox.com/v1/assets?assetIds=82738847&format=Png&isCircular=false&size=30x30) experienced degraded performance:

HTTP code: 200
Response time: 1109 ms

Resolved: Thumbnails API Endpoint performance has improved in dc2df0d after 3 minutes.


Problem with UML diagram in Visual Studio Code

When I trying to click in preview nothing can be seen and in the extension appear a warning saying "Write EPIPE". But when I try the same thing in the container, it's work fine.

Hi @EmilyRoldan ,
It looks like good behavior since the Docker image was created to ease the process of configuring an environment. As lons as it is running within the Docker environment, everything is ok.


Dependencies

Checklist

[ x ] Used a personal fork of the feedstock to propose changes
[ x ] Bumped the build number (if the version is unchanged)
[ x ] Reset the build number to 0 (if the version changed)
[ x ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ x ] Ensured the license file is being packaged.

I'm not sure I understand the python version here. Is this the required version for the package, or this is just the package version of the recipe?


Extension - Emoji Genrator

Description
This is a random emoji generator extension, it generates random emojis when the user hovers over the emoji, i have utilized apt ux and transformation accordingly.
Fixes:  #691

Type of change
New extension

[x] New feature (non-breaking change which adds functionality)
[ ] This change requires a documentation update

Checklist:

[x] I have made this from my own
[x] I have taken help from some online resourses
[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings

ATTACH SCREEN-SHOTS / DEPLOYMENT LINK

Did you received 150+ points from here? @Niyatizzz

Did you received 150+ points from here? @Niyatizzz

No, I have contributed to one level1 and one level2, less than 150


Crash with InputText with null string

Hi,
using (in example) ImGuiCli.InputText ("Name",ref objName); , being objName null crashes trying to copy the string. I suppose it would be better to throw an exception when this happens, otherwise a very scary error message about memory protection appears :)
(being c# and the string passed as a ref, I suppose the best way to react would be to maintain the string as null, until a key is typed, then creating a brand new string, but I'm not up to date of the internals of the lib, so I don't know if this is possible)

Another issue with InputText. Strings do weird things. In example, I have 2 objects with a name. In example, 'near' and 'far'
When I switch between those objects the name changes ok with near, but instead of far prints farr. I think the final (\0) is not being copied in CopyStrBuff
->  memcpy(target, linkStr, strlen(linkStr)+1);

Both of these are fixed now.

Closing now, haven't noticed anything else with strings.

Just hit me, you probably have unmanaged code debugging turned off in your project - that's probably why the exception was of the uselessly terrifying variety. Not worth turning it on unless you're fiddling in the guts of the wrapper.
I'm mulling over exception raising, leaning towards keeping the API tolerant of garbage in (it's GUI, you're going to see garbage if you put it in).

sorry for the delay, I took a break.
Yes, it's possible that the problem came from the unmanaged code debugging, as I switched it on in order to find the error. I probably didn't switch it off again.


Fix update of flags from the environment

Summary

Refs https://github.com/TheThingsNetwork/lorawan-stack-migrate/pull/112#discussion_r1519974219
Changes

For the ChirpStack, Wanesy and Firefly sources, make sure that env is used only when set.
Refactor the tts config to match other sources and don't print defaults to the env.

Testing

TTS
Check that secrets are not printed.
./main tts device --help
Export devices by Device ID

Usage:
  ttn-lw-migrate tts device ... [flags]

Aliases:
  device, end-devices, end-device, devices, devs, dev, d

Flags:
      --app-api-key string                       TTS Application Access Key (with 'devices' permissions)
      --app-id string                            TTS Application ID
      --application-server-grpc-address string   TTS Application Server GRPC Address
      --ca-file string                           TTS Path to a CA file (optional)
      --default-grpc-address string              TTS default GRPC Address (optional)
      --delete-source-device                     TTS delete exported devices
  -h, --help                                     help for device
      --identity-server-grpc-address string      TTS Identity Server GRPC Address
      --insecure                                 TTS allow TCP connection
      --join-server-grpc-address string          TTS Join Server GRPC Address
      --network-server-grpc-address string       TTS Network Server GRPC Address
      --no-session                               TTS export devices without session

Global Flags:
      --dev-id-prefix string         (optional) value to be prefixed to the resulting device IDs
      --dry-run                      Do everything except resetting root and session keys of exported devices
      --frequency-plans-url string   URL for fetching frequency plans (default "https://raw.githubusercontent.com/TheThingsNetwork/lorawan-frequency-plans/master")
      --verbose                      Verbose output

Others
Check that env is only used when set.
./main chirpstack device 0004a30b001bc8a7 --dry-run --api-key test --api-url localhost:8081
Error: connection error: desc = "transport: error while dialing: dial tcp <IP_ADDRESS>:8081: connect: connection refused"
connection error: desc = "transport: error while dialing: dial tcp <IP_ADDRESS>:8081: connect: connection refused"
    correlation_id=0fad85a72890410c82abb6964662db80

export CHIRPSTACK_API_URL="localhost:8080"

./main chirpstack device 0004a30b001bc8a7 --dry-run --api-key test --api-url localhost:8081
Error: connection error: desc = "transport: error while dialing: dial tcp <IP_ADDRESS>:8080: connect: connection refused"
connection error: desc = "transport: error while dialing: dial tcp <IP_ADDRESS>:8080: connect: connection refused"
    correlation_id=0fad85a72890410c82abb6964662db80

Regressions

Tested export using the tts source.
./main tts device 'test-device-ade' --dry-run
{"ids":{"device_id":"test-device-ade","application_ids":{"application_id":"sec"},"dev_eui":"70B3D57ED8002A47","join_eui":"AFBAD1928EEE2938"},"created_at":"2024-03-13T10:46:57.421090786Z","updated_at":"2024-03-13T10:46:57.421090786Z","version_ids":{"brand_id":"adeunis","model_id":"analog","hardware_version":"1.04","firmware_version":"1.03","band_id":"EU_863_870"},"lorawan_version":"MAC_V1_0_2","lorawan_phy_version":"PHY_V1_0_2_REV_A","frequency_plan_id":"EU_863_870_TTN","supports_join":true,"root_keys":{"app_key":{"key":"8B9C4D0EE0AF31371BBDEFAAA14F2A63"}},"mac_settings":{"supports_32_bit_f_cnt":true},"formatters":{"up_formatter":"FORMATTER_REPOSITORY","down_formatter":"FORMATTER_REPOSITORY"}}

Haven't tested ttnv2 since that's not so easy.

Checklist

[x] Scope: The referenced issue is addressed, there are no unrelated changes.
[ ] Documentation: Relevant documentation is added or updated.
[x] Changelog: Significant features, behavior changes, deprecations and fixes are added to CHANGELOG.md.

Ok for some reason I always thought that it's a general convention that env takes preference over flags, but that's not the case: https://github.com/spf13/viper#why-viper

The environment variables should be used as defaults for the flags

I don't really see the reason or value in this. These are not really defaults. It's just echoing the value set.

I don't really see the reason or value in this. These are not really defaults. It's just echoing the value set.

The reason is that we don't need for each individual flag manual code that says 'if flag is empty, check environment variable'. Since we don't use viper here, for every single flag we would need to code this by hand, which is unnecessary if we use the defaults.

Ok cool. I don't have an argument against it.


Test multiple Python versions

Closes #1017
Code Changes

[x] use pyenv in the Dockerfile to install multiple versions of python
[x] bump Docker python version to 3.10 to take advantage of performance improvements
[ ] update the nox commands to matrix the python versions for each test run

Steps to Confirm

[ ] list any manual steps taken to confirm the changes

Pre-Merge Checklist

[ ] All CI Pipelines Succeeded
Documentation Updated:

[ ] documentation complete, or draft/outline provided (tag docs-team to complete/review on this branch)
[ ] documentation issue created (tag docs-team to complete issue separately)

[ ] Issue Requirements are Met
[ ] Relevant Follow-Up Issues Created
[ ] Update CHANGELOG.md

Description Of Changes
We want to expand our official support for both newer and older versions of Python by formally testing multiple versions in CI.
Python 3.8, 3.9 and 3.10 will be our officially supported versions, and we can add 3.11 so that list when it comes out and we can test it. 3.7 is unable to be included due to some important requirements being incompatible.

@sanders41 curious to get your thoughts here....
This definitely works, but also feels bad. Installing 3 separate versions of Python as well as all of their dependencies seems extremely inefficient and definitely bloats the image.
The other option, passing in different python versions as a build arg to docker, is better for the overall image but leads to a lot more building in CI (building 3 images as opposed to 1)
I'm thinking the alternative might be better here, especially considering we're mostly shipping this to customers as a container and therefore the size/complexity of the container could have a noticeable effect. Passing in the Python version as a build arg seems like the best bet here, as this current method just feels too messy and bloated. Higher CI costs seems probably negligible as long as we keep everything parallelized so the CI process doesn't slow down any more

I agree. As an end user I would much rather have the smaller image.

@sanders41 mypy is broken on 3.10.7 (in the git history you can see I started with 3.10.7 and I moved to 3.10.6 to fix the issue, it's a known issue)
I guess only other option is to run mypy as a separate version, but then inside the container we can't run mypy with the default version. How serious is that vulnerability?

It is a DoS vulnerability when converting large integers to/from strings. I think it is unlikely unless someone purposefully tries to DoS the server this way (which could happen).
The numpy error only happens when running agains tests so one fix could be to temporarily run mypy src instead of mypy . since types in tests don't matter as much.
Hopefully there is a "proper" fix soon form mypy making it a non-issue (looks like they are hoping to include a fix in the next release). For now I'll let you decide which direction you would rather go.

It is a DoS vulnerability when converting large integers to/from strings. I think it is unlikely unless someone purposefully tries to DoS the server this way (which could happen).
The numpy error only happens when running agains tests so one fix could be to temporarily run mypy src instead of mypy . since types in tests don't matter as much.
Hopefully there is a "proper" fix soon form mypy making it a non-issue (looks like they are hoping to include a fix in the next release). For now I'll let you decide which direction you would rather go.

I got the error when running mypy on src actually
It looks like there is a new release about every month, how about we set a reminder to check for new mypy versions/python 3.8 and update it then? I'm sure this is high-priority for them

Interesting, I didn't get the error on src. Either way your suggestion sounds good.


Requesting implementation of scipy.stats.chi2.ppf

It would be very helpful if there was an implementation of the ppf function for chi squared. I think it has broader interest as well, as it is commonly used in generating Gaussian confidence intervals.

@jakevdp @shoyer @mattjj @hawkinsp @froystig in case any of y'all are interested (I'm not sure how to triage this lol)

@sharadmv @brianwa84 is this available in TFP?
@dieterichlawson you can use TFP with JAX, without even having TF installed. IIUC there are a lot of super high-quality special function implementations available that way. (And it's great to hear from you!)

Yes, we have tfd.Chi2.quantile. Here's a small example:
from jax import jit, vmap
import jax.numpy as jnp
from tensorflow_probability.substrates import jax as tfp
import matplotlib.pyplot as plt

tfd = tfp.distributions

x = jnp.linspace(0, 1, 100)
plt.plot(x, vmap(jit(tfd.Chi2(4.).quantile))(x))

which produces:

Documentation for Chi2 can be found here.

Awesome, thanks everyone! I honestly should have thought of this, I'm
already using the TFP Jax substrate... And it's great to hear from you too,
Matt!
On Fri, Mar 12, 2021 at 11:29 AM Sharad Vikram @.***>
wrote:

Yes, we have tfd.Chi2.quantile. Here's a small example:
from jax import jit, vmapimport jax.numpy as jnpfrom tensorflow_probability.substrates import jax as tfpimport matplotlib.pyplot as plt
tfd = tfp.distributions
x = jnp.linspace(0, 1, 100)plt.plot(x, vmap(jit(tfd.Chi2(4.).quantile))(x))
which produces:
[image: image]
https://user-images.githubusercontent.com/1142926/110988957-0fae2900-8326-11eb-8828-62dd41aa80cb.png
Documentation for Chi2 can be found here
https://www.tensorflow.org/probability/api_docs/python/tfp/distributions/Chi2
.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/google/jax/issues/6016#issuecomment-797704930, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AABD74AFWO4SCA4WV5PWTWTTDJMQ5ANCNFSM4Y67S5AQ
.

@mattjj would JAX folks be up for a little stub inside scipy.stats that tries importing tensorflow_probability.substrates.jax and if available implements the TFP-supported bits of the scipy API?


Mouse-up outside of the distribute wizard dismisses the wizard

Describe the solution you'd like
This is a small, niggly annoyance when doing manual distributions
When distributing a build and stepping through the wizard, quite often on step # 2 (Notes) I will highlight the pre-filled commit notes and replace them with a list of changes. When highlighting, it is common to drag from the right-to-left and release the mouse button. However since the edge of the modal is so close to the start of the text, I often release the mouse button outside of the modal, which triggers the dismissal of the whole distribution wizard, losing all changes.
Solution would be to not have the dismissal trigger when mouse-up occurs.
Describe alternatives you've considered
Changes made during the distribution wizard could be saved as a draft if leaving the wizard.
Additional context

Thanks for the feature request! :) We've heard this feedback before and I will definitely discuss this with the design team in our upcoming UX improvement session.


Correct nilable variable type inference after exception handler

Fixed #4723
Old implementation loses variable's nil_if_read flag after exception handler, so scope variables (i.e. meta vars) type inference is broken when reading such a variable after exception handler.
To need more information, see these comments in spec. Thank you.

Perfect!


Remove legacy benchmark build type

Now that we have the baseline profile gradle plugin, there is no need for a benchmark build type.
The plugin does the setup and configuration and runs against the correct app flavor.
Change-Id: I7df90c982e7a27c2fd2051ada441038ac1c76484
Thanks for submitting a pull request. Please include the following information.
What I have done and why
Include a summary of what your pull request contains, and why you have made these changes.
Fixes #<issue_number_goes_here>
Do tests pass?

[x] Run local tests on DemoDebug variant: ./gradlew testDemoDebug
[x] Check formatting: ./gradlew --init-script gradle/init.gradle.kts spotlessApply

I'm not sure we can/want to just remove the applicationIdSuffix when we have infrastructure set up around this?

I mean, it just builds and doesn't cause any realistic issues other than not having a specific benchmark build type any longer.
Also this way the configuration is easier and relying on the Gradle plugin rather than our legacy solution.


Fail to restore data from checkpoint

Hi Zhenghao,
I trained the intersection using torch copo (train_copo.py) and tried to evaluate the performance using copo_code/new_vis.py.
However, it gives unpickled = pickle.loads(data) TypeError: an integer is required (got type bytes).
I used the file that was stored in TEST/CoPOTraininger_Multi.../checkpoint_000440/algorithm_state.pkl. Did I use the wrong pkl file?
Originally posted by @XilunZhangRobo in https://github.com/decisionforce/CoPO/issues/25#issuecomment-1478694457

It has been a long time since I wish to refactor the visualization script so the user can restore checkpoint directly using RLLib utility. It's a great opportunity for me to do this now.
@XilunZhangRobo could you please shared your checkpoint folder (in .zip file) here? I will check it.


Fix perfmetrics v2.8.0

This PR fixes a newly surfaced issue with the perfmetrics diagnostics "zonal", "latlot" and "cycle" that resulted in the diagnostics getting stuck in an infinite loop (see also https://github.com/ESMValGroup/ESMValTool/issues/3076).
As it turned out, the problem was local variables used in functions defined in interface_scipts/auxiliary.ncl that had the same variable name as a loop variable in the perfmetrics diagnostics mentioned above. For reasons that are still not clear to me, a call to the function ncdf_write (which then calls ncdf_define) resulted in the variable used as loop index (ii) being overwritten in the calling procedure. As a consequence, the calling diagnostic got stuck in an infinite loop.
Declaring the variables used within the shared functions (interface_scipts/auxiliary.ncl) as "local" solved this problem.
I still do not fully understand why variables used in a function would overwrite the variables with the same name in the calling procedure when not explicitly declared as "local" variables and why this problem did not emerge earlier, but this problem is fixed with this PR. With the fix, I could (again) successfully run recipe_perfmetrics_CMIP5.yml, the output looks as expected.
Checklist
It is the responsibility of the author to make sure the pull request is ready to review. The icons indicate whether the item will be subject to the 🛠 Technical or 🧪 Scientific review.

[x] 🛠 This pull request has a descriptive title
[x] 🛠 Code is written according to the code quality guidelines
[x] 🛠 Documentation is available
[x] 🛠 Tests run successfully
[x] 🛠 The list of authors is up to date
- [ ] 🛠 Any changed dependencies have been added or removed correctly
[x] 🛠 All checks below this pull request were successful

New or updated recipe/diagnostic

[x] 🧪 Recipe runs successfully
- [ ] 🧪 Recipe is well documented
[x] 🧪 Figure(s) and data look as expected from literature
[x] 🛠 Provenance information has been added

great detective work @axel-lauer :mag: Could this perhaps be a exposing a bug in the latest build of NCL? 6.6.2 it's ben since ages, since no development being done on it, but the latest build is about two weeks old, it may be that that's the culprit?

Thanks @LisaBock for testing. It sounds quite possible, that the changes to main.ncl from #2856 could be the reason for this problem.
Declaring also the variables i, jj and idim explicitly as local doesn't hurt as it makes the code (in my opinion) a bit easier to read, so I would tend to leave that in.

fantastic work, guys and gals! Am merging this now :beer:


Create sensible issue/PR templates

if we can come up with something sensible.

Instead of doing this for every repository, we should set it up across the brainglobe org by creating a new .github repository, as explained here: https://docs.github.com/en/communities/setting-up-your-project-for-healthy-contributions/creating-a-default-community-health-file
For writing templates, https://github.com/stevemao/github-issue-templates/ seems to be a well used resource for template templates (😆), so we could probably pick ones from there and customise as needed.

Added in https://github.com/brainglobe/.github/pull/4


formatting done by vmd causes some lines to exceed character limit

I noticed that in some special cases, when vmd formats indentation for things like lists, it can make some characters exceed the character limit, ideally it should recheck the character limit after making formatting changes.
An example with gibberish latin text:
- Accumsan dis tincidunt felis vivamus senectus, erat fermentum lacinia tempor condimentum euismod habitant sed molestie velit, id cum massa sagittis in platea porta class volutpat.  Volutpat purus dui feugiat neque aliquam vehicula
   varius mattis vulputate ullamcorper, mus arcu senectus nascetur molestie cum
   venenatis et

the word vehicula surpasses the character limit in this example by 2 characters.
Not sure if this is considered important or not but I noticed it on a few examples.

Thanks, I'm looking for correctness in this tool :) I'll look into that, I might have forgotten to include the prefix in the character count? I really only eyeball tested the column wrapping.

Finally wrote these tests. Closing this, thanks again for catching that!


Android App installation cannot be completed

Description
When attempting to do an instant app installation via App Store, the screen gets stuck.
Steps to re-create

Navigate to the App Store using https://<IOTS_HOST>:9443/store.
Sign in using alex and alexuser as the username and password.
Click the Con-App-Android mobile application, and click Install.
Select Instant install, and click Yes. The screen will display two inactive buttons 'Prev' and 'Next'.

@YvonneW : When you click on instant install it shows registered devices on the server to select from. I assume (by looking at the localhost url) this is displayed since there are no registered devices in the server. This should go away as soon as you register a device.

This issue can't be reproduced. Here find the steps to re create the issue

create an admin user rob and enrolled a device to him.
sign in using rob to the publisher and created an Application by uploading apk file
publish the apk
sign in using rob to the store and click on install, then instant install
select the registerd device

I tested this on a mac and managed to recreate the issue with the steps given by me previously.

Hi Yvonne,
I tested this on my pack via the admin user and it worked for me. Maybe something went wrong when unzipping the pack. We can try again with new unzipped pack and see if you still get it.

Looks like this happens when the devices are not synched with the server. I experienced this after unregistering a device.  If operations come through to the device (meaning properly synched with server), then the registered devices should be displayed on this page.

Tested the device installation by granting admin permissions to the 'chris' user, and the issue was not there. So, looks like it's privilege issue with the 'chris' user that gets auto created when you run the mobile-qsg sample.

I compared the permission tree of user Alex in RC1 and RC2. Permissions seem to be exactly the same in both RC1 and RC2 for user Alex. Only difference was, in RC2 view-analytics permission is allowed where as in RC1 this permission does not exist.

There is also this problem in the RC3 version

This issue is no longer reproducible in the latest pack.


[view messages] Add search messages function- Backend

Add search function that will allow the user to search messages by world.
The frontend will be implement in #135

who is working on this issue?

@morbitton add a comment please

@lioramilbaum
work on it


about the code

Hello, thank you for your contribution in the VOT field and for sharing such high-quality code.
I have a question I would like to ask you. When I was reading the source code, I was not very clear about the functions in the figure below in the model. I found that there is basically this code in each of them. What is its function? Is it a parameter to initialize the model? If yes, what should I do if I want to use a previously trained model?
Thank you in advance!

@972821054 Yes, every module has an update_params method. Its function is similar to the built-in method __init__ of an object. This is to say, it's usually used to create network architecture and initialize learnable parameters. The pre-trained model weights you provided will be loaded after the execution of update_params function of all network modules.
By the way,  the design philosophy of this framework determines that we cannot directly create network architecture and initialize learnable parameters in the constructor method __init__ . Therefore, we need to use an additional function to do these things.

@fzh0917
thank you for your reply!
If I don't set the update_params function, what kind of problems will the network training produce? Such as parameters in the model?

@fzh0917 thank you for your reply! If I don't set the update_params function, what kind of problems will the network training produce? Such as parameters in the model?

Every registered module inherits a base class. Thus, it has an inherited method update_params. So, if you don't set the update_params method explicitly, the default one would be executed.

@fzh0917 Thank you very much for your reply, I've basically cleared it up and I'll close this question.


Support breaking change via prefix

BREAKING CHANGE: a commit that has a footer BREAKING CHANGE:, or appends a ! after the type/scope, introduces a breaking API change (correlating with MAJOR in Semantic Versioning). A BREAKING CHANGE can be part of commits of any type.

Ref: https://www.conventionalcommits.org/en/v1.0.0/#summary
It seems that this repo only supports the BREAKING CHANGE:  footer rather than the commit prefix!: format. Unsure if the best approach here is to set the breaking_description to the commit message if the ! is in the prefix; I imagine that could lead to some repetitive changelogs. Perhaps better to just set a breaking bool on the commit.

Commit::breaking is true if either ! is used or BREAKING CHANGE:. Commit::breaking_description returns None if there isn't an explicit breaking description so that callers can choose what they want to use for it if Commit::breaking is true.
If you have a case where Commit::breaking isn't true with !, that would be a bug and we'd need a reproduction case to move forward.

At a glance, I'm not seeing the ! check: https://github.com/crate-ci/git-conventional/blob/0b65ab644c6116fced8a59eef72f44ef09f89e8d/src/commit.rs#L46 . Will double check though...

Oh, I was mistaken, we do set breaking_description when ! is used and that is what causes let breaking to be true.
See https://github.com/crate-ci/git-conventional/blob/0b65ab644c6116fced8a59eef72f44ef09f89e8d/src/commit.rs#L38,L45

Ah there it is breaking.then(|| description). Something else must be wrong with my git pipeline, not passing the right commit message to knope. Sorry about that and thanks for your response! Closing this.


How can I get infos from matches?

Hey guys,
Basicaly I want to get infos from the matches that my own cs:go servers will do... Infos like: kills, deaths, assists, etc...
I heard about that Valve let we do a request each 60 seconds to pull those infos to my website?
Thank soo much guys!

Please ask your question in the node-csgo Gitter. There's a lot more people who watch it and we like to reserve issues for bugs within node-csgo.


New package: DaCosySheeep.FactDownloader version 1.0

[x] Have you signed the Contributor License Agreement?
[x] Have you checked that there aren't other open pull requests for the same manifest update/change?
[x] This PR only modifies one (1) manifest
[x] Have you validated your manifest locally with winget validate --manifest <path>?

[x] Does your manifest conform to the 1.5 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

Hi @DaCosySheeep,
Manual Validation ended with:

Is there an installer switch to determine the install location? Many manifests split these into user and machine scopes, so users can choose.

Hi @DaCosySheeep,
Manual Validation ended with:

Is there an installer switch to determine the install location? Many manifests split these into user and machine scopes, so users can choose.

I used inno setup compiler. So I would have to search that up.

How do I add a command line argument? /CURRENTUSER should do the trick.

When launched from File Explorer, this application launches normally. But when launched from command line, from another directory, it gives this message:

When launched from File Explorer, this application launches normally. But when launched from command line, from another directory, it gives this message:

Ideally the user is launching it from the start menu. It should work fine from there. I can't imagine any of the users trying to launch it from command line.

When will the package become available?


export sim to AUTO

I think this program would be a good linker:
http://www.warrenweckesser.net/vfgen/
it takes a simple XML document that could easily be written by dynasim, and convert to: Scilab, AUTO, GNU Scientific Library, SciPy, PyDSTool, XPP among others

This is a duplicate of Issue #5.


Reducing OST (and perhaps MDT) fragmentation

Servers resources for lustre, when filled in by Flux, can look something like this:
spec:
  allocationSets:
  - allocationSize:<PHONE_NUMBER>32
    label: ost
    storage:
    - allocationCount: 3
      name: elcap1
    - allocationCount: 1
      name: elcap2
  - allocationSize:<PHONE_NUMBER>4
    label: mdt
    storage:
    - allocationCount: 3
      name: elcap1
    - allocationCount: 1
      name: elcap2

What this gives us is 3 OSTs on elcap1 and 1 on elcap2. However, as @behlendorf noted,

For Lustre we realistically wouldn't want to ever create more than one OST or MDT per rabbit per workflow.  It's good that HPEs software supports it since it'd be nice to experiment with, but it would be an odd configuration.

However I think there is a disconnect between the way Flux allocates storage and the  the way Servers asks for the storage to be represented. At the moment Flux does not have any kind of policy to allocate equal amounts of storage from each rabbit. Flux may allocate a huge chunk of storage (let's say N bytes) from elcap1 and a much smaller amount of storage (M bytes) on elcap2 (as in the example above), with the desire of nevertheless having a single OST (and perhaps MDT) on each despite the size differences. But there is no good way for us to represent that in Servers without doing something like the above, in which we take the greatest common divisor of N and M, make that the allocationSize, and then multiply the allocationCount for each by N / GCD(N, M) and M / GCD(N,M) respectively.
@behlendorf also noted that imbalanced allocations may not be desirable, since

Lustre will do a better job of balancing their usage if [OSTs are] all close to the same capacity

So Flux may need to work on a policy to equalize the amount of storage on each rabbit node. However it might be nice if we could do something like the following:
spec:
  allocationSets:
    label: ost
    storage:
    - allocationCount: 1
      name: elcap1
      allocationSize:<PHONE_NUMBER>832
    - allocationCount: 1
      name: elcap2
      allocationSize:<PHONE_NUMBER>32

Brian has indicated to me that OSTs of unequal sizes may be devastating to performance. So perhaps the problem is really in Flux's scheduling policy. I've opened https://github.com/flux-framework/flux-coral2/issues/175.


Connection failure when listening on multiple interfaces and overriding host candidate

I admit I am not sure if this is the intended behaviour but since MultiUDPMuxDefault was introduced we had to change the way we were listening on multiple interfaces to make things work as before. So now we are passing multiple UDPMuxDefault, one per network interface/address. However, there's an issue when having multiple interfaces and at the same time overriding the host candidate through SetNAT1To1IPs().
The agent is generating the same candidate pair and any successive connection get essentially discarded in here:
https://github.com/pion/ice/blob/daacdc3598ea82ac317c2e91a15db4211349cc16/agent.go#L829-L836
This results in only the first address to be considered which can easily lead to failure (e.g. if it's the loopback device).
I am wondering if it would be feasible to have the same candidate served by potentially more than one connection/address behind at the same time, or at least until one of them actually succeeds in connecting.
@cnderrauber I understand you have been working on this kind of logic lately, wondering if you had any thoughts on this one.

If you have multiple interfaces to listen on,  don't use a single external address to call SetNAT1To1IPs, which override your candidates. And it will cause another port conflict issue like this:
You have interface IA, IB, both mapping to IC. Two clients 1 and 2.
client 1 get server candidates IC:34567(from IA), IC:45678(from IB)
client 2 get server candidates IC:34567(from IB), IC:45678(from IA), because when pion allocates port for client2, IA:45678 and IB:34567 are free to use, but when they mapped to IC, will conflict with client1's address and failed to connect.
The better way is (what we are doing now):

enumerate the interfaces you are going to use. (IA, IB, IC)
resolve external address for each interface (by public stun server) (IA -> EA, IB ->EB, IC -> EA)
SetNAT1To1IPs with mapping pair instead of a single external address, and if you have two interface resolved to same public address, only map the first one and keep the other one map to itself. SetNAT1To1IPs([]string{EA/IA, EB/IB, IC/IC})

@cnderrauber That "trick" seems to work nicely. Out of curiosity, would it be acceptable to map the first interface (e.g. IA) as EA/IA and any subsequent interface to itself (IB/IB, IC/IC, and so on)? I am thinking of a scenario where resolving the external address is not possible (e.g. blocked outgoing ports) and the user will explicitly provide a single public IP instead.

@streamer45 It will definitely work if your IA can be accessed from EA by public clients.

Very well, this was extremely helpful, thank you again. We can close this one :)


Check for previous/existing GitHub issues/module proposals

[X] I have checked for previous/existing GitHub issues/module proposals.

Check this module doesn't already exist in the module indexes

[X] I have checked for that this module doesn't already exist in the module indexes.

Bicep or Terraform?
Bicep
Module Classification?
Utility Module
Module Name
avm/utl/types/commontypes
Module Details
Internally we have implemented a shared customTypes  module that exports types so they don't have to replicated for every usage in each bicep file. We have found that this increases consistency and speeds up development as auto complete works with bicepparam files when passing inputs through to a module.
increasingly I am finding I am replicating types that are defined within the modules. It would be good if we could consume these directly within our own bicep file by importing from AVM
@export()
type nsgRulesArrayType = {
  name: string
  properties: {
    access: string
    description: string
    destinationAddressPrefix: string?
    destinationAddressPrefixes: array?
    destinationPortRange: string
    direction: string
    priority: int
    protocol: string
    sourceAddressPrefix: string?
    sourceAddressPrefixes: array?
    sourcePortRange: string
  }
}[]

import * as comTypes from 'br/commonRegistry:commontypes:0.0.1'
param defaultNsgRules comTypes.nsgRulesArrayType
param additionalNsgRules comTypes.nsgRulesArrayType

Do you want to be the owner of this module?
No
Module Owner's GitHub Username (handle)
No response
(Optional) Secondary Module Owner's GitHub Username (handle)
No response

@JWHolding, thank you for proposing this module! As this is categorized as a utility module, its approval will require a more thorough assessment. The AVM core team will get back to you soon. Thank you for your patience!

as an alternative proposal, rather than a standalone module, types could be defined in a separate file in each module definition and published separately so they can be consumed. Or the types could be marked with the export annotation so they can be consumed externally

Hey @matebarabas,
I ran a quick test for the bicep build (aka compilation of the ARM template) and here are the results:
Assuming I have a types.bicep file with several types, all declared with the export() annotation (in order to be able to import them in a separate file), then

If I import them via import * as bicepTypes from './bicepTypes.bicep' and use one of them like param test testType, then all types would find themselves in the compiled ARM template, even if I used only one
In contrast, if I import only the one via import { testType } from './bicepTypes.bicep' and use it again like param test testType, then only the one single type is part of the compiled ARM template

So far, so good. Now, regarding this issue here specifically I'm still a bit on the edge. Let's look at 2 ideas I'd like to discuss further.
One is the separate file you suggested @JWHolding. From a module perspective moving all types in a dedicated file (e.g., in the /modules/ folder) may fundamentally be a good idea. Leaving the required changed to the CI aside, publishing the same maybe not. While the advantage of re-using them across modules is good, it raises a few concerns. For one, where to put shared types (e.g., roleAssignments), but the bigger headache for me would be the usage of the same once they're published. Today, we're looking at 100+ modules (excluding child-modules) that are published to the registry. If we were to also publish their types as separate files, then we would have a list of 200+ items in the same namespace which may make it harder to use the modules. To make it work, a new namespace may be better, like avm/types/res/...? I guess what I'm trying to say is that I can't yet imagine how this would look / work in practice - and or if something else would need to give way.
Another suggestion that would go in an opposite direction would be to declare all types with an 'export()' annotation in the modules. This would require us to not introduce a types.bicep file, but instead you could just import types like  import * as cosmosTypes from 'br/public:avm/res/document-db/database-account:0.6.0'. Not really any pain involved in this one aside from re-publishing the modules, but you'd naturally only get access to the types of the exact module you're important (and e.g., not its child modules).
Leaving all that aside, a quick honorable mention for the bicep types import that the PG has been advertising for some time. This will only work if one uses 1:1 the same interface as the RP, but for most cases this should actually be a nice fit. 'When it's ready' is another story though I'm afraid.

@JWHolding, did you have a chance to consider Alex's above points? What do you think? Thanks!

From AVM Bicep Core Team call today, key points from discussion:

We like @AlexanderSehr's suggestion on exporting existing types from the existing modules in the same main.bicep using the @export() decorator (not a new module/file)

Introduced as a SHOULD and turned up to a MUST over time in the spec as we learn from usage

We also like the idea of publishing an "AVM Shared Interfaces Types Utility Module" e.g. https://azure.github.io/Azure-Verified-Modules/specs/shared/interfaces/

We would also need to include the variations for differences in RP support for Diagnostic Settings, MIs etc. by providing multiple variants of the same shared interfaces as types so module owners can import the relevant one for their module

@JWHolding can you let us know your thoughts on the proposed above.
Actions following outcome of discussion

Create 2 issues to track implementation of the above
Update spec with @export() decorator mandate and add test to CI Pester tests

cc: @matebarabas, @ReneHezser & @rahalan

Hi apologies lost sight of this a bit!
Both options sound good, being able to import directly from the existing modules would certainly fulfil my use case and feels like it cuts down on the amount of clutter going on in the repos.

Great, then we're in agreement - and naturally can improve on the approach where we see potential. One perspective I'm somewhat excited about (once we get there) is the option to consume the types of the top level resource (e.g., Key Vault), but also their children (e.g., Keys) down the line - once we are able to find a scalable way to publish child-modules. (:
@jtracey93, I'll go ahead and create the 2 issues.


Modern C++17 Wrapper.

After the first release will have a stabilized code and we wrap the current c code to c+17 in a couple of week. The current c+ wrapper is just old style C. So we will start directly from the c library.

This issue was https://issues.apache.org/jira/browse/MILAGRO-30 in Apache Jira - that issue will be closed presently

we move on this.


[TA4434]Implement DeviceClaim, Device and Disk watcher/controller usi…

This first check-in in series of implementing different controllers using operator-sdk.
What to expect from this PR:-
1.Disk CRs created using udev probe, deatils filled with the help of other probes.
2. DeviceClaim YAML can be applied to check if it really claim a device or not.
3. Once the DeviceClaim is done, DeviceClaim CR and Device CR getting updated with related info.
What not to expect from this PR:-

Unit test Automation is broken because of new changes, I want to fix those things with separate PR(will do before this code get checked-in).
Additional Unit test cases yet to be added.
Reconcillation logic for all CRDs yet to be implemented.

Signed-off-by: satbir<EMAIL_ADDRESS>

Hi @satbirchhikara , It will be good to look at the changes if you make it in 2 commits. One is for vendor update another is for code changes.
Thanks,
Shovan Maity.

Hi Shovan,
I tried to furcate changes but since we have crossed point where we could have done it, now doing it is like re-writing entire code. Request you to bear with me.

@satbirchhikara There are some binaries that you have checked in. Do we need that?

Thanks Akhil for observation. Yes now removed. Please check and let me know if you see binaries still around.

Codecov Report

Merging #196 into master will increase coverage by 2.57%.
The diff coverage is 57.84%.

@@            Coverage Diff             @@
##           master     #196      +/-   ##
==========================================
+ Coverage    51.1%   53.67%   +2.57%
==========================================
  Files          43       45       +2
  Lines        1769     2079     +310
==========================================
+ Hits          904     1116     +212
- Misses        800      883      +83
- Partials       65       80      +15

Impacted Files
Coverage Δ

cmd/ndm_daemonset/controller/filter.go
100% <ø> (ø)

pkg/udevevent/event.go
100% <ø> (ø)
:arrow_up:

cmd/ndm_daemonset/controller/probe.go
100% <ø> (ø)

pkg/udevevent/monitor.go
29.09% <ø> (ø)
:arrow_up:

cmd/ndm_daemonset/controller/ndmconfig.go
75% <ø> (ø)

...md/ndm_daemonset/controller/sparsefilegenerator.go
65.85% <ø> (ø)

...m_daemonset/controller/disk_to_device_convertor.go
0% <0%> (ø)

cmd/ndm_daemonset/probe/seachestprobe.go
0% <0%> (ø)

cmd/ndm_daemonset/filter/filter.go
100% <100%> (ø)

pkg/udev/common.go
79.36% <100%> (ø)
:arrow_up:

... and 31 more

Continue to review full report at Codecov.

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


edits

updates

Docs Build status updates of commit 5856e86:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

Community/TOC.md
:white_check_mark:Succeeded
View

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


Terminal width is not responsive when executing long running command like nodemon

Does this issue occur when all extensions are disabled?: Yes

VS Code Version: 1.71.2-1
OS Version: EndeavourOS Linux 5.19.9 (i3-gaps)

Steps to Reproduce:

Execute a long running command (E.g: Nodemon)
When the command is running, try to close or open sidebar (Ctrl + B)

https://user-images.githubusercontent.com/47195537/191130761-bcdc016a-03de-467f-b6e4-d430413ffe76.mp4
UPDATE:
It's only happen when I split screen VSCode with other apps (E.g: browser)
https://user-images.githubusercontent.com/47195537/191151061-7a9f5de5-46e8-43fc-b312-24e94523e24a.mp4

Encountered just the same issue in macOS Monterey (12.6) on M1 Mac mini.
VS Code
Version: 1.71.2 (Universal)
Commit: 74b1f979648cc44d385a2286793c226e611f59e7
Date: 2022-09-14T21:05:37.721Z (5 days ago)
Electron: 19.0.12
Chromium: 102.0.5005.167
Node.js: 16.14.2
V8: <IP_ADDRESS>-electron.0
OS: Darwin arm64 21.6.0
Sandboxed: No

https://user-images.githubusercontent.com/8613766/191169294-8a16734e-bd67-4222-a9a6-d631e84c03f1.mp4

/duplicate https://github.com/microsoft/vscode/issues/157585

Thanks for creating this issue! We figured it's covering the same as another one we already have. Thus, we closed this one as a duplicate. You can search for similar existing issues. See also our issue reporting guidelines.
Happy Coding!


unix: delay fs req register until after validation

On Unix, if a fs function fails validation after INIT but before sending the work to the thread pool, then is is necessary to manually unregister the request. This commit moves the registration to just before the work submission. This also makes Unix match the Windows behavior.
Refs: https://github.com/libuv/libuv/pull/1747

CI: https://ci.nodejs.org/view/libuv/job/libuv-test-commit/718/


fix cmd for grafana admin password

Executing the old command got me:
error: error executing jsonpath "{.data.grafana-admin-password[*]}": string is not array or slice

This PR aims to fix the issue (and simplifies the command a bit)

It's related to issue #366. This works for me in 1.5 but I haven't tried it with 1.4.
The version bump was requested in #516 by @prydonius .

It's related to issue #366. This works for me in 1.5 but I haven't tried it with 1.4.

I think that particular change was handled in #445. This PR simply drops the printf wrapper, don't think it's worthy of a version bump.
@prydonius thoughts?

oh right. I didn't realise it had been merged when i rebased. then yes, this just drops the printf wrapper.

i think we can close this pr without a merge, wdyt?

@k8s-bot ok to test

@sameersbn @vise890 I'm inclined to merge this change. The command is simpler without the printf wrapper, and lines up with (at least most of) the other charts.
Agree that the version doesn't strictly need a bump, though I'm not opposed to one either.

ok, removed the version bump

lgtm :+1:

/lgtm


FileNotFoundError: [Errno 2] No such file or directory

I am sorry to keep asking.
I followed all the instructions, but I still get the same error.
For some reason I cannot find the model 'embedding_cache_distiluse-base-multilingual-cased-v2.pkl' from anywhere in my local machine. I also do not find the ckpt folder from anywhere.
Could you please specify which step I was supposed to set up the model?
I have been trying to run this in WSL, as well as Windows 10 on the Python 3.9 virtual environment.

Traceback (most recent call last):
File "/home/matt_song/projects/OpenChatPaper/backend.py", line 12, in
embedding_model = HuggingfaceSentenceTransformerModel()
File "/home/matt_song/projects/OpenChatPaper/embedding_model.py", line 15, in init
super().init(model_name)
File "/home/matt_song/projects/OpenChatPaper/base_class.py", line 33, in init
with open(embedding_cache_path, "wb") as embedding_cache_file:
FileNotFoundError: [Errno 2] No such file or directory: '/home/matt_song/ckpt/embedding_cache_distiluse-base-multilingual-cased-v2.pkl'

Please use the latest code. This problem should be resolved now.


Add Keycloak integration

[ ] Add keycloak with traefik forwardAuth for access to cluster resources:

[ ] basic auth ones

[ ] traefik ui
[ ] tekton dashboard

[ ] applications:

[ ] kube-r
[ ] kube-app-template

Seems like the structure is:

application has ingress with middleware of "forwardAuth"
middleware redirects to (proxy)
(proxy) uses keycloak to auth
(proxy) can be "traefik-forward-auth" or "oauth2-proxy"
As I understand it I can use one (proxy) service for multiple apps using same keycloak client?

Clients are gonna be:

cluster admin (will replace basic auth and maybe others too here) in master realm
kube-r, kube-app-template and other apps will use second client in apps realm

Maybe some other services i could convert to using Keycloak auth too?

[ ] rabbit mq
[ ] gitea
[ ] db2 data management console
[ ] dashboard
[ ] portainer
[ ] grafana
[ ] argocd
[ ] prometheus

Seems to be a problem with Set-Cookie with simple domain names, like 'SWK3S'

Works without specifying cookie domain, but cookie is missing when i do "skip_provider_button"


Failure to render PDF in rstudio with R4.3.1

Hello,
Thanks a million for the extention, I was playing around with it in vscode and couldn't make it work, switching to Rstudio has allowed me to render docx format smoothly, which is great but when I try to render pdf (following this tutorial) I get some errors that I can't seem to track down.
processing file: manuscript.qmd

output file: manuscript.knit.md

pandoc
  to: latex
  output-file: manuscript.tex
  template: _extensions/wjschne/apaquarto/template.tex
  standalone: true
  pdf-engine: xelatex
  variables:
    graphics: true
    tables: true
  default-image-extension: pdf
  citeproc: false
  toc: false

metadata
  block-headings: false
  fig-cap-location: top
  tbl-cap-location: top
  cap-location: top
  knitr:
    opts_chunk:
      apa-figtab: true
  csl: _extensions/wjschne/apaquarto/apa.csl
  documentclass: apa7
  link-ciations: false
  suppress-bibliography: false
  hyperrefoptions:
    - linktoc=none
  classoption: 'colorlinks=true,linkcolor=blue,citecolor=blue,urlcolor=blue'
  bibliography:
    - references.bib

running xelatex - 1
  This is XeTeX, Version 3.141592653-2.6-0.999995 (TeX Live 2023) (preloaded format=xelatex)
   restricted \write18 enabled.
  entering extended mode

updating tlmgr

updating existing packages

compilation failed- error
Paragraph ended before \\authorsnames was complete.
<to be read again>
                   \par
l.70

see C:\Users\path\to\my project\manuscript.log for more information.

The above happens when I try to render any kind of PDF.
I've tried to see what's going on in the .log file but I'm just not skilled enough at reading them.
I can just render to .docx and export that to a pdf but I thought it might be best to raise an issue and see if there is something to skip the extra step.
Thanks again for the work.

Thanks for the link to the tutorial. I followed the instructions there and could not reproduce the error you are getting. If you would like to email me your .qmd file, perhaps I can identify what is happening. I am at<EMAIL_ADDRESS>

Hi, Thanks so much for the offer, I'll put send on a version with the yaml and maybe the first paragraph and maybe this will make more sense to you.

Hi @wjschne I am trying to use your extension and template, but it rendered and error:
processing file: lince.qmd
|...........................                   |  59% [apafg-importedgraphic]
Quitting from lines 245-249 [apafg-importedgraphic] (lince.qmd)
Error in knitr::include_graphics():
! Cannot find the file(s): "orcid.png"
Backtrace:

knitr::include_graphics("orcid.png")

Execution halted
Breaking down the extension folder I could not find and "orcid.png" file either, just and "Orcid-id vector file"
Another question: How can I change the main font (to STIX)?
Thank you

Breaking down the extension folder I could not find and "orcid.png" file either, just and "Orcid-id vector file"

When you create a new file (i.e., quarto use template wjschne/apaquarto), the orcid.png file is downloaded automatically. If you want to use any other image file, that should be fine.

Another question: How can I change the main font (to STIX)?
If you are creating a pdf file, use the mainfont option in your yaml. See https://stackoverflow.com/questions/73603709/change-fonts-in-quarto-pdf-document

If you are creating a .docx file, you would need to have the STIX font installed on your machine and then change the body and heading font in the template file (i.e., apaquarto.docx) in the extension folder. See here for instructions: https://support.microsoft.com/en-au/office/change-the-default-font-in-word-2f50603b-9886-47e4-a483-48ac5ab80163


{Test} Fix cloud tests

Description

When running cloud tests in parallel, it may fail to revert to the original cloud settings. The tests relies on setup() to get the original active cloud and tearDown() to set back to the original cloud. But when running in parallel, if the original cloud is A, it is possible that thread 1 runs a test to set to cloud B, then thread 2 begins and treats cloud B as the original cloud in enviroment. Thread 1 finishes and set the cloud back to A, thread 2 finishes and set the cloud back to B. Now the cloud of the environemnt changes from cloud A to cloud B. This will cause issues with other tests running afterwards.
This PR modifies package tests to run cloud tests in serial and add serial_test mark to run in serial in live test pipeline.
Testing Guide

History Notes

[Component Name 1] BREAKING CHANGE: az command a: Make some customer-facing breaking change.
[Component Name 2] az command b: Add some customer-facing feature.

This checklist is used to make sure that common guidelines for a pull request are followed.

[ ] The PR title and description has followed the guideline in Submitting Pull Requests.

[ ] I adhere to the Command Guidelines.

Test


Reference external resources

Hi !
I would my SAM template to references resources (actually lambda functions) that are not managed in my SAM template.
I saw that the Intrisic function ImportValue could do the job but what if the external resources are not managed through a cloudformation stack ?
An approach could be to define kind of RefArn attribute to be able to reference existing (static) ARN's of resources.
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: Simple CRUD webservice.
Resources:
  GetFunction:
    Type: AWS::Serverless::Function
    RefArn: arn:aws:lambda:eu-west-1:xxxxxxxx:function:testLambda:current # this function already exists in AWS and I do not expect SAM to manage it
      Events:
        GetResource:
          Type: Api
          Properties:
            Path: /resource/{resourceId}
            Method: get

Of course it has blocking drawbacks (SAM Local for instance), but is it a relevant feature regarding SAM objectives ?
Is their any workaround to have this working right now with SAM ?
Thanks for your feedback

@sonytricoire  Are these resources created in another CloudFormation stack or were these resources created outside of CloudFormation.
If they are in a different stack, you can export the Lambda functions and use Fn::ImportValue.
If they were created outside of CloudFormation, there isn't much we can currently do unfortunately. This is a limitation on CloudFormation in general, since they do not allow customers to control existing resources through a CloudFormation Stack. Since SAM is built on top of this, we have to wait for CloudFormation to add this capability.

@jfuss yes they are created outside CloudFormation.
Since I'm using Apex framework, I could may be create a CloudFormation stack from Terraform integration and thus declares my Lambda as outputs of this stack.

@sonytricoire Sorry for the late reply here. I don't think this will help solve your problem. I am not super familiar with Terraform, to be honest, but even if you were to use Terraform to create a CloudFormation stack, you would still be limited by CloudFormation not supporting existing resources. Meaning you still would not be able in invoke a lambda function from an existing resource that isn't controlled through CloudFormation.


List of focusable elements in modal includes hidden ones

Bug description:
$uibModalStack queries for all of the focusable elements in the modal and uses that list to trap focus in the dialog.  Every time tab is pressed, it checks whether the currently focused element is the last focusable element in the dialog.  If it is, it moves focus to the first element in the dialog, rather than letting it escape into the rest of the page (modal.js:386).  (For shift+tab, or tabbing backwards, switch "last" and "first".)
However, the selector used to get this list of focusable elements is incorrect in that it doesn't filter out hidden (display: none) elements (modal.js:272):
var tababbleSelector = 'a[href], area[href], input:not([disabled]), ' +
        'button:not([disabled]),select:not([disabled]), textarea:not([disabled]), ' +
        'iframe, object, embed, *[tabindex], *[contenteditable=true]';

So, in a dialog where the last element is hidden, focus will not properly be trapped, because we'll never end up focused on that hidden element.  Moreover, shift+tab won't be able to loop backwards to the last element, since that hidden element is not focusable, so it'll get stuck on the first element.  (For the shift+tab case, we have the same problems if the first element is hidden.)
Version: Current on master (commit linked above)
Example:
Plunker: http://plnkr.co/edit/hL3G8FUUiMnYKJcRkrFN?p=preview
Here, we have a dialog that shows a 'Help' button as the last button in the dialog IFF there's a non-empty help link, using ng-show (which uses display: hidden to hide elements).  (Of course, this is a contrived example; ng-if would work fine in a situation like this.)  First, open the modal without generating a help link.  Tab through the modal.  Focus will escape from the modal and enter the address bar and the rest of the page, for the reason described above. Shift+tab through the modal.  Focus will get trapped on the first element.  Then, generate a help link and open it again.  Tabbing and shift+tabbing will properly keep focus in the model, because the last focusable element is... actually focusable.
Proposed fix
Minimal solution: The selector should make sure the items are visible.  I suggest generating the list using the :visible pseudoselector, replacing modal.js:272:
var tabbableList = (['a[href]', 'area[href]', 'input:not([disabled])', 'button:not([disabled])',
    'select:not([disabled])', 'textarea:not([disabled])', 'iframe', 'object', 'embed',
    '*[tabindex]', '*[contenteditable=true]']).map(function (sel, i) {
        return sel + ':visible';
    });
var tababbleSelector = tabbableList.join(', ');

(I also suggest renaming 'tababble' to 'tabbable' or better yet, 'focusable' :smile:)
Since querySelectorAll() does not support pseudoselectors, we would have to make the following replacement in modal.js:586:
focusableElementList = modalDomE1[0].querySelectorAll(tababbleSelector);
==>
focusableElementList = $(modalDomE1[0]).find(tababbleSelector);
More robust solution: It might also be a good idea to expose a setTabbableSelector() method in $uibModalStack, since different selectors might make sense for different dialogs.
I would be happy to submit a PR for either of those solutions, if anyone thinks it's a good idea and doesn't feel like doing it (it would be my first PR ever, but this is a pretty small change, and I'd write good tests, &c.)
Related issues
See also #5421 ('MODAL: Keyboard focus fail with dynamic content') and #5050 ('Cannot tab to previously disabled button in modal') for other issues involving the focusable element list.

This looks like a good catch.  I'll flag as needing investigation by our devs and they'll hopefully green light a PR.  If you want to start now, I won't say no.  But it may require several iterations.  If you're ok with that, then please go ahead.  Thanks again.

Oh, and don't forget tests!  (If you do a PR).

This sounds like a legitimate bug - PRs welcome.

Maybe we should change the implementation under the hood to not store an in-memory cache of tabbable elements - we should probably query fresh on each tab/shift-tab and navigate to the appropriate element based on that.

@wesleycho: Yeah, I think we need to do that - that's more relevant to the issues #5421 ('MODAL: Keyboard focus fail with dynamic content') and #5050 ('Cannot tab to previously disabled button in modal').  I don't think we need open issues for both of those - maybe one should subsume the other.  This one is distinct, IMO, because it concerns which elements are being picked up, rather than when we get them.  Of course, these could easily be fixed at the same time.

Yup, just noting something that has been on my head for a little while so the thought isn't lost :) . That would solve all potential issues that I can see with our programmatic accessibility implementation here.

@wesleycho modalStack actually reruns the query every time you tab already, as per line:
https://github.com/angular-ui/bootstrap/blob/master/src/modal/modal.js#L394
I think all we need to do here is ensure that the focusableElementList contains only visible elements.

I think I agree with the proposed solution. I would hold off until #5630 is in, to avoid conflicts.


Investigate more options for JPEG thumbnail compression

Now that we're going to be working with larger JPEG images (for large-image overlay), it'd be good to look a little deeper into compressing images better.
ImageMagick provides (ex.) -define jpeg:extent=300kb which ostensibly finds a quality setting around the target filesize - the resulting file may be a bit larger or smaller in size.
jpegoptim apparently works better for some, and may be more specifically suited to the task, so it's worth comparing. I don't think it has scaling options, so it's probably necessary to convert (with 100% quality) to the target resolution first - ImageMagick provides a handy control for doing that which we use now anyway, so this isn't a bother beyond what's inherent in making each thumbnail generate in two steps instead of one.
(15 May 2022)

Related to #67. As we're also adding max-resolution artwork wherever possible (hsmusic/hsmusic-data#76), this is a priority for release.

I've used some "sensible" defaults for new thumbs large, semihuge, and huge, but this could still use some more investigation.


Add customized parser support

Motivation
Currently, lightGBM can only support three text data formats (tsv, csv, libsvm), and data type check process is kind of coarse. For example, a tsv may be judged as libsvm if there is string feature containing colon. Besides, lightGBM does not support feature transformation, users need to do separate transformation themselves, which may be a bit inconvenient.
Proposal
In this PR, we'd like to add customized parser to unlock free data preprocessing scenario. Users could use lightgbm as dependency, and follow parser interface to design their own parsers or could simply try freeform parser.
Compared to separate transformation. this way has several pros:

More efficient. Data preprocessing can go with parsing each line, and take advantage of multi-processing designed by lightgbm naturally. No need to store whole transformed data in file/memory.
More convenient for development and iteration. Built-in transformation could keep offline and online consistent well.

Changes
The main code changes are:

Add parser_config_file to config.
Add parser factory and reflector to support customized parser.
Save/load parser config content along with model for automatic data processing in prediction.

@jameslamb @StrikerRUS @guolinke Could you please have a look at this PR if you have time. Thanks.

@chjinche From the first glance this PR looks really good and doesn't break backward compatibility. Thanks a lot for finding a way to support feature transformations in a non-invasive for core LightGBM API way! I'll provide more thoughtful review when have time.

@StrikerRUS Much appreciated for reviewing and glad that you like the implementation 😍
As the feature is required urgently by Microsoft Internal products, and we have already spent more time on making the integration change 😅, it will be very grateful if you could provide feedbacks before next week. Your views are important to us, we're very happy to work on the feature with all of you! 😄

/gha run r-solaris

/gha run r-valgrind

Other than the issue with the Solaris job, I agree with @StrikerRUS ... this looks like a good approach for the integration! Thanks very very much for your efforts there.
I'm definitely interested in trying this out once the relevant changes have been merged in LightGBM and the lightgbm-transform docs have been updated. We had good success at a previous company I worked at bundling feature engineering and inference code together. I think it's a really powerful idea.

We can also use std::numeric_limits<int>::max() as an alternative to INT_MAX. Since it is already used in other place of the code base, see
https://github.com/microsoft/LightGBM/blob/6cbb3586b92112fc1f27a179b201ac924e5600cc/src/boosting/prediction_early_stop.cpp#L21
so it should be safe to use.
Inclusion of #include <limits> is required for this.

We can also use std::numeric_limits::max()

Oh nice! I like that even better, and since it's used in other places in the code I think it's likely to work on Solaris.

/gha run r-solaris

/gha run r-valgrind

I would kindly ask next time address review comments in a separate commits and don't perform force pushes in a such kind of big PRs. Separate commits speed up next round of reviews by allowing to check that only requested changes were done and nothing else were touched by a bad merge commit for example.

@chjinche Thanks for this great work! And thank @StrikerRUS @jameslamb for your review. BTW, @StrikerRUS, could you please mark the request changes as resolved. It seems that the requested changes have been addressed, but they still block the merging. Thanks for your detailed review.

/gha run r-solaris

/gha run r-valgrind

I'm going to merged this given that all the checks. The latest suggestions of @StrikerRUS have been addressed by @chjinche.

It seems that the requested changes have been addressed, but they still block the merging.

Sorry about that!


Name search - odd results

I may have spotted some odd behaviour in the name search.
if I search for "Holophrya sp." I get 198 results but I cant figure out how any of them match "Holophrya sp.".
If I search for "Holophrya" I find the one record I was after.

agree this is unexpected. Is sp. maybe hitting the authorships of those records?
Sprengel, Sprague

Currently, for authors and vernacular names, the search terms ("holophrya" and "sp" - lowercased and with punction chopped off) get OR-ed, because that's the ES default. So yes, adding "sp." could increase the number of results.
Maybe for our purposes it's better to AND them. For scientific names the logic is altogether more subtle, so we won't have the problem there.

I would definitely vote for AND!


forceDirect breaks AudioLink

Enabling the forceDirect config option will prevent AudioLink from working properly.

Ignore; AudioLink does not work on Direct mode.


ModEngine2 hanging when included external DLL

When I include the seamless coop dll via (Note i've followed the method described in #229)
external_dlls = [
   "ersc.dll"
]

My ModEngine hangs at this point, I've included the debug printout below:

It works when i comment out the dll and loads the randomizer but not when included, any help would be greatly appreciated!

Nothing in #229 will help you. I assume you've tested it with other DLL mods?

Just using randomizer works i.e. if I make external_dlls = [] and just use:
mods = [{ enabled = true, name = "default", path = "randomizer" }]

I'm not sure if its a silent hang from ersc.dll since theres no logger feedback.


decode method proposal

Assalamualaykum, I tried to implement the decode method:
        assert_eq!(q.decode("قُل هُوَ اللَّهُ أَحَد"), ["kul huwa allahu ahad"]);
        assert_eq!(q.decode("اللَّهُ الصَّمَد"), ["allahu alssamad"]);
        assert_eq!(q.decode("لَم يَلِد وَلَم يولَد"), ["lam yalid walam ywlad"]);
        assert_eq!(q.decode("وَلَم يَكُن لَهُ كُفُوًا أَحَد"), ["walam yakun lahu kufuwana ahad"]);

It should basically be the opposite of encode.
I think it works, but it's probably not perfect.
For example with the following:
assert_eq!(q.decode("تَبارَكَ الَّذي"), ["tabaraka alladzi"]);
It fails returning "tabaraka allady" or "tabaraka allada" not sure why.
I think might be useful to someone looking for programatically transliterate some parts.

Oh, also "قُ" should be "q" not "k".
It's not perfect, but it's a starting point.
Let me know if it's needed and what to do to merge this PR.
Allahummabarik


Add yarn-cache to ignored paths

for some CIs we need to change yarn-cache to the working directory so it can be cache between builds

The default yarn cache does not reside in process.cwd(), correct?
xo has to be conservative with additional default ignores to avoid surprises for users, so I'd vote against adding this special case.
You can ignore the directory via the ignore flag instead:
xo --ignore yarn-cache/**/*

or the ignores option:
{
  "xo": {
    "ignores": ["yarn-cache/**/*"]
   }
}

Alternatively you can add it to .gitignore as xo evaluates it, too.


Fixed a syntax error to resolve the issue #2833

Resolved issue #2833
An error message was being thrown when attempted to download assignment tags in a file with .yaml format.
This was happening due to the bad syntax for getting all the tags ordered by name in file  tags_controller.rb.

Thanks, @gilltan97!


fix: throw PreconditionFailedError if if-none-match is set and file exists

Goal of PR
This PR fixes a bug in which a 500 error was getting thrown instead of a 412 when write request was made with the if-none-match header set, and the file attempting to be written already exists.
#306
Automated Testing
Added an integration test.
Submission Checklist

[x] Based on correct branch: feature submissions should be on develop, hotfixes should be on master

[x] The code passes our eslint definitions, unit tests, and
contains correct TypeFlow annotations.

[x] Submission contains tests that cover any and all new functionality or code changes.

[x] Submission documents any new features or endpoints, and describes how developers
would be expected to interact with them.

[x] Author has agreed to our contributor's agreement.

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