Question about error handling

It's been a while, Hi 🙋♂
Jumping back into implementing Featurevisor in our Nuxt project, I ran into a case where the app crashes when datafile fails to load.
Was wondering what is the right approach to handle the error.
Here's a basic repro of the issue: https://stackblitz.com/edit/nuxt-featurevisor-bfyd5c?file=composables%2FuseExperiments.ts
The error we get is:
 ERROR  [Featurevisor] failed to fetch datafile { error:
   SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
       at JSON.parse (<anonymous>)
       at parseJSONFromBytes (node:internal/deps/undici/undici:5329:19)
       at successSteps (node:internal/deps/undici/undici:5300:27)
       at fullyReadBody (node:internal/deps/undici/undici:1447:9)
       at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
       at async specConsumeBody (node:internal/deps/undici/undici:5309:7) }

I've tried to wrap a few different parts with try/catch but didn't help.
Thank you,
Meir

@meirroth: responding from phone since travelling.
createInstance function accepts "datafile" allowing you to fully take over the datafile fetching on your own. Including error handling.
Besides, you can also make use of "handleDatafileFetch" option.
Docs available on the JS Sdk page.

@fahad19 is there no way to suppress errors gracefully without manually handling fetch?

@meirroth: I tried to reproduce it here https://github.com/featurevisor/featurevisor/pull/309
but I fail to see that it's not graceful currently.
here's the line in SDK, where it's handling the fetch gracefully by default: https://github.com/featurevisor/featurevisor/blob/e6ad0df7b5f152950220de9a5a52a725ab00e83f/packages/sdk/src/instance.ts#L263-L265

@fahad19 thank you for taking the time to review this issue!
I see your test passed, that's great.
Any chance you can have a look at the minimal reproduction I provided above and see if you can spot why it's causing a fatal error?
Much appreciated, Meir

@meirroth: I updated your example here https://stackblitz.com/edit/nuxt-featurevisor-rtpbq7?file=composables%2FuseExperiments.ts
you can notice how I updated the getInstance function by adding a logger there:
async function getInstance() {
  const f = createInstance({
    datafileUrl:
      'https://meirroth.github.io/featurevisor-example-github/production/datafile-tag-all.jsonTYPO',

    logger: createLogger({
      handler: function (level, message, details) {
        console.log('====== LOG ======');
        console.log(level, message, details);
      },
    }),

    onActivation: function (
      featureKey,
      variationValue,
      fullContext,
      captureContext
    ) {},
  });

  return await f.onReady();
}

previously in your example, it was actually printing the error as a log (using console.error), instead of crashing the app.
new example shows just that, instead of printing it using console.error (therefore no red colour anywhere).
if I understood it any wrong, please correct me.

Thanks 🙏 I'll have a look tomorrow.

@fahad19 The StackBlitz update you shared still crashes Nuxt, even if I wrap await init() in a try/catch.
Any idea why, or if there's another way to handle this? I don't want Featurevisor to crash our entire website if the datafile didn't load.

@meirroth: it's not crashing. it's waiting forever for the SDK instance to be ready.
you can find my updated example here: https://stackblitz.com/edit/nuxt-featurevisor-6efd3c?file=app.vue,composables%2FuseExperiments.ts

The error log will appear when it fails to fetch datafile, but printing error log is not the same as crashing an app. Failures are handled gracefully by the SDK.
You can also detect if datafile fetch has failed, and handle that case the way you see fit.

@fahad19 In your fix you took out the await f.onReady() from the composable, so I'm confused as to how it can now work in SSR.

@meirroth: assuming you are running a traditional web server, you can wait for the datafile fetch to finish in Featurevisor SDK first.
it can either finish:

successfully, when onReady is triggered, OR
unsuccessfully, emitting an error log saying it failed to fetch datafile (this was captured in my example above)

only afterwards, you can proceed to handling incoming requests and serve them with a response.
that's why SDK API also supports initialFeatures, allowing you to set up some default values for features while waiting for the datafile fetch to finish, or in the case of a datafile fetch never finishing successfully: https://featurevisor.com/docs/sdks/javascript/#initial-features

@fahad19 I'm trying to understand, why wouldn't a simple try/catch work here? I simplified the repro even more:
https://stackblitz.com/edit/nuxt-featurevisor-82yuwm?file=app.vue
Here's a workaround using custom fetch method: https://stackblitz.com/edit/nuxt-featurevisor-vkfdne?file=app.vue

It's a bit tricky to make await f.onReady() also fail when a datafile fetch fails.
explaining below:

ready is an event that can fire maximum once
zero times if the initial datafile fetch never completes successfully
we also have refreshing logic in SDK, allowing datafile to be fetched periodically (like every X seconds)

given

ready is an event that's expected to fire maximum once, but
datafile fetches can happen more than 1 time

it wouldn't be right to fail await f.onReady() if initial fetch fails. what if the first, second, or third refresh fetched datafile successfully? it will contradict the failure on await f.onReady() then.
that's why the SDK allows these options depending on your needs:

allowing you to listen to onReady, which will fire max once if initial datafile fetch is successful
if initial fetch is unsuccessful, make use of initialFeatures to continue your app to run with default set of values
make use of logger API to detect if datafile fetch has failed (either for initial for further refreshes), and react to it accordingly
while still being able to fetch datafiles more times via refreshInterval or a manual f.refresh() method call
and also allowing you to fully take over the fetching responsibility via handleDatafileFetch

async/await is basically a Promise, something that fires maximum one time.
Featurevisor SDK tries to be more event-based without locking itself to a single-event Promise-based API, because there can be more than one fetch involved (think refreshes).
as of now, we are dealing with traditional HTTP fetches. in future, WebSockets might play a role as well, which will be more events based than a one way request-response cycle.
that's why I am reluctant to make async f.onReady() fail which can be caught with try/catch, because it will be very limiting from API design perspective.

@fahad19 I appreciate your detailed response, it explains a lot! I tried again the solution you shared earlier, and it doesn't work when there's no typo in the datafileUrl. So I tried to simplify it even more, and still didn't get it to work without TYPO. Could you please share a simple solution that works both ways?

(sorry for taking so long to respond. really busy with too many things. coming back to it asap)

I am struggling to go through the Nuxt example myself, so I am attempting to share my way of doing it here keeping Node.js in mind.
Assuming we are dealing with a basic Express.js app here:
// imports
const express = require("express");
const { createInstance, createLogger } = require("@featurevisor/sdk");

// utility functions
async function waitFor(seconds) {
  await new Promise(resolve => setTimeout(resolve, seconds * 1000));
  console.log(`Waited for ${seconds} seconds`);
}

// featurevisor
const f = createInstance({
  datafileUrl: 'https://cdn.yoursite.com/datafile.json',
  logger: createLogger({
    handler: function (level, message, details) {
        if (level === 'error' && message === 'failed to fetch datafile') {
          console.log("Failed to fetch datafile");
        }
      },
  }),

  // until datafile is fetched successfully, SDK will use these values
  initialFeatures: {
    showCookieBanner: {
      enabled: true
    }
  }
});

// give Featurevisor some time to fetch datafile (either successful or not)
await waitForSeconds(3);

// express app
const app = express();

app.get("/", (req, res) => {
  const showCookieBanner = f.isEnabled('showCookieBanner', { userId: "..." });

  if (showCookieBanner) {
    return res.send("Showing cookie banner");
  }

  res.send("Hello World! Without showing cookie banner");
});

app.listen(3000, () => {
  console.log(`Example app listening on port 3000`);
});

This way, even if datafile fetch is unsuccessful, it won't crash your app.
And your app can still continue to serve the incoming requests using the SDK. Instead of datafile content, the SDK will use values as exists in initialFeatures as a fallback.
@meirroth

@fahad19 Thanks for your help. I'm not sure how to apply your express.js example in Nuxt. Also, confused by the wait time and missing onReady method. Does that delay page load by 3 seconds? When does Featurevisor kick in?
The repro I linked earlier is very simple, it's just one file with very few lines of code. Anyway, maybe someone else with Nuxt/SSR knowledge would know.

Also, confused by the wait time and missing onReady method

onReady is intentionally omitted because onReady only triggers upon successful initial datafile fetch.
since we wish to handle failures gracefully (of initial datafile fetch), a waiting period of 3 seconds is introduced manually. this 3 seconds waiting period is decent enough time to handle the fetch (either successfully or unsuccessfully). you can always tweak the number here.
this waiting period is only applied when app itself starts, not for every single request that the app will handle.

Does that delay page load by 3 seconds?

it does not delay the pageload. the waiting happens only when the application itself starts for the very first time, before serving any future requests.

I cannot make it any simpler given all the edge cases involved.

I'm not sure yet how to translate your Express.js solution to Nuxt.js, so I'm going to stick with the custom loader workaround I linked earlier.
Still stuck on #312 though 😞
Anyway, I appreciate your time and efforts on this!


[Question] what is the recommended way to restore a backup in a docker-compose environment?

I'm working on backup-sidecar, that makes it as easy as possible to handle backups.
The creating of the backups is simple enough: it's just a script, that calls "pg_dumpall" every now and then. But the restoring of the backup is a little more complicated. Especially since all clients need to be disconnected during the restore.
A script running on the host would have to know the exact names of the services, the current state of the services and the relevant env-vars. I believe this would be hard to do automatically, and it would also be outdated very fast. That's why I want to solve this via a docker-container.
Question

What is the recommended way to restore a backup, when postgres run with docker-compose?

follow up questions:

How do other people deal with this problem?
Is it possible for my sidecar to shut down postgres, when the backup is restored? (that way the admin wouldn't have to press ctrl+c, and the whole process could be scripted easily) (This is solved, see comment below)

my solution so far
I want the solution to be as generic as possible. The admin shouldn't even have to know, that the backup is being restored to a psql database. In the future I want to set up a similar restore-strategy for our other databases, so admins can use the same emergency procedure for all services.
I have come up with a docker-compose-restore.yml, that looks somewhat like this:
services:
  web:
    restart: "no"
    command: "echo 'web disabled'"

  backup:
    restart: "no"
    command: >
      bash -c "while ! nc -w 1 -z db 5432; do sleep 0.1; echo 'waiting for db...'; done;
      sleep 2 &&
      /src/restore.py"
    environment:
      - BACKUP=/dump.sql
    volumes:
      - ${BACKUP}:/dump.sql

  db:
    restart: "no"

So when a backup needs to be restored, the admins do this:
docker-compose down
BACKUP="/path/to/the/backup.sql" docker-compose -f docker-compose-restore.yml up
# ... wait a little ...
# ctrl + c
docker-compose up -d

I can use --abort-on-container-exit and slight changes to my compose file to have compose behaving the way I want.


show optional toggle if optional is enabled

Changelog Description
Fix issue where optional toggle was not shown when enabling it in settings.

Testing notes:

Enable: ayon+settings://jira/publish/CollectJiraNotifications/optional
Open your favorite DCC and you should be able to see the plugin toggle in the publisher UI.

To make it more concise for yes/no question:
Is there use case where we want to allow artists to disable sending notifications to Jira?


SISTR cgMLST data output?

Would it be possible to output the cgMLST results to a separate CSV/TSV file and/or XLSX worksheet?
You could get really fancy and produce a dendrogram from the cgMLST results, output to newick, output a distance matrix of the different profiles, etc (I have performant code that does all this if you'd like to add these features).
It'd be nice for users to use the cgMLST info along with their SISTR serovar/subspecies predictions to view everything in something like Phandango or Microreact (basically tree + metadata table) or to do their own analyses with the complete suite of information available from SISTR.

This is a good idea.  By cgMLST I assume all the allele types?  We have this info so could definitely export it to a separate worksheet/file.
I think it's something that can be worked on for the next release. Maybe along with building a dendrogram. I'd be happy to see your code for this :smile:

Here's a potentially useful notebook with some code to generate distance matrices, dendrograms, MSTs, flat clusters from distance matrices:
https://gist.github.com/peterk87/b203f62a71d7f4fb273139b219af5e81


Some token prices on AAVE extended incorrect

aave v2 extended subgraph on avalanche shows inputTokenPriceUSD and outputTokenPriceUSD for USDT, USDC as > $100
WETH is nearly $0
Those are the ones I've noticed so far
example withdraw with price > 100
{
            "id": "0xeb6b6e9c910bb8e3336b49ec05937d65ee6bc4a6f366de9ebccc6d0207fcbbd9-19",
            "amount": "2500000000",
            "asset": {
              "symbol": "USDT.e",
              "id": "0xc7198437980c041c805a1edcba50c1ce5db95118",
              "decimals": 6,
              "name": "Tether USD"
            },
            "amountUSD": "250119.1325",
            "market": {
              "inputTokenPriceUSD": "100.054899",
              "outputTokenPriceUSD": "100.054899",
              "totalDepositBalanceUSD": "11227217435.055119816199"
            }
}

sample query on https://api.thegraph.com/subgraphs/name/messari/aave-v2-avalanche-extended that returns some cases
  accounts(
    first: 10
    orderBy: id
    where: {id: "0x002aea16059a7d4bef638a03b61a9e80ef07e745"}
  ) {
    borrowCount
    depositCount
    openPositionCount
    closedPositionCount
    positionCount
    repayCount
    withdrawCount
    liquidationCount
    id
    deposits(first: 10) {
      id
      amount
      asset {
        symbol
      }
      amountUSD
      market {
        inputTokenPriceUSD
      }
      position {
        id
      }
    }
    withdraws(first: 10) {
      id
      amount
      asset {
        symbol
        id
        decimals
        name
      }
      amountUSD
      market {
        inputTokenPriceUSD
        outputTokenPriceUSD
        totalDepositBalanceUSD
      }
    }
  }
}```

@jacubcub this should be fixed. Can you verify?

All prices looking good now. Thanks!


How to debug packaged executable?

Hi,
Usually I can run myapp.desk-debug in deskshell.exe for debugging, but how can I debug packaged myapp.exe?
Since I use the deskshell packager to compile and generate executable like myapp.exe, is it possible to to generate another executable file called myapp_debug.exe at the same time?

Sorry for the slow response here. It is a pain to debug the compiled executables. The NSIS compiler is actually quite nice although you are running in quite a limited environment. Basically it is possible to throw up msgbox with values so you can add them into the app.nsi that is generated for you and then hopefully at least see which line it is going wrong at. Most of the silent failures with the app.exe tend to be with missing paths. In this case though with the com object maybe it has some debug statements written to the console that no longer exists with the none debug version?

thanks for your hint, but how to debug com object without console window?

Ah maybe the problem is that the node.exe process is being started and then it is being run in a hidden window -- so your dll is opening the file picker but it is hidden. To test this theory instead of calling the com object code through a nodejs module directly instead use shell exec or similar to boot off node.exe passing it the filename of a nodejs script that uses the com object to pull up the file picker. Then the script can print out the selected filename or folder. This lets your application read the file that was select back from the output of the process. My guess is that then you will see the dialog that is currently being hidden.
So you would end up executing something like:
node.exe selectFolder.js
and it would then write out
{"filename":"c:\test.txt"}

what do you mean by "boot off node.exe passing it the filename of a nodejs script that uses the com object to pull up the file picker" ? how can I call the com object in nodejs script? in my nodejs c++ addon, my com object has to be registered before use

You have a nodejs native addon that you are using to open a window, I am guessing that the window is being opened, but it is hidden the same as the console window is being hidden. I am guessing that any windows you open from the nodejs process will also be hidden. To work around this and test the theory I am saying to move the call to the native addon to a separate process. So maybe now you have something like:-
var myAddon = require("COM-addonThing");
var filename = myAddon.openFilePicker();
I am suggesting that you change it for testing purposes to:-
var child = exec("node.exe openFilePicker.js",function(error,stdout,stderr) {
if(stderr) console.log("stderr: "+stderr);
if(stdout) console.log(stdout: "+stdout);
});
Then create a simple script openFilePicker.js
var myAddon = require("COM-addonThing");
var filename = myAddon.openFilePicker();
process.stdout.write('{"file":"' + filename + '"}\n\r");
So we are moving the call to the native add on to a separate process started via the command line and then we can see if you then see the native window. If this works then we have isolated exactly where the problem is coming from.
The NSIS exec had to have some special way of running the node.exe process in order to hide the console window and that is what is causing this new problem. If we could find another way to turn off the console window then we could use that instead in the exec, If I remember properly the problem is that node.exe is registered as a console application so when running it windows will automatically create a new console window for it to run within.

thanks you @sihorton, I tested my code following your example:
var exec = require('child_process').exec,
child;
child = exec("node.exe run_myaddon.js",function(error,stdout,stderr) {
if(stderr) console.log("stderr: "+stderr);
if(stdout) console.log("stdout: "+stdout);
});
and I also try to execute run_myaddon.js in CMD directly:
node.exe run_myaddon.js
and in both cases I did see the native COM object window, so the problem now should be NSIS exec?

Ok great. I remember it took a lot of work and many different attempts to get the NSIS exec to hide the console window properly, I have been searching online but not found another solution to hide the console window. Therefore I can suggest a number of alternative solutions, maybe one will work well for your application:-

You could pass a parameter from the nsis app.exe that you can then read in your app.js file, if the parameter -native-win-hack is set then do the child exec immediately but on yourself e.g.
me = exec("node.exe app.js")
this will then give you a new node.exe process and this second one will be able to open your native dialogs. So you first detect if you have been run from the app.exe and if so run yourself again then continue execution as normal. So the end process would be: app.exe -> deskshell -> app.js -> app.js    so app.js starts itself running again. You have then got around native windows being hidden and can run as normal.

I am guessing this will be used from your html application anyway, so you could start a second node process that opens a second port, then your html application can connect to both nodes and send gui related commands to the second node.exe and everything else to the first one. You could create a little javascript shim with an api that you call for each command and it then chooses which port to use so you don't need to know that within the html application.

Keep the solution as it currently is, so when you want to do gui things you do it via a shell exec.

You could run the second node.exe but keep it open, then as you get commands you want to run you write this to the process and it then replies for each command and outputs the result back, so this is more like an api where you are sending commands back and forwards between the two processes.

Find a different way to prevent windows from opening the console window for you but do it without hiding other windows that are opened. We could swap out NSIS if you can find anything better to use instead. The main advantage with NSIS is that it is small and portable and you can compile exe files on the end users machine without having to install a big compiler environment so that was why I used it to create the .exe files.

Create an HTML dialog instead of a native dialog for the file picking. Since you have nodejs and that has the built in fs module you can use the module to get a directory listing and return it as an array, then you could display that as html, so that you could browse and select a file. This would maybe be more work but would be prettier in the end perhaps?

Hopefully something there that can help you, if you think of a better solution please tell me.

I test the first solution, but it does not work, here is my modified app.js file:
if(process.argv[2]=='-native-win-hack'){ // real run
var fs = require("fs");
var winfunc = require("deskshell-win-func");
var myaddon= require("myaddon/build/Release/myaddon");
var running = deskShell.startApp({
	"prompt_for_download": true
	//"user-data-dir":__dirname+"/data"
 }).then(function(app) {
            myaddon.run();
});

} else { // run in child process
var exec = require('child_process').exec,
child;
child = exec("node.exe app.js -native-win-hack",function(error,stdout,stderr) {
if(stderr) console.log("stderr: "+stderr);
if(stdout) console.log("stdout: "+stdout);
});
}
but node throw a error says:
Cannot not find module 'deskshell-win-func'
I guest it's somehow related to the execution path when deskshell call app.js, but I don't know how to fix it.

Try setting the current working directory when calling the exec function.
child_process.exec(command, [options], callback)
so you should be able to do something like:
child = exec("node.exe app.js -native-win-hack",{
cwd:__dirname
},function(error,stdout,stderr) {});
You can also do: console.log(process.cwd());  to see where it is running from.

The example code you showed does not actually use deskshell-win-func so maybe you could also just remove that line.

I set the option cwd:__dirname in exec but it doesn't work either, throw a error "ReferenceError: deskShell is not defined", the I try something like this:
var environment = process.env;
environment.deskShell = deskShell;
child = exec("node.exe app.js -native-win-hack",{cwd:__dirname,env:environment},function(error,stdout,stderr) {
if(stderr) console.log("stderr: "+stderr);
if(stdout) console.log("stdout: "+stdout);
});
but still not working, can you tell me where and when is deskShell object created? How can I bypass this object into the child process?
the deskshell-win-func is used somewhere before myaddon.run();  I removed some of my code for better reading.

deskshell.exe runs bin/win/deskshell.js on the local node.exe, this file reads the arguments and the app.desk configuration or application package file and then runs the application. deskshell.exe runs node using nsExec (http://nsis.sourceforge.net/Docs/nsExec/nsExec.txt) which suppresses the dos box (console). So rethinking the problem the simplest place to actually make this change would be on the first line of deskshell.js, something like the following (I am not at my computer so have not tested this):
if (process.argv does not contain -rebootHack) {
add -rebootHack to process.argv
exec(process.argv);
process.exit(0);
}
So basically the first time deskshell.js is run it will add a rebootHack flag to its arguments and restart itself. Hopefully your app can then open its windows.
To make the implementation nicer we could add support for this in the app.desk file. The deskshell.js file could read the application json file (it already does this) and check for the existence of a property, so there is a line in the deskshell.js file:
switch(deskShell.appDef.backend) {
before this line we could add
if (deskShell.appDef.nativeWindowsFix) {
and then do the same as above, i.e. restart the application again. I would be happy to add this to deskshell and release a new version with the fix in. All that is then required is to add nativeWindowsFix: true to the applications app.desk file and it should then run. This will add some milliseconds to the startup time of the app but otherwise should work nicely.

Great, it works! Thank you @sihorton so much!! I will send you a merge request ASAP to share the fix.

Great, glad we managed to get to the bottom of the problem in the end!


Automated Package Upgrade

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Fix assertion failed

fix: moved from CameraX to LifecycleCameraController
feat: image preprocessing before contours extraction (conversion to grayscale, gaussian blur to remove unwanted features from picture, edge detection and then dilate+erode to close contours)
feat: new activity. After a picture is taken from user the App will launch a new activity to let the user see the detected corner and give him the ability to move the corners (in case corners are detected corners incorrectly). After the corners are accepted by the user the image will be cropped on those corners.
fix: corners are now sorted after the user (set?)/accept corners
tuned to work across a range of different resolutions

@gipeppo please make a squash


Add formatted output generation on top of BufferWriter.

I really don't like the duplication between bwprint and BWFormat::BWFormat. I need to figure out how to unify those two things.

[approve ci]


Add map as embeddable to dashboard

Signed-off-by: Junqiu Lei<EMAIL_ADDRESS>Description
Allow user to add maps to dashboard.  This PR contains two main parts:

Maps embeddable
Refactor maps component to adapt embeddable

This PR contains:

Saved map can be added and displayed to dashboards
Register maps into visualization entrypoint
Editing map can be saved and return to dashboard
Time range in dashboard can be effected to map
Filter in dashboard can be effected to map
Interval refresh in dashboard can be effected to map
Cypress test

Demo
Add existing map to dashboard
https://user-images.githubusercontent.com/90288540/217351975-9bc84331-617f-4ef0-b4e0-d2d7af65254e.mov
Add new map from dashboard
https://user-images.githubusercontent.com/90288540/218572172-9af1e6fd-1bb3-4db7-ba45-c0b7ae8fa60a.mov
Issues Resolved
https://github.com/opensearch-project/dashboards-maps/issues/214
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Codecov Report

Merging #231 (245f7a8) into main (88bfeb9) will increase coverage by 0.03%.
The diff coverage is n/a.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@            Coverage Diff             @@
##             main     #231      +/-   ##
==========================================
+ Coverage   91.09%   91.12%   +0.03%
==========================================
  Files           7        7
  Lines         247      248       +1
  Branches       33       33
==========================================
+ Hits          225      226       +1
  Misses         16       16
  Partials        6        6

Impacted Files
Coverage Δ

...Dashboards/plugins/dashboards-maps/common/index.ts
100.00% <0.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

The test failures isn’t related to this PR

From https://github.com/opensearch-project/oui/issues/292#issuecomment-1437497896, we will continue to use gisApp  as Maps app icon for 2.6.0 release. cc @vamshin @VijayanB


Cask request: Ukrainian Typographic Keyboard

Cask details
Name: Ukrainian Typographic Keyboard
Homepage: https://github.com/denysdovhan/ukrainian-typographic-keyboard
Download URL: https://github.com/denysdovhan/ukrainian-typographic-keyboard/releases/download/v1.0.0/ukrainian-typographic-keyboard.dmg
Description: Combined Ukrainian keyboard layout with typographic symbols

Related issue: https://github.com/denysdovhan/ukrainian-typographic-keyboard/issues/4#issuecomment-272422771

@miccal may I ask, when I publish new version, should I make a PR in this repo with updating cask's version too? Can I do it automatically?

I ask, when I publish new version, should I make a PR in this repo with updating cask's version too?

Yes.

Can I do it automatically?

Yes. Those instruction will be even simpler soon.

@vitorgalvao wow, thanks ;)


update requirements

This is blocking me on https://openedx.atlassian.net/browse/EDUCATOR-768; if it's easy I'll just get it fixed up myself.

@doctoryes FYI this repo needs some love for the django upgrade as well. I'm taking a swing at it as I couldn't find a JIRA ticket, if I'm stepping on anyone'e toes I apologize!

@efischer19 By all means, proceed! We appreciate the help. I couldn't find a ticket either - this one must have slipped through the cracks.
@bmedx FYI.

Changes Unknown when pulling 60040c26f12cca22fc2acea30f64253c07a6c333 on efischer/django_upgrade into ** on master**.

Changes Unknown when pulling 4cc6a32deba2049b0550e3f433f83b2c2c3e5949 on efischer/django_upgrade into ** on master**.

@doctoryes this is ready for review when you get a chance

Changes Unknown when pulling 220557d6377feff73c56e320a445e16fcb7fc62a on efischer/django_upgrade into ** on master**.

Changes Unknown when pulling 7218d93636df5013fe25ba634e0e32c19e922e53 on efischer/django_upgrade into ** on master**.


[Question]: PGVectorStore with custom DB

Question Validation

[X] I have searched both the documentation and discord for an answer.

Question
I want to use PGVectorStore with connection with my own Vector DB created outside of the llama index (it's actually a view on top of the source table).
I don't see any way to do that on my own, as it seems like it try to use custom table names (prefixed with data_) even if I specify them explicitly.
Is there an easy way to do that other than just build my own customized logic for that?

I don't think there's an easy way right now. If you can suggest some way to modify the class that would allow for arbitrary tables, that would be nice, but tbh as it stands, you should just implement your own vector store class for a db that wasn't built by llama-index 😅 (Not a great answer I know)
Thinking about, the main requirements to handling an arbitrary DB are

how do nodes get added to a db? The main columns are the id, text, and embedding. What about metadata? Is it in a json column? Columns for each field of metadata?
deleting -- currently the vector store class has two delete methods -- deleting by ref doc id (deleting all nodes with a given parent document id), or deleting per node id
querying -- when querying, what query needs to be run? How do you translate that result back into a node object?

With that listed out, maybe there's some room here for an ArbitraryDBVectorStore class, that just takes in a sqlalchemy config, the SQL queries needed for add, delete, and query? I think you also need some function to translate a query result back into nodes as well


MM-19517 Allow styling of slack attachment interactive elements.

Allows the styling of slack attachment interactive elements (buttons and dropdown menus).
Related server PR: https://github.com/mattermost/mattermost-server/compare/mm-19517-2

Are we sure that arbitrary styling doesn't cause introduce any security vulnerabilities? CSS can do some weird things. The only thing I can immediately think of is that you could possibly introduce tracking pixels by including an externally-hosted image as the background image. I'm 0/5 on whether or not that's actually an issue, but I want to make sure we've considered it before adding this

Another thing I just thought of is that you could mess around with positioning to make a message attachment that covers the whole screen to block it out

@hmhealey These points are pretty concerning.
The flexibility of an arbitrary style object is very convenient, but I don't think it would be trivial to defend against these different issues on a case-by-case basis.

@hmhealey @mickmister Ya. Looks like this is a terrible idea: https://www.owasp.org/index.php/Testing_for_CSS_Injection_(OTG-CLIENT-005) If it was restricted to plugins (the use case I want it for) it would be fine. But since it's slack attachments anyone can do it.
Going to need an alternate solution.

No, those wouldn't be vulnerable to them. For the first case, we have the image proxy to request externally-hosted images, and for the second case, I was thinking of something using a fixed position which would need to be set with CSS.
I'm not sure what the goals of this feature are or if there's some behaviour from Slack that we're trying to match, but maybe we could come up with some sort of whitelist for the CSS values that could be set? That way we could avoid potentially problematic ones

@hmhealey This isn't behavior we are trying to match. Really it's a specific styling request from Assad. It was to give us option when building the workflow plugin.
We will have to do this on a case by case basis. Basically your whitelist idea.


Use ~/.local/bin/poetry if it exists

As a better default or another step in resolution, let's check for ~/.local/bin/poetry and use it if it exists and ~/.local/bin isn't in the PATH, and of course, tell the user about the misconfiguration.

This comes off of #42: do the thing that works in most cases and tell the user that we're, uh, autocorrecting them.


New messages should not effect ordering of chats in share list

Share an image
When in the share screen, you receive a new message
Chat with new message gets moved to the top
If you intend to click on the chat that was in index 0, you will mis-tap on the chat

I'm gonna redo it all anyway, I'm gonna close this


fix(composables): load shipping address association

Description

vue-demo-store: Fixes missing order status and missing shipping address at the order success page
api-gen: takes care of translated properties and their format in output .d.ts files
all: removes optional chaining for translated object and its properties

Type of change

Bug fix (non-breaking change that fixes an issue)

ToDo's

Screenshots (if applicable)

Additional context

@kstala if you don't mind, please retest this PR, but now check also the translated strings coming from API, like names, descriptions, breadcrumbs, etc..

since now on, we access for translated and not translated values for properties using translated object, which also contain a fallback value if there is no translation.


BUG: accessibility issues

Not enough color contrast between text and background for Gitpod buttons
No alt text for images

I think a nice solution would be changing the markup from

to

  Open in StackBlitz

The  should be svg of just the logo.
The style of  would have the service's background color.

It's better using semantic HTML without Aria whenever possible.

I think we can close this one now since the site has been redesigned, and these aren't images requiring alt text anymore?  :sweat_smile:
Shaal, do feel free to take a look at the new site though and let us know if you notice any accessibility issues! :purple_heart:


feat: gaz optimization in qgb end blocker

Overview
closes https://github.com/celestiaorg/celestia-app/issues/1778

Checklist

[ ] New and updated code has appropriate documentation
[ ] New and updated code has new and/or updated testing
[ ] Required CI checks are passing
[ ] Visual proof for any user facing features like CLI or documentation updates
[ ] Linked issues closed with keywords

Codecov Report

Merging #1800 (5bae50b) into main (5443e5f) will increase coverage by 0.01%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main    #1800      +/-   ##
==========================================
+ Coverage   51.60%   51.61%   +0.01%
==========================================
  Files         107      107
  Lines        6647     6649       +2
==========================================
+ Hits         3430     3432       +2
  Misses       2862     2862
  Partials      355      355

Impacted Files
Coverage Δ

x/qgb/abci.go
62.16% <100.00%> (+1.05%)
:arrow_up:


Completed the setup for Guild without matching id in ReadyHandler cache

JDA was working great until I initialized it inside of a Spring Boot service (previously I was not using Spring Boot). Now it can login but not connect to my guild.
Log:
[19:07:12] [Info] [JDA]: Login Successful!
[19:07:13] [Info] [JDASocket]: Connected to WebSocket
[19:08:43] [Fatal] [JDASocket]: Completed the setup for Guild: G:My Guild(<Big long number goes here>) without matching id in ReadyHandler cache
[19:08:43] [Fatal] [JDASocket]: Encountered an exception:
[19:08:43] [Fatal] [JDASocket]: java.lang.NullPointerException
	at net.dv8tion.jda.core.handle.ReadyHandler.guildSetupComplete(ReadyHandler.java:193)
	at net.dv8tion.jda.core.handle.GuildCreateHandler.lambda$handleInternally$91(GuildCreateHandler.java:44)
	at net.dv8tion.jda.core.entities.EntityBuilder.createGuildFirstPass(EntityBuilder.java:292)
	at net.dv8tion.jda.core.handle.GuildCreateHandler.handleInternally(GuildCreateHandler.java:38)
	at net.dv8tion.jda.core.handle.SocketHandler.handle(SocketHandler.java:37)
	at net.dv8tion.jda.core.requests.WebSocketClient.handleEvent(WebSocketClient.java:811)
	at net.dv8tion.jda.core.requests.WebSocketClient.onTextMessage(WebSocketClient.java:516)
	at net.dv8tion.jda.core.requests.WebSocketClient.onBinaryMessage(WebSocketClient.java:845)
	at com.neovisionaries.ws.client.ListenerManager.callOnBinaryMessage(ListenerManager.java:368)
	at com.neovisionaries.ws.client.ReadingThread.callOnBinaryMessage(ReadingThread.java:270)
	at com.neovisionaries.ws.client.ReadingThread.handleBinaryFrame(ReadingThread.java:990)
	at com.neovisionaries.ws.client.ReadingThread.handleFrame(ReadingThread.java:749)
	at com.neovisionaries.ws.client.ReadingThread.main(ReadingThread.java:108)
	at com.neovisionaries.ws.client.ReadingThread.runMain(ReadingThread.java:64)
	at com.neovisionaries.ws.client.WebSocketThread.run(WebSocketThread.java:45)

Really not sure where to go from here. I tried kicking and re-adding the bot.

Are you on latest? I'm kinda sure it was fixed on 240

I'm on 3.2.0_241, thanks for the quick reply!

Do you use maven or gradle?

I use maven:
<dependency>
    <groupId>net.dv8tion</groupId>
    <artifactId>JDA</artifactId>
    <version>3.2.0_241</version>
</dependency>

You need to specify the org. json version explicitly

Try adding
<dependency>     <groupId>org.json</groupId>     <artifactId>json</artifactId>     <version>20160810</version> </dependency>

That worked, thanks both of you! I guess Spring Boot has a conflicting version?

The issue happend alot to maven users so we already knew the solution. However Gradle user are having no problems.


Use the latest apiVersion in k8s-v1.14.x

Use the latest apiVersion in k8s-v1.14.x

@warmchang Thanks!


test: Fix sa name to be under 63 chars

This fix is needed for nightlies to successfully pass.

merging this as this is test-only fix and it would allow us to run nightlies over the weekend.


cdn broken url

Hi, in the doc --> installation there is a CDN link but it's broken
https://embedjs.readme.io/docs/installation

It seems jsdelivr is unable to take built files from npm. For the time being you can use files from cdnjs.com https://cdnjs.com/libraries/embed-js

thanks, unfortunately there are some issues with the latest version. I'll fill another issue...

Sure.


Freewebnovel: Regex to remove website spam

It removes just a part of the spam.
EDIT: I tested that script with 120+ chapters on chapters published 1+ year ago. I didnt find any more spam.
I also checked recent chapters; The script still deletes that spam effectively.

I think it's ready now


Fix permission issue during Diagnostic service garbage collection

Description
This PR attempts to fix the permission issue observed during unmounting of secondary store(s) during the diagnostic service run (on VMware) and the Diagnostic service garbage collector:
2021-09-23 05:17:58,206 DEBUG [o.a.c.s.NfsMountManager] (BackgroundTaskPollManager-1:ctx-d5fcff87) (logid:779879f6) Executing while with timeout : 10000
2021-09-23 05:17:58,263 DEBUG [o.a.c.s.NfsMountManager] (BackgroundTaskPollManager-1:ctx-d5fcff87) (logid:779879f6) Execution is successful.
2021-09-23 05:17:58,267 DEBUG [o.a.c.s.NfsMountManager] (BackgroundTaskPollManager-1:ctx-d5fcff87) (logid:779879f6) Executing: sudo chmod 1777 /var/cloudstack/mnt/32989157261914.7b4126ed
2021-09-23 05:17:58,275 DEBUG [o.a.c.s.NfsMountManager] (BackgroundTaskPollManager-1:ctx-d5fcff87) (logid:779879f6) Executing while with timeout : 10000
2021-09-23 05:17:58,292 DEBUG [o.a.c.s.NfsMountManager] (BackgroundTaskPollManager-1:ctx-d5fcff87) (logid:779879f6) Execution is successful.
2021-09-23 05:17:58,300 DEBUG [o.a.c.d.DiagnosticsHelper] (BackgroundTaskPollManager-1:ctx-d5fcff87) (logid:779879f6) Executing: /bin/bash -c umount /var/cloudstack/mnt/32989157261914.7b4126ed
2021-09-23 05:17:58,304 DEBUG [o.a.c.d.DiagnosticsHelper] (BackgroundTaskPollManager-1:ctx-d5fcff87) (logid:779879f6) Executing while with timeout : 3600000
2021-09-23 05:17:58,305 DEBUG [o.a.c.d.DiagnosticsHelper] (BackgroundTaskPollManager-1:ctx-d5fcff87) (logid:779879f6) Exit value is 1
2021-09-23 05:17:58,306 DEBUG [o.a.c.d.DiagnosticsHelper] (BackgroundTaskPollManager-1:ctx-d5fcff87) (logid:779879f6) umount: /var/cloudstack/mnt/32989157261914.7b4126ed: umount failed: Operation not permitted

This can be solved in one of 2 ways,

Do not unmount the secondary store across successive runs of the diagnostic service clean up job or collection of diagnostic data(on vmware)
Fix the issue of unmount (by running the umount command using sudo) and clean up the mount path so that during successive runs a new mount path can be created - https://github.com/shapeblue/cloudstack/commit/a9b460869b8f244f4b3db3cc3973f3419dffed83

Current solution follows Option 1 as it seems to be a simpler fix, and the storage unmount happens during Cloudstack Management service restarts

Types of changes

[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] New feature (non-breaking change which adds functionality)
[X] Bug fix (non-breaking change which fixes an issue)
[ ] Enhancement (improves an existing feature and functionality)
[ ] Cleanup (Code refactoring and cleanup, that may add test cases)

Feature/Enhancement Scale or Bug Severity
Feature/Enhancement Scale

[ ] Major
[ ] Minor

Bug Severity

[ ] BLOCKER
[ ] Critical
[ ] Major
[X] Minor
[ ] Trivial

Screenshots (if appropriate):
How Has This Been Tested?
Tested on KVM and VMware env - reduced the GC interval for diagnostic service - 'diagnostics.data.gc.interval' and observed  no more failures and on restart of MS, the store is unmounted and path is deleted

@blueorangutan package

@Pearl1594 a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

Packaging result: :heavy_check_mark: el7 :heavy_check_mark: el8 :heavy_check_mark: debian :heavy_check_mark: suse15. SL-JID 1379

@blueorangutan test

@rhtyd a Trillian-Jenkins test job (centos7 mgmt + kvm-centos7) has been kicked to run smoke tests

Trillian test result (tid-2199)
Environment: kvm-centos7 (x2), Advanced Networking with Mgmt server 7
Total time taken: 40520 seconds
Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr5504-t2199-kvm-centos7.zip
Smoke tests completed. 88 look OK, 1 have errors
Only failed tests results shown below:

Test
Result
Time (s)
Test File

test_07_deploy_kubernetes_ha_cluster
Failure
3617.82
test_kubernetes_clusters.py

test_08_deploy_and_upgrade_kubernetes_ha_cluster
Failure
0.08
test_kubernetes_clusters.py

test_09_delete_kubernetes_ha_cluster
Failure
0.05
test_kubernetes_clusters.py

ContextSuite context=TestKubernetesCluster>:teardown
Error
80.92
test_kubernetes_clusters.py

@blueorangutan package

@rhtyd a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

Packaging result: :heavy_check_mark: el7 :heavy_check_mark: el8 :heavy_check_mark: debian :heavy_check_mark: suse15. SL-JID 1434

@blueorangutan test

@rhtyd a Trillian-Jenkins test job (centos7 mgmt + kvm-centos7) has been kicked to run smoke tests

Trillian test result (tid-2231)
Environment: kvm-centos7 (x2), Advanced Networking with Mgmt server 7
Total time taken: 35040 seconds
Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr5504-t2231-kvm-centos7.zip
Smoke tests completed. 88 look OK, 1 have errors
Only failed tests results shown below:

Test
Result
Time (s)
Test File

test_01_invalid_upgrade_kubernetes_cluster
Failure
0.01
test_kubernetes_clusters.py

test_02_deploy_and_upgrade_kubernetes_cluster
Failure
0.01
test_kubernetes_clusters.py

test_03_deploy_and_scale_kubernetes_cluster
Failure
0.01
test_kubernetes_clusters.py

test_04_basic_lifecycle_kubernetes_cluster
Failure
0.01
test_kubernetes_clusters.py

test_05_delete_kubernetes_cluster
Failure
0.00
test_kubernetes_clusters.py

test_06_deploy_invalid_kubernetes_ha_cluster
Failure
0.01
test_kubernetes_clusters.py

test_07_deploy_kubernetes_ha_cluster
Failure
0.00
test_kubernetes_clusters.py

test_08_deploy_and_upgrade_kubernetes_ha_cluster
Failure
0.00
test_kubernetes_clusters.py

test_09_delete_kubernetes_ha_cluster
Failure
0.00
test_kubernetes_clusters.py

@blueorangutan test

@nvazquez a Trillian-Jenkins test job (centos7 mgmt + kvm-centos7) has been kicked to run smoke tests

Trillian test result (tid-2242)
Environment: kvm-centos7 (x2), Advanced Networking with Mgmt server 7
Total time taken: 32574 seconds
Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr5504-t2242-kvm-centos7.zip
Smoke tests completed. 89 look OK, 0 have errors
Only failed tests results shown below:

Test
Result
Time (s)
Test File


Create consts to statuses

It would be interesting to have constants to reference the permissions states, something like:
Permissions.GRANTED
Permissions.DENIED
Permissions.AUTHORIZED
Permissions.UNDETERMINED
what do you think?

@ArmandoAssuncao - sounds good to me, if you want to submit a PR!


PR for issue #9

Fixes imports for transformers 4+

Just curious, why was this not merged? @nadahlberg @patil-suraj


User-defined themes no longer work in Jenkins 2.346.1

Jenkins and plugins versions report

Environment

Paste the output here

What Operating System are you using (both controller, and any agents involved in the problem)?
Windows Server 2019
Reproduction steps

Write CSS using material theme website, download css file, place in web-accessible location. In my case I had an embedded SVG and light blue color
point theme at CSS and refresh
Title shows correctly, but none of the colors are correct and icon doesn't show up
This worked in Jenkins 2.332.X

Expected Results
Theme properly displays with blue and icon
Actual Results
Theme is entirely black, no icon
Anything else?
No response

It seems some CSS has changed with 2.346.1. We use a small Extra CSS entry to theme the headers on the two Jenkins instances we use to tell them apart by glance.
After adjusting the CSS to match the new version, the header is fixed, but the breadcrumb bar colors are not correct:
.page-header, .jenkins-breadcrumbs { background-color:darkred; }
The breadcrumb bar takes on a barely-pink tint, same with our other instance's green being a very light green, almost white. It's enough to tell them apart as intended, but not the previous behavior in 2.332.x (breadcrumb bar fully matching header and much easier to see).
I have't had a chance to drill further, I suspect background-color is no longer the right property to set for the breadcrumb bar. Many people may need to update their themes for this release

This is not an issue in this plugin, but with the individual theme(s) instead (Hint: The material theme is dead "upstream", you might want to switch and help improve the material-theme-plugin instead). Jenkins Core has started some more breaking UI improvements in recent months, so breaking themes are almost guaranteed.


API to get color of the bar/candlestick item

Hi, lightweight-charts team
Is it possible to get barStyle() via an index in the series chart in lightweight-charts v3.1.2 ?
I used to barStyle() for get color in lightweight-charts v2.0.0
var candleSeries = chart.addCandlestickSeries();
var color = candleSeries.series().barColorer().barStyle(index);

example Information obtained from the barStyle()
{
barBorderColor: "rgb(229, 68, 95)"
barColor: "rgb(229, 68, 95)"
barWickColor: "rgb(229, 68, 95)"
}
Now it doesn't work. Can I have another method to use instead?
I want to get barStyle() method because my app chart has a legend feature a color the same as the bar color.

Lightweight Charts Version: 3.1.2

The issue we need to pay attention here is custom colors per bar item (available for histogram atm, but could bew implemented in other series soon in #195). If you don't use custom colors - you can do it easily by getting color from options (for bars logic of choosing a color is pretty simple).

How can I get the candle color on mouseover from charts that are like candle type?

any body here?

At the moment, you can't get the colour directly from the API but you can work around this to get it working.
The colour of the candlestick is either based on whether the it is higher or lower than the previous value, or set by the data itself.
The crosshair event (https://tradingview.github.io/lightweight-charts/docs/api/interfaces/IChartApi#subscribecrosshairmove) contains a time property which you could use to either check the colour you've set in the data, or find the previous value and compare it's value to determine the expect colour.

Hi! Has there been any new updates for this or do we still need to use the work-around??


short term fix for multiple clusters in config file

we need a short term fix for the new config in k2cli.  currently there is a hack proposed ( #74 ) but that only works if there is only one cluster in the config file.  we need to have the ability to have several clusters listed and to be able to select which cluster we will operate on.
options:

if no cluster flag is set then perform the operation on all clusters
if no cluster flag is set then operate on the first cluster in the list (could be unstable as the Viper unmarhalling may not be consisten across invocations)
if no cluster flag is set then quit and ask the user to specify a cluster (by using the --cluster flag which doesn't exist yet)

reminder that as soon as we allow users to specify multiple clusters in the config we need to remove the check done in https://github.com/samsung-cnct/k2/pull/417 because up right now would fail immediately

handled in k2


No "AdvertiserId" through winrt

I was developing a web app by using UWP, and when we tried to retrieve this value as what it said on this document, there is no value returned, no matter on test env or real device. Is there problem in getting this value from JS? what's the better way to do so?
Thanks.

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

ID: f6697dd2-4e73-f2d9-23b9-15ff9709338c
Version Independent ID: 3df06de3-a6d6-9e60-4e04-76fb49e33623
Content: AdvertisingManager.AdvertisingId Property (Windows.System.UserProfile) - Windows UWP applications
Content Source: https://cpubwin.visualstudio.com/DefaultCollection/windows-uwp/_git/winrt-api-build?path=%2fwinrt-api-build%2fwindows.system.userprofile.advertisingmanager.yml&version=GBlive&_a=contents
Product: uwp
Technology: winrt-reference
Git Login: hickeys
Microsoft Alias: hickeys

And a sure thing is that the "Advertiser" profile is turning on through my logged-in user.

Do we have any updates on this ticket? @hickeys


libcamera-detect: Add multiple file name output generation options

Added --datetime --timestamp and --timeformat options for using the current date and time to construct the output file name.

Added file name generation similar to libcamera-still including timestamp and datetime. Also added a the --timeformat argument to allow passing in custom strftime() date/time format strings when the --datetime option is true. The default value for timeformat is: "%m%d%H%M%S". The file extension is set by options->encoding for the datetime and timestamp options.
The default --output option retain its previous functionality.
Examples:
-o /home/user/capture/car- --datetime
output file: car-1223033452.jpg
-o /home/user/capture/car- --timestamp --timeformat "%F %r"
output file: car-2022-12-23 03:34:52 PM.jpg
-o /home/user/capture/ --timestamp
output file:<PHONE_NUMBER>.jpg
-o /home/user/capture/car%03d.jpg (Default/Existing)
output file: car001.jpg

Apologies for the previous pr, I suppose the title/description was the reason for the failed style check.
I would be happy to also submit a pr for the documentation update after this is merged.

Thanks for the updated PR.  This is now merged.  Happy to accept documentation updates when you have that ready!


Donut Chart - Labels are not shown as default

Codepen
https://codepen.io/anon/pen/bXpoaG
Explanation

I want to show Label in center as default (like : "total" attribute), instead of hover on series
In Line Chart, I want markers icons with drop shadow.
In Donut Chart, can be any series active as default ?

I have attached an image of donut chart, line chart,

those I want to make.
Thanking You

a) Showing a total label by default can be achieved by
plotOptions: {
  pie: {
    donut: {
      labels: {
        show: true,
        name: {
          show: true,
          fontSize: '22px',
          fontFamily: 'Rubik',
          color: '#dfsda',
          offsetY: -10
        },
        value: {
          show: true,
          fontSize: '16px',
          fontFamily: 'Helvetica, Arial, sans-serif',
          color: undefined,
          offsetY: 16,
          formatter: function (val) {
            return val
          }
        },
        total: {
          show: true,
          label: 'Total',
          color: '#373d3f',
          formatter: function (w) {
            return w.globals.seriesTotals.reduce((a, b) => {
              return a + b
            }, 0)
          }
        }
      }
    }
  }
}

Codepen - https://codepen.io/apexcharts/pen/XvdqPm
b)Markers drop-shadow is not available currently, may come in future.
c) I will create a demo on how to achieve this with toggleSeries() method. There is a bug which needs to be fixed before this.

'Total Label' is working fine in my charts.
Thanks.


(stable) support for multiple artifact version in the same stage

I have been thinking about using GTO in a data registry (if data used in ML model training). For these purposes, I find the support of multiple versions in the same stage quite handy.
Reasoning:
Machine learning models are implicitly coupled with data engineering pipelines that produce their features (and other pipelines which produce labels for training in situations where this is not done manually). It is crucial to keep the features in training in sync with those used in production, so it is a good idea to version the datasets used in training with the versions of the relevant data engineering pipeline. So far so good, GTO can do this and one stage per version is sufficient.
However, this coupling also means that ML experiments really already start at the data engineering level. For example, I might have an idea that a specific new aggregation of a customer's purchasing history might be a beneficial new feature for our model(s). So I create a new feature branch of our data pipeline where I implement this new feature. This pipeline also generates a new version of a training dataset which is assigned (e.g.) to  "dev" stage in the data registry. A colleague has a similar idea and wants to test out her new feature at the same time. Now we end up with 2 dataset versions in "dev" (or 3 in case we don't use a kanban workflow and the dataset generated by the current production data pipeline is also assigned to "dev"). This is fine - we don't want to pollute our production data pipeline with new transformations (which create those new features) unless we can show they are be useful for anything. But to show that we need to be able to run ML experiments with those "candidate" datasets.

Linking some issues where we've discussed this in the past:

https://github.com/iterative/gto/issues/68
https://github.com/iterative/gto/issues/191

сс @omesser @dmpetrov - this is basically a request for "Free-form labels mechanics" instead complimentary to "Envs mechanics" we have in place. I made it in fact possible in CLI with some optional args, see this README section for an example.
@tibor-mach, is it enough now currently? I mean, is it ok to provide this option (--versions-per-stage) each time in gto show? As I see this, it may not be enough in case you want to have both current approach and "Free-form labels mechanics" approach used, then you need to somehow distinguish between them.

@aguschin hmm, I can imagine using both approaches as you mention. Although to me, those would then probably be two conceptually different registries...mixing both approaches in a single registry with a single gto instance seems kind of messy, sort of like mixing gitflow and trunk based development in a single repository. It might make sense to use both approaches by different teams or to handle different types of artifacts but then I'd like to see it separated into different repositories.
So I think having an option to enable this workflow is enough (at least for me). The main reason why I brought this up was to add an argument to the discussion for why this is a valid option and so should not be outright deprecated. The kanban-style GTO also makes sense as an option, I'd say.


Reject All Link like c-settings

Hi,
I would like add link to reject all into description section.
Can you add function like data-cc="c-reject-all". For generate this link.
Thankx

Hi @pitr82,
this was implemented in #170 and will be included in the v2.8 release. You can use any link/button with the following attribute data-cc="accept-necessary"
The new data-cc values have yet to be documented

Hi @orestbida ,
thanks for great news.


Pop up for unsupported browsers

Needs to create a popup for unsupported browsers

@sirpy

https://xd.adobe.com/view/2ad1d496-941b-40d6-68dd-702786054c51-5ce0/

shouldn't it say use chrome or safari? also it might work, don't we want to
just suggest to the user to switch?

@sirpy  How soon can we know if it's working or not? if it's fast, we can show this screen after the regular splash screen.
If the answer is only during the use of the wallet, then I prefer that they'll switch now instead of getting stuck in a crucial action.
Also, we have 4% Firefox and 1% Opera, I don't think we should limit them.

we dont have a way of knowing
i just said that maybe the message should be

suggestion and not enforcement
say which browser they should use, ie chrome/safari

yeah just change to try using chrome or safari @LiavGut

Sorry, but I don't understand it.
Either we're supporting these browsers or we don't, "maybe" is not a clear message for the user.
This screen will always be shown at the Wallet launch when using other browsers than Chrome or Safari? How can a user know when he's stuck because of the browser?

@sirpy We decided not to take a chance and not to allow access with unsupported browsers.
So this is the updated screen:

@LiavGut @tomerGD
I'm not aware of any site the blocks you because of your browser. they always say you need to use browser X.
Because we didnt and can't test all browsers, we simply dont know if they will work or not, so we can say "some functionality may not work, we recommend X"
The only thing we do know for sure is that for Camera (FV/QR) to work on IOS they MUST use Safari

2 options:

on iOS:

@sirpy @tomerGD
Since Tal had decided that on demo stage we can limit access to only supported browsers,
we can move on with this ticket.

@sirpy UPDATE:
add a popup after "Let's Start" screen in the signup flow (Only for users with unsupported browsers, ie. not Chrome or Safari and who are not iOS users)
https://xd.adobe.com/view/9641eba6-7b7b-469d-b3f8-ddaacbc2b87d-c312/


Set client_max_body_size and other Nginx configrations

I need to add a client_max_body_size  10000m; to one of my proxy hosts, but there seems to be no obvious way to do it. I tried adding it directly to the .conf file, but it did not work.

At the moment you can't. But I'll convert this to a future feature.

At the moment you can't. But I'll convert this to a future feature.

So what is the work around for this? My nextcloud photo uploads are so slow.

I also have a lot of customisations in nginx.conf file (e.g. add_header, ssl_, gzip_, proxy_, auth_basic_ etc.). Not being able set it manually in the Manager is stopping me from moving to here. Otherwise, idea/app is brilliant. Thanks.

Hey
Great app so far!
I also need to edit the nginx.conf and add
client_max_body_size 0
to prevent a timeout while uploading a lot of data at once
Seems like the nginx.conf is not part of the mountable /conf folder. Is there any way to edit the nginx.conf via SSH opening a bash in the container?

For the time being here's a hack:
Connect to your already running NPM container with
docker exec -ti name_of_container bash

and then
cp /etc/nginx/nginx.conf /data/nginx/`

So what you just did was enter the running container filesystem and copy the built-in nginx.conf file to your mounted data folder.
Now you have to bring down your docker containers and forcibly mount the nginx.conf file over the top of the built in one. You'll have to edit your docker-compose.yml file or however you run your container to mount it:
  app:
    image: jc21/nginx-proxy-manager:latest
    restart: always
    ports:
      - 80:80
      - 81:81
      - 443:443
    volumes:
      - ./config.json:/app/config/production.json
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
      - ./data/nginx.conf:/etc/nginx/nginx.conf
    depends_on:
      - db

Make changes to your version of the config and restart the container to take effect.

@niklasdahlheimer I added client_max_body_size 0; to the "Advanced" tab and seems to be working just fine for my Nextcloud and Minio services that sit behind my proxy.

@relink2013 @niklasdahlheimer I added client_max_body_size 0; to the "Advanced" tab and seems to be working just fine for my Nextcloud and Minio services that sit behind my proxy.

literally looking this up because I'm having issues where big downloads/uploads getting cut off "mysteriously" on my nextcloud (in unraid) found your settings and copied them over (with some adjustments) and the issues magically went away. :P thanks!
Looks like the advanced tab comes in real handy

No worries @zeighy - I'm glad I was able to be of help 👍

@jc21 Can I add all this to the advanced tab, or it will break things?
This is suppose to be a hardened configuration, ideally this could be configure at some point in the future from the interface with drop down menus, etc and links to the official nginx doc.
`
Basic Proxy Config
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Ssl on;
proxy_redirect  http://  $scheme://;
proxy_http_version 1.1;
proxy_set_header Connection "";
#proxy_cookie_path / "/; HTTPOnly; Secure"; # enable at your own risk, may break certain apps
proxy_cache_bypass $cookie_session;
proxy_no_cache $cookie_session;
proxy_buffers 32 4k;
Custom Proxy config hardening
proxy_hide_header X-Powered-By;
Optional additional headers (All disabled by default)
https://gist.github.com/plentz/6737338
add_header Content-Security-Policy "upgrade-insecure-requests";
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Cache-Control "no-transform" always;
#Change due to nextcloud from same-origin to no-referrer
add_header Referrer-Policy no-referrer always;
#add_header Referrer-Policy "same-origin" always;
add_header X-Robots-Tag none;
#add_header X-UA-Compatible "IE=Edge" always;
protocols
ssl_protocols TLSv1.2;
ssl_prefer_server_ciphers on;
#ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
Custom settings hardening
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
HSTS, remove # from the line below to enable HSTS
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
Optional additional headers (All disabled by default)
https://gist.github.com/plentz/6737338
add_header Content-Security-Policy "upgrade-insecure-requests";
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Cache-Control "no-transform" always;
#Change due to nextcloud from same-origin to no-referrer
add_header Referrer-Policy no-referrer always;
#add_header Referrer-Policy "same-origin" always;
add_header X-Robots-Tag none;
#add_header X-UA-Compatible "IE=Edge" always;`


Accept accept header to readiness probe

Readiness probe was broken for user-java ... java needs an accept header

Can one of the admins verify this patch?


Crowdin Integration

I have tried to access the configuration in Crowdin to edit it but it says I can't edit because the integration wasn't set-up by my user. @sandygudie sorry, can you look into it - to change the branch, pls?

It's done @BatoolMM

Thank you Sandy 🙏


acmetool: accept new terms of services

closes #275

Ah, TLS cert couldn't be issued because I reset the acme state, but the CAA record still belonged to the acme state of the previous VM. I manually fixed the CAA record on ns.testrun.org and restarted the CI run.


Hide supressed problems

Describe the bug
In zabbix 6.2+ there is an option to suppress a problem for a certain time but they are still showing in grafana.
Expected behaviour
Should be able to suppress problems from grafana and also be able to show/hide suppressed problems in grafana problems panel.
The same way that acknowledge works today.
Screenshots
Missing settings for suppressed problems

image from zabbix showing both ack and suppress

Network data
If it's related to metric data visualization would be great to get the raw query and response for the network request (check this in browser dev tools network tab, there you can see metric requests, please include the request body and request response)
Software versions

Grafana
Zabbix
Grafana-Zabbix Plugin

9.2.3
6.2.4
4.2.10

he currently is suppressing on the host level, not on the individual event level. its a simple fix that I have raised a few times in the past.


There is no license

There is no copy of the applicable license(s), for either the bookmarklet generator itself (convenient), or for Svelte or Vite (required—see the software license terms: MIT License).

Many thanks for the reminder. Done https://github.com/ceritium/bookmarklet-generator/blob/master/LICENSE


Alternativ_to uploded

alternative_to.py ready for code review

Cannot use it, it has a flawed methodology and doesn't meet functional requirements


Xcribe breaks when there is no pipelines configured

The line https://github.com/brainn-co/xcribe/blob/master/lib/xcribe/conn_parser.ex#L74 assumes that it would always have a pipeline for the endpoint. For that reason when there is no pipelines for the endpoint.
1) test GET /version show version (MyAppWeb.VersionControllerTest)
test/yield_web/controllers/version_controller_test.exs:7
** (FunctionClauseError) no function clause matching in Xcribe.ConnParser.resource_group/1

The following arguments were given to Xcribe.ConnParser.resource_group/1:

    # 1
    %{conn: nil, log: :debug, path_params: %{}, pipe_through: [], plug: MyAppWeb.VersionController, plug_opts: :show, route: "/version"}

Attempted function clauses (showing 1 out of 1):

    defp resource_group(%{pipe_through: [head | _rest]})

code: ConfigHelper.with_config(:version, "0.0.1", fn ->
stacktrace:
  (xcribe 0.7.3) lib/xcribe/conn_parser.ex:74: Xcribe.ConnParser.resource_group/1
  (xcribe 0.7.3) lib/xcribe/conn_parser.ex:42: Xcribe.ConnParser.parse_conn/3
  test/my_app_web/controllers/version_controller_test.exs:14: anonymous fn/1 in MyAppWeb.VersionControllerTest."test GET /version show version"/1
  (my_app 0.1.0) test/support/config_helper.ex:7: MyApp.ConfigHelper.with_config/3
  test/yield_web/controllers/version_controller_test.exs:8: (test)

The only formatter that uses resource_group is :api_blueprint.
I will pick this issue. (may I? :smile:)


Stop an action from an event

Is it possible to stop some action from it's event?
Example: stop the actual renaming of a node from the rename_node event? Maybe returning false or stopping the event somehow?

No, the event fires after the actual change. The only place you can stop modifications to the structure is the core.check_callback config option.
Best regards,
Ivan


Cropped Logging Report

Hi,
Not sure if this is a problem with the script logging or how the mod sends its logs to script logging but when I check for teaming via party mod logs in said file I only appear to be able to get a part of the party instead of the entire player lists. It gives me 5/6 parties but always ends with half a BI ID.
Each log instance is 1,023 long rather than the x amount.
Curious if you might know a work around or whether it just is what it is.
Thanks in advance.

That's a known issue. The log lines are truncated.

Damn, thanks for the reply mate. Keep up the good work.


Ensure SSO required attributes are present

This is in lieu of GDS-SSO's User module asserting on the presence of
its requisite fields upon inclusion. I'm going to make the
aforementioned change to GDS-SSO separately so for now this spec
guarantees the required attributes are present in this project's
datastore.
Also adds the missing disabled field declaration whose absence caused
issues upon deployment to production.

@boffbowsh


Trim System.Title if length is > 128

Summary of the Pull Request
Trim System.Title when longer than 128 characters. Trims some extra characters to append the first 8 chars of the title hash for collision avoidance.
We probably want to write the full System.Title value somewhere in the bug so that the trimmed information isn't just lost.
What is this about?
https://github.com/microsoft/onefuzz/issues/3015
PR Checklist

[ ] Applies to work item: #xxx
[ ] CLA signed. If not, go over here and sign the CLI.
[ ] Tests added/passed
[ ] Requires documentation to be updated
[ ] I've discussed this with core contributors already. If not checked, I'm ready to accept this work might be rejected in favor of a different grand plan. Issue number where discussion took place: #xxx

Info on Pull Request
What does this include?
Validation Steps Performed
How does someone test & validate?

Codecov Report

Merging #3284 (ff454bb) into main (d5b2a33) will increase coverage by 2.67%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main    #3284      +/-   ##
==========================================
+ Coverage   29.66%   32.34%   +2.67%
==========================================
  Files         333      180     -153
  Lines       39377    22903   -16474
==========================================
- Hits        11680     7407    -4273
+ Misses      27697    15496   -12201

see 155 files with indirect coverage changes

Agree about this:

We probably want to write the full System.Title value somewhere in the bug so that the trimmed information isn't just lost.

Could we add an additional field to the template for the full title and always include it?

Could we add an additional field to the template for the full title and always include it?
Something like a unique field with the full title in it? Where are these and the other non-custom fields visible?

Could we add an additional field to the template for the full title and always include it?

We can probably put it at the top of the bug's "Repro Steps". I don't think we have much control over the fields since they're org specific.

Sorry, I was imprecise here, I meant a variable for the Scriban template to render, not the ADO fields.

@Kananb how did we decide on the 128 char limit?

@kananb how did we decide on the 128 char limit?

https://github.com/MicrosoftDocs/azure-devops-docs/issues/5890#issuecomment-539632059


Android 12 Emojis

On android 12 package emoji looks like this:

But here package emoji is from android 8.0:

The update to the new google emojis shipped in Android 12 is part of #201

this is now released in version 14.0


CustomHidDeviceAccess

can not find HID device
select HID Device is empty

Please use the issue template so we can collect further information. Which sample are you reporting an issue with? What version of Windows are you running the sample on? Is this a bug with the sample or a bug with the OS?


Move CLI interface into cleanlab_studio.cli module

This patch prepares the code for the addition of a Python library interface. With that change, only stable APIs should be exported by the cleanlab_studio package, with the exception of the cleanlab_studio.cli and cleanlab_studio.internal modules. For now, basically all the code has been moved into the cli module; as the Python library interface is developed, common functionality will be pulled out of there and into internal.
Depends on #48

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


 My idea was use regex to spot which messages match spelling, the add them to a constant variable object by pushing the message id as key and the designation of the messages as value.
Actual behaviour:
It seems to skip a message when send by the same person.
An example of a twitch chat
twitch_user : I
twitch_user : I
another_twitch_user : Hello!
twitch_user : I
Script Output :
{
'ea9d46fb-e546-4177-b832-de8af1a1391a': 'I',
'8bb27e58-9452-4ba6-b50a-e44f74941ec8': 'I'
}
Problem : The middle "I" is skipped while the other 2 are added to the object as expected.
When I try to output the message id to the console, the message id changes with each message.
client.on("message", (channel, userstate, message, self) => {
	if (self) return;

	switch(userstate["message-type"]) {
		case "chat":
			if(i_character.test(message)) {
				if (!entries.hasOwnProperty(userstate.id)){
					Object.assign(entries, {[userstate.id]: "I"});
				}
			}
               break;
	}
});

Expected behaviour:
I would like for new messages that match that regex to be pushed into this constant object every single time.
Error log:
{
  'ea9d46fb-e546-4177-b832-de8af1a1391a': 'I',
  '8bb27e58-9452-4ba6-b50a-e44f74941ec8': 'I'
}

Server configuration

Operating system: MacOS Big Sur Version 11.0.1
Node version (if applicable): v15.3.0
NPM version (if applicable): 7.0.14
tmi.js version: 1.5.0

You may have a case of duplicate messages not being sent by "twitch_user". I'm not sure how you're doing your testing. 🤷
You probably don't need to test the message-type of the message. If you're pulling that from documentation that was just demonstrating how to differ between types of messages. You'll probably want to compare action messages too and whisper messages will be difference in other ways. You'd be trying to moderate the broadcaster from a whisper which you could otherwise ignore. (Especially with such low usage).
client.on('message', (channel, tags, message, self) => {
    if(self) return;
    if(regex.test(message)) {}
});

A Map object map be more suitable than overengineering assigning to an object.
This doesn't seem to be an issue with tmi.js so I'm going to close it.


Upgrade OpenCV 3.4.1

https://opencv.org/opencv-3-4-1.html
Don't forget CUDNN and all optimizations...

 Migration to CoreOS


Network list on Settings should be expanded by default

Network list on Settings should be expanded by default.
DOD:

When the user opens the Networks setting network lists (enabled and disabled) should be expanded by default.
When the user makes a search then then network lists should be expanded

As I said to Yaroslav, I think this is not right. as a user, I would expect disabled networks to be out of the way.
In any case this is addressed in https://github.com/novasamatech/nova-spektr/pull/1474

It was discusses with Yaroslav and design team. Network lists should be expanded by default.

I read it right, and this doesn't make sense to me :) I give arguments too. Why would users want to have the disabled networks still expanded if they manually disabled them.
The linked PR does what this issue asks for. As I said, I won't die on this hill, I can agree to disagree, but there is no argument in this issue that tries to convince me why this is good.

The approach with expanded list was designed and researched by UX team. It was an original business requirements. UX team is going to create a tech debt in their backlog and make research later.


Uploading to cloud

When you take a new photo, that new photo is displayed in the application but isn't uploaded to the cloud until you next open the application leading to desync across devices.

Closing for now as I cannot replicate the issue and am waiting for logs. I'll reopen the issue when i receive application logs


[Test] Exam management tests

Motivation and Context

We want to add End-to-End tests to test exam functionality in Artemis.
Description

This PR adds tests, which verify that the exam creation and deletion via the UI works. Furthermore the test adds functionality to create exams via request, so that other E2E tests can quickly generate exams in their setup phase. This will be the base for all other exam related E2E tests.
Steps for Testing

Configure the adminUsername/adminPassword in cypress.env.json for your testsystem of choice
Set the baseUrl in cypress.json to the url of your testsystem of choice
Execute yarn cypress:run --spec src/test/cypress/integration/ExamManagement.spec.ts (Adjust / to \ if you are on Windows)

The bamboo buildplan will execute the tests against ts3, so it is best that you verify that the tests run there. I executed this PR with the testing buildplan and all tests passed. If you need help with configuring the test credentials feel free to write me.

Tests still pass with the latest merge


Add connection types to policy object

cc @luacmartins
Details

Fixed Issues

$
PROPOSAL:
Tests

[ ] Verify that no errors appear in the JS console

Offline tests

QA Steps

[ ] Verify that no errors appear in the JS console

PR Author Checklist

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

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

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

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

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

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

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

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

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

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

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

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

[ ] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[ ] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[ ] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[ ] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[ ] If the PR modifies the form input styles:

[ ] I verified that all the inputs inside a form are aligned with each other.
[ ] I added Design label so the design team can review the changes.

[ ] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[ ] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native

Android: mWeb Chrome

iOS: Native

iOS: mWeb Safari

MacOS: Chrome / Safari

MacOS: Desktop

@yuwenmemon @francoisl I need some help figuring out exactly what we want to define here for the connection types. I know we have a ton of different connections, and the data is going to be different for each one. I guess we need to decide what can be generic for all types, what is specific to different connections, how general or how defined we want to make the TS definition. It could be a wild rabbit-hole to go down.

@luacmartins Regarding my previous comment about TS types for the full connection data, maybe it's best at this time to just return the connection names (or just use very generic types). Once we actually start utilizing the connection data, it will be much easier for the full types to be defined then. What do you think?

That makes sense. I think we can go with a generic type for now since none of these data is used yet (we just need to know that we have the connections) and then define the types later.

Ha yeah it's a deep hole for sure 😂
There is a common structure at the root, such as accountID, config.autoSync, and maybe some others I'm missing - but they end up diverging for the most part. Agreed it's probably fine just to keep it generic for now and refine it later as we add integrations in.
For identifying the common root properties I would compare a QBO connection and a NetSuite connection as they are wildly different aside from only a few keys.

Reviewer Checklist

[ ] I have verified the author checklist is complete (all boxes are checked off).
[ ] I verified the correct issue is linked in the ### Fixed Issues section above
[ ] I verified testing steps are clear and they cover the changes made in this PR

[ ] I verified the steps for local testing are in the Tests section
[ ] I verified the steps for Staging and/or Production testing are in the QA steps section
[ ] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[ ] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[ ] I checked that screenshots or videos are included for tests on all platforms
[ ] I included screenshots or videos for tests on all platforms
[ ] I verified tests pass on all platforms & I tested again on:

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

[ ] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[ ] I verified proper code patterns were followed (see Reviewing the code)

[ ] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[ ] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[ ] I verified that comments were added to code that is not self explanatory
[ ] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[ ] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
[ ] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[ ] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[ ] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[ ] I verified the JSDocs style guidelines (in STYLE.md) were followed

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

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

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

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

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

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

[ ] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[ ] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[ ] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[ ] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[ ] If the PR modifies the form input styles:

[ ] I verified that all the inputs inside a form are aligned with each other.
[ ] I added Design label so the design team can review the changes.

[ ] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[ ] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[ ] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: Native

Android: mWeb Chrome

iOS: Native

iOS: mWeb Safari

MacOS: Chrome / Safari

MacOS: Desktop

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

🚀 Deployed to staging by https://github.com/yuwenmemon in version: 1.4.40-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
failure ❌

🚀 Deployed to production by https://github.com/mountiny in version: 1.4.40-5 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
failure ❌

🕸 web 🕸
failure ❌


WIP: Support version 2.0 of the MongoDB driver

Q
A

Type
improvement

BC Break
no

Fixed issues

Summary
The 2.0 release of the PHP driver will mainly remove deprecated functionality, which was already removed in a previous pull request. This PR adds a separate build job to test the ODM with version 2.0 of the extension and library to ensure everything continues to work. The goal is to support both versions of the extension at the same time to make upgrading easier.

Note: static analysis will be red until we figure out how to best handle multiple driver versions in Psalm and PHPStan.


Added Palworld Support and Tested on Steam

Steam Save File location is here: C:\Users\YOUR_NAME\AppData\Local\Pal\Saved\SaveGames
Replace and rename each file with the ones generated by XGP

Thanks!

What does replacing and renaming each file mean? There are some folders I can go farther into, Do I? Sorry if these are stupid questions!

@maxfruity the files generated by XGP have a bunch of characters
Example: ACF08C2F486764723D034393783D3B71-Players-00000000000000000000000000000001.sav
When you navigate to the steam player folder you really only see "00000000000000000000000000000001.sav"
So rename the XGP file to match the steam one and repeat this process for all other files

I made a small change to the Palworld save handling, it now creates the directory structure, so there should be no need to rename files. Check out https://github.com/Z1ni/XGP-save-extractor/releases/tag/release-2024-01-21.


Why does the client have so many (64) resident threads in Runnable state?

Why does the client have so many (64) resident threads in Runnable state?
thread dumps are like below：
at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)           at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)           at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93)           at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)           - locked [0x00000006c0c4cf40] (a            org.apache.skywalking.apm.dependencies.io.netty.channel.nio.SelectedSelectionKeySet)           - locked [0x00000006c0c4d030] (a            java.util.Collections$UnmodifiableSet)           - locked [0x00000006c0c4cf58] (a sun.nio.ch.EPollSelectorImpl)           at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)           at            org.apache.skywalking.apm.dependencies.io.netty.channel.nio.SelectedSelectionKeySetSelector.select(SelectedSelectionKeySetSelector.java:62)           at            org.apache.skywalking.apm.dependencies.io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:824)           at            org.apache.skywalking.apm.dependencies.io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:457)           at            org.apache.skywalking.apm.dependencies.io.netty.util.concurrent.SingleThreadEventExecutor$6.run(SingleThreadEventExecutor.java:1044)           at            org.apache.skywalking.apm.dependencies.io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)           at            org.apache.skywalking.apm.dependencies.io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)           at java.lang.Thread.run(Thread.java:745)

As log shows, this is related to netty/gRPC.

emm，can i modify the number of these threads？
---Original---
From: "吴晟 Wu @.>
Date: Wed, Apr 21, 2021 22:09 PM
To: @.>;
Cc<EMAIL_ADDRESS>Subject: Re: [apache/skywalking] Why does the client have so many (64) resident threads in Runnable state? (#6797)
As log shows, this is related to netty/gRPC.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.

I think we don't set it manually.