Add viewer: VulkanSplatting - cross-platform, high performance 3DGS renderer in C++ and Vulkan Compute

Cool project. Does it already render gs plys or is it not yet there?

Thanks! It's fully functional today and renders 3DGS PLYs


ZNC doesn't send all channel statuses to client.

When you detach channel and later attach it and you are opped and voiced, when you attach again, if you deop yourself, you appear as devoiced to client even if you are voiced.
Originally reported at WeeChat issue tracker, https://savannah.nongnu.org/bugs/?35175 , but according to them it's more like ZNC issue.

As comment #3 on the savannah bug says:
 But by the way, I'm not sure if many modes are supported in this list of names (on join of a channel). So I'm not even sure that znc can do something for that problem.

This is correct. IRC only allows a single mode character in a NAMES reply. So only the highest mode can be sent out.
This bug in the IRC protocol was worked around with the NAMESX PROTOCTL (which is also available as a capability, but I forgot its name).
So IMHO znc is doing as much as it can do.

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 16.02.2012 19:51, Uli Schlachter wrote:

As comment #3 on the savannah bug says:
But by the way, I'm not sure if many modes are supported in this
list of names (on join of a channel). So I'm not even sure that znc
can do something for that problem.
This is correct. IRC only allows a single mode character in a NAMES
reply. So only the highest mode can be sent out. This bug in the
IRC protocol was worked around with the NAMESX PROTOCTL (which is
also available as a capability, but I forgot its name).
So IMHO znc is doing as much as it can do.
--- Reply to this email directly or view it on GitHub:
https://github.com/znc/znc/issues/134#issuecomment-4005679

Couldn't ZNC do what was suggested in comment #5 at Savannah?

In fact, znc could send @nick, and followed by a mode to voice you
(it simulates someone giving you voice).

Mika Suomalainen

Hotmail:

gpg --keyserver keyserver.ubuntu.com --recv-keys
7969153703D41B0D
GMail:
gpg --keyserver keyserver.ubuntu.com --recv-keys
67D0EF32C0151D5C
TouchLay:
gpg --keyserver keyserver.ubuntu.com --recv-keys
EB3FC5CC8751C396
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJPPUTjAAoJEGfQ7zLAFR1cAAUH/1urhDi2z98XKsxa23zSsNp2
wdzSBKfRdeeK8olJtZKXMc0YYCX2OG/kxqUtBABfZMTH3SRPlIKlv8tAmgLDX7gJ
noDfwKE3w0qAb5bgzCOOlna9zGpnUvhOdBMZrfKqKM5DslpvYX/yk+09SLXi8AJS
VYTYfkcMAlIcgufZ42YoayQ9XPsejQBNy9ZAaQAe5jiWO1xvZTSRi3iKWs7BxJ29
68GbC3npuAkH89ls0WeUCsOiE/oVaLAx1az0haGIDAimUoerjUV2kF9VB4dYvsxx
OjM/+Qi+Ra/59Vrwzuc4ZyjehQHWjF6EmUHTs+IxBXXEgFtnF6IrU6917XruoSA=
=Alat
-----END PGP SIGNATURE-----

Urgh. Github, that looks awful!
Anyway: Yes of course it could. But that's ugly, because it would mean that extra MODE changes are visible in the client.
A client has to figure out all the modes for everyone when it joins a channel anyway (even if it isn't connected via znc), so shouldn't this then be an issue with the client instead? Or does znc do something wrong which stops the client from correctly getting this data?


LP not working

I was trying to set up permissions with the default group (the group LP already makes) and did this command
/lp group default permissions set essentials.kit.newplayer true
It said it worked so when I tested it I couldn't use /kit newplayer so I tried it again but with this
/lp group default permissions set essentials.kit true and /lp group default permissions set essentials.kit.* true
Both of those still didn't work. I have the latest version of LP and essentiallX

https://github.com/lucko/LuckPerms/wiki/Verbose
Try using verbose to find what nodes are being denied you, super easy and tells you exactly what you need!

https://github.com/lucko/LuckPerms/wiki/Verbose
Try using verbose to find what nodes are being denied you, super easy and tells you exactly what you need!

I did verbose for myself and noticed something strange. Even though I did
/lp group &l&4owner permission set essentials.* true
I cannot do /kit and verbose tells me that essentials.kit = false.
Owner inherits default and it still tells me that I cannot use /kit even when op'ed. As far as I know LP is the only plugin on my server that can control permissions

How strange! Make sure you're using the owner group's name and not displayname, and maybe send a screencap of your plugins list?
For some speedy response, feel free to join the discord, and I'd be happy to help out a bit quicker there.

Yes I checked and did it again
/lp user jameslinimk parent add &l&4owner
and
/lp group &l&4owner parent add default
and tried everything again and still I cant use /kit and says infussient permissions
Here are my plugins:
https://imgur.com/a/xlskzjq

Some basic questions, then:
What version of MC?
What type and version of server software?
What version of LP?
Additionally, in the LP config file, ensure you haven't changed any settings regarding global context permission application.

Its a 1.14.4 paper server
the version is LuckPerms-Bukkit-5.0.130
I haven't touched the config at all.

I suspect essentials.kit is being overridden somewhere. Try setting that permission to true on owner directly.


wishlist: add "info accessory" hooks

I was thinking of throwing together a couple of tiny mods to show some extra info in the game: current fisherman quest state, number of items in play, etc.
The most obvious place to hook that in would be the existing "info" accessories, but checking the decompiled code and existing patches, it doesn't look like there is any scope for hooking into that.
It would be nice to have those: the ability for a mod to define an accessory with an "info" function, and have it show up with the enable/disable button, and the info line, matched with the existing ones.

Consider submitting a pull request?

👍  I'm hoping to be able to do so, but there are a couple of work related legal bars I have to clear first.  Oh, and learning C#. ;)  My vague hope was someone else might already be doing this but, if not, I'll work toward one slowly.

Im quite sure this can be done by modifying the respective interface layer. Considering the little traction of this issue, I'll go ahead and close this issue. Slippycheeze, if you still end up needing something or having a proposal then feel free to reopen the issue.


Signature very large for some users (doesn't resize)

For most of our users the signature pad works great.  For some users the signature image is very large (doesn't resize) and causes an issue with saving the image file in our application.  Do you know what causes the variation?  See attached for visual...

I think this could be a DPI issue. If saved on a device with high DPI then shown on a device with low DPI the image could be bigger.


NodeJS CommonJS

Describe the Bug
I dont get this package running using normal nodejs syntax.
I checked out the demo project where I want to first only console.log the rendered html.
package.json
{
  "name": "emails",
  "version": "0.0.18",
  "private": true,
  "type":"module",
  "workspaces": [
    ".react-email"
  ],
  "scripts": {
    "build": "email build",
    "dev": "email dev",
    "export": "email export"
  },
  "dependencies": {
    "@react-email/components": "0.0.14",
    "nodemailer": "^6.9.9",
    "react-email": "2.0.0"
  }
}

app.js:
import { render } from '@react-email/render'
import { StripeWelcomeEmail } from './emails/stripe-welcome'

const emailHtml = render(StripeWelcomeEmail());
console.log(emailHtml);

./emails/stripe-welcome.js:
import { Body, Button, Container, Head, Hr, Html, Img, Link, Preview, Section, Text } from "@react-email/components";
import * as React from "react";

const baseUrl = process.env.VERCEL_URL
  ? `https://${process.env.VERCEL_URL}`
  : "";

export const StripeWelcomeEmail = () => (
  <Html>
    <Head />
    ...
      </Html>
);
export default StripeWelcomeEmail;

tried running node app.js command but getting error:
node:internal/process/esm_loader:108
internalBinding('errors').triggerUncaughtException(
If I change import to:
import { StripeWelcomeEmail } from './emails/stripe-welcome.js'

I'm getting following error, but everything is installed as package!
(base) marius@MBP-M react-email-starter % node app.js
file:///Users/marius/Downloads/React_Projekte/react-email/react-email-starter/emails/stripe-welcome.js:9
  <Html>
  ^

SyntaxError: Unexpected token '<'

Which package is affected (leave empty if unsure)
No response
Link to the code that reproduces this issue
in code above.
To Reproduce
it's in the description.
Expected Behavior
it's in the description.
What's your node version? (if relevant)
18.18.2

This error means you are importing the JSX without first compiling. JSX doesn't run directly inside of javascript, so you would need a compilation step or use something like bun.

To be clear though, what I said above doesn't mean you can't still preview your emails inside of email dev's server, it will because of the way we build your email before actually rendering it.


Add linting to CI pipiline before deployment

How would this feature be useful?
Increases code quality
Describe the solution you'd like
Add new job to Actions to test the code on pull request and merging that runs Pylint
Describe alternatives you've considered
Flake8

Closing this one.


refactor: replace dashboard translation keys

Replace all constants in the communities feature with translation keys.
This is part of https://github.com/Couchers-org/couchers/issues/2351

Web frontend checklist

[x] Formatted my code with yarn format && yarn lint --fix
[x] There are no warnings from yarn lint
[x] There are no console warnings when running the app
[ ] Added any new components to storybook
[ ] Added tests where relevant
[x] All tests pass
[x] Clicked around my changes running locally and it works
[x] Checked Desktop, Mobile and Tablet screen sizes

There's a build error in ./features/ContributePage.tsx still referencing the CONTRIBUTE_TITLE constant... (it's probably safe to blame Aapeli wink)

Yeah, I was fooled again by yarn test. Eslint errors only appear with yarn test-ci.
Fixed with 0594501f1735499000af6dd9326af3140b35e18e


reserve also UNK token, more robust TokenTextEncoder

TokenTextEncoder is used in data_generators.wmt.ende_bpe_token_generator()
in the translate_ende_wmt_bpe32k problem, which uses an external BPE vocabulary
and training data pre-processed with these BPE subwords.
This may be useful when comparing with Nematus/NeuralMonkey etc. on exactly the same training data.
Unfortunately, the TokenTextEncoder implementation was not robust enough.
It failed if there was an unknown subword in the training or dev or test data,
e.g. because of unknown character.
This PR solves the main problem (failure) for me, but

UNK tokens are silently ignored without any warning
NUM_RESERVED_TOKENS is increased, so it may break compatibility with legacy models
(What about setting NUM_RESERVED_TOKENS high enough for any future use?)

Feel free to close this PR without merging if you don't like it.

Hi Martin. We talked a bit about this, and I think we'd prefer to avoid adding UNK as the default. There are 2 main reasons. For one, a fair bit of datasets work perfectly fine without UNK: all algorithmic/toy data, every problem that uses subwords, all image problems, genetics, and so on. On the other hand, it's quite easy to just add UNK to your own vocabulary. For example, you can set the class for the BPE problem to have 3 reserved tokens and do UNK, without changing all other problems. In general, we're moving away from BPE and I don't think we should force all problems to have an UNK just because of it (note that our SubwordTextEncoder will correctly encode any string into an allowed vocabulary, even if it has letters outside the training set, using byte-escape sequences). So maybe make this PR smaller, e.g., just apply to the BPE problem? We also need to port BPE to the Problem class, but that's a parallel point (it'll make it easier to change that in one place, for now it needs to be changed in wmt.py and in problem_hparams). What do you think?

@lukaszkaiser Thanks for your comments.

For one, a fair bit of datasets work perfectly fine without UNK:

I know, but I thought that an extra reserved ID makes no harm, even if it is unused in most models. I admit, it may be confusing for the users.

note that our SubwordTextEncoder will correctly encode any string into an allowed vocabulary, even if it has letters outside the training set, using byte-escape sequences

I know, it's great. I wanted to compare this with an external BPE vocabulary (in order to make this experiment as comparable to Nematus as possible).

t's quite easy to just add UNK to your own vocabulary.

Yes, adding one line to the vocabulary file is easy, but I need to change the code, so it returns the ID of this line if the token is unknown.
I know I could preprocess all the training, dev and test data files and convert all out-of-vocabulary tokens to UNK,
but I felt it is easier and more elegant to do this within T2T code.

So maybe make this PR smaller, e.g., just apply to the BPE problem

Do you mean to subclass TokenTextEncoder as e.g. TokenTextEncoderWithUnk?
I can do this, but I still feel it would be better to keep NUM_RESERVED_TOKENS the same for all problems
(it is defined globally within text_encoder.py, not as a property of TokenTextEncoder instances).

We also need to port BPE to the Problem class, but that's a parallel point (it'll make it easier to change that in one place, for now it needs to be changed in wmt.py and in problem_hparams). What do you think?

Yes, I planned to send another PR with this (converting translate_ende_wmt_bpe32k to the Problem class).
Anyway, I am closing this PR. I need it only for one experiment, I don't need it merged in master.

I preprocessed the training and test data and replace oov words with an UNK sign. After doing this data-gen and training both worked.

I added an option to replace_oov in 1.2.1 and moved the BPE version to Problem and added UNK to vocabulary. Could you take a look and check if that works for you? Thanks!


[WIP] Add POC parallel vmdb tests implementation.

https://github.com/grosser/parallel_tests
parallel_tests will automatically divide the test files in N groups and
run each group of test files in a separate process using a different database.
Note, N is the number of processors on the machine or the
PARALLEL_TEST_PROCESSORS environment variable.
The reason to do this is to use all CPU cores available to us and in
the case of travis containers, we get 2 CPU cores.
Locally, on SSD, the vmdb suite goes from ~21 minutes to ~11 minutes
when utilizing 2 CPU cores.
To do this:

database.yml must be changed to dynamically name the db based on an
environment variable that parallel_tests sets internally (TEST_ENV_NUMBER).
Note, if you run locally using the changed database.yml, it will work because
the "single" core default for our project is the same vmdb_test we've always
used.

We have to run our database setup through parallel_test so it can
setup each of the N databases: parallel_test -e "bundle exec rake test:vmdb:setup".

Finally, we have to provide the spec file patterns directly to parallel_tests
so it knows what spec files need to be divided into N groups.

Before
...
Finished in 21 minutes 17 seconds
10191 examples, 0 failure, 3 pending

Randomized with seed 10983

After
# Initial output showing the parallelized tests:
2 processes for 704 specs, ~ 352 specs per process
...

# First process statistics
Finished in 10 minutes 21 seconds
5460 examples, 0 failure, 1 pending
...

# Second process statistics
Finished in 10 minutes 31 seconds
4731 examples, 0 failures, 2 pending
...

# Total suite statistics
Randomized with seed 4955

10191 examples, 1 failure, 3 pendings

Took 649 seconds (10:49)

Sporadic test failures should be fixed by #5243

How does this play with Coveralls?


fix - Added $cordovaSQLite.openDB callbacks for success and error

$cordovaSQLite.openDB hadnot callback parameters to pass to sqlitePlugin.openDatabase.
Now "options" has two new fields: "success" and "error" used as callbacks.

Why not make promises for openDB instead of using callbacks? That would match the rest of the plugin code.

I chose callback solution for backward compatibility.
I think the following solution is better:
openDB: function (options, background) {
    var q = $q.defer();
    if (angular.isObject(options) && !angular.isString(options)) {
        if (typeof background !== 'undefined') {
            options.bgType = background;
        }
    }
    else {
        options = {
            name: options,
            bgType: background
        };
    }
    $window.sqlitePlugin.openDatabase(options, q.resolve, q.reject);
    return q.promise;
}

In this way, openDB returns a promise and forces the developer to use .then(success,error).
It can be done, but it is different from the older version.

@DanielBertocci I think the proposed solution in your comment should fit well.

If you can change your commit to use the code in your comment, it'd help this getting accepted.


API object added to init.py

Hi Aykhan,
Thanks for catching this mistake!
I saw that you closed the PR, though, is something wrong?
I'll update the package on PyPi with the fix soon.

Hi thicccat688,
I looked at alexreg's PR and saw that you changed the API to RecaptchaSolver. So I thought the problem was with the API naming in the README file, not the init file.

@Aykhan-s
I changed it to RecaptchaSolver but kept the API alias for backward compatibility. I should have included it in the init file, but I didn't.
I've updated the documentation to reflect the new RecaptchaSolver class and incorporated your changes (I credited you for them in the latest release).
Thanks again for spotting this!

@Aykhan-s
I changed it to RecaptchaSolver but kept the API alias for backward compatibility. I should have included it in the init file, but I didn't.
I've updated the documentation to reflect the new RecaptchaSolver class and incorporated your changes (I credited you for them in the latest release).
Thanks again for spotting this!

Thanks for the credit.
You're welcome.


[scss] cross-file support for autocomplete variables, mixins, classes

In other editors(Sublime 3 , Atom) you can made file with variables and editor will autocomplete variables name in other files.
This you can do with classes, mixins, id's and other things.
I think it will very good feature for VSCode

Just to point out, there are a couple of plugins for that. I can recommend https://marketplace.visualstudio.com/items?itemName=mrmlnc.vscode-scss

Also, perhaps a duplicate of #6734

duplicate of #6734


Importing from cURL

Tell us about the task you want to perform and are unable to do so because the feature is not available
Quickly import cURL files to API Dash
Drag & Drop import is preferred.

Should I put a button saying "+ Import" besides the button saying "+ New" to import a request? Upon clicking this button, the user will be able to upload different types of files such as, RAML, WADL, WSDL, cURL, etc. The user will also be able to upload the file by dragging and dropping it here.

@ketan-sonar
Apart from adding the +Import button, the entire functionality has to be built i.e., selecting the cURL file, parsing it and creating the requests model, populating the collection provider etc.

Can I use an external library like flutter_dropzone to accomplish this task?

We will have to use Platform Channels, which allow us to implement native functionality (like file drag-and-drop) and integrate it with our Flutter application.

Sure @ketan-sonar, you can send across a draft PR. Will review it.


Drone speed during mission waypoint

Hello Folks,
We want to fly our drone mavic pro 2 very slow between the waypoint so I am using code i.e.
new WaypointMission.Builder().autoFlightSpeed(3f).maxFlightSpeed(3f)
but it seems it is still very fast. Please let us know how to make this movement very slow.
Thank you for any help you can provide.

Public comment from Luce Luo in Zendesk ticket #32564:Dear Customer,
Thank you for contacting DJI.
Please refer to the API documentation to change the speed.
https://developer.dji.com/api-reference/android-api/Components/Missions/DJIWaypointMission_Builder.html#djiwaypointmission_builder_getmaxflightspeed_inline

Thanks,
Luce Luo
DJI Dev Teaminline-1459599479.png


Password does not change when account password changes (TP-Link side)

Thought I'd create this issue here just so it's findable on the repo, but please feel free to label it wontfix @fishbigger
Trying to use this package brought this issue to my attention.
When you change your TP-Link password, your plug password doesn't change. This may (hopefully!) be fixed in a TP-Link firmware update at some point, but right now, as of firmware 1.34 Build 20200925 Rel. 33922, this is how it is.
Therefore, you need to provide your original password at the time of adding the plug for this to work.
But I have to wonder how TP-Link themselves are sending the old password if this is the case.

You should also know that when you do change the password (e.g. to a shorter one), all issued OAuth tokens seem to be invalidated. Or at least I got disconnected from Alexa. Also now tapo app on ios tells me off for having too short a passwd.
I think my workflow for shortening plug passwords enough for this library to talk to the latest firmware will be

go to a short password
reset every plug to pick up the new pass
go back to a long password
disable/reenable Alexa skill

Not sure what it'll mean for Home Automation.
Having all OAuth tokens voided on a passwd change is probably a nice little security feature -maybe even intentional

Hi, thanks for this, I won't close it in case anyone has anything to add in the future but I've labelled it wontfix for the moment unless theres something on my side that needs fixing because of this issue :)

It doesn't need to reset plug for at least 1.4.5 Build 20210122 Rel 57265


Importing FullWindowOverlay is only valid on iOS devices.

you can just create a wrapper if the overlay is crashing your app on Android
import { FullWindowOverlay } from 'react-native-screens'

import { isIOS } from '~/constants/platform'

export const AppFullWindowOverlay = ({ children }: { children: React.ReactNode }) =>
  isIOS ? <FullWindowOverlay>{children}</FullWindowOverlay> : <>{children}</>

My question would be why the warning is logged when importing FullWindowOverlay, rather than when rendering it. I am already using a ternary for rendering it as posted above, but the warning for importing it doesn't make sense to me, as I can't think of any way to only import the component on iOS.


Fix GDScript base and outer classes, signals and functions lookup order

Fix GDScript inner and outer classes lookup order

Add outer class lookup test
Add signal lookup test

Fixes #70216 (again)
Fixes #70495 - Accessing keys() dict of an enum defined in a singleton crashes app

Hah, but unfortunately not right. There is difference in logic for base and outer classes. In base classes they do handle variables, functions and signals, while in outer lookup it is ignored.
So, the next example based on that:
class A:
 var Q := 'right one'

class X:
 const Q := 'wrong one'

class Y extends X:
 class B extends A:
   func check() -> void:
     print(Q)

func _ready() -> void:
 var b := Y.B.new()
 b.check()

Hah, but unfortunately not right. There is difference in logic for base and outer classes. In base classes they do handle variables, functions and signals, while in outer lookup it is ignored.
So, the next example based on that:
class A:
 var Q := 'right one'

class X:
 const Q := 'wrong one'

class Y extends X:
 class B extends A:
   func check() -> void:
     print(Q)

func _ready() -> void:
 var b := Y.B.new()
 b.check()

Please. I do please you to create a complete example in advance.

Yeah, sorry for that, my reasoning is that I try to show the simplest example that everyone will see is wrong, not the most convoluted one (because it will be confusing and less in priority).
When you present a solution, I look at it and analyze what would be the next simplest showcase that the solution is wrong.
I also pointed out the root of the problem - as I wrote in the issue opening text you cannot continue using get_class_node_current_scope_classes just for outer logic. So when the known root of the problem is not addressed it is quite easy for me to come up with next example.

When you present a solution, I look at it and analyze what would be the next simplest showcase that the solution is wrong.

The problem with this is that I'm stuck at doing ping-pong.

as I wrote in the issue opening text you cannot continue using get_class_node_current_scope_classes just for outer logic.

No. You said that it wasn't working because:

[...] but it does not because of the wrong usage of get_class_node_current_scope_classes every class connected in any way to outer class gets checked even before first base class of the type in question is looked at.

... which I corrected. And again, I just updated the PR. get_class_node_current_scope_classes() work wonderfully, it was just missing what to do when encountering variable, functions and signals, as you said.

I also pointed out the root of the problem

Please, when "pointing out the root of a problem", please add some context or a solution yourself. And especially don't say that it's easy.

please add some context or a solution yourself

I think I provided the context, but solution is not a one-line change. My thoughts: I think that get_class_node_current_scope_classes has value and to be consistent with other places it should be used to replace whole while (base_class != nullptr) loop and in iteration you need to check if the current script is outer or not, if it is base one then instance things like variables/functions/signals should be accepted, otherwise not.

@vonagam I replaced the list value of GDScriptParser::ClassNode * with a new list of GDScriptAnalyzer::CurrentScopeClass structs. It adds metadata, as you suggested, to know if the current class node "type" (I'll probably rename it) is BASE or OUTER.
Then, I realized that get_class_node_current_scope_classes() in reduce_identifier_from_base() already loops through the base, so I removed the while (base != nullptr) to introduce a single if (base != nullptr) condition.
@rune-scape @anvilfolk If you could add your input to this complex issue, it would be greatly appreciated.

Been looking at this a little bit, and I'm starting to wonder if maybe we shouldn't make the analyzer a little more flexible. What if we had a bitfield in reduce_identifier_from_base and the like, which defines which types of things are in scope.
I can imagine this bitfield having:

CLASS_TYPES, such as inner classes,
CLASS_MEMBER, such as static functions & enums
INSTANCE_MEMBER such as variables and non-static functions), and ALL for everything.
ALL all of the above

This way, depending on what we are searching for (e.g. whether we're looking into base classes or outer classes), we could pass the method some information stating that it should ignore instance members and class types, and only look for class members.
Would this make sense at all?

Alternative solution to separate bases from outer:
get_class_node_current_scope_classes currently returns base classes first then outer ones. So if you get a number of base classes either by returning or passing int by reference then by comparing if current index is less than a number of base classes or not you will know it's type. That's an option that requires no additional types/structures, but just an option.

get_class_node_current_scope_classes currently returns base classes first then outer ones.

I think you misunderstand the method.
It returns, yes, base classes in priority over outer classes. But the recursive nature of the method makes it so that outer classes of the first base class have priority on the second base class.

It returns, yes, base classes in priority over outer classes. But the recursive nature of the method makes it so that outer classes of the first base class have priority over the second base class.

Whoa, I'm totally wrong.

Just found out how to add support for signals. It's in the PR.

Did you get rid of the OUTER and BASE struct thing? I love that a looooooot! I was wondering whether there wasn't a way to do it without that extra complication :)

Did you get rid of the OUTER and BASE struct thing? I love that a looooooot! I was wondering whether there wasn't a way to do it without that extra complication :)

It was @vonagam's idea!

I like the latest changes! Code is getting super nicely refactored!!!
I wonder if the new function should be called reduce_identifier_from_base, or maybe something slightly different like set_identifier_to_script_class()? when I looked in there I was expecting it to be doing a search through the base class members, but that's not it at all :)

Another important thing:
class A:
  var x := 3

func _ready() -> void:
  print(A.x) # no warning right now

Before reduce_identifier_from_base was used only on instances, but now it is used on classes too. So those cases need to be distinguished. Since is_base used for those relevant things, you can rename it to is_base_instance and initialize it with !type.is_meta_type.

@anvilfolk @rune-scape If you could take a final look to the PR, we think, @vonagam and I, that the PR is ready to merge.

This PR fixes the crash when running the project whose backtrace I posted in https://github.com/godotengine/godot/issues/70495.
However it still shows many errors when starting:

Just looked through the code, here's my understanding of what it does:
reduce_identifier_from_base now keeps track of whether the base is an instance or whether the base is a type (using is_base_instance and through is_meta_type. If the base is an instance, then you are free to check base & outer classes for instance variables. If the base is not an instance, then you check only for class members such as static functions, enums, constants, etc.
This generally makes sense, but I can't tell why this wouldn't search for instance members of an outer class if the base is an instance.
So something like
class_name Outer
var x

class Inner:
  func test():
    print(x) # check outer instance member from instance

static func test():
  var i = Inner.new()
  i.test() # Call on an instance

I'm compiling right now to test :)

Ok, all the tests I've come up with seem to work still, and I think I figured out why too :)
get_class_node_current_scope_classes(base_class, &script_classes); gets all the classes, prioritizing base classes first. At some point, you'll reach the outer class of the original base. HOWEVER!
Once that happens, is_base_instance = is_base_instance && script_class->base_type.class_type != nullptr; makes it so is_base_instance = false. That's because the topmost class in the class hierarchy has no base_type.class_type. Anything that happens after that is clamped to the base no longer being instance, meaning that after you have reached the top of the class hierarchy, you can only ever find static/class members, no longer instance members.
So that makes perfect sense, though maybe it does deserve a slightly longer comment about the order in which things come in script_class, because it's a pretty subtle interaction coming from two places.
But it makes sense and seems to work!
Though I can confirm that it does not make these errors go away, since I just reproduced them:
core\variant\variant_call.cpp:1265 - Condition "!method" is true. Returning: 0
core\variant\variant_call.cpp:1318 - Condition "!method" is true. Returning: Variant::NIL
core\variant\variant_call.cpp:1251 - Condition "!method" is true. Returning: nullptr

Also, this line: ERR_FAIL_COND_MSG(err != OK, "Error while getting full script."); is triggering many many times, I think for scripts that might have errors in them, or not be fully parsed? Something about scripts with errors staying in the cache perhaps? I wonder if it isn't best not to have that error message?

Found out the core of the problem with the !method errors, at least as it relates to this PR.
This line in reduce_identifier_from_base_set_class:
scr = scr->find_class(p_identifier_datatype.class_type->fqcn);
Returns null. In my case, it was for this file:
extends Node
class_name MyClass # If it doesn't trigger for you, remove this line then add it again.

class B:
	pass

func _ready():
	var _test_instance = B.new()

It can't find B from its fqcn, which is MyClass::B. This results in the compiler attempting to compile it as a BUILTIN for some reason.

Right, scr->find_class can return null for nested classes and it can be reproduced by commenting/uncommenting them. That what was my comments about (like here) in the #70055 that introduced that way to get reduced_value for classes.
This current PR does not changes the already existing logic, just moves it to reduce_identifier_from_base_set_class without any alteration.
The most likely solution would be what @rune-scape mentioned in this comment, so that you can request a cached script for a nested class directly by its class path (meaning not by getting a cached root script and only then searching for nested one in it), then cache will have opportunity to see that it is outdated and repopulate subscripts.

I did test it and it does change the logic slightly, since find_class was not used previously! :)
I did just submit a PR that fixes that potential regression though in #70537. Feel free leave a review there or just incorporate that in your PR though.
The issue is described there, and it's pretty subtle & very very localized to when you change class_name. It's not a fix for the other issues that we are seeing. It's good to know that you've found the issue. That's a good find, I had forgotten that whenever is_constant is set, then reduced_value also needs to be set!

@vnen What do you think of this PR?

@vnen @vonagam I rebased the PR with the merge of #70613.
I think the PR is ready.

The build fails, but it's Windows that failed to build the artifacts, not that it had errors elsewhere.

and not get_shallow_script with raise_status as it is done for the same purpose in preload.

I did not try that, I'll try!

Thanks to both of you, huge work!


[DOC] fix typo:corrected accroding to according

…ter/docs/en/samples/use_encryptoptions.md
[DOC] fix typo in https://github.com/fluid-cloudnative/fluid/blob/master/docs/en/samples/use_encryptoptions.md

Ⅰ. Describe what this PR does
Fixed #3809
The pr is to correct "accroding" to "according" of file docs/en/samples/use_encryptoptions.md
Ⅱ. Does this pull request fix one issue?
Fixed #3809
Ⅲ. List the added test cases (unit test/integration test) if any, please explain if no tests are needed.
Ⅳ. Describe how to verify it
Ⅴ. Special notes for reviews

you should add -s when you use command "git commit".   please pr again

Duplicate of #3810


Changed webview to Custom Tabs in Settings Page

Description
Fixes #1143

Changed webview to Custom Tabs in "become beta tester" preference.

Tests performed
Manually Tested on MotoG5S+ {Android 7.1.1}, with {build variant-Debug}.

Codecov Report

Merging #1328 into master will increase coverage by 0.03%.
The diff coverage is 0%.

@@            Coverage Diff            @@
##           master   #1328      +/-   ##
=========================================
+ Coverage    3.81%   3.84%   +0.03%
=========================================
  Files         126     126
  Lines        5919    5923       +4
  Branches      583     583
=========================================
+ Hits          226     228       +2
- Misses       5678    5680       +2
  Partials       15      15

Impacted Files
Coverage Δ

...fr/free/nrw/commons/settings/SettingsFragment.java
29.62% <0%> (+1.05%)
:arrow_up:

Continue to review full report at Codecov.

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

@neslihanturan Can you review this PR.

It crashes on API level 19:
java.lang.NoSuchMethodError: fr.free.nrw.commons.settings.SettingsFragment.getContext
                                                                               at fr.free.nrw.commons.settings.SettingsFragment.lambda$onCreate$4$SettingsFragment(SettingsFragment.java:107)

Since getcontext call requires API level 23, our min is 15

changing getcontext() to getActivity() would work !


Add prefix query on name to search

This also refactors what was the multi_match query to explicit queries
to allow for prefix queries.

Note: Because of the pretend.stub test failures I've not fixed the real failures. I'm not familiar with pretend.
I'll continue working on this tomorrow but if there's time I would appreciate a preliminary review on the direction and help with pretend. Thanks.

Re: pretend, it looks like your failures fall into two categories
The first is where you have a assert db_request.es.query.calls == [ ... ] that is failing. For this you just need to update the RHS to match the new calls you're making. If you're making a call that looks something like request.es.query(foo="bar"), then you just need to update that so the RHS looks like [pretend.call(foo="bar")].
The second is a lack of a suggest stub, this should be pretty easy to add, you basically slightly changed it so that instead of suggest() only being called when there was a query, you're calling it all of the time. Either that should be adjusted so it's only called when there is actually a query (in which case, these failures should go away) or the tests that test when there is no ?q=... will need to be adjusted to match the other tests and their use of a suggest stub.

Cool, so I did a review, the overall approach looks pretty reasonable to me (at least as far as I understand ES). I made a few inline comments, but overall this looks like a good change.

Updated after code review.

Found a bug here. The changes to the elasticsearch query from multi_match to bool queries results in exact matches no longer being at the top. I'm moving it to a dis_max query which is what multi_match does under the hood and testing that.

Updated again. Ready for full review pass.

✨


OAuth support

As you likely already know Google and Microsoft now require OAuth authentication instead of "insecure" methods for "legacy" protocols.
Some documentation here: https://learn.microsoft.com/en-us/exchange/client-developer/legacy-protocols/how-to-authenticate-an-imap-pop-smtp-application-by-using-oauth

Sorry for this late reply!
I'm annoyed by this with a gmail account myself, so this is definitely on my list of things to look into.
Though I'm not very optimistic that it will be so easy.
Unfortunately, it will probably take quite some time still until I can look into this.

The authentication itself is very simple, but the annoyance is in setting up the app in Azure (that the end user must do), and managing token expiration (need to re-grant access once in a while + the app's token also expires within 2 years).


Add businessautomation-cop team and repo config

This is related to #117

/retest

/lgtm

/retest


Shallow-copy slot values

Fixes https://github.com/holoviz/param/issues/793. Adds shallow copying of mutable slot values when instantiating Parameter objects or inheriting values for slots. Shallow copying is only done when per_instance is True (the default); if you don't want such copying you can share both Parameter instances and mutable slot values by setting per_instance=False.
import param

class A(param.Parameterized):
    p = param.Selector(objects=[1, 2], check_on_set=False)

class B(A):
    p = param.Selector(default=2)

b = B()
b.p = 3

print(A.param.p.objects, B.param.p.objects, b.param.p.objects)
# [1, 2] [1, 2, 3] [1, 2, 3]

(previously A's objects list was also [1, 2, 3]; now fixed to be [1, 2])
There are various issues still, as listed below.
Tests
Needs a test capturing the example above, but I've got to run, so if anyone wants to add that I'd be grateful, or I can do that tomorrow.
Previous handling of watchers
PR https://github.com/holoviz/param/pull/306 added this logic to Parameters.getitem() for shallow-copying watchers:
try:
    # Do not copy watchers on class parameter
    watchers = p.watchers
    p.watchers = {}
    p = copy.copy(p)
except:
    raise
finally:
    p.watchers = {k: list(v) for k, v in watchers.items()}

This PR generalizes such copying to apply to all the slot values besides default, but I was unable to determine why the existing code was so complex. First, why p.watchers = {k: list(v) for k, v in watchers.items()} instead of just p.watchers = copy.copy(watchers.items())? copy.copy is used just a couple of lines before, and when I use it here it seems to work just the same, as I'd expect, so I can't tell why it was a list comprehension that appears to achieve the same as copy.copy.
Second, what's with the try/except/finally? Deleting all that seems to work just fine, and I can't quite imagine a situation when the try block could fail but the watchers are still valid to reconstruct finally. Maybe something in Panel? For now I deleted it as it does not seem to achieve anything.
Third, I've kept the convoluted mechanism for zeroing-out the watchers in the original Parameter object when creating the new one. Simply shallow-copying the watchers after copying the Parameter object leaves an extra set of watchers that causes tests to fail, but I'm not at all sure why it's appropriate to move the watchers to the new Parameter object rather than where they were originally watching. For now I chose to be conservative, but I'm not confident why it was done this way, so if there's a reason, it should have a clear comment added.
What's mutable and when is it copied?
For now, mutable sequences, mappings, and sets are considered mutable, which covers the list and dict cases that I'm aware of us using in slots. Such values are shallow-copied for all slots except default, to ensure that any independent Parameter copies also have independent objects lists, etc. Parameterized objects are also mutable, but I don't know if they are ever used in slots. If they are, we should consider whether they should be shallow-copied, but my guess is that they should not, since it's largely containers that we want shallow-copied, not arbitrary instantiated objects. Maybe is_mutable should be renamed is_mutable_container to convey that?
The reason for not copying the default value is to allow a specific list or dict to be shared across Parameters, which has always been supported. E.g. one could have a few global lists like search_paths, debug_search_paths, etc., whose values are curated and maintained independently of which particular Parameters have been set to those values. We can revisit whether mutable containers should be copied for default too, but if so, it should be a separate PR with its own justification.
I currently check for default only when copying the Parameter object, not during inheritance. It might also be appropriate to skip shallow-copying for for inheritance as well, but I haven't found an example where that would come up. Probably worth doing?
_update_state
After merging this PR, I believe we should be able to remove _update_state as discussed in https://github.com/holoviz/param/issues/807 and https://github.com/holoviz/param/pull/817 . _update_state was needed because we had to wait for param inheritance before adding to the objects lists for Selectors, but now that values get shallow copied, it should be feasible to populate the objects lists (e.g. from the default value) immediately, during the constructor. Doing so should simplify the Selector logic, but I haven't yet tested that this PR's approach will achieve that goal.
My guess is that eliminating _update_state is required, for fixing this remaining bad behavior:

import param

class A(param.Parameterized):
    p = param.Selector(objects=[1, 2], check_on_set=False, per_instance=True)

class B(A):
    i = param.Integer(8)

b = B()
b.p = 3

print(A.param.p.objects, B.param.p.objects, b.param.p.objects)
#[1, 2, 3] [1, 2, 3] [1, 2, 3]

Here the Parameter object isn't copied into B, and the new value 3 ends up in A's object list, which it should not. I think that may be from _update_state being called on the class's copy of the objects list, not the instance's, since it's called in the metaclass, but I haven't tracked that down.

on Previous handling of watchers, I agree we need to better understand what was going on there, hopefully Philipp can remember some of that otherwise we'll have to try to dig more into it
on _update_state, I wish we could get rid of it but I also know that the Selector(s) Parameters are quite dynamic (some slot default being callable that depend on the state of other slots) and are difficult to setup correctly when the slots aren't populated in the expected order, which happens in an inheritance context.

What do you think about the examples below? In the first snippet the code accesses the Parameter before setting p.s to 3, to run __getitem__ and shallow-copy the objects. In the second case this is commented out, leading to the objects on the class Parameter being updated as the Parameter doesn't yet exist on the instance. This is similar to the last example you shared @jbednar, without any inheritance though.

class P(param.Parameterized):
    s = param.Selector(objects=[1, 2], check_on_set=False)

p = P()
p.param.s.objects  # runs `__getitem__`
p.s = 3
assert P.param.s.objects == [1, 2]

class P(param.Parameterized):
    s = param.Selector(objects=[1, 2], check_on_set=False)

p = P()
# p.param.s.objects
p.s = 3
assert P.param.s.objects == [1, 2, 3]

@maximlt , that's a good point:

Maybe we need to populate the Parameter objects more proactively. Any suggestions for where to make that change?

Any suggestions for where to make that change?

Maybe at the start of Parameters._setup_params which is called from Parameterized.__init__?

Actually the behavior I reported in my previous comment is not tied to mutable containers.

Code
import param

class P(param.Parameterized):
    x = param.Number()

p = P()

P.param.x.bounds = (100, 200)

assert p.param.x.bounds == (100, 200)

class P(param.Parameterized):
    x = param.Number()

p = P()

p.param.x  # side-effects there

P.param.x.bounds = (100, 200)

assert p.param.x.bounds is None

Accessing a Parameter on the .param namespace creates a Parameter on the instance. I'm not sure it's really a bug, certainly it's confusing, but really the way to get a Parameter you can control at the class level should be with per_instance=False.

My reading of the watchers code above is that it's not fully correct. The problem being that we can't distinguish between watchers that are meant to be on the class parameter and watchers that are meant to be on the instance parameter since there is no difference until the instance parameter is created, i.e.:
param.Parameterized.param.watch(print, 'name', what='allow_None')

looks exactly the same as:
p = param.Parameterized()
p.param.watch(print, 'name', what='allow_None')

In general it seems very rare to have watchers for attributes on class parameters so this hasn't come up, but it's definitely not correct. I think this is another issue we can't easily fix without making instance parameter creation non-lazy.

Second, what's with the try/except/finally? Deleting all that seems to work just fine, and I can't quite imagine a situation when the try block could fail but the watchers are still valid to reconstruct finally. Maybe something in Panel? For now I deleted it as it does not seem to achieve anything.

I do think it's important, at least if we decide not to fix the underlying issue yet. If there is somehow an error while creating the instance parameter (e.g. because some value is not safe to copy) then the watchers end up being lost entirely.

If there is somehow an error while creating the instance parameter (e.g. because some value is not safe to copy) then the watchers end up being lost entirely.

How would it help to have watchers copied correctly but not whatever slot value was about to be copied after the failing one? This try/except/finally seems like it would just cover up problems, not avoid them -- why would we want watchers copied correctly when other slots aren't?  If we wanted to copy all the slots that we could, and put a warning for any that didn't work, wouldn't we do that in a loop where the try/except was per slot, not for the entire copy operation?

It's not about the object being copied to but about restoring the class that's being copied from.

Hmm; that's weird. My understanding of that code is that if copy.copy fails, an exception will be raised, with p remaining the class Parameter object, except that p.watchers has been replaced with a copy of the original dict. Seems like a lot of hoops to be jumping back and forth through to achieve that outcome, i.e. emptying out the watchers and then replacing it with something just like the original.
And then if copy.copy succeeds, no exception will be raised, and p will become the instance's copy of the Parameter, where the instance p.watchers will have a copy of the original dict. But won't the original class Parameter now have an empty watchers dict? How is this working at all when there are multiple instances that need to have the same Parameter instantiated into it? Only the first one gets the watchers?
Unless I'm very confused, it seems like we have two defensible options here: (1) Leave watchers on class Parameter objects, and don't copy them to instances. Instances would need their own watchers, which would be specific to that instance. Watchers on class Parameter objects would be watching the class Parameter object, not instances. (2) Leave watchers on Class Parameter objects, and copy them to all instances. Thus anything that watches the class Parameter will also be watching all the instances.
I am not seeing any argument for what it seems like the current code is doing, i.e. emptying out the watchers from the class Parameter object after instantiation. When is that ever appropriate?

@maximlt , I've pushed a few more commits to address the issues above:

In 9ba4aa1 I've restored the watchers logic to its original state using try/except/finally; if it's to be addressed, that should be done in a separate PR. It should now be unchanged from before this PR, just refactored differently.
In 7fcf8d4 I refactored the new Parameter.__getitem__ implementation to pull out  the logic for copying Parameter objects per_instance into a new function _instantiated_parameter(). This commit should not change anything about the behavior; it just makes that logic reusable elsewhere.
In 6ce1ef3 I make Parameter.__set__ use _instantiated_parameter() to ensure that the Parameter object has been copied per_instance before any setting is done, so that e.g. _ensure_value_is_in_objects will affect the per_instance Parameter object instead of the class's Parameter object. In this commit I had to update one warning message because it's being generated another level deep in the stack trace, plus I deleted one newly-added line from the tests that was essentially enforcing that the objects on a Selector were stored only in the class, which this commit deliberately changes.

6ce1ef3 is the key one for addressing the problems above. After that commit, I believe these behaviors are now correct:

import param

class A(param.Parameterized):
    p = param.Selector(objects=[1, 2], check_on_set=False, per_instance=True)

class B(A):
    i = param.Integer(8)

b = B()
b.p = 3

print(A.param.p.objects, B.param.p.objects, b.param.p.objects)
# [1, 2] [1, 2] [1, 2, 3]

(b now gets its own per_instance copy of the objects list)

class P(param.Parameterized):
    s = param.Selector(objects=[1, 2], check_on_set=False)

p = P()
p.param.s.objects
p.s = 3
print(P.param.s.objects, p.param.s.objects)
#[1, 2] [1, 2, 3]

class P(param.Parameterized):
    s = param.Selector(objects=[1, 2], check_on_set=False)

p = P()
p.s = 3
print(P.param.s.objects, p.param.s.objects)
#[1, 2] [1, 2, 3]

(invoking __getitem__ is no longer required for p to get its own per_instance copy of the s Parameter object)
I'm ok with keeping the behavior you show in 3. above, i.e. that accessing a Parameter on the .param namespace creates a Parameter on the instance. I agree that if you want to control a Parameter at the class level, you can either change the class values before creating any instances, or you can set per_instance=False. If you change the Parameter at the class level after having instantiated some classes, there's no guarantee that the class-level changes will propagate down. As you show, sometimes they do, but really if you want such changes you have to make them on the instance or you have to set per_instance to False!
So far, I haven't messed with _update_state, because changing that wasn't necessary for anything to do with instantiating slots.
So this PR should be ready to review and merge now; it now does what it says: adds shallow-copying for Parameter slot values that happen to be mutable containers, whenever a Parameter object is copied to an instance or inherits its slot values. Parameter objects are still copied only lazily, as before, but now there is one more case where it gets copied, namely a when a parameter value is set on the instance (to handle _ensure_value_is_in_objects).

I assume everyone is happy with the behavior in case 1 (two separate Parameter objects, and two separate objects lists)?
Case 2 is trickier. On the one hand, the current behavior in 2 seems like the only way to define a Parameter object whose settings can easily be inherited across a hierarchy. I.e., not copying the Parameter object between A and B is what lets people mess with the one in A and set things up as they like, while knowing that it will all propagate nicely. Plus, if they do want separate Parameter objects in subclasses, it's easy enough to just put them there, as in 1.
On the other, I do agree that there's some argument for duplicating the Parameter automatically to make case 2 act like case 1, so that they behave independently. On balance I think it's ok that we aren't doing that; seems like we lose more than we gain.

I'll be addressing watcher related issues in a separate PR. I also think that on balance the behavior in the example above is defensible. So I'm going to consider this ready and merge.


Global license header configuration

The spotless plugin was only configured for the model-client and not even properly for a multi platform project. Now it runs on all Kotlin sub-projects to ensure they use the same license header.

The spotless Plugin is actually a source of potential configuration issues when setting up the project freshly in IntelliJ and it also contributes to the overall build time inside Gradle. I was wondering if it wouldn't be better to drop this aspect from the longish Gradle build and to instead use only pre-commit for this purpose? github.com/Lucas-C/pre-commit-hooks could be an option.


Set up SAMOSA cases

Case 4 runs OK for 100 orbits (1500 days) but is far from steady state.

Case 4 in LFRic-Apps vn1.1 with C24 and dt=1800s is OK for 1000 orbits (15000 days) and has reached steady state.


[Proposal]: Rename project and classes from BMesh to UMesh

Summary
Rename the project and any references of BMesh to UMesh instead.
Motivation
The "B" in "BMesh" stands for Blender (At least I assume as much), so it makes sense to use "U" for a Unity implementation. I believe that renaming it makes it cleaning (no longer needs to be "BMesh for Unity"), and more distinct, as the project grows and becomes less of a one to one with the Blender BMesh I think it would be good for it to have it's own name.
There are also a number of proposals open that, if accepted would already introduce breaking changes, so if it is to ever be renamed, now would be a good time to do so.
I do understand that this is rather unimportant overall, but I think that it would make it look nicer and more distinct.
Drawbacks
This is a breaking change that would require changing any references to the BMesh class to UMesh.
I would be happy to make a PR with this change if desired after any further discusion.

I believed it standed for "Boundary Mesh", because it's common to say "B-Rep" to mean "Boundary Representation" (as opposed to volumetric representation, e.g. tetrahedral mesh), but now that you ask I realize nobody really knows. ^^
Actually I like that the current name contains "Unity" fully, so that people who here about the project or visit the page directly get that it is a library for Unity. Also UMesh could also stand for Unreal Mesh! It's true that the breaking changes would be a good occasion to change the name, but we can also simply call it BMeshUnity 2 to show that it is the same but with a breaking API.
NB: It is based on the Radial Edge model.

I believed it standed for "Boundary Mesh", because it's common to say "B-Rep" to mean "Boundary Representation" (as opposed to volumetric representation, e.g. tetrahedral mesh), but now that you ask I realize nobody really knows. ^^
Actually I like that the current name contains "Unity" fully, so that people who here about the project or visit the page directly get that it is a library for Unity. Also UMesh could also stand for Unreal Mesh! It's true that the breaking changes would be a good occasion to change the name, but we can also simply call it BMeshUnity 2 to show that it is the same but with a breaking API.
NB: It is based on the Radial Edge model.

Hahaha, that's great that nobody knows!
Putting "Unity" in the description seems to be enough for any project that is for Unity, so I don't think that should be too much of a concern more so because while made for Unity, it is also quite easy to make it work for other C# projects, basically they just need a Vector3. Mixing topics a little bit here, but I would be against putting "Unity" in the namespace, partly for that reason, and partly just because it doesn't look very nice imo. Plus if you are already using it within unity, the naming is kind of redundant.
That is a good point that "UMesh" could also be for Unreal!
Would you be open to other naming ideas?
Yeah, I actually have started to implement my own version also based both the Blender, and Houdini meshes and that Radial Edge model, but I found this repo which does exactly what I wanted, and the logic seems quite solid.

Fair enough, your points are relevant, and it is true that there is almost no dependance on Unity. It could be simply "BMesh", I like that it tells that it is the very same type of structure than in Blender, and that we did not reinvent the terms once again.
And the B for B-Rep is important to tell that this structure is meant for mesh editing (could be EditMesh) and not for minimal representation (contrary to the representation used by OpenMfx, or Blender's Mesh, or Houdini geometry spreadsheet, which are just buffer with no easy access to neighbors). I'd like the name to show in a way that the data structure is more than just a wrapper around Unity's Mesh class.
I was also gonna suggest "SharpMesh" but apparently it's already taken. Or RadialEdgeMesh, REMesh but the latter sounds like a remesher.
Anyways, I'm happy to see you interested in merging your efforts with this project rather than doing your own from scratch! I have to say that despite the margin of progress that you identified I have been happy with this library, which I use for several projects, so I'll be pleased to see it grow!

The more I speak to you, the more I don't mind BMesh if we are taking "B" as "Boundary Representation" and not "Blender", my other name suggestions would be RadialMesh, or RMesh,  or maybe the full BoundrayMesh but perhaps they do not convey the right thing.
Even if the main class name stays the same, I still feel the project and namespace should change, a suggestion would be "BMeshLib"/"BMeshLibrary"?


Close the toast with a close button and unlimited duration

Please add features to Notyf:

ability to close the toasts with a close button,
possibility to specify unlimited duration.

Thanks for opening the issue! I'll work on this ASAP.

+1

any news ?


Incomplete descriptions in metadata

Hi, thanks for this great script, I found it a few days ago and it's really useful :) This isn't really an issue, per se, but something I thought it might be nice to amend if using the separate metadata files.
I had a look at the pagesource and it looks like the descriptions were being taken from <meta property="og:description" content=", unfortunately that gives incomplete descriptions limited to ~121 characters without spaces.
I'd like to propose the following edit to copy the full description. There was also an '& quot ;' issue in some of the titles which is hopefully sorted as well. It might not be the cleanest way of doing it, but it seems to work okay. It copies it verbatim, so if they've put a lot of linebreaks in the desc, they'll appear in the metadata file. I'm interested to hear what you think :)
From line 147 'Get metadata'
            description="$(cat "$tempfile" | tr '\n' ' ' | sed 's/\(
\)/\n\1/gI' | sed 's/\(<\/div>\)/\1\n/gI' | grep -o '<div class="submission-description".*
' | sed 's/
                     //g' | sed 's@
@\n@g' | sed 's/<a href="//g' | sed 's@" class=".*@@g' | sed 's@
@@g' | sed 's/"/"/g')"
            if [ $classic = true ]; then
                    title="$(grep -Eo '
.*
' "$tempfile" | awk -F "
" '{print $2}' | awk -F "
" '{print $1}' | sed 's/"/"/g')"
            else
                    title="$(grep -Eo '

.*

' "$tempfile" | awk -F "
" '{print $2}' | awk -F "
" '{print $1}' | sed 's/"/"/g')"
            fi

Minor update to clean up a few more things in the diesciption on line 148:
description="$(cat "$tempfile" | tr '\n' ' ' | sed 's/\(
\)/\n\1/gI' | sed 's/\(<\/div>\)/\1\n/gI' | grep -o '<div class="submission-description".*
' | sed 's/
                     //g' | sed 's@
@\n@g' | sed 's@" title=.*@@g' | sed 's/<a href="//g' | sed 's@" class=".*@@g' | sed 's@
@@g' | sed 's/"/"/g' | sed 's// /g' | sed 's@@@g' | sed 's/././g' | sed 's@<i class=".*@@g' | sed 's/\r//g' | sed 's/^ //g')"


No control

I have RosettaDrone running on the DJI SmartController with a Mavic 2 Pro. I have QGroundControl running on Ubuntu Linux.
With the exception of a few crashes it seems to be running OK. The video seems to lag and become sticky. I even have the video streaming to the QGroundControl station.
I am having issues trying to control the drone from QGroundControl. I have tried Go To Waypoint, Uploading a simple flight mission. I cannot control it with the sticks in QGroundControl either.
Control from the RosettaDrone app is working fairly well. With the exception of crashes every once in a while.
I have the time and experience to work to resolve these issues. Please let me know what I can do to get this up and running.

Hmm it some time chrasjes at start, it’s an open-gl issue it seems, but I also use the Smart controller an it never chrases while running.
The joystick should work, I have to check that.
Use QGC 3.5 the 4.x is bad, they work on it. The QGC team has seen the same thing now.
I use DroneKit for control, missions still got issues. Goto is not tested, DJI does not support it so I hade to write it from schrach, using low-level controlls.
I try to pick one snd one isse, at the momen video on non OcySync systems is prioritized.
Feel free to add push requests and fixes.
Best regard
Terje Nilsen
9Tek AS
Norway

On Aug 31, 2020, at 20:05, ryansabin<EMAIL_ADDRESS>wrote:

I have RosettaDrone running on the DJI SmartController with a Mavic 2 Pro. I have QGroundControl running on Ubuntu Linux.
With the exception of a few crashes it seems to be running OK. The video seems to lag and become sticky. I even have the video streaming to the QGroundControl station.
I am having issues trying to control the drone from QGroundControl. I have tried Go To Waypoint, Uploading a simple flight mission. I cannot control it with the sticks in QGroundControl either.
Control from the RosettaDrone app is working fairly well. With the exception of crashes every once in a while.
I have the time and experience to work to resolve these issues. Please let me know what I can do to get this up and running.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.

There are still issues with some of the goto commands and waypoint... will be fixed soon...

The1only,
Thank you for this project allowing us to manage the DJI product with QGroundControl. In my testing the Mavic 2 Pro Smart Controller video feed I am not able to get a video feed from the Smart Controller to QGroundControl.
I have successfully tested this on multiple phones and tables with success but impossible to find a reason for the SC not sending the feed to QGC 4.1.3.
Any ideas on where to start?
Regards

Check off the «super low latency» flag in QGC, and make sure to use a computer and network that can handle the trafik.
I controll the drone that way all the time, super low latency (0.5s total fram event to decoded in Python using OpenCV, even lower in QGC) , and no chrashes.
Best regard
Terje Nilsen
9Tek AS
Norway

On Aug 31, 2020, at 20:05, ryansabin @.***> wrote:

I have RosettaDrone running on the DJI SmartController with a Mavic 2 Pro. I have QGroundControl running on Ubuntu Linux.
With the exception of a few crashes it seems to be running OK. The video seems to lag and become sticky. I even have the video streaming to the QGroundControl station.
I am having issues trying to control the drone from QGroundControl. I have tried Go To Waypoint, Uploading a simple flight mission. I cannot control it with the sticks in QGroundControl either.
Control from the RosettaDrone app is working fairly well. With the exception of crashes every once in a while.
I have the time and experience to work to resolve these issues. Please let me know what I can do to get this up and running.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.

Yes the problem is normally wrong version of the compile tools. You will then loose video, do not know why.
Best regard
Terje Nilsen
9Tek AS
Norway

On Jun 21, 2021, at 20:38, Terje Nilsen @.***> wrote:
Check off the «super low latency» flag in QGC, and make sure to use a computer and network that can handle the trafik.
I controll the drone that way all the time, super low latency (0.5s total fram event to decoded in Python using OpenCV, even lower in QGC) , and no chrashes.
Best regard
Terje Nilsen
9Tek AS
Norway

On Aug 31, 2020, at 20:05, ryansabin @.***> wrote:

I have RosettaDrone running on the DJI SmartController with a Mavic 2 Pro. I have QGroundControl running on Ubuntu Linux.
With the exception of a few crashes it seems to be running OK. The video seems to lag and become sticky. I even have the video streaming to the QGroundControl station.
I am having issues trying to control the drone from QGroundControl. I have tried Go To Waypoint, Uploading a simple flight mission. I cannot control it with the sticks in QGroundControl either.
Control from the RosettaDrone app is working fairly well. With the exception of crashes every once in a while.
I have the time and experience to work to resolve these issues. Please let me know what I can do to get this up and running.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.


update namespace package instructions

The instructions are for a flat hierarchy but it seems most uses are for a hierarchical. So change to suit.

Going to close this out for the time being. Can revisit at a later date as needed.


Aggregator partners parameter revision

Problem
Aggregators like LiFi, Metamask, Bungee seem to be setting up the parameters of the transaction wrong. The main issue is that the slippage tolerance is set too low (0.5%) and when users get their transactions stuck, they aren't able to bump the slippage themselves, because the delegate is the aggregator (this seems to happen a lot with Metamask/Bungee transactions coming through Socket).
Impact
Users believe its our fault when a transaction gets stuck and they can't do anything about it.
Proposed Solution
We need to go through every partner and examine their integration with us and how the parameters are set for user transactions.
Acceptance Criteria
Users need to be able to control their transactions by themselves without relying on us or our partners (other than for customer support/help)

Adding another protocol that seems to have this problem: Gnosis Pay

Is it correct to set the delegate to be the receiver address? We should definitely make this clearer in our documentation and to our integrators.
Basically what I think is that if you set it to the sender, that address might not exist or be able to make transactions on the receiving chain. But if you set it to the receiver, that address might be a CEX deposit address (problem pointed out here: https://github.com/connext/monorepo/issues/2476)


weak var Mention context to inject mentions context

Since the NSTextAttachmentProvider can only see the text view, and the pill might require a context that holds various data and helpful functions to make the pill render correctly, this is just a markdown protocol that can be injected as a weak var to get such context.
For example on Element X this context could be the room context, useful to get all the informations of the already fetched members, and the image provider.
The using application will already know what type the context is and just type unwrap it.

Codecov Report
All modified lines are covered by tests :white_check_mark:

Comparison is base (827ae99) 89.94% compared to head (28346ca) 89.91%.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #840      +/-   ##
==========================================
- Coverage   89.94%   89.91%   -0.03%
==========================================
  Files         114       82      -32
  Lines       16306    14767    -1539
  Branches      620        0     -620
==========================================
- Hits        14666    13278    -1388
+ Misses       1617     1489     -128
+ Partials       23        0      -23

Flag
Coverage Δ

uitests
?

uitests-ios
?

unittests
89.91% <ø> (+1.24%)
:arrow_up:

unittests-ios
?

unittests-rust
89.91% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.
see 32 files with indirect coverage changes

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

SGTM

I might improve it tomorrow, since I was able to run it locally in El-X at the end


How is startPolling and stopPolling supposed to work?

First of all: great work!
But I don't understand how those two functions are supposed to work. Calling them in the render property like so
render={({ startPolling, stopPolling, isPolling }) => {           if (this.state.view === 'results') {             stopPolling();           } }}
leads to an TypeError:
TypeError: Cannot read property '_ismounted' of undefined
What I'd like to to is to stop polling for a certain state in the application and re-start it after another event occurs.

@K3CK Thank you for the kind words and sorry to see it not working as expected.
Can you try with the latest release v1.0.5?
That should fix your issue and startPolling, stopPolling should work as expected.
Let me know if you still face any issues.

Thanks for your fast response. But unfortunately it throws now a different error:
Warning: Cannot update during an existing state transition (such as within render). Render methods should be a pure function of props and state.
And
Uncaught Invariant Violation: Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.

can you create a codesandbox link for me to check?

I have a stupid question: I was wondering how do I get the body of the response in your example:
if(isPolling) {
                            return (
                                <div> Returned json: ? </div>
                            );
                        } else {
                            return (
                                <div> Hello I stopped polling</div>
                            );
                        }

@fjacobs the response is always returned to the onSuccess handler so you can use that and then set your own local component state. For example in a twitter feed example you can have a local component with this.state = { feeds: [] } and on every polling success you might append the new tweets to this feed.
I hope that clarifies the question.


List Blobs with Prefix, Delimiter, and Versioning

Description
Adding test for listBlobsByHierarchy which tests versioning, prefixes, and delimiter.

API change check
API changes are not detected in this pull request.


Support ignoring a column

Story at https://grips.semantic-web.at/x/0hZsB .

This issue was moved to odalic/odalic-ui#186


tap-nyc

So this isn't really an issue, but  I just wanted to share a TAP output formatter I released today called tap-nyc. It's meant to be used with nyc to produce condensed output for test failures/success. I've only tested on Linux w/ TapeJS, but it should work with any TAP producing test framework to my knowledge.  Check it out and if you like it, please feel free to include it in the nyc readme and/or website.
https://github.com/MegaArman/tap-nyc
https://www.npmjs.com/package/tap-nyc
nyc rocks

@MegaArman cool! curious, how did nyc misbehave when used with tape?

nyc + tape alone works OK, but produces too much output to fit on my screen without zooming out a bunch, for example:

With other existing TAP formatters (ex: faucet, so nyc + tap + faucet), the output from nyc is not shown:

With tap-nyc things are nicer:

@MegaArman I appreciate this work 👍 perhaps you could send an update to the README.md that points folks at this solution who are testing using tape?

Woohoo, sure thing. I'll do that soon.

@MegaArman landed your PR 👍 thanks for the contribution.

@bcoe @MegaArman this is awesome work. Already using tap-nyc(and NYC for that matter) in build pipeline! A Godsend 🙏 .  https://github.com/devpunks/snuggsi/tree/master/bin#test-runner


Stuck in System Preferences

General troubleshooting tips
Before logging an issue please check that:

[x] You have the latest version installed (There may be a beta version that fixes your issue), see here for the latest releases and bug fixes: https://github.com/JohnCoates/Aerial/releases
[x] Your issue isn't already mentioned in our issues. You may find a workaround there or a similar request already made.
[x] Your problem isn't mentioned in the troubleshooting page.

If none of this fixes your issue, tell us about the problem you are experiencing or the feature you'd like to request.
Required information
In order to help us sort your issue, we ask that you provide the following information:

[x] Mac model: MacBook Pro 2020
[x] macOS version: 12.3.1
[x] Monitor setup: Built-in retina display

If appropriate, please enable Debug mode and Log to disk in Advanced tab and replicate your bug, then attach the AerialLog.txt file (You can access this file through the Advanced tab).
I wanna to but I can't
Description of issue / Feature request
I just install the latest version from Homebrew, then I open the System Preferences to setting the aerial, and then, stuck

At the same time, the CPU and memory went up like crazy, I tried to wait about 30 minutes until my memory was completely full
I tried restarting the computer etc.

even I kill the process, the CPU and memory didn't stop increasing

I successfully solved this problem
I found all Aerial files in ~ directory and deleted them

@Hukeqing sorry about that, for some reason the preferences sometimes get stuck, I had a couple of reports on discord about it but haven't been able to figure out yet the root issue :(
In any case if this happens again (or to someone else), open a terminal and paste this :
defaults delete ~/Library/Containers/com.apple.ScreenSaver.Engine.legacyScreenSaver/Data/Library/Preferences/ByHost/com.JohnCoates.Aerial.plist

This will reset your settings properly (on 10.15+), restart System Preferences and it will be good to go. If you manually delete the file, because of defaults caching, you'll need to restart your mac for it to work usually.

@Hukeqing sorry about that, for some reason the preferences sometimes get stuck, I had a couple of reports on discord about it but haven't been able to figure out yet the root issue :(
In any case if this happens again (or to someone else), open a terminal and paste this :
defaults delete ~/Library/Containers/com.apple.ScreenSaver.Engine.legacyScreenSaver/Data/Library/Preferences/ByHost/com.JohnCoates.Aerial.plist

This will reset your settings properly (on 10.15+), restart System Preferences and it will be good to go. If you manually delete the file, because of defaults caching, you'll need to restart your mac for it to work usually.

maybe you can try to DESELECT "From Joshua Michaels & Hal Bergman", that means you deselect all in the following image

then you may meet the stuck. And then, you can restart System Preferences to see the scene in my screenshot
because I reach the stuck again :-(

Oh that would make sense. in that case there would be no video source at all so I can understand the crash.
Thanks a lot I'll dig into it tonight or tomorrow !


Advanced Search Box with Flask

Hi, I am using Flask in the backend and would like to use Advanced Search box. Could you please state dependencies? A tutorial would also help!

Hi, what is Flask? The searchbox does not have any server side dependencies.
Checkout the gh-pages branch for a complete example.

Yes, But I am not using bower or nodejs, so am getting errors to compile.

Why do you want to compile (what?)?
Just include the required java script and css files like the demo in the gh-pages branch.
There is no dependency on npm or bower (they're just my own development dependencies)

let me try once again

Closing this for now, please reopen if you still have issues.


[Event Request] Codeunit::"Item Jnl.-Check Line" - Function CheckPhysInventory - OnBeforeCheckPhysInventory

We like to request the following Event:
Object: Codeunit::"Item Jnl.-Check Line"
Function: CheckPhysInventory
Publisher Event: OnBeforeCheckPhysInventory
Reason: To implement custom business logic
Where is the event placed:
local procedure CheckPhysInventory(ItemJnlLine: Record "Item Journal Line")
var
IsHandled: Boolean;
begin
OnBeforeCheckPhysInventory(ItemJnlLine, IsHandled);
if IsHandled then
exit;
with ItemJnlLine do begin
if not
("Entry Type" in
["Entry Type"::"Positive Adjmt.", "Entry Type"::"Negative Adjmt."])
then begin
Event Code:
[IntegrationEvent(false, false)]
local procedure OnBeforeCheckPhysInventory(ItemJnlLine: Record "Item Journal Line"; var IsHandled: Boolean)
begin
end;

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. We will update this issue with information about availability.


Corrections into Format,

Pending corrections on LINKS

@nenonix @JohanFreelancer9 Copy editing is needed for this PR. Thanks.

@LanaChin Changes look correct. Could you please review and merge? Thanks!

@shars - over to you

Merged and closed.


Main page looks like it stutters a bit on iPad Pro?

I was testing Wonderous on my iPad pro and it looks like maybe some frames are dropped when scrolling past images. See video below. I think it looks smoother on my iPhone. Let me know if you need more info!
iPad
https://user-images.githubusercontent.com/21065911/208455043-0af94bd9-779d-472c-9b93-ae6e46cccbbb.mov
iPhone
https://user-images.githubusercontent.com/21065911/208455064-e29a1034-f088-4933-815f-d0a2aae25502.mov

Ya I've seen this too, was going to maybe bug Jonah about it. We allowed the images to get very large so they would feel better on tablet, but it seems like Flutter is struggling here for some reason.


Add a couple of inline links to the Reusables and variables section of content-style-guide.md

What article on docs.github.com is affected?
This issue actually isn't in relation to an issue with docs.github.com. I'd like to improve the "Reusables and variables" section of contributing/content-style-guide.md by adding a couple of inline links for convenience.

What part(s) of the article would you like to see updated?
I would like to change the final sentence of the section I just mentioned,

For more information, see the data directory in the github/docs repository and the “Product names” section of this document.

so that "data directory" and "Product names" have links to the appropriate sections for faster access.

Additional information
I think this would make it easier for first-time contributors to this repository to find the information they need. I may have a fix for this.

@hamirmahal Thanks for opening an issue! Triaging this now so someone can dig in!

@hamirmahal Thanks for opening an issue! Triaging this now so someone can dig in!

👍🏻 Thanks @hamirmahal! You or anyone else are welcome to open a PR to make this improvement. 🔧

👍🏻 Thanks @hamirmahal! You or anyone else are welcome to open a PR to make this improvement. 🔧

Hi @emilyistoofunky! I've been wanting to contribute to the github docs for a while now. Can I open a pull request for this issue?

Hi @emilyistoofunky! I've been wanting to contribute to the github docs for a while now. Can I open a pull request for this issue?

Thank you @MeetYourCreator!
We appreciate you hopping in and opening a pull request for the first time.
It looks like you opened the Pull Request on your fork rather than on this repo. Can you give it another shot but this time open the Pull Request here instead (using your repo as a base)?
More docs on Pull requests if they're helpful!

Thank you @MeetYourCreator!
We appreciate you hopping in and opening a pull request for the first time.
It looks like you opened the Pull Request on your fork rather than on this repo. Can you give it another shot but this time open the Pull Request here instead (using your repo as a base)?
More docs on Pull requests if they're helpful!

Hi @chiedo! Thanks so much for the quick reply. And thank you for being patient and understanding. I think I did it correctly this time. My pull request number is #2828.
Please let me know if I need to make any additional changes. Thanks again @chiedo ! -Rami

Hi @chiedo! Thanks so much for the quick reply. And thank you for being patient and understanding. I think I did it correctly this time. My pull request number is #2828.
Please let me know if I need to make any additional changes. Thanks again @chiedo ! -Rami

I responded in the PR!

I responded in the PR!

Hi @chiedo, Let me start by saying THANK YOU THANK YOU THANK YOU for being so patient and helpful. I looked over the pull request documentation again, and opened up a new pull request #2829. I double-checked to make sure that I was trying to merge to the main branch for gitub-docs and that there were Files showing in the Files tab:

I really hope I got it right this time. Thank you so much for helping to guide me along :)

Hi @chiedo, Let me start by saying THANK YOU THANK YOU THANK YOU for being so patient and helpful. I looked over the pull request documentation again, and opened up a new pull request #2829. I double-checked to make sure that I was trying to merge to the main branch for gitub-docs and that there were Files showing in the Files tab:

I really hope I got it right this time. Thank you so much for helping to guide me along :)

Hi @MeetYourCreator! Thanks so much for taking a look at this issue - it looks like the author of this issue opened a PR (#2751) earlier than you did, so we're going to merge that one. We appreciate you getting set up to contribute to this repo and look forward to working with you on future issues. ⚡

Hi @MeetYourCreator! Thanks so much for taking a look at this issue - it looks like the author of this issue opened a PR (#2751) earlier than you did, so we're going to merge that one. We appreciate you getting set up to contribute to this repo and look forward to working with you on future issues. ⚡

Hi @emilyistoofunky! Thanks so much for letting me know. And thanks again @chiedo for the very helpful guidance :)

Hi @emilyistoofunky! Thanks so much for letting me know. And thanks again @chiedo for the very helpful guidance :)