App Crashes on vosk.loadMedel Dynamically (Expermintal)

Hi,
I couldn't make the pods install successfully inside my ios folder, although i made all steps correctly like the README.
but anyway, i tried to use the expermintal method and load the model dynamically. the app loads up in loading state until the model is downloaded, but immediately crashes when passing the downloaded folder to vosk.loadModel,
here is a full code
import * as FileSystem from "expo-file-system";
import JSZip from "jszip";

// Model URL and directory where the model will be stored
const modelUrl =
  "https://alphacephei.com/vosk/models/vosk-model-small-en-us-0.15.zip"; // Replace with your model's URL
const modelDir = `${FileSystem.documentDirectory}vosk-model`;

export const downloadAndUnzipModel = async () => {
  try {
    // Check if model already exists
    let modelPath;
    const modelExists = await FileSystem.getInfoAsync(modelDir);
    if (!modelExists.exists) {
      // Define zip path where the model will be downloaded
      const zipPath = `${FileSystem.documentDirectory}vosk-model.zip`;

      // Download the model zip file
      const downloadResumable = FileSystem.createDownloadResumable(
        modelUrl,
        zipPath
      );

      const downloadResult = await downloadResumable.downloadAsync();
      if (downloadResult?.uri) {
        console.log("Model downloaded successfully:", downloadResult.uri);

        // Read the zip file and extract it
        const zipData = await FileSystem.readAsStringAsync(downloadResult.uri, {
          encoding: FileSystem.EncodingType.Base64,
        });

        const zip = new JSZip();
        const content = await zip.loadAsync(zipData, { base64: true });

        // Create the directory for the unzipped model
        await FileSystem.makeDirectoryAsync(modelDir, { intermediates: true });

        // Unzip each file and save it to the model directory
        for (const [filename, file] of Object.entries(content.files)) {
          if (!file.dir) {
            const fileData = await file.async("uint8array");
            const filePath = `${modelDir}/${filename}`;
            await FileSystem.writeAsStringAsync(
              filePath,
              Buffer.from(fileData).toString("base64"),
              {
                encoding: FileSystem.EncodingType.Base64,
              }
            );
            console.log(`Extracted: ${filePath}`);
          }
        }
        console.log("Model downloaded and unzipped successfully");
      } else {
        console.error("Failed to download the model");
      }
    } else {
      console.log("Model already exists, skipping download", modelDir);

      // List contents of modelDir
      const contents = await FileSystem.readDirectoryAsync(modelDir);
      modelPath = contents[0];
      if (contents.length > 0) {
        const firstSubdirectory = `${modelDir}/${contents[0]}`;
        try {
          const subdirectoryContents = await FileSystem.readDirectoryAsync(
            firstSubdirectory
          );
          console.log(
            `Contents of ${contents[0]} directory:`,
            subdirectoryContents
          );
        } catch (error) {
          console.error(
            `Error reading contents of ${contents[0]} directory:`,
            error
          );
        }
      } else {
        console.log("No subdirectories found in modelDir");
      }
    }

    return modelPath || undefined;
  } catch (error) {
    console.error("Error downloading or initializing the model:", error);
  }
};

and inside my screen i did this:
import { Button, Image, StyleSheet } from "react-native";

import { HelloWave } from "@/components/HelloWave";
import ParallaxScrollView from "@/components/ParallaxScrollView";
import { ThemedText } from "@/components/ThemedText";
import { ThemedView } from "@/components/ThemedView";
import { useState, useEffect, useRef } from "react";
import { downloadAndUnzipModel } from "@/src/utils/downloadModel";
import Vosk from "react-native-vosk";

export default function HomeScreen() {
  const [loading, setLoading] = useState<boolean>(true);
  const vosk = useRef<Vosk | null>(null);
  const [result, setResult] = useState<string>("");
  const [recognizing, setRecognizing] = useState<boolean>(false);

  useEffect(() => {
    const downloadModelAsync = async () => {
      const modelDir = await downloadAndUnzipModel();
      console.log("Model is downloaded and unzipped");
      try {
        if (modelDir) {
          vosk.current = new Vosk();
          await vosk.current.loadModel(modelDir);
          vosk.current
            ?.start()
            .then(() => {
              console.log("Starting recognition...");
              setRecognizing(true);
            })
            .catch((e) => console.error("Error starting recognition:", e));
        }
      } catch (error) {
        console.error("Error loading model:", error);
      }
      setLoading(false);
    };
    downloadModelAsync();
  }, []);

  useEffect(() => {
    if (!vosk.current) return;
    const resultEvent = vosk.current.onResult((res) => {
      console.log("An onResult event has been caught: " + res);
      setResult(res);
    });

    const partialResultEvent = vosk.current.onPartialResult((res) => {
      setResult(res);
    });

    const finalResultEvent = vosk.current.onFinalResult((res) => {
      setResult(res);
    });

    const errorEvent = vosk.current.onError((e) => {
      console.error(e);
    });

    const timeoutEvent = vosk.current.onTimeout(() => {
      console.log("Recognizer timed out");
      setRecognizing(false);
    });

    return () => {
      resultEvent.remove();
      partialResultEvent.remove();
      finalResultEvent.remove();
      errorEvent.remove();
      timeoutEvent.remove();
    };
  }, [vosk]);

  return (
    <ParallaxScrollView
      headerBackgroundColor={{ light: "#A1CEDC", dark: "#1D3D47" }}
      headerImage={
        <Image
          source={require("@/assets/images/partial-react-logo.png")}
          style={styles.reactLogo}
        />
      }
    >
      <ThemedView style={styles.titleContainer}>
        <ThemedText type="title">Welcome!</ThemedText>
        <HelloWave />
      </ThemedView>
      <ThemedView style={styles.stepContainer}>
        <ThemedText type="subtitle">
          {loading ? "Loading..." : "Ready, start recording"}
        </ThemedText>
      </ThemedView>
      <ThemedView style={styles.stepContainer}>
        <ThemedText type="subtitle">
          {result ? `Result: ${result}` : "No result yet"}
        </ThemedText>
      </ThemedView>
      <ThemedView>
        {!loading && !recognizing && (
          <Button
            onPress={async () => {
              if (vosk.current) {
                await vosk.current.start();
                setRecognizing(true);
              }
            }}
            title="Start Recording"
          />
        )}
        {!loading && recognizing && (
          <Button
            onPress={() => {
              if (vosk.current) {
                vosk.current.stop();
                setRecognizing(false);
              }
            }}
            title="Stop Recording"
          />
        )}
      </ThemedView>
    </ParallaxScrollView>
  );
}

const styles = StyleSheet.create({
  titleContainer: {
    flexDirection: "row",
    alignItems: "center",
    gap: 8,
  },
  stepContainer: {
    gap: 8,
    marginBottom: 8,
  },
  reactLogo: {
    height: 178,
    width: 290,
    bottom: 0,
    left: 0,
    position: "absolute",
  },
});

so I added the permissions to Info.plist
<key>NSMicrophoneUsageDescription</key>
<string>This app requires access to the microphone for speech recognition.</string>

so the downloaded folder is correct and here is the contents from the downloaded folder as shown in the logs
 LOG  Contents of modelDir:
 LOG  Contents of vosk-model-small-en-us-0.15 directory: ["README", "am", "graph", "ivector", "conf"]
 LOG  Model is downloaded and unzipped

and then the app crashes with this error:
ERROR (VoskAPI:Model():model.cc:122) Folder '/private/var/containers/Bundle/Application/479BB9D6-8897-485E-A2E8-A950D1A64F6B/demo.app/vosk-model-small-en-us-0.15' does not contain model files. Make sure you specified the model path properly in Model constructor. If you are not sure about relative path, use absolute path specification.

@BiskremMuhammad  I have the same problem, However, I'm not using dynamic linking, and it only happens on iOS, have you come up with a solution?

@joaolobao380 It never worked with me with native module for ios, (download the model and added the folder to xcode), but i manage to solve it and load the model successfully with dynamic load, using a download utility and let the app download the model internally and unzip it. so my solution included the above code, but at the end i removed the file:// from the downloaded model path and it worked.

perfect!! Thank you!

This is what should be happening with model loading- try to load from a dynamic path, otherwise default to the app bundle. If the static loading is not working, there may be some helpful logs when running the app from XCode. What are the logs you are seeing with the static load?

Can you follow the updated README and let us know if it still crashes ?

I can confirm that with a trailing file:// it does not work

Created this PR, please let me know if it resolves your issue! https://github.com/riderodd/react-native-vosk/pull/79


[ISSUE 3203] Replace the class 'StringBuffer' by 'StringBuilder'

Make sure set the target branch to develop
What is the purpose of the change

Replace the class 'StringBuffer' by 'StringBuilder'
Add missed '@override' annotation
Add braces to 'if' statement
Add test for UtilAll#list2String

#3203
Brief changelog
XX
Verifying this change
XXXX
Follow this checklist to help us incorporate your contribution quickly and easily. Notice, it would be helpful if you could finish the following 5 checklist(the last one is not necessary)before request the community to review your PR.

[x] Make sure there is a Github issue filed for the change (usually before you start working on it). Trivial changes like typos do not require a Github issue. Your pull request should address just this issue, without pulling in other changes - one PR resolves one issue.
[x] Format the pull request title like [ISSUE #123] Fix UnknownException when host config not exist. Each commit in the pull request should have a meaningful subject line and body.
[x] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
[x] Write necessary unit-test(over 80% coverage) to verify your logic correction, more mock a little better when cross module dependency exist. If the new feature or significant change is committed, please remember to add integration-test in test module.
[x] Run mvn -B clean apache-rat:check findbugs:findbugs checkstyle:checkstyle to make sure basic checks pass. Run mvn clean install -DskipITs to make sure unit-test pass. Run mvn clean test-compile failsafe:integration-test  to make sure integration-test pass.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

Coverage increased (+0.09%) to 54.201% when pulling 366ee98eb2c20c6ea1befa48ef416ac39ff9bff5 on gorden5566:optimize-string-concate into 9e8fea9d5adf67cae4b8a2f041c6f6c2adc8813a on apache:develop.

Codecov Report

Merging #3204 (366ee98) into develop (9e8fea9) will increase coverage by 0.01%.
The diff coverage is 37.50%.

@@              Coverage Diff              @@
##             develop    #3204      +/-   ##
=============================================
+ Coverage      48.45%   48.46%   +0.01%
- Complexity      3185     3188       +3
=============================================
  Files            418      418
  Lines          26318    26318
  Branches        3487     3487
=============================================
+ Hits           12752    12755       +3
+ Misses         11921    11914       -7
- Partials        1645     1649       +4

Impacted Files
Coverage Δ

...va/org/apache/rocketmq/common/message/Message.java
54.21% <0.00%> (ø)

...apache/rocketmq/common/protocol/NamespaceUtil.java
54.83% <0.00%> (ø)

...he/rocketmq/filter/expression/UnaryExpression.java
21.05% <0.00%> (ø)

...g/apache/rocketmq/filter/parser/TokenMgrError.java
0.00% <0.00%> (ø)

...pache/rocketmq/remoting/common/RemotingHelper.java
13.41% <0.00%> (ø)

...pache/rocketmq/store/stats/BrokerStatsManager.java
75.89% <50.00%> (ø)

.../apache/rocketmq/filter/parser/ParseException.java
49.25% <66.66%> (ø)

...cketmq/acl/plain/RemoteAddressStrategyFactory.java
89.76% <100.00%> (ø)

.../main/java/org/apache/rocketmq/common/UtilAll.java
40.25% <100.00%> (+2.59%)
:arrow_up:

...ache/rocketmq/store/AllocateMappedFileService.java
39.02% <0.00%> (-2.44%)
:arrow_down:

... and 7 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 9e8fea9...366ee98. Read the comment docs.


ci.yaml changes aren't applied before tests run post-submit

A PR like https://github.com/flutter/flutter/pull/93086 that makes significant changes to ci.yaml will pass presubmits but fail postsubmits because of some delay in the infrastructure.
The scheduler should avoid scheduling tests when there's a pending infrastructure change that needs to roll out for the tests to pass.

This is blocked on https://github.com/flutter/flutter/issues/81795
Once that's implemented, we'll roll out the cocoon scheduler to be used by all the Flutter repos instead of the LUCI scheduler. ETA is migration will be complete by end of January.

Moving as P3, this is a nice to have but it is not currently blocking anything.

Cocoon scheduler migration is complete, and everything should be tested based on what's in the ci.yaml for that repo.


2 README improvement requests

After reading the README, I'm left with two questions:

What is the point of init?(_ map: Map) in the Mappable protocol? It always appears empty in the code samples and there is no comment in Mappable.swift.
Does ObjectMapper also work with other types like struct? Or will it only work with a class?

If someone wants to answer those for me here I can open a PR to expand the README.

The init?(_ map: Map) function is required to ensure that ObjectMapper can create new instances of your classes during mapping. It also allows developers to perform validation on the JSON prior to mapping. For example you may want to check if a certain key exists in the JSON. If it doesn't exist, you can cancel the mapping by returning nil.

Struct support is listed in the Features of ObjectMapper. It is also stated in the Basics section where there is an example of a struct mapping.

Hope this helps. I will add more information on the init? function in the README when I get a chance


Bluetooth: Gatt: Subscription callback

Create separate callback for CCC subscriptions, to be able to return the subscription parameters.
This is an API change, discussed in https://github.com/zephyrproject-rtos/zephyr/issues/45237

This was exactly what I had in mind too for the solution :)

Well, it was more or less your idea, wan't it? :-)

The writefunction has been deprecated (by this PR), but is still used (=kept) in the implementation to provide backwards compatibility.
But the use of the deprecated function causes the build to fail.
How do I work around this?

The writefunction has been deprecated (by this PR), but is still used (=kept) in the implementation to provide backwards compatibility. But the use of the deprecated function causes the build to fail. How do I work around this?

We can't use __deprecated for callback unfortunately :( Went through the same issue with https://github.com/zephyrproject-rtos/zephyr/issues/43543 and simply had to remove them.

API meeting:

No objections

@jhedberg could you please take a look and let us know if you'd prefer deprecating instead of using the Stable API Change procedure?

@jhedberg could you please take a look and let us know if you'd prefer deprecating instead of using the Stable API Change procedure?

The overhead from maintaining support for the deprecated callback seems to be only a few lines of code, so I'm fine with taking that approach.

Rebased, and fixed the doxygen comment from @gmarull
Unsure about what the conclusion was above on whether to remove or deprecate the previous callback.  I suspect no-one is using it, so should be fine to remove.  But have gone with @jhedberg now and kept it as deprecated.
Will take out of draft as soon as I have tried it as base for the change I need it for.

Pushed again - moved documentation from function type to struct, as suggested by Emil.  (Was hidden within a comment that had been marked as resolved.)

Pushed with changes as discussed in Discord

documentation change ("deprecated" instead of "replaced")
BT_WARN on the deprecated callback


Upgrade to latest version on same tap/repo

General troubleshooting steps

[x] I have retried my command with --force and the issue is still present.
[x] I have checked the instructions for reporting bugs (or making requests) before opening the issue.

[x] None of the templates was appropriate for my issue, or I’m not sure.

[x] I ran brew update-reset && brew update and retried my command.
[x] I ran brew doctor, fixed as many issues as possible and retried my command.
[x] I understand that if I ignore these instructions, my issue may be closed without review.

Description of issue
Cask should be upgraded to latest version on same tap as the one it was installed from.
Output of your command with --verbose --debug
$ brew cask upgrade --verbose --debug
Warning: Calling Hbc::DSL#license is deprecated!
There is no replacement.
/usr/local/Homebrew/Library/Taps/alehouse/homebrew-unofficial/Casks/wch-ch34x-usb-serial-driver.rb:8:in `block in load'
Please report this to the alehouse/unofficial tap!

==> Determining which containers to use based on 'container :type'
Warning: Calling <<-EOS.undent is deprecated!
Use <<~EOS instead.
/usr/local/Homebrew/Library/Taps/alehouse/homebrew-unofficial/Casks/wch-ch34x-usb-serial-driver.rb:22:in `block in load'
Please report this to the alehouse/unofficial tap!

==> Upgrading 1 outdated package, with result:
alehouse/unofficial/wch-ch34x-usb-serial-driver 1.0
==> Started upgrade process for Cask wch-ch34x-usb-serial-driver
Error: Cask wch-ch34x-usb-serial-driver exists in multiple taps:
  alehouse/unofficial/wch-ch34x-usb-serial-driver
  caskroom/drivers/wch-ch34x-usb-serial-driver

/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cask_loader.rb:193:in `for'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cask_loader.rb:168:in `load'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli/upgrade.rb:39:in `block in run'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli/upgrade.rb:29:in `each'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli/upgrade.rb:29:in `run'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli/abstract_command.rb:35:in `run'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:98:in `run_command'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:168:in `run'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:132:in `run'
/usr/local/Homebrew/Library/Homebrew/cmd/cask.rb:8:in `cask'
/usr/local/Homebrew/Library/Homebrew/brew.rb:100:in `<main>'
Error: Kernel.exit
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:173:in `exit'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:173:in `rescue in run'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:156:in `run'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:132:in `run'
/usr/local/Homebrew/Library/Homebrew/cmd/cask.rb:8:in `cask'
/usr/local/Homebrew/Library/Homebrew/brew.rb:100:in `<main>'

Output of brew cask doctor
$ brew cask doctor
==> Homebrew-Cask Version
Homebrew-Cask 1.5.8-16-g1ca2ee6
caskroom/homebrew-cask (git revision 72fe; last commit 2018-03-06)
==> macOS
10.13.4
==> SIP
Disabled
==> Java
9.0.4
==> Homebrew-Cask Install Location
<NONE>
==> Homebrew-Cask Staging Location
/usr/local/Caskroom
==> Homebrew-Cask Cached Downloads
~/Library/Caches/Homebrew/Cask
==> Homebrew-Cask Taps:
/usr/local/Homebrew/Library/Taps/caskroom/homebrew-cask (3928 casks)
/usr/local/Homebrew/Library/Taps/alehouse/homebrew-unofficial (45 casks)
/usr/local/Homebrew/Library/Taps/caskroom/homebrew-drivers (145 casks)
/usr/local/Homebrew/Library/Taps/caskroom/homebrew-fonts (1160 casks)
/usr/local/Homebrew/Library/Taps/caskroom/homebrew-versions (173 casks)
==> Contents of $LOAD_PATH
/usr/local/Homebrew/Library/Homebrew/cask/lib
/usr/local/Homebrew/Library/Homebrew
/Library/Ruby/Gems/2.3.0/gems/did_you_mean-1.0.0/lib
/Library/Ruby/Site/2.3.0
/Library/Ruby/Site/2.3.0/x86_64-darwin17
/Library/Ruby/Site/2.3.0/universal-darwin17
/Library/Ruby/Site
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/vendor_ruby/2.3.0
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/vendor_ruby/2.3.0/x86_64-darwin17
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/vendor_ruby/2.3.0/universal-darwin17
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/vendor_ruby
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/x86_64-darwin17
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/universal-darwin17
==> Environment Variables
LC_ALL="en_US.UTF-8"
PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/Homebrew/Library/Homebrew/shims/scm"
SHELL="/bin/zsh"

HBC doesn't support multiple Casks with the same name.
I'd suggest removing it from alehouse now it exists in drivers
https://github.com/caskroom/homebrew-cask/issues/22045

Ok. Thanks. I'll submit a PR there.

You can try brew untap alehouse/unofficial; brew cask upgrade.
It should work when there is only one Cask.


I can't add 'sAMAccountName' attribute to schema

I need the attribute sAMAccountName but it doesn't exists.
How can i add it? im starting from scratch:

Thanks!

It's not an openldap default. You need to add it as custom attribute to your schema.


Error when a dictionary's key has '/' in it

If you write an HDF5 file that includes a dictionary with a / in the keys, then reading won't work. I looked through the code and basically what happens is that _triage_write calls root.create_group(key), and if there's a / in key, then is splits into two groups instead of a single group w/ / in the key. I'm guessing this is some kind of default h5py behavior.
So would it make more sense to:

Check if the person has input a / under the isinstance(dict) part of _triage_write and throw an error if so

or

Automatically replace that value with something that we can then re-replace during read. E.g.:

special_chars = {'{BACKSLASH}': '/'}

def _create_titled_group(root, key, title):
    """Helper to create a titled group in h5py"""
    # Auto-replace keys with proper values
    for key_spec, val_spec in special_chars.items():
        key = key.replace(val_spec, key_spec)
    out = root.create_group(key)
    out.attrs['TITLE'] = title
    return out

def _triage_read(node):
    h5py = _check_h5py()
    type_str = node.attrs['TITLE']
    if isinstance(type_str, bytes):
        type_str = type_str.decode()
    if isinstance(node, h5py.Group):
        if type_str == 'dict':
            data = dict()
            for key, subnode in node.items():
                # Auto-replace the keys/values if we find them
                for key_spec, val_spec in special_chars.items():
                    key.replace(key_spec, val_spec)
                data[key[4:]] = _triage_read(subnode)
...

Let's do auto-replacement but document it clearly in the docstring, as you're right slashes shouldn't be in there:
http://stackoverflow.com/questions/30070834/in-names-in-hdf5-files-confusion
Actually maybe we should have slash='error' by default with slash='replace' meaning replace it with '{SLASH}'. Note that / is a forward slash BTW.

Looking into a PR on this but I realized that if you auto-replace forwardslashes then it will mess up situations where you actually want h5py to break up the forwardslashes...hmm

And the main reason that I was hesitant to suggest throwing an error is that dictionaries w/ forwardslashes are a common way for MNE to represent event: event_type dictionaries

When would you want to have h5py break up the forwardslashes when writing with h5io?

not sure but one attempt at this broke this test:
def test_path_support():
    tempdir = _TempDir()
    test_file = op.join(tempdir, 'test.hdf5')
    write_hdf5(test_file, 1, title='first')
    write_hdf5(test_file, 2, title='second/third', overwrite='update')  <---- forward slashes in title
    assert_raises(ValueError, read_hdf5, test_file, title='second')
    assert_equal(read_hdf5(test_file, 'first'), 1)
    assert_equal(read_hdf5(test_file, 'second/third'), 2)

Ahh, so only at the top level, I think. We could work around that use case I think.

(I don't think using forward slashes in lower levels should really be supported, I don't know what it would do...)

I think you need to recode HED style keys internally, like replace them with special characters.

yeah I agree that it's a bit weird, but that's what the event_id structures are in MNE. If you have more than one type in the structure then it will error. e.g.: event_id = {'bef/first': 1, 'aft/second': 2}

I think we should allow forward slashes in the top level, meaning, save to / load from this nested location, and have slash='error' (by default) error if any key has a slash in it, and have slash='replace' use what you suggest.

See https://github.com/h5io/h5io/pull/11
thoughts?

I believe this is fixed, so closing


Changelog should be moved to a wiki article

Readme.md should be cleaned up a little bit by moving the growing changelog into a seperate wiki article. Since its already markdown, should just be copy-paste.

Done.


[Nim] clang again

I found that prev PR about Nim changed full structure of the nimble project. I applied some changes (which did not improve time), but to make it a bit more maintable
cc @michaelsbradleyjr

@inv2004 that's fine. Fwiw, my changes weren't made on a whim. When working on this, I'm mainly in the shell on macOS, test in Docker in an Ubuntu container, and try things out in a GHA run on my fork. So some of the changes were to make it simpler to work across platforms without doing anything particularly weird.
I've lost any love I had for nimble and generally avoid nimble tasks, instead doing thing in terms of nim c, nim.cfg and/or config.nims (plug -d: opts and env vars). That seems to be the way things are going with atlas on the horizon, but it's a stylistic preference at this point, so whatever works I guess.
In config.nims I had setup nim/nimcache relative to the root of this project because across 5k ... 60k runs llvm's profiler was exiting with error if nimcache wasn't cleaned out. In those kinds of situations, I find it's nicer to have a project-specific nimcache than munging around in ${HOME}/.cache/nim/. I'll check in a GHA run on my fork if the changes you introduced in this PR run into the same problem and will submit a one-or-two-liner fix if that's the case.
Finally, I'm a bit confused about the revert of my #237. It was to address a perf regression in #248, but if you look at the commit/results for #248 (which was reverted along with #237 in #249), the Nim results are completely missing. See https://github.com/jinyus/related_post_gen/commit/d036bba361cf21dda68395126498a5700b4541ce and d036bba/raw_results.md. So was there a regression, or something just got screwed up in the run, or...?

I figured out a couple of subtle things with 237. I'm making these notes here in case someone might find them useful, but mostly just because I'm happy I solved the problem.

I was using an Ubuntu container instead of Arch 🤦 . I should have been using the same container setup per the Dockerfile in this project, but I hadn't looked at it and had in mind the GitHub Actions environment. That led to a mismatch in the name of the llvm-profdata executable, which causes a command to fail, and that's probably why the Nim data was missing in 248.
clang 15/earlier's LLVM gold plugin seems tolerant of subtle changes between the profiled/optimized objects that can cause clang 16 to fail across repeat runs. Also in clang15/earlier there's a noticeable perf loss on Linux but not on macOS.

While I don't intend them for a PR, the simple fixes can be seen here: fixes.
With those changes, the performance gap between this PR and 237 is closed.

Btw are you on x86 Mac?

Btw are you on x86 Mac?

Yes.


Fix quantized embedding expecting contiguous inputs

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.


Issue#898: Fixed connection redirection to Active server for IPv6 addresses

test this please

test this please

This doesn't seem to go far enough.  Maybe we should look at making support use the type system rather than parsing strings

@myronkscott agreed. I used TCConnection to fetch the host and port.

Turns out that my current approach doesn't work. Need to investigate more.

I looked at this.  I think it will take quite a bit to move it to a typed class.  We will have to do with the string parsing for now.

Went back to string parsing.

@myronkscott, can you please merge and release a version?

Merging - @saurabhagas told eme he got @myronkscott 's approval.


update all images to Alpine 3.19

Recreated in PR #81 after being force pushed out of history to drop WIP commits that some bozo (me) included accidentally.


Feature/list design

Description
Thomas, Jonah , and myself finished the design of the card in the list display to reflect how the wireframe looks like. We made the tags hold more characters so that the user is able to see  more of the tag and not just six characters like in the thumbnail view.
Video
Type of change

[x] Styling of a feature

Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have removed unnecessary comments/console logs from my code
[x] I have made corresponding changes to the documentation if necessary (optional)
[x] My changes generate no new warnings
[x] I have checked my code and corrected any misspellings
[x] No duplicate code left within changed files
[x] Size of pull request kept to a minimum
[x] Pull request description clearly describes changes made & motivations for said changes

It's great to see the commits along the way. It helps to give context to how you were solving problems.
Thoughts:

Is there anyway that we can reinforce to the user that they are on list/thumbnail? Perhaps we could add a thicker border to the type of display that the user has selected.
There's some mixture of rem, %, and px`. We will need to do a sweep of our app sometime next week to create uniformity in our padding and margins.

Overall, I think that this is a big contribution. I especially like that the user is presented with more information immediately versus having to click/hover to gather more info (thinking tags and the path being visible).


Q: oldbase seems always equals to lpBase

memoryloader.c
DllPayload.startOfMappedPE = lpBase;
oldbase = DllPayload.startOfMappedPE;
……
LONGLONG lBaseDelta = (PBYTE)pMemModule->lpBase - (PBYTE)oldbase;

Not an issue. if it's equals the delta is zero, otherwise it performs relocations.

i known If delta is zero do not perform relocations, otherwise it performs relocations,
i means that oldbase = (LPVOID)(pImageNtHeader->OptionalHeader.ImageBase) not oldbase = DllPayload.startOfMappedPE;

i known If delta is zero do not perform relocations, otherwise it performs relocations,
i means that oldbase = (LPVOID)(pImageNtHeader->OptionalHeader.ImageBase) not oldbase = DllPayload.startOfMappedPE;

oldbase is not always that value, that is whey there is the control in the first place.


Using MuiThemeProvider throws "Failed prop type" for underlying comopnent

[x] This is not a v0.x issue.
[x] I have searched the issues of this repository and believe that this is not a duplicate.

Expected Behavior 🤔
I am using MuiThemeProvider to change the color of a Button component. I expect this to work without error
Current Behavior 😯
The color of the button is changed. However, the browser shows the error index.js:1446 Warning: Failed prop type: The following properties are not supported: className. Please remove them. This error does not show if I don't use the MuiThemeProvider. This error also does not show if I remove the className from the DeleteIcon.
Steps to Reproduce 🕹
Link: https://codesandbox.io/s/l39z882kkz

click the 'throw the error' button
watch the console. The error should appear there

Context 🔦
I am trying to make my button red
Your Environment 🌎
Bug tested and validated in Chrome and Firefox.

Tech
Version

Material-UI
v3.9.2

React
v16.8.2

Chrome
v73.0.3683.75

Firefox
v65.0.2

TypeScript
v3.2.4

This is an issue with DialogActions. You need a wrapping component that forwards the props to the button instead:
function DeleteButton(props) {
  const { iconClassName, ...buttonProps } = props;

  return (
    <MuiThemeProvider theme={deleteTheme}>
      <Button {...buttonProps} variant="contained" color="primary">
        Delete
        <DeleteIcon className={iconClassName} />
      </Button>
    </MuiThemeProvider>
  );
}

See https://codesandbox.io/s/qq97jvq83j.
This should be fixed on next.

I confirm, the problem was fixed on the latest next release.


Live server rebuilds break SASS due to changed directory

The Site.serve() function completes it's initial clean and build, then changes directory to the build_path prior to starting the filesystem listener.
When re-builds are triggered, the changed directory causes things with relative paths, like SASS imports, to fail.
I have also raised Pull Request #232 that takes care of this.

Housekeeping close.


MINOR: Don't throw if MirrorMaker topics already exist

Currently MirrorMaker throws a few exceptions at startup if its internal topics already exists.
For example:
Scheduler for MirrorHeartbeatConnector caught exception in scheduled task: creating internal topics (org.apache.kafka.connect.mirror.Scheduler:102)
org.apache.kafka.connect.errors.ConnectException: Error while attempting to create/find topic 'heartbeats'
	at org.apache.kafka.connect.mirror.MirrorUtils.createCompactedTopic(MirrorUtils.java:154)
	at org.apache.kafka.connect.mirror.MirrorUtils.createSinglePartitionCompactedTopic(MirrorUtils.java:160)
	at org.apache.kafka.connect.mirror.MirrorHeartbeatConnector.createInternalTopics(MirrorHeartbeatConnector.java:89)
	at org.apache.kafka.connect.mirror.Scheduler.run(Scheduler.java:93)
	at org.apache.kafka.connect.mirror.Scheduler.executeThread(Scheduler.java:112)
	at org.apache.kafka.connect.mirror.Scheduler.lambda$execute$2(Scheduler.java:63)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.TopicExistsException: Topic 'heartbeats' already exists.
	at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:395)
	at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1999)
	at org.apache.kafka.common.internals.KafkaFutureImpl.get(KafkaFutureImpl.java:165)
	at org.apache.kafka.connect.mirror.MirrorUtils.createCompactedTopic(MirrorUtils.java:124)
	... 11 more
Caused by: org.apache.kafka.common.errors.TopicExistsException: Topic 'heartbeats' already exists.

This should not be treated as an error as it's expected to happen every time connectors are restarted.
Committer Checklist (excluded from commit message)

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation (including upgrade notes)

Thanks @showuon for the review! I've pushed an update.


default Github Branch used is 'master', but it should be main

Workaround is to specify main as the default branch

Thank you!
This can be changed. In the next version, it will be adjusted to the default main branch.


Remove focus from the toggleButton when closing the sidebar with a mouse (issue 17361)

/botio-linux preview


Remove support for pre-installed site extensions

This was added for Kudu/Monaco/DaaS because there was no Ibiza UI, so we were relying on Site Extension UI to enable them.
But now, they all have first class support, so I think we should get rid of all this extra complexity.
When reviewing, add ?w=1 to the URL so it ignores blanks.

:shipit:  with one small comment


Create the installation directories

I stumbled upon this while packaging your library for @openSUSE.

Hey Matthias,
thanks for the patches!
Could you squash these changes into a single commit and add a --signoff?
Otherwise the patches are looking good.
Out of curiosity, is there any software in openSUSE which requires libShake dependency?

Actually, just https://software.opensuse.org/package/tuxemon and sadly the name libshake is not unique https://software.opensuse.org/package/shake so there will be further integration problems.

Merged. Thanks!


Added support for a delivery address of 'dev'

Added support for a delivery address of 'dev' that when set disabled using the directives and building distribution urls, so that it can be used locally while developing with local files
Added support to empty strings for outputFormat and fitMethod on TDirectives so that it ignores them if they're set to empty - a reason why this might happen is if you're setting those things programatically - in that same line of thought, probably all directives should allow for null/undefined

Hey @mnussbaumer 👋,
Thanks for your thoughts and a PR. It seems like the described use case is already supported by setting the deliveryAddress prop to your local server URL- for example, deliveryAddress="http://localhost:9009". Have you already tried that?

Added support to empty strings for outputFormat and fitMethod on TDirectives so that it ignores them if they're set to empty - a reason why this might happen is if you're setting those things programatically - in that same line of thought, probably all directives should allow for null/undefined
That's a good point, null and "" values should indeed be filtered out so the constructUrl method produces a well-structured query string.

@Powell-v2 hey!
Yes, indeed it does - my initial confusion was because of the directives - on first read I had assumed it would create a path (as in image-resource/c_something) for the image, and not a query string (image-resource/?imgeng=/c_something), so that would change the location of the resource, and because it was an easy change I went ahead, only to realise later it wouldn't be needed.
I will close this then.


fix compatibility for SDK 182

In SDK 182, jgoodies-forms.jar has been renamed to forms-1.1-preview.jar.

Relate issue: https://github.com/JetBrains/gradle-intellij-plugin/issues/290

fixed with wildcard as a version


Update jetty-client, jetty-runner, ... to 9.4.33.v20201020

Updates

org.eclipse.jetty:jetty-client
org.eclipse.jetty:jetty-runner
org.eclipse.jetty:jetty-server
org.eclipse.jetty:jetty-servlet

from 9.4.32.v20200930 to 9.4.33.v20201020.
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.eclipse.jetty" } ]

labels: library-update

#3782


added a FragmentStatePagerAdapter class

Added a FragmentStatePagerAdapter class, which uses the FirebaseArray class.

@dabele91 first of all thank you for this incredibly complete pull request (docs and everything!).  We love to see this kind of involvement from the community.
While I totally see the utility of this feature and I think your implementation is good, I have to close this Pull Request as it's out of scope for this library.  There are many adapters in Android that could be implemented on top of FirebaseArray (Fragments, Spinners, ViewPager, etc) but we'd like to keep the surface of the library small and only have the most popular features so that we can effectively support the library and keep it updated in the future.
For this feature I'd suggest making your own library that has a dependency on Firebase UI.  If you've never published an Android library before it's very easy these days with Bintray and jCenter!
Also in the future if you plan to implement a new feature it's always good to submit an Issue first to see what the reaction to a Pull Request would be before putting in all the hard work to implement.

@samtstern thanks for the great feedback :-)
It wasn't much work because i've needed the class anyway.
Next time i'll create an issue, to check, if the community needs such an class.
I'm thinking about it, to publish the class in an separate library the next days.
Thanks for the tips :-)


SceneQueryRunner: Allow external DataQueryRequest context configuration

📦 Published PR as canary version: 0.27.1--canary.303.6024412821.0

:sparkles: Test out this PR locally via:
npm install<EMAIL_ADDRESS># or
yarn add<EMAIL_ADDRESS>

Something like https://github.com/grafana/scenes/compare/encricher-test?expand=1
we could provide maybe some good default implementations where scene app plugins can specify the app name, and we have some default heuristic of looking for the closest VizPanel and use the title (after we add something other than panelId for scene apps to use)

or are we over-enginerring this? could just add app & panelId to SQR state and leave it up to user code to set and sync. For core dashboards, panelId should not really change during the lifetime of a dashboard scene.

I don't think so. For the app, I think it would be worth to have some context provider so that SQR could read that property from it. Otherwise one need to remember to provide correct context to each scene query runner.
The only thing i don't know is how the enricher results should be collected. I.e. :

VizPanel can be considered an enricher that provides panelId
DashboardPage provides dashboardId
SceneApp provides app

So IMO we need to collect the enriched data query request all way up to the root of the scene in order to get the full object, rather than collecting from the closest parent that implements an enricher interface.
But i'm not sure we need https://github.com/grafana/scenes/compare/encricher-test?expand=1#diff-8e640d1b532fe751df12b895885faed4a0f9e33d4feee2e0353413e296e6f7cbR14 function, just reading from the object state should be sufficient I think.

@torkelo something like this built on top of your enricher: https://github.com/grafana/scenes/commit/ed064da83c57c5ae35f441e4943c02f5eaebf782


[CELEBORN-702][DOC] Extend doc about migration from 0.2.1 to 0.3.0

What changes were proposed in this pull request?
Extend doc about migration from 0.2.1 to 0.3.0. Added the following contents:

Why are the changes needed?
ditto
Does this PR introduce any user-facing change?
No.
How was this patch tested?
No.

cc @FMX

Can we use Collapsible blocks for stacktrace?

Can we use Collapsible blocks for stacktrace?

done


Bazel lacks support for proprietary (closed source) C++ libraries.

Bazel currently supports this in Java via the java_import rule but C++ appears to be lacking this kind of feature [1]. Please consider extending the default Bazel build rules to allow C++ builds to integrate third party libraries that consist of header files and precompiled library binaries.

http://bazel.io/docs/build-encyclopedia.html

cc_library allows srcs to contain precompiled ".a" and ".so" files.
Note: on Mac you will need an "empty.cc" in srcs as clang/bazel do not handle empty srcs (as in nothing to actually compile)

Sounds like it's WAI. Closing.

I'd prefer to disallow adding precompiled files to srcs and instead add a cc_import rule. We have seen some problems with this internally, and it also makes the code a bit more complex than we'd like.

+1 cc_import rule. This would bring the semantics inline with the existing java convention. FWIW, it would also be nice to allow absolute file paths to reference system libraries that exist outside of the workspace.

An absolute-path import can be done by using 'new_local_repository' in your WORKSPACE file and then binding it.  Although it does not yet work correctly in the case of imports.  (https://github.com/google/bazel/issues/66)


remove generators from settings

Currently the settings class has 4 generator objects, rendering the EvaluatorStreamer class to be unable to pickle.
Goal:

Remove generators when pickle dump is done.
Restore generators at appropriate window when loading.

issue resolved in 0.2.8a


database/sql: missing locking in certain Tx calls [Go 1.9]

Limited form of #21117.

CL 65731 OK for Go 1.9.2.
At least tentatively. Leaving #21117 in the Go 1.9.2 milestone as a reminder to evaluate this.
But I'd like to prepare a toolchain with the fix to see if anyone with problems is helped.

Per https://github.com/golang/go/issues/21117#issuecomment-337786993, CL 65731 fixes some very common crashes observed in the wild, and while I do think it's incomplete I also think it's clearly safe, so let's keep it for Go 1.9.2.

go1.9.2 has been packaged and includes:

CL 65731

The release is posted at golang.org/dl.
— golang.org/x/build/cmd/releasebot, Oct 26 21:09:25 UTC


Indexing performance improvements

Motivation
After profiling our indexing code a bit, I noticed we were spending an abnormal amount of time in is_a?. Unfortunately, those were coming from the sorbet-runtime. In particular, the T.let and signatures for PrefixTree::Node had significant impact on the indexing time.
The reason is because we need to instantiate an enormous amount of nodes for the prefix tree, since each character in the name becomes a new node. That means that initializing a new Node is critical for the performance of the index.
Implementation

Used signature without runtime in two critical methods. I'm not sure why we had checks happening despite setting the check level to never to be honest
Switched a few method calls to instance variables to avoid a few dispatches
Removed the T.let inside the Node initializer

This change shoves 10+ seconds from indexing time in Core.

We already do it. Copied directly from the exact source you linked https://github.com/Shopify/ruby-lsp/blob/da6725db348569c4300fe625a240ea5660b6ec83/exe/ruby-lsp#L66.
I don't know for sure why I kept seeing so many is_a? in the profile even after signatures unwrapped.

It's possible the is_a? comes from the T.let rather than the sigs in which case we could keep them but remove the T.let?

That's fair. I brought back the regular sigs, let's give that a try and profile again.


crash on mirror fix

Thank you for contributing to mirrord!
Please make sure you added a CHANGELOG entry.

bors r+

bors r+

bors r+

bors r+


package-project-cmake: 1.11.1 -> 1.11.2

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/TheLartians/PackageProject.cmake/releases.
meta.description for package-project-cmake is: A CMake script for packaging C/C++ projects
meta.homepage for package-project-cmake is: https://github.com/TheLartians/PackageProject.cmake
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 1.11.2 in filename of file in /nix/store/3k5hix2vz04qwrnsdy1326qnhd1424w8-package-project-cmake-1.11.2

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath
package-project-cmake
poac

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/3k5hix2vz04qwrnsdy1326qnhd1424w8-package-project-cmake-1.11.2 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A package-project-cmake https://github.com/r-ryantm/nixpkgs/archive/bd2b193e20d4e259009d90c08a1fd63bea90c701.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/bd2b193e20d4e259009d90c08a1fd63bea90c701#package-project-cmake

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/3k5hix2vz04qwrnsdy1326qnhd1424w8-package-project-cmake-1.11.2
ls -la /nix/store/3k5hix2vz04qwrnsdy1326qnhd1424w8-package-project-cmake-1.11.2/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package failed to build:

poac

1 package built:

package-project-cmake

Maintainer pings
cc @ken-matsui for testing.

poac is broken on master


Disable animation

Hello. is it possible to disable animation in line_chart_sample2?

Yes, as we mentioned here (read the last line)
just set swapAnimationDuration to Duration.zero,
LineChart(
  showAvg ? avgData() : mainData(),
  swapAnimationDuration: Duration.zero,
),


No devices or entities

Wasn't sure if this should be considered a bug or a feature request as i'm not 100% sure if it SHOULD be working or not (likely not i assume).
I just tested this with an AirTap vent booster and while the discovery/add process did work just fine (after closing the app on my phone, as it can seemingly only connect to one device at a time), I get "No devices or entities" listed for the fan in the integration panel.   I'm not sure if this device uses different labels/params for it's fan, temp/humidity sensors but none of them are showing up currently.  I'll see if I can dig up more info about the params on these devices so that maybe I can submit a PR that adds support.

Apologies, accidentally submitted this to the wrong repo, meant to post it to the HA one.  Will resubmit there.


Fixes #259 - Sidebars now render on multiple pages

This adds code to render sidebars over multiple pages correctly. It does result in text existing in the document twice (as the last fix did - https://github.com/asciidoctor/asciidoctor-pdf/pull/735), which is a bit annoying, but it only really affects text searches and document size afaict.
A better fix is theoretically possible, but it would require significant reworking of the pdf renderer - the using the "dry_run" attribute, for instance.
Fix refactors convert_sidebar to mirror behaviour of convert_quote_or_verse, such that multiple pages draw correctly. Requires drawing the block content twice.
Fixes #259

Gah, false alarm, accidentally looking at the wrong spec build... getting closer though!


cli config

could we let extensions register argparse options (e.g. via setuptools entrypoints) for configuration when run via nameko run?
could we extend this to a nicer way to set options when hosting via code (i.e. something better than importing FOO_CONFIG_KEY)

How about accepting a config-file param?
As the number of extensions grows the list of args would grow making it a bit painful to list them as command line args.
To manage different sets of settings one is probably more likely to keep them in files, too.

Commandeering this issue to capture the discussion about registering configuration options.
Thanks to https://github.com/onefinestay/nameko/pull/255 we now have the ability to load config from a file, but there are a few other issues:

nameko run accepts a --broker option but none of the other configuration keys
most config is used by Extensions, which can be separate projects, but there's no way to inspect which config values are required or what their defaults are
importing FOO_CONFIG_KEY everywhere is ugly and you have to know where each Extension chooses to define them

If we registered configuration options and default values (via setuptools entrypoints?) we could:
a) access them from a known location (e.g. container.config)
b) inspect the required keys and any default values for a given set of extensions
c) automatically populate the argparse options for nameko run as @davidszotten suggests

@mattbennett what about reading environment variables?
export NAMEKO_AMQP_URI="amqp://guest:guest@localhost"

then in nameko.cli.main
import os
config = {k, v for k, v in os.environ if k.startswith('NAMEKO')}

@rochacbruno yep, I think env vars should be supported, but as part of a larger piece of work.

Maybe this example could be a good way to use environment variables on YAML config file:
http://stackoverflow.com/questions/26712003/pyyaml-parsing-of-the-environment-variable-in-the-yaml-configuration-file

Maybe this example could be a good way to use environment variables on YAML config file:
http://stackoverflow.com/questions/26712003/pyyaml-parsing-of-the-environment-variable-in-the-yaml-configuration-file

ENVVAR_PATTERN = re.compile(r'\$\{([a-zA-Z][^}:\s]+)(:([^}]+))?\}')
yaml.add_implicit_resolver ("!envvar", ENVVAR_PATTERN)

def replace_envvar(match):
    env_var, _, default = match.groups()
    if default == 'null':
        default = None
    return os.environ.get(env_var, default)

def envvar_constructor(loader, node):
    value = loader.construct_scalar(node)
    line = ENVVAR_PATTERN.sub(replace_envvar, value)
    return line
yaml.add_constructor('!envvar', envvar_constructor)

this looks really nice. i like the bash-style ${VAR_NAME<:DEFAULT_VALUE>}. @fabiocerqueira  would you like to raise a pull-request that implements this?

@davidszotten  @fabiocerqueira I'll be happy to pick this up if that's ok.

@kooba go ahead :D I thinks this would be great. It will be nice if supports different types, int values, float values, boolean values. Thank you.

It would be interesting to allow multiple config files.
In many applications, you have part of the configuration that is common to many/all services (like AMQP_URI, exchange, serializer, database url...) and some services need vry specific paramters.
Allowing --config to be a list (nargs='+') and updating config with these files would do the job
something like this:
config = {}
for conf_file in args.config):
    with open(conf_file) as fle:
            config.update(yaml.load(fle))

@rejoc I like this idea. We could bundle it into #520 (cc @iky) or make it as a standalone change first. Do you want to raise a PR?

is it common for tools to support multiple config files like this? (none of the ones i can think of do)
(i tend to handle this kind of sharing in my config management tooling)


deps: up goreleaser to v1.11.4

Details are here https://github.com/goreleaser/goreleaser/releases/tag/v1.11.4.

fixed https://github.com/kamilsk/godownloader/blob/5f0ce4ccc904a82f7e328b1d86b01e753f700d4c/go.mod#L8


Pathname must be a string in Docker container

When using this plugin (v1.2.0) inside of a Docker container I am running into the "Pathname must be a string. Got undefined" error. This is similar to https://github.com/tleunen/babel-plugin-module-alias/issues/15. I can get around this by setting PWD in my Docker environment, but it seems that it should fall back to process.cwd(), which is returning what I expect.

Changing
if(process.env.PWD) return path.resolve(process.env.PWD, filename);

on line 15 of src/index.js to
if(process.env.PWD || process.cwd()) return path.resolve(process.env.PWD || process.cwd(), filename);

should resolve this and works for me, but I have not considered any potential side-effects, so I will refrain from submitting a PR.

Yes I think relying on a environment variable is not great.
process.cwd() should be the answer but I know there's something a small difference between the 2, and I don't know if it could break the script for some users :s

Well, I know process.cwd() is sensitive to changes in the directory while the process is running (eg some script doing process.chdir()), but I doubt that is really relevant for a babel plugin, since it only runs punctually...
Speaking of which, am I correct in remembering that process.env.PWD doesn't even exist on Windows-based systems? How does babel-plugin-module-alias work around that?

You're right. The variable doesn't exists on Windows and someone added a fallback in that case. It seems to work fine for windows for that. (see https://github.com/tleunen/babel-plugin-module-alias/blob/master/src/index.js#L17-L21)
I'll make some tests changing it for process.cwd() this weekend :)

I pushed a new version using process.cwd() instead. I didn't notice any issue in my project so hopefully it will fix all the issues related to that.
Thanks.

Thanks! I had a fork where I was playing it safe by using process.env.PWD || process.cwd(), but this'll work just as well, I would think.

Let me know if you find any issue on that ;)


Substasks time tracking should be tied to substasks time settings

While it's nice to be able to define time for each subtask, i wonder why modifying time spent from the subtask doesn't affect the subtask time tracked one.

Can you give an example?

Sure !
If you modifiy afterward the time spent on a subtask, it won't be affected to the budget.
Budget should be tied to substask, even when you set a different time spent on it.

Ok, I understand now, you didn't mention it was for the budget the first time.
The budget is based on the "subtask timer" table at the moment, this why it's not affected but that can be improved.

Greatly appreciated !

This issue has been closed automatically by a bot for inactivity after more than 1 year. If you still need this feature, you should consider contributing to this open-source project.


MacOS bash: ./from-template.sh: No such file or directory

I'm using this issue to log my testing
% raco from-template guiapp
bash: ./from-template.sh: No such file or directory
#f

(About to go out to the SS Great Britain in Bristol so I won't get back to this till the evening )

Update
(define-runtime-path macosx-script "from-template.sh")

(define [clone-repo repo-name dir-name]
  (case (system-type 'os)
    [(unix)
     (system (string-append "bash ./from-template.sh " repo-name " " dir-name))]
    [(macosx)
     (system (string-append "bash " (path->string macosx-script) " " repo-name " " dir-name))]
    [(windows)
     (system (string-append (path->string windows-script) " " repo-name " " dir-name))]))

returns
spdegabrielle@Miriams-MacBook-Pro testing-from-template % raco from-template guiapp
guiapp
/Users/spdegabrielle/Dev/testing-from-template/
Cloning into 'guiapp'...
<EMAIL_ADDRESS>Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
/Users/spdegabrielle/Dev/from-template/from-template.sh: line 9: cd: guiapp: No such file or directory
#t
spdegabrielle@Miriams-MacBook-Pro testing-from-template %

Resolves #4


Home page errors when logging in if there are no diary entries

If you are a new user on a new server, the home page errors out because it attempts to access dictionary values for unset keys.

Closed by acceptance of PR #4 to upstream master, and then pull from upstream.


chore(deps): upgrade dependencies

Upgrades project dependencies. See details in workflow run.

Automatically created by projen via the "upgrade" workflow

close the PR with bot


No user has SFTP access to site folders. Fresh setup

Just get permission denied when trying to access the folders.
Tried using the SFTP guide to setup container and mount volumes that way, but doesn't seem to be working at all. If someone has a guide on how that is suppose to work, but checking docker ps it was showing it as running, however trying to connect via port 2222 just doesn't connect.

Will to pay for support on this. Been wasting time trying to find alternatives without breaking anything

https://easyengine.io/handbook/configure-sftp-on-ee4-server/


Add tensor2scalar

Codecov Report

Merging #98 into master will increase coverage by 0.05%.
The diff coverage is 70.58%.

@@            Coverage Diff             @@
##           master      #98      +/-   ##
==========================================
+ Coverage   38.45%   38.51%   +0.05%
==========================================
  Files          83       83
  Lines        9894     9898       +4
  Branches     2084     2084
==========================================
+ Hits         3805     3812       +7
+ Misses       5870     5869       -1
+ Partials      219      217       -2

Impacted Files
Coverage Δ

neural_sp/models/seq2seq/decoders/las.py
50.38% <62.50%> (+0.05%)
:arrow_up:

neural_sp/models/seq2seq/decoders/transformer.py
59.09% <66.66%> (+0.07%)
:arrow_up:

neural_sp/models/torch_utils.py
78.57% <100.00%> (+0.79%)
:arrow_up:

...eural_sp/models/seq2seq/decoders/rnn_transducer.py
75.78% <0.00%> (+0.62%)
:arrow_up:

neural_sp/models/modules/cif.py
86.25% <0.00%> (+1.25%)
:arrow_up:

Continue to review full report at Codecov.

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


Hitting undo on a dashboard shows last edited dashboard

Bug description
Repro steps

Go to a dashboard (A) and edit it and save
Go to dashboard list
Select another dashboard (B) and hit edit
Click on the undo button

Actual results:
Undo will show dashboard A even though you are on dashboard B.
Making additional changes on the dashboard will allow the user to incorrectly save the changes.
Expected results:
Undo button shouldn't be enabled if there are no actions made yet on the second dashboard.
Undoing in one dashboard should never load a different dashboard
Screenshots/recordings
https://github.com/user-attachments/assets/998cdc0e-290d-4f3d-92f6-5243bbcfb7e5
Superset version
master / latest-dev
Python version
3.9
Node version
16
Browser
Chrome
Additional context
No response
Checklist

[ ] I have searched Superset docs and Slack and didn't find a solution to my problem.
[ ] I have searched the GitHub issue tracker and didn't find a similar bug report.
[ ] I have checked Superset's logs for errors and if I found a relevant Python stacktrace, I included it here as text in the "additional context" section.

🎉 Preset Bounty Available: $150 USD 🎉
To claim this bounty, please carefully follow the steps below.

📋 Steps to Participate

Review Guidelines:
Read through the Preset Bounty Program Contribution Guide for complete details on bounty requirements.

Show Your Interest:
Complete the Preset Bounty Program Survey and comment this issue to express your interest.

Join the Slack Channel:
After completing the survey, you’ll receive an invitation to the dedicated Apache Superset Slack channel.

Get Assigned:
To officially start, ensure a Bounty Program Manager has assigned you to this issue.

Submit Your Solution:
When ready, submit your solution with the Fixes #{issue_number} notation in your Pull Request description.

Claim Your Bounty:
Sign up at GitPay.me and submit your solution via: https://gitpay.me/#/task/1031

💡 Additional Notes

Only developers assigned by a Bounty Program Manager should start working on this issue to win the bounty.
Be sure to follow the guide closely to avoid any delays in payment. Please, allow a few days after your PR has been merged for the bounty to be released.

Good luck, and happy coding! 🎉

Please assign me, I would love to work on this. --Thank you.

Hey can I work on this issue?

Hello :) i can work on this issue

Can I work on this issue?


Use Swapr-specific Pool Reader

Follow-up to #1719 and #1720
This PR moves dyn PoolFetching initialization into each UniswapV2-like liquidity source module. Previously, each module only created their own PairProvider instances since they were liquidity-configuration-dependent (specifically, it depended on the factory address and init code hash which was different for each UniswapV2-like liquidity source). However, it turns out Swapr also has specific pool state fetching logic (see aforementioned PRs for more details), which means that each UniswapV2-like liquidity module also needs to be responsible for creating their own dyn PoolFetching instance (since the PoolReading implementation varies from liquidity source to liquidity source).
The end-result: Swapr liquidity works correctly now! It should no longer have a fixed fee of 0.3% and now read it from the block chain when fetching liquidity.
Test Plan
CI and Rust type checker. The only "new logic" is that the Swapr dyn PoolFetching is created with SwaprPoolReader instead of a DefaultPoolReader. The existing manual test that fetched an on-chain Swapr pool was modified to use the module-level created dyn PoolFetching:
% cargo test -p shared -- --ignored --nocapture swapr
    Finished test [unoptimized + debuginfo] target(s) in 0.21s
     Running unittests (target/debug/deps/shared-25ec9fa0fee90af3)

running 1 test
WETH <> wxDAI pool: Pool {
    tokens: TokenPair(
        0x6a023ccd1ff6f2045c3309768ead9e68f978f6e1,
        0xe91d153e0b41518a2ce8dd3d7944fa863463a97d,
    ),
    reserves: (
<PHONE_NUMBER>08702239633,
<PHONE_NUMBER>75408422373175,
    ),
    fee: Ratio {
        numer: 1,
        denom: 400,
    },
}
test sources::swapr::reader::tests::fetch_swapr_pool ... ok

Note that this test still returns a on-chain fetched fee of 0.25% instead of defaulting to 0.3%
Release Notes
Swapr liquidity can now be re-enabled on Gnosis Chain.

Codecov Report

Merging #1721 (d60d028) into swapr-reader (490aace) will increase coverage by 0.03%.
The diff coverage is 40.74%.

@@               Coverage Diff                @@
##           swapr-reader    #1721      +/-   ##
================================================
+ Coverage         65.72%   65.76%   +0.03%
================================================
  Files               179      179
  Lines             36157    36154       -3
================================================
+ Hits              23764    23775      +11
+ Misses            12393    12379      -14

This sentence in the PR description cuts off.

Oops 🙈! Updated the description to be more grammatically correct.


Consider using Bencher::bench_refs

Thanks for the cool benchmark! Glad to see how folks are using Divan.
I think it might be an improvement to use Bencher::bench_refs instead of Bencher::bench_values because it would:

Remove the time to deallocate the inputs from benchmarks
Balance dealloc info with alloc info

Good point! I've updated the benchmark code and results.
Also, thanks for your work on Divan—it's a great library and I look forward to using it in future projects.

Thanks for the kind words!
Also, you don't need to black_box inputs passed via bench_refs. 🙂

@nvzqz
Divan is a great library! Thank you for giving me the pre-release demo at RustConf!
Two questions for you:
What is the diffence between bench_local_refs and bench_refs?
Is there a way to get the output in a format that would make it simply to plot results with matplotlib?

bench_local_refs does not have a Sync requirement. This allows for mutating local variables at the cost of not being able to benchmark across multiple threads. Thanks for asking since I didn't realize I hadn't documented any distinction between them.
Not yet. I recommend subscribing to https://github.com/nvzqz/divan/issues/10 for updates on this.

@nvzqz Thank you for the prompt reply! Does it matter whether I use bench_local_refsor bench_refs if the function being benchmarked is single-threaded?

They behave the same in single-threaded benchmarks. I would stick to bench_refs unless you need bench_local_refs.


Get witx-bindgen-gen-{core,rust,wasmtime} and witx-bindgen compiling again

This doesn't get the test crates compiling or running again, as I think that requires at minimum some updates to the test witx files.

👍


Add a warning to README.md

... to not use the role against a production SAP NetWeaver system.

Solved in pull request #13 .


Input Modifiers don't properly apply

Godot version
4.0 Beta 13
System information
Windows 11, Vulkan, GTX 1050 Ti 527.56
Issue description
Modifiers don't work as expected when used on the fly (holding & releasing them or Inputs that are affected by them)
Expected:
Holding W - Returns W
Starting with Shift - Returns Shift W (and possibly W and Shift Separately)
Holding Shift - Returns Shift
Starting with W - Returns Shift W (and possibly W and Shift Separately)
Stopping Shift - Returns W
Experimental Results:
Holding W - Returns W
Starting with Shift - returns W and Shift, no Shift W
Holding Shift - Returns Shift
Starting with W - Returns W, Shift W and Shift
Stopping Shift - Returns W and Shift W
Steps to reproduce
In MRP
Hold W, then start holding Shift, Observe Results
Hold Shift, then start Holding W, and then stop Holding Shift, Observe Results
Minimal reproduction project
MSRP.zip

Also reproducible using `event.is_shift_pressed' which always returns true regardless of shift modifier state.
event.as_text does return the actual state.
extends Node2D

func _input(event):
    if event is InputEventKey and event.pressed:
	    if event.keycode == KEY_T:
		    print("As Text = ", event.as_text())
		    if event.is_ctrl_pressed:
			    print("Ctrl+T was pressed")
		    if event.is_shift_pressed:
			    print("Shift was pressed")

`


sched/misc/assert.c: don't compile dump_assert_info logic if CONFIG_DEBUG_ALERT=n

Summary
Don't compile dump_assert_info() logic if CONFIG_DEBUG_ALERT=n.
With _alert() disabled this logic does nothing, but the compiler is not smart enough to optimize this code.
On minimal stm32f3 configuration it saves 220B of flash.
Impact
save some space for systems not using _alert()
Testing
nucleo-f302r8

[Experimental Bot, please feedback here]
Yes, this PR appears to meet the NuttX requirements, although it could be more thorough.  While concise, it lacks some specifics.
Here's a breakdown of what's good and what could be improved:
Strengths:

Clear Summary: The summary explains the why, what, and how of the change. The benefit (flash saving) is also mentioned.
Impact Acknowledged: The impact on flash size is noted.
Testing Performed:  A target platform is mentioned.

Weaknesses:

Missing Issue References:  No related issue is referenced. Even if there isn't one, stating "N/A" would be helpful.
Impact Under-specified: While flash size is mentioned, the other impact categories are not explicitly addressed (even with "NO").  Explicitly stating "NO" for most categories helps reviewers quickly assess the scope of the change.
Testing Insufficiently Detailed:  While a target is mentioned, there are no build host details, compiler information, or actual test logs. "nucleo-f302r8" is not enough information; the specific configuration should be mentioned (e.g., nsh).  The provided log sections are empty.  Without logs demonstrating the before/after difference in flash usage, the claim of 220B savings isn't verifiable.

Recommendation:  The PR author should add the following:

Link to a related issue or state "N/A".
Explicitly address all impact categories, even if the answer is "NO".
Provide detailed build host information (OS, CPU, compiler version).
Specify the exact NuttX configuration used for testing (e.g., nsh).
Include actual before/after test logs (e.g., size output) demonstrating the flash usage difference.

By adding these details, the PR will be much stronger and easier for reviewers to evaluate.


[AutoPR eventgrid/resource-manager] EventGrid: New preview API version with support for additional destination types, CloudEvents 1.0, and batching support.

Created to sync https://github.com/Azure/azure-rest-api-specs/pull/7527

This PR has been merged into https://github.com/Azure/azure-sdk-for-go/pull/6117


not compatible with flattened multipart file uploads introduced in 0.4.0

Hi,
The 0.4.0 release of go-ipfs introduced a change to multipart file upload that breaks compatibility when adding directories (https://github.com/ipfs/go-ipfs/pull/2046)
Currently when adding a directory via py-ipfs-api  with recursive=True, the server adds a plain file with multipart encoding noise, e.g.:
--7587cf2cd7c54e3393bc49f454e626ce
Content-Disposition: file; filename="a%2Fb"
Content-Type: multipart/mixed; boundary="debd9482563f4d0eb04c6dcfa5cef500"

--debd9482563f4d0eb04c6dcfa5cef500
Content-Disposition: file; filename="a%2Fb%2Fc"
Content-Type: application/octet-stream

abcd123

--debd9482563f4d0eb04c6dcfa5cef500--
--7587cf2cd7c54e3393bc49f454e626ce--

Instead of nested multipart items that are chunked by size, the API now expects one multipart boundary, with one part per file or directory.  Also, directories and symlinks are now expected to have the Content-Type of application/x-directory or application/symlink.
Here's an example of the expected input format: https://github.com/ipfs/go-ipfs/blob/8c4900b3b8341fdc4667e57d9e45fe73bad4d123/commands/files/file_test.go#L82

It seems like https://github.com/ipfs/py-ipfs-api/issues/41 may be related, since this issue affects directory uploads

This is resolved by #46 , if it gets accepted.


Remove lodashUnionWith as it breaks the sequential queue processing

Details
While investigating this issue I discovered that the SequentialQueue is not working correctly and duplicate actions taken by a user are actually getting removed by the code we added here:
https://github.com/Expensify/App/blob/91939483199f070ea4d62e874ad504c1f4ed89ec/src/libs/actions/NetworkRequestQueue.js#L20
This is a pretty big oversight. As it means that if a user takes an action that is identical to some other action they've taken (i.e. identical according to _.isEqual()) then it will be "unioned" or removed from the persisted requests array. In actuality new requests should always be concatenated and never deduplicated like this.
I think this code predates the sequential queue and it sounds like the reasoning is some kind of unplanned deduplication effort: https://github.com/Expensify/App/pull/6556/commits/5cd8b4a727f69d3013b8ae0212098807a4988ceb
Fixed Issues
$ https://github.com/Expensify/App/issues/14584
Tests
Same as QA

[ ] Verify that no errors appear in the JS console

Offline tests
The test is an offline test
QA Steps

Go offline
Pin a chat
Unpin a chat
Pin a chat again
Go online
Verify that the chat ends up in the correct state of "pinned"

[ ] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android / native
[x] Android / Chrome
[x] iOS / native
[x] iOS / Safari
[x] MacOS / Chrome / Safari
[x] MacOS / Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is correct English and approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG)

[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Web

Mobile Web - Chrome

Mobile Web - Safari

Desktop

iOS

Android

Screenshots/Videos

Web
https://user-images.githubusercontent.com/25876548/215032696-b4dead13-2af1-474b-ad08-7b4f40941a92.mov

Mobile Web - Chrome
https://user-images.githubusercontent.com/25876548/215036881-9d2d931f-7d1e-458b-9b25-e92ccc54c129.mov

Mobile Web - Safari
https://user-images.githubusercontent.com/25876548/215036899-8bd96f96-0e9f-45a0-9f20-74dd21ebff1c.mov

Desktop
https://user-images.githubusercontent.com/25876548/215034009-e6c40496-850e-4ec7-aad1-dcab1fed8101.mov

iOS
https://user-images.githubusercontent.com/25876548/215036171-f1d6da13-f056-4513-9f96-ab550a029b05.mov

Android
https://user-images.githubusercontent.com/25876548/215036188-34163fe8-3e7f-45d7-b8de-848dfe9ed50f.mov

In the screen records above, it can be noticed that if a user is offline and toggles pin/unpin button of a report multiple times, then the report shuffles multiple times in LHN after user is reconnected to the internet. Just noting it here to make sure it is expected.

the report shuffles multiple times in LHN after user is reconnected to the internet

Yep! It's how the sequential queue is supposed to work (for now). We are mainly concerned that the state ends up correctly after the queue is emptied fully. This could be improved in the future, but it's how we designed this stuff to work.

@marcaaron I'm curious though, I think this bug only happens because we only have one function for pinning/unpinning - togglePinnedState. If we instead had separate functions for pinning and unpinning, with separate API calls, then that would also solve this bug right? And we could still de-dupe the persisted requests.

I think this bug only happens because we only have one function for pinning/unpinning - togglePinnedState

I understand the alternate solution and it's something I hadn't thought about. Though, I don't think that's the reason why the bug happens. Like, we could also de-duplicate from the end of the queue rather than the beginning and the bug would not happen.

And we could still de-dupe the persisted requests.

I think we need to have a wider conversation about that. The SequentialQueue design is such that we will replay actions a user took back in the order they were taken. De-duplicating them might be a good idea - but it's not clear that we ever intended for this to happen. Not saying we can't change that, but I'm just trying to make the app work how we planned it should work.

Ok that logic makes sense to me. Let's make it work as intended 😅

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by https://github.com/puneetlath in version: 1.2.63-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/thienlnam in version: 1.2.63-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

Thanks for chiming in @kidroca

I think actions like pin/unpin should be distinct (or at least have a parameter)

For what it's worth - the command does have a parameter:
https://github.com/Expensify/App/blob/21486cd0173aca0f3ac2d9991c9898063af8fb54/src/libs/actions/Report.js#L595-L597
It seems like there was already an issue with the implementation as were de-duplicating the requests by preferring the older actions vs. the most recent.
I generally agree with the sentiment that we are not yet finished improving the way this stuff works and it can always be better.


Product Store Linked Shipment Methods Missing and Duplicated in Dropdown

Current behavior
Some linked shipment methods are missing from the dropdown.
Duplicate entries are shown when a shipment method is associated with multiple carriers.
Expected behavior
All product store linked shipment methods should be visible in the dropdown.
Each shipment method should appear only once, even if linked to multiple carriers.
Steps to reproduce the issue
Make sure from the Fulfillment App that a method is linked with the product store and with multiple carriers.
Open the BOPIS App and navigate to the shipment method selection dropdown on settings page.
Observe the available shipment methods.
Environment details
App version : v2.24.2
App environment : UAT
Additional information
https://jam.dev/c/08f50fa9-c05a-4f08-bc37-7f862ade7519

Need to open a modal here instead where user can select carrier ship method instead of just method and guess which carrier is being selected.
Re-route settings card in settings page

Method selector modal:


SideCars File Tests

Problem
We need to do some testing for sidecars file generation from the smart contract side, and verify its attributes.
Solution

Create a set of smart contracts that call eachother and produces some trace sidecars files
Call those smart contracts and inpect the results

Alternatives
No response

Results of the tests were documented on Notion and shared with interested parties


Added Api Clients

Short description outlining key changes/additions
New infrastructure code to allow us to call endpoints from across any companies house service. Also included a method to fetch the company profile from the company-profiles-api. Also included a TestController that might be useful in the immediate term, but will need to be destroyed later.
JIRA Ticket Number
IDVA6-484
Type of change

[ ] Bug fix
[x] New feature
[ ] Breaking change
[x] Infrastructure change

Pull request checklist

[x] I have added unit tests for new code that I have added
[x] I have added/updated functional tests where appropriate
[x] The code follows our coding standards

An exhaustive list of peer review checks can be read here

CI: No security warnings found

CI: No security warnings found


Modify integration to support sending data to an HTTP/HTTPS endpoint

This step is required to have a long-running integration sending data to a agent sidecar.
The approach is similar to nri-kube-events

Implemented in https://github.com/newrelic/nri-kubernetes/pull/248


Expose global fields to construct the proxy URLs for chart deployment

Feature charts like monitoring will need access to global fields for the Rancher URL and Cluster ID of the cluster it is being deployed into in order to be able to properly set required URLs that utilize the Dashboard magic links such as:
<rancher-url>/k8s/clusters/<cluster-id>/api/v1/namespaces/cattle-monitoring-system/services/http:rancher-monitoring-grafana:80/proxy
Specifically, it would be great if these could be provided to feature charts on deployment as part of the values.yaml in the following fields:
global:
  rancher:
    url: <rancher-url>
    clusterId: <cluster-id>

Related Issue: https://github.com/rancher/rancher/issues/28495

@vincent99 I think we discussed this in a prior design meeting, can you sign off on whether these two new fields look good to you? The backend changes for the monitoring chart to support the global fields described above are in https://github.com/rancher/charts/pull/582, so if there are no problems from Dashboard's end, we should be good to go.
cc: @cbron @brendarearden
I believe Istio requires these global fields as well since https://github.com/rancher/charts/pull/577 introduced .Values.global.rancher.clusterId here in the patch.

clusterId is fine.  You might want clusterName in there too with the current name (even though it could be renamed later), there was a chart for kubecost or something like that that that wanted to know it.
For the URL I think we need to clarify what it means.  The server-urlsetting value?  You could provide a value for it but thus isn't currently required to be set if you stick to the new dashboard/single cluster experience.
So ideally what you provide is root-relative, and what sounds the most useful would be something like apiBase: /k8s/clusters/<id filled in> because that's the rancher-specific part of the proxy URL you're constructing.

Switching this review to @brendarearden since she's working on the changes in https://github.com/rancher/rancher/issues/28495 that require these changes in.

@vincent99: I noticed that the values.yaml based approach of installing the charts via the Dashboard doesn't show that UI will be sending these fields in, i.e.

What happens if a user provides a value for global.rancher.* in this area? Does the user-provided value take priority or the Rancher-provided value?
Also, in general I think it would be nice if these global.rancher.* values actually showed up in the values.yaml diff so that users are aware that these values are being passed in to override Chart defaults.

This field is no longer required for https://github.com/rancher/rancher/issues/28495 since we are using nginx proxies in front of Grafana and Prometheus. However, this may be required for fixing https://github.com/rancher/rancher/issues/29068 since it seems like the External URL will need to be set to resolve this.
re: the relative url, we don't need to have the absolute path, so what Vincent suggested in https://github.com/rancher/dashboard/issues/1168#issuecomment-685909447 should be fine.

For https://github.com/rancher/rancher/issues/28901, the .Values.global.clusterId field is used for the Kiali link fix (https://github.com/rancher/charts/blob/082accaf9a026237277a8a9dc5b6c0140bec5e95/packages/rancher-kiali-server/rancher-kiali-server.patch#L125)

in rancher:master-f1a410a97e2abf8c81c62195a7b40f10007398f0-head
When installing monitoring v2 into a downstream clsuter via the dashobaord, the following values are sent in the payload of the PUT request
values.global.cattle.clusterId
values.global.cattle.clusterName
values.global.cattle.systemDefaultRegistry
values.systemDefaultRegistry


Fix: Default cache url

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


option to hide iSponsorBlock button

Hey I shouldn’t have recommended you to change hideShorts, it was not supposed to be repositioned or changed. That option doesn’t work with the new settings layout because it does not persist. So if someone toggles it on now then it will be unchanged. I recommend checking the hideShorts code in CercubePlus.xm at the line 1700 to show you why it wasn’t supposed to be changed.

let me check it

now should be good. i compiled it as tweak so its recommended to re-check it on theos-jailed before merging
here is how it works for me now:
https://user-images.githubusercontent.com/38832025/216786288-d04913c4-be6a-4dd4-a909-e022e829ecce.mp4

Wait you fixed the Persisting issue? I think you did a very better job then what I did. Merging Pull