Token Refresh Fails Due to SSO Session Max Timeout Leading App To Crash

Problem:
During the initialization process, the initializeManager method on TokenManager requests an accessToken and refresh token using the grant type password:
this.clientSecret = keycloakLogin.clientSecret;
    this.clientId = keycloakLogin.clientId;
    const body = {
      client_id: this.clientId,
      username: keycloakLogin.username,
      password: keycloakLogin.password,
      client_secret: this.clientSecret,
      grant_type: 'password'
    };
    const apiConfig = {
      url: this.url,
      method: 'POST',
      headers: {},
      body: querystring.stringify(body)
    };
    await this.makeRefreshRequest(apiConfig);

Then, it sets up a setInterval to ensure there is always a valid access token for API operations:
//Create timed task to refresh token
    const marginInSeconds = 60;
    if (
      this.accessTokenExpireTime != undefined &&
      this.refreshTokenExpireTime != undefined
    ) {
      const accessTokenInterval = this.accessTokenExpireTime - marginInSeconds;
      const refreshTokenInterval =
        this.refreshTokenExpireTime - marginInSeconds;
      if (accessTokenInterval > refreshTokenInterval) {
        setInterval(() => {
          this.refreshAccessToken();
        }, refreshTokenInterval * 1000);
      } else {
        setInterval(() => {
          this.refreshAccessToken();
        }, accessTokenInterval * 1000);
      }
    }

The problem arises due to how Keycloak handles refresh token expiry, which is tied to the SSO Session Max timeout. When the SSO Session Max timeout is reached, the refresh token becomes invalid regardless of its original expiration time. The SSO Session Max timeout represents the maximum session lifespan, and once exceeded, any tokens associated with that session become invalid.
The library currently assumes that using the refresh_token grant type will always return consistent expiration times for both access and refresh tokens. However, due to the SSO Session Max settings, these tokens’ validity is capped by the session’s maximum lifespan. Eventually, the server attempts to renew tokens using an expired refresh token, resulting in a 400 error from Axios, which can cause the entire server to crash because there is no error handling in place.
Proposed Solutions::

Implement Error Handling: The token refresh logic should include error handling to catch failures when refreshing tokens. If a refresh token has expired, the library should re-authenticate using the password grant type to obtain new tokens.
Dynamic Expiration Handling: Instead of assuming fixed expiration times, the library should calculate token refresh intervals based on the actual expires_in and refresh_expires_in values returned by Keycloak, which may change due to SSO session settings.
Request offline_access Scope: Modify the initial password grant request to include the offline_access scope. This will provide an offline refresh token, which is not subject to the SSO session idle timeout and can be used to obtain new access tokens even after the session has expired.

Steps to Reproduce:

Adjust Keycloak Session Timeouts:

Set SSO Session Max timeout to 2 minutes.
Set SSO Session Idle timeout to 5 minutes (or any value greater than the SSO Session Max).
Set Access Token Lifespan to 1 minute.

Initialize the Keycloak Manager

Use the keycloak-typescript library to initialize the manager in your backend service as usual.

Wait for Session Max Timeout to Exceed

Allow the service to run for more than 2 minutes to exceed the SSO Session Max timeout.

Trigger Token Refresh
- Wait until the next scheduled token refresh occurs (after the access token expires in 1 minute).
Observe the Error:

Notice that the server attempts to refresh tokens using an expired refresh token.
A 400 error is returned from Axios due to the invalid refresh token.
Without error handling, this unhandled exception may cause the server to crash.

Hello @ScheckGuillermo, thanks again for sharing the steps to reproduce and the detailed version of the issue. We are going to assign this task to @KLloydNA. :D


add Al-Quran app and monayem's portfolio made with vue 3

I have added two applications mentioned below

Al-Quran app that made with vue 3
Monayem's portfolio made with vue 3

I have added two applications mentioned below. Hope it would be help others
Al-Quran app that made with vue 3
Monayem's portfolio made with vue 3


SqlCmdVariables should be in a single section

Expected:
            <CustomData Category="SqlCmdVariables" Type="SqlCmdVariable">
		<Metadata Name="DbReaderPassword" Value="" />
		<Metadata Name="DbUserPassword" Value="" />
	</CustomData>

Actual:
            <CustomData Category="SqlCmdVariables" Type="SqlCmdVariable">
		<Metadata Name="DbReaderPassword" Value="" />
	</CustomData>
	<CustomData Category="SqlCmdVariables" Type="SqlCmdVariable">
		<Metadata Name="DbUserPassword" Value="" />
	</CustomData>

(Have not tested actually using the variables, blocked on #19 )

Looking at the current implementation this makes sense. Shouldn't be too hard to fix though. We'll probably have to supply a list to AddSqlCmdVariable (and rename it to be plural) and then call the SetMetadata method multiple times for each variable, before adding the custom data to the model.


Error "Cannot read property 'toLowerCase' of undefined"

I get that error and cannot open my project anymore.  My project was originally created with SayMore but I've been working with the most recent lameta version. Everything worked fine yesterday but not today. Suggestions?

@JuarezRC Thanks for letting me know. Might it be possible for you to share your project files via dropbox or whatever so I can track this down?

@JuarezRC I should also have asked what version you are using.

@hatton Thanks! I'm using 8.8. Sure, I can upload everything to my google drive and give you access to it. What do you want to see? Does that work? I will need an email address. This problem arose after I deleted older versions of the exported IMDI+files. For some reason I don't understand, the folders People and Sessions, and the .sprj file are saved in the SayMore folder. I'm able to save the exported IMDI files in my lameta folder though.

@JuarezRC Yeah I don't want post my email here but you could either share yours or 1) Go to https://community.software.sil.org/c/saymore 2) Sign up 3) Click on my avatar 4) click on the "Message" button to send me a private msg. Sorry for the hassle!

@JuarezRC OK, thanks for sharing your files. The problem is that lameta is tripping over the project folder being named differently from the .sprj file inside of it. Until we can improve that, please rename your folder to mocovi-juarez-IGS0365 or rename your .sprj file.

@hatton Thanks! Unfortunatelly, it does not work. I've tried with different names but does not work anyway. I can open the .sprj file as it is with SayMore though :(

Changing the folder you gave me to be mocovi-juarez-IGS0365 made everything work for me:


Multiple duplicate help flags

On the latest mill if you do a mill --help you'll notice there are multiple help flags that are duplicated and some conflicting. Here are a few:
This is in there twice, the same both times
 -h --home <path>     The home directory of the REPL; where it looks for config and caches

This flag is in there twice with different descriptions
--bsp                Run a BSP server against the passed scripts
--bsp                Enable BSP server mode.

This one is in there twice with conflicting descriptions
-v --version         Show Ammonite's version
-v --version         Show mill version and exit.

Interesting. I think, those were not present before. Maybe a consequence of a mainargs library bump.
I think we should not inherit the args of Ammonite, but duplicate and wrap them. Essentially, we don't want all of Ammonites CLI flags, some are totally unsupported (e.g. thin) and other have different meaning (bsp).


Zstd.decompressedSize(ByteBuffer) returns negative values for empty buffers (Regression 1.5.0-4 -> 1.5.5-4)

Based on the documentation, I'd expect that Zstd.decompressedSize(ByteBuffer) would always return a non-negative value. But somewhere between 1.5.0-4 and 1.5.5-4, it began returning negative values when provided with an empty ByteBuffer. For empty ByteBuffers specifically, I would expect the method to return zero (despite the ambiguity with the return value when the size is unknown).
Somewhere between 1.5.0-4 and 1.5.5-4, Zstd.decompressedSize(ByteBuffer) began returning negative values when passed an empty ByteBuffer.
Zstd.decompressedSize(ByteBuffer.allocate(0))
1.5.0-4 returns 1
1.5.5-4 returns -1
Zstd.decompressedSize(ByteBuffer.allocateDirect(0))
1.5.0-4 returns 0
1.5.5-4 returns -2

The returned negative integers are error codes. Zstd returns 0 if there is valid frame header but there is no size encoded there - this could happen if the frame was compressed in streaming mode.
On you errors:

Zstd.decompressedSize(ByteBuffer.allocate(0)) . Zstd.decompressedSize requires direct buffers, so it returns -1 (generic error)

Zstd.decompressedSize(ByteBuffer.allocateDirect(0)) - returns -2 because it cannot find the frame header.


Updated docs reflecting the length default value

After https://github.com/twopirllc/pandas-ta/commit/fcaf5e90e1af9a05221eb8e0628a99eee256ed9c and https://github.com/twopirllc/pandas-ta/commit/18aacc8eab2ad28962c506e242e3d719c005fe2d, the method documentation regarding the default length and moving average mode parameters became misaligned

Hello @witokondoria,
Awesome! Thanks for catching that.
KJ


SIL: A utility for processing basic blocks in a worklist.

BasicBlockWorklist is basically a combination of a block vector and a block set.
It can be used for typical worklist-processing algorithms.
Also in this PR: rename the SILBitfield.h header file to BasicBlockBits.h
All this is a NFC.

@swift-ci test

@eeckstein FYI: I've been using my own worklist abstraction on a branch that looks like this. But what you have here is good for blocks:
// Worklist of pointer-like things that have an invalid default value. Avoid
// revisiting nodes--suitable for DAGs, but pops finished nodes without
// preserving them in the vector.
//
// The primary API has two methods: intialize() and pop(). Others are provided
// for flexibility.
//
// TODO: make this a better utility.
template <typename T, unsigned SmallSize> struct PtrWorklist {
  SmallPtrSet<T, SmallSize> ptrVisited;
  SmallVector<T, SmallSize> ptrVector;

  PtrWorklist() = default;

  PtrWorklist(const PtrWorklist &) = delete;

  void initialize(T t) {
    clear();
    insert(t);
  }

  template <typename R> void initializeRange(R &&range) {
    clear();
    ptrVisited.insert(range.begin(), range.end());
    ptrVector.append(range.begin(), range.end());
  }

  T pop() { return empty() ? T() : ptrVector.pop_back_val(); }

  bool empty() const { return ptrVector.empty(); }

  unsigned size() const { return ptrVector.size(); }

  void clear() {
    ptrVector.clear();
    ptrVisited.clear();
  }

  void insert(T t) {
    if (ptrVisited.insert(t).second)
      ptrVector.push_back(t);
  }
};


[Scipts] Ensure admin/setup.sh exists before run bash admin/setup.sh

This ensure check admin/setup.sh exists before run it as admin directory is on .gitattributes.
https://github.com/codeigniter4/CodeIgniter4/blob/7546ee04a55071d4731c77346deb47843f397c87/.gitattributes#L12
To avoid usage of download and run composer update with got error:
Script bash admin/setup.sh handling the post-update-cmd event returned with error code 127

Checklist:

[x] Securely signed commits

@MGatner thank you for the review.


SPI resources

Hi @noopkat,
I came across your oled-js project.
I'm trying to draw on a e-ink display module which requires SPI.
I was wondering if you can point me to the best resources you managed to find on how to use SPI as efficiently as possible. For your project, you mentioned it is slow when using SPI. (I'm trying to make a second e-ink display HDMI monitor).
It's also nice to see a fellow Melburnian make it to the big leagues in the US. Keep up the good work! I wouldn't be surprised if I've actually met you at a meetup or two either.
Regards,
PJ

Hi @pjebs!
Thanks for opening this issue. Your project sounds super cool as the off the shelf versions are so expensive and I also want an e-ink monitor :smile:
I couldn't tell from your question if you were looking to use this library with the display, and sorry if you knew this but wanted to clarify that the e-ink display would use a different driver to what this library implements.
As for your SPI question: the only reason why this is slow for OLED-js specifically is due to how the standard firmata protocol runs on low power / low cycle devices such as the Arduino. This library is designed to remotely control the Arduino which is running standard firmata on it. Standard firmata doesn't support SPI out of the box due to flash memory constraints (it's already a huge library). This essentially means that for me to support SPI, I manually bit bang out the SPI protocol, with several MIDI bytes for each pin flip over the USB connection from the host computer to the Arduino itself. It then streams the display buffer from there as it interprets the MIDI codes from the standard firmata protocol. Bit banging several opt codes per bit at a time is very inefficient.
I imagine that you're probably using a Raspberry Pi or similar to achieve your project? I also assume you won't have the weird bit banging over the wire limitation I have, as a result of using a more powerful device / not an Arduino with firmata. If so, then this SPI speed issue will absolutely not be a problem, and in fact SPI is designed and known for its high speed, especially compared to I2C.
Does this answer help at all? Sorry it's so long winded but I wasn't sure how much detail to include.
Thanks for the question, and likewise nice to meet a Melburnian on Github! We probably have crossed paths at some point in our career like a meetup as you mentioned.

Thanks @noopkat for the amazingly detailed response.

you're welcome! I wish you the best with the project!


Clarify webhook installation instructions

Add a line to the webhook installation instructions to ensure that
cert-manager is fully installed before moving on to deploy the
ProfileBinding webhook. If cert-manager isn't ready yet, the Issuer and
Certificate resources in webhook.yaml will fail to deploy.

What type of PR is this?

/kind documentation
What this PR does / why we need it:
Which issue(s) this PR fixes:

Fixes #249
Does this PR have test?

Special notes for your reviewer:
Does this PR introduce a user-facing change?

NONE

Codecov Report

Merging #250 (b005fa0) into master (ba9ce7e) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #250   +/-   ##
=======================================
  Coverage   30.25%   30.25%
=======================================
  Files           5        5
  Lines         476      476
=======================================
  Hits          144      144
  Misses        315      315
  Partials       17       17

Flag
Coverage Δ

unittests
30.25% <ø> (ø)

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

Continue to review full report at Codecov.

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

/approve
/lgtm

/lgtm


Add support for backup operation

Use cronjob to backup cluster data with option to store it on S3 (or any other cloud)
example backup script - https://github.com/sysboss/aerospike_backup
Base image with as-tools https://hub.docker.com/r/aerospike/aerospike-tools just need to add aws cli

Hi @dorsegal, Aerospike Kubernetes Operator 3.4 now supports backup and restore.
See the doc for more info.

Hi @abhishekdwivedi3060
I deployed the helm chart aerospike-backup-service service and backup but I dont see deployment of aerospike-backup-service created.
the setup is aerospike-backup-service is deployed in namespace A and the backup CR is deployed in namespace B.
The CR files created are as follows:
aerospikebackupservice
apiVersion: asdb.aerospike.com/v1beta1
kind: AerospikeBackupService
metadata:
  labels:
    app: aerospike-backup-service
  name: aerospikebackupservice
  namespace: A
spec:
  config:
    backup-policies:
      test-policy:
        parallel: 3
        remove-files: KeepAll
    service:
      http:
        port: 8080
    storage:
      s3Storage:
        path: 's3://test-bucket'
        s3-endpoint-override: ''
        s3-profile: ''
        s3-region: us-east-1
        type: aws-s3
  image: aerospike/aerospike-backup-service:2.0.0
  resources:
    limits:
      memory: 128Mi
    requests:
      cpu: 100m
      memory: 128Mi
  service:
    type: ClusterIP

aerospikebackup
apiVersion: asdb.aerospike.com/v1beta1
kind: AerospikeBackup
metadata:
  labels:
    app.kubernetes.io/instance: aerospike-test
  name: aerospiketest
  namespace: B
spec:
  backupService:
    name: aerospikebackupservice
    namespace: A
  config:
    aerospike-cluster:
      B-aerospiketest-aerospike-test:
        label: aerospike-test
        seed-nodes:
          - host-name: aerospike-test.B.svc.cluster.local
            port: 3000
    backup-routines:
      B-aerospiketest-aerospike-test:
        backup-policy: test-policy
        incr-interval-cron: '*/5 * * * * *'
        interval-cron: '@daily'
        namespaces:
          - test
        source-cluster: B-aerospiketest-aerospike-test
        storage: s3Storage

I got the issue. The namespace was not whitelisted which I just did.
But we have a kyvernopolicy in place which require that certain labels are added to the pod. Is there a way to add podLabels to the deployment of backupservice?

Hi @ShahroZafar, thanks for trying this new backup and restore feature.
CustomLabels support is not there yet in the backup service.
We'll plan this in our roadmap. Thanks for the feedback


Removed style cop related shade files

@rynowak @pranavkm Related to https://github.com/aspnet/Testing/pull/153#issuecomment-140218549

Do you need to remove it from wherever these are referenced as well?

Oh

:shipit:

5008e2743d1d0992af86d98a321ac88bd979fafd


New package: CloudMicrophysics v0.1.0

Registering package: CloudMicrophysics
Repository: https://github.com/CliMA/CloudMicrophysics.jl
Created by: @trontrytel
Version: v0.1.0
Commit: 0ba4c336c529c8127a34f5cf63ffd68cbfcd222e
Reviewed by: @trontrytel
Reference: https://github.com/CliMA/CloudMicrophysics.jl/commit/0ba4c336c529c8127a34f5cf63ffd68cbfcd222e#commitcomment-54481374

@trontrytel please see the message above.  Once you fix the automerge issues you can register again the new revision without changing the version number and this pull request will be automatically updated.
[noblock]

@trontrytel please see the message above. Once you fix the automerge issues you can register again the new revision without changing the version number and this pull request will be automatically updated.
[noblock]

Fixed. Thank you!

Awesome, thanks!
[noblock]

Hi @giordano, is there some way to rebase this? Or should we re-close / comment?

Just trigger registration again with the same version number
[noblock]


Upgrade to 23.1 fails

Just tried to upgrade our solution to BC v23.1 (w1) with Bc2adls and it fails with:
Start-NAVAppDataUpgrade : Could not upgrade the extension 'Azure Data Lake Storage Export' by 'The bc2adls team' from v
ersion '<IP_ADDRESS>898' to '<IP_ADDRESS>352' for tenant 'default' and company '' due to the following error: 'The followin
g table fields cannot be exported. Please disable them. [G/L Account]: , [Sales Header]: Received-from Country/Region C
ode, [Company Information]: IC Partner Code, [Sales Cr.Memo Header]: Received-from Country/Region Code, [Sales Header A
rchive]: Received-from Country/Region Code, ' and AL stack trace:
"ADLSE Upgrade"(CodeUnit 82572).OnCheckPreconditionsPerDatabase line 11 - Azure Data Lake Storage Export by The bc2adls
team
"Upgrade Triggers"(CodeUnit<PHONE_NUMBER>).OnCheckPreconditionsPerDatabase(Event) line 2
Any advise?

Those fields are put on ObsoleteState = Removed.
On every upgrade of bc2adls and the environment it will check if fields are removed.
So disable those fields for exporting and you can run the upgrade again.
In this way you prevent rong data or errors.

Ok, that's clear, but can you tell me which field to disable for G/L Accounts? The list of fields here is not shown.

Strange that isn;t there. But I can see in the source that field ID is put on obsolete removed.

We found out that the field in G/L Account, that is not displayed is from a Microsoft app, that we no longer have installed. So, the warning is correct, even if it is not listing the correct field name.

Ah good to know. Thanks for reporting back!


Look into using Goreleaser

It might be possible to invoke wails build with any custom flags as part of Goreleaser instead of letting to default to go build.
This would also be able to handle the signing and distribution process (ie; codesigning + Homebrew packaging)

I would have to invest in a GoReleaser Pro license and import prebuilt binaries

I'm going to close this for now. I don't believe I would gain much value from investing in Goreleaser, compared to my existing build pipeline. If October was a standard Go binary, I would but Wails has a slightly different setup.


[Feature Request] Expand/collapse All for tree view

Insomnia Version: 5.8.2
Operating System: Mac OS X

Detaills
A possibility to expand and collapse all (shown) folders in the tree view with one click (or shortcut) would be very helpful. It could also be automatically applied after filtering, as currently sometimes only closed folders with hidden requests are shown. The "Expand all" feature could directly show all found requests. And "Collapse all" would close all folders again. Small buttons could be placed obove the tree view or also in the menu bar ("View"). Maybe it could be configurable in the preferences whether filtered folders are expanded directly.

I'm also interested in this feature.
I think in terms of usability it's better to show all the results when filtering. Even if they are in folders.

+1 for this feature. In my current project I would already clicked it at least hundreds of times. I really would love a collapse all and then easily pick the third node or so from a (large) JSON.

+1, could really use this, especially a default option to always expand/collapse the response.

+1 for this feature....

+1 For this feature...

+1 Quality of life needed

+1 I would like as well!

+1 This would be nice

Going to reopen this one based on demand


Add MAI-GLMR, FRAX-GLMR LP

API PR: beefyfinance/beefy-api#896
Moo Stella GLMR-MAI
Vault: 0x0495a700407975b2641Fa61Aef5Ccd0106F525Cc
Strategy: 0x1a9fda6626097E9DEd33204E485dEf332F2B665b
Want: 0x91b11E7649614EaBe97D96d75bE11d1068059FF1
PoolId: 17
Moo Stella FRAX-GLMR
Vault: 0x0C517125a3B8b6417f55e1809433075AAd958712
Strategy: 0x008Af3DcEbDe6AfE80bDd4e3E37b6E26b506a781
Want: 0x015c6B2d98969e3bF066110769E53D734e48Ebf6
PoolId: 18

RewardsAvailable and CallReward are broken. You cant use common chef here. Would be better to use multireward strat with no rewardToOuput.

RewardsAvailable and CallReward are broken. You cant use common chef here. Would be better to use multireward strat with no rewardToOuput.

Okay, will redeploy them; but then there might be a problem with a few older Stella vaults. A few that also use CommonChef show 0 for CallReward like this one https://app.beefy.finance/vault/stellaswap-usdc-bnb.

Ya we noticed after they were live and it wasnt worth upgrading for.


@jgoz/esbuild-plugin-livereload error loading livereload-event-source.js over network

Hello again! I've been trying to get your livereload plugin working, but am receiving the error net::ERR_CONNECTION_REFUSED when the page tries to load http://$HOST:$LIVERELOADPORT/livereload-event-source.js.
When I am writing code, I am SSH'd into my dev machine, then accessing the web page over the network. I assume that the livereload server being stood up is refusing external connections? Is there a way to disable that?
I can access livereload-event-source.js when I curl the same endpoint while SSH'd into my dev box. I have tried changing the host parameter to the hostname of my dev server. This does change the livereload URL, but it can still only be accessed locally.

Hey @KurtPreston, I commented this on your PR (thanks again for the submission), but I think you can achieve this by passing host: '<IP_ADDRESS>' directly to the plugin options: https://github.com/jgoz/esbuild-plugins/tree/master/packages/esbuild-plugin-livereload#function-livereloadpluginoptions-livereloadpluginoptions-plugin
Can you please give that a try and let me know if it works?

@jgoz I tried that. The issue is that I'm developing on computer A over SSH, but accessing my web page on computer B.
If I set the host to <IP_ADDRESS>, then the live reload sever on computer A will successfully accept connections from external addresses, however, when I access the web page on computer B, I get an error loading the livereload-event-source.js script, since it attempts to fetch it from <IP_ADDRESS>, which does not point back to computer A.
I have also tried setting the host parameter to the hostname of computer A. Unfortunately, this does not seem to work. I can access http://COMPUTER_A:PORT/livereload-event-source.js from computer A, but I get ERR_CONNECTION_REFUSED accessing it from computer B.
The only way I've managed to get it working is to tell the server to host on <IP_ADDRESS>, but to leave the host as the hostname of computer A.

I see, thanks for the explanation, I wasn't getting the full picture.
I wonder if this alternate approach would work:

Accept urlHostname parameter that defaults to the value of host
Set host: '<IP_ADDRESS>'
Set urlHostname: '<hostname of computer A>'

Maybe this would be a more flexible way to allow for this use case and potentially others?

I think that would work, good idea!

@KurtPreston The urlHostname option is now available in<EMAIL_ADDRESS>Could you please try it out and reopen this issue if you run into any problems?


Rely on find-cache-dir to setup caching directory

Closes #96

Pull Request Test Coverage Report for Build 433

7 of 7 (100.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.1%) to 96.85%

Totals

Change from base Build 426:
0.1%

Covered Lines:
79

Relevant Lines:
79

💛  - Coveralls


[CI] Enable the Super-Linter in fix mode

https://github.com/super-linter/super-linter?tab=readme-ov-file#fix-linting-and-formatting-issues

It's OK if we can handle our secret keys properly (note that I am a very careless person).


Add support for modrinth secondary files

Enhancement Type
Not sure
Describe the enhancement
Heya, I know I can auto download plugins from modrinth, and I already do that. BUT the problem I have right now is, that I would like to get more than the primary file. EssentialsX publishes thier Addons as additional files and I would like auto download a few of them too. Is that possible somehow or could that be made possible?
https://modrinth.com/plugin/essentialsx/version/2.20.1

Research notes
Looking at the API response of the version file mentioned, https://api.modrinth.com/v2/version/puUfqBpY, those files come back with entries like
    {
      "hashes": {
        "sha1": "68dfe0e04217ecf27bb255d4a6b993ddd6c7830d",
        "sha512": "ad12d4b00189a077da9b6b95d0e3f565cf9fba4e5404a2011beccb187816d749093d868b14134f8682082847273d732ae869852f28100b90a8cc21175afef674"
      },
      "url": "https://cdn.modrinth.com/data/hXiIvTyT/versions/puUfqBpY/EssentialsXSpawn-2.20.1.jar",
      "filename": "EssentialsXSpawn-2.20.1.jar",
      "primary": false,
      "size": 18122,
      "file_type": null
    },
    {
      "hashes": {
        "sha512": "ba57b130419293a4a8ec84b5ca09d68072b07bc8e5a918d8fb14669cb400a676b3769069f694b8e856c2decdf7a6c2b73986a972b0a885de07e946ffa673c044",
        "sha1": "9a8ab7c3b169edd22176eac62220d5eebcdd80aa"
      },
      "url": "https://cdn.modrinth.com/data/hXiIvTyT/versions/puUfqBpY/EssentialsXXMPP-2.20.1.jar",
      "filename": "EssentialsXXMPP-2.20.1.jar",
      "primary": false,
      "size": 328615,
      "file_type": null
    }

Since they have a null file_type it is going to be unclear how to automate the destination of those files. More research/ideas are needed.

@Akorian in the case of those secondary files from EssentialsX, where are they supposed to go? In the plugins directory?

@itzg yepp. They are just more plugins. "Addons" to the primary file.

@itzg Yes, in the case of EssX its just more plugins. So called Addons to the main plugin.


Async Application::update

It would make things a lot easier if the Application::update trait method were async, so that you can both use .await and mutate the Application.
Workaround
Use block_on instead of .await.
Use Command to run futures in the background and wait for their completion.

Say we are awaiting for a request to finish and the user clicks a button. How would we change state
while awaiting?

The API doesn't actually need to be parallelized, just async-compatible.

I am not sure I follow. We cannot make the application unresponsive while awaiting for something to complete.

Doesn't that already happen now, since update isn't async?

No. This issue is introduced when you make update async, as you suddenly tie the Application state to the returned future.
The current update returns a Command which is just a bunch of static futures that produce messages as results. They cannot mutate the Application state, therefore the borrow checker lets us call update again while they run.

I'm not proposing to change the return type, other than wrapping it in a future by way of the async sugar.

Async actions should not make the application unresponsive. The current design is tailored to enforce this.

I'm not actually using any async actions. The interface just needs to be async because of requirements of an unrelated usage.

I have explained why the interface cannot be async. You should not be allowed to await and tie the Application state to it because you would block the whole Application.
I have the feeling this is going nowhere. Maybe you could elaborate a bit more your use case? You stated:

It would make things a lot easier if the Application::update trait method were async, so that you can both use .await and mutate the Application.

Do we agree that this should not be possible?

There appears to be some sort of issue with adding this in general that I don't understand, so I opted to use block_on as a workaround.

Why not just return a Command? That's how you are supposed to perform async tasks. For instance, check the pokedex example. You can create a Commad from a future easily: https://docs.rs/iced/0.1.0-beta/iced/struct.Command.html#method.perform
You will not be able to mutate the Application state inside a Command, though. As I have already explained multiple times, this would block the Application. However, you will get notified of its results once the futures finish.

Hey i am looking for this example but it seems that it is no longer at this location.

@0xJepsen It is the mentioned line


Access to expires_in

Is 3600 a safe assumption for expires_in? If not, can it be made available in the verify callback?

@bencmbrook 3600 is the current value, but that doesn't mean that Spotify can't change their mind at some point.
I can't find any passport strategy where they are exposing this, nor any mention in the docs on how to expose it properly.
Best way is to just suppose that if you get a 401, you need to refresh the access token. Note that even if you store it for one hour, a user might still revoke permissions for your app or Spotify might revoke issued access tokens, in which case your token will throw a 401 code.
I'm closing this ticket for the time being. If you find an example of a strategy using it, let me know.


Fix openssl engine error and add more error logging to the sample

#hedwig run

#hedwig start

#hedwig restart

Hedwig :owl: : starting a job.
ID 1c5eac36-f036-41b1-bb0a-ba21b8f0da4e

Hedwig said YES.
Get log at https://136d6452.ngrok.io/jobs/1c5eac36-f036-41b1-bb0a-ba21b8f0da4e/log
Restart by posting #hedwig restart

#hedwig restart

Hedwig :owl: : starting a job.
ID 30da202c-1024-42e6-8620-b0bb20517420

Hedwig said YES.
Get log at https://hedwig-tob-berlin.eu.ngrok.io/jobs/30da202c-1024-42e6-8620-b0bb20517420/log
Restart by posting #hedwig restart


Update About button (about.html)  to show the user profile

Can I work on this @diyajaiswal11

Can I work on this @diyajaiswal11

Similar issue has been raised in #13 . Go through it.


Health and Time Bars

What is your question?
How do you manipulate the health and the time bars?
Please note I'm on Lua...

Like scale them or what?

I was thinking using things like tweens or SetProperty()
But I would think move them around...


Implementation thoughts / issues

Be good if dataflows provided Stream (in case we swap out tabulator for frictionless, for example). Basically plugins shouldn't need to depend on dataflows dependencies directly for such high-level features

https://github.com/dataspot/dataflows-ckan/blob/d9b199e6725762e6329739df56768f6d4eb92c67/dataflows_ckan/processors/dump_to_ckan.py#L8

We need a clean way to work with the datapackage without overriding other methods. See comment in here:

https://github.com/dataspot/dataflows-ckan/blob/d9b199e6725762e6329739df56768f6d4eb92c67/dataflows_ckan/processors/dump_to_ckan.py#L65

As with above point, but for accessing resource metadata:

https://github.com/dataspot/dataflows-ckan/blob/d9b199e6725762e6329739df56768f6d4eb92c67/dataflows_ckan/processors/dump_to_ckan.py#L74

Looks like @akariv addressed all of this, with changes or using methods I didn't identify https://github.com/dataspot/dataflows-ckan/commits/main


cleanup all sessions obtained from mgo

we can never throw away sessions because mgo allocates a goroutine for each one and expects Close() to eventually be called
fixes #270

Coverage increased (+0.3%) to 59.591% when pulling 30fea33d99f256c3b1965c08e7d7a8465590fa6f on 270-leaky-sessions into fad12d533bafb2a4103569bdf77ce06325863e1d on master.


Remove azure-sdk-for-node from pipeline

Latest improvements:
MSFT employees can try out our new experience at OpenAPI Hub  - one location for using our validation tools and finding your workflow.

Contribution checklist:

[ ] I have reviewed the documentation for the workflow.
[ ] Validation tools were run on swagger spec(s) and have all been fixed in this PR.
[ ] The OpenAPI Hub was used for checking validation status and next steps.

ARM API Review Checklist

[ ] Service team MUST add the "WaitForARMFeedback" label if the management plane API changes fall into one of the below categories.
adding/removing APIs.
adding/removing properties.
adding/removing API-version.
adding a new service in Azure.

Failure to comply may result in delays for manifest application. Note this does not apply to data plane APIs.

[ ] If you are blocked on ARM review and want to get the PR merged urgently, please get the ARM oncall for reviews (RP Manifest Approvers team under Azure Resource Manager service) from IcM and reach out to them.
Please follow the link to find more details on API review process.

Automation for azure-sdk-for-python

Automation for azure-sdk-for-ruby

Automation for azure-sdk-for-go

Can one of the admins verify this patch?

Automation for azure-sdk-for-java

@zikalino we are removing some SDK generation from CI as a part of transition to the new SDK Automation.

Is there a typescript one that replaces this and the js one that was removed?

@nschonni Yes, the SDK Automation comment that has started to appear on these pull requests will replace these CI checks.

@daschult thanks for clarifying!


Fix import of large maps

Currently importing a map of modest size (E1M1 from Quake, for example) will lock the editor as soon as the file has been saved.
The hang is down to some hacky code left in the import plugin that calls load() immediately after saving the map to a .tres in an attempt to force an update of scene instances that reference it. I don't think that code does anything useful since the asset IDs change on every reimport at the moment anyway, so will likely be removing it.
The problem may extend further than that though- I had the editor lock up upon selecting the imported E1M1.map last night, which may point to Godot having issues with massive .tres files. Need to do some more research.

If it has issues with large tress files is it possible to break them up past a certain size limit?

It turns out that the second issue was with the editor's handling of massive datasets. It grinds itself to a halt loading all the entity/brush/face subresources, then doubles down by trying to instantiate UI controls for them.
The actual process of reading a map file into an intermediate data representation is quite fast even with large examples like ad_sepulcher, so it's just the editor exposure that's an issue.
Unfortunately, Resource subclasses need their properties to be exposed in order to work properly, so they're no longer an option for storing the intermediate data representation of a map file.
I've moved the initial QuakeMapReader-driven parse and data conversion process into QodotMap, and reduced the import plugin down to storing a simple auto-incrementing revision counter for each map. This way, Godot will be able to see the files and auto-reimport them, but won't kill itself trying to understand them at the data level.


I love this!

I like it. Im trying to make it my self. Can you be more detailed with the firebase part. I don't know how to set that up. @liyasthomas
Thanks

Can you contact me via Telegram or Twitter?
Telegram: https://t.me/liyasthomas
Twitter: https://twitter.com/liyasthomas


getOperationClientDetailedLoggingIsOn and putOperationClientDetailedLoggingIsOn uuid pattern needs an update

Observation:
In the getOperationClientDetailedLoggingIsOn and putOperationClientDetailedLoggingIsOn uuid pattern shall be  ^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-c-bs-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{3})$. (With api-segment as "bs" instead of "bm")
But in TAR.yaml file, it is present as  "^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-c-bm-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{3})$".
Solution: the api-segment in uuid pattern of getOperationClientDetailedLoggingIsOn and putOperationClientDetailedLoggingIsOn shall be updated to "bs" instead of "bm"

Changed as proposed.


Added flag to skip file errors during copy

So in case an error occurs for one file, the file is skipped. The behavior is triggered via the method parameter skipErrorFiles.
If the parameter is set to false the behaviour is the same as before.
I have never coded go but this fix allowed me to skip files that got deleted during the backup run.
If there are better ways feel free to adjust or comment.
NOTE:
This PR can only be merged after this PR got merged: https://github.com/maorfr/skbn/pull/23
Signed-off-by: lhgloj1<EMAIL_ADDRESS>

thanks for contributing! i believe you will need to update skbn to 0.6.0.

@sunoce I think in the meantime https://github.com/maorfr/skbn/pull/23 was merged. Could you complete this PR? I'm really missing this feature you implemented :+1:

@maorfr I am running into this issue also.
Can you please merge this PR?

@sdave2 this project seems to be unmaintained. I forked it and fixed it myself in the meantime here: https://github.com/amerello/kube-tasks. My fork is working for me at least, you may have a try :)


Thunderbolt 3 Hotplug Support (Enhancement)

I'm a newbie at GitHub so this isn't much of an issue. (I don't know how to do a pull request)
But I recently tinkered with this archive and used a Thunderbolt 3 SSDT Patch.
Below is the listed file you can use.
SSDT-TB3.zip

Another thing with the TB3 SSDT Patch is you don't need Thunderbolt BIOS Assist enabled, as I find it to crap out and cause the Thunderbolt chipset to become invisible in macOS Catalina

Another thing with the TB3 SSDT Patch is you don't need Thunderbolt BIOS Assist enabled, as I find it to crap out and cause the Thunderbolt chipset to become invisible in macOS Catalina

TB3 hotplug works well with it, however, MacOS will crash and restart when I switch from one TB3 another TB3. Thanks

I tried it but it doest work for me. Do i need to config something in the bios?

This is relevant to post here; there's a well known issue with these generation of thinkpads where the firmware on the TB3 chip completely bricks (on all OSs, completely hardware, not drivers or any OS stuff). So my machine's stuck at their repair depot getting fixed right now. I'll try this hotplug support when I can.
However, I was using a tb3 EGPU and was actually able to hotplug tb3 on a FEW occasions (but it didn't work everytime). Super odd.
I'll report back when I get my machine back. @shangjun2x would you be so kind as to provide a branch name that you created or create one for me to test?


Webview vs Native

What are the differences between the two branches?  I would like to know the pro/cons for each so that I can choose which one to use.

jss

Webview
Light wrapper around web app.
Pros:

includes support for all features

Cons:

slower than native app
does not look native

Native
Fully native Android or iOS app.
Pros:

faster and more responsive
look native to the platform

Cons:

includes only basic feature
not maintained anymore

Summary
I would prefer to have fully native apps, but we just don't have enough resources to support two additional applications and keep them on par with web interface.

Is there an iOS version of traccar-manager?

Have you tried searching?
https://github.com/tananaev/traccar-manager-ios/

That's embarrassing.  I was looking at your top-level page on GitHub which only shows the 6-most popular and not all 24 of your repositories.  My apologies.


[DOC] How to do a mutation from authProvider

Documentation issue
I can't use useCreate() in authProvider since we're not in a React component.
How to do a mutation to the db table from authProvider ?
I'm using supabase as a back-end and I need to have more fields saved on the user table of supabase, so I created a profile table which is linked to the user table. Now I need to create that profile record after the user is registered, so I though of adding this to the authProvider.ts. But as I said earlier, I don't know how to make a mutation from that register function.
Describe the thing to improve
Is doing this from the authProvider a good thing ? And how can I do so ?
Describe the solution (optional)
No response

Hey @MetaCorp ,
You can use directly supabaseClient on AuthProvider
example: https://github.com/refinedev/refine/blob/next/examples/pixels/src/auth-provider.ts#L5

Thank you, I'm able to update supabase using supabaseClient this way :
await supabaseClient.from("profiles").insert({
  id: user.id,
});


Date/time when using CZ localization

Gogs version (or commit ref): gogs 0.9.97-1472903388.491407d.jessie amd64
Git version: N/A
Operating system: Debian GNU/Linux 8.6 (jessie)
Database (use [x]):

[ ] PostgreSQL
[x] MySQL
[ ] SQLite

Can you reproduce the bug at https://try.gogs.io:

[x] Yes (provide example URL): https://try.gogs.io/explore/repos --> and change language to "čeština"
[ ] No
[ ] Not relevant

Log gist: N/A

Description
Showed time/date is wrong when using CZ localization, see difference below between EN->CZ. Issue not found for other of languages.
EN: Updated 22 minutes ago
-->
CZ: Upraveno %!s(int64=22) %!d(string=před) minutami

I think it's fixed now.


Not listed yet: www.theneweuropean.co.uk

The website at this url is unlisted: https://www.theneweuropean.co.uk/top-stories/wetherspoons-news-magazine-is-being-sent-through-the-post-1-5861134

This site is now listed in the latest version of Global Consent Manager. Thank you for the notification and let us know if you have any more issues.

Also, note that the Mozilla Add-On release will only be updated when I've finished all of the current listing issues. Today or tomorrow.


Rust: Improve reading with undefined feature count

by tracking remaining bytes

Already merged as part of https://github.com/flatgeobuf/flatgeobuf/pull/202, closing.


feat(viewcontroller): intercept go back button so it can be cancelled

Markup:
  ionViewCanGoBack() {
    let alert = this.alertCtrl.create({
      title: 'Are you sure?',
      message: 'There are pending changes.',
      buttons: [
        { text: 'Cancel' },
        {
          text: 'Continue',
          handler: () => this.nav.pop()
        }
      ]
    });
    alert.present();
    return false;
  }

closes #6623

This is a great start and we'll absolutely implement something like this, but not narrowed into just the navbar back button.


Fix failing tests in TKTRawProcessHolderTest + Pharo 9

Tests: testStackContainsContextsOfMaster and testStackStartingAt.
After debugging a bit, I think it's the same root. A context is expected to head the stack but it isn't (identity equals is false). No idea.

In fact, these tests are part of TaskItDebugger, and it is broken since Pharo 9 since it depends on GTDebugger.
Time passed and I think we should remove this package from the default group, and open an issue to recover it.

Related issue: https://github.com/pharo-contributions/taskit/issues/109

In 6961207, I marked both tests as expected failures and I plan to let this issue open to remind they need attention.


How to remove the white bar in the header?

Theme is excellent, I just need to remove the odd white spacer at the top of the header. How can I accomplish this?

Delete this line https://github.com/jekyll/minima/blob/3cdd14dff1216f561c68329e0b7420c2dc9b796a/_sass/minima/_layout.scss#L5

Perfect, exactly what I needed. Thank you! :heart:


Sodiumoxide 0.2.2

new version 2.2 of sodiumoxide

Probably best to wait for https://github.com/hyperledger/indy-sdk/pull/1585

sodiumoxide build libsodium from source and builds a static libsodium library. This is what libindy needs.
The CI tests for feature sodium_static can be removed I think.
The indy documentation could be changed by removing that libsodium is a required dependency because sodiumoxide builds libsodium.a for the target architecture. So cross-compiling libindy for iOS and Android becomes easier.

Waiting for this sodiumoxide PR to be merged
https://github.com/sodiumoxide/sodiumoxide/pull/346
BTW: can we .gitignore Cargo.lock? These merge conflicts are a waste of time.
https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html

Seems I messed up this PR. Don't know how to get rid of the unwanted commits.
I guess I redo the PR and close this one

I think this build fails because libsodium was built without -fPIC and this is because it is build with --disable-static. libsodium needs to be build with -PIC.
I would remove the feature sodium-static from libindy. Whether or not libsodium.a or libsodium.so is used when linking can still be influence through rustc/cargo ...-static options.

replaced by https://github.com/hyperledger/indy-sdk/pull/1874


Long room names don't wrap on session details screen

When a "room" name is really long, it doesn't wrap on the session details screen. (It does wrap on the schedule screen)
I think this only affects the That 5k sessions.

Fixed in 3.0.4


Azure datalake metadata ingestion fixes

Describe your changes:
We were filtering out correct files and passing extra options to the read functions

Type of change:

[ ] Bug fix
[ ] Improvement
[ ] New feature
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Documentation

Checklist:

[x] I have read the CONTRIBUTING document.
[ ] My PR title is Fixes <issue-number>: <short explanation>
[ ] I have commented on my code, particularly in hard-to-understand areas.
[ ] For JSON Schema changes: I updated the migration scripts or explained why it is not needed.

Hey @pmbrull we have a code smell on the yield thingy

Hi @ayush-shah , same discussion as we had here https://github.com/open-metadata/OpenMetadata/pull/10945#issuecomment-1500956396. I'll document this somewhere. Thanks

Hi @ayush-shah , same discussion as we had here #10945 (comment). I'll document this somewhere. Thanks

Makes sense.


Disabled by Mozilla

tl;dr Use Microsoft Edge browser when you need in-page translation.
tl;dr Switch to Google Translate This extension Mozilla blocked that too

Oct 24, 2019:
I wrote about the situation on my blog.
Vote up on

HN: https://news.ycombinator.com/item?id=21328470
Lobsters: https://lobste.rs/s/ppprkq/sad_state_language_translation_firefox
Reddit: https://www.reddit.com/r/firefox/comments/dlyavl/the_sad_state_of_language_translation_in_firefox/

Original post:
Page Translator, the self-distributed variant hosted here, has been remotely disabled by Mozilla. The reason is listed as "executing remote code".
https://bugzilla.mozilla.org/show_bug.cgi?id=1589974
I have reached out to Mozilla in the above Bugzilla ticket and on Twitter.
Page Translator—as described—loads external JavaScript from Google or Microsoft to translate a page in-line. As noted in #12, Mozilla AMO prohibited extensions distributed through AMO from loading external JavaScript. However, self-distributed extensions were permitted to load external JavaScript.
If this policy has changed, I was not aware of it. It is possible the policy for AMO-distributed and self-distributed add-ons has merged.
I want my Page Translator extension to be made irrelevant by Firefox having built-in language translation, like Google Chrome and Microsoft Edge. It is a critical feature used by millions of people daily. It bridged a feature gap. Mozilla killing this add-on without replacing it hurts users.

I have written<EMAIL_ADDRESS>per the terse instruction of Andreas Wagner..

Hello AMO Admins,
My extension Page Translator received a hard block today. https://bugzilla.mozilla.org/show_bug.cgi?id=1589974
My extension inserts the Google Translator or Microsoft Translate JavaScript widget onto a page when invoked by the user. Unfortunately, loading their code from their CDN is the only way those services permit their use.
I understand the AMO policy of prohibiting externally loaded JavaScript. This is why my AMO-hosted extension was removed. I accept that, as it is your policy.
The hard block today, however, affected the self-distributed side-loaded extension. Previously, there was a MDN page for extension distribution that said self-distributed extensions could load external code. (It seems that the MDN pages have moved to https://extensionworkshop.com/ and do not have an edit history.)
Has the policy for loading external code been unified for both AMO-distributed and self-distributed add-ons?
If so, I accept your decision and would encourage you to explicitly state this change.
If not, I would appreciate the re-enabling of my self-distributed extension.
Thank you for your care in protecting the Web.
Best,
Jeremiah Lee

😢

😢😢😢😢
I am angry, Jeremiah: your add-on is marvellous - and obviously secure.
Thanks for your work, anyway.

I'm an American living in Stockholm. It pains me to have to use Chrome regularly now when interacting with Swedish government websites. I wish I had a better option for myself and to share with you. 😢

Bad News :-(
For the moment, I enabled old integrated translator in Firefox with my Yandex API (Google and Bing doesn't work now) https://www.ghacks.net/2015/06/14/firefox-41-change-translation-engine-from-bing-to-yandex/ while Mozilla launches its new integrated translator https://ubunlog.com/mozilla-ya-esta-trabajando-en-el-desarrollo-su-propio-sistema-de-traduccion-automatica/
Yandex isn't the best translator (I prefeer DeepL, Micosoft Translator or Apertium.org) but for the moment is the unique option without page-translator extension

Thanks to some kind folks on Reddit I was able to get the add-on back up and running, but the steps are complex enough to deter most users (extracting, editing, and re-compressing the XPI, plus having to be on a developer version, plus having to edit about:config). Hope Mozilla changes their minds on this soon (and hopefully Google isn't pressuring them to remove this in any way).

I was looking for an extension just like this one, and came across with the bad news. Hope Mozilla fixes this issue, and saves me from using Chrome whenever I need page translation.

You might try this extension: https://github.com/andreicristianpetcu/google_translate_this
It does the same thing in the same way as Page Translator and likely will be blocked by Mozilla, but this is a cat and mouse game worth playing if you rely on full-page in-line language translation.

Hi Jeremiah! :yellow_heart: I agree that Mozilla should notify developers about important extension policy changes, this is partially a communication failure.
The other pressing issue is that users have lost the right to run private extensions in the release version of Firefox, without handing over their source code to Mozilla.
While there are security benefits to disallowing unsigned extensions by default, it is not clear why there is no option to turn off this behavior, perhaps only configurable with administrator rights.
There is a workaround though that does not require you to compile Firefox or use a different edition. This is how you allow unsigned extensions in Firefox on Arch Linux, the same files can be edited on Windows and macOS, restart the browser after changes:
  sudo tee /usr/lib/firefox/defaults/pref/config-prefs.js &>/dev/null <<EOF
  pref("general.config.obscure_value", 0);
  pref("general.config.filename", "config.js");
  pref("general.config.sandbox_enabled", false);
  EOF

  sudo tee /usr/lib/firefox/config.js &>/dev/null <<EOF
  // keep this comment
  try {
    Components.utils
      .import('resource://gre/modules/addons/XPIDatabase.jsm', {})
      .XPIDatabase['SIGNED_TYPES'].clear();
  } catch (ex) {
    Components.utils.reportError(ex.message);
  }
  EOF

Any Firefox engineers reading this, please don't try to subvert the workaround, it requires multiple steps and administrator rights to set up, and we must all agree that it is of little sense for Firefox to try defending users against unwanted programs or malware that has root access on the device.
It would be best to offer an official way to allow installing local, unsigned extensions, and make the option configurable only with root.

Response from Mozilla:

Hi Jeremiah,
as far as I recall, the restriction that remote code is not allowed has
applied forever, both for self-hosted and listed extensions. In any
case, our current policy does not allow it. I'm aware this causes issues
for add-on using widgets from websites and apologize for the
inconvenience. You may look into checking if there is a REST api that
could beused instead.
Thanks for getting in touch.
--
Philipp Kewisch
Add-on Review Team
Mozilla

I wrote about the situation: https://www.jeremiahlee.com/posts/page-translator-is-dead/
Vote up on HN: https://news.ycombinator.com/item?id=21328470
or Lobsters: https://lobste.rs/s/ppprkq/sad_state_language_translation_firefox

A Firefox engineer has disabled the above configuration option, less than two hours after I posted the workaround in this thread.
I appreciate the vigilance, but it would be even better to actually publish a technical reasoning for why do you believe Firefox is above the device owner, and the root user, and why there should be no possibility through any means and configuration protections to enable users to run their own code in the release version of Firefox.
https://phabricator.services.mozilla.com/D50136
Given that a technical motication is unlinely to surface, through I certainly look forward to it, we must begin to consider distributing utilities for patching the Firefox binary to enable unsigned extensions.
I know I will need to find a workarund for one of my private extensions that controls devices in my home network, and its source code cannot be uploaded to Mozilla for privacy reasons.

I believe that beginning to distribute tools that patch Firefox and give back power to users is necessary when an organization is taking away our rights without giving a compelling reason for doing so.

The issue of disabling the config option that gives us a workaround for running unsigned extensions is tracked here: https://bugzilla.mozilla.org/show_bug.cgi?id=1514451

It should be possible to implement the functionality of page-translator via a more popular extension that is designed to inject arbitrary data into websites, including remote code, e.g. https://addons.mozilla.org/en-US/firefox/addon/greasemonkey/ .

The addon works for me on Firefox 69 stable with extensions.blocklist.enabled set to false in about:config

@dessant somewhat off-topic: there are a number of Mozilla-approved ways to install unsigned extensions, especially on Linux. See https://github.com/tridactyl/tridactyl/issues/1927

Thanks @bovine3dom, I'll consider releasing a cross-platform patching tool for Firefox to make the workarounds accessible for everyone if Mozilla goes forward with forcing the AutoConfig sandbox in release builds.
All of the workarounds require administrative access, though AutoConfig is the most convenient. I do not understand what is the threat model of not allowing the root user to configure Firefox, since malware could just replace the entire Firefox binary.
Blocking users from installing unsigned extensions without offering a cross-platform way to disable the option brings little security benefits while concentrating power in the hands of the browser vendor. Not even Google is this heavy-handed, they allow installing local extensions in Chrome after users enable an option, although a warning is shown on browser restarts about the presence of external extensions, which can be dismissed.
Forcing signed extensions in the release version of Firefox is also uncompetitive, because it prevents third-party browser extension stores from gaining foothold.

For #27; for

extensions.blocklist.enabled false

With respect,
-1
– because it's too risky a workaround; I should not recommend it to anyone.
https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&component=Blocklist Policy Requests&list_id=14955810&product=Toolkit&query_format=advanced&resolution=---&resolution=FIXED&order=bug_status%2Cpriority%2Cassigned_to%2Cbug_id&limit=0 and so on.

https://www.jeremiahlee.com/posts/page-translator-is-dead/

Vote up …

… and Reddit: https://redd.it/dlyavl

it's too risky a workaround; I should not recommend it to anyone.

While I agree that it is a terrible workaround, for now it's the only one that works on stable and beta channels.

I responded to Mozilla:

Thank you, Philipp, for the kind response. We both want to make Firefox the best browser possible and I'm just trying to understand.
I found an archive of the former policy. https://web.archive.org/web/20180311125311/https://developer.mozilla.org/en-US/Add-ons/AMO/Policy/Reviews
On this page, you will see that "unlisted" (self-distributed) add-ons are permitted to execute remote code. This was the approach recommended to me by AMO reviewers when my listed add-on was de-listed. I understand there is a new policy, but it is a new policy. I would have liked the opportunity from you to withdraw my add-on, rather than have it hard blocked.
I am super excited by what Mozilla announced today regarding client-side language translation. I have always wanted my add-on to be made irrelevant. Please consider what the thousands of people who relied on in-page language translation provided by Page Translator must do until Mozilla can ship its revolutionary language translation. Our best option for now is to use Chrome. How many are going to come back to Firefox once it has feature parity with Chrome?
I have described the technical arguments for affording nuance to the current policy here: https://www.jeremiahlee.com/posts/page-translator-is-dead/
Best regards,
Jeremiah

Response from Mozilla:

Hi Jeremiah,
of course, I appreciate your support and am sorry for the inconvenience
and potential miscommunication back when moving to self-hosted. While it
seems there were limited cases where it was allowed, please also see the
footnote under which conditions. If you are injecting the widgets onto
web pages it does not seem these criteria were met.
I've read your article, but unfortunately this is not a restriction we
will be lifting.
If you find a way to provide this feature in compliance with our
policies, we'd be willing to lift the block in a way that you could
submit a new version for your users.
Thanks,
Philipp

This is it. I'm done with Page Translator, but you don't have to be. Fork the repo. Distribute the code yourself. This is now a cat-and-mouse game with Mozilla. Users will have to jump from one extension to another until language translation is a standard feature or the extension policy changes.

What's about https://addons.mozilla.org/en-US/firefox/addon/page-translator-revised/ ?

Thank you for the work you put into this.  You extension was always my favourite for web translations. And you are right... chrome it is... for now at least.

To give users more control over their extensions, support for sideloaded extensions will be discontinued.

https://blog.mozilla.org/addons/2019/10/31/firefox-to-discontinue-sideloaded-extensions/

Sadly, the extension I had been recommending since Page Translator got killed was just killed for the same reason. https://github.com/andreicristianpetcu/google_translate_this/issues/19
As I've said, I'm done with Mozilla's user-hostile game. Switch to Edge on Windows or Chrome elsewhere when you need translation.

Well since I only use a select few curated extensions in Firefox anyway, I guess it's fine to disable extensions.blocklist.enabled if it means I can use the addons that I need. It's not like I install new addons every other day.

https://github.com/jeremiahlee/page-translator/issues/26#issuecomment-545210740 @JanZerebecki is correct.
▶ https://github.com/andreicristianpetcu/google_translate_this/issues/19#issuecomment-549180326

extensions.blocklist.enabled
@HerrHulaHoop wrote:

… I get that it's a "security issue" to disable it, but as long as people don't click on Install button for random extensions, it should be fine.

Think beyond installation. Think updates, automated updates, and so on. Think of the Mozilla-recommended extensions that repeatedly fail to publish release notes at AMO. Think beyond random.
I know of at least one highly respected non-random extension that – through a succession of updates – became disreputable. Eventually blocked by Mozilla, and the block was entirely proper.
To disable use of the blocklist is described as terrible; as dangerous; and so on, and I don't disagree with these perceptions of the approach. It is deeply contentious … whilst reactions in GitHub are fairly restrained, I see high emotion elsewhere.
Happily, the update to https://www.jerJemiahlee.com/posts/page-translator-is-dead/ made no mention of the approach :+1:

This is not a good news, as I checked last week I can't suddenly use the probably "the best translator for firefox yet", simple click and done. I hope this gets resolved. Btw, the other extension is also now blocked by firefox

Cautioning against disabling the block-list

Think beyond installation. Think updates, automated updates, and so on.

Mozilla bug 1598242 - Extension Block Request: YOUTUBE to MP3 might have been a good example. Two 6.0 versions of extensions released on the same day. 6.1 for one of the two had a nasty effect, nearly six thousand users of the two extensions, both extensions are now blocked.

https://github.com/andreicristianpetcu/google_translate_this/issues/19#issuecomment-552107247 @ostrolucky asked:

This extension can't be installed on Firefox developer edition either. Is there any instructions available how to install it in Firefox >= 70?

In lieu of the extensions that are blocked by Firefox, you can use (with e.g. Firefox Developer Edition) a comparable extension for Chromium-based browsers.
Recipe at https://discourse.mozilla.org/t/s3-translator/48247?u=grahamperrin and please note the essential advice for use of Chrome Store Foxified:

do not enable instant upload
do not upload to AMO.

The recipe was published two weeks ago but I didn't rush to share it here because I wanted to wait and see whether any objection was raised by Mozilla. As far as I can tell there is no objection (I wrote, privately, to someone who is involved with blocking) so it's probably OK, now, to raise awareness.

Also I didn't rush to share it here because I didn't want it to seem like there's dancing on the graves of blocked extensions; there's not. @jeremiahlee and @andreicristianpetcu it hurts me to imagine the depth of feeling of being crushed, in this situation, the fruits of so much hard work being (broadly) blocked. You have my sympathy; IMHO the best that can be done, looking forward, is to find workarounds that positively respect the spirit of Mozilla's policies.
HTH

extensions.blocklist.enabled
@HerrHulaHoop wrote:

… I get that it's a "security issue" to disable it, but as long as people don't click on Install button for random extensions, it should be fine.

Think beyond installation. Think updates, automated updates, and so on. Think of the Mozilla-recommended extensions that repeatedly fail to publish release notes at AMO. Think beyond random.
I know of at least one highly respected non-random extension that – through a succession of updates – became disreputable. Eventually blocked by Mozilla, and the block was entirely proper.
To disable use of the blocklist is described as terrible; as dangerous; and so on, and I don't disagree with these perceptions of the approach. It is deeply contentious … whilst reactions in GitHub are fairly restrained, I see high emotion elsewhere.
Happily, the update to https://www.jerJemiahlee.com/posts/page-translator-is-dead/ made no mention of the approach 👍

What's terrible and dangerous is a faceless organization deciding to arbitrarily and silently control what I can and can not do with my browser on my computer. Orwell is screaming in his grave right now. This is no different than Mozilla deciding I don't get to visit Tulsi Gabbard's webpage because they don't like her politics, or I don't get to order car parts off amazon because they don't like hyundai, or I don't get to download mods for minecraft, or talk to certain people on facebook.
It's no less beyond the pale than when apple actively sabotaged people's devices to force them to upgrade or amazon deleted people's already bought and downloaded ebooks. It's completely unacceptable and frankly should fall under consumer rights laws. Mozilla made their browser, they played their part in this. They don't have to host the extension on their website, but it's absolutely and utterly unacceptable for them to interfere with me choosing to come to github and install it.
The level of threat this represents to the very foundations of general purpose computing, free software, and internet freedom can't be overstated. This sort of behavior is a SOPA/PIPA level problem.

SOPA/PIPA

What's that?

It's no less beyond the pale than when apple actively sabotaged people's devices to force them to upgrade or amazon deleted people's already bought and downloaded ebooks. It's completely unacceptable and frankly should fall under consumer rights laws.

@Shadowex3 wow that was quite the tangent.  Would take less than a minute. So this situation isn't remotely close to what Apple or Amazon did.
Mozilla did explain why they did blocked this extension and it is pretty much valid. The main criticism is the way the ban was handled and communicated. It was basically a "deal with it" type response and Mozilla can do better.
And just to be clear, I'm not advocating the use of extensions.blocklist.enabled but rather trying to show how the previous comment makes no sense in this discussion.

What's that?

SOPA = Stop Online Piracy Act
PIPA = PROTECT IP Act
@grahamperrin probably referring to this.

Mozilla did explain why they did blocked this extension and it is pretty much valid.

No, it is not valid.

I also fail to see what is the potential security issue that warrants to prevent people from running the extension at all costs.
The extension loads a remote script in the context of the page, the remote code is not executed in the context of the extension. This is no different than the manual use of translation services.
If automatic translation is not enabled, every translation is done upon explicit user request, which exposes them to the same security and privacy risk as if they'd manually use Google Translate.
Is there a technical detail I'm missing that introduces further risk for users?

I understand the ramifications of disabling the extensions.blocklist.enabled flag and acknowledge that I'm putting myself in greater risk because of it, but the alternative is for me to use Google Chrome / Chromium variants in order to have access to an extension feature that I need.
I know that they're working on their own client-side translation implementation but that is so far out in the future that I feel like banning this extension is a very premature move on their part.
So to me, it seems like they want to keep their users safer by... making them use Google Chrome or... exposing themselves to even greater danger by disabling the whole blocklist.

… the alternative is for me to use Google Chrome / Chromium variants …

Not the sole alternative. You can use non-blocked S3.Translator from Chrome Web Store.

Not the sole alternative. You can use non-blocked S3.Translator from Chrome Web Store.

You literally just negated what you said. I was talking about having to use Google Chrome or Chromium variants and you disagree by saying "not really, you can use this thing from the _Chrome Web Store_"
What browsers do you think can use the _Chrome_ Web Store?

… What browsers do you think can use the Chrome Web Store?

See above, https://github.com/jeremiahlee/page-translator/issues/26#issuecomment-557803894

… What browsers do you think can use the Chrome Web Store?

See above, #26 (comment)

It just gets stuck at:

With respect,
-1
From https://bugzilla.mozilla.org/show_bug.cgi?id=1602293#c6 for S3.Translator-Clone:

That's a weak source. Mozilla will never publicly ask users to circumvent their own blocklist. But it's their actions that are forcing people to do so.
Even the solution that you put forth involves installing an extension that Mozilla removed from AMO over privacy concerns. The only reason why your workaround isn't blocked as well is because it has additional steps that don't explicitly breach Mozilla's policies. But it certainly defeats the spirit of it.
That's what I find hilarious in all this. All workarounds involve using extensions that Mozilla doesn't approve of or disabling barriers that Mozilla doesn't advocate. And to top it all of, all extensions use the same JavaScript from Google and send the same information to google. But some were blocked completely whereas others were just removed from AMO. It just goes to prove that Mozilla themselves have lost sight of what they were trying to achieve when they put forth their policies. If their goal was to protect user's privacy and prevent data from going to Google, they've done a terrible job of it.
As I see it, we've got 3 solutions in front of us currently to have in-line translation:

Use Firefox developer edition and install S3.Translator as mentioned above
Use regular Firefox and set extensions.blocklist.enabled to false in about:config
Use Chromium or Google Chrome

None of these methods are ideal and honestly, I'd only blame Mozilla for this. They dismiss all our efforts as incorrect but refuse to provide the correct solution.

Well my inner conspiracy theorist wants to say they're just wiping out the competition well ahead of their own translation rollout but honestly it looks a lot more like typical tech company anti-freedomism.

wiping out the competition well ahead of their own translation rollout

I mean for how dumb Google Translate is with translating things, a newly released translation service just has no way to compete against the billions of contextual data that Google has accumulated over time.
Mozilla's will catch up eventually but not on release, or not even in the occurring months after the release.
Translation algorithms are one of those things where the more data you feed to it, the better it gets. Personal information is a no-no though but general data? Give it all of that

That's a weak source.

Weak in what way?

You can replicate the functionality with something like Greasemonkey, e.g. https://greasyfork.org/en/scripts/9285-translate-google-tooltip
I added an example of how user can add it to Tridactyl through their configuration here - https://github.com/tridactyl/tridactyl/commit/ca15582252a957ec3d4dd819d977227092de49d3

… honestly it looks a lot more like typical tech company anti-freedomism.

From https://extensionworkshop.com/documentation/publish/add-on-policies/#development-practices, the first line:

In general, developers are free to maintain their add-ons in the manner they choose.

Is that generally pro- or generally anti-freedom?

Weak in what way?

@sprite-1 was talking about how Mozilla is backing us into an uncomfortable corner and your argument to that was a message by a Mozilla moderator saying he doesn't advocate disabling Mozilla's blocklist. Mozilla's opinion of either own blocklist is obviously positive and there is no point bringing that up. Nobody expects Mozilla to recommend disabling their own blocklist.

You can replicate the functionality with something like Greasemonkey, e.g. https://greasyfork.org/en/scripts/9285-translate-google-tooltip

That's interesting. I haven't tried it for myself but does it do in-line translation? If it does, I'll edit my previous message to add it in!

Is that generally pro- or generally anti-freedom?

Again, you're just using Mozilla's words about themselves as fact. We don't hold Google as champions of privacy just because they say "We respect the privacy of our users". While I agree Mozilla is leagues ahead of the rest in respecting users, one look at the graveyard of translation extensions shows how badly they've handled this particular situation.

Try this script with Tampermonkey/Greasemonkey : https://greasyfork.org/en/scripts/391935-inject-google-translate-widget

a message by a Mozilla moderator saying he doesn't advocate disabling Mozilla's blocklist.

Gentle hint: she. Add-on community manager.
Profile - caitmuenster - Mozilla Discourse

You can replicate the functionality with something like Greasemonkey, e.g. …

Try this script with Tampermonkey/Greasemonkey …

+1 to the script-oriented workarounds however please note, from https://github.com/andreicristianpetcu/google_translate_this/issues/19#issuecomment-549180326 (with added emphasis):

… some pages' CSP rules will prevent the remote script injection.

some pages' CSP rules will prevent the remote script injection.
Yes, but was also the case with the page-translator plugin...

Nice! Just tried it and it works. Updated my message above.

… an extension that Mozilla removed from AMO over privacy concerns. …

More specifically:

S3.Translator. was removed because it offer (optional) to send every visited URL to 3rd-party server. …

@HerrHulaHoop maybe you misunderstood. That's not the case for the solution that I suggested.
I know, you don't trust Mozilla but do you also not trust the developer?

https://github.com/jeremiahlee/page-translator/issues/26#issuecomment-564437536:

It just gets stuck …

No problem here.
A screen recording:

Chrome Store Foxified, Firefox Developer Edition and a non-signed extension https://put.re/player/h1WaiTzZ.mp4
Chrome Store Foxified, Firefox Developer Edition and a non-signed extension.zip

Screen recording – Chrome Store Foxified, Firefox Developer Edition and a non-signed extension:

I am using the stable release though, with xpinstall.signatures.required set to false

Thanks,

I am using the stable release

Can you install Firefox Developer Edition alongside Firefox?

From https://discourse.mozilla.org/t/s3-translator/48247/2?u=grahamperrin:

… Firefox Beta will not accept unverified extensions. …

– the same is true for Firefox.
Add-ons/Extension Signing - MozillaWiki

maybe you misunderstood. For the solution that I suggested, that's not the case.

I tried your method. The extension asked permission for Collection of statistics immediately after installation. So whatever problems Mozilla had with S3.Translator still stands.

I know, you don't trust Mozilla but do you also not trust the developer?

I absolutely do! That is the whole point of this discussion. Mozilla doesn't trust S3.Translator or jeremiahlee but I do. They blocked page-translator for pedantic reasons. Which is why I want the option to override their decision to specifically install few extensions that I'm okay with.
Also, your question is phrased incorrectly. I never said I don't trust Mozilla, that was Shadowex3. I mentioned in my previous message that Mozilla is leagues ahead of the rest when it comes to respecting users. What I don't like is how they've killed so many useful extensions without any sane method of overriding their decisions.
Well, we've gone over this a couple times now. Mozilla isn't going to change their stance and will probably take a while to come out with their own translation service. Until they do, we've got to make due with the alternatives mentioned above.

permission for Collection of statistics

Any number of extensions might request this.

whatever problems Mozilla had with S3.Translator still stands.

Not necessarily.
https://discourse.mozilla.org/t/s3-translator/48247/7?u=grahamperrin some history and comparisons.
https://discourse.mozilla.org/t/s3-translator/48247/8?u=grahamperrin invitation to inspect code.
From recent private discussion I know that Mozilla is aware of the topic. Whether they have reviewed the code, I can't guess.

Avira Browser Safety has 400k Firefox users, the extension is uploading the user's browsing history and executing dynamic remote code from the publisher, not a third-party trusted source.
The extension appears to have been unlisted from Firefox Add-ons, without issuing a hard block.
https://palant.de/2019/12/11/problematic-monetization-in-security-products-avira-edition/
https://addons.mozilla.org/en-US/firefox/addon/avira-browser-safety/
https://blocked.cdn.mozilla.net/

@grahamperrin I appreciate your efforts to make many things work again here and there (including your sharings about Waterfox on Reddit).

Equal thanks to everyone else who offered workarounds …

Avast extensions (https://github.com/jeremiahlee/page-translator/issues/26#issuecomment-565791919)
https://bugzilla.mozilla.org/show_bug.cgi?id=1600600#c2:

We are expecting the developer to submit a compliant version soon, so it was decided not to block this add-on at the moment. We will reopen this bug if the decision changes.

From https://github.com/jeremiahlee/page-translator/issues/26#issuecomment-545052510:

Mozilla should notify developers about important extension policy changes,

True; it's important to observe posts from Mozilla.
The 10th June changes were publicised on 2nd May:

Add-on Policy and Process Updates | Mozilla Add-ons Blog

… If you have questions about these updated policies or would like to provide feedback, please post to this forum thread.

In addition to Mozilla's posts, which may have been overlooked, there was publicity elsewhere, for example:

Mozilla announces ban on Firefox extensions containing obfuscated code | ZDNet | https://twitter.com/ZDNet/status/1123992772044832768 | again two days later https://twitter.com/ZDNet/status/1124762001182535680
https://redd.it/bjxcc4 (778 points)
https://redd.it/bjwz8n (156 points)
Mozilla: Firefox/Mozilla Addon Restrictions and New Report on Socorro (Crash Reporter) | Tux Machines
Firefox Add-On Policy and Process Updates | Hacker News (no comment).

The ZDNet article began with this headline:

Mozilla also plans to be more aggressive towards taking down extensions that break its policies, with a focus on security issues.

– and was very well publicised.
Anyone who was aware of the security concern (two years before the block) might have asked Mozilla whether the changes to policy, which became effective on 10th June, might have an impact on Page Translator …

this is partially a communication failure. …

I guess that the significance of Mozilla's posts (and related publicity) was simply lost in the coincidental frenzy around armagadd-on 2.0.
I reckon that it was:

less a communication failure
more a failure to pay attention

– no disrespect intended. Given the unfortunate coincidence, it's almost entirely understandable that everyone concerned lost sight of Mozilla's forewarning.
HTH

Have you considered turning it into a Waterfox extension instead?  By that I mean changing the name or whatever is necessary so that it no longer trips the blocklist and then simply not submitting it to Mozilla to be signed at all?  Surely Mozilla wouldn't go to the trouble of updating their blacklist to block extensions that don't even run on (vanilla) Firefox at all due to never having been signed in the first place.

The block list does include non-signed extensions.

The block list does include non-signed extensions.

Does it include extensions that were both written after signing became mandatory but were never submitted to Mozilla for signing?  Because that just doesn't make sense unless they are trying to "protect" Waterfox and Pale Moon users as well.

Another alternative is add a bookmark with the URL:

javascript:{d=document;b=d.body;o=d.createElement('scri'+'pt');o.setAttribute('src','https://translate.google.cn/translate_a/element.js?cb=googleTranslateElementInit');o.setAttribute('type','text/javascript');b.appendChild(o);v=b.insertBefore(d.createElement('div'),b.firstChild);v.id='google_translate_element';v.style.display='none';p=d.createElement('scri'+'pt');p.text='function googleTranslateElementInit(){new google.translate.TranslateElement({pageLanguage:""},"google_translate_element");}';p.setAttribute('type','text/javascript');b.appendChild(p);}void%200
Just press the bookmark and the "google translator" will appear.

Is there a way to just publish the add-on without the signature that's on the blacklist so we can all just use that version?

Is there a way to just publish the add-on without the signature that's on the blacklist so we can all just use that version?

Yes but it just just gets blocked again

How would it get blocked by Mozilla if Mozilla doesn't know about it?

I assume people report this as well as every other clone addon of this that gets published

If this is the case, I will save the OG xpi for our next planet.
On Mon, 3 Feb 2020, 14:58 ꜱᴩʀɪᴛᴇ①<EMAIL_ADDRESS>wrote:

I assume people report this as well as every other clone addon of this
that gets published
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/jeremiahlee/page-translator/issues/26?email_source=notifications&email_token=AM7RIM6A3YQT6ZWSUNC6OZDRA66ABA5CNFSM4JC5QN22YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEKSW2LA#issuecomment-581266732,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AM7RIM6VCSOKCGGWVMT27VTRA66ABANCNFSM4JC5QN2Q
.

Another alternative is add a bookmark with the URL:

How do you write it in the file? If one just write «javascript: (etc.: the end of your code)» in a file text, even with an .js extension, it does'nt work !

@Armand68 what file? You just right click on the bookmarks bar and create a new bookmark then paste the code here:

As for me, I prefer it sitting on the address bar as a tiny icon which is why I opt to use the addon instead

Oh yes, it's works perfectly. Many many thanks...

@jeremiahlee, I sympathize with you, the lack of openness to discussion from Firefox (Andreas Wagner) is unfortunate.
For now, I'm using the Simple Translate extension which seems to be just enough for my basic translation needs. Hopefully they won't block it as well, provided it uses just REST API calls (I didn't check that myself).

Just found Translate Web Pages, which seems to do translations using Google's API instead of executing remote code. It works perfectly for me so far and probably won't be blocked by AMO. Give it a go!


[Android] Merge LayoutEngine and WeexCore

https://issues.apache.org/jira/projects/WEEX/issues/WEEX-301


Option for --ignore-empty-password

There should be a way to set the --ignore-empty-password i3lock flag, with a flag for betterlockscreen (e.g. betterlockscreen -s -e) and/or with an option in betterlockscreenrc (ignoreemptypassword=true).

This is now possible (and has been for a few months) by using -- --ignore-empty-password, though it would be nice to be able to also set it in the config (maybe have an option in the config to set i3lock arguments like with --?)

What do you think of a #245 related solution, where you could do this with creating a preLock-script and doing something like lockargs="$lockargs -e" there?
The reason why I hesitate with it, is that in the end, we will handle almost each possible i3lock-color argument...
Another alternative would be creating an alias/keybinding for it then the length of the command doesn't really matter?

That could work but now that I think about it if line 839 (lockargs=()) was moved before line 833 (init_config) this could be achieved without even having to use a prelock script by just adding lockargs+="--ignore-empty-password" to the config, which I think would be much cleaner than making an entire prelock script for this use case.


Dropdown datetimepicker closes when user clicks on non-clickable parts of calendar

Hi,
I've noticed that when I open the datetimepicker (which I use as dropdown) and I click inside the calendar but somewhere that is not "clickable" (ie, not on actual selectable days, hours, months, arrows, etc), the datetimepicker gets closed, as if I had clicked outside the calendar element.
You can test this behaviour on the demo page: http://dalelotts.github.io/angular-bootstrap-datetimepicker/
Open the dropdown, then click between two days (where the cursor is the default one), or on a day's label ("Su", "Mo", etc). You should see the dropdown closing although you haven't selected any date yet.
Any idea how to fix this? I think this would be worth correcting!
Thanks :)

+1!

I have fix it with the following CSS (removes unnecessary spacing between hours & minutes pickers):

.datetimepicker .hour,  .datetimepicker .minute{
  margin: 0;
  height: 34px !important;
  width: 25%;
  padding: 5px;
}

+1 I got the same problem and this css works great
@fracz  why don't you raise a pr to get it merged?

+1

The CSS fix will be included in the next release


TargetSpec equals and hashcode

This PR provides an implementation for TargetSpec equals() and hashCode() as provided by intellij java7 template.
This supports the #285 and the dynamic catalog, to be able to compare BrokeredService which invoke TargetSpec.equals
https://github.com/spring-cloud/spring-cloud-app-broker/blob/b0c71e52de361ef097c3a6e27e9d63b291a6ed4c/spring-cloud-app-broker-core/src/main/java/org/springframework/cloud/appbroker/deployer/BrokeredService.java#L106

Good catch! Thanks for fixing it.


deleted duplicate, obsolete article

Docs Build status updates of commit 6c29e93:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

mixed-reality-docs/direct_manipulation.md
:white_check_mark:Succeeded

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

Docs Build status updates of commit 6b31234:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

mixed-reality-docs/direct-manipulation.md
:white_check_mark:Succeeded
View

mixed-reality-docs/direct_manipulation.md
:white_check_mark:Succeeded

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


chrome.executablePath is returning null

Have problem with executablePath. It's returning null.
const browser = await puppeteer.launch({
      args: chrome.args,
      headless: chrome.headless,
      executablePath: await chrome.executablePath,
})

Same problem here on local env.
Seems like it's looking for /tmp/chromium but this is 0KB.
I tried cp node_modules/chrome-aws-lambda/bin/chromium-72.0.3617.0.br /tmp/chromium .
For chrome.headless to return true I have to set AWS_LAMBDA_FUNCTION_NAME env to some dummy value.
But then when trying to spawn the process something doesn't work. I get input.on is not a function in waitForWSEndpoint because chromeProcess.stderr is undefined

@andihub
chrome.executablePath was null because chrome.headless is false. In order to make it work for local testing purposes, you have to make sure one of these ['AWS_LAMBDA_FUNCTION_NAME', 'FUNCTION_NAME', 'FUNCTION_TARGET'] environment variables are set.

@andihub @zeeshanaligold This might help:
https://github.com/alixaxel/chrome-aws-lambda/wiki/HOWTO:-Local-Development


Set up webhook for Read The Docs

I'm setting up a Read The Docs site for this project. I have linked it to this repository, but in order for it to automatically rebuild documentation whenever there is a new push the repository owner will need to configure a webhook. Thomas, could you please do this using the instructions provided by RTD? The "Payload URL" is https://readthedocs.org/api/v2/webhook/peakingduck/113796/.

OK - should be done. Let me know otherwise.

That seems to be working.
I'd like to add you as a maintainer on Read the Docs. Would you mind creating an account there and letting me know your username? Thanks.

Username is the same as GitHub - thomasms


Require -k flag for annotate command

Signed-off-by: Joni Collinge<EMAIL_ADDRESS>Description
Require the -k flag to target Kubernetes for the dapr annotate command to make it consistent with other commands.
Issue reference
We strive to have all PR being opened based on an issue, where the problem or feature have been discussed prior to implementation.
Please reference the issue this PR will close: #[issue number]
Checklist
Please make sure you've completed the relevant tasks for this PR, out of the following list:

[x] Code compiles correctly
[ ] Created/updated tests
[xx] Extended the documentation

@jjcollinge Can you make the release-1.8 branch as the target branch for this PR?


[Question & Feature Request?] Is it possible to get the name of the going-to-be-hatched Pokemon from the eggs or while incubating them?

So yeah, as the title says.
If it's possible, I'd like to request for the Pokemon name to be dumped to inventory-USERNAME.json file. I kinda want to implement showing the Pokemon within the egg on the web interface if possible.

If you mean if the egg has a determined pokemon before it's even hatched, the answer is no. This is randomly decided by the server at the moment of hatching the egg

Alrighty then. Just a thought.


Support ListOffsetRequest v1 [KIP-79]

Makes it possible to lookup offsets based on a Timestamp.
To use this functionality you'll need Kafka <IP_ADDRESS>.
See https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=65868090 for more details about ListOffsetRequest v1.

@eapache Could you take a look at this PR? :)

Looks great, thanks!
(and sorry for the delay reviewing)


Generic CollectionSegment not present in HotChocolate.Types.OffsetPagination.dll

Describe the bug
I was trying to use CollectionSegment in my application and it seems that the generic type is not present in the dll
To Reproduce
Steps to reproduce the behavior:

Install HotChocolate.Types.OffsetPagination package
In the namespace HotChocolate.Types.Pagination there is CollectionSegment but no CollectionSegment<>
Here a screenshot of assembly decompilation

Expected behavior
Generic CollectionSegment<> included in the dll
Desktop :

OS: Windows 10
.net 5.0 (but same in 3.1), haven't checked in below versions

Additional context
Precisions : le file exists on the repository on the develop branch : https://github.com/ChilliCream/hotchocolate/blob/develop/src/HotChocolate/Core/src/Types.OffsetPagination/CollectionSegment~1.cs

The CollectionSegment<T> is part of HotChocolate 11.3, which has not yet been released. If you install the latest 11.3 preview package, you should have access to it.

The CollectionSegment<T> is part of HotChocolate 11.3, which has not yet been released. If you install the latest 11.3 preview package, you should have access to it.

Oh okay thanks for quick answer!


repoCA as a secret reference

helm contoller enables setting corporate ca in pem format.
However, is format is not really convenient (expects clear text pem, whereas this type cert is usually managed as base64 encoded secret data).
Offering secretRef, or local fs would be helpfull.

this type cert is usually managed as base64 encoded secret data

When storing certs+keys for a kubernetes.io/tls type secret, yes. However, TLS secrets require both a cert and key, and it most cases it wouldn't be appropriate for a client (Helm in this case) to have access to the key. And if you don't need to store the key, then why are you using a secret to store the public certificate?
We may add this when we add support for a SecretRef for registry auth, but tbh I don't really see why you would want to keep a cert in a secret.

Hi @brandond
Agreed in that case we should use on Opaque type Secret.
For instance, fluxcd Notification has this type of cross ref. https://fluxcd.io/flux/components/notification/provider/#example-1
My use case is the following:

im deploying a k3s cluster in a edge environment, with kairos.io https://kairos.io/docs/advanced/build/
to have it auto installed, im using k3s HelmChart, referencing a corporate helm repo.

The helm repo and caRepo need to be fed in the kairos cloud-config file. In that context, escaping multi-line ca cert is unpractical (see https://kairos.io/docs/advanced/build/#build-a-cloud-image)
On the other hand, i could easily feed the caRepo with the single line base64 encoded value from my master cluster.

I still don't think a secret is the right place for it, if anything it should be in a separate configmap, similar to the kube-root-ca.crt configmap that is injected into namespaces. If it doesn't have a confidential component (no private key) it belongs in a configmap, not a secret.

I guess its a matter of taste. My aim is to avoid inlining the ca cert in the HelmChart CR definition, so a configMap reference would be ok for me :-)


V100微调Baichuan-13B-Chat，运行src/cli_demo.py没问题，运行src/web_demo.py报错

Traceback (most recent call last):
File "src/web_demo.py", line 33, in
main()
File "src/web_demo.py", line 15, in main
chat_model = WebChatModel()
TypeError: init() missing 1 required positional argument: 'args'

更新代码


Add token range to endpoint mapping

Clients need to get the token range to endpoint mapping, which is already provided by Cassandra. Expose and endpoint that allows for fetching this information.
### DoD
- [x] An endpoint exists that exposes token range to endpoint mappings

This has now been merged.


question about bounding box of pose detection

Hello, I have some question about bounding box of pose detection
i test some images and plot as follow( green bounding box is the output of pose detection):

two question:

why the bounding box is so big?
what is the bounding box annotation of pose detection?

Hi @guker,  There is already a duplicate issue with above query https://github.com/google/mediapipe/issues/2140.  is open. And will try to get the resolution from the concern engineer on that issue.

Hello, I have some question about bounding box of pose detection i test some images and plot as follow( green bounding box is the output of pose detection):   two question:

why the bounding box is so big?
what is the bounding box annotation of pose detection?

Hi ,I am curious how you get this result？ just extract the pose detection tflite models？

yes


include the error response in the exceptions

I use JsonRPC to talk to a json-rpc interface and when it returns a 500 error, the message that was passed along gets lost. With this we pass along the response to the exceptions and then you can get the error message, if one was provided.

The code base has changed, cannot merge this PR anymore.


How to l2-normalize the embedding feature in flax.linen.Embed

Hi,
I am quite new to Jax/Flax, and I am looking forward to an example about flax.linen.Embed

I would like to know how to normalize the embedding features with unit-norms when init the module?
how to renormalize after each update during training?

Thanks a lot in advance!

Hi @longbowzhang,
Here is one way of achieving this:
Suppose you have the following simple network:
class Net(nn.Module):

    @nn.compact
    def __call__(self, c):
        x = nn.Embed(num_embeddings=10, features=5)(c)
        x = nn.Dense(features=5)(x)
        return x

Then you could apply the following normalization after each training step (either in your training loop or directly in your update function):
params = state.params.unfreeze()
params['params']['Embed_0']['embedding'] /= (jnp.linalg.norm(params['params']['Embed_0']['embedding'], axis=-1, keepdims=True) + 1e-10)
state = state.replace(params=frozen_dict.freeze(params))

Of course you can apply the same normalization after initializing your parameters.
Let me know if you need more details, I could create a small Colab for you.
Hope that helps!


Adding support for spdx rightsidentifier

Purpose
Implement support for SPDX and rightsIdentifier, which was added to metadata schema 4.2.
Approach
Lookup rights and rightsURI in SPDX.
Learning
Approach to enrich metadata.

@kjgarza are there other comments?