Clicking in a normal-mode vim pane wreaks havoc

[x] I am on the latest Hyper.app version

[x] I have searched the issues of this repo and believe that this is not a duplicate

OS version and name: macOS 10.12.1

Hyper.app version: 1.0.0

Issue
With vim in normal mode, clicking (e.g. to focus, but I do it frequently by accident) in that pane seems to enter a sequence of characters that causes some unwanted effect on the open document.
Usually, but not always, the word clicked on is searched for; often text is inserted, edited, or moved around, and sometimes code is (un)folded.
Needless to say, this is annoying and confusing; if the document wasn't definitely saved immediately prior (or only just opened) it takes care to unsure exactly the right amount of undos.

FWIW, I'm not able to replicate this in either normal mode or insert mode with:

macOS: 10.12.2
Hyper.app: 1.0.1

and one of:

vim: 8.0
neovim: recent HEAD build at 29e6515

In both normal and insert, the cursor is placed at the mouse position as expected.  I can even hold and drag and have the cursor follow the mouse without spurious input into (neo)vim.  Perhaps test against Hyper 1.0.1, in case this issue was fixed already.  Otherwise perhaps there's some environmental difference between our setups that's triggering this problem?

In my experience it's inconsistently reproducible. Some sessions it's constant and almost unusable. Other times it works correctly.

@chrisnojima Good to know. I haven't yet flipped to using Hyper full-time, mostly due to this issue, so my testing has been very limited.  I'll try to put it into heavier use and see if I can replicate.

I'll try also. Due to an unrelated high cpu usage bug I've had to abandon
using hyper as my primary terminal.
On Thu, Jan 5, 2017 at 6:41 PM John Whitley<EMAIL_ADDRESS>wrote:

@chrisnojima https://github.com/chrisnojima Good to know. I haven't yet
flipped to using Hyper full-time, mostly due to this issue, so my testing
has been very limited. I'll try to put it into heavier use and see if I can
replicate.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/zeit/hyper/issues/1291#issuecomment-270790540, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAfhU_wu5zN7QGeJIjxh3I_tHdqVW3f5ks5rPX-UgaJpZM4LTGTu
.

This should probably be closed as dupe of https://github.com/zeit/hyper/issues/95

@therealplato It is similar, but the title of #95 should then at least be changed to expand the scope to all mouse events I suppose. It would seem a little strange that @jwhitley posted there in agreement and here to say he cannot reproduce the issue though. Strange both to view if merged, and as evidence against it being the same underlying issue.
To be honest, this and another issue have stopped me using Hyper at least for the time being, so I won't dig further into this at the moment.

@OJFord I just retested.  On Hyper v1.0.1, the last I'd tried, clicking and mouse scrolling was (still) working great for me in neovim.  Then I accepted the upgrade to latest shipping, v1.3.1 at this writing. At first, mouse-scrolling produced a "reproducible once" issue where it flipped nvim into insert mode and started blasting junk into the buffer  (imagine an nvim "DOOM-nailgun-of-letter-A" plugin.  :-pppppp )
On subsequent attempts, I noticed that mouse-click-to-position-cursor does nothing; it's as if I didn't click at all.  Mouse scrolling worked, and didn't enter insert mode, but seemed "jankier" in a way between the trials, and relative to my brief test of v1.0.1, resurrected some form of the bounce-at-buffer-ends issues I've seen before.  Mouse scroll to the top or bottom end of a file should just stop at some point, not "bounce back" a little.
It's possible that there's some kind of race condition going on here.  Maybe my Mac is consistently a touch faster (or slower! esp. due to other input-related stuff running on my system.) than other testers here, and that's partly shielding me from seeing the worst this bug has to offer.  Still, Hyper's not yet into robust, usable territory for me either.


Proxy update with reboot: update restarts instead of continuing

We're planning to use Device Update for IoT Hub for an embedded device (ARM) which is running a custom-built Linux.
To evaluate the build, deployment, and operation of the device update agent, I've created a "manual" build of DUA 1.1.0 in a Debian 11 VM. I.e. I did not use apt packages for the installation, but I built the device agent in the VM (including its dependencies).
As we're planning to use proxy updates I've written

a custom component enumerator,
a custom flash update handler,
and a custom child device update handler.

The update package contains 6 steps

Step 1: The flashing of the main device firmware.
Steps 2 to 6: Storing update packages for child devices (which can become active at a later point and will get updated then).

After step 1 a reboot is required, because it's an A/B update and we have to switch slots.
The custom flash update handler requests a reboot after the install step by calling workflow_request_immediate_reboot(workflowData->WorkflowHandle);
Setting the return value of
ADUC_Result flash_update_handler::Install([[maybe_unused]]const tagADUC_WorkflowData* workflowData);
to
ADUC_Result_Install_RequiredImmediateReboot
doesn't seem to be enough and doesn't trigger a reboot.
I find this weird because I have to implement an interface, but the correct behavior of the extension relies on side effects and not just the contract defined by the interface. But that's a different story.
Unfortunately, the reboot seems to interrupt the logging. The last line I see in the journal is

Jul 31 12:01:25 AducIotAgent[2571]: 2024-07-31T10:01:25.4072Z 2571[2589] [I] Loading extension 'foo/flash:1'. Reg file : /var/lib/adu/extensions/update_content_handlers/foo_flash_1/content_handler.json [LoadExtensionLibrary:85]

So I'm not quite sure what happens after the install step and before rebooting.
After the VM reboots the DUA restarts. But it doesn't seem to continue the update where it left off, but restarts enumerating all components again and checks if they are installed.
Now, step 0 (the flashed component) reports that it is already installed. The other components of course do not and thus get installed.
In the end, all components are updated.
 The reason for this is, that the update restarted and did not continue.
Is this normal/expected behavior or am I doing something wrong? E.g. in the custom flash extension or the DUA configuration.

@D-r-P-3-p-p-3-r , first, thank you for your feedback and detailed information.
If the step_0 resultCode is 603 (already installed), this probably mean that the 'Is_Installed' logic for the step_0, returned '900'  (ADUC_Result_IsInstalled_Installed). Please double check your logic in IsInstalled function.
If you need to perform additional tasks (in step_0) after the firmware has been updated, and device rebooted, you should make sure that the IsInstalled doesn't return 900 until all tasks has been completed successfully.
Please let me know

The component is already completely installed after the reboot (in the new slot). So isInstalled should and does return 900. I was just surprised that in stepResults it shows 603.
After the reboot this interpretation is correct. Looking at the complete update (including the update part before the restart) this status seems weird/surprising. For somebody looking at this naively (like me), it looks like the component was up-to-date all along. Which it wasn’t. It wasn’t installed as the update started.
But after checking the DUA code this seems to be the way things are implemented. I guess it's a drawback stemming from the design choice only to update the twin at the very end of the update.


Bootcamp/ implement crud operations of entities

Members of the team have chosen to implement the following models:

[x] City - Yakimov and PepiPetrov
[x] Country - Dimitar Markov
[x] BankAccount - Ivan Kraev
[x] Document - Stilian Nikolaev
[x] Campaign types - PepiPetrov
[x] Person - PepiPetrov
[x] Beneficiary - PepiPetrov
[x] Coordinator - Dimitar Dimitrov
[x] #88 - dplamenov
[x] Donation - Angelina Yakimova
[ ] Expense - Petar Dzhunov
[ ] Company - Todor Belchev

@TodorBelchev
@PetyrDzhunov
Please share if you're going to deliver the entities you're assigned to or we can distribute them to other contributors?

Distribute mine to other person , please :)

Distribute mine too.


Modifying files outside of Atom creates ENOENT errors

Some repro steps that I gathered from the existing issues:

Have a file open in branch something that doesn't exist in branch atom
git checkout atom
ENOENT :boom:
OR
Have a file open in Atom that will be affected by git rebase
git rebase
ENOENT :-1:
OR
Just simply rename a file outside of Atom that's currently open inside of Atom.

Are you able to reproduce these?

No on latest master.
My steps:
mkdir gittest
git init
nano test (input test into it, then save and close)
git add test
git commit -m "Initial commit"
Open test up in Atom
git checkout -b test
rm test
git add test
git commit -m "Remove test"
git checkout master
Nothing happened, though I did notice that the close icon doesn't change into the "unsaved changes" icon until you make a change within the file.

Just updated the title and description to better describe what's happening.
I still can't reproduce this though even with the new steps provided in #6361.

Man, this issue is annoying me. Whenever I want to switch branches, I first have to close all open files in atom to work around it.

I tried to build a reduced test case like the one you described above, but can’t reproduce the bug, yet it is happening in all my projects.

:( What system? I still have never seen this

I’m on OS X Yosemite (10.10.3).

Repro steps from @halhenke (haven't tested these):
1 Open a new tab in a window associated with a saved project
2 Save the contents as a new file
3 Leave the tab open & close the window/project (you can leave Atom itself running)
4 Delete the file (its importnant that you close the window/project first - otherwise Atom keeps track of the files relocation to the Trash).
5 Reopen the project. You should have errors about the file being missing.

@50Wliu I have tried the above steps and they indeed trigger the error.

I'm needing to 'git rebase' regularly in order to squash commits.  Having files open in Atom during that process results in Atom and/or the git-diff package getting very confused resulting in an inaccurate representation of changes.

This seems to have been fixed as there haven't been any more reports.
If anyone is still experiencing this issue please comment here.

Same issue


Nomenclature: parameters, variables, functions...

This is just so we have an official place where the nomenclature is defined.
Do we agree on the following definitions:

Parameters:
- They are constant and used to parameterize the model
- They are typically represented by a scalar (int of float) or a flag (bool or str)
- They are exogenous
Variable:
- They are quantities that can vary in time and space (and possibly other dimensions)
- They are computed by the model / solver in a consistent way (they are endogenous)
- They are typically represented by numpy arrays
functions:

They can depend both on parameters and variables
They are callable objects

I wanted to clarify because when @DaluS asked for a fusion between _def_parameters.py and VariableDictionnary.py I noticed these were 2 sets of different objects (parameters vs variables), so I wasn't sure whether you wanted parameters and variables to have the same fields (name, type...) of whether they should be treated separately, with different fields.
I figured that giving them similar fields would make sense and that you would have said it if you thought otherwise, so I did give parameters in _def_parameters.py some fiedls taken from VariableDictionnary.py.
Can you confirm I interpreted correctly ?
This is also the place to discuss those details, so don't hesitate.

This is just so we have an official place where the nomenclature is defined.
Do we agree on the following definitions:

Parameters:

They are constant and used to parameterize the model
They are typically represented by a scalar (int of float) or a flag (bool or str)
They are exogenous

Yes. BUT it is possible to have array/list of them, with a size consistent with parNum(['Nx']). In that case, the actual architecture will run in parrallel all systems with for each a different parameter value (Very practical to see influence of initial conditions/ sensibility, or do system interactions through coupling matrices). An array of parameter can be a proxy of parameter evolution through space. I take advantage of python implicitely knowing that scalararray is an array of the scalar everywherearray.
They should not be varying in the model (and as such not stocked with variables), BUT it should be easy for the modeller to change from a parameter to a variable (for example, we use here constant interest for debt r, but a modeler could decide that now r is a function of your solvability)

Variable:

They are quantities that can vary in time and space (and possibly other dimensions)
They are computed by the model / solver in a consistent way (they are endogenous)
They are typically represented by numpy arrays

Variables will always be numpy aray, are endogeneous.

Some can be defined as "State variable" ( for example the output Y is defined by the capital K and the return of capital on input nu ), which are in that case defined through self.intermediaryfuncs .
Some can be defined as "differential variable", I.E. it's not the value which is defined but its derivate ( Capital K is defined by its evolution, like dK/dt = I - K*delta_k. Some state variables  are needed to define the evolution of "differential variable".
self.intermediaryfuncs contains both needed state variable to define the differential variables and some useful intermediary state variables "auxilliary variables" for the user to understand what is happening. For example, `g=dot{Y}/Y' is a state variable in goodwin-keen but its calculation is not needed to capture the dynamics.

functions:

They can depend both on parameters and variables
They are callable objects

Those functions are what I call intermediary variables, and indeed are depending of parameters and variables :)

I wanted to clarify because when @DaluS asked for a fusion between _def_parameters.py and VariableDictionnary.py I noticed these were 2 sets of different objects (parameters vs variables), so I wasn't sure whether you wanted parameters and variables to have the same fields (name, type...) of whether they should be treated separately, with different fields.
I figured that giving them similar fields would make sense and that you would have said it if you thought otherwise, so I did give parameters in _def_parameters.py some fiedls taken from VariableDictionnary.py.
Can you confirm I interpreted correctly ?

Yes ! I think it's practical to have them at the same place (at least in term of default value in a megadictionnary). We will need a practical interface for the user when he wants to modify these values (because looking at this very long list of variable/parameters to find one value and test it is quite heavy and slow). I did it in the existing code with Par.Modifications (params, parNum) which allow the user to define some new values.

This is also the place to discuss those details, so don't hesitate.

Good idea ! Here is what I think about :

All the "Typical values" should be stocked somewhere far from the typical user (_def_parameters looks great), however he should

a) check all values indeed taken in his model ( self.parameters for parameters, self.variables for differentially defined variables, the one we will solve)
b) be able to modify them (create an array with different values for example)

Intermediaryfuncs can be separated into two dictionnary :

a) The one needed ( the true intermediary)
b) The auxilliary values (solved on the side)

The order of functions in intermediaryfuncs should be enough to run f (maybe we need an 'order' list of variable since dictionnary's order is not always well defined if I remember well). The order for self.variable should not be useful as it doesn't rely on itself. Of course this order is important otherwise the system will call undefined variables and crash
in f, y dictionnary is reallocated at each timestep, variable per variable through dictionnary comprehension. This is I guess one bottleneck, there are two possibilities :

a) Initialisation of the dictionnary with np.zeros(parNum['Nx']) at each f iteration (no reallocation during one loop)
b) Pre-initialisation of the dictionnary y ( so that it is self.y ) with the relevant variables. This is the fastest numerically, but we should be very cautious the system indeed updates all variables and don't take the value from the iteration before
self. description should give 'help(self)' or something like

I create a new issue with a pull request with a part of the implementation

I think I did some bad classification, there is a third category which should exist :

extensive as Kapital for exemple
intensive as growth rate
dimensionless as lambda (or a reynolds number)

I havn't thought about that before, I should update the system on this

OK

This is now discussed in #47 with the new structure in mind


eval() error about variable_scope()

I run the code from official tutorial:
https://www.tensorflow.org/programmers_guide/variable_scope
with tf.variable_scope("foo", initializer=tf.constant_initializer(0.4)):
    v = tf.get_variable("v", [1])
    assert v.eval() == 0.4  # Default initializer as set above.
    w = tf.get_variable("w", [1], initializer=tf.constant_initializer(0.3))
    assert w.eval() == 0.3  # Specific initializer overrides the default.
    with tf.variable_scope("bar"):
        v = tf.get_variable("v", [1])
        assert v.eval() == 0.4  # Inherited default initializer.
    with tf.variable_scope("baz", initializer=tf.constant_initializer(0.2)):
        v = tf.get_variable("v", [1])
        assert v.eval() == 0.2  # Changed default initializer

the problem as below:
Cannot evaluate tensor using eval(): No default session is registered. Use with sess.as_default() or pass an explicit session to eval(session=sess)
with tf.Session():
    with tf.variable_scope("foo", initializer=tf.constant_initializer(0.4)):
        v = tf.get_variable("v", [1])
        assert v.eval() == 0.4  # Default initializer as set above.
        w = tf.get_variable("w", [1], initializer=tf.constant_initializer(0.3))
        assert w.eval() == 0.3  # Specific initializer overrides the default.
        with tf.variable_scope("bar"):
            v = tf.get_variable("v", [1])
            assert v.eval() == 0.4  # Inherited default initializer.
        with tf.variable_scope("baz", initializer=tf.constant_initializer(0.2)):
            v = tf.get_variable("v", [1])
            assert v.eval() == 0.2  # Changed default initializer

when i try with session the problem changed as below:
Attempting to use uninitialized value foo/v
 [[Node: foo/v/_0 = _Send[T=DT_FLOAT, client_terminated=false, recv_device="/job:localhost/replica:0/task:0/cpu:0", send_device="/job:localhost/replica:0/task:0/gpu:0", send_device_incarnation=1, tensor_name="edge_4_foo/v", _device="/job:localhost/replica:0/task:0/gpu:0"](foo/v)]]

this problem in both windows and linux
the platform is :
windows10 , python3.5 , tf.version 0.12.1
ubuntu, python2.7  , tf.version  1.1.0-rc2
how can I solve this problem?

You're on the right tarck!
I tend to use: with tf.Session() as sess rather than a default session. After that, you need to use sess.run(tf.global_variables_initializer()) and it should work.
This question is better asked on  StackOverflow since it is not a  bug or feature request. There is also a larger community that reads questions there. Thanks!


Rename all functions to calendar_...()

The googledrive package uses the convention with function names starting with drive_...().
I propose to rename all the functions to calendar_...() instead of gcalendr_...().
This is:

easier to type and read
and thus potentially less prone to errors

I politely want to oppose against the idea of prefixing all functions within a package with a package name or anything like it (like calendar_).
I personally find all prefixes of e.g. the stringr package (str_) very, very annoying and unneeded. If we all proceed with this, we will end up using functions like dplr_group_by and dplr_summarise to do our daily work. Would be a shame of the beautifully concise R language :smile:

Noted. Thank you.


CSV Not a Supported Data Format

$ hugo version
hugo v0.84.0+extended

I think this is a bit more of a "feature" than it is a bug... but the absence of this feature doesn't match (this) user's expectations that hugo supports CSVs. CSVs are not currently supported in the /data folder, even though hugo has CSV support through getCSV... Currently only YAML, TOML, JSON are supported, but it seems silly to not autoload a format we already have the code to parse.
To fix this, I think we should load CSV and TSV files from the data directory. Tabular data is particularly compelling for things like schedules or items where all attributes should be the same across entries.
Does this issue reproduce with the latest release?
unsure

An easy workaround for this limitation is a tool called miller.
other/foo.csv
"field_1","field_2"
"foo","bar"
"wibble","wubble"

mlr --c2j --jlistwrap cat other/foo.csv > data/foo.json

data/foo.json
[
  {
    "field_1": "foo",
    "field_2": "bar"
  },
  {
    "field_1": "wibble",
    "field_2": "wubble"
  }
]

And you can do the same with TSV...
mlr --t2j --jlistwrap cat other/foo.tsv > data/foo.json

@jmooring i'm ok on a workaround, it's easy enough to do with a number of tools. Thanks for the suggestion though :)
it's convenient to keep files (e.g. for git) in the format that makes most sense for editing them, and I think CSV should be natively supported in the data dir anyways.

An other workaround can be found here : https://discourse.gohugo.io/t/error-message-failed-to-read-data-from-csv-even-it-is-working-fine/10763/7

Use case:
{{ $author := where site.Data.authors "id" "foo" }}

With CSV as the data source, we either need to:
a) Provide a mechanism to specify unmarshal options (delimiter, comment), OR
b) Only support CSV files with comma delimiters and without comments
In either case, we need to handle header rows. See #8859.

I have put this issue back into the Proposal state, as I'm not sure it's worth it,  considering the ambiguities.
I have a working branch (that I digressed away from with another working branch) that more or less makes Hugo much more memory efficient -- and it makes transform.Unmarshal the very best option for short lived data (the problem today is that we cache entries in transform.Unmarshal and never throw it away -- meaning you cannot effectively just load a 100MB JSON for every page).

One "hotfix" option would be to just ignore csv/tsvs placed in the data directory? This is at least a bit better than throwing an error, and then they can be accessed with getCSV... it'd at least be idiomatic w.r.t. where to store the data


from-txt-pt: assemble paragraphs

added option --paragraphs that ensures that preformatted text gets combined into paragraphs, to avoid strangely cut off sentences used in training.

Done with 3f8fffd92cbe50ad4a8c12ea79195785099b4d05


Chat: Fix "Ask Cody to Explain"

Description

Pass the correct arguments to the cody.action.chat command
Add type safety to avoid this mistake again

closes https://github.com/sourcegraph/cody/issues/2970
Test plan

Try "Ask Cody to Explain"
Check there is no error

Is there an easy way to test this?

@vadi2 If you want to run this locally, you can checkout the branch locally and follow these docs: https://github.com/sourcegraph/cody/blob/main/doc/dev/index.md

% asdf install
Install plugins first to be able to install tools

Which plugins should I install?

@vadi2 Try this quickstart from the repo root:
pnpm install && pnpm build && cd vscode && pnpm run dev
That should work if you have NodeJS installed.
I've added an e2e test for this too

No luck testing it - same issue in the 2nd vscode instance that pops up when I run the Launch VS Code Extension (Desktop) task, but it could be that I'm doing something wrong.

@vadi2 Might have been an issue with our local flow. We need to do a check on the instructions for first clones.
I've merged this now so will ensure this is included in the next release


"Open all issues" for GitHub Projects

The feature open-all-notifications adds a button the the Notifications list to open all of them in new tabs; feature batch-open-issues adds a similar link for issues that are selected in issues lists.
I would love to have a similar button for GitHub Projects board columns.
Example URL: https://github.com/orgs/apache/projects/9
It could appear somewhere in the column header, possible area highlighted yellow here:

When clicking it, it would open all the currently displayed issues of the column (which is influenced by the "Filter Cards" input on the top right).
Using this button would make it much easier to go through many issues in one column in batches. Right now I have to scroll through the column and click them one by one.

None of the maintainers use Projects, this feature would be best part of ZenHub

Out of curiosity: If someone else would contribute the feature code for that, would you accept it or is Projects stuff generally out of scope for the extension?

It's out of scope, at most we hide stuff via CSS but other than that Projects requirements vary too much across teams and suggestions are rather large. I'd still have to review such PRs and there's already too much on the plate.

I totally understand.
Will fork and see if I can create my own variant then.


Lambda Layers create incorrect output_shape when used on array of Tensors

This code crashes with this output:
Exception: Only layers of same output shape can be merged using sum mode. Layer shapes: [((None, 10), 10), (None, 10)]
import keras
from keras.layers import Input, Dense, merge
from keras.models import Model
from keras.layers.core import Lambda

def dense_fn(data_arr, output_dims):
    out_arr = []
    for layer in data_arr:
        out_dense = Dense(output_dims)(layer)
        out_arr.append(out_dense)

    return merge(out_arr, mode='sum')

numeric_columns = 10
input = Input(shape=(numeric_columns,), name='numeric_input')

concat_layers = []
hidden = input
concat_layers.append(hidden)
hidden = Dense(10)(hidden)
concat_layers.append(hidden)
hidden = Lambda(dense_fn, output_shape=(10,), arguments={'output_dims':10})(concat_layers)
concat_layers.append(hidden)
hidden = merge([hidden, input])

model = Model(input=input, output=hidden)

I spent some time tracking it down and it seems to be due to the Lambda layer not dealing with lists of inputs. In TensorFlow, simply removing the output_shape parameter fixes this issue since TensorFlow figures out the correct shape.
I'm not really sure what the right fix for this is; if the architecture doesn't support it, then maybe just adding an exception saying that output_shape and arrays of inputs are incompatible?

If you have Dense layers inside a Lambda layer's function, remember that the weights of the Dense layer will not be trained. They will be frozen with their initial random weights. What are you trying to do here?

Oh, thanks for the pointer. That would explain. Why it didn't train well. The code above is just a repro for the bug though.
In my actual network I'm trying to play with the ideas from this paper: http://arxiv.org/abs/1608.06993 but without explicit concatenations.

When you have a list of tensors, you use the Merge layer (or merge function). You can use the mode argument to specify your function.

Not a bug, Lambda layer accepts only a single tensor.

@farizrahman4u There might actually be a bug!? When I run the "The Merge layer" example from the Keras documentation (Guide to the Sequential model) I get
TypeError: <lambda>() missing 1 required positional argument: 'y'
The code is the same from the example with this merge layer:
merged = Merge([left_branch, right_branch], mode=lambda x, y: x - y)
I'm using up-to-date Theano & Keras. I'm not sure though, if this is related to the OP's problem

The documentation is wrong.
merged = Merge([left_branch, right_branch], mode=lambda x: x[0] - x[1])

I have made a PR to fix the docs : #3630


update zh-cn.json, translate more

translate more with open AI translation
Describe your changes :

I worked on the ..... because ...
i want translate  message to chinese laguage

Type of change :

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

Frontend Preview (Screenshots) :
For frontend related change, please link screenshots of your changes preview! Optional for backend related changes.

Checklist:

[x] I have read the CONTRIBUTING document.
[ ] I have commented on my code, particularly in hard-to-understand areas.
[ ] I have added tests that prove my fix is effective or that my feature works.
[x] All new and existing tests passed.

Reviewers

@benyuereal Thanks for the PR. Can you please fix the merge conflicts and push the changes.
Looking forward to merge this in.

@benyuereal 嗨，哥们，记得处理下这个PR

@qiangxue1206 @harshach ok, copy that, i working on this pr(好的，收到 我正在处理这个pull请求)

Thanks @benyuereal

hi @benyuereal can you please address the merge conflicts, and mentioned me here. I will merge it ASAP

hi @benyuereal can you please address the merge conflicts, and mentioned me here. I will merge it ASAP

i solved already, check and review for merge please

halo, help review this pr please @harshach

@chirag-madlani can we merge this in?

Hi @benyuereal ,
Can you resolve the conflict and ping me here? I will merge it in

Hello @benyuereal , thanks for the PR, however, We already have localization changes for zh-cn, and a lot of changes are duplicates, closing the PR.


HailMessage on connect

Lidgren had useful feature, you can attach custom packet to the connection packet to provide fast and simple authentication:
public override NetConnection Connect(NetEndPoint remoteEndPoint, NetOutgoingMessage hailMessage)
In that case i can just check the data and deny (or accept) the connection, otherwise i have to accept the connection, check auth and drop later in case of invalid credentials

This in progress (in packetprocessor branch)

How soon are you going to merge it with master ?

@Agasper oh. This is hard question) Right now i'm busy a little with main work.
I think at end of next week - i will merge.

I'd be interested in this too. It would be nice to see it included in a release soon.

@ValooFX i am trying to complete this. Its almost done but have some problems. And i don't have time. Main work take all time.


Rewrite ClickOnce signing to sign files directly instead of via the .clickonce zip mechanism

This is my first-draft implementation of signing for clickonce files that doesn't require you to zip up everything into the .clickonce file. Instead, you can just point the tool at your .application file (or .vsto) and it will figure out which other files need to be signed and sign them all for you. The actual signing still happens in a temporary path (as it does for other file types) and then the results are copied back in-place to the original location.
I wrote this a couple of months ago but finally got approval from my company to contribute it back to the project. I've rebased it onto the latest main this morning.
We're not using this in production yet; we'd prefer to wait until this work has been accepted into the upstream repository before we build on it internally. I'm happy to work with the maintainers and change the code/design around as-needed to get this merged.
Resolves #643 and #470.

@dotnet-policy-service agree company="Trayport"

Yeah I figured it was fine to just remove it all since as you say, it's still pre-release and it simplifies things considerably. I'll sort out the docs + error message now.

@jackmtpt, first, big thanks for the contribution. It's appreciated.
Second, I reviewed your PR, and it looks good. Thank you for adding tests.
I had some minor feedback, which I offered up as a commit which you can simply incorporate.
Please rebase on latest main and ping me when ready for re-review. Thanks!

Cheers - your changes look good and I've applied your commit. Rebased to main.


Hello! Can the diffCD loss be directly applied to two corresponding clusters of point clouds?

Hello! Can the diffCD loss be directly applied to two corresponding clusters of point clouds?

Hi, I'm not sure I understand the question. But if there are multiple clusters in the input point cloud the method should still work

Thank you for your reply! I have a question regarding Equation (10) in the paper. It seems that this formula doesn't compute the distance directly between two point clouds like the Chamfer Distance (CD) does. Instead, it involves sampling from the implicit surface. Could you clarify if there's a way to adapt this formula to directly compare two point clouds without surface sampling? I'm looking for a loss function that works more similarly to CD, where the point clouds are directly compared.

I see! DiffCD is inherently a method that minimizes the distance between a point cloud and an implicit surface, so it is not really suitable for matching two point clouds. Something like iterative closest point might make more sense in your case


Add more test to cover Load-base-split

Description
TiKV crashes in the previous code which means the unit tests do not cover this case i.e. Task::AutoSplit. I find it is added from #6663. We need to add more test to cover it
Score

900

Mentor

@lhy1024

Recommended Skills

Rust

/label sig/scheduling

/label high-performance

/label difficulty/easy

I don't see any crashes in the reference issue?

I don't see any crashes in the reference issue?

The fixed pr is #8585 and I hope we can add more unit test to avoid similar problems

/pick-up

add some test in #10543 and challenge-program is end


Update README.md

Improved instructions. I think this is much clearer and makes it easier for a new/inexperienced user to join the project.

Should make 1 change saying that when making a huggingface token, it should be set to write not read.

Thank youuuuu, this is a lot clearer - and I didn't realize that I forgot to automatically create OUT_DIR in the script, great catch!!


PathTracing

The addition of the pathtracer feature has brought to light an issue related to the random number generation using the PCG class that was not discovered during testing. I am opening the following issue to address the bug.


Block structure should be updated in accordance with Rusk

The Block structure should have the Tx field updated according to the Tx structures defined in the dusk-network/dusk-protobuf.
This issue includes includes removing dependencies to data/transactions package which uses legacy transaction creation

Fixed via #450


FIX Use ORM functions to perform eager loading instead of raw query

Description

The original query was a hardcoded and a rather hacky way of retaining the ordering of the child objects while fetching from a many_many table. The method used to retain this order was 'FIELD', which is a MySQL exclusive feature and breaks in other sql engines. This change converts the query to properly make use of the ORM functions and use the ordering used in the original query directly.
Manual testing steps

Create and populate two DataObjects that have a many_many relation between them
Perform an eagerLoad on DataObject::get() and convert the result to an array
Observe that the new SQLSelect query is performed correctly
Observe that grabbing the first relation entry from the first array object is the expected DataObject and does not perform another query

Issues

#11503

Pull request checklist

[x] The target branch is correct

See picking the right version

[x] All commits are relevant to the purpose of the PR (e.g. no debug statements, unrelated refactoring, or arbitrary linting)

Small amounts of additional linting are usually okay, but if it makes it hard to concentrate on the relevant changes, ask for the unrelated changes to be reverted, and submitted as a separate PR.

[x] The commit messages follow our commit message guidelines
[x] The PR follows our contribution guidelines
[x] Code changes follow our coding conventions
[x] This change is covered with tests (or tests aren't necessary for this change)
[x] Any relevant User Help/Developer documentation is updated; for impactful changes, information is added to the changelog for the intended release
[ ] CI is green

Alternative proposal: Optimize sorting logic with CASE
Your solution is a clean implementation that integrates well with the SilverStripe ORM, and it avoids raw SQL usage. However, I would like to propose an alternative that simplifies the query and optimizes performance, especially for large datasets.

Differences between the two approaches

Aspect
Your solution
Proposed alternative

Performance
Relies on an additional join (addLeftJoin) and follows $fetchedOrderBy, which may introduce overhead for large datasets.
Uses a CASE SQL clause for sorting, avoiding unnecessary joins.

Compatibility
Compatible with various SQL databases, avoids raw SQL.
Compatible with various SQL databases, avoids raw SQL but uses a manual CASE.

Conformity
Fully conforms to SilverStripe ORM standards via SQLSelect.
Bypasses ORM methods, introducing direct SQL for simplicity and efficiency.

Maintainability
More maintainable for developers familiar with SilverStripe ORM.
Slightly less maintainable due to manual SQL logic.

Use Case
Preferred when maintaining conformity and ORM standards.
Ideal for high-performance requirements without additional joins.

Proposed implementation
Below is the alternative logic for the join records:
$joinRows = [];
if (!empty($parentIDs) && !empty($fetchedIDs)) {
    // Construct CASE-based ORDER BY clause
    $orderClauses = [];
    foreach ($fetchedIDs as $index => $id) {
        $orderClauses[] = "WHEN {$childIDField} = {$id} THEN {$index}";
    }
    $orderByCase = implode(' ', $orderClauses);

    // Construct optimized query
    $joinQuery = "
        SELECT *
        FROM {$joinTable}
        WHERE {$parentIDField} IN (" . implode(',', $parentIDs) . ")
          AND {$childIDField} IN (" . implode(',', $fetchedIDs) . ")
        ORDER BY CASE {$orderByCase} ELSE 999 END
    ";

    $joinRows = DB::query($joinQuery);
}

Unit test
Below is the unit test validating the proposed implementation:
<?php

namespace SilverStripe\ORM\Tests\DataListTest\EagerLoading;

use SilverStripe\Dev\SapphireTest;
use SilverStripe\ORM\DB;

class CustomOrderEagerLoadingTest extends SapphireTest
{
    /**
     * Test that the ORDER BY CASE logic correctly sorts the results
     */
    public function testOrderByCaseSorting()
    {
        // Define test data
        $parentIDs = [1, 2];
        $fetchedIDs = [3, 2, 1]; // Expected order
        $expectedOrder = [3, 2, 1];

        $joinTable = 'TestJoinTable';
        $parentIDField = 'ParentID';
        $childIDField = 'ChildID';

        // Create a temporary test table
        DB::query("
            CREATE TEMPORARY TABLE {$joinTable} (
                {$childIDField} INT NOT NULL,
                {$parentIDField} INT NOT NULL
            )
        ");

        // Insert mock data
        DB::query("
            INSERT INTO {$joinTable} ({$childIDField}, {$parentIDField})
            VALUES (1, 1), (2, 2), (3, 1)
        ");

        // Construct the ORDER BY CASE logic
        $orderClauses = [];
        foreach ($fetchedIDs as $index => $id) {
            $orderClauses[] = "WHEN {$childIDField} = {$id} THEN {$index}";
        }
        $orderByCase = implode(' ', $orderClauses);

        // Build the query with ORDER BY CASE
        $query = "
            SELECT *
            FROM {$joinTable}
            WHERE {$parentIDField} IN (" . implode(',', $parentIDs) . ")
              AND {$childIDField} IN (" . implode(',', $fetchedIDs) . ")
            ORDER BY CASE {$orderByCase} ELSE 999 END
        ";

        // Execute the query and convert results to an array
        $result = DB::query($query);
        $rows = [];
        foreach ($result as $row) {
            $rows[] = $row;
        }

        // Extract the actual order of fetched ChildIDs
        $actualOrder = array_column($rows, $childIDField);

        // Assert that the results are ordered as expected
        $this->assertEquals(
            $expectedOrder,
            $actualOrder,
            'The results should maintain the custom order defined by fetchedIDs'
        );
    }
}

in addition to that, maybe it would make sense to add in the abstract database class a sortByField function which would output the CASE WHEN helper (instead of inlining the code just for the eager loading part).
And that would mean that the mysql database instance could override this function and use its custom FIELD method which is likely more efficient (and nicer to read, anyway)

in addition to that, maybe it would make sense to add in the abstract database class a sortByField function which would output the CASE WHEN helper (instead of inlining the code just for the eager loading part). And that would mean that the mysql database instance could override this function and use its custom FIELD method which is likely more efficient (and nicer to read, anyway)

Thank you for your insightful suggestion. I agree that introducing a sortByField method in the abstract Database class would provide cleaner and more reusable code. This approach ensures that the sorting logic can be encapsulated in one place and overridden for specific database engines, such as MySQL's FIELD() function. Below, I've outlined the necessary changes and the implementation for your review.

Proposed implementation: sortByField
Changes to Database
Add the sortByField method to the Database class, using CASE WHEN as the default implementation for databases that do not support optimized sorting.
/**
 * Generate SQL for sorting by a specific field using CASE WHEN logic.
 *
 * Subclasses can override this method to provide optimized implementations
 * (e.g., using MySQL's FIELD method).
 *
 * @param string $field The name of the field to sort by.
 * @param array $values The values to order by.
 * @return string SQL snippet for ordering.
 */
public function sortByField(string $field, array $values): string
{
    $caseStatements = [];
    foreach ($values as $index => $value) {
        $caseStatements[] = "CASE {$field} = '" . addslashes($value) . "' THEN {$index}";
    }

    return "CASE " . implode(' ', $caseStatements) . " ELSE 999 END";
}

Changes to MySQLDatabase
Override the sortByField method in MySQLDatabase to leverage MySQL's FIELD() function for better performance and readability.
/**
 * Generate SQL for sorting by a specific field using MySQL's FIELD function.
 *
 * @param string $field The name of the field to sort by.
 * @param array $values The values to order by.
 * @return string SQL snippet for ordering.
 */
public function sortByField(string $field, array $values): string
{
    $escapedValues = array_map(fn($value) => "'" . addslashes($value) . "'", $values);
    return "FIELD({$field}, " . implode(', ', $escapedValues) . ")";
}

Changes to DataList
Replace the inline sorting logic in the eager loading implementation with a call to sortByField.
// Get the join records so we can correctly identify which children belong to which parents
// If there are no parents and no children, skip this to avoid an error (and to skip an unnecessary DB call)
// Note that $joinRows also holds extra fields data
$joinRows = [];
if (!empty($parentIDs) && !empty($fetchedIDs)) {
    // Use sortByField to generate the ORDER BY clause
    $orderByClause = DB::get_conn()->sortByField($childIDField, $fetchedIDs);

    // Construct the query
    $joinQuery =
        'SELECT * FROM "' . $joinTable . '" ' .
        'WHERE "' . $parentIDField . '" IN (' . implode(',', $parentIDs) . ') ' .
        'AND "' . $childIDField . '" IN (' . implode(',', $fetchedIDs) . ') ' .
        'ORDER BY ' . $orderByClause;

    // Execute the query
    $joinRows = DB::query($joinQuery);
}

Unit test
The following unit test validates the functionality of the sortByField method in Database:
<?php

namespace SilverStripe\ORM\Tests\DataListTest\EagerLoading;

use SilverStripe\Dev\SapphireTest;
use SilverStripe\ORM\DB;

class CustomOrderEagerLoadingTest extends SapphireTest
{
    /**
     * Test that the sortByField method correctly generates an ORDER BY clause
     * and the query returns results in the expected order.
     */
    public function testSortByFieldIntegration()
    {
        // Define test data
        $parentIDs = [1, 2];
        $fetchedIDs = [3, 2, 1]; // Expected order
        $expectedOrder = [3, 2, 1];

        $joinTable = 'TestJoinTable';
        $parentIDField = 'ParentID';
        $childIDField = 'ChildID';

        // Create a temporary test table
        DB::query("
            CREATE TEMPORARY TABLE {$joinTable} (
                {$childIDField} INT NOT NULL,
                {$parentIDField} INT NOT NULL
            )
        ");

        // Insert mock data
        DB::query("
            INSERT INTO {$joinTable} ({$childIDField}, {$parentIDField})
            VALUES (1, 1), (2, 2), (3, 1)
        ");

        // Use sortByField to generate the ORDER BY clause
        $orderByClause = DB::get_conn()->sortByField($childIDField, $fetchedIDs);

        // Build the query with sortByField
        $query = "
            SELECT *
            FROM {$joinTable}
            WHERE {$parentIDField} IN (" . implode(',', $parentIDs) . ")
              AND {$childIDField} IN (" . implode(',', $fetchedIDs) . ")
            ORDER BY {$orderByClause}
        ";

        // Execute the query and convert results to an array
        $result = DB::query($query);
        $rows = [];
        foreach ($result as $row) {
            $rows[] = $row;
        }

        // Extract the actual order of fetched ChildIDs
        $actualOrder = array_column($rows, $childIDField);

        // Assert that the results are ordered as expected
        $this->assertEquals(
            $expectedOrder,
            $actualOrder,
            'The results should maintain the custom order defined by fetchedIDs'
        );
    }
}


Ocean shader breaks when placing Crest under sub folder

Describe the bug
Reported on discord. Ocean shader breaks when placing Crest under sub folder. This is due to use of hard-coded paths.
Versions
Crest 4.5
To Reproduce
Move Crest folder into a sub folder.
Additional context
Discord user suggested we use a local path ("./ShadergraphFramework/") which appeared to work for them. These paths are generated by Shader Graph.

Oh nuts. That's dodgy!
Guess I'll fix them up in the generated shader

Is the ./ at the beginning required? I tried without and it seemed to work but happy to include it if its needed

Works fine without it

Just noting here for the time being. There are still ABS paths that need fixing outside of the shader in C#. We can use GUIDs to get the path instead. Or maybe relative path. Will look later.

Can confirm, works fine without "./" rel-path prefix.
Can you elaborate which ABS paths in C#?

They are only for the editor. Searching Assets/Crest/Crest will show either one or two files used in the editor. Not that important really.
The fix for the shader will be out for 4.6.

4.6 is out which fixes the path issue for the shader.


Indentation on the very first line

$ coffee -bsp
  1
  2

Error: Parse error on line 1: Unexpected 'INDENT'
...

$ coffee -bsp
  # 1
  2

2;

$ coffee -bsp
  1

1;

Seems to be fixed on master...

Nope. See the line number mismatch in my last comment.


fix(generate:typetests): Generate using prepped data when branch has no config

The typetests run in two phases, preparation and generation. During the generation phase, the current code fails when someone is running on an "unknown" branch. The tool just skips the package completely, leading to outdated type tests.
This change caches the previous version style in the package's typetest configuration at preparation time. Then when it is run in generation mode, it falls back to the cached value if the branch is unknown.
This preserves the ability to override the settings at the command line and in a branch config, while ensuring that type tests get updated as people make changes without them having to pass special arguments.
A more complete fix would refactor the code so that prep and generation are separated completely so that generation needn't know the previous version style at all. However, that change is bigger and I don't want to regress anything.

Looks fine overall. I'm just not sure how exactly (or if) it addresses the case of test/ branches. Seems like type test generation might just be skipped for them, after removing the "*": "minor" configuration? Which might have been the behavior before we added that workaround...?

With this change, once I run prepare again, every package will have a cached previous version style based on the arguments used during prep. Then when generation is later run on a test branch or any other unknown branch, it will use the style in the package.json.


Add Contributing.md

I want to add contributing.md file to help the contributors that how to make issue and how to make a pull request.
@sharmavikas4
Please assign this Issue to me..

@rajatsinghal02 You can proceed with adding contributing.md.


Added security configs for the docker-in-docker-compose example

While trying to get this to work for my own project, I realized most of the examples set the security permissions in devcontainer.json:
	"runArgs": [
		"--cap-add=SYS_PTRACE",
		"--security-opt",
		"seccomp=unconfined"
	]

When overriding docker-compose, the runArgs field is ignored, preventing vscode's debugger from working.
To get over this limitation, we need to define the security permissions in the service in the docker-compose file.
I've updated the docs here: https://github.com/microsoft/vscode-docs/pull/2633

@AntonNguyen This is a good suggestion! But, as I mentioned on the docs PR, this is only required for C++, Go, and Rust which is why it's not included everywhere. That said, I think if the comment before this is updated to specifically say this is optional and only required for certain languages, we can likely include it without worrying anyone.
Beyond this one, there's a number of others that likely should include this as an optional reference (docker-in-docker non-compose, kubernetes-helm, existing dockerfile / docker compose, possibly templates).  I can PR those updates separately.


Integration with RDBMS

Is there any way to integrate the model with an RDBMS instead of giving the table input each time for prediction?

No, I am afraid, there is not such integration.
Currently the table needs to be encoded from scratch for every question.
We also only support a single table at this point.

Hi @muelletm , any references (research papers/algos) on multiple-table support?


fix(next-plugin): locale to false in rewrites

@migueloller would you consider this ready to merge? I pulled it into a repro and tried it for myself. Seem great to me.
I used this page and verified that paths for /, /foo, /fr, /fr/foo were resulting in the pages and locals we were expecting
export function getStaticProps(ctx: any) {
  return {
    props: {
      ctx: JSON.stringify(ctx),
    },
  };
}

export default function About(props: any) {
  const router = useRouter();

  return (
    <div>
      it is working {props.ctx} {JSON.stringify(router.query, null, 2)}
    </div>
  );
}

One thing we could change is conditionally adding locale: false based on whether or not they provide the key i18n.

When leveraging i18n support with rewrites each source and destination is automatically prefixed to handle the configured locales unless you add locale: false to the rewrite. If locale: false is used you must prefix the source and destination with a locale for it to be matched correctly.

It seems that this sentence is incorrect "If locale: false is used you must prefix the source and destination with a locale for it to be matched correctly."
From my repro it seems that setting locale to false just enabled the root route. But sub routes already work
https://user-images.githubusercontent.com/20950876/206020605-af10efe1-e73e-446c-b30c-c92f07c01029.mp4

@joshuawootonn, if you've tested it and it works well, then sure, let's ship it!


Dispatcher filters: Unable to use regular expressions in path/protocol/query/url

As defined in the documentation: https://helpx.adobe.com/experience-manager/dispatcher/using/dispatcher-configuration.html#ExamplefilterUsingRegularExpressions
Regular expressions can be used if the value is between single quotes instead of double quotes. However, in the erb-template the values are always encapsulated in double quotes.

Could we come to a consensus here to get this feature in the module? It would really simplify the config.

I am preparing to release a dedicated Dispatcher module here:
https://github.com/adobe/puppet-dispatcher
I will be deprecating support for the Dispatcher in this module and will not enhance it any further.
The Adobe Puppet Dispatcher module supports both regex and globs OOTB, in a much more efficient manner.


Yarn plugin out of date

As yarn is changing at pretty rapid pace, the status of the autocomplete is behind. Not a huge deal, but I wanted to point start an issue. For example, it's yarn list but yarn ls is what is autocompleted.

It also might be worth trying to make a zsh completion from this bash completion script. https://github.com/dsifford/yarn-completion
It pull in the script names from package.json and adds them as commands.

https://github.com/zsh-users/zsh-completions support up-to-date yarn completions. FYI.


remove-additional on schema with allOf fails

What version of Ajv are you using? Does the issue happen if you use the latest version?
<EMAIL_ADDRESS>Ajv options object

fails> ajv -s bug.schema.json -d bug.test.json --remove-additional=all
works> ajv -s bug.schema.json -d bug.test.json

JSON Schema

{
	"$schema": "http://json-schema.org/draft-06/schema#",
	"id": "file:///bug.schema.json",
	"definitions": {
		"A": {
			"type": "object",
			"properties": {
				"a": {
					"type": "number"
				}
			},
			"required": [
				"a"
			]
		},
		"B": {
			"type": "object",
			"properties": {
				"b": {
					"type": "number"
				}
			},
			"required": [
				"b"
			]
		}
	},
	"type": "object",
	"allOf": [
		{
			"$ref": "#/definitions/A"
		},
		{
			"$ref": "#/definitions/B"
		}
	]
}

Sample data

{ "a": 1, "b": 2 }

Your code

Command Line:
fails> ajv -s bug.schema.json -d bug.test.json --remove-additional=all
works> ajv -s bug.schema.json -d bug.test.json

Validation result, data AFTER validation, error messages
bug.test.json invalid
[ { keyword: 'required',
    dataPath: '',
    schemaPath: '#/definitions/B/required',
    params: { missingProperty: 'b' },
    message: 'should have required property \'b\'' } ]

What results did you expect?
bug.test.json valid
Are you going to resolve the issue?
No

While validating against schema "A" property "b" is removed so the validation against "B" fails.

Thanks for the quick reply and apologies for not finding the duplicate myself.  Really appreciate your work on ajv!


Add support for new parameters

Opening this PR to add support for new parameters and functions that were not in previous versions.
Majority of video functions, amp functions, all tone functions and listening modes will be added. Below is a check list that I need to work through to get all the responses decoded, then I will work through this list again to implement any functions that currently are not implemented. This is all taken from official Pioneer documentation
I have loads more changes for ha-pioneer_async lined up to include support for all of this.

[x] Power
[x] Volume
[x] Mute
[x] Input
[x] Tone Control
[x] Listening Modes
[x] DSP
[x] Channel Levels
[x] AMP
[x] Key Lock
[x] Video
[x] Zone Power
[x] Zone Input
[x] Zone Volume
[x] Zone Mute
[x] Zone Channel Level
[x] Zone Tone
[x] Information Requests
[x] Tuner
[x] iPod Operation
[ ] NETWORK Operation
[ ] ADAPTER PORT Operation
[ ] MHL Device Operation
[ ] Cursor Operation

Looking and sounding great. I got the basic functionality (on/off, input switching, volume) that I needed working and unfortunately everything else went on the backlog. The next items on my list was decoding the audio and video parameters to be able to detect stereo vs multichannel audio, and being able to tune the radio frequency - both of which are already on your list :)

Thanks, the biggest one for me was the listening modes, the remote for my AVR doesn't work very well anymore (despite replacing batteries) and the iControl app has completely stopped working on my phone, while I was at it I thought to myself "well, some other features in the app are quite useful" so decided to just go through all the docs and serial commands / responses.
I've just finished audio / video information decoding but I need some help as at the moment it is only able to if we sent ?AST or ?VST, which I need to send every time we receive input changes or power state changes.
Other solution to this (maybe) is that at least on my AVR I get a response starting with AUA / AUB when the source changes but I've found no documentation on what that actually is yet.

Sending another command when the parser (run from the connection listener task) detects a state change is a little tricky - you need to schedule a separate task to call send_command() to avoid blocking the connection listener task. This is currently done in _connection_listener() to schedule bounce_volume() when AVR power-on is detected if PARAM_POWER_ON_VOLUME_BOUNCE is enabled, you should be able to do something similar when an input or power state change is detected.

Using inspiration from the bounce_volume() functions and how that's scheduled in, I've added a command queue, which can be used to schedule in commands to run after processing the response by adding commands_to_queue.add("COMMAND HERE") in the _parse_response() function.
I don't think AST / VST will be sent in the serial session if that state changes on the AVR itself (IE, HDMI input goes from stereo to multi channel etc.)
Tuner functions complete, a few actions I haven't added as other functions take care of what they would do, list below:

TUNER PRESET (DIGIT key) - set_tuner_preset() takes care of this, but combines the class and preset digit together
TUNER CLASS change - Same as above
TUNER PRESET INCREMENT - Same as above
TUNER PRESET DECREMENT - Same as above
DIRECT ACCESS (tuner) - This sets frequency directly, but responses are more complicated to implement, for now the loop in set_tuner_frequency() takes care of this

No specific iPod functionality added, apart from just mapping the commands and being able to send those commands, might be useful in HA where we can have play/pause buttons etc. I'm not able to test this though as I don't own an iPod.

I think this is ready now, there a probably some places that could be improved on, happy to change where needed.
These two commands have been added now:
TUNER PRESET INCREMENT
TUNER PRESET DECREMENT
They are used as previous and next commands for the media controls...
I need a place to document the media controls though, would you be happy to enable to wiki feature in this repo and that could then be used to store the Python API docs perhaps? Currently it doesn't return playback information, however I do have the docs for that but I'm not sure if the AVRs will automatically send playback info when that state changes or if I'll have to schedule more frequent updates for those.

I enabled the wiki, but I think you need to first have submitted to this repo in order for you to update the wiki.
I started reviewing the PR, it works with my VSX-930 so that's a great start :) I have a few initial general comments and will add additional comments to the code as I go (may take a while, there's a lot to digest):

There's an unfortunate clash of terminology here as I've used "parameter" to refer to operational attributes that could differ between different AVR models, such as maximum possible volume or a flag for a feature that exists only for some AVR models. But I note that Pioneer also uses "parameter" to refer to command and response arguments (as well as audio/video parameter!). I guess this might be the rationale for the naming of PARAM_MEDIA_CONTROL_SOURCES, PARAM_MEDIA_CONTROL_COMMANDS, etc? To avoid conflation between these two uses, I'd suggest just dropping the PARAM_ prefix for these, they seem to me to just be dicts used to translate response values to something more meaningful.
It would be good for those dicts to be moved to a separate file, eg. const.py. This could be a good future home for PIONEER_COMMANDS to reduce pioneer_avr.py by ~700 lines, down from 3200+ lines (a bit long I think!) though let's leave that change for a separate PR.
A full update takes about 5 seconds on my AVR as it queries a lot of attributes now. It may be worth gating the updates behind parameters for some high level categories (eg.  tone, amp, tuner, channel_level, dsp, video, audio) that can be turned off by default and turned on only for specific models via model specific default parameters or user level parameter overrides. This would minimise backwards compatibility and reduce impact to AVRs that may not have such features or be able to handle all the new queries.
These groups would probably also be useful when exposing the attributes to HA, as I'd ideally prefer to avoid having to update the HA integration whenever more attributes are added.
note to self: will need to refactor bounce_task to use the command queue, on my AVR that is running in parallel to the full update that is triggered at AVR power on.

I've also updated cli.py to add a few commands that dump the various new attributes, and will submit that to your fork shortly.

There's an unfortunate clash of terminology here as I've used "parameter" to refer to operational attributes that could differ between different AVR models, such as maximum possible volume or a flag for a feature that exists only for some AVR models. But I note that Pioneer also uses "parameter" to refer to command and response arguments (as well as audio/video parameter!). I guess this might be the rationale for the naming of PARAM_MEDIA_CONTROL_SOURCES, PARAM_MEDIA_CONTROL_COMMANDS, etc?
To avoid conflation between these two uses, I'd suggest just dropping the PARAM_ prefix for these, they seem to me to just be dicts used to translate response values to something more meaningful.
It would be good for those dicts to be moved to a separate file, eg. const.py. This could be a good future home for PIONEER_COMMANDS to reduce pioneer_avr.py by ~700 lines, down from 3200+ lines (a bit long I think!) though let's leave that change for a separate PR.

Agree with all of this, I've updated now and dropped PARAM, we can move a lot out to a const.py file as suggested later on.

A full update takes about 5 seconds on my AVR as it queries a lot of attributes now. It may be worth gating the updates behind parameters for some high level categories (eg. tone, amp, tuner, channel_level, dsp, video, audio) that can be turned off by default and turned on only for specific models via model specific default parameters or user level parameter overrides. This would minimise backwards compatibility and reduce impact to AVRs that may not have such features or be able to handle all the new queries.
These groups would probably also be useful when exposing the attributes to HA, as I'd ideally prefer to avoid having to update the HA integration whenever more attributes are added.

Noted, I've updated now and added the following user configurable parameters:
PARAM_DISABLE_AUTO_QUERY - disables all queries when _update_zone is called.
PARAM_ENABLED_FUNCTIONS - provides the ability to only query certain "functions", in future we can use this against some of the set commands, but for now it splits the PIONEER_COMMAND key on an underscore, and checks if the second item in that array is in PARAM_ENABLED_FUNCTIONS.
Currently the following is supported for PARAM_ENABLED_FUNCTIONS:

amp
dsp
tuner
tone
channels
video
system
audio

I made some changes to the command queue functions to minimise repeated commands being sent to the AVR, and also migrated the volume bouncer to use the command queue instead, can you see if either of these impact your changes.
I haven't tested the new set_* functions yet, they can be tested later. VScode/pylint is also complaining about a few other issues but I think these can also be addressed later on.
The above notwithstanding I think this PR is pretty much ready to merge, after which I can push a beta release to PyPi and test further within my prod environment, and also work on the HA integration to expose the additional AVR info and functions to HA. Thanks again @11harveyj for your efforts

Ok, great. I'll test these changes later on and feedback :)

Everything is still working ok for me, my HA instance is pending an update so when I update that I'll test those changes in HA too (changed the manifest.json to point to my fork).


nz-table scroll can follow data scrolling

What problem does this feature solve?
When the data of the table is added one by one, the scroll bar needs to be scrolled synchronously with the data, or the scroll bar can be kept at the bottom.
What does the proposed API look like?
Give an attribute whether the scroll bar scrolls to the bottom or can scroll to a location

Or how do I control the scrollbar inside the table?

you can control scrollbar yourself
https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollTop

Thank you for your answer;But how should I get the scroll, I have tried several methods and I have not obtained it.

I have seen the html code it produces, but it is confusing to get the scrollbar through both document and window.

Or can you give this div a unique identifier for easy access?


FontAwesome owerwriting

In my current project I use FonAwesome loaded by css file.
When I install your package it overwrite my FontAwesome icons, and they stop showing.

Hi @frizikk ,
For this problem. I think I need to create an option to define which FontAwesome that we want to use:

FontAwesome imported in HTML (<link ... />)
FontAwesome in Webpack

Noted. Will update it.
Thank you for reporting.

the same issue... conflict with npm version of fontawesome

Hi friend,
<EMAIL_ADDRESS>has been released. Check it out.
P/s: I closed this issue because it's not related to<EMAIL_ADDRESS>Thanks.


How do you get the balance of an account?

Is there a pudding way to get the balance of a contract/account, or should I just use web3.eth.getBalance(account)?

http://ethereum.stackexchange.com/questions/4027/how-do-you-get-the-balance-of-an-account-using-truffle-ether-pudding


[CLOUDSTACK-10323] Allow changing disk offering during volume migration

This is a continuation of work developed on PR #2425 (CLOUDSTACK-10240), which provided root admins an override mechanism to move volumes between storage systems types (local/shared) even when the disk offering would not allow such operation. To complete the work, we will now provide a way for administrators to enter a new disk offering that can reflect the new placement of the volume. We will add an extra parameter to allow the root admin inform a new disk offering for the volume. Therefore, when the volume is being migrated, it will be possible to replace the disk offering to reflect the new placement of the volume.
The API method will have the following parameters:

storageid (required)
volumeid (required)
livemigrate(optional)
newdiskofferingid (optional) – this is the new parameter

The expected behavior is the following:

If “newdiskofferingid” is not provided the current behavior is maintained. Override mechanism will also keep working as we have seen so far.
If the “newdiskofferingid” is provided by the admin, we will execute the following checks

new disk offering mode (local/shared) must match the target storage mode. If it does not match, an exception will be thrown and the operator will receive a message indicating the problem.
we will check if the new disk offering tags match the target storage tags. If it does not match, an exception will be thrown and the operator will receive a message indicating the problem.
check if the target storage has the capacity for the new volume. If it does not have enough space, then an exception is thrown and the operator will receive a message indicating the problem.
check if the size of the volume is the same as the size of the new disk offering. If it is not the same, we will ALLOW the change of the service offering, and a warning message will be logged.

We execute the change of the Disk offering as soon as the migration of the volume finishes. Therefore, if an error happens during the migration and the volume remains in the original storage system, the disk offering will keep reflecting this situation.
Attached is a screenshot to show how the migrate option will look like:

thanks for this PR @rafaelweingartner, are you looking into adding a marvin tests for this ?
I'll wait on your response and kick the smoketests.

I added unit test for the code I changed. I was not planning to create a Marvin tests though.
If you guys think it is a requirement, I can look into it.

@blueorangutan package

ok @rafaelweingartner, let me run some tests

Packaging result: ✔centos6 ✔centos7 ✔debian.  How can I contribute?

Thanks!
You can open a PR against my branch, then I can merge it here.

I'm not sure I'm doing this right.. but git says there's nothing to compare..

any idea? @rafaelweingartner

Did you pushed your changes to your branch in the remote repository?
I am checking your branch, but there is no new commit there.

@blueorangutan package

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

Packaging result: ✔centos6 ✔centos7 ✖debian. JID-1781

@blueorangutan test

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

debian packaging failed and so did jenkins and travis!

Yes. However, that is a consequence of the last merge and is fixed with: #2491

@blueorangutan test

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

@blueorangutan test

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

@DaanHoogland now everything is ok again.

thanks @rafaelweingartner , didn't notice the relation

@blueorangutan package

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

Packaging result: ✔centos6 ✔centos7 ✔debian.  I noticed that the test you included is failing as well.
I look at the error of the new test, and it seems you are trying to change the service offering to a new one that does not have the tags of the target storage.
Target Storage [id=0818cecf-5f99-3b1e-beb2-5f0669c7b5ba] tags [storage.overprovisioning.factor] does not match new disk offering [id=a2992784-662b-4cad-b833-38c46136f97e] tags [null].'}, accountid : u'9f16aecc-2c1d-11e8-8460-06d348010705'}\n"]

@rafaelweingartner let me run this again, don't know why it appeared.
@blueorangutan test

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

Trillian test result (tid-2403)
Environment: kvm-centos7 (x2), Advanced Networking with Mgmt server 7
Total time taken: 42229 seconds
Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr2486-t2403-kvm-centos7.zip
Intermitten failure detected: /marvin/tests/smoke/test_affinity_groups_projects.py
Intermitten failure detected: /marvin/tests/smoke/test_affinity_groups.py
Intermitten failure detected: /marvin/tests/smoke/test_certauthority_root.py
Intermitten failure detected: /marvin/tests/smoke/test_deploy_virtio_scsi_vm.py
Intermitten failure detected: /marvin/tests/smoke/test_privategw_acl.py
Intermitten failure detected: /marvin/tests/smoke/test_volumes.py
Intermitten failure detected: /marvin/tests/smoke/test_vpc_redundant.py
Intermitten failure detected: /marvin/tests/smoke/test_hostha_kvm.py
Smoke tests completed. 61 look OK, 6 have error(s)
Only failed tests results shown below:

Test
Result
Time (s)
Test File

test_DeployVmAntiAffinityGroup_in_project
Error
58.44
test_affinity_groups_projects.py

test_DeployVmAntiAffinityGroup
Error
63.06
test_affinity_groups.py

test_04_rvpc_privategw_static_routes
Failure
370.47
test_privategw_acl.py

test_11_migrate_volume_and_change_offering
Error
130.68
test_volumes.py

test_04_rvpc_network_garbage_collector_nics
Failure
540.19
test_vpc_redundant.py

test_hostha_enable_ha_when_host_in_maintenance
Error
2.44
test_hostha_kvm.py

test_hostha_kvm_host_fencing
Failure
675.83
test_hostha_kvm.py

test_hostha_kvm_host_recovering
Failure
623.78
test_hostha_kvm.py

Now the errors changed, it increased the number of them. However, the new test case that was added keeps failing.

@rafaelweingartner if we add this in the marvin tests it should clean before migration, can you just add it before it tries to migrate?
        if hasattr(pool, 'tags'):
            StoragePool.update(self.apiclient, id=pool.id, tags="")

@borisstoyanov I ammended the code as you suggested.

@blueorangutan package

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

Packaging result: ✔centos6 ✔centos7 ✔debian. JID-1889

@blueorangutan test

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

Trillian test result (tid-2471)
Environment: kvm-centos7 (x2), Advanced Networking with Mgmt server 7
Total time taken: 91858 seconds
Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr2486-t2471-kvm-centos7.zip
Intermitten failure detected: /marvin/tests/smoke/test_certauthority_root.py
Intermitten failure detected: /marvin/tests/smoke/test_primary_storage.py
Intermitten failure detected: /marvin/tests/smoke/test_privategw_acl.py
Intermitten failure detected: /marvin/tests/smoke/test_routers.py
Intermitten failure detected: /marvin/tests/smoke/test_snapshots.py
Intermitten failure detected: /marvin/tests/smoke/test_vm_life_cycle.py
Intermitten failure detected: /marvin/tests/smoke/test_host_maintenance.py
Intermitten failure detected: /marvin/tests/smoke/test_hostha_kvm.py
Smoke tests completed. 61 look OK, 6 have error(s)
Only failed tests results shown below:

Test
Result
Time (s)
Test File

test_01_add_primary_storage_disabled_host
Error
0.61
test_primary_storage.py

test_01_primary_storage_nfs
Error
0.13
test_primary_storage.py

ContextSuite context=TestStorageTags>:setup
Error
0.24
test_primary_storage.py

test_04_restart_network_wo_cleanup
Failure
3.27
test_routers.py

test_02_list_snapshots_with_removed_data_store
Error
1.15
test_snapshots.py

test_08_migrate_vm
Error
17.79
test_vm_life_cycle.py

test_01_cancel_host_maintenace_with_no_migration_jobs
Failure
6.34
test_host_maintenance.py

test_02_cancel_host_maintenace_with_migration_jobs
Error
2.29
test_host_maintenance.py

test_hostha_kvm_host_fencing
Failure
1491.43
test_hostha_kvm.py

test_hostha_kvm_host_recovering
Failure
616.59
test_hostha_kvm.py

@borisstoyanov with that change in the test case, now the test we created for this PR passed.


arrow extensions

I'm trying to load the arrow extension on an ARM lambda, by executing the following statement:
INSTALL arrow; LOAD arrow;
and I'm met with the following error:
INFO	[Error: IO Error: Extension "/tmp/.duckdb/extensions/v0.8.0/linux_arm64/arrow.duckdb_extension"
could not be loaded: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by /tmp/.duckdb/extensions/v0.8.0/linux_arm64/arrow.duckdb_extension)]
{
  errno: -1,
  code: 'DUCKDB_NODEJS_ERROR',
  errorType: 'IO'
}

Do you maybe have some pointers on how to fix this?

You can't install default extensions which weren't compiled on Amazon Linux 2... This leads to the exact error you're seeing.

gotcha so if i switch to x86 it should just work?
Is it cumbersome to compile the default extension for linux 2?

No, this will be the same problem with x86 as well. This is due to GLIBC incompatibilities. I have a build pipeline for extensions here: https://github.com/tobilg/duckdb-nodejs-layer/blob/main/Dockerfile.spatial.x86_64

Would you mind giving some insights about your use case @rickiesmooth?

I'm looking at .github/workflows/main.yml, and I have an idea on how to add some workflow steps for building something like Dockerfile.arrow.arm64 using spatial as an example.
This would work great if I just need the arrow extension, but how would that work if I need both the spatial extension and the arrow extension? Have you considered having one "fat" image that holds all the official extensions which you can load, or would the layer size become too big? Alternatively, would it maybe be possible to build a layer with the correct GLIBC versions and load the extensions directly from S3 ala http://extensions.duckdb.org/v{release_version_number}/{platform_name}/{extension_name}.duckdb_extension.gz? I'm pretty clueless on this subject, so sorry sounding uninformed. 😅
My specific use case is using arrowIPCStream in combination with AWS Lambda response streaming...so I only just need to install the arrow extension for that..

You‘d have to build „all“ relevant extensions for Amazon Linux 2 and store them somewhere accessible via HTTPS. Which is a lot of effort honestly. It cost me about a dozen hours to get the spatial extension to work. Then, there’s the issue that some extensions need specific DuckDB versions, and are not compatible with others… It’s not a simple thing to accomplish…

hmm too bad, since the docs explicitly mention that downloading an extension from S3 could be helpful when building a lambda, I was hoping that that would make it a bit easier.
What would you suggest? Make a similar layer as the spatial layer?

Can you link the docs you mention? Well actually downloading from S3 is the easy part… Building and storing them is much more effort unfortunately.

I see, too bad! This was the doc I was reading: https://duckdb.org/docs/extensions/working_with_extensions

Downloading an extension directly could be helpful when building a lambda or container that uses DuckDB. DuckDB extensions are stored in public S3 buckets, but the directory structure of those buckets is not searchable. As a result, a direct URL to the file must be used. To directly download an extension file, use the following format:
http://extensions.duckdb.org/v{release_version_number}/{platform_name}/{extension_name}.duckdb_extension.gz
For example:
http://extensions.duckdb.org/v0.8.1/windows_amd64/json.duckdb_extension.gz
The list of supported platforms may increase over time, but the current list of platforms includes:
linux_amd64_gcc4
linux_amd64
linux_arm64
osx_amd64
osx_arm64
wasm_eh DuckDB-Wasm’s extensions
wasm_mvp DuckDB-Wasm’s extensions
windows_amd64
windows_amd64_rtools
See above for a list of extension names and how to pull the latest list of extensions.

e.g. https://extensions.duckdb.org/v0.8.1/linux_arm64/arrow.duckdb_extension.gz

You can now try loading it from https://github.com/tobilg/duckdb-nodejs-layer/raw/main/release/extensions/v0.8.1/arrow.duckdb_extension Please give me some feedback whether this works or not. Thanks

Sorry but I'm unsure how to load it.
I naively tried:
INSTALL https://github.com/tobilg/duckdb-nodejs-layer/raw/main/release/extensions/v0.8.1/arrow.duckdb_extension; LOAD arrow;

And that doesn't work? What's the error message? How did you test it? In Lambda directly? Did your allow unsigned extensions? https://duckdb.org/docs/archive/0.5.1/extensions/overview.html#unsigned-extensions

I get the following error when I test it in the Lambda directly:
Error: IO Error: Failed to read extension from "https://github.com/tobilg/duckdb-nodejs-layer/raw/main/release/extensions/v0.8.1/arrow.duckdb_extension": no such file] {
  errno: -1,
  code: 'DUCKDB_NODEJS_ERROR',
  errorType: 'IO'
}

my lambda:
// Instantiate DuckDB
const duckDB = new DuckDB.Database(":memory:", {
  allow_unsigned_extensions: "true",
});

// Create connection
const connection = duckDB.connect();

// Store initialization
let isInitialized = false;

export const handler = awslambda.streamifyResponse(async (event, responseStream, context) => {
  console.log(event, context);
  try {
    // Check if DuckDB has been initalized
    if (!isInitialized) {
      await query(`
        SET home_directory='/tmp';
        SET enable_http_metadata_cache=true;
        SET enable_object_cache=true;
        INSTALL 'https://github.com/tobilg/duckdb-nodejs-layer/raw/main/release/extensions/v0.8.1/arrow.duckdb_extension';
      `);
      isInitialized = true;
    }

While when I visit the link in my browser it downloads the extension.

ah I've tested it on arm, I can try with x86 later today!

Haven't tried it, but I was pointed to https://github.com/duckdb/duckdb/pull/6049#issue-1563959687 in the DuckDB Discord.

I think I was able to provide a solution for x86 based DuckDB Lambda functions:
Try to do the following:

SET custom_extension_repository = 'http://extensions.quacking.cloud';
INSTALL arrow;

Works with my DuckDB Lambda deployment. I haven't checked the functionality of the Arrow extension though.

wow that's slick! I've tried it out, but for some reason it tries to load an AMD extension?
Error: HTTP Error: Failed to download extension "arrow" at URL "http://extensions.quacking.cloud/v0.8.0/linux_amd64/arrow.duckdb_extension.gz

I've updated my lambda to use the x86 architecture so I'm unsure why it tries to download the linux_amd64 architecture.
Full error:
2023-09-19T17:27:43.698Z	bbc0b6d7-ef1c-41fe-913d-738a332c6286	INFO	[Error: HTTP Error: Failed to download extension "arrow" at URL "http://extensions.quacking.cloud/v0.8.0/linux_amd64/arrow.duckdb_extension.gz"

Candidate extensions: "parquet"] {
  errno: -1,
  code: 'DUCKDB_NODEJS_ERROR',
  errorType: 'HTTP',
  statusCode: 403,
  response: '<?xml version="1.0" encoding="UTF-8"?>\n' +
    '<Error>AccessDenied<Message>Access Denied</Message><RequestId>45ZF0EY0Q54J8Z6A</RequestId><HostId>shYHxazrKW3GTSrD4UMUkXyV/tY8CoaFp/GnJgUHHgeI549VQHYT+yHHm5469Kj/RcL4jcZQK30=</HostId></Error>',
  reason: 'Forbidden',
  headers: {
    'Alt-Svc': 'h3=":443"; ma=86400',
    Connection: 'close',
    'Content-Type': 'application/xml',
    Date: 'Tue, 19 Sep 2023 17:27:43 GMT',
    Server: 'AmazonS3',
    'Transfer-Encoding': 'chunked',
    Via: '1.1 936f33bed45438343f0ef2adff442814.cloudfront.net (CloudFront)',
    'X-Amz-Cf-Id': 'F-TjTP5qVLObpyePoy5-D5kYDyZ6RymzXyhzxYfc3ULjsR0SQaPcOA==',
    'X-Amz-Cf-Pop': 'IAD89-C1',
    'X-Cache': 'Error from cloudfront'
  }
}

layer:

1
duckdb-nodejs-x86
3
nodejs14.x, nodejs16.x, nodejs18.x
-
arn:aws:lambda:us-east-1:041475135427:layer:duckdb-nodejs-x86:3

runtime info:
Runtime: Node.js 18.x
Architecture: x86_64

Yeah, that layer version is still on v0.8.0. I‘ll have to update it to 0.8.1 I guess. The error comes from the plug-in not being published for this version to S3.
Can you try the spatial layer from https://github.com/tobilg/duckdb-nodejs-layer#arns? That should work…

soo close:
2023-09-19T19:33:03.199Z	5cdffb53-23b8-4b67-9cfd-b69f997aaee8	INFO	[
Error: Invalid Input Error: Extension "/tmp/.duckdb/extensions/a532702b9a/linux_amd64/arrow.duckdb_extension" version (v0.8.2-dev3190) does not match DuckDB version (0.8.2-dev2083)
] {
  errno: -1,
  code: 'DUCKDB_NODEJS_ERROR',
  errorType: 'Invalid Input'
}

I saw some comments in discord about dev versions, so if I understand correctly if we'll be able to use a stable version here everything (spatial & arrow) will just work?

Hm, that’s somehow strange because I use the same layer version, and it worked in my case.
But unfortunately that’s what I meant with the version conflicts in DuckDB’s Discord. It’s not easy to downgrade the versions because the extensions reference other commits in the submodules. Will have to think about how this can be solved.

Can you do a select version();? It should show 0.8.2-dev2083 if you're using `duckdb-nodejs-spatial-x86:1... What puzzles me is that I use the above layer version, and it works flawlessly.

it does show 0.8.2-dev2083 when I do select version();
Forgot to mention that I needed to install and load it like so:
INSTALL arrow;
LOAD arrow;

Otherwise I'd get the following error:
Error: Catalog Error: Function with name "to_arrow_ipc" is not in the catalog, but it exists in the arrow extension.

To install and load the extension, run:
INSTALL arrow;
LOAD arrow;] {
  errno: -1,
  code: 'DUCKDB_NODEJS_ERROR',
  errorType: 'Catalog'
}

So, I think I got it working finally... I published a new test layer which is built upon the latest supported Spatial extension version of DuckDB. Then, I forked the Arrow extension and manually updated to the same DuckDB commit.
I published this as a test Lambda layer: arn:aws:lambda:us-east-1:041475135427:layer:duckdb-nodejs-spatial-test-x86:1, and the GitHub Action Workflow to publish the regular layer is currently running. This will then be usable via arn:aws:lambda:$REGION:041475135427:layer:duckdb-nodejs-spatial-x86:2.
You should then be able to do:

LOAD '/opt/nodejs/node_modules/duckdb/extensions/spatial.duckdb_extension';
INSTALL arrow; (this loads the arrow extension from http://extensions.quacking.cloud/9db510bd11/linux_amd64/arrow.duckdb_extension.gz)
LOAD arrow;

Awesome! I'll test it out tonight 🙌

this worked as a charm, thank you so much!

Great! Curious about what you‘ll build though 😬

ping me on discord if you want a sneak peek 😉

@rickiesmooth I just published the spatial and arrow extensions for DuckDB v0.9.0, which is available with arn:aws:lambda:us-east-1:041475135427:layer:duckdb-nodejs-x86:5:

SET custom_extension_repository = 'http://extensions.quacking.cloud';
INSTALL arrow;
LOAD arow;

Works for me at least :-)

great! I'll give it a try and report back 🫡


List Instances in Host lists all instances

ISSUE TYPE

Bug Report

COMPONENT NAME

UI

CLOUDSTACK VERSION

4.17.1

CONFIGURATION

OS / ENVIRONMENT

N/A
SUMMARY

When selecting to show all instances for a certain host, all instances are listed
STEPS TO REPRODUCE

In the UI navigate to:
Infrastructure -> Hosts
Select a host
Click on View Instances

EXPECTED RESULTS

List of instances running on the host

ACTUAL RESULTS

All instances are listed

@alexandremattioli I've posted a quick fix, its actually the API that's broken, the UI is passing the params correctly:
(localcloud) 🐱 > list virtualmachines hostid=ab815b86-a9ad-499c-a60f-4d85123d57c4 filter=id,name,hostid
{
  "count": 1,
  "virtualmachine": [
    {
      "hostid": "ab815b86-a9ad-499c-a60f-4d85123d57c4",
      "id": "f3621224-0f19-4e55-bf3b-8504bd5ce346",
      "name": "VM-f3621224-0f19-4e55-bf3b-8504bd5ce346"
    }
  ]
}
(localcloud) 🐱 > list virtualmachinesmetrics hostid=ab815b86-a9ad-499c-a60f-4d85123d57c4 filter=id,name,hostid
{
  "count": 2,
  "virtualmachine": [
    {
      "hostid": "734acbc4-80c9-44c0-aaab-75f276469fd4",
      "id": "35fef250-5c4d-4705-b707-069102a32991",
      "name": "VM-35fef250-5c4d-4705-b707-069102a32991"
    },
    {
      "hostid": "ab815b86-a9ad-499c-a60f-4d85123d57c4",
      "id": "f3621224-0f19-4e55-bf3b-8504bd5ce346",
      "name": "VM-f3621224-0f19-4e55-bf3b-8504bd5ce346"
    }
  ]
}

Thanks @nvazquez

Duplicate of https://github.com/apache/cloudstack/issues/6786 closing this. @alexandremattioli @nvazquez we've another PR from Abhishek.


fix: bump client version

This PR just bumps the python client library version

Hello!
Are there any plans to merge this in the near time? Would be great to have latest updates (e.g. chat methods) for sync and async clients in PyPI. IIUC they are not yet available in 0.6.1.
Thanks!


Local Translations for Tutorials

There is no locales for Tutorials
User created tutorials cannot be locally translated
It would be great to be able to locally create translations for the tutorials. Currently it is always downloaded from Crowdin.
It is already possible to translate extensions,  localization. My suggestion is to have localization also in tutorials

Can you elaborate on your issue with crowdin? This is your custom tutorial?

Yes, same as custom blocks, i want to be able to add custom tutorials in different languages. This will help the most when creating custom targets.
Besides, I just noticed that the download screen (Download and save to microbit drive pop up) does not translate when changing languages and remains engish.

There is ability now to translate custom tutorials and add translations similar to extensions. This is implemented.


Added P/L update when user selects tons to sell

Submission Checklist
Required

[x] The pull request title clearly contains the name of the sheet I am editing.
[x] The pull request title clearly states the type of change I am submitting (New Sheet/New Feature/Bugfix/etc.).
[x] The pull request makes changes to files in only one sub-folder.
[x] The pull request does not contain changes to any json files in the translations folder (translation.json is permitted)

New Sheet Details

The name of this game is: <   >  (i.e. Dungeons & Dragons 5th Edition, The Dresden Files RPG)

The publisher of this game is: <   > (i.e. Wizards of the Coast, Evil Hat)

The name of this game system/family is: <   > (i.e. Dungeons & Dragons, FATE)

[x] I have followed the Character Sheets Standards when building this sheet.

[ ] This sheet has been made on behalf of, or by, the game's publisher.
[ ] This game is not a traditionally published game, but a copy of the game rules can be purchased/downloaded/found at: <   >
[x] This sheet is for an unofficial fan game, modification to an existing game, or a homebrew system.

Changes / Description

Minor fix to add change callback when user changes tons to sell in speculative trade so P/L updates properly

Character Sheet Info Roll20 Internal Use only.


s3-ocr text command for retrieving just the OCR text

The JSON from the fetch command is very verbose.

Documentation: https://github.com/simonw/s3-ocr/blob/41d6c6810c33d658b7dd5575fd91597d4370ca20/README.md#fetching-just-the-text-of-a-page


Metal Support

would there be a problem with introducing support for metal. I would like to use this for some metal applications would there be any problems if I could work on adding support.

Hi Michael! Sure! Currently NRI can be used on Apple via MoltenVK, but, of course, it's worse than native Metal. I'm happy to accept a new implementation (even with limited functionality).
Notes:

better wait for 2-3 days before I add "shading rate" support
I promise to not touch interface after this update (well, I have been doing only name changes for the goodness of the API. I'm almost satisfied now)

I need to do some research on how I would do this. there is a cpp provided interface but it seems kind of troublesome so looks like I need to provide it through C.

@pollend you might want to check out the dawn as the WebGPU API is very similar to the NRI specifics. The only thing that might be different is the pipeline and shader handling, but I don't see any problems here since you already have to manage your shader binaries manually.

By the way, if you really want to implement fully featured Metal implementation, you should also implement Metal-compatible shader header with NRICompatibility.hlsli internals.

@pollend you might want to check out the dawn as the WebGPU API is very similar to the NRI specifics. The only thing that might be different is the pipeline and shader handling, but I don't see any problems here since you already have to manage your shader binaries manually.

that's a good resource, I guess I need so spend a bit of time studying objective-c. recently got a MacBook to work on some metal related stuff.

If you have any questions about NRI or ObjC specifics or testing on macOS machine - feel free to ask me here. I'll answer as soon as possible.

I have just committed shading rate support with a minor interface change (a naming change as usual).

just started a little: https://github.com/NVIDIAGameWorks/NRI/pull/89
quite a lot of boilerplate to setup before i have something to compile might take me a couple days to get to that point.

Sorry for the inconvenience, I had to resolve the final issue in the API related to read-only depth and/or stencil. Now it's done. No more API changes planned!

Sorry, guys, for several releases today. I'm happy with the look of the interface. I really think I'm finished.

Not too bad I rebases my changes without much incident. I have a few questions in the pr I've drafted. Need to study metal examples to get a better idea.


Reproducing Results of BM25 Baselines for MS MARCO

Macbook Air M3 (macOS 14.6)
Python 3.13.1
Java openJDK 23.0.1
Maven 3.9.9
All the results were reproduced without any problem. However during the build time using Maven I encountered errors on 5 test cases on these classes:

JsonVectorCollectionDocumentObjectTest, BM25StatTest, BigramFeaturesTest, LmDirTest, ExtractTopDfTermsTest

and the errors were like this:

[ERROR]   JsonVectorCollectionDocumentObjectTest The test or suite printed 16688 bytes to stdout and stderr, even though the limit was set to 8192 bytes. Increase the limit with @limit, ignore it completely with @SuppressSysoutChecks or run with -Dtests.verbose=true

Basically the errors indicate that the tests are failing because the amount of output printed to stdout and stderr during the test execution exceeded the allowed limit of 8192 bytes. It can be solved by increasing the stdout buffer limit (e.g. adding @limit(bytes = 30000) on top of each mentioned classes) or simply build the project using Maven with -Dtests.verbose=true flag which ignore the buffer limit.

Hi @Alireza-Zwolf - it's not clear where the exceptions are coming from...
Is it a JDK issue? I see you're using JDK 23. As stated here: https://github.com/castorini/anserini?tab=readme-ov-file#-installation
Can you please downgrade to JDK 21?

Hrm, seems like #2628 outlines the same issues... @zdann15 @sherloc512 @nihalmenon you recently completed onboarding... did you encounter?

@lintool, I encountered some errors on the test cases when building using maven using JDK 23, but then it was fixed after I switched to JDK 21

Hi @lintool, I downgraded my JDK 21 and the issue was fixed. Seems it was a JDK problem on Java 23.


Proposal, tighter integration

Hello,
I have been using MeteorObservable for a while (much better than Meteor.find). However, to get data from a publication (particularly one that takes an input variable to select results) I have to "subscribe to the publication", .subscribe to a MeteorObservable. On destroy, I have to unsubscribe to the publication and MeteorObservable. When desiring new results, I need to subscribe two times and unsubscribe two times. It would be nice if both of these could be combined, in which when subscribing to the MeteorObservable.find, I would also subscribe to a publication (that is generated) that would send the results to the client. Perhaps there is a better implementation pattern I am not aware of?

What would be a limitation? I'm not talking about doing away with subscriptions, just subscribing to data this isn't in the local. With this proposal, the data on the local would be returned immediately and then server fetches the rest (just like a find does now).

@jerradpatch , can you provide an example?
My meaning was that when find also do the subscription to the data, it will couple the publication of the data to the collection.

The use case would be a large database with a lot of shared data, that I would not want a client to have entirly on their local db. Subscriptions work great when I have data the is distinct to groups of users or a single user, b/c then I can just subscribe to it all and call finds on the local all day. However for the large shared collection subscriptions actually create more overhead (previously described).
I think I will wrap my finds like you suggested for these collections. In that my collection will have a default subscription, and on my client I will have a simple wrapper function the subscribes to it. (somthing like)
server:
default: function(anyQuery:{}){
    limiter code here
}

client:
function findSubscribe(query){
    let sub: subscription = this.collection.subscribe('default', query).subscribe();
    let ret: Observable = this.collection.find(query);
    ret.unsubscribe = function(){
        sub.unsubscribe();
        ret.unsubscribe();
    }
    return ret;

Closing due to inactivity and cleanup.


Create week-10.md

This week will focus on how digital commons can help achieve sustainable objectives worldwide.

You capitalised W in Week when you shouldn’t have :( please redo

Perfect!

Thanks for your contribution

thanks for your contribution

Well done!


Add ui-plugin-worker chart

This will add the ui-plugin-worker chart for air-gap/custom image installations.
Also:

Update max kube-version to 1.26
Fix issue with psp on ui-plugin-server chart
Fix issue with building a plugin not within a git repository

Closing in favor of https://github.com/rancher/dashboard/pull/8648


Add script for deploying a local setup

The hack/ directory contains scripts and manifests to provision a metrics+logs stack on a Kind cluster for local testing.
The hack/setup.sh script can be run to deploy:

the kube-prometheus stack for metrics and alerts.
Loki+promtail for logs.

The hack/jsonnet directory contains Jsonnet files using the kube-prometheus libraries.
The hack/generate.sh script can be used to regenerate the manifests in hack/manifests after changes to the kube-prometheus version.

@alanconway I haven't yet tested with korrel8r but I'd appreciate if you can check that the instructions work as expected :)