Add contract info

What
Adds contract info command following https://github.com/stellar/stellar-cli/issues/1506 spec.
Available flags (for all subcommands)
* `--wasm <WASM>` — Wasm file to extract the data from
* `--wasm-hash <WASM_HASH>` — Wasm hash to get the data for
* `--id <CONTRACT_ID>` — Contract id to get the data for
* `--rpc-url <RPC_URL>` — RPC server endpoint
* `--network-passphrase <NETWORK_PASSPHRASE>` — Network passphrase to sign the transaction sent to the rpc server
* `--network <NETWORK>` — Name of network to use from config
* `--global` — Use global config
* `--config-dir <CONFIG_DIR>` — Location of config directory, default is "."

Shared output flag for meta/env-meta:
* `--output <OUTPUT>` — Format of the output

  Default value: `text`

  Possible values:
  - `text`:
    Text output of the meta info entry
  - `xdr-base64`:
    XDR output of the info entry
  - `json`:
    JSON output of the info entry (one line, not formatted)
  - `json-formatted`:
    Formatted (multiline) JSON output of the info entry

Output flag for interface:
* `--output <OUTPUT>` — Format of the output

  Default value: `rust`

  Possible values:
  - `rust`:
    Rust code output of the contract interface
  - `xdr-base64`:
    XDR output of the info entry
  - `json`:
    JSON output of the info entry (one line, not formatted)
  - `json-formatted`:
    Formatted (multiline) JSON output of the info entry

Examples of running the command:
stellar contract info env-meta
stellar-cli contract info env-meta --network testnet --wasm ~/wasm/soroban_liquidity_pool_contract.wasm

Contract env-meta:
 • Protocol: v21
 • Interface: v0
 • Interface Version:<PHONE_NUMBER>6

stellar contract info meta
stellar-cli contract info meta --network testnet --wasm ~/wasm/soroban_liquidity_pool_contract.wasm --output json

[{"sc_meta_v0":{"key":"Description","val":"Constant product AMM with a .3% swap fee"}},{"sc_meta_v0":{"key":"rsver","val":"1.79.0"}},{"sc_meta_v0":{"key":"rssdkver","val":"21.4.0#d6f5639f643d76e758beecbb0ca391f8cd304c24"}}]

stellar-cli contract info meta --network testnet --wasm ~/wasm/soroban_liquidity_pool_contract.wasm

Contract meta:
 • Description: Constant product AMM with a .3% swap fee
 • rsver: 1.79.0 (Rust version)
 • rssdkver: 21.4.0#d6f5639f643d76e758beecbb0ca391f8cd304c24 (Soroban SDK version and it's commit hash)

stellar contract info interface
stellar contract info interface --network testnet --wasm-hash \
102431a5a5bc74bdb6bf2803c74080b67d070c522482c278a921563cb71ecc1a

#[soroban_sdk::contractclient(name = "Client")]
pub trait Contract {
    fn hello(
        env: soroban_sdk::Env,
        to: soroban_sdk::Symbol,
    ) -> soroban_sdk::Vec<soroban_sdk::Symbol>;
}

stellar-cli contract info interface --network testnet --id CC434MK5OCXTDMZTBZXS7WQP6SOYFWVAZY23PRGAPUQZXARGQRZP3FJH

#[soroban_sdk::contractclient(name = "Client")]
pub trait Contract {
    fn initialize(
        env: soroban_sdk::Env,
        token_wasm_hash: soroban_sdk::BytesN<32>,
        token_a: soroban_sdk::Address,
        token_b: soroban_sdk::Address,
    );
    fn share_id(env: soroban_sdk::Env) -> soroban_sdk::Address;
    fn deposit(
        env: soroban_sdk::Env,
        to: soroban_sdk::Address,
        desired_a: i128,
        min_a: i128,
        desired_b: i128,
        min_b: i128,
    );
    fn swap(
        env: soroban_sdk::Env,
        to: soroban_sdk::Address,
        buy_a: bool,
        out: i128,
        in_max: i128,
    );
    fn withdraw(
        env: soroban_sdk::Env,
        to: soroban_sdk::Address,
        share_amount: i128,
        min_a: i128,
        min_b: i128,
    ) -> (i128, i128);
    fn get_rsrvs(env: soroban_sdk::Env) -> (i128, i128);
}

stellar-cli contract info interface --network testnet --wasm ~/wasm/soroban_custom_types_contract.wasm

#[soroban_sdk::contractclient(name = "Client")]
pub trait Contract {
    fn hello(env: soroban_sdk::Env, hello: soroban_sdk::Symbol) -> soroban_sdk::Symbol;
    fn auth(
        env: soroban_sdk::Env,
        addr: soroban_sdk::Address,
        world: soroban_sdk::Symbol,
    ) -> soroban_sdk::Address;
    fn get_count(env: soroban_sdk::Env) -> u32;
    fn inc(env: soroban_sdk::Env) -> u32;
    fn woid(env: soroban_sdk::Env);
    fn val(env: soroban_sdk::Env) -> soroban_sdk::Val;
    fn u32_fail_on_even(
        env: soroban_sdk::Env,
        u32_: u32,
    ) -> Result<u32, soroban_sdk::Error>;
    fn u32_(env: soroban_sdk::Env, u32_: u32) -> u32;
    fn i32_(env: soroban_sdk::Env, i32_: i32) -> i32;
    fn i64_(env: soroban_sdk::Env, i64_: i64) -> i64;
    fn strukt_hel(
        env: soroban_sdk::Env,
        strukt: Test,
    ) -> soroban_sdk::Vec<soroban_sdk::Symbol>;
    fn strukt(env: soroban_sdk::Env, strukt: Test) -> Test;
    fn simple(env: soroban_sdk::Env, simple: SimpleEnum) -> SimpleEnum;
    fn complex(env: soroban_sdk::Env, complex: ComplexEnum) -> ComplexEnum;
    fn addresse(
        env: soroban_sdk::Env,
        addresse: soroban_sdk::Address,
    ) -> soroban_sdk::Address;
    fn bytes(env: soroban_sdk::Env, bytes: soroban_sdk::Bytes) -> soroban_sdk::Bytes;
    fn bytes_n(
        env: soroban_sdk::Env,
        bytes_n: soroban_sdk::BytesN<9>,
    ) -> soroban_sdk::BytesN<9>;
    fn card(env: soroban_sdk::Env, card: RoyalCard) -> RoyalCard;
    fn boolean(env: soroban_sdk::Env, boolean: bool) -> bool;
    fn not(env: soroban_sdk::Env, boolean: bool) -> bool;
    fn i128(env: soroban_sdk::Env, i128: i128) -> i128;
    fn u128(env: soroban_sdk::Env, u128: u128) -> u128;
    fn multi_args(env: soroban_sdk::Env, a: u32, b: bool) -> u32;
    fn map(
        env: soroban_sdk::Env,
        map: soroban_sdk::Map<u32, bool>,
    ) -> soroban_sdk::Map<u32, bool>;
    fn vec(env: soroban_sdk::Env, vec: soroban_sdk::Vec<u32>) -> soroban_sdk::Vec<u32>;
    fn tuple(
        env: soroban_sdk::Env,
        tuple: (soroban_sdk::Symbol, u32),
    ) -> (soroban_sdk::Symbol, u32);
    fn option(env: soroban_sdk::Env, option: Option<u32>) -> Option<u32>;
    fn u256(env: soroban_sdk::Env, u256: soroban_sdk::U256) -> soroban_sdk::U256;
    fn i256(env: soroban_sdk::Env, i256: soroban_sdk::I256) -> soroban_sdk::I256;
    fn string(env: soroban_sdk::Env, string: soroban_sdk::String) -> soroban_sdk::String;
    fn tuple_strukt(env: soroban_sdk::Env, tuple_strukt: TupleStruct) -> TupleStruct;
}
#[soroban_sdk::contracttype(export = false)]
#[derive(Debug, Clone, Eq, PartialEq, Ord, PartialOrd)]
pub struct Test {
    pub a: u32,
    pub b: bool,
    pub c: soroban_sdk::Symbol,
}
#[soroban_sdk::contracttype(export = false)]
#[derive(Debug, Clone, Eq, PartialEq, Ord, PartialOrd)]
pub struct TupleStruct(pub Test, pub SimpleEnum);
#[soroban_sdk::contracttype(export = false)]
#[derive(Debug, Clone, Eq, PartialEq, Ord, PartialOrd)]
pub enum SimpleEnum {
    First,
    Second,
    Third,
}
#[soroban_sdk::contracttype(export = false)]
#[derive(Debug, Clone, Eq, PartialEq, Ord, PartialOrd)]
pub enum ComplexEnum {
    Struct(Test),
    Tuple(TupleStruct),
    Enum(SimpleEnum),
    Asset(soroban_sdk::Address, i128),
    Void,
}
#[soroban_sdk::contracttype(export = false)]
#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
pub enum RoyalCard {
    Jack = 11,
    Queen = 12,
    King = 13,
}
#[soroban_sdk::contracterror(export = false)]
#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd)]
pub enum Error {
    NumberMustBeOdd = 1,
}

 > stellar-cli contract info interface --network testnet --wasm ~/wasm/soroban_token_contract.wasm --output xdr-base64

AAAAAAAAAAAAAAAKaW5pdGlhbGl6ZQAAAAAABAAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAdkZWNpbWFsAAAAAAQAAAAAAAAABG5hbWUAAAAQAAAAAAAAAAZzeW1ib2wAAAAAABAAAAAAAAAAAAAAAAAAAAAEbWludAAAAAIAAAAAAAAAAnRvAAAAAAATAAAAAAAAAAZhbW91bnQAAAAAAAsAAAAAAAAAAAAAAAAAAAAJc2V0X2FkbWluAAAAAAAAAQAAAAAAAAAJbmV3X2FkbWluAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAlhbGxvd2FuY2UAAAAAAAACAAAAAAAAAARmcm9tAAAAEwAAAAAAAAAHc3BlbmRlcgAAAAATAAAAAQAAAAsAAAAAAAAAAAAAAAdhcHByb3ZlAAAAAAQAAAAAAAAABGZyb20AAAATAAAAAAAAAAdzcGVuZGVyAAAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAAAAAARZXhwaXJhdGlvbl9sZWRnZXIAAAAAAAAEAAAAAAAAAAAAAAAAAAAAB2JhbGFuY2UAAAAAAQAAAAAAAAACaWQAAAAAABMAAAABAAAACwAAAAAAAAAAAAAACHRyYW5zZmVyAAAAAwAAAAAAAAAEZnJvbQAAABMAAAAAAAAAAnRvAAAAAAATAAAAAAAAAAZhbW91bnQAAAAAAAsAAAAAAAAAAAAAAAAAAAANdHJhbnNmZXJfZnJvbQAAAAAAAAQAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAAAAAAEZnJvbQAAABMAAAAAAAAAAnRvAAAAAAATAAAAAAAAAAZhbW91bnQAAAAAAAsAAAAAAAAAAAAAAAAAAAAEYnVybgAAAAIAAAAAAAAABGZyb20AAAATAAAAAAAAAAZhbW91bnQAAAAAAAsAAAAAAAAAAAAAAAAAAAAJYnVybl9mcm9tAAAAAAAAAwAAAAAAAAAHc3BlbmRlcgAAAAATAAAAAAAAAARmcm9tAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAAAAAAAAAAAAAAAACGRlY2ltYWxzAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAEbmFtZQAAAAAAAAABAAAAEAAAAAAAAAAAAAAABnN5bWJvbAAAAAAAAAAAAAEAAAAQAAAAAQAAAAAAAAAAAAAAEEFsbG93YW5jZURhdGFLZXkAAAACAAAAAAAAAARmcm9tAAAAEwAAAAAAAAAHc3BlbmRlcgAAAAATAAAAAQAAAAAAAAAAAAAADkFsbG93YW5jZVZhbHVlAAAAAAACAAAAAAAAAAZhbW91bnQAAAAAAAsAAAAAAAAAEWV4cGlyYXRpb25fbGVkZ2VyAAAAAAAABAAAAAIAAAAAAAAAAAAAAAdEYXRhS2V5AAAAAAQAAAABAAAAAAAAAAlBbGxvd2FuY2UAAAAAAAABAAAH0AAAABBBbGxvd2FuY2VEYXRhS2V5AAAAAQAAAAAAAAAHQmFsYW5jZQAAAAABAAAAEwAAAAEAAAAAAAAABVN0YXRlAAAAAAAAAQAAABMAAAAAAAAAAAAAAAVBZG1pbgAAAAAAAAEAAAAAAAAAAAAAAA1Ub2tlbk1ldGFkYXRhAAAAAAAAAwAAAAAAAAAHZGVjaW1hbAAAAAAEAAAAAAAAAARuYW1lAAAAEAAAAAAAAAAGc3ltYm9sAAAAAAAQ

 > stellar-cli contract info interface --network testnet --wasm ~/wasm/soroban_token_contract.wasm --output json

[{"function_v0":{"doc":"","name":"initialize","inputs":[{"doc":"","name":"admin","type_":"address"},{"doc":"","name":"decimal","type_":"u32"},{"doc":"","name":"name","type_":"string"},{"doc":"","name":"symbol","type_":"string"}],"outputs":[]}},{"function_v0":{"doc":"","name":"mint","inputs":[{"doc":"","name":"to","type_":"address"},{"doc":"","name":"amount","type_":"i128"}],"outputs":[]}},{"function_v0":{"doc":"","name":"set_admin","inputs":[{"doc":"","name":"new_admin","type_":"address"}],"outputs":[]}},{"function_v0":{"doc":"","name":"allowance","inputs":[{"doc":"","name":"from","type_":"address"},{"doc":"","name":"spender","type_":"address"}],"outputs":["i128"]}},{"function_v0":{"doc":"","name":"approve","inputs":[{"doc":"","name":"from","type_":"address"},{"doc":"","name":"spender","type_":"address"},{"doc":"","name":"amount","type_":"i128"},{"doc":"","name":"expiration_ledger","type_":"u32"}],"outputs":[]}},{"function_v0":{"doc":"","name":"balance","inputs":[{"doc":"","name":"id","type_":"address"}],"outputs":["i128"]}},{"function_v0":{"doc":"","name":"transfer","inputs":[{"doc":"","name":"from","type_":"address"},{"doc":"","name":"to","type_":"address"},{"doc":"","name":"amount","type_":"i128"}],"outputs":[]}},{"function_v0":{"doc":"","name":"transfer_from","inputs":[{"doc":"","name":"spender","type_":"address"},{"doc":"","name":"from","type_":"address"},{"doc":"","name":"to","type_":"address"},{"doc":"","name":"amount","type_":"i128"}],"outputs":[]}},{"function_v0":{"doc":"","name":"burn","inputs":[{"doc":"","name":"from","type_":"address"},{"doc":"","name":"amount","type_":"i128"}],"outputs":[]}},{"function_v0":{"doc":"","name":"burn_from","inputs":[{"doc":"","name":"spender","type_":"address"},{"doc":"","name":"from","type_":"address"},{"doc":"","name":"amount","type_":"i128"}],"outputs":[]}},{"function_v0":{"doc":"","name":"decimals","inputs":[],"outputs":["u32"]}},{"function_v0":{"doc":"","name":"name","inputs":[],"outputs":["string"]}},{"function_v0":{"doc":"","name":"symbol","inputs":[],"outputs":["string"]}},{"udt_struct_v0":{"doc":"","lib":"","name":"AllowanceDataKey","fields":[{"doc":"","name":"from","type_":"address"},{"doc":"","name":"spender","type_":"address"}]}},{"udt_struct_v0":{"doc":"","lib":"","name":"AllowanceValue","fields":[{"doc":"","name":"amount","type_":"i128"},{"doc":"","name":"expiration_ledger","type_":"u32"}]}},{"udt_union_v0":{"doc":"","lib":"","name":"DataKey","cases":[{"tuple_v0":{"doc":"","name":"Allowance","type_":[{"udt":{"name":"AllowanceDataKey"}}]}},{"tuple_v0":{"doc":"","name":"Balance","type_":["address"]}},{"tuple_v0":{"doc":"","name":"State","type_":["address"]}},{"void_v0":{"doc":"","name":"Admin"}}]}},{"udt_struct_v0":{"doc":"","lib":"","name":"TokenMetadata","fields":[{"doc":"","name":"decimal","type_":"u32"},{"doc":"","name":"name","type_":"string"},{"doc":"","name":"symbol","type_":"string"}]}}]

 > stellar-cli contract info interface --network testnet --wasm ~/wasm/soroban_token_contract.wasm

#[soroban_sdk::contractclient(name = "Client")]
pub trait Contract {
    fn initialize(
        env: soroban_sdk::Env,
        admin: soroban_sdk::Address,
        decimal: u32,
        name: soroban_sdk::String,
        symbol: soroban_sdk::String,
    );
    fn mint(env: soroban_sdk::Env, to: soroban_sdk::Address, amount: i128);
    fn set_admin(env: soroban_sdk::Env, new_admin: soroban_sdk::Address);
    fn allowance(
        env: soroban_sdk::Env,
        from: soroban_sdk::Address,
        spender: soroban_sdk::Address,
    ) -> i128;
    fn approve(
        env: soroban_sdk::Env,
        from: soroban_sdk::Address,
        spender: soroban_sdk::Address,
        amount: i128,
        expiration_ledger: u32,
    );
    fn balance(env: soroban_sdk::Env, id: soroban_sdk::Address) -> i128;
    fn transfer(
        env: soroban_sdk::Env,
        from: soroban_sdk::Address,
        to: soroban_sdk::Address,
        amount: i128,
    );
    fn transfer_from(
        env: soroban_sdk::Env,
        spender: soroban_sdk::Address,
        from: soroban_sdk::Address,
        to: soroban_sdk::Address,
        amount: i128,
    );
    fn burn(env: soroban_sdk::Env, from: soroban_sdk::Address, amount: i128);
    fn burn_from(
        env: soroban_sdk::Env,
        spender: soroban_sdk::Address,
        from: soroban_sdk::Address,
        amount: i128,
    );
    fn decimals(env: soroban_sdk::Env) -> u32;
    fn name(env: soroban_sdk::Env) -> soroban_sdk::String;
    fn symbol(env: soroban_sdk::Env) -> soroban_sdk::String;
}
#[soroban_sdk::contracttype(export = false)]
#[derive(Debug, Clone, Eq, PartialEq, Ord, PartialOrd)]
pub struct AllowanceDataKey {
    pub from: soroban_sdk::Address,
    pub spender: soroban_sdk::Address,
}
#[soroban_sdk::contracttype(export = false)]
#[derive(Debug, Clone, Eq, PartialEq, Ord, PartialOrd)]
pub struct AllowanceValue {
    pub amount: i128,
    pub expiration_ledger: u32,
}
#[soroban_sdk::contracttype(export = false)]
#[derive(Debug, Clone, Eq, PartialEq, Ord, PartialOrd)]
pub struct TokenMetadata {
    pub decimal: u32,
    pub name: soroban_sdk::String,
    pub symbol: soroban_sdk::String,
}
#[soroban_sdk::contracttype(export = false)]
#[derive(Debug, Clone, Eq, PartialEq, Ord, PartialOrd)]
pub enum DataKey {
    Allowance(AllowanceDataKey),
    Balance(soroban_sdk::Address),
    State(soroban_sdk::Address),
    Admin,
}

Why
See https://github.com/stellar/stellar-cli/issues/1506
Known limitations
Network configuration is mandatory, even when fetching from local. This is due to group can't be marked as optional with clap's derive API. We can fix that in the future, potentially using more flexible builder API instead.

Can we make the json output be prettified?

@fnando pretty json is --output json-formatted. Regular json is if you want to use something like jq or process it programmatically (and we don't care about formatting)


Update debug-mode.md

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://660b05e118967f0789b1ee57--harness-developer.netlify.app


Can I use two or more adapters in a component?

For example, if I have 2 independent listview in a single component.

Using two or more adapters in a component is very rare, and that's why a Dependencies may have multiple slots but only one adapter.
In your case，you could have two or more list-view components as slots in a single component.

Yes, I know that we can create own components for  2nd, 3rd and others list-view, but as for me, only one adapter restrictment looks strange. But if this case is really rare, we can close issue. Thank you.


Add support nvim-web-devicons  to README.md

After using this plugin, I relized that it support nvim-web-devicons. But after I read README.md I think you forgot add it to README.md

Good catch. Thank you.


Settings UI reformats settings.json in an hard to read way

Environment
Windows build number: [run `[Environment]::OSVersion` for powershell, or `ver` for cmd] 19041
Windows Terminal version (if applicable): 1.6

Any other software?

Steps to reproduce

Before ever opening the Settings UI, open the settings.json. Make a copy of it for comparison and keep it open in an editor such as VS Code. Close the active settings.json. Now open the Settings UI. Then open json from either the Settings dropdown or from the Settings UI. Notice how the file is completely reformatted in a user unfriendly way.
Expected behavior

I expect the settings.json to remain in the same readable format it's always been.
Actual behavior

The settings.json is now harder to read and unorganized compared to the normal format.
If the Settings UI is never opened, the original format remains.

Sure, I'll add this to the SUI backlog. This one is Hard, because we have to determine which settings changed and only overwrite those specific settings, exactly where they were in the file. That's not impossible, but it's Hard, especially with settings layering.

Yeah I'm wondering if the inheritance might render this issue pointless. If every setting able to be configured in the json is configurable in the UI (as well as any other future settings), then that should prevent the need to ever go into the json and it simply becomes an implementation detail.

Ideally, yes. When the SUI is totally done, then theoretically, you shouldn't need to go into json anymore. So it'll become more of a "I'm only using JSON" / "I'm only using the SUI" split.

Ideally, yes. When the SUI is totally done, then theoretically, you shouldn't need to go into json anymore. So it'll become more of a "I'm only using JSON" / "I'm only using the SUI" split.

I am in annoying mode today (@zadjii-msft started first) - why is it in a backlog then? Sounds like something hard to implemente and not aligned with a long-term vision  :blush:

I'll throw my hat in the ring: as a mostly JSON user who might want to toggle a setting here and there, I feel like high fidelity is "worth it".

Exactly what Dustin said. Someday, we might do it. I'd love to do it, but there are a ton of things that are higher priority right now.

Exactly what Dustin said. Someday, we might do it. I'd love to do it, but there are a ton of things that are higher priority right now.

Until then the setting files might become so large that we will need to split into several files, solving this inherently. But I see your point!

Until then the setting files might become so large that we will need to split into several files, solving this inherently. But I see your point!

And I am reminded that we will soon have extensions and manipulation of the settings file is part of the support coming if I recall correctly. So it's entirely possible an extension author will solve this issue first, possibly not even intentionally and that would provide a good "workaround" until this could be done natively in Terminal itself.

Note: reveals IEEE954 disparity in float precision

I came here from #10889 which is regarding deletion of comments.
I was wondering how VS Code does this? Their settings file doesn't overwrite the comments or anything.

I'm heavily editor-based and I write my settings in the format and order that makes sense to me. It's annoying to have Terminal overwrite the effort I put into that. Just like it was mentioned in the comment above, VSCode doesn't overwrite anything...
My manual writing and formatting of actions below feels much more organized and easier to look at to me than the arbitrary overwritten version of it, or the larger list of actions I don't care about in the settings UI:
// My version
"actions":
    [
        // ...

        // Press Ctrl+Shift+F to open the search box
        { "command": "find", "keys": "ctrl+f" },

        { "command": { "action": "switchToTab", "index": 0}, "keys": "ctrl+1" },
        { "command": { "action": "switchToTab", "index": 1}, "keys": "ctrl+2" },
        { "command": { "action": "switchToTab", "index": 2}, "keys": "ctrl+3" },
        { "command": { "action": "switchToTab", "index": 3}, "keys": "ctrl+4" },
        { "command": { "action": "switchToTab", "index": 4}, "keys": "ctrl+5" },

        { "command": "newWindow", "keys": "ctrl+n" },
        { "command": "newTab", "keys": "ctrl+t" },
        { "command": "closeTab", "keys": "ctrl+w" }
    ]

// Overwritten version
"actions":
    [
        // ...

        {
            "command":
            {
                "action": "switchToTab",
                "index": 2
            },
            "keys": "ctrl+3"
        },
        {
            "command": "find",
            "keys": "ctrl+f"
        },
        {
            "command":
            {
                "action": "switchToTab",
                "index": 4
            },
            "keys": "ctrl+5"
        },
        {
            "command":
            {
                "action": "switchToTab",
                "index": 0
            },
            "keys": "ctrl+1"
        },
        {
            "command":
            {
                "action": "switchToTab",
                "index": 1
            },
            "keys": "ctrl+2"
        },
        {
            "command":
            {
                "action": "switchToTab",
                "index": 3
            },
            "keys": "ctrl+4"
        },
        {
            "command":
            {
                "action": "newWindow"
            },
            "keys": "ctrl+n"
        },
        {
            "command":
            {
                "action": "newTab"
            },
            "keys": "ctrl+t"
        },
        {
            "command":
            {
                "action": "closeTab"
            },
            "keys": "ctrl+w"
        }
    ]

How VSCode does it is completely irrelevant in this case because VS Code is an Electron-based application and so does things differently. The Settings UI is almost it's own app, completely capable of being built on it's own. There is data manipulation being done at the native windows level for WT and the Settings UI, so something likely within one of the user APIs or with the implementation of Settings UI itself needs to be refactored to restore the precision. For myself, if there's a new setting I want added that isn't easy to find in documentation, I'll make a backup of the settings.json, use the Settings UI to toggle the new setting on, copy the setting entry over to the backup and then replace the settings.json generated by the Settings UI with the backup. A bit clunky but it works.

I think that what's missing is an intentional decision to take the settings file more seriously as its own thing, similar to what VSCode did.  IMO, there is a valid reason for doing that for VSCode since developers are extremely likely to be very aware of their setup (unlike people who would be fine with switching some random gui knob), and terminal targets a very similar crowd.  (I raised that explicitly in #18110, which was marked as a dup of this one.)
Also, I disagree with VSCode being irrelevant: the missing functionality which could be made into an independent library is basically taking a JSON config file (not a value!), and an edit operation, and applying it into the existing file.  It doesn't depend on the application that uses the file.  (It could probably even be independent of the settings format (ie, convert json + comments into yaml + comments) with some more work.)

In case it helps anyone, after the nth time that Terminal mangled my settings, I finally sat down to avoid such disasters in the future:

I wrote some JS code that generates the config.  Starts with a simple const config = {...}, and continues with making it a bit better by adding some value definitions (guid.WSL instead of "{...}") and also functions (cmd("shift+backspace", "clearBuffer") which produces the actions entry).

Made it work in two modes: gen to write the file and diff to diff against the current file.

Now whenever my settings are butchered, I can do a diff to see what changed, apply that to my setup, and regenerate it.

(All of this probably sounds like a whole bunch of useless work for most people, but for people who found themselves rewriting stuff as in the above comment and repeating it periodically, this is a very nice way to address it.)

I think that what's missing is an intentional decision to take the settings file more seriously as its own thing

FWIW, I don't disagree with you.
Older versions of Terminal treated the settings file with the care of a UI, because it's all they had.
It's just that our JSON serializer and deserializer is a pain, and our "user layout preserving" JSON patch implementation was a significant burden[^1], and we haven't booked the engineering effort to make either of those things better.
[^1]: which also generated invalid JSON at times

FWIW, I'm also a heavy JSON-specific user. I've kinda taken to this hack where I've got most of my actions in an actions.json file that I've stuck in a fragment file. I give all the actions in there sensible ids, that I came up with.
Then I just roam that file around to different machines. Terminal will load and parse actions (but not keybindings) from that file. But notably, Terminal won't modify that file either. So I can just add the key->ids in the settings.json, but leave the actual settings largely untouched.
It's mental, but I'm working on like 3 machines and 4 different builds of the terminal all at once, so this setup lets me stay relatively sync'd up in all of them.

I'd love to have Terminal not reformat the settings if at all possible. Alas, it's just expensive from an engineering standpoint to do that. If someone wants to chip in here and figure that out, I'd happily review that PR.


Update Playground

This pull request updates the Playground with the latest version of the library.

coverage: 100.0%. remained the same
when pulling 7111a8b2e360fc8c112b50a6b0de99eb6953c52e on update_playground
into 9cfbbd8e50b4f86a1242311259591296f88ebe4b on master.


stdin/stdout and communication between scripts

The idea behind polyglot is that often times you'll run into situations within a single script that are awkward to implement in a single language.
For example a part may be simple in Python (but painful in bash), which later in the same script the situation is reversed.
Instead of putting up with it (and doing it all in one language) or splitting something into multiple scripts (and having to coordinate calling them in series from some parent script), you can write the parts that make sense in any given language.
We're trying to get the benefits of the first option without the negatives.

One (very important) thing that polyglot does not support is passing state between scripts. If one were truly implementing someone in a single script in a single language any part of the script could save state for any later part of the script to act on. This is not so in polyglot. The actual logic behind the tool is extremely simple, and things like stdin/stdout and shared state are completely ignored.
I would like to attempt to at least make these areas better.

Current idea: Combine stdin/stdout and interscript communication into a unified solution.
Scripts are executed sequentially in the order they are defined. This means that we can

Connect stdin to the first script
Connect stdout of each script to stdin of the next script
Connect stdout of the last script to stdout of the tool

Fixed by https://github.com/buckley-w-david/polyglot/commit/dfcb6b8a1697021a3d5d7e6a18e9239cc6e14092
That was easier than I expected


Remove URL link

I'm curious why this is preferable?

In original Lab for feature branch work Flow URL link is not working.It should be https://www.atlassian.com/git/tutorials/comparing-workflows/feature-branch-workflow ---instead of
https://www.atlassian.com/git/tutorials/comparing-workflows/feature-branch-workflowtree

Can you change the pull request to keep 2 links?

It was late you already changed it..


Generate QR_CODE  Chinese garbled

My Code
        barcode = new ZXingBarcodeImageView
        {
            HorizontalOptions = LayoutOptions.FillAndExpand,
            VerticalOptions = LayoutOptions.FillAndExpand,
            AutomationId = "zxingBarcodeImageView",
        };
        barcode.BarcodeFormat = ZXing.BarcodeFormat.QR_CODE;
        //barcode.BarcodeOptions.PureBarcode;
        barcode.BarcodeOptions.Width = 300;
        barcode.BarcodeOptions.Height = 300;
        barcode.BarcodeOptions.Margin = 10;
        //Set here in Chinese
        barcode.BarcodeValue ="中文";

        Content = barcode;

The generated image scan is garbled

You should set the character set:
barcode.BarcodeOptions = new ZXing.QrCode.QrCodeEncodingOptions {    CharacterSet = "GB2312",    Width = 300,    Height = 300,    Margin = 10 }

Thank you for your answer
But I did not find it CharacterSet = "GB2312" this property
Maybe I used the reason for ZXing.Net.Mobile.Forms
I found the solution
The code is as follows:
barcode.BarcodeFormat = ZXing.BarcodeFormat.QR_CODE;
///this
var date = barcode.BarcodeOptions.Hints.ContainsKey(ZXing.EncodeHintType.CHARACTER_SET);
if (!date)
{
barcode.BarcodeOptions.Hints.Add(ZXing.EncodeHintType.CHARACTER_SET, "UTF-8");
}
///End

public Stream ConvertImageStream(string text, int width = 300, int height = 130)
{
        var barcodeWriter = new ZXing.Mobile.BarcodeWriter
        {
            Format = ZXing.BarcodeFormat.QR_CODE,
            Options = new ZXing.Common.EncodingOptions
            {
                Width = width,
                Height = height,
                Margin = 10,
            }
        };
        var date=barcodeWriter.Options.Hints.ContainsKey(ZXing.EncodeHintType.CHARACTER_SET);
        if (!date)
        {
            barcodeWriter.Options.Hints.Add(ZXing.EncodeHintType.CHARACTER_SET, "UTF-8");
        }
        barcodeWriter.Renderer = new ZXing.Mobile.BitmapRenderer();
        var bitmap = barcodeWriter.Write(text);
        var stream = new MemoryStream();
        bitmap.Compress(Bitmap.CompressFormat.Png, 100, stream);  // this is the diff between iOS and Android
        stream.Position = 0;
        return stream;
    }

Thanks for reporting this issue!  Unforunately it took me way too long to respond 😭.  Sorry, I apologize!  Recently the source code for this project was completely refactored to modernize it.  Many PR's were included in this effort, and many bugs were hopefully fixed.  Please try out the latest 3.x series of NuGet packages (currently in prerelease).  To try and make the project more maintainable in my spare time going forward, I've decided to close all existing issues to start with a clean slate.  If you're still experiencing this issue on the newest version, please open a new issue with as much detail as possible.  Thank you for your patience and understanding!  Happy scanning!


customization as per the docs does not work

I'm following the docs (https://sourcethemes.com/academic/docs/customization/) on how to customize site colors and fonts, and none of these seem to work:
# as per the docs
$ mkdir -p data/themes
$ cp themes/academic/data/themes/default.toml data/themes/default.toml
# then edit data/themes/default.toml, change some colors
#
$ hugo serve
# build pages ... no errors or warnings
# but ...  nothing has changed, still the default colors

# maybe we need to rename the file?
$ mv data/themes/default.toml data/themes/mysite.toml
# edit mysite.toml and change theme name
# and let's show the world that indeed we have edited the file ...
$ grep 'name' data/themes/mysite.toml
name = "mysite"
# also change the color theme name at params.toml
# and for the record ...
$ grep 'color_theme' config/_default/params.toml
color_theme = "mysite"
# still nothing, the site still displays the default colors
#

Same happens with fonts, though here I'm not too familiar with the syntax for the 'google_fonts' line. e.g. as per the docs:
$ mkdir -p data/fonts
$ cp themes/academic/data/fonts/default.toml data/fonts/
# then change some fonts (see the diff appended below for more detail)
# rebuild site
$ hugo serve
# again no changes in the served pages ... still the old fonts being displayed.

So, after all these attempts, nothing seems to affect the default colors, or font customizations. It seems like there is no way to customize these as per the docs.
Hence my two points:

The docs are wrong? (this is a bug report about that issue)
How do we customize fonts and colors? (this is a help request)

$ hugo version
Hugo Static Site Generator v0.55.6-A5D4C82D2/extended linux/amd64 BuildDate: 2019-05-18T08:08:34Z

Here are the diffs just to show that indeed I am editing the files and changing colors, etc.
$ diff -u themes/academic/data/themes/default.toml data/themes/mysite.toml
--- themes/academic/data/themes/default.toml	2019-06-19 09:58:58.623252817 -0300
+++ data/themes/mysite.toml	2019-06-19 11:42:37.430451386 -0300
@@ -1,17 +1,25 @@
 # Theme metadata
-name = "Default"
+name = "mysite"

 # Is theme light or dark?
-light = true
+light = false

 # Primary
-primary = "#2962ff"
+#primary = "#3f51b5"
+primary = "#0000ff"

 # Menu
-menu_primary = "#fff"
-menu_text = "#34495e"
-menu_text_active = "#2962ff"
-menu_title = "#2b2b2b"
+#menu_primary = "#3f51b5" # 500
+menu_primary = "#00ff00"
+
+#menu_text = "#fff"
+menu_text = "#000"
+
+#menu_text_active = "#8c9eff" # A100
+menu_text_active = "#88cc00"
+
+#menu_title = "#fff"
+menu_title = "#ff3366"

 # Home sections
 home_section_odd = "rgb(255, 255, 255)"

$ diff -u themes/academic/data/fonts/default.toml data/fonts/default.toml
--- themes/academic/data/fonts/default.toml	2019-05-06 13:38:34.196439218 -0300
+++ data/fonts/default.toml	2019-06-19 13:58:38.705319157 -0300
@@ -2,13 +2,13 @@
 name = "Default"

 # Optional Google font URL
-google_fonts = "Montserrat:400,700|Roboto:400,400italic,700|Roboto+Mono"
+google_fonts = "Play:400,700|Open+Sans:400,400italic,700|PT+Mono"

 # Font families
-heading_font = "Montserrat"
-body_font = "Roboto"
-nav_font = "Roboto"
-mono_font = "Roboto Mono"
+heading_font = "Play"
+body_font = "Open Sans"
+nav_font = "Open Sans"
+mono_font = "PT Mono"

 # Font size
 font_size = "20"

Just adding my academic version:
$ cat themes/academic/data/academic.toml
# Academic

version = "4.3.1"

My  bad. Hugo was in fast render mode and was not doing a full rebuild.
hugo serve --disableFastRender did the job. My apologies for the noise.

An example of a custom theme in action can be found in the repo for Academic's own site (see data/themes/academic.toml and the value of theme in params.toml: https://github.com/sourcethemes/academic-www/blob/master/data/themes/academic.toml
To choose a Google Font:

Visit https://fonts.google.com
Click + for the fonts you wish to use
Open the Families Selected dialog box at the bottom
Copy the text in bold and paste it in your google_fonts option

For example, if Google gives you <link href="https://fonts.googleapis.com/css?family=B612+Mono|Open+Sans&display=swap" rel="stylesheet">, copy B612+Mono|Open+Sans

Under Specify in CSS in Google's dialog, copy the font name and paste it as one of the fonts in your font theme

For example, given font-family: 'B612 Mono', monospace;, copy B612 Mono


Allow overriding default scanning branch in scheduled workflows

[x] All tests passed. If this feature is not already covered by the tests, I added new tests.
[x] This pull request is on the dev branch.
[x] I used gofmt for formatting the code before submitting the pull request.

When a workflow is triggered through a scheduled event, it does not include any branch information. As a result, the target branch defaults to the repository's default branch.
Default branch definition:
The default branch is considered the “base” branch in your repository, against which all pull requests and code commits are automatically made, unless you specify a different branch.
We need the ability to optionally specify a different target branch for cron scanning, overriding the default branch.
Example:
Assume the default branch is named "v2." However, during a scheduled run, we want Frogbot to open fix pull requests against the "dev" branch.
Solution:
To achieve this, set a new environment variable in the workflow: JF_CRON_TARGET_BRANCH = "dev." This will ensure that Frogbot targets the "dev" branch specifically during cron scanning.

Closed due the decision to eliminate the push trigger from create-fix-pull-requests


iRobot login for Roomba

socialize.us1.gigya.com
is required to be whitelisted to login via the app.
https://developers.gigya.com/display/GD/socialize.login+JS

@grush128 Thanks for reporting. Can you list out the blocklists which blocks socialize.us1.gigya.com ?

It was in some list before but of today I can't find it anymore.

I will look for it ASAP. I should have all the block lists I used.
On Sun, Apr 5, 2020, 10:42 PM Sandro<EMAIL_ADDRESS>wrote:

It was in some list before but of today I can't find it anymore.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/anudeepND/whitelist/issues/129#issuecomment-609537113,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ADGJ3QB2NHCHZFE7UI27UOLRLE6RPANCNFSM4KVQSAJA
.

I searched trough a compilation of a friend and there it was removed on 20. Feb https://github.com/deletescape/noads/commit/cbc28f8b290c4ac61c61170cc86d3d38aea58adc#diff-03fec5d3020c661b75efd7669fd8f18bL7855

Well then looks like it's no longer an issue thanks for doing the search.
On Mon, Apr 6, 2020, 12:37 AM Sandro<EMAIL_ADDRESS>wrote:

I searched trough a compilation of a friend and there it was removed on
20. Feb deletescape/noads@cbc28f8
#diff-03fec5d3020c661b75efd7669fd8f18bL7855
https://github.com/deletescape/noads/commit/cbc28f8b290c4ac61c61170cc86d3d38aea58adc#diff-03fec5d3020c661b75efd7669fd8f18bL7855
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/anudeepND/whitelist/issues/129#issuecomment-609560650,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ADGJ3QAFWZQCEOXF2NMTK3TRLFMAHANCNFSM4KVQSAJA
.

I think we should add it anyway. Wouldn't hurt. Maybe some list re-adds it or old lists still have it.

socialize.us1.gigya.com blocked at the moment

Oops...it was in my host file and I  removed it in the latest update

From https://firebog.net/ :
Here are the lists mentioning gigya.com or some version of it.
https://v.firebog.net/hosts/AdguardDNS.txt
https://raw.githubusercontent.com/anudeepND/blacklist/master/adservers.txt
https://raw.githubusercontent.com/bigdargon/hostsVN/master/hosts
https://gitlab.com/quidsup/notrack-blocklists/raw/master/notrack-blocklist.txt


LIIKUNTA-573 | fix: keep Helsinki city owned icon on same row as the preceding text

Description
fix: keep Helsinki city owned icon on same row as the preceding text
refs LIIKUNTA-573
Issues
Closes
LIIKUNTA-573
Related
Testing
Automated tests
Manual testing
Screenshots
Additional notes

Events-Helsinki branch is deployed to platta: https://tapahtumat-pr506.dev.hel.ninja :rocket::rocket::rocket:

Sports-Helsinki branch is deployed to platta: https://liikunta-pr506.dev.hel.ninja :rocket::rocket::rocket:

TestCafe result is success for https://tapahtumat-pr506.dev.hel.ninja :laughing::tada::tada::tada:

VENUE GRAPHQL PROXY is deployed to platta: https://venue-graphql-proxy-pr506.dev.hel.ninja :rocket::rocket::rocket:

TestCafe result is success for https://liikunta-pr506.dev.hel.ninja :laughing::tada::tada::tada:

EVENTS GRAPHQL PROXY is deployed to platta: https://events-graphql-proxy-pr506.dev.hel.ninja :rocket::rocket::rocket:


LSPS1: Explicitly support LSPS1 payment options

This PR aims to address a few problems in LSPS1.
I'll provide a few motivating examples of why I believe the changes proposed in this MR are desirable.
1. Use seprate fee for onchain vs lightning payment
Onchain payments are more expensive for the LSP than lightning payments because they create their own utxo. The LSP will have to carry the cost of spending that new utxo at a later point in time.
This PR provides LSP's the option to set a different fee depending on the payment method.
On a related note @2Fast2Bcn noted that a similar argument could be made for the expiry_date of an order. The LSP might want to set a different expiry_date depending on the chosen payment option.
See issue: https://github.com/BitcoinAndLightningLayerSpecs/lsp/issues/92
See comment: https://github.com/BitcoinAndLightningLayerSpecs/lsp/issues/95#issuecomment-1976025005
2. Extensibility for additional payment methods
This PR allows to add additional payment options later.
In this section I'll provide a few motivating example.
Dual funding:
Recently, dual-funding got merged to the spec. The spec describes a new channel open protocol in which both the client and server can contribute funds.
This approach provides a superior trust model. The client doesn't have to trust the LSP to open the channel. The benefit is especially clear if client_balance_sat is high. In the current version of LSPS1 the LSP could take the money and run.
BOLT-12 support
Today, BOLT-11 invoices are commonly used to make payments over lightning. Personally, I'd describe myself as a BOLT-12 maxi. This PR makes it easier to add BOLT-12 as a payment option later.
Withhold from first payment
We see a demand for JIT-channels where the client specifies the channel-size. This is currently not possible on LSPS2 or LSPS4.
See issue: https://github.com/BitcoinAndLightningLayerSpecs/lsp/issues/65
Breaking changes: Why (not) to merge this MR?
We are in a bit of tension here. The spec is marked as FOR IMPLEMENTATION but we are seeing some usage on mainnet.
This PR is breaking in the sense that clients will not be able to purchase channel if either the client or server uses this new revision.
However, there will be some hassle for users but merging this MR should not put any funds at risk.

Sorry for making you guys wait.
I've made a few updates and think the PR is in a mergeable state.


Fixed some errors

Thanks for the quick fix I can test it today. Are there regression tests for the converters already? Would be a good idea.
Might have been better if the PRs for bug fixing and new features were separate but now it's ok. Probably not worth splitting.

Yes, so the old SDRF works again. Can be merged from my side, so we can continue working on our pipelines with the latest version. Still, regression tests would be great. I will also test the labelled experiments functionality today.
Do you plan to support mixed SDRFs or will SDRFs be split in that case?

@daichengxin remember to increase the version.


Narrow our exceptions

For everywhere possible, change broad exception clauses to list the particular exceptions to be expected.

I've no idea how this will impact the stability of the engine... but some exceptions mean our internal state is messed up somehow and we can't recover. We can't always be perfect. I'm looking forward to seeing how we fare with this strategy.

Ah, looks like except Exception will allow SystemExit, KeyboardInterrupt, and GeneratorExit to pass through uncaught.

Well that's a dealbreaker.


ROCapsules X-20 Moroz Dynasoar support

Kerbalism support for the new ROCapsules Dynasoar. Also revise life support settings.
X-20X was intended to carry 4 passengers and operate for 14 days. However, it also would have been larger than the standard X-20. I have configured the X-20 Dynasoar to hold 2 passengers for 5 days, with capability for longer operations, since it is smaller than the X-20X.
ROC PR: https://github.com/KSP-RO/ROCapsules/pull/110

I don't have permission to merge here, so someone else will need to.


error while loading shared libraries: libupscaledb.so.1

I get an error when trying to execute compiled code: error while loading shared libraries: libupscaledb.so.1: cannot open shared object file: No such file or directory.

The file should be built in src/.libs, and installed in /usr/local/lib as a
symbolic link. I have seen some systems where /usr/local/lib is not in the
search path for the library loader (on ubuntu add the path to
/etc/ld.conf.d/FILE) and call ldconfig).
PS: thanks for the other issues, I'm working on them...
2016-01-20 14:27 GMT+01:00 Wouter Hager<EMAIL_ADDRESS>
I get an when trying to execute compiled code: error while loading shared
libraries: libupscaledbso1: cannot open shared object file: No such file or
directory
—
Reply to this email directly or view it on GitHub
https://github.com/cruppstahl/upscaledb/issues/69.

@cruppstahl simply calling ldconfig was enough, thanks.


Implement progress bar:

[x] Create a progress bar component in the user interface.
[x] Develop functions to update the progress bar based on the user’s progress through the game.

This has been added to a ticket on Trello.
In-progress.

Implemented a progress bar component in the user interface and developed functions to dynamically update it based on the user's progress throughout the game. Additionally, the game now finishes when the progress bar reaches 100%.
Closing the issue as completed.


Spelling/grammar

This is not a complete fix for this file which would require significantly more changes (items were identified by app.grammarly.com, and I selected a subset), but I hope that these are easy enough to review and accept.

Kinda. I just need to know where precisely the file is to change. I think you're saying I hit the wrong repo. It sounds like I wanted kubernetes/kubernetes instead of kubernetes/website.
That's fine. I might be able to migrate the changes over. Maybe today, maybe tomorrow. I might get interrupted and lose this.
I was actually aiming for the 1.19 relnotes but couldn't find the right spot. It'd have been nice if this page made it easier for me to end up in the right place -- I looked and apparently failed miserably.

Resubmitted as kubernetes/kubernetes#98955

👋 @jsoref .
Thanks for creating a PR in kubernetes/kubernetes to update the release notes.
When your upstream PR moves forward, this PR can close.
Reach out if you have any questions. Thanks!

@kbhawkey: it seems stuck, I'd appreciate help poking it along. If you could pretend I'm not a techy and trying to do a small favor to a big project, the burden being placed on me to do this is pretty high.

/close


Emit followthemoney entities

Unsolved issues:

How to store tabular data
How to store intermediate files (i.e. does this need to know about storagelayer)?

Fixes #21.

We are continuing this in #34


JsonLayout - Support Precalculate for async processing

Forgot to check the thread-agnostic attribute, and to cache the layout when needed.
Made a standard method, that can be reused by all Layout-implementations that implements RenderFormattedMessage (Optimizes memory allocations).

This change is

Current coverage is 81% (diff: 85%)

Merging #1925 into master will increase coverage by <1%

@@             master      #1925   diff @@
==========================================
  Files           285        285
  Lines         19436      19458    +22
  Methods        2947       2950     +3
  Messages          0          0
  Branches       2263       2270     +7
==========================================
+ Hits          15823      15851    +28
- Misses         3060       3066     +6
+ Partials        553        541    -12

Powered by Codecov. Last update 3e87ca7...04a286f

Is this for 4.5 or for 4.4.2?

changes without newlines: https://github.com/NLog/NLog/pull/1925/files?w=1

Is this for 4.5 or for 4.4.2?

I was thinking 4.4.2, since it is actually a cleanup task after #1799, that removes duplicate code.

Is this a performance tweak or a bug fix?
I'm missing some context I guess :)

It is a bugfix of JsonLayout, so the GetFormattedMessage() supports Precalculate.
It is a performance fix for JsonLayout by introducing RenderFormattedMessage, so it now supports OptimizeBufferReuse.
It is a code cleanup of the other layouts, so all of them implements GetFormattedMessage() to use the RenderFormattedMessage()

Thanks!


[HOLD for payment 2024-06-20] [Payment card / Subscription] Subscription size "Save" button has no margin

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

issue found when validating #42683
Version Number: 1.4.79-2
Reproducible in staging?: y
Reproducible in production?: no new feature
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: Applause internal team
Slack conversation:
Action Performed:

Open the New Expensify App
Go to /settings/subscription/subscription-size and send in any chat
Deeplink it by tapping on the link
Input any value and click on "Next"
Observe the bottom "Save button"

Expected Result:
User expects a bottom margin
Actual Result:
There is no Bottom Margin
Workaround:
unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android: Native
[ ] Android: mWeb Chrome
[x] iOS: Native
[ ] iOS: mWeb Safari
[ ] MacOS: Chrome / Safari
[ ] MacOS: Desktop

Screenshots/Videos
https://github.com/Expensify/App/assets/38435837/669e38c1-a51a-4333-afab-0f67b41aa4c0

View all open jobs on GitHub
Issue OwnerCurrent Issue Owner: @greg-schroeder

@chiragsalian FYI I haven't added the External label as I wasn't 100% sure about this issue. Please take a look and add the label if you agree it's a bug and can be handled by external contributors

Taking over since it's coming from https://github.com/Expensify/App/pull/42683. Not a deploy blocker since this is a new feature and can't be reached without a direct URL, but we should clean it up @MrMuzyk

@amyevans I thought that this feature should only be accessible on web platform. How do we want to handle this? Should we also block access to these screens via direct link? Or should we leave it accessible and fix the margin issue?
cc @JKobrynski

@MrMuzyk sorry I missed this earlier. We should just block access via direct link for native

Adding to #wave-collect

@amyevans I will handle this the same we've handled DisableAutoRenewSurveyPage - will display FullPageNotFoundView component

PR is up/in review

No payment required here, and regression tests will be added once the feature is fully rolled out, so I'm going to close this out.


XamarinTestCloud Task - Supplying a value for "Optional Arguments" results in a task failure

Supplying a value for "Optional Arguments" on the Xamarin Test Cloud task in VSTS results in a build failure with the error message:
Unhandled: testCloudRunner.argString is not a function

@DanRigby: Thanks for reporting the issue and providing a fix


Travis to pypi autodeploy

Current coverage is 90.56% (diff: 100%)

Merging #2 into master will not change coverage

@@             master         #2   diff @@
==========================================
  Files             3          3
  Lines            53         53
  Methods           0          0
  Messages          0          0
  Branches          8          8
==========================================
  Hits             48         48
  Misses            3          3
  Partials          2          2

Powered by Codecov. Last update 9ff8f16...c3e7673


MC graph weirdness

https://www.metaculus.com/questions/28546/2024-world-chess-champion/
only shows one choice
And on questions with >2 options, we're only displaying two. Same culprit, maybe?

closing as complete

And on questions with >2 options, we're only displaying two. Same culprit, maybe?

unrelated


Greater Lowell Technical High School

Official Website URL: https://www.gltech.org/
Long-Term IT Program (Page 55-57): https://www.gltech.org/site/handlers/filedownload.ashx?moduleinstanceid=1059&dataid=5685&FileName=2023-2024 Program of Studies_English_1.3.23.pdf
Proof of Domain: The email domain uses the same domain as the official website.

@Saicher First stage of verification passed, official domain is gltech.org as far as I verified. This is just an informational note. Pull request is still in the review. I appreciate your patience while waiting for the final decision.

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


filter out channel results from search

The API can return channels even on a type = video request.  These have no videoID which makes the search function unhappy.  This checks to make sure a videoID is present.

@dukrt, is this still a problem in Mopidy 3 / Mopidy-Youtube 3?


Use Trash icon

Hello,
You can not use the trash icon after installing your module.
When we click on it, we are redirected to the detailed view and not to the modal allowing the item to be deleted.

@YamShadow Hi, can you double-check you if you are using the latest version and your cache is clean? I have it installed on some of my projects and I don't face this issue

Arf, sorry
Attention to the cache level of view ...
Thank you for your prompt response !


feat(terraform): adding lock file ignore

Reasons for making this change:
Terraform as of version 0.14 supports a local lock file for providers. This PR adds the ability to ignore this file, but leaves it commented out since it highly depends on the team's workflow.
I've also included the fix from PR https://github.com/github/gitignore/pull/3533
Links to documentation supporting these rule changes:

https://www.terraform.io/language/files/dependency-lock
https://stackoverflow.com/questions/67963719/should-terraform-lock-hcl-be-included-in-the-gitignore-file

@lilbopeep88 @arylatt Thanks for the approval. What else is needed to merge this PR?

@arylatt @lilbopeep88 Ping 🤙

@arylatt @lilbopeep88 @fdemmer Ping again 🥸🙋♂🛎

@sc250024 i was just wondering; i have no say here, sorry :)

@sc250024 i was just wondering; i have no say here, sorry :)

Ha, fair. Thank you anyway for the review.

Hi @bdougie thoughts on this small useful change? :)

Files changed

😴😴😴

Closing because this took too long, and I want to delete the fork.


Statically typed filters?

Is it possible to write statically typed filters? (e.g. similar to what diesel has or something else), and if not, is there any plans for them?
Something like:
#[derive(Debug, Serialize, Deserialize, Doc, Clone)]
pub struct Example {
	#[serde(rename = "_id")]
	pub id: Uid<Example>,
	pub description: String,
}

...

let example_col: Collection<Example>  = shared.db.existing_collection();
let res: Example = example_col.find_one(Example::description.eq("abc"));

Hey there!
Unfortunately there's currently nothing like this in Avocado. However, this is certainly something I have thought about, except that I'm not sure how I would go about implementing it.
I'm guessing that a new derive macro could pre-generate helper types for most of the MongoDB DSL (i.e. query and update operators) based on top-level field names and types, but it might become tricky to refer to subfields.
I'd also really like to solve this problem because it would bring a whole new set of static guarantees to Avocado.


feat(api): Add versioning to HTTP Server and OT Update Server

overview
Closes #4633. With the upcoming changes to our HTTP Webserver, we want to add the ability to insert version control.
changelog

Add in a util file for version control and error code storage in api/server
Restructure files in api/server
Add util file for version control in update-server/buildroot

review requests

Please make sure I'm not going to break anything for the app.
Does file re-org seem OK?
I still prefer making all old HTTP stuff be version 0.0, but I have it as 1.0 for now to match with the OpenAPI spec. Please weigh your thoughts here
Currently the following is true (let me know if I miss any use-cases)

If you access an HTTP/1.0 route without a version in the header, it will work
If you access an HTTP/2.0 route without a version, it will throw an HTTPNotFound error
If you access an HTTP/1.0 route with a 2.0 version, it will throw the custom unsupportedVersion error.

One note before going more in depth - we need to be much more specific in both documentation, the openapi spec, and even in discussion about what the header responsible for versioning is and what the version is called. Not to call you out, but when you say HTTP/1.0 or HTTP/2.0, I reflexively think it means versions of the HTTP protocol. Let's stick to API version or the actual mimetype


Test failure

Not blocking as the build succeeded, but I have a test failure/crash: http://pastebin.com/ATW9Gb0f

Work on the OpenCL binding is now complete. All unnecessary abstraction/wrappers have been removed and this issue is no longer relevant.


fix(ci): job relaunched are positioned at the end of the pipeline

Following https://github.com/zaquestion/lab/issues/471, another problem occurs in the same time.
The order is now correct in the ci view, but if I restart a failed job, the job is inserted at the end of the pipeline.

I'm not sure this is fixable.
There is code to replace old jobs with restarted ones, but in my testing gitlab now only includes the most recent jobs in the listing, so this no longer works.
It should be possible to do slightly better by making sure that all jobs from the same stage are grouped together, but as we don't know the expected order of the stages, it's possible that we then mess up that order (say, showing "deploy" jobs before "build").
But as far as I can see, a proper fix needs additional gitlab API (at the very least, an option to list all jobs in a pipeline, including those superseded by restarted jobs)

I'm not sure this is fixable.
There is code to replace old jobs with restarted ones, but in my testing gitlab now only includes the most recent jobs in the listing, so this no longer works.
It should be possible to do slightly better by making sure that all jobs from the same stage are grouped together, but as we don't know the expected order of the stages, it's possible that we then mess up that order (say, showing "deploy" jobs before "build").
But as far as I can see, a proper fix needs additional gitlab API (at the very least, an option to list all jobs in a pipeline, including those superseded by restarted jobs)

For reference here's the code that originally addressed this by picking the latest versions of jobs
https://github.com/zaquestion/lab/blob/master/cmd/ci_view.go#L604-L630
cc: @profclems this is probably an issue for y'all too

For reference here's the code that originally addressed this by picking the latest versions of jobs
https://github.com/zaquestion/lab/blob/master/cmd/ci_view.go#L604-L630
cc: @profclems this is probably an issue for y'all too


IP Address of publisher

I am using Paho as MQTT client. In Paho's callback, I am just getting "topic" and "MQTTMessage".
How can I get IPAddress(other information e.g. when was message received) of the publisher of given message.

hi
Publisher, the message which is not to obtain IP address.

so there is no way one can get other information related to the message received by emqttd? may be by using hooks or plugin?


Bring Swift interactions to GTScrollNavigationBar

By updating enum state to the standard swift way.
I upgraded podspec to 0.4 also since this could break some local implementations (due to renaming the state enum). If so developers could block the update by putting pod 'GTScrollNavigationBar', '~> 0.3.0' in their podfile.
Cheers

Please create a tag related to this new podspec version and pod spec push it

Changed nothing in the current source code except enum names so coverage report seams to report a wrong stat

@iGranDav Thanks David

@luugiathuy Thanks for merging 😊 Could you please create a tag 0.4 related to this new podspec version and pod spec push it? To make it available from CocoaPods?

@iGranDav Updated. Thanks!


clang 9 incompatible with ROCm 3.9 directory layout for bitcode libraries

I am building 46bc9bde22056900f18b725776c6f6c660355e9a on Ubuntu 20.02 Hades Canyon NUC.
I installed ROCm using Apt and it works fine.
I installed LLVM and hipSYCL into /opt/hipSYCL using the scripts:
bash ./install/scripts/install-llvm.sh
bash ./install/scripts/install-hipsycl.sh

This is how it fails:
Scanning dependencies of target hipSYCL_rocm
[ 34%] Building CXX object src/sycl/CMakeFiles/hipSYCL_rocm.dir/application.cpp.o
clang-9: error: no such file or directory: 'hip.amdgcn.bc'
clang-9: error: no such file or directory: 'opencl.amdgcn.bc'
clang-9: error: no such file or directory: 'ocml.amdgcn.bc'
clang-9: error: no such file or directory: 'ockl.amdgcn.bc'
clang-9: error: no such file or directory: 'oclc_finite_only_off.amdgcn.bc'
clang-9: error: no such file or directory: 'oclc_daz_opt_off.amdgcn.bc'
clang-9: error: no such file or directory: 'oclc_correctly_rounded_sqrt_on.amdgcn.bc'
clang-9: error: no such file or directory: 'oclc_unsafe_math_off.amdgcn.bc'
clang-9: error: no such file or directory: 'oclc_isa_version_900.amdgcn.bc'
clang-9: error: no such file or directory: 'oclc_wavefrontsize64_on.amdgcn.bc'
make[2]: *** [src/sycl/CMakeFiles/hipSYCL_rocm.dir/build.make:63: src/sycl/CMakeFiles/hipSYCL_rocm.dir/application.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:192: src/sycl/CMakeFiles/hipSYCL_rocm.dir/all] Error 2
make: *** [Makefile:130: all] Error 2

These files are present:
$ locate hip.amdgcn.bc
/home/jrhammon/git/llvm-vanilla/clang/test/Driver/Inputs/hip_dev_lib/hip.amdgcn.bc

Also observed wtih 4aea57afbd37faa241b0dfe67088e66fa11b55de
-- Building hipSYCL against LLVM configured from /opt/hipSYCL/llvm/lib/cmake/llvm
-- Selecting clang: /opt/hipSYCL/llvm/bin/clang++
-- Using clang include directory: /opt/hipSYCL/llvm/lib/clang/9.0.1/include
-- Found OpenMP_C: -fopenmp=libomp
-- Found OpenMP_CXX: -fopenmp=libomp
-- Found OpenMP: TRUE
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/hipSYCL-installer/build
[ 31%] Built target hipSYCL_cpu
[ 34%] Building CXX object src/sycl/CMakeFiles/hipSYCL_rocm.dir/application.cpp.o
clang-9: error: no such file or directory: 'hip.amdgcn.bc'
clang-9: error: no such file or directory: 'opencl.amdgcn.bc'
clang-9: error: no such file or directory: 'ocml.amdgcn.bc'
clang-9: error: no such file or directory: 'ockl.amdgcn.bc'
clang-9: error: no such file or directory: 'oclc_finite_only_off.amdgcn.bc'
clang-9: error: no such file or directory: 'oclc_daz_opt_off.amdgcn.bc'
clang-9: error: no such file or directory: 'oclc_correctly_rounded_sqrt_on.amdgcn.bc'
clang-9: error: no such file or directory: 'oclc_unsafe_math_off.amdgcn.bc'
clang-9: error: no such file or directory: 'oclc_isa_version_900.amdgcn.bc'
clang-9: error: no such file or directory: 'oclc_wavefrontsize64_on.amdgcn.bc'
make[2]: *** [src/sycl/CMakeFiles/hipSYCL_rocm.dir/build.make:63: src/sycl/CMakeFiles/hipSYCL_rocm.dir/application.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:192: src/sycl/CMakeFiles/hipSYCL_rocm.dir/all] Error 2
make: *** [Makefile:130: all] Error 2

There are two reasons that I am aware of that could explain this:

Your ROCm installation puts the bitcode files into a directory where syclcc cannot find it or doesn't expect them. Make sure that you have provided hipSYCL with the correct ROCm path, and that the files are present. syclcc looks for them in $ROCM_PATH/lib where ROCm usually puts them.
The set of bitcode files provided by ROCm and recognized by clang HIP has changed over time. Since your ROCm is very new, it could be that you need to upgrade clang to a newer version to recognize the bitcode files.

Upgrade to something newer than Clang 9.1?

You can do:
HIPSYCL_PKG_LLVM_REPO_BRANCH=release/10.x HIPSYCL_PKG_LLVM_VERSION_MAJOR=10 bash ./install-llvm.sh
and
HIPSYCL_PKG_LLVM_VERSION_MAJOR=10 bash ./install-hipsycl.sh
but we should probably upgrade the default to clang 10.0.1 though. thanks for bringing this up.

I installed LLVM and hipSYCL into /opt/hipSYCL using the scripts:

By default the scripts are configured to look for ROCm in /opt/hipSYCL/rocm because this is where our ROCm install script puts it. I suppose your apt package is not installed in that directory? You will need to adapt this line:
https://github.com/illuhad/hipSYCL/blob/4aea57afbd37faa241b0dfe67088e66fa11b55de/install/scripts/install-hipsycl.sh#L44
If you still need to upgrade clang, I think Ubuntu 20.04 already provides a clang-10 package that you can try. Usually hipSYCL "just works" (tm) with distribution packages, and it might be faster than recompiling (which can be done the way @sbalint98 suggested)

$ locate hip.amdgcn.bc
/home/jrhammon/git/llvm-vanilla/clang/test/Driver/Inputs/hip_dev_lib/hip.amdgcn.bc

I don't think that's sufficient as it seems this is only part of the clang tests. Those bitcode files are usually shipped by ROCm, not clang, so you should look at your ROCm installation

Additionally, the install-hipsycl.sh script uses defaults for the version of ROCm that we ship with our binary packages (which is an older version, something like 3.3 afair). Since ROCm is a moving target, different versions sometimes require a different treatment. In summary:

First, as @sbalint98 suggested you will want to use hipSYCL develop branch using HIPSYCL_REPO_BRANCH=develop. develop branch is where the goodies such as USM are.
Set your ROCm path as described above
develop branch already uses defaults that work well with ROCm 3.8. To use them remove this line:
https://github.com/illuhad/hipSYCL/blob/4aea57afbd37faa241b0dfe67088e66fa11b55de/install/scripts/install-hipsycl.sh#L47
and this line:
https://github.com/illuhad/hipSYCL/blob/4aea57afbd37faa241b0dfe67088e66fa11b55de/install/scripts/install-hipsycl.sh#L49

I don't know how to point the linker to /opt/rocm-3.9.0/hip/lib/libamdhip64.so when it does not use ROCM_LINK_LINE...
[100%] Linking CXX shared library libhipSYCL-rt.so
cd /tmp/hipSYCL-installer/build/src/runtime && /usr/bin/cmake -E cmake_link_script CMakeFiles/hipSYCL-rt.dir/link.txt --verbose=1
/opt/hipSYCL/llvm/bin/clang++ -fPIC -O3 -DNDEBUG  -shared -Wl,-soname,libhipSYCL-rt.so -o libhipSYCL-rt.so CMakeFiles/hipSYCL-rt.dir/application.cpp.o CMakeFiles/hipSYCL-rt.dir/runtime.cpp.o CMakeFiles/hipSYCL-rt.dir/error.cpp.o CMakeFiles/hipSYCL-rt.dir/backend.cpp.o CMakeFiles/hipSYCL-rt.dir/hints.cpp.o CMakeFiles/hipSYCL-rt.dir/device_id.cpp.o CMakeFiles/hipSYCL-rt.dir/operations.cpp.o CMakeFiles/hipSYCL-rt.dir/data.cpp.o CMakeFiles/hipSYCL-rt.dir/multi_queue_executor.cpp.o CMakeFiles/hipSYCL-rt.dir/dag.cpp.o CMakeFiles/hipSYCL-rt.dir/dag_node.cpp.o CMakeFiles/hipSYCL-rt.dir/dag_builder.cpp.o CMakeFiles/hipSYCL-rt.dir/dag_expander.cpp.o CMakeFiles/hipSYCL-rt.dir/dag_enumerator.cpp.o CMakeFiles/hipSYCL-rt.dir/dag_interpreter.cpp.o CMakeFiles/hipSYCL-rt.dir/dag_scheduler.cpp.o CMakeFiles/hipSYCL-rt.dir/dag_direct_scheduler.cpp.o CMakeFiles/hipSYCL-rt.dir/dag_time_table.cpp.o CMakeFiles/hipSYCL-rt.dir/dag_manager.cpp.o CMakeFiles/hipSYCL-rt.dir/dag_submitted_ops.cpp.o CMakeFiles/hipSYCL-rt.dir/generic/async_worker.cpp.o CMakeFiles/hipSYCL-rt.dir/hw_model/memcpy.cpp.o CMakeFiles/hipSYCL-rt.dir/serialization/serialization.cpp.o CMakeFiles/hipSYCL-rt.dir/hip/hip_event.cpp.o CMakeFiles/hipSYCL-rt.dir/hip/hip_queue.cpp.o CMakeFiles/hipSYCL-rt.dir/hip/hip_allocator.cpp.o CMakeFiles/hipSYCL-rt.dir/hip/hip_device_manager.cpp.o CMakeFiles/hipSYCL-rt.dir/hip/hip_hardware_manager.cpp.o CMakeFiles/hipSYCL-rt.dir/hip/hip_backend.cpp.o CMakeFiles/hipSYCL-rt.dir/omp/omp_allocator.cpp.o CMakeFiles/hipSYCL-rt.dir/omp/omp_backend.cpp.o CMakeFiles/hipSYCL-rt.dir/omp/omp_event.cpp.o CMakeFiles/hipSYCL-rt.dir/omp/omp_hardware_manager.cpp.o CMakeFiles/hipSYCL-rt.dir/omp/omp_queue.cpp.o  -L/opt/hipSYCL/rocm/lib -L/opt/hipSYCL/rocm/hip/lib -lamdhip64 /opt/hipSYCL/llvm/lib/libomp.so /usr/lib/x86_64-linux-gnu/libpthread.so
/usr/bin/ld: cannot find -lamdhip64
clang-10: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [src/runtime/CMakeFiles/hipSYCL-rt.dir/build.make:581: src/runtime/libhipSYCL-rt.so] Error 1
make[2]: Leaving directory '/tmp/hipSYCL-installer/build'
make[1]: *** [CMakeFiles/Makefile2:188: src/runtime/CMakeFiles/hipSYCL-rt.dir/all] Error 2
make[1]: Leaving directory '/tmp/hipSYCL-installer/build'
make: *** [Makefile:130: all] Error 2
jrhammon@jrhammon-nuc:~/hipSYCL$ locate libamdhip64
/opt/rocm-3.9.0/hip/lib/libamdhip64.so
/opt/rocm-3.9.0/hip/lib/libamdhip64.so.3
/opt/rocm-3.9.0/hip/lib/libamdhip64.so.3.9.30900
/opt/rocm-3.9.0/lib/libamdhip64.so
/opt/rocm-3.9.0/lib/libamdhip64.so.3
/opt/rocm-3.9.0/lib/libamdhip64.so.3.9.30900

I got this far by adding export HIPSYCL_ROCM_PATH=/opt/rocm.
jrhammon@jrhammon-nuc:~/PRK/Cxx11$ make nstream-sycl
/opt/hipSYCL/bin/syclcc-clang -DPRKVERSION="2020" -std=c++17 -O3 -DHIPSYCL --hipsycl-platform=rocm --hipsycl-gpu-arch=gfx900 nstream-sycl.cc -o nstream-sycl
clang-10: error: no such file or directory: 'oclc_wavefrontsize64_on.amdgcn.bc'
make: *** [Makefile:177: nstream-sycl] Error 1

jrhammon@jrhammon-nuc:~/PRK/Cxx11$ find /opt/rocm/ -name oclc*amdgcn.bc
/opt/rocm/lib/oclc_daz_opt_off.amdgcn.bc
/opt/rocm/lib/oclc_correctly_rounded_sqrt_on.amdgcn.bc
/opt/rocm/lib/oclc_unsafe_math_off.amdgcn.bc
/opt/rocm/lib/oclc_isa_version_900.amdgcn.bc
/opt/rocm/lib/oclc_isa_version_803.amdgcn.bc
/opt/rocm/lib/oclc_finite_only_off.amdgcn.bc
/opt/rocm/lib/oclc_daz_opt_on.amdgcn.bc

I got this far by adding export HIPSYCL_ROCM_PATH=/opt/rocm

Yes, that is the right solution.

clang-10: error: no such file or directory: 'oclc_wavefrontsize64_on.amdgcn.bc'

hm, I have just checked, my ROCm 3.8 installation (which works fine with clang 10) comes with the oclc_wavefrontsize64_on.amdgcn.bc file which seems to be missing here. So maybe, AMD changed the hip device libraries again in 3.9 and removed this file, but clang 10 still needs it.
In that case it could be that you need to switch to clang 11 or newer..

I've had a look at the apt ROCm package; it seems they have changed the naming scheme - these files no longer have amdgcn in their names and are now located in amdgcn/bitcode/ instead of lib/ as before.
A simple workaround might be to symlink them inside lib with amdgcn.bc suffix.

@jeffhammond Any progress on this? Have you succeeded with the suggested workaround?

I couldn't get anything working after about a dozen attempts so I decided to give up and see if something changes when I try again later.

The easiest way might be to just install ROCm 3.8 in the meantime which should work out of the box. AMD also provides binary Ubuntu packages for 3.8: http://repo.radeon.com/rocm/apt/3.8/

@illuhad I approached this issue the same way you suggested and it worked.

@gogo2 Great, thanks for the feedback!

Current status:
jrhammon@jrhammon-nuc:~/PRK/Cxx11$ ./nstream-sycl  10 $((1024*1024)) 256
No device code bundle for gfx803
Aborted (core dumped)

HIP works:
jrhammon@jrhammon-nuc:~/PRK/Cxx11$ ./nstream-hip  10 $((1024*1024)) 256
Parallel Research Kernels version 2020
C++11/HIP STREAM triad: A = B + scalar * C
device name: Polaris 22 XT [Radeon RX Vega M GH]
total global memory:<PHONE_NUMBER>
max threads per block:   1024
max threads dim:         1024,1024,1024
max grid size:<PHONE_NUMBER>,2147483647,2147483647
memory clock rate (KHz): 800000
memory bus width (bits): 4096
Number of iterations = 10
Vector length        = 1048576
Block size           = 256
Grid stride          = no
Solution validates
Rate (MB/s): 46354.7 Avg time (s): 0.000723863

No device code bundle for gfx803

That says that there's no device code in the application that has been compiled for your GPU, gfx803. Have you compiled for gfx803?

Ah, sorry, I had an errant gfx900 handing around in my make.defs.  Now it works:
jrhammon@jrhammon-nuc:~/PRK/Cxx11$ ./nstream-sycl 10 $((1024*1024*32))
Parallel Research Kernels version 2020
C++11/SYCL STREAM triad: A = B + scalar * C
Number of iterations = 10
Vector length        = 33554432
Block size           = 256
hipSYCL presently only supports GPU platforms when using the CUDA and ROCm backends, and CPU platforms when compiling against hipCPU
hipSYCL presently only supports GPU platforms when using the CUDA and ROCm backends, and CPU platforms when compiling against hipCPU
hipSYCL presently only supports GPU platforms when using the CUDA and ROCm backends, and CPU platforms when compiling against hipCPU
hipSYCL presently only supports GPU platforms when using the CUDA and ROCm backends, and CPU platforms when compiling against hipCPU
Solution validates
32B Rate (MB/s): 112858 Avg time (s): 0.00475705
Solution validates
64B Rate (MB/s): 130625 Avg time (s): 0.00822001

For comparison, here is HIP with the same vector length:
jrhammon@jrhammon-nuc:~/PRK/Cxx11$ ./nstream-hip 10 $((1024*1024*32))
Parallel Research Kernels version 2020
C++11/HIP STREAM triad: A = B + scalar * C
device name: Polaris 22 XT [Radeon RX Vega M GH]
total global memory:<PHONE_NUMBER>
max threads per block:   1024
max threads dim:         1024,1024,1024
max grid size:<PHONE_NUMBER>,2147483647,2147483647
memory clock rate (KHz): 800000
memory bus width (bits): 4096
Number of iterations = 10
Vector length        = 33554432
Block size           = 256
Grid stride          = no
Solution validates
Rate (MB/s): 136148 Avg time (s): 0.0078866

Awesome!

hipSYCL presently only supports GPU platforms when using the CUDA and ROCm backends, and CPU platforms when compiling against hipCPU

Current develop can target CPU and GPU simultaneously :-)
(On CUDA there's this clang bug with simultaneous CUDA and OpenMP usage, but on HIP it works well)

I don't care about CPU support.  I just want to know how to silence that warning without changing my code.

Oh, I couldn't remember that error, so I assumed it comes from specialized hipSYCL code paths in PRK. I did some archeology and it turns out this was an exception in legacy hipSYCL (sycl/1.2.1 branch) that is triggered when you try to invoke a device selector that is unsupported on the current platform (e.g. cpu_selector when compiling for GPU):
https://github.com/illuhad/hipSYCL/blob/46bc9bde22056900f18b725776c6f6c660355e9a/include/hipSYCL/sycl/device_selector.hpp#L67
You can either get rid of it by upgrading to develop branch (which also brings the goodies such as USM) or by ignoring the exception in the PRK exception handling.

same here on Arch Linux (everything is bleeding edge)
Building wheel torch-1.7.0a0
-- Building version 1.7.0a0
cmake --build . --target install --config Release -- -j 32
ninja: error: '/opt/rocm/hip/lib/libamdhip64.so4a3c144', needed by 'caffe2/python/caffe2_pybind11_state_hip.cpython-39-x86_64-linux-gnu.so', missing and no known rule to make it

@chiboreache Can you please elaborate how this relates to hipSYCL? AFAIK Torch does not even have a SYCL backend. Recent hipSYCL works well with newer ROCm (which was the issue discussed in this thread) and PR #474 should make things even simpler. Your issue looks like a Torch-specific problem.

@illuhad
you just on first lines on google  ¯_(ツ)_/¯
since AMD ROCm ignoring best OS (Arch Linux) and supports only amazon blob and CentOS, we have to tinker it by enthusiasts, which are having bad time in terms of supporting ~_~

@chiboreache There are packages in the AUR which work quite well, although I have never tried them with Torch.  I have no idea why Torch would think that this is the right library path, but I would suggest to ask Torch developers and open an issue in their issue tracker. Then you will be in touch with the people who actually develop a component of the stack that you are using ;)

@illuhad

packages in the AUR which work quite well
you're so wrong mate..

https://github.com/arch4edu/arch4edu/issues/101#issuecomment-779361694
https://bbs.archlinux.org/viewtopic.php?pid=1957441#p1957441
torch+vision works great, even stupid detectron2 from fb works nice, but rocm won't build at all

@chiboreache I use them regularly on two Arch installations. As I've said I cannot speak for higher levels of the stack including Torch or other ML frameworks on top of ROCm as I don't use those.

@illuhad
got it, thanks!) at least i know now that it's working nicely under the hood =)


Access violation in BulletSharp when freeing CollisionWorld

Hi,
with version 2.82 we had sporadic access violations during shutdown of our application.
The update to verision 2.83 did not change this behaviour.
We downloaded and compiled the BulletSharp/Bullet debug versions. Now the access violation occurs on every shutdown.
In the debugger we can see the crash occur in  !CollisionWorld()-> free _native
We could not debug into the bullet library so we added code from Bullet libraries desctructor to the !CollisionWorld() to track down the error and
found out that bp of : btBroadphaseProxy* bp = collisionObject->getBroadphaseHandle();
is not valid and crashes.
Any ideas?

Make sure you remove collision objects from the world before you dispose them.

same exception
BvhTriangleMeshShape s;
...
s.MeshInterface.Dispose();

Well, yes, if you dispose the mesh data that the mesh shape uses, it will crash. That is expected, isn't it?

Ок, thanks. How to unload TriangleIndexVertexArray, i take a simple test, create TriangleIndexVertexArray, and then dispose in a cycle, I see an increase in memory. But if  is try test with BTbvhTriangleMeshShape, it's ok, memory not growing.
   public static void TriangleTest(int [] triangles, float [] verticles)
    {
        List<TriangleIndexVertexArray> arrays = new List<TriangleIndexVertexArray>();
        for (int n = 0; n < 1000; n++)
        {
            arrays.Add(new TriangleIndexVertexArray(triangles, verticles));
            for (int i = 0; i < arrays.Count; i++)
            {
                arrays[i].Dispose();
            }
            if (n % 100 == 0) Console.WriteLine(n);
            arrays.Clear();
        }
        GC.Collect();
    }

There is indeed a memory leak in TriangleIndexVertexArray, the memory for vertex and triangle data isn't freed. I will fix it within the next week. Thanks for reporting!

I've commited a fix for the TriangleIndexVertexArray memory leak.

it still happens with 2.87 x64 when calling Dispose of DiscreteDynamicsWorld

also happens in StepSimulation


⚠ Samsung has degraded performance

In e2cc43d, Samsung (https://samsung.com) experienced degraded performance:

HTTP code: 200
Response time: 3329 ms

Resolved: Samsung performance has improved in 858f5db.


perf: use separate perf files for kbfs and git processes

This avoids interleaving of log lines in the perf log when there are multiple writers.  The log send then zips these different logs together into a single perf log, with lines ordered by timestamp.
Issue: HOTPOT-2085

@joshblum: This PR works, but unfortunately it seems like the zipLogs function is very slow in practice.  Just splitting the lines and going through each one in a perf file seems to be slow; it adds about 10-15s to the log collection process on my laptop, before even starting to send the data to the server.  And my logs aren't even that big yet (keybase.perf.log is about 6MB, and the others are tiny still).
So I'm curious if you see a better way to write that function.  I could probably build a custom scanner to go backwards through the file to get each line, and then stop when numBytes is reached and/or when there's only one file left it'll just prepend all the rest of that file without processing it.  But those seem like they wouldn't help much in the general case of all logs being full.

So I'm curious if you see a better way to write that function.

@joshblum nevermind I figured it out -- needed to use a bytes.Buffer to assemble the result, rather than + string concatenation.  Now it's fast. PR updated, ready to review.


Thayer armor optimizations

Trying to speed up our agent by reducing the amount of time we spend looking for armor improvements.

Advisors that wield better weapons or wear better armor now subclass ImprovementAdvisor.
ImprovementAdvisors remember the last time they crawled the inventory to find a potential improvement.
The advice method of ImprovementAdvisor returns None unless one of the following conditions is met:

The inventory bytes have changed since the last try.
The character's plan (like digging a pit or wielding a ranged weapon) has changed since the last try.

This has led to a considerable saving in time spent on the inventory checking subroutines.
The idea of a "character plan" should probably be extended into something a little more robust. Right now it's all adhoc and implemented on the character with the method executing_a_plan.

Significant regression. This isn't safe to merge.


Removed duplicate and redundant data. Fixed activity filenames.

This commit fixes some issues in the extended-activities-TRI001.csv file where some columns were partially duplicated and the filenames for workout details were incorrect.

Also added a field in the activities csv file that specifies whether a session was a competition session or not for use by the swimming predictive model.


XcodeVersionedName.munki FileMover: [Errno 66] Directory not empty

After once successful autopkg run XcodeVersionedName.munki, subsequent runs produce a [Errno 66] Directory not empty error. Maybe the PathDeleter process in Xcode.download.recipe should have moar paths?

Should be fixed in 50c23114fbfdc3ee780ecd25cf3c549d8ac3a210. Please test and let me know.

Not fixed, here's better verbosity:
FileMover
{'Input': {'source': u'/Users/macj/Library/AutoPkg/Cache/local.munki.XcodeVersionedName/Xcode_unpack/Xcode.app',
           'target': u'/Users/macj/Library/AutoPkg/Cache/local.munki.XcodeVersionedName/Xcode_11.0.0.app'}}
[Errno 66] Directory not empty

I might be misunderstanding how Autopkg does caching, but I think this implies that the PathDeleter processor in XcodeVersionedName.munki.recipe and Xcode.munki.recipe should include the path %RECIPE_CACHE_DIR%/%NAME%_%major_version%.%minor_version%.%patch_version%.app and %RECIPE_CACHE_DIR%/%NAME%.app, respectively.
I can PR if that looks correct to you.

Hmm. I was unable to repro this by running it twice. I'll try again.

Well, I beg your pardon because I apparently can't read. I found the bug in XcodeVersionedName.munki and testing it now.

This should now be actually fixed by https://github.com/facebook/Recipes-for-AutoPkg/commit/b456170dea4ceacd3606c9d69965cc3516bccf25. Please test and let me know.

✅


Spanish Lang minor fix

Translated some English/Spanish.

Let me know if there's something wrong with this request.


Installation

Hithere - very keen to use your plugin! When I install it all looks good, it finds it and goes throght the install but then there is no sign of the plugin in the backend or plugin list.
Not sure where it is failing in install any idea where I could look?

Have you tried to reinstall the plugin?

I sent PR #4 fixing uninstalling plugin.

Related to the uninstall problem above:

I fixed this issue. Thank you for reporting the bug!


FP8 GPU implementation

Tested on MI300.
Added verify tests for Math ops, reduce ops and a couple/few pointwise ops.
Some FP8 tests are commented out because they run into compile errors. Need to fix and enable them

What's the usage of implicit_conversion?
Looks like a lot of the kernels were changed to be more explicit about the types.

From what i understand, some of the internal functions/kernels return output in different type compared to what is desired from  JIT kernel's output type.  and implicit conversion takes care of such types mismatches.
Float8 constructors are marked as explicit to avoid implict conversions and therefore had to call constructor explicitly in many places explicitly.

Looks good! We should probably look into having an env variable to enable fp8 emulation since its probably much slower on unsupported hardware then just using fp32 or fp16 directly.

like this idea too but lets get this in so we can hammer the others out. Good for a smaller final PR


Errors on form are non-obvious

It would be nice if the errors was bold.

Turns out we've already forked forms: https://github.com/hackcambridge/forms so the obstacles to proper HTML5 validation are much reduced if we can use the fork (are we using it?)


fix(vscode): color preview with !important

fix #2708
Problem
The problem was happening because of the regex in getCssVariables
const regex = /(?<key>--\S+?):\s*(?<value>.+?);/gm

For the given str:
/* layer: default */
.\!text-amber {
  --un-text-opacity: 1 !important;
  color: rgba(251, 191, 36, var(--un-text-opacity)) !important;
}

When match.groups?.key is --un-text-opacity, its match.groups?.value would be 1 !important. Finally, the resulting colorString is rgba(251, 191, 36, 1 !important), which breaks the CSS and wrongly previews the color:

Solution
Use the following regex to stop the capturing group until it finds either an ! or ;
const regex = /(?<key>--\S+?):\s*(?<value>.+?).*[!]{0,1}.*;/gm

Another solution would be to create a sanitizer/cleaner for match.groups?.value. Let me know what is best.

I am ok with the regex fix. Can you help adding some unit test for that function? Thanks

@antfu done! The function getCssVariables is not exportable, so I tested getColorString instead.
I had to update alias.ts and tsconfig.json as well to test it from tests/utils.test.ts. Let me know if there is anything else you wanna me to do.

Also, I have updated the regex to make it more readable. From
/(?<key>--\S+?):\s*(?<value>.+?).*[!]{0,1}.*;/gm

to
/(?<key>--\S+?):\s*(?<value>.+?)\s*[!;]/gm


[DUOS-1130][risk=no] Fix dataset delete by id/user

Addresses
https://broadworkbench.atlassian.net/browse/DUOS-1130
Depends on https://github.com/DataBiosphere/consent/pull/1012
Rebase once that is merged.
Clean up the delete by id/user code.

Have you read CONTRIBUTING.md lately? If not, do that first.
I, the developer opening this PR, do solemnly pinky swear that:

[ ] I've followed the instructions if I've made any changes to the API, especially if they're breaking changes
[ ] I've updated the RC_XXX release ticket with any manual steps required to release this change
[ ] I've updated the FISMA documentation if I've made any security-related changes, including auth, encryption, or auditing
[ ] I've updated Swagger to reflect any API changes

In all cases:

[ ] Get two thumbsworth of review and PO signoff if necessary
[ ] Verify all tests go green
[ ] Squash and merge; you can delete your branch after this unless it's for a hotfix. In that case, don't delete it!
[ ] Test this change deployed correctly and works on dev environment after deployment

That can't happen, there's no rollback code in this PR. Remember to do a clean maven build.

Would also like to add that the deleteDataset function is called on the exception handler for createDataset. Could the old implementation be the reason why impartial datasets persisted?

Would also like to add that the deleteDataset function is called on the exception handler for createDataset. Could the old implementation be the reason why impartial datasets persisted?

It could be ... I haven't gotten to testing that specific error yet. Need to get some of these other bugs fixed before I can replicate the issue in https://broadworkbench.atlassian.net/browse/DUOS-1177


Update licensing documentation

Provide a better explanation on the reasons of the license of the project.

Time spent: 1 hour


STORM-3011 Use default bin path in flight.bash if $JAVA_HOME  is undefined

thanks, see #2609

thanks @revans2


manual_skip_stage

Added the --skip switch to the CLI.
Updated build_stages() to handle stage names to skip.
Added the skip attribute to the Stage object.
Added logic to handle and properly display skipping a stage.
Updated tests.

Closes #98

Codecov Report

Merging #106 (a75855b) into main (15e0df1) will decrease coverage by 0.02%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main     #106      +/-   ##
==========================================
- Coverage   96.53%   96.51%   -0.03%
==========================================
  Files          10       10
  Lines        1733     1751      +18
==========================================
+ Hits         1673     1690      +17
- Misses         60       61       +1

Flag
Coverage Δ

unittests
96.51% <100.00%> (-0.03%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

build_magic/__init__.py
100.00% <100.00%> (ø)

build_magic/cli.py
98.96% <100.00%> (+0.03%)
:arrow_up:

build_magic/core.py
98.58% <100.00%> (+0.04%)
:arrow_up:

build_magic/actions.py
90.35% <0.00%> (-0.28%)
:arrow_down:

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 15e0df1...a75855b. Read the comment docs.


user needs to be added to strong-pm group

we should make the user add script add the user to the strong-pm group as well

added


matchBy data elements whose value needs quotes

Addresses an issue When using matchBy if a data-element required
quotes, the matchBy would fail.

Burawa, Danny

Matching on data-fullname would previously fail. This commit takes
the attribute value escapes single quotes, and the wraps the attribute
value in single quotes before searching.
Should fix [#292]

Thanks, this looks great.


Selecting the 'Getting Started' button in the UI, it results in a blank page

Description:
It is expected get the Getting Started wizard. But getting a blank space.

'WSO2 Welcome' represents the perspective of the Getting Started page. Hence, it will switch to the perspective (full screen) with the currently available windows.
Getting started page can be open form "Help" -> "Getting Started".

Same: selecting Help > Getting Started on MacOX 7.2.0-beta gets an empty page (but switches to WSO2 Welcome perspective).
Message box with error (after some time):
http://<IP_ADDRESS>:7774/welcome?port=7774&nocache=1
Page load failed with error: The request timed out.

Seems it works properly in a newly created workspace


[Bug] Opening the CSS editor to a detached window causes everything to dissappear.

Describe the Bug
Detaching the CSS editor causes everything but the editor to go away, and this is only fixed with a restart.
To Reproduce
Detach the css editor
Expected Behavior
To detach normally
Screenshots
Right after detaching it -> https://i.imgur.com/xcxcIBU.png
After closing the editor -> https://i.imgur.com/MrTMPcA.png
Discord Version
Stable
Additional Context
I have disabled all my plugins and themes. It does this whether you detach it through the editor or have it detach on opening

You can press escape after detaching the window to display everything again. It's not ideal, but it should work for the time being...(Thanks DemetedElmo for telling me this)


Add support for winliner-based PGO

The winliner crate adds support to WASM for Profile Guided Optimization. It would be great if jco was able to provide an integration with winliner to compile with PGO enabled, run the profiler, and then rebuild using the captured profile. I believe we're already providing some optimizations for size and speed via binaryen. And I believe this should be mostly in line with that.
The reason why I'm suggesting we include it here, rather than say componentize-js, is because I believe this would work best if the following lines was possible:
$ jco run <my-component> --instrument # outputs profile.json
$ jco opt --profile=profile.json      # optimize using the generated profile.json

This is not a priority, but I saw winliner come by yesterday, and PGO-based optimization seemed like it would be worth eventually including. Thanks!

This is a really interesting idea! The benefits of it being JS-ecosystem-focused being that JS developers or build tools don't need to separately install or depend on native tools and that we can more directly link the profiling collection to the profiling optimization.
Could definitely be worth investigating after the preview2 freeze.


Configuration file

May i know how to create config file and what to put inside it

in configs.dart you need to add these 3
APP_ID = Agora.io APP ID after creating a project on their website
GIPHY_API_KEY = Giphy api key
FCM_SERVER_KEY = Your firebase fcm server key for push notifications
const String APP_ID = "your-key";
const String GIPHY_API_KEY =  "your-key";
const String FCM_SERVER_KEY = "your-key";


Any agg func like collect_list()?

I want to some function like this , but I can't find it from the documentation.
col1, col2, col3
1, x, a
1, x, b
2, y, a
2, y, b

select col1, col2, collect_list(col3) as col3
from tbl
group by col1, col2

col1, col2, col3
1, x, [a, b]
2, y, [a, b]

arrayConcat can't work like this.
Can you do me a favor? Thanks.

It's named groupArray.

Try
select col1, col2, groupArray(col3) as col3
from tbl
group by col1, col2


Not really a bug but an installation question. ><

So first of all, you have a great site. Much cleaner and nicer than pomf.
I've had some trouble installing it. I'm relatively new to server stuff. I seem to have everything working fine http://i.idgaf.fyi/ apart from when i upload, my links come out as http://i.idgaf.fyi/i.idgaf.fyi/ke3mHtZLQy8KIqsTjyGlAFz6oV4Z818i.jpg rather than http://i.idgaf.fyi/ke3mHtZLQy8KIqsTjyGlAFz6oV4Z818i.jpg
Know where I went wrong?
thank you for your time ><

Sure! Can you show me your config file?

I think I figured it out. I changed the baseurl part ^^
On Thu, Aug 3, 2017 at 3:13 PM, Kana<EMAIL_ADDRESS>wrote:

Sure! Can you show me your config file?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/WeebDev/lolisafe/issues/46#issuecomment-319981069,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AH02UriGuWUfY8rw0UhjAUEwygz3XGdwks5sUdV0gaJpZM4OsIoi
.

Great then, enjoy!

Hello, I just wanted to re-open this as I am having the same problem and I 1 other person I talked to about this had the same problem. The OP didn't give a very detailed response on how he fixed it, attached is my config file (yes, it's normally .js). If you want me to open up another report let me know as well.
Thank you for your help and work.
config.txt

Could you please tell me what should the final URL look like and how does it look like for you with this config?

Should be https://img.site.me/picture.png (I'd assume)
With this config, I get https://i.site.me/i.site.me/picture.png
I setup a subdomain for lolisafe under i.site.me.
server_name is i.site.me
location / {

Try with
domains: [
	{ host: 'img.site.me', resolve: 'https://img.site.me'},
]

Replace your domains array with this one and tell me if it works.

Same exact results. I restarted lolisafe.js and nginx service as well as hard refresh and tried a different browser. I will note that I am running this as root as well when uploading.

config.domains[] doesn't make the app serve files on resolve URL. In fact, it only ever serves on / (source, have I mention it also ignores config.uploads.folder, which makes it break once you decide to change upload destination? Oh, I have).  You have to do any redirection manually.
The URL is composed as following: basedomain + '/' + file.name (source), where basename is req.get('host') or resolve part of matching config.domains[]. If you don't specify resolve or no matching domain is found - it'll compose something like example.com/picture.png - no protocol included. That's the reason why the link's destination is https://i.site.me/i.site.me/picture.png - href without a protocol, or at least two trailing slashes, is treated as relative.
If config sample from above ({ host: 'img.example.com', resolve: 'https://img.example.com' }) doesn't solve the issue (and your host matches real host), your application cannot properly read the host for some reason.
Besides the bad, prone to such errors, design of the application, it's the problem with your forwarding software / other configuration.

The whole resolving should be on the nginx part anyway. Theres nearly no reason to have what the current design is, because as you mentioned it's prone to errors.
But as it stands right now this project is in a rewrite with a backend that's solid and structured. This project can be treated more as a side-project now since the major focus lies in the complete rewrite + rebranding.

This release makes it possible to choose between node and nginx to serve files. If you want simplicity and your files at the root of your domain, set serveFilesWithNode to true in the config file. Otherwise set it to false and serve the files via nginx/apache manually. You can check the sample nginx conf for guidance.


Upload to GitHub repo

Request for a feature to sync with remote repo

@Kholid060 I was looking for sync feature like in this app https://github.com/seokju-na/geeks-diary


fix: make example compile & run

Thanks for creating this package, I was looking for something to render & sort data. This PR update's example so that it can compile and run.

Thanks very much for your contribution, I made the example a bit more detailed too. Feel free to file issues or more prs, happy to work with you to make this package more useful!


Configure hostname verifier on OIDC resource retriever

The resource retriever used in the OIDC configuration does not recognize the hostname verifier that is set in the configuration. The retriever is used to fetch remote OIDC keys for token validation, and without the hostname verifier, reaching out to resources that might present a mismatched name could fail (particularly useful for testing against localhost)

Don't forget to drop a line in the release notes.

I was able to test this with Keycloak as the delegated IDP in CAS, and this works correctly. This should be the last piece of the puzzle for now.


MINOR: Fix stream-join metadata

https://github.com/apache/kafka/pull/11356 inadvertently changed
the (undefined) header forwarding behavior of stream-stream joins.
This change does not define the behavior, but just restores the prior
undefined behavior for continuity's sake. Defining the header-forwarding
behavior is future work.
Committer Checklist (excluded from commit message)

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

ping @jeqo , in case you have a chance to review as well.

It seems like the build is getting better. Only a couple of unrelated test failures:
[Build / JDK 8 and Scala 2.12 / kafka.server.ListOffsetsRequestTest.testCurrentEpochValidation()](https://ci-builds.apache.org/job/Kafka/job/kafka-pr/job/PR-11952/1/testReport/junit/kafka.server/ListOffsetsRequestTest/Build___JDK_8_and_Scala_2_12___testCurrentEpochValidation__/)
    Build / JDK 17 and Scala 2.13 / org.apache.kafka.streams.integration.StreamsUncaughtExceptionHandlerIntegrationTest.shouldShutdownMultipleThreadApplication

Thanks for the quick reviews, @mjsax and @jeqo !