Local backend breaks and gets notification when remote backend "is experiencing a major incident"

As I write this issue, GitLab (my remote backend) has a specific problem, and thus Sveltia CMS warns me that "GitLab is experiencing a major incident" (which is very nice, by the way). As I'm working on a local server, Sveltia CMS offered me to use local or remote backend (as of v0.35.0). But when I connect to local, the same notification appears: "Local Repository is experiencing (...)", with a link to about:blank. Worse: I can't edit any item of any collection, be it file or folder collection (although I can change between collections, trying to enter the editor does nothing, and JS Console is empty).

(Sorry, I was eager to test v0.35.0, but (perhaps luckily) faced this problem...)

Thanks for catching this. Will fix.

Worse: I can't edit any item of any collection, be it file or folder collection (although I can change between collections, trying to enter the editor does nothing, and JS Console is empty).

Hmm, I’m not able to reproduce the problem. Sveltia CMS could disable editing functionality in case of a major incident, but I haven’t implement it; instead, it just shows a notification as you see. Not sure why this happens 🤔

The incident notification is now hidden with the local backend as of v0.35.1. Let me know if the editing issue still happens.

The editing issue has gone as well. Sorry for not having more evidences of it, the console was empty when it happened. Anyway, thank you for the fast correction!

No worries, thanks for verifying the fix!


SPIKE: BUG: Connection to DB reset by peer after PROD deploy

Description
We are seeing connections reset because we are very likely improperly shutting down our ECS tasks. We fall into the trap specifically called out in an AWS Blog regarding, "One PID to rule them all". That blog expertly paints a picture that matches our setup and the problem we face.
To fix this issue we need to implement the suggestions listed in the blog or any other approaches that will fix the core issue: non-graceful shutdowns. There are many possible options, so this spike should investigate options and create a follow-on ticket for implementation based on what is found during this spike.
Note: Significant time was spent to make it to this point in our understanding, so this spike is pointed higher than normal.
Steps to Reproduce
Any deploy action with active requests should replicate this issue.
Workaround
A potential workaround (short-term) may be to change the deregistration delay of the ECS task to 25 seconds so most requests would finish processing. If the SIGKILL signal comes 30 seconds after the SIGTERM and the SIGTERM signal is sent at the same time as a deregistration delay, we can deregister new requests 25 seconds into the SIGTERM, so all new requests are routed to the new tasks. This is only possible if our tasks take less than 25 seconds to start, and we would have to monitor that moving forward.
Impact/Urgency
High impact/urgency. A variety of scenarios can result in this unplanned termination such as data not making it to the database, delivering email/sms not making it all the way through, persistent notifications not getting set, etc. This has drastic consequences.
Expected Behavior
We expect that tasks in work will not just stop running. The purpose of this bug spike is to identify a path to move forward. New ticket(s) must be created to implement a fix for this bug.
Acceptance Criteria

[x] Root cause is known
[ ] Additional ticket(s) to resolve the issue have been created

QA Considerations
For QA to populate. Leave blank if QA is not applicable on this ticket.
Additional Info & Resources

Timebox
The remaining work (investigation and ticket creation) should be limited to a day or two.

These connection resets happened yesterday around noon again, this time with v1.6.0 in master. I am inclined to believe this was not the root cause of the deployment issue.

FYI - the connection reset by peer appears to be related to deployments, where the celery workers are spun up and down. we can probably remove the high priority label. Most likely related to failing to shut down properly.

Been tracking this down. Really dug into how our system starts up, how the workers execute and what SIGTERM would do in our system. Was able to replicate the environment with a local substitute that sufficiently demonstrates what happens when a SIGTERM is sent (using kill -15 PID)

From the image we can see that ddtrace-run passes along the SIGTERM. However, what can't be seen from the image is that the termination is instant. So I have confirmed that our gunicorn workers are getting the SIGTERM signal, we just need to handle it better.
This last image shows that -15 is the SIGTERM (-9 is SIGKILL).

Worker deployed (forced redeploy) with exec at 19:45:35:

Graceful shutdown signal received at 19:47:29:

Actual shutdown method getting called:

So calling the celery worker with exec passes the SIGTERM to it. Also, seems our concurrency setting is the number of workers. I was under the impression concurrency was threads, but it seems it is processes.

So each concurrency value is another process, not a thread to do work. That's a big deal. Essentially means we can scale that instead of calling more worker commands. Tested, and it is working as expected (tested by running the regression suite):

Would need actual stress testing to identify what values the workers should be set to. Also, didn't test multiple worker pools because that's outside the scope of what I was doing. The only reason I touched them at all is because as I was waiting for deploys I read up on it and it was an easy change for the next test, so I changed it.

I investigated the connections being "reset by peer" and it does not appear to be the root of the references not being saved during deploys. The flask-sqlalchemy documentation states that our session lasts so long as the app has context. So I'm inclined to believe that the errors are thrown because when our application exits it terminates the connection but RDS doesn't appreciate the way it does it.


Feature request: Select payload subset without JMESPath

Use case
Executing jmespath on every request just to select part of the payload seems like overkill. It would be easier to express this selector with a simple function instead and would avoid the overhead of jmespath
Solution/User Experience
Allow passing a function to select the idempotency key instead of using jmespath
The example from the docs could be easily expressed as
const config = new IdempotencyConfig({
  eventKeyFn: payload => payload?.headers?.['X-Idempotency-Key'],
});

Ideally make jmespath an optional dependency too.
Alternative solutions
No response
Acknowledgment

[X] This feature request meets Powertools for AWS Lambda (TypeScript) Tenets
[ ] Should this be considered in other Powertools for AWS Lambda languages? i.e. Python, Java, and .NET

Future readers
Please react with 👍 and your use case to help us understand customer demand.

Hi @rjmackay thank you for taking the time to open this issue.
We have opted for using JMESPath expressions because it’s one of the standard query languages for JSON structures and believe that it can cover both simpler and more complex use cases effectively and efficiently.
Most JMESPath implementations including the one we are currently using (jmespath), the one you suggested in the linked issue (#1645), and others from other languages like Python, all follow a similar call order that allows to cache operations and speed up repeated expressions.
For example, here’s a diagram of how JMESPath implementations evaluate a request:
flowchart LR
    A[Take expression] --> B{Has cached expression}
    B -->|Yes| C[Apply expression]
    B -->|No| D[Create AST for expression]
    D --> C
    C --> E[Return result]

Whenever you provide a JMESPath expression (i.e. foo.bar) and a payload (i.e. the request), the module creates an AST (Abstract Syntax Tree) of the expression, which is then used to visit the payload using an implementation of a Pratt Parser (aka top down precedence). The AST generated by an expression is also often cached in memory so that all subsequent evaluations can reuse the AST and only need to actually extract the data.
On top of the above, many implementations allow you to also parse an expression beforehand so that the corresponding AST is already in the cache when the first request is parsed. Doing this outside of the Lambda handler would ensure that this is taken care of during the function's initialization.
With these considerations in mind, the main difference in terms of operations between using a JMESPath library vs bringing your own function resides purely on the respective implementations.
As mentioned earlier JMESPath uses the abstract tree created from the expression to visit the payload and extract the corresponding data.
Let’s take a high level look at how the parser works, and how the object is visited using your example and assuming a payload that looks like this:
{
  "headers": {
    "X-Idempotency-Key": "foo"
  }
}

With this payload the corresponding JMESPath expression to extract the header you want would be headers."X-Idempotency-Key", which once parsed, produces this AST:
{
  "type": "subexpression",
  "children": [
    {
      "type": "field",
      "children": [],
      "value": "headers"
    },
    {
      "type": "field",
      "children": [],
      "value": "X-Idempotency-Key"
    }
  ]
}

Using this abstract tree, the module visits the payload and extracts the data in almost the same way that you described, which corresponds to the following (simplified) pseudo execution stack:
1. starting payload
{
  "headers": {
    "X-Idempotency-Key": "foo"
  }
}

2. apply field.headers expression
{
  "X-Idempotency-Key": "foo"
}

3. apply field."X-Idempotency-Key" expression:
"foo"

You can see that this is the case in all the implementations I mentioned:

jmespath (JS) - see here
jmespath-ts (JS) - see here
jmespath (Python) - see here

So to sum up: even for simple cases like the one you describe the two implementations are equivalent and if performance on the first request is a concern, you can pre-compile an expression so that the AST is generated during the initialization phase.
Having the support of an expressive query language like JMESPath however also allows you to easily adapt to different use cases as your workload evolves.
While it’s true that for a simple field extraction an arrow function might be tempting, if your payload becomes more complex, or you want to query data in a more involved way like extracting multiple fields or applying logical operators then you don’t have to reimplement your own parsing function and you can just write a JMESPath expression that will do all that for you.
I hope this clarifies why we stand behind the choice of using JMESPath.


E5108: lib/popup.lua:95: attempt to call a table value

After upgrading Neogit  to https://github.com/TimUntersberger/neogit/commit/467d64d8f4e3018a8742aa152ed5e2c83c3bbef0 I cannot open any popups, getting this error message:
E5108: Error executing lua ...m/site/pack/packer/start/neogit/lua/neogit/lib/popup.lua:95: attempt to call a table value

Tried without passing any configuration to Neogit's setup function, made no difference, still errors.
Just upgraded nvim to v0.6.0-dev+eece0735f, still the same.

I cannot reproduce this.
Can you try completely removing neogit and then installing it again?

Thanks Tim, unfortunately that did not help. To give you more input, when I open :Neogit and subsequently press 'p' I get:

an empty popup window and error message.

I actually have the same issue :shrug:

This happens to me as well, but it only happens on a freshly initialize neovim session. After I have loaded a file then it works fine. Not sure why.

For me it happens with loaded file or without.

This is very weird.
@gegoune can you try cloning the repo and use the local version? That is the only difference I can think of.

Just did(90b1901774c11b86f3d36f7d17803125bfbe82b8), also reverted my custom configuration and just called setup({}). Removed diffview too - still erroring on any popup.

@gegoune sorry for the inconvenience, but can you try running a minimal vim config? So basically with only neogit installed.
Also which operating system are you using? Does an older nvim version or neogit version work for you?

@TimUntersberger Not an inconvenience at all. Super happy to help. Tried with this minimal config and got:
local fn = vim.fn

local install_path = "/tmp/site/pack/packer/start/packer.nvim"
if fn.empty(fn.glob(install_path)) > 0 then
  vim.api.nvim_command("!git clone https://github.com/wbthomason/packer.nvim " .. install_path)
end

vim.opt.termguicolors = true
vim.opt.packpath = "/tmp/site/pack/packer"
vim.opt.runtimepath = install_path
vim.opt.runtimepath:append "/usr/local/Cellar/neovim/HEAD-eece073/share/nvim/runtime"

require("packer").startup {
  function(use)
    use { "wbthomason/packer.nvim" }
    use { "nvim-lua/plenary.nvim" }
    use { "TimUntersberger/neogit" }
  end,
  config = { package_root = "/tmp/site/pack" },
}

require("neogit").setup {}

Error executing luv callback:
...acker/start/plenary.nvim/lua/plenary/async_lib/async.lua:14: The coroutine failed with this message: ...ite/
pack/packer/start/neogit/lua/neogit/lib/git/diff.lua:66: attempt to index a nil value

at startup. This is also happening with my regular config I believe.
I know it's not the same error message, an update might have introduced it since my last report.

I was having the same issue. Got fixed after restarted I nvim, don't know what triggered that error.

Interesting, restarted all my instances and now I am not getting async error on my regular config but minimal one still errors the same.

I'm getting the same error so I did a bit of testing. Plugin works fine until 425d84ce1c3346a5fb47470ee6e2155c7172ff7e, loading 658386fe8bd62a3f4a7c3dcda2dbd1fc251997d4 breaks it and causes the error.

Error executing luv callback:
...acker/start/plenary.nvim/lua/plenary/async_lib/async.lua:14: The coroutine failed with this message: ...ite/
pack/packer/start/neogit/lua/neogit/lib/git/diff.lua:66: attempt to index a nil value

Added a small safeguard in the latest version. If you encounter an error with the message "TODO: diff parser", please post your :messages (the previous message to be more exact)

I'm getting the same error so I did a bit of testing. Plugin works fine until 425d84c, loading 658386f breaks it and causes the error.

@Shrimpram which error are you talking about?

Error executing luv callback:
...acker/start/plenary.nvim/lua/plenary/async_lib/async.lua:14: The coroutine failed with this message: ...ite/
pack/packer/start/neogit/lua/neogit/lib/git/diff.lua:66: attempt to index a nil value

@gegoune Added a small safeguard in the latest version. If you encounter an error with the message "TODO: diff parser", please post your :messages (the previous message to be more exact)

Just updated. Had to make couple of changes to get it to work:
-      inspect(header)
-      error("TODO")
+      vim.inspect(header)
+      -- error("TODO")

and with that I got that header:
{ "diff --git a/nvim/minimal.init.lua b/nvim/minimal.init.lua", "new file mode 100644", "index 0000000..e69de29" }

this is untracked file if it makes any difference.

this is untracked file if it makes any difference.

If the file is untracked, why is it then in the diff? Can you paste me the whole diff is possible?

That was the only line printed to :messages.
I just tried different repository and not getting that async error there, but back to
E5108: Error executing lua ...m/site/pack/packer/start/neogit/lua/neogit/lib/popup.lua:95: attempt to call a table value

when trying to open popups.
When I try to get history with $ it also errors with
E5108: Error executing lua .../start/neogit/lua/neogit/buffers/git_command_history.lua:58: attempt to call a table value

What else can I check to help identify the issue?

Can you add the following lines here right before the return statement.
print(vim.inspect(text))
print(vim.inspect(text.highlight("TEST"))

Can you add the following lines here right before the return statement.

I have the same error when pulling/committing
{
  <metatable> = {
    __call = <function 1>,
    __index = <function 2>
  }
}
{
  highlight = "TEST"
}

Exactly the same for me.
{
  <metatable> = {
    __call = <function 1>,
    __index = <function 2>
  }
}
{
  highlight = "TEST"
}
E5108: Error executing lua ...m/site/pack/packer/start/neogit/lua/neogit/lib/popup.lua:97: attempt to call a t
ble value
Press ENTER or type command to continue

I found the problem.
On my machine vim.deepcopy also copies the metatable, but it looks like it doesn't work for everyone ?!?!?!?!?
Can you test the following code:
local tbl = {}
setmetatable(tbl, { __index = { x = 1 }})
print(vim.inspect(tbl))
print(vim.inspect(vim.deepcopy(tbl)))

{
  <metatable> = {
    __index = {
      x = 1
    }
  }
}
{}

Second output table is empty for me

It's the same for me (as per last @xenrox's post) on v0.6.0-dev+eece0735f.

Can you check your local vim runtime files? Maybe you are getting a different version on macos.

This is coming from /usr/local/Cellar/neovim/HEAD-eece073/share/nvim/runtime/lua/vim/shared.lua
function vim.deepcopy(orig) end  -- luacheck: no unused
vim.deepcopy = (function()
  local function _id(v)
    return v
  end

  local deepcopy_funcs = {
    table = function(orig)
      local copy = {}

      if vim._empty_dict_mt ~= nil and getmetatable(orig) == vim._empty_dict_mt then
        copy = vim.empty_dict()
      end

      for k, v in pairs(orig) do
        copy[vim.deepcopy(k)] = vim.deepcopy(v)
      end
      return copy
    end,
    number = _id,
    string = _id,
    ['nil'] = _id,
    boolean = _id,
    ['function'] = _id,
  }

  return function(orig)
    local f = deepcopy_funcs[type(orig)]
    if f then
      return f(orig)
    else
      error("Cannot deepcopy object of type "..type(orig))
    end
  end
end)()

@Shrimpram which error are you talking about?

The one in this issue: E5108: Error executing lua ...vim/site/pack/packer/opt/neogit/lua/neogit/lib/popup.lua:95: attempt to call a table value

I am not a lua expert, but to me it looks like the builtin deepcopy does not copy the metatable: https://github.com/neovim/neovim/blob/master/runtime/lua/vim/shared.lua#L17
A lot of plugins I just looked through (e.g. telescope, snippets) seem to use their own implementation because the original function does indeed not copy metatable: https://github.com/nvim-telescope/telescope.nvim/blob/master/lua/telescope/_compat.lua#L19
Maybe another plugin you are using is overwriting deepcopy?

I am not a lua expert, but to me it looks like the builtin deepcopy does not copy the metatable

You are right! I saw the getmetatable call and thought they would handle this correctly. sorry! 🤦♂

latest version should fix

latest version should fix

Looks good on my side, thanks a lot for your work!

Yay, works again! :) Awesome, thank you so much for the fix and your patience with me, @TimUntersberger!
One issue for me though, seems like https://github.com/TimUntersberger/neogit/blob/5cbbfd2d8fdf5cc1651b9b4ad7930d1e30ea056f/lua/neogit/lib/git/diff.lua#L72 is missing vim., had to fix it locally earlier and it errors again after switching to master:
Error executing luv callback:
...acker/start/plenary.nvim/lua/plenary/async_lib/async.lua:14: The coroutine failed with this message: ...ite/pack/packer/start/neogit/lua/neogit/lib/git/diff.lua:72: attempt to call global 'inspect' (a nil value)

Yeah sorry. This is a function from my own config which I always for debugging and sometimes I forget that it isn't there by default 😆

Ah, sorry, forgot to close it. Thanks for fixing it! It's so amazing to be able to use Neogit again. :)


[Enhancement]: Consolidate Confirm[Swap,Limit,Range,Reposition]Modal

Requirements
Investigate and consolidate as much of the shared aspects of these components and their css.
Figma
No response
Assumptions
No response

Closing as will not complete after investigation

re-opening to capture updates made to the usage of these modals. note: no css was consolidated as part of the ticket


Add standard terms document

I prepared first version of glossary/dictionary/standard terms document (not sure about the name yet) that implements #189. I want to make work in here as transparent as possible to let anyone give some feedback about it in any stage of work. That why I open this PR as soon as possible.
I will fill it with more terms after we agree that this is right way to do it.
Feel free to write some definitions by yourself or to propose something that we should add in here. If you don't agree with some definition I think this is the best place to discuss it. I'm not an SLO expert but I will try to stick to literature linked below terms.
This will be merged as first batch of definitions, in future we can add more definitions as we will need agreement in some kind of discussions.

Over time, the SLO community has created specific terminology. Since not every user coming to projects like OpenSLO knows exactly what everything means we have created a glossary. This glossary should help newcomers understand things that we discuss here and make contributions easier.
In addition, I have created a section with literature that I used to write these definitions. There is a need for a place where we can write down definitions to facilitate easier discussions about subjects and share differing points of view.

Thanks for your input! I applied suggested changes :mechanic:


Dataset is empty

Thanks for the great vuejs compondent.  Is there currently a way to show "No results" if the API response comes back as empty?
Basically, I want to be able to have the table show this if the API response is empty.

Thanks!

@SimplyCorey You can use Pagination Info for that. Also see the Properties in the wiki page for properties related to pagination info.

@ratiw I missed those in the docs.  Thanks!


Vue v-model not working in vscode-text-field

I am using VSCode Toolikit UI with Vue.
I am following the documentation on how to use vscode-text-field and failing to get at the entered data:
It works if I use plan old <input statement  in conjunction with v-model
but not when i use vscode-text-input
I suspect something really obvious is missing but I can't see what that might be.
export default defineComponent({
  components:{},
data() {
  return {
    dj: "",
    user: "",
    pass: ""
  };
},
methods: {
  validate() {
    console.log("user " , this.user);    <=== doesn't display anything
    console.log("password " , this.pass);   <=== doesn't display anything
    console.log("dj " , this.dj);   <==== this works and displays the entered data
    vscode.postMessage({
        command: "hello",
        text: "Input validated",
    })}
  }
})
</script>

<template>

Enter credentials

        <input type="text" v-model="dj"/>
        <vscode-text-field type="text" v-model="user" maxlength="8">Userid</vscode-text-field>

        <vscode-text-field type="password"  v-model="pass">Password</vscode-text-field>

        <vscode-button v-on:click="validate">Accept</vscode-button>

</template>

So, condensing the above:
This works and the resultant input is saved in the variable - dj:
<input v-model="dj"/>
but this fails and nothing is put into the variable - user:
<vscode-text-field name="user">Userid</vscode-text-field>
Variables are defined in:
export default defineComponent({
  components:{},
data() {
  return {
    dj: "",
    user: "",
    pass: ""
  };
},

Further investigation and I find that this "works" but is a bit kludgy:    but this is a 'one way' setting of the value rather than using v-model which is 'two way'.  So again, I suspect that I am missing something rather obvious in my attempts above.

<template>
<vscode-text-field
          maxlength="8"
          @input="handleInput">
          Userid
</vscode-text-field>
</template>

@hawkticehurst any thoughts on this?  thanks!

Hey @davidkjackson54! Thanks for the poke.
Just wanted to quickly chime in to say I have seen this and it's on my to-do list to circle back to, but that might not happen for a while. I've mentioned this in other issues, but the toolkit has been tightly resourced for the last year or so (myself and one other person split our time between this and several other projects). I'm currently focused on another project for the next few weeks so I hope you understand :)
Also, from a quick pass, I, unfortunately, don't have much to offer at this point since I'm not familiar with how Vue's v-model works. The best suggestion I can offer at this point is to look into how v-model should be configured to work with web components (if you haven't already) since I'd wager that's where the high-level issue is coming from

Hi @hawkticehurst . According to the Vue documentation vue doc  it states that :
<input
  :value="text"
  @input="event => text = event.target.value">

The v-model directive helps us simplify the above to:
template
<input v-model="text">

I find that the long winded method above does work but the 1 liner abbreviated method does not work with vscode-text-field
As I mentioned above, if I add a simple html input field such as:
<input v-model="dj"/>
the value entered is correctly placed into the variable - dj
So the probelm is limited to the VSCode UI toolkit use of vscode-text=field

Thanks for clarifying/providing a reference to the docs!
I looked over the docs and did another Google search and I am now feeling very confident that this is still an issue with v-model support for web components on Vue's side. In particular, I found this open issue in the Vue repo discussing how v-model is not supported in another web component library called StencilJS.
Reading through the issue thread, there are a lot of people using even more web component libraries (beyond Stencil) with the same problem. Towards the bottom of the thread there's another linked issue discussing the lack of v-model support on custom elements (aka web components), and this issue was resolved by a PR from Evan You that seems to have fixed this problem (maybe?) –– but only for "declared custom elements".
So googling "vue declared custom elements" brought me to this documentation page discussing Vue and Web Components where it seems like you may have to configure the compilerOptions.isCustomElement option to get things working??
Again, I'm not super familiar with Vue so this is my best guess, but at this point, I'm going to suggest you open an issue or use the Discussions tab in Vue's repo to seek help/guidance on how to get v-model support working with web components.

I'm also going to go ahead and close this issue since there are so many other web component libraries that are facing the same issue and v-model support for web components definitely falls under Vue's purview to support/fix
If you have any other questions, comments, updates, etc., please feel free to add them to this thread and I'm happy to keep discussing :)

Thanks for the detailed research and opening the issue in the vue GitHub pages.  I will add to that and hope they will address this.
Aorry for pointing the finger at your code!!

Just to close this out.
This does work and thanks to @hawkticehurst for the suggestion.
add compilerOptions to denote that we are using customElements to vite.config.ts.
plugins: [
    vue({
      template: {
        compilerOptions: {
          // treat all tags with a dash as custom elements
          isCustomElement: (tag) => tag.includes("-"),
        },
      },
    }),
  ],

Hi there! I was having the same issue (in my case I'm using "vscode-dropdown", not "vscode-input") and using @davidkjackson54  ' snippet from last comment (compilerOptions / isCustomElement) fixed the issue in dev mode (I'm using Vue-CLI with "npm run start").
However, when I build for production ("npm run build") it doesn't work. The dropdown gets displayed as it should, with the correct selected value, but when I click the dropdown and change its value, it doesn't change. Also, no errors or warning in the devtools console or in the build process output.
@davidkjackson54 did you bundle the app and did it work well there?
Interestingly, if I use this approach:
<input
  :value="text"
  @input="event => text = event.target.value">

it does work. I think I can use this but would prefer the abbreviated "v-model" approach.
Thanks in advance!

Came here also looking for v-model use with vscode-dropdown and it all works flawlessly/as-expected for me if I do the following:
// vite.config.ts
export default defineConfig({
  plugins: [
    vue({
      template: {compilerOptions: { isCustomElement: (tag) => tag.includes("vscode-") }},
    }),
  ],
})

// script in my .vue file
const selectedRevisionOption = ref(shortenHash(latestRevision.value.id))
// `selectedRevision` is what I actually need further along in my app
const selectedRevision = computed(
  () =>
    patch.value.revisions.find((revision) =>
      revision.id.includes(selectedRevisionOption.value)
    ) as Revision
)

<vscode-dropdown id="revision-selector" v-model="selectedRevisionOption">
  <vscode-option v-for="revision in patch.revisions" :key="revision.id">{{
    shortenHash(revision.id)
  }}</vscode-option>
</vscode-dropdown>

There are two things to keep in mind, one of which may be the reason why v-model didn't work for @protozoo :

Make sure the variable used as v-model is a ref() with an initial value as per the docs

Make sure the initial value for the v-model matches the innerText of the <vscode-option> you want to set as default, in my case I'm rendering a shortened hash of the revision ids, but was setting the initial value of the ref without the shortened hash which ended up not matching.


Text params at "InputBlock" and "View"

Summary
Fix some a bug in InputBlock label and fix View title type (should accept string).
Requirements

[x] I've read and understood the Contributing Guidelines and have done my best effort to follow them.
[x] I've read and agree to the Code of Conduct.

 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.

@jourdanrodrigues
Thank you very much for taking the time to make this pull request!
You're right and your fix already looks good to me. The CI build failures are unrelated to your changes. So, before merging this PR, I will fix the CI build issue first. Then, I'll merge this PR.

This repository hasn't enabled Require branches to be up to date before merging settings in the master branch protection settings. I just enabled it and wanted to use Update button for this PR. But it seems we cannot use the feature for this pull request (probably, it's due to the timing of PR creation).

I've verified with my branch that merged this PR and rebased with the latest master branch:

https://github.com/seratch/python-slackclient/tree/jourdanrodrigues-text-params
https://travis-ci.org/github/seratch/python-slackclient/builds/699588408

It seems there is no issue with the change. So, I'm confident that we can safely approve and merge this PR.


Switch to a real DB

I'm having way too many issues with redis persistence, and honestly, a beats key in a redisjson database with 265020 values (it is literally a json array with 265,020 values in the root key) is not the best way to go about this.
This is exactly the sort of thing SQL is for and I wish I knew that when I decided to write this project 2 years ago, so it's time to fix it (after Christmas, ideally).


Setup CI and update README

CI and README housekeeping items

looks ok, ci actions will complete once the dependency issues on call-stack-profiler are resolved, which will be addressed in other work. Closing this out.


Bug with audio slicing

Sometimes in the inference output, I can hear random clicks. It turns out that the slicing algorithm in the inference algorithm has a simple bug.
From my understanding, the algorithm tries to slice the audio by taking the most silent point inside an interval of audio
/main/infer/modules/vc/pipeline.py:
line 318 to 333
        audio = signal.filtfilt(bh, ah, audio)
        audio_pad = np.pad(audio, (self.window // 2, self.window // 2), mode="reflect")
        opt_ts = []
        if audio_pad.shape[0] > self.t_max:
            audio_sum = np.zeros_like(audio)
            for i in range(self.window):
                audio_sum += audio_pad[i : i - self.window]
            for t in range(self.t_center, audio.shape[0], self.t_center):
                opt_ts.append(
                    t
                    - self.t_query
                    + np.where(
                        np.abs(audio_sum[t - self.t_query : t + self.t_query])
                        == np.abs(audio_sum[t - self.t_query : t + self.t_query]).min()
                    )[0][0]
                )

However, since audio_pad is a waveform with values both positive and negative, the sum of an interval of these values is not a good indication of the loudness at each point of the audio, which results in slicing in unexpected places. One solution could be to use the sum of audio_pad ** 2 instead.

You won't believe it, but this YouTube channel is making $10,000 per month easily because it has got more than 4 million views.
In the last 30 days, the channel has uploaded only 70 videos and it has gained almost 100,000 subscribers in just four months.
Moreover, all their videos have thousands of views.
All they do is upload simple videos and all their videos are created using a I.

You won't believe it, but this YouTube channel is making $10,000 per month easily because it has got more than 4 million views.
In the last 30 days, the channel has uploaded only 70 videos and it has gained almost 100,000 subscribers in just four months.
Moreover, all their videos have thousands of views.
All they do is upload simple videos and all their videos are created using a I.

Good idea! Do **2 or do abs for audio_pad first.

Fixed now.https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/dev/infer/modules/vc/pipeline.py#L324

Nice! Thanks for the fix!


Suggestions

Hey Terence, great work so far. Here are some initial suggestions and ideas:
https://github.com/terence-bonhomme/rnyt/blob/00e8dbd579c88593461065989dbe12bc264bbbf9/src/widgets/index.tsx#L15
You can use plugin.storage.setLocal if you want. Then in your react component you can use useTracker(() => plugin.storage.getLocal(id)) which will auto update your component whenever the value changes.
https://github.com/terence-bonhomme/rnyt/blob/00e8dbd579c88593461065989dbe12bc264bbbf9/src/widgets/index.tsx#L26-L28
Maybe you could try registering in WidgetLocation.Pane instead? Then it would open in it's own window which the user can easily resize. To open the pane, you call plugin.window.openWidgetInPane.
https://github.com/terence-bonhomme/rnyt/blob/00e8dbd579c88593461065989dbe12bc264bbbf9/src/components/hotkey.tsx#L6-L9
You can use plugin.app.registerCommand to register hotkeys and commands. You should register them inside widget.tsx so they are only active when a video is playing. This way people can easily customize the shortcuts using the keyboard shortcut menu.

Thank you for your suggestions. I've begun to give them a try. I will update this project once it is done.


New Feature : Chat Bot

Is your feature request related to a problem? Please describe.
I think website is really cool but as per the new Industry 4.0I think it should must be a ChatBot as AI is coming into existing very much, As I'm a Full Stack Developer I want to develop ChatBot for this  webiste hope you'll assign me this issue.
Describe the solution you'd like
Will Add a Chat Bot just next to or  upward to the scroll to top button in the right side & will and will write a Advance JS concept for better User Experience while using Chat Bot.
Code of Conduct

[X] I agree to follow this project's Code of Conduct

Thank You for assigning me @SahityaRoy , working on this. 👍🏻

Hey @SyedImtiyaz-1 can you give some more details about the chatbot ??
it's not trained.

Hello @SahityaRoy ,
Chatbot uses the inline messages as interval so that chatbot can transfer the msg as per the text for that we can add more condiiton or also can add a API using GPT-3,4 so what do you think what to do ?
wanna upgrade ChatBot ?

I think gpt option will be great.

@SahityaRoy ,
Okay, Adding GPT v.3 in Chat Bot also Closing this PR
& Raised a new PR #424


fix: prevent sim from starting with zero validators

Closes: #XXX
What is the purpose of the change
Another random sim error we have been getting has been due to us allowing the simulator to start with zero validators. This fixes that.
Testing and Verifying
Sim seed I noticed this on<PHONE_NUMBER>317306856) now passes.
Documentation and Release Note

[ ] Does this pull request introduce a new feature or user-facing behavior changes?
[ ] Changelog entry added to Unreleased section of CHANGELOG.md?

Where is the change documented?

[ ] Specification (x/{module}/README.md)
[ ] Osmosis documentation site
[ ] Code comments?
[ ] N/A

Nice!


Refactoring for extensibility

What this PR does / why we need it:
The extension controllers want to re-use certain packages/functions from Gardener. Also, as part of our transition to the new core.gardener.cloud API I have moved certain types/constants to the new API package (which resulted in adaption of many existing code parts).
This PR incorporates the following changes:

Add the Infrastructure extension resource
Add the WorkerPool extension resource
Better reusability of secrets utility
Better reusability of image vector utility
Add a ChartApplier that knows how to apply Helm charts
Move certain Go types to core.gardener.cloud API and adapt existing code.

Release note:

NONE

Rebased

Addressed suggested changes, PTAL.

 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.

Any other feedback?


Client with no ability to install cert

Hi,
if I have a machine with browser that locked very well and I cannot install cert on it, it uses only the public ones, also the browser wont open any self-sign website, is there a way I can install a cert in mitmproxy server from Comodo or any other cert provider to let the browser trust it ?
Thanks in advance

We have that described in the docs: https://docs.mitmproxy.org/stable/concepts-certificates/#using-a-custom-server-certificate. For further support and how-to questions, please use StackOverflow. Thanks!


Some std cells in the RTL get resized in timing optmizations.

You need to review every standard cell instantiated in the RTL and check whether or not it gets resized and whether or not resizing is acceptable.

addressed through no-touch attribute currently.

@RTimothyEdwards can you please review and comment?

Tim confirmed.  The only block is affected is the DLL.  The DLL is experimental and will be removed from the testbench list for this release.


HarmonyOS support

Is there an existing issue for this?

[X] I have searched the existing issues
[X] I have read the guide to filing a bug

Use case
There are currently reliable sources saying that HarmonyOS 5.0 will no longer support Android applications, and apk files will not be recognized in the HarmonyOS. Is the flutter official ready to provide relevant support for the Hongmeng system so that the flutter application can run on the HarmonyOS?
Proposal
As flutter development engineers, we eagerly hope that flutter can provide relevant support for HarmonyOS, otherwise we may need to develop Hongmeng native apps, which is a very painful thing

I'd also like to know the details

It seems that OpenHarmony does not support apk, not HarmonyOS

Closing as a duplicate of https://github.com/flutter/flutter/issues/38437

Is there an existing issue for this?

[x]  I have searched the existing issues
[x]  I have read the guide to filing a bug

Use case
There are currently reliable sources saying that HarmonyOS 5.0 will no longer support Android applications, and apk files will not be recognized in the HarmonyOS. Is the flutter official ready to provide relevant support for the Hongmeng system so that the flutter application can run on the HarmonyOS?
Proposal
As flutter development engineers, we eagerly hope that flutter can provide relevant support for HarmonyOS, otherwise we may need to develop Hongmeng native apps, which is a very painful thing

I fell read the Harmony official documentation, writing and flutter is highly similar, you can also not be compatible.

The base of the Harmony is getting larger and larger, and domestic developers cannot bypass it. If Flutter does not support it anymore, it will become one out of two. I hope the official can provide attention and support.

If Flutter does not support it anymore

Flutter has never supported HarmonyOS; see the linked issue and https://docs.flutter.dev/reference/supported-platforms
If HarmonyOS used to support Android applications and then stops doing so, that's a change in support by HarmonyOS, not a change in Flutter's support matrix.

I hope the official can provide attention and support.

Please see https://github.com/flutter/flutter/issues/38437#issuecomment-528469296. If there are developers interested in using Flutter for HarmonyOS development, they are certainly welcome to build a HarmonyOS embedding for Flutter (using the same API that the majority of the Flutter-team-supported embeddings use).

Lao Tie, blessed! Here comes the HarmonyOS version of Flutter.   https://gitee.com/openharmony-sig/flutter_flutter


Use this with python env

My app is in python, but I need in the environment the libpoppler-cpp-dev library.
Can I use this buildpack as is?
Thank you very much.

In theory, yes! Give it a try and let me know.

On 21 Mar 2018, at 15:09, acuatoria<EMAIL_ADDRESS>wrote:
My app is in python, but I need in the environment the libpoppler-cpp-dev library.
Can I use this buildpack as is?
Thank you very much.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.


⚠ Bofrost.at has degraded performance

In 6c2fa81, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1384 ms

Resolved: Bofrost.at performance has improved in 95f097b after 11 minutes.


Don't allow revoking the last device via GUI (ever)

Can people still do this in CLI? Maybe it should be a serverside check as well?

Yes they can still do it in the CLI.


(TWILL-207) Only use list of class names as the cache name

Also some indentation changes (append ?w=1 in the URL of the file view will hide those whitespaces diff)

LGTM

Force push a change to trigger travis build again.

This PR contains both style and functional change, could you help tell a bit where the important  changes happen?

As said in the description, you will see the important changes when ignoring white space changes

Ah, yes, sorry, I thought I added the ignore white spaces when load the files changes view.

+1


Separate dual icons and Rainbow Icon

Hi! On Geometry Dash I received a "warning" because the Rainbow Icon mod and the Separate Dual Icons mod aren't compatible and the Rainbow Icon doesn't apply to the Separate Dual Icons, can you please make an update where the Rainbow Icon can be applied to the Separate Dual Icon?

For the moment its not possible, but I will work on this later, for the moment I have other features to add


Create labels for scale nodes automatically

As for now, if I have nodes with and without scale, I need to manually create labels for CSI pods so that they run on scale nodes only:
oc label node worker1 scale=true --overwrite=true
This could be performed automatically with the Node Feature Discovery. Probably, you would need to use functionality provided by the NFD operator (https://github.com/openshift/cluster-nfd-operator).
Please investigate if you could discover scale nodes and automatically assign labels.

To better understand this request, these nodes have  scale installed a priori to execution of the operator?

yes, exactly, nodes have already scale installed before the csi operator is deployed.

I feel this requirement is for CNSS not for CSI Driver.

This is implemented as part of CNSA-CSI integration


RDK-28186: New APIs and Thunder plugin implementation …

Reason for change: 1. Added thunder call for deepsleep wakeup reason
2.onSystemPowerStateChanged in thunder plugin returns the actual new power
state instead of on/standby.
Test Procedure: check deepsleep wakeup reason and powerchange change event.
Risks: Low
Signed-off-by: Tony Paul<EMAIL_ADDRESS>

 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.


When I download the file from server ，how can i delete the file immediately at server？

If I understand your question correctly, you are wanting to delete an Excel file on the server after it has been downloaded by the client.
This issue seems to be related more to Express (or whatever server library you are running) and Node (assuming your server is JavaScript). That being said there is an easy way to do this:
`
const fs = require("fs")
app.get("/downloadXLSXFile", (req, res) => {
res.setHeader(
"Content-Type",
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
);
res.setHeader("Content-Disposition", "attachment; filename=Report.xlsx");
res.download("./path/to/file.xlsx", "filename.xlsx", function(err) {
if (err)
throw(err)
fs.unlink("./path/to/file.xlsx", function(err) {
if (err)
throw(err)
console.log("File deleted...");
});
});
});
`

@zgriesinger great  thanks

but you maybe not sure the file is really download completely。

If you generate the file at every request, you don't even need to store the file. Just stream it !
const { PassThrough } = require('stream')
const stream = new PassThrough()
await workbook.xlsx.write(stream)
stream.end()
stream.pipe(res) // Here res is the response object of Express

await is from async await, you also can use the original Promise syntax
const { PassThrough } = require('stream')
const stream = new PassThrough()
await workbook.xlsx.write(stream).then(() => {
  stream.end()
  stream.pipe(res) // Here res is the response object of Express
})

@GabrielDelepine  thanks , this is a good idea.

but,how to receive and turn the data to file?

@JarvisQJ more info see GitHub exceljs


add command line option to Run ignore test

using "-runIgnore" to run IGNORE_TEST

Coverage increased (+0.0003%) to 99.907% when pulling a5de964b8720516398305de10afff2dcba310daa on cuitoldfish:runIgnoreTest into ea21a28e7bb206e9db30892aaa4d9edfd48968ee on cpputest:master.

I'd suggest to make the option -i (or so) and make the longer option --ignore (with double-dash). That is kinda the practice in unix apps. Or just have the -i option.

Hey @cuitoldfish you spooked the Dos build :D. One of its 6 part-exes ran out of memory linking. @basvodde Guess we'll just have to drop the tests, hehe ;-)

7th part :)

hey, only "-i" option can describe clearly?
what's the failure? I have slow network and could not response to those failure immediately. what's does this "ran out of memory linking" mean? I didn't do any thing to consume the size.

@cuitoldfish well you didnt. but your code did ;-).
@basvodde - that means lots of shunting around :-/ but probably the best thing to do so it will take some time before we run out of space again.....

@arstrube, so seems I can not pass dos build unless you drop those tests files? :)
@basvodde, I prefer "-ri" if clean is the rule for command line option

-ri will be fine. Not sure why the r ?

@cuitoldfish yeah, unless you feel like fiddling with platforms\Dos\sources.mk yourself a little ;-)

—ri is the abbreviation of run ignore, i think it is easier to remember

Ah run :) Ok

The rest looks good. But would appreciate fixing the formatting.  That is because wrong configuration in my editor. I have corrected those. Will commit soon

Coverage increased (+0.0003%) to 99.907% when pulling bbf318bf22a8e0eb339baaab4c89a5e542f740dc on cuitoldfish:runIgnoreTest into ea21a28e7bb206e9db30892aaa4d9edfd48968ee on cpputest:master.

Another simplification. I'm a bit annoyed by the "setRunIgnored" flag, but haven't figured out yet how to get rid of that. But at least, you can remove the _runIgnored member field out of the UtestShell and only have it in the IgnoredShell...
Then you can also remove the isIgnored from the UtestShell interface.

the current implementation in TestRegistry program to the UtestShell interface, if isRunIgnored only exist IgnoredShell, then how to call it from TestRegistry?

:)
It isn't called from TestRegistry as far as I can see :)

I was just wondering what the output will be of an ignored test that is run.
Currently, the output would be"
.!                        # normal test followed by ignored test
TEST(group, test1)        # normal test with -v
IGNORE_TEST(group, test2) # ignored test with -v

My expectation is that this, when ignored tests are run, changes to:
..                        # normal test followed by ignored test that is run
TEST(group, test1)        # normal test with -v
TEST(group, test2) # ignored test that is run with -v

Is this actually the case? Does everyone agree that this is how it should be? In my opinion, one should be able to tell from the output at a glance whether an ignored test was run or not.
Also, statistics in the summary line should change accordingly, because the ignored tests which are run are no longer ignored. Ignored tests which are not run should stay as is.

I see there is a test for the summary counts. But there isn't one for the output.

i prefer
..                       # normal test followed by ignored test
TEST(group, test1)        # normal test with -v
IGNORE_TEST(group, test2) # ignored test with -v

because user know he is running the IGNORE_TEST, the output should tell this truth.
The statistics has been changed accordingly, when IGNORE_TEST run, ignore count will not increase but the run count will increase

@cuitoldfish hmmm. I think replacing ! by . but not replacing the -v output is inconsistent (if that's really what you meant)

Another, rather small thing -- grammatically speaking, I would prefer runIgnoredSomething in the code to runIgnoreSomethin`.

I actually used the runIgnored, but later change my mind because I think I'm run the IGNORE TEST, not sure which will be the better name

I was wondering about that (IGNORE TEST)myself, then resolved that
IGNORE TEST as in "ignore! test" (imperative) but
runIgnoredTest as in "run this ignored test", because else it would turn out like "run! ignore! test" which is kind of a contradiction in itself.....
Maybe @basvodde has a preference one way or the other.

You guys are funny :)
I wouldn't care much, but remember that if we change the output, we also need to change it as input as the -v format can be used as input for CppUtest also.

if this, I think we need to keep "IGNORE_TEST" in the output so that the output can be used as input string

Does it make any difference for the input?

I mean, if I ask CppUTest to "run" an ignored test case, it will know internally that it is ignored, right?

@basvodde pursue a career as comedians, perhaps? Double-crossed C and The Code Carmeleons"s, haha :)

@basvodde There is no need to change input, as can be seen here:
$ ./CppUTestTests.exe -v "IGNORE_TEST(UtestShell, IgnoreTestAccessingFixture)"
IGNORE_TEST(UtestShell, IgnoreTestAccessingFixture) - 0 ms

OK (613 tests, 0 ran, 0 checks, 1 ignored, 612 filtered out, 0 ms)

$ ./CppUTestTests.exe -v "TEST(UtestShell, IgnoreTestAccessingFixture)"
IGNORE_TEST(UtestShell, IgnoreTestAccessingFixture) - 0 ms

OK (613 tests, 0 ran, 0 checks, 1 ignored, 612 filtered out, 0 ms)

Adding the -ri flag would run the test. No difference there.

@arstrube if I have a ignore test
IGNORE_TEST(group, test2)
then if I run cpputest using this command ./CppUTestTests.exe -v "IGNORE_TEST(UtestShell, IgnoreTestAccessingFixture)"
your expectation is
TEST(group, test2) - 0 ms
OK (613 tests, 1 ran, 0 checks, 0 ignored, 612 filtered out, 0 ms)

seems strange incongruity :)

Yeah, but this "feature" is not part of the requirements that we agreed on :P The requirements say that only if you do
./CppUTestTests.exe -ri -v "IGNORE_TEST(UtestShell, IgnoreTestAccessingFixture)" you can expect
TEST(group, test2) - 0 ms
OK (613 tests, 1 ran, 0 checks, 0 ignored, 612 filtered out, 0 ms)

It may not be what a user might expect, but it is consistent with how we said this thing should work :). I mean, if I specify the same test case by means of -sg / -sn, it isn't going to be run, either.

Did you merge cpputest/master / rebase to cpputest/master? It's still spooking the Dos build ;-)

@basvodde if I recall correctly, TestUTestMacro is rather large also. It may need breaking up; or perhaps @cuitoldfish can reduce the size of his tests by 27 bytes :P....

@arstrube Ok, I'll look at splitting some other time.
What I meant with the output is that is you change it to IGNORE_TEST_RUN_AWAY(gorup, name) then you also need to add that as possible input.

@arstrube , I haven't rebase or merge master, I would like to finalize current implementation and then do that to pass the CI.  But did you mention currently there is still issue in TestUTestMacro  to hamper the CI?

Coverage decreased (-0.02%) to 99.889% when pulling 9a9d9de25d6ef77e7a094c7ebb8f5b6134b71a55 on cuitoldfish:runIgnoreTest into ea21a28e7bb206e9db30892aaa4d9edfd48968ee on cpputest:master.

Coverage decreased (-0.02%) to 99.889% when pulling 9a9d9de25d6ef77e7a094c7ebb8f5b6134b71a55 on cuitoldfish:runIgnoreTest into ea21a28e7bb206e9db30892aaa4d9edfd48968ee on cpputest:master.

@cuitoldfish maybe better if you merge. If the Dos problem goes away, we're good. @basvodde If not, this won't pass before the UtestMacroTests are split in some way.

@cuitoldfish why, you removed a method didn't you. But the code grew fatter and coverage went down :-)

I removed IgnoredUtestShell::isRunIgnore() because it's not needed as discussed

The decrease may because the virtual method void UtestShell::setRunIgnore(). This is just a interface, it's body will not be executed so that coverage decrease.

You'll need to test it. So it doesn't do anything fishy :-P. Or at least enclose it in
// LCOV_EXCL_START
// LCOV_EXCL_STOP

Of course you had to remove  IgnoredUtestShell::isRunIgnore(). I was just joking about removing a method and still the code size in Dos grew by some 1.8 kbytes :)
And, may I point out that the class is  IgnoredUtestShell and not IgnoreUtestShell ;-). So, personally, I'd like the method and variable names to be consistent with that.

No problem about passing Dos later, but I'd say the 1.8k problem is different to the original one and only splitting up the UtestMacro tests will make it go away. Not necessarily the files, but the test groups. Because one test group has hit the 64k limit.

I haven't notice the extra d in IgnoredUtestShell :),   I will add the d consistently.

Coverage increased (+0.0003%) to 99.907% when pulling 738a373c0cc779742617e44e3343c872ae410c7f on cuitoldfish:runIgnoreTest into 20e53b7932561f1688458ef4fce04ea8a275b133 on cpputest:master.

Excellent, thanks!

@cuitoldfish nice :)
@basvodde now we need to to split up TestUTestMacro so the Dos build won't fail...

Actually, I'm not entirely clear what the linker means complaining about TestUTestMacro_TEXT2. Looks like it corresponds to the file name, not the test group. So we may have to split the file after all :-(.

I think at least from test design point of view, there should be separate test file for UtestShell and IgnoreTestShell, right?

Sounds good to me.

After looking at it more closely, there were some IgnoredUtestShell tests in there already that conceptionally belong to UtestTest.cpp. Along with your new tests, I will move them there. It is a rather small file. So we don't have to go to the trouble to split files at this point.


.NET Framework NGEN v4.0.30319 "error"

Hello,
ich want to connect from a 2016 Server to a win10 Client (remote) and read all Tasks.
I used:
var x = new TaskService($@"\{Host}", _username, _domain, _password);
....
i got the error:
The current version of the native library (1.5) does not support the original or minimum version of the ".NET Framework NGEN v4.0.30319" task (1.6/1.6)
does anyone have a tip for me?
Thanks

Yes. You cannot connect to an upstream system (new OS) and read all tasks. New features are introduced in almost each new Windows version and it makes reading them from older clients impossible.

thanks


JSON based uploads

switch to JSON-based API

Coverage decreased (-0.3%) to 96.1% when pulling fb93c1d0696f90c45c8d4a66688389ac9fd6f870 on json-based-uploads into 216a89e0ac8d99dbf162ffd6c7d792f959539b3e on develop.

Coverage decreased (-0.3%) to 96.1% when pulling fb93c1d0696f90c45c8d4a66688389ac9fd6f870 on json-based-uploads into 216a89e0ac8d99dbf162ffd6c7d792f959539b3e on develop.


Syncing initial data takes a long time

Just installed sciencefair and started it for the first time.
It's not the best user experience to be greeted to a loading screen, which eventually takes 5+ minutes to complete. I would suggest creating a "welcome" screen which maybe introduces the app and allows the user to start "syncing initial data" when they want (warning them that it might take a few minutes).

Hi, thanks for reporting this. The loading screen should take a few seconds on most connections - so unless your connection is 2G or something similar this is a bug.
We will make sure this is resolved in the next couple of releases.

And good idea about the landing page - we will discuss design aspects of this and update here.

I have downloaded ScienceFair on Windows, Mac, and Linux. The only problem occurred on my Linux machine running Ubuntu 16.04. It freezes at "Sync initial data" stage. Rebooting won't solve the problem. Thanks.

Thanks for your patience while we dealt with a temporary bug in Github's release API.
This issue should be solved in v1.0.6


Add SRA benchmark to compare the last release against the current release

Motivation and Context
This PR adds a benchmark to make sure we didn't regress the old middleware client implementation while making changes to it for the new orchestrator implementation.

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Latest benchmark results with these changes (on my dev laptop):
compare/middleware (HEAD)/S3 ListObjectsV2
                        time:   [21.229 µs 21.263 µs 21.300 µs]
Found 10 outliers among 100 measurements (10.00%)
  10 (10.00%) high mild

compare/middleware (last_release)/S3 ListObjectsV2
                        time:   [21.874 µs 21.939 µs 21.993 µs]

compare/orchestrator/S3 ListObjectsV2
                        time:   [32.483 µs 32.593 µs 32.713 µs]
Found 6 outliers among 100 measurements (6.00%)
  6 (6.00%) high mild


Chat system + moderation + slight UI rework

TODO:

[x] Move drawers to panels
[x] Scaffolding
[x] Basic rendering
[x] Message sending+receiving
[x] Basic moderation
[x] Basic flood detection
[x] Message reporting
[x] Fluff
[x] Console commands
[x] Final polish from local testing

"Basic Moderation"

[x] "Ban User"

[x] Back-end
[x] Front-end
[x] Chat Command

[x] "Tempban User"

[x] Back-end
[x] Front-end
[x] Chat Command

[x] "Purge User"

[x] Back-end
[x] Front-end
[x] Chat Command

[x] Remove messages when a user is banned/purged

[x] Back-end
[x] Front-end
[x] Chat Command

[x] Dynamic message removal amount

[x] Back-end
[x] Front-end
[x] Chat Command

[x] Admin Logging

"Basic flood detection"

[x] Utilise ratelimit buckets already in-place

"Fluff"

[x] Badges

This PR brings the following:

Reworks drawers into panels (was blocking feature chat system, rolling into this PR)
Chat system
Manual chat moderation tools
Automated chat moderation tools

Messaging after logging out then back in doubles the message output visually. This can be repeated multiple times.

force push: rebase in master to resolve merge conflicts, add dark themes for panels/chat
as dicussed in discord, the issue causing duplicated chat messages is beyond the scope of chat. as such, i've applied some duct tape (db819f2a2c10ae5989b6484763a506d5712acfa7) to get it functioning until the underlying issue can be looked at.


No login centos8

I have successfully installed MPBX using the centos8 script but can't login into the web interface cause i am using private ip not public ip, how do i enable private ips to login.

First of all, read this comment and install latest version.
https://github.com/a4business/MPBX/issues/7#issuecomment-1721334898
Local IP whitelisted   by default, check pbx/include/config.ini  :    ui_whitelist_ip


Ban Mega formes by name

I believe my latest ruleTable refactor implements this, relatively reliably.

Doesn't seem to. (Unbanning works fine, of course.)
Unlike PR #2854, I'm not doing the ability at this time, and I'm also not using the loop.

Travis tests have failed
Hey urkerab,
Please read the following log in order to understand the failure reason.
It'll be awesome if you fix what's wrong and commit the changes.
Node.js: 7.7

npm test

><EMAIL_ADDRESS>test /home/travis/build/Zarel/Pokemon-Showdown
> eslint --rulesdir=dev-tools/eslint --cache . && tsc && mocha

config.js doesn't exist - creating one with default settings...
NEW GLOBAL: global
NEW CHATROOM: lobby
NEW CHATROOM: staff
․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․,․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․,․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․,․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․,,,,,․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․,,,,,,,,,,,,,,!․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․

  935 passing (37s)
  22 pending
  1 failing

  1) Team Validator
       should have valid formats to work with:
     Error: gen7doublesuu: Nothing matches "Charizard-Mega"
      at ModdedDex.validateBanRule (sim/dex.js:886:10)
      at ModdedDex.validateRule (sim/dex.js:817:33)
      at ModdedDex.getRuleTable (sim/dex.js:744:26)
      at Context.<anonymous> (test/application/team-validator.js:11:9)

npm ERR! Test failed.  See above for more details.

Travis tests have failed
Hey urkerab,
Please read the following log in order to understand the failure reason.
It'll be awesome if you fix what's wrong and commit the changes.
Node.js: 7.7

npm test

><EMAIL_ADDRESS>test /home/travis/build/Zarel/Pokemon-Showdown
> eslint --rulesdir=dev-tools/eslint --cache . && tsc && mocha

config.js doesn't exist - creating one with default settings...
NEW GLOBAL: global
NEW CHATROOM: lobby
NEW CHATROOM: staff
․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․,․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․,․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․,․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․,,,,,․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․,,,,,,,,,,,,,,!․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․

  935 passing (38s)
  22 pending
  1 failing

  1) Team Validator
       should have valid formats to work with:
     Error: gen7doublesuu: Nothing matches "Gardervoir-Mega"
      at ModdedDex.validateBanRule (sim/dex.js:886:10)
      at ModdedDex.validateRule (sim/dex.js:817:33)
      at ModdedDex.getRuleTable (sim/dex.js:744:26)
      at Context.<anonymous> (test/application/team-validator.js:11:9)

npm ERR! Test failed.  See above for more details.

I forgot these things are lazily loaded these days... that change also bit me when I accidentally deleted a line from a mod, as the problem didn't show up until someone tried to play in that format, and the battle process was apparently unable to recover from the error.


Implement debug api to download state

https://ethereum.github.io/eth2.0-APIs/#/Debug/getState
this could be used to

debug any issues we have
or to download weak subjectivity checkpoint state

I think we should also implement https://github.com/ethereum/eth2.0-APIs/pull/119
as it makes it more convenient to download state to file


replace dotenv with dotenv-webpack?

Is this a bug report?
No
Description
We are using a .env file to make configuration changes easy between our different environments and it works great.
However, the way that dotenv works it not particularly interesting as it:

bloats the code (even minified)
exposes all environment variables right next to each other (the values will become public anyway, but you don't need them to be right next to each other)

In our codebase, we have a couple of variables and this block is inserted six times into our code:

In a project without create-react-app I've been using dotenv-webpack with great success. It effectively replaces your call to an environment variable with the value itself, minimizing code bloat.
I believe this would be a small change in the code, but I was wondering if there are reasons not to do this? If there is no reason not to switch it, I would like to work on a PR.

Just chiming in: it looks like you're using process.env dynamically, which is hard to resolve at compile time and is probably why it's including the whole thing? I don't have anything like this in my bundle. Maybe you have a function like this.
function featureIsEnabled(feature: string): boolean {
  return !!feature && process.env["REACT_APP_FEATURE_"+feature.toUpperCase()] === "true";
}

@heyimalex It took a while for me to get back to you but I finally found the time to do so.
You were right, I did have some dynamic reads like that in the code. I've now removed them and replaced them with static calls, but I still get loads of full listings in my final build.
ex.
var version = "".concat(Object({
    "NODE_ENV": "XXXX",
    "PUBLIC_URL": "XXXX",
    "REACT_APP_AWS_REGION": "XXXX",
    "REACT_APP_AWS_USERPOOL": "XXXX",
    "REACT_APP_AWS_CLIENTAPP": "XXXX",
    "REACT_APP_ZENDESK_KEY": "XXXX",
    "REACT_APP_ZENDESK_KEY_API": "XXXX",
    "REACT_APP_ZENDESK_URI": "XXXX",
    "REACT_APP_RECAPTCHA_SITE_KEY": "XXXX",
    "REACT_APP_COOKIE_DOMAIN": "XXXX",
    "REACT_APP_REFERRED_KEY": "XXXX",
    "REACT_APP_REFERRED_VALUE": "XXXX",
    "REACT_APP_COGNITO_BASE_URL": "XXXX",
    "REACT_APP_API_BASE_URL": "XXXX",
    "REACT_APP_SUPPORT_API_BASE_URL": "XXXX",
    "REACT_APP_TICKETING_API_BASE_URL": "XXXX",
    "REACT_APP_EVENT_API_BASE_URL": "XXXX",
    "REACT_APP_QUEUE_BASE_URL": "XXXX",
    "REACT_APP_ENV": "XXXX",
    "REACT_APP_FEATURE_TICKETING": "XXXX",
    "REACT_APP_FEATURE_TICKETING_UNAVAILABLE": "XXXX",
    "REACT_APP_FEATURE_BRACELETS": "XXXX",
    "REACT_APP_FEATURE_DEV": "XXXX",
    "REACT_APP_BEASTMODE": "XXXX",
    "REACT_APP_ATTRIBUTES_API_BASE_URL": "XXXX",
    "REACT_APP_GOOGLE_ANALYTICS": "XXXX",
    "REACT_APP_FACEBOOK_PIXEL": "XXXX",
    "REACT_APP_ALLOW_INSECURE_COOKIES": "XXXX",
    "REACT_APP_CONFIG_URL": "XXXX",
    "REACT_APP_INTELLITIX_W1_BASE_URL": "XXXX",
    "REACT_APP_INTELLITIX_W2_BASE_URL": "XXXX",
    "REACT_APP_FALLBACK_URL": "XXXX",
    "REACT_APP_REDIRECT_WHITELIST": "XXXX",
}).REACT_APP_VERSION || '0.0.0', "-").concat(REACT_ENV);

--> original
const version = `${process.env.REACT_APP_VERSION || '0.0.0'}-${REACT_ENV}`

Another:
pc(e, Object({
  NODE_ENV: "XXXX",
  PUBLIC_URL: "XXXX",
  REACT_APP_VERSION: "XXXX",
  REACT_APP_FEATURE_TICKETING: "XXXX",
  REACT_APP_FACEBOOK_PIXEL: "XXXX",
  REACT_APP_SUPPORT_API_BASE_URL: "XXXX",
  REACT_APP_RECAPTCHA_SITE_KEY: "XXXX",
  REACT_APP_FALLBACK_URL: "XXXX",
  REACT_APP_ENV: "XXXX",
  REACT_APP_REFERRED_VALUE: "XXXX",
  REACT_APP_AWS_REGION: "XXXX",
  REACT_APP_AWS_CLIENTAPP: "XXXX",
  REACT_APP_EVENT_API_BASE_URL: "XXXX",
  REACT_APP_INTELLITIX_W1_BASE_URL: "XXXX",
  REACT_APP_GOOGLE_ANALYTICS: "XXXX",
  REACT_APP_API_BASE_URL: "XXXX",
  REACT_APP_FEATURE_BRACELETS: "XXXX",
  REACT_APP_INTELLITIX_W2_BASE_URL: "XXXX",
  REACT_APP_BEASTMODE: "XXXX",
  REACT_APP_COGNITO_BASE_URL: "XXXX",
  REACT_APP_CONFIG_URL: "XXXX",
  REACT_APP_ALLOW_INSECURE_COOKIES: "XXXX",
  REACT_APP_ZENDESK_KEY: "XXXX",
  REACT_APP_QUEUE_BASE_URL: "XXXX",
  REACT_APP_COOKIE_DOMAIN: "XXXX",
  REACT_APP_AWS_USERPOOL: "XXXX",
  REACT_APP_REFERRED_KEY: "XXXX",
  REACT_APP_ZENDESK_URI: "XXXX",
  REACT_APP_FEATURE_TICKETING_UNAVAILABLE: "XXXX",
  REACT_APP_TICKETING_API_BASE_URL: "XXXX",
  REACT_APP_ATTRIBUTES_API_BASE_URL: "XXXX",
  REACT_APP_REDIRECT_WHITELIST: "XXXX",
  REACT_APP_FEATURE_DEV: "XXXX",
  REACT_APP_ZENDESK_KEY_API: "XXXX",
}).REACT_APP_ALLOWED_CALLBACK_DOMAINS)

--> original
isCallbackUrlAllowed(
        callbackUrl,
        process.env.REACT_APP_ALLOWED_CALLBACK_DOMAINS
)

These don't seem like very special cases to me? Any ideas of what is causing this?

After looking into this further, I have noticed that only the places where an environment variable is used that has not been defined in the .env file get a full object listing like this.
So it does not seem like a dotenv issue by iself.
I do wonder why this is the "minified" version of the code, the compiler should be able to know that this value is undefined?
Any ideas on how or where to report this to get it fixed?

I agree that that's a bug. I'll try and repro sometime soon, but if you want to dig in it looks like we use webpack's DefinePlugin.

@Nickman87 I did a PR to try to fix this behavior but without feedback ... Can you test my branch to see it's still happening?


Change $KAFKABROKERS env variable

Change $KAFKABROKERS env variable to match previously used name: $KAFKAHOSTS. Not tested but other lines may need to be updated?

@oedenfield : Thanks for your contribution! The author, @hrasheed-msft, has been notified to review your proposed change.

Hi @oedenfield The export variable KAFKABROKERS is the array of Kafka broker nodes defined in step 6:
export KAFKABROKERS=`curl -sS -u admin:$password -G http://headnodehost:8080/api/v1/clusters/$clusterName/services/KAFKA/components/KAFKA_BROKER | jq -r '["\(.host_components[].HostRoles.host_name):9092"] | join(",")' | cut -d',' -f1,2`

The other variable is $KAFKAZKHOSTS which is the list of zookeeper nodes, ZK standing for Zookeeper.
Did you find another article where it used the variable KAFKAHOSTS instead? I wasn't sure what you meant exactly with this Pull Request.
Thanks, Jason

Sorry, I'll go re-read the doc and try again. Must not have had enough coffee yesterday. Thank you.

#please-close


doc: Fix grammar in help :map-operator

Minor grammar change to runtime/doc/map.txt:
Before:
"To define your own operator you must create mapping [...]"
After:
"To define your own operator you must create a mapping [...]"

I'll include it, thanks.


Question: id field for unique id

Looking for aliasing "$loki" used in the JSON document for indexing something like "id",  we want auto-incremented, no-duplicate ids for database, primarily used for training purpose in the class room.
Can I use "id" as unique and auto-increment or alias $loki with "id"? Both shall work for me.

As of now I don't think so.... you could set your own unique key property but we don't autoincrement it for you.
I suppose it could be possible to pass in as loki constructor option to specify our unique property name but would need to replace internal $loki references and verify performance is not adversely affected.  If your purpose is immediate you could fork and search replace $loki with id.  Collection protos might allow defining 'getters' to alias but wouldn't be very hidden.

Forking is good for me, I would replace $loki with 'id'. As stated, this is for educational purpose, used for workshop. I am using json-server, moving to loki for performance, more features.

Forked, replaced $loki with id, works fine. I shall look into using unique id defined via constructor.

@gopalakrishnan-subramani @obeliskos i'm going to close this as $lokiwas introduced to eliminate the conflict with the id field which is a very common field name especially when syncing remotely.

+1 for configurable option to expiclitly specify which field name should be used for auto-incrementing (with $loki as default value).

I really want to rename $loki to something like id. Completely agree the way @artch suggested!

@taymoor89 @artch maybe not ideal - but as an interim solution you can assign an id property to your object that references the $loki on insert event in the collection.

@techfort how would you go about it? In the time of the insert it would just add a property with undefined value

As insert value can be array, previous comment solution should be expanded to:
myCollection.on('insert', function (input) {
  if (Array.isArray(input)) {
    input = input.map(item => ({ ...item, id: item.$loki }))
  } else {
    input.id = input.$loki
  }
})

Hope it can save someone some frustration and thanks to @ViggoV for pointing out to right direction.


Convert GraphQL v2 to Quarkus

Main changes:

GraphqlResourceBase and subclasses: use injection to pass the bridge and GraphqlCache, adapt multipart handling code for Quarkus.
GraphqlCache: use Quarkus config for enableDefaultKeyspace

Everything else is pretty much a copy-paste of the existing sgv2-graphqlapi, with a few changes to the imports. Note that fetcher implementations still rely on the synchronous methods of StargateBridgeClient; with the async/reactive bridge it would now be possible to make all fetchers async, but I consider this beyond the scope of this PR, see #421.
TODO:

[x] find a way to add stargate.graphql.enable-playground to the config (how do we condition the inclusion of a REST resource at runtime?)
[x] adapt (move?) the integration tests in testing
[x] remove the original sgv2-graphqlapi at the root of the repo
[x] handle OVERLOADED error (see GraphqlResourceBase.executeAsync)

Tried to answer to all the comments.. I'll do a final review on Thursday and we can hopefully merge then.
Since all the unit tests are green now, we should enable the int tests:

Add required maven setup https://github.com/stargate/stargate/blob/ae0f9fd63d3948065c289c0124eb2f8052c183ea/apis/sgv2-docsapi/pom.xml#L202-L221
Enable project in CI: https://github.com/stargate/stargate/blob/ae0f9fd63d3948065c289c0124eb2f8052c183ea/.github/workflows/apis-v2.yaml#L214-L215
Enable docker based test: https://github.com/stargate/stargate/blob/ae0f9fd63d3948065c289c0124eb2f8052c183ea/.github/workflows/apis-v2.yaml#L321-L323


⚠ SceneTime has degraded performance

In d11f881, SceneTime ($ST) experienced degraded performance:

HTTP code: 200
Response time: 10232 ms

Resolved: SceneTime performance has improved in dd8bfc6 after 5 minutes.


correct bounds on k-min and k-max for https://kbase-jira.atlassian.net/browse/PUBLIC-198

Decided to restore validating on k-list since presumably it worked before


[native_assets_cli] Consider dynamically injecting verifiers that run after build() / link() methods called user-provided closure

With the recent refactoring to make the CLI extensible, we removed the verification happening inside the hook, now only the invoker of the hook does the verification.
We could restore this regression by dynamically injecting verifier methods in the extension methods, e.g. output.codeAssets.add() could install a validateCodeAssetBuildOutput verifier into a Set<> that the build implementation will then run.

Ah you came up with an idea to achieve this!
I was also thinking that instead of validateCodeAssetBuildOutput in the PR, we could have CodeAsset.validateBuildOutput (static method). Doing that for all asset types makes the validators easy to find.

CodeAsset.validateBuildOutput (static method). Doing that for all asset types makes the validators easy to find.

I didn't want to do that, because a normal hook/build.dart writer shouldn't have to know about those validation methods, they shouldn't need to call them. So they shouldn't be in scope / available for code completion / ... (without explicitly importing them)

I still believe that the hook/{build,link}.dart should not do the validation. Conceptually this is the job of the bundling tool, it has to do validation.
Here's a few reasons why I'm convinced of this:

Users are also not expected to execute these hooks themselves, they should be invoked by a bundling tool which already will do validation and reports it.
If users want to write tests for their hooks, then those tests should use a native assets builder infrastructure which supports verification.
The bundling tool will do more validation than what a hook/{build,link}.dart hook even can do: per asset type but also across all assets from all packages - the hook itself cannot do that
There's a version skew: The bundling tool (Flutter SDK / Dart SDK / ...) may use a different version of the verification logic than the hook writer. That means the bundling tool may do slightly different validation than the self-validation the hook would do
=> That can lead to really weird situations where a hook may throw an exception because it's validation fails but the bundling tool would actually accept the hook output. Or the hook may run validation without errors and the bundling tool has extra validation that fails.
We create a situation where validation errors can occur in two places and manifest in two different ways:
=> A hook may throw an exception with a validation error (and possibly print the error to stdout/stderr)
=> The bundling tool may report validation errors in a different way (logging it in to a Logging instance)
=> This isn't a clean user experience because validation errors can be reported in --verbose or log files in two very different ways

So despite my idea of how we can do it, I still think we shouldn't do it.

Users are not expected to execute these hooks themselves

I believe when the output is erroneous, the easiest way for users to triage the errors is to step through their hook execution with a debugger.
I believe it's better to report errors early instead of letting them propagate.
But let's disagree and commit...
#notPlanned

We cannot have validation for temporary asset types (that only live between build and link) in embedders, because embedders don't know about those. So if we want to support validation for those, we should consider implementing this.

We cannot have validation for temporary asset types (that only live between build and link) in embedders, because embedders don't know about those. So if we want to support validation for those, we should consider implementing this.

If we allow arbitrary asset types between build & link then even the current system cannot do any validation between those (i.e. it's unrelated to https://github.com/dart-lang/native/pull/1623)
I'd say that's something the asset type support and the linker have to agree / deal with - as the bundling tool really doesn't care about the data that flows from build hooks to link hooks, it only cares about the final assets it has to deal with (and embed in the application bundle).


Add dependency on moveit_resources_panda_moveit_config.

Description
Fixes #59.
Checklist

[ ] Required by CI: Code is auto formatted using clang-format
[ ] While waiting for someone to review your request, please consider reviewing another open pull request to support the maintainers

@ros-planning/moveit-maintainers: I suggest reverting these changes.
The tutorials should not depend on moveit_resources_panda_moveit_config (which is a minimal version of panda_moveit_config referring to a minimal version of the URDF model as well), but use the official panda_moveit_config package instead, which uses the official URDF from franka_description.

@ros-planning/moveit-maintainers: I suggest reverting these changes. The tutorials should not depend on moveit_resources_panda_moveit_config (which is a minimal version of panda_moveit_config referring to a minimal version of the URDF model as well), but use the official panda_moveit_config package instead, which uses the official URDF from franka_description.

Ticketed https://github.com/ros-planning/moveit2_tutorials/issues/704 for clarification.


aws cloudstorage bucket refactor

refactoring for adding other clouds.
bits from https://github.com/kaovilai/oadp-operator/tree/cloudstorage_azure refactoring without all the unfinished implementations of azure.
Notable changes:
Added getters to Client interface to allow reuse of func getCredentialFromSecret
- func (a awsBucketClient) getCredentialFromSecret()
+ func getCredentialFromSecret(a Client)

type Client interface {
	Exists() (bool, error)
	Create() (bool, error)
	Delete() (bool, error)
	ForceCredentialRefresh() error
+	getCloudStorage() v1alpha1.CloudStorage
+	getClient() client.Client
}

Codecov Report

Merging #561 (89b7e3d) into master (816cb83) will decrease coverage by 0.24%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##           master     #561      +/-   ##
==========================================
- Coverage   38.32%   38.08%   -0.25%
==========================================
  Files          13       14       +1
  Lines        2839     2857      +18
==========================================
  Hits         1088     1088
- Misses       1671     1689      +18
  Partials       80       80

Impacted Files
Coverage Δ

controllers/bsl.go
46.29% <0.00%> (-2.54%)
:arrow_down:

pkg/bucket/aws.go
0.00% <0.00%> (ø)

pkg/bucket/client.go
20.00% <0.00%> (+15.12%)
:arrow_up:

Continue to review full report at Codecov.

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

+1

I need a recent test result for ci-search.  going to kick one job :)
/test 4.8-operator-e2e


[distributed env] potentially unsafe parallel execution

metric = load_metric('glue', 'mrpc', num_process=num_process, process_id=rank)

presumes that there is only one set of parallel processes running - and will intermittently fail if you have multiple sets running as they will surely overwrite each other. Similar to https://github.com/huggingface/datasets/issues/1942 (but for a different reason).
That's why dist environments use some unique to a group identifier so that each group is dealt with separately.
e.g. the env-way of pytorch dist syncing is done with a unique per set MASTER_ADDRESS+MASTER_PORT
So ideally this interface should ask for a shared secret to do the right thing.
I'm not reporting an immediate need, but am only flagging that this will hit someone down the road.
This problem can be remedied by adding a new optional shared_secret option, which can then be used to differentiate different groups of processes. and this secret should be part of the file lock name and the experiment.
Thank you

You can pass the same experiment_id for all the metrics of the same group, and use another experiment_id for the other groups.
Maybe we can add an environment variable that sets the default value for experiment_id ? What do you think ?

Ah, you're absolutely correct, @lhoestq - it's exactly the equivalent of the shared secret. Thank you!


Kick someone from a Chatroom

Describe the solution you'd like
Endpoint:
DELETE /api/v1//s/chat/thread//member/?allowRejoin=<0|1> HTTP/1.1

Got it. Will be adding it at the update

Did the module removeChat.js, and wrote the example already. This new feature will be added at the 3.0.0-nightly
Closing due to finished


[Feature][Collapsible] - Allow uncontrolled behavior

Currently the <Collapsible/> may only work as a controlled component by using the expanded prop.
Sometimes there is no need for outside control and it is wished for the component to show/hide content when clicked, so another prop can be introduced: defaultExpanded for the initial state, and from there the component will handle the state internally, as long as the expanded prop is not defined.
Also, this requires another sub-component, which I suggest something like Collapsible.Trigger which will act as the "clicking" area that shows/hides content, this will also give extra control where the triggering content is rendered relative to the collapsible content.
<Collapsible defaultExpanded={true} id='foo' onClose={...}>
    Lorem ipsum dolor sit amet
</Collapsible>
...
<Collapsible.Trigger for='foo'>Toggle me</Collapsible.Trigger>

Alternatively, add ability to place the <Trigger> inside:
<Collapsible>
    <Collapsible.Trigger>Toggle me</Collapsible.Trigger>
    Lorem ipsum dolor sit amet
</Collapsible>

Then it will be possible to clone & place it outside of the actual collapsible wrapper, so it will always be visible.

This will free developers from creating their own states which is especially time consuming when wanting to use a large number of Collapsible components

Having a component that is both controlled and uncontrolled can lead to many issues, and can become a maintenance nightmare. This is discouraged in the official React docs (they refer to it as a "mistake" no less) and I've also written an article about why it should be avoided - Don’t Mix Controlled and Uncontrolled Values In React.
Moreover, if we decide to take it upon ourselves to provide this functionality out of the box, we will have to consider  every possible behavior that the user may want to have. For example, what if the consumer would like the trigger to take place on hover instead of click? What if he wants it to only show or only hide, instead of toggle?
That said, I don't think there's much to gain from it anyway. Instead of adding 2 new props (defaultExpanded, onClose) and a new component (<Collapsible.Trigger/>), and all the internal logic that comes with that, the same thing can be done by adding a single line of code to the containing layer:
const {visible, toggle} = useVisibilityState();

Toggle

<Collapsible expanded={visible}>
    Lorem ipsum dolor sit amet
</Collapsible>

As for having a large number of collapsibles, the above code can be turned into a component and used as many times as needed.

I wanted to use Collapsible in some story in Storybook which is written in MDX format, and I wanted to place there lots of collapsible components without managing any state on an MDX file. State makes managing MDX stories more difficult.
Normally I use:

	click to toggle
	content here

But it's not as visually pleasing as the Collapsible :)
Without having it manage its own open/close state I don't think MDX use-case is very practical

I see, how about creating a small component for that? Something like:
const Details = ({children, title}) => {
    const {visible, toggle} = useVisibilityState();
    return (

                {title}

            <Collapsible expanded={visible}>
                {children}
            </Collapsible>

    );
};

Which you can then use like:

    content here

I was considering creating a Github repository only for Storybook-specific components, for common things


OpenSky Username variable

Hi, I don't believe this is breaking anything.
In the README.md and the docker-compose.yml files
I see one variable with a possible typo "MY_PENSKY_USERNAME"
Possibly intended to be named "MY_OPENSKY_USERNAME"
Thank you for all the work on this!!

Good catch 😄


Lightwalletd can return incorrect consensus branch id of 00000000

What is the bug?
lightwalletd.testnet.electriccoin.co went down today.  When it came back up, attempts to get lightdinfo from the server returned incorrect results.
grpcurl lightwalletd.testnet.electriccoin.co:9067 cash.z.wallet.sdk.rpc.CompactTxStreamer/GetLightdInfo
{
  "version": "v0.4.13",
  "vendor": "ECC LightWalletD",
  "taddrSupport": true,
  "chainName": "test",
  "saplingActivationHeight": "280000",
  "consensusBranchId": "00000000",
  "gitCommit": "2d3943b8e995a3b2c5648ec9859dccc67c535386",
  "buildDate": "2022-07-22",
  "buildUser": "root",
  "estimatedHeight": "1984160",
  "zcashdBuild": "v5.3.1",
  "zcashdSubversion": "/MagicBean:5.3.1/"
}

One theory is that lightwalletd is having trouble syncing with zcashd, leaving the server in a bad state.
Additional context
This incorrect value causes the mobile wallet clients to fail syncing and the clients do not retry.
Solution
If lightwalletd is in a bad state, it should probably return an error instead of responding to the getlightd info request.  (If we do decide that returning 00000000 is what we want, then that should be documented and the mobile clients updated to accomodate it).

In the quoted output above, it's strange that the blockHeight field isn't present. Looking at the source code, it isn't conditional, it should always be displayed.
When I run that command now, blockHeight is shown, and when I rerun it a few seconds later, it's a few thousand higher (it's around 500k currently). So it appears to be syncing. Also, consensusBranchId is 76b809bb (not all zeros). Is it possible that you caught it just as it was starting up?
I don't understand why it would be syncing from scratch (sapling activation); the block cache files (by default at /var/lib/lightwalletd/db/) should allow it to restart quickly without having to sync the whole chain again. If it's running in docker, it is necessary to map this directory as a volume so it's preserved across restarts. @mdr0id knows about this. Maybe that's not being done for the testnet instance?

@LarryRuane It was returning this value for over 2 hours today, so it seems like a larger issue than a brief timing bug during server startup.

Closing, feel free to reopen if still a problem.


Calling a PROCEDURE in "CREATE FUNCTION/PROCEDURE" does not require an explicit "CALL" #537

#537

Summary by CodeRabbit

Refactor: Removed the CALL keyword from procedure and function calls across multiple files, improving code readability and simplifying function invocation.
New Feature: Added new procedures and functions protest, functest, protest2, functest2, and stest.protest in ora_plisql.sql.
Refactor: Enhanced the PL/pgSQL parser's handling of CALL statements, introducing a new function build_call_expr() and modifying existing parsing rules and functions.
Chore: Added DROP statements for procedures and functions in ora_plisql.sql to ensure clean removal when necessary.

An enhancement to the plisql procedural language
cd src/oracle_test/
make oracle-check

cd src/pl/plisql/
make oracle-check

感觉您的辛勤付出。


[NV-GO-5] API 🚀: Add Bulk Subscriber Creation Feature

The bulk subscription feature just became available. This SDK needs to be updated to have this feature.
API reference: https://docs.novu.co/api-reference/subscribers/bulk-create-subscribers

@unicodeveloper  can you assign this to me?

Apologies for the delay. assigned.


chips: delete event is fired twice when using the "X" button

Also, the second event contains the wrong data (removed "Microsoft" in the screenshot):

This is a big oversight on my part..
Whenever the "X" is clicked or whenever a tag is typed in, the data property is set which results in a full rebuild of the chips control due to the recent addition of two-way binding.


Create AUR package

Now that we have binary release packages, I'm hoping someone experienced with the AUR would create a PKGBUILD for the project. The .tar.gz that's downloadable for 0.1.0 has an amd64-linux binary and the assets directory.

Hey, @adtac it'd be awesome to have it for macOS (Homebrew) as well.

@nkprince007 we'll require the assets/ directory in the targz as well. I'll use goreleaser to automatically build binaries for darwin-amd64 instead of your tarball; that okay?

And it's not about macOS users, it's about OSX Server.

@nkprince007 @grawlinson Thanks a lot for this issue!
We have, however, moved all development to GitLab. Therefore, this comment has been exported to (with a link back to this issue for history):

https://gitlab.com/commento/commento-ce/issues/30 - for Arch Linux (AUR)
https://gitlab.com/commento/commento-ce/issues/32 - for macOS

I'm closing this issue. Cheers!


Question About Evaluation on the Middlebury v3 Benchamrk.

Hi @David-Zhao-1997 ,
Thank you very much for your great work.
I recently evaluated my method on Middlebury, but bothered by a error (listed bellow), even using the disparitys on the training set of the other method downloaded from the website.
So I'm wondering if you've encountered this problem when submitting before?

In my previous submissions, the problem did not occur, and there should be a problem with the recent Middlebury evaluation system. Presumably, based on the error reported in your screenshot, there is a problem with the database of the evaluation website.

Ok, thanks for your reply.


[Feature Request] Create folders for multi image works

Prerequisites

[x] Did you read FAQ section in readme.md?
[x] Did you test with the latest releases or commit ?
[x] Did you search for existing issues in Issues?

Description
Not sure if this is implemented or not, I'm trying to find a way to create a folder for works that have multiple images.
To elaborate a bit, when there is only one image by work it would be saved to the "%artist% (%member_id%)" directory, but when there are multiple images by work it would create a folder named as "%urlFilename% - %title%" and save the files from this work inside.
Expected behavior: [What you expected to happen]
I want files to be saved like that:
40原 (554102)\86133813 - きなこ衣替え\86133813_p0.jpg <-- multiple images by work id
40原 (554102)\86133813 - きなこ衣替え\86133813_p1.jpg
40原 (554102)\76091634_p0.png <-- only 1 image by work id
Actual behavior: [What actually happened]
FIles are saved as:
40原 (554102)\86133813_p0.jpg
40原 (554102)\86133813_p1.jpg
40原 (554102)\76091634_p0.png
Versions
v20201130

check https://github.com/Nandaka/PixivUtil2#filename and use different filenamemangaformat for manga.

Thank you, that worked. I thought filenamemangaformat was only for content under the Manga tab.


[Security Improvement] Add extension method override for filling interim arrays.

Extension functions should give the option via method override to fill the interim arrays if desired such that upon garbage collection they will not reveal their contents.
Ex:
@Suppress("nothing_to_inline")
inline fun String.decodeBase16ToArray(fill: Char? = null): ByteArray? {
    return toCharArray.let { chars ->
        chars.decodeBase16ToArray()
            .also { if (fill != null) chars.fill(fill) }
    }
}

Instead of overloading method, add additional extension functions with the same name that takes a char which will fill the interim array.

Users can implement this themselves if needed on a case by case basis.