What is the roadmap ?

Hi, @trueadm
Seems great this project, but comparing to the readme. A couple of missing pieces?

createElement(). Is this something coming soon? I think that will give you even more stars. I was looking into the code, and shouldn't be too hard to copy from your very great t7 script? Or maybe I'm wrong.
different things seems unfinished inside the code, any plans for finishing this?
any plans for hooks ala Snabbdom? Not lifecycle, but example when you create a fragment, you can trigger a callback, same when you remove or update a fragment.
Server side rendring, is this going to happen soon? It's more or lest a must have if I should convert to Inferno. I'm from React world!

Btw. Is there any benchmark for latest version, and what is the roadmap?
I will absolutly start to use this script soon as a createElement() are done. And I like your component part too :+1:

Hey @rickardjanson

createElement is a tricky one. In the latest Inferno (check the proto branch), Inferno now relies heavily on the concept of virtual fragments and templates rather than virtual DOM nodes. This allows Inferno to gain a massive boost in performance both in creation and updating. Thus why there's a tight coupling with t7. I'm not sure how easy it would be to break away this coupling without impacting the performance (compiled t7 templates are very performant). Maybe this is something to re-add to my roadmap, but for now it's not a huge milestone (mainly as I'm still adding in basic lifecycle features and features).
Quite a bit is unfinished (but I'm getting there!). I'm doing this when I get the time and am the only person working on Inferno (for the mean time).
Interesting, I can see value in hooks so I'll add them to my roadmap too.
Server side rendering is a must, again another feature I've yet to implement (but definitely will).

I've not been able to update the vdom benchmark with the latest source, had some issues with gh-pages and Git and never really spent much more time looking into it. When I get a chance, I'll update the vdom benchmark with the latest version (0.2.3).
Thanks for checking out Inferno and giving some feedback :)

Server side rendring is a must indeed, and I hope you add it in the next version. Same for createElement(). As me, and other devs I know, use React.createElement() a lot in our work. Easier for us to write objects directly then using html / xml or whatever syntax inside our code.
I understand it could be tricky and probably loose performance a litle, but easy enough to put up a warning sign about it in the readme so devs know the pit falls.
I cross my fingers that this two features will be implemented in the upcoming version :+1:

The only real way I could implement something that is quasi createElement like would be:
function template(fragment) {
 return Inferno.createElement("div", null, fragment.values[0] + " " + fragment.values[1]);
}
...
render() {
 return Inferno.createFragment(template, firstName, lastName);
}

The template is only accessed once, and thus it's contents are only ever created once, so it takes pointers to where values exist within fragments. I don't see this being too much of an attractive API to use for a developer, so I see little value in it. As Inferno isn't a typical vdom implementation, it can't use something like createElement as is currently done.

Hmm. Why not copy from your t7? I had a quick look.
So the first step would be to set key, dom etc. Then have a create value function creating the fragments as function. If the sub fragment has a template as well, return a function. Keep going as deep as you need and return a pure object you pass to the render function.
Isn't that possible? And in the value function as mentioned you could do
Return function (fragment){
// do the same here as in t7
}

Then expect the user input a vdom object and you iterate through it.
A nested end-result should be:
{
Dom:null,
Key:null,
Template: function (fragment) {
      Dom:
      Key:
      Values:
....
            Template: function (fragment ( {}
   }

}

I really hope you add such feature because I love your script.

Changing Inferno to work like that would mean re-writing most of how it works. Plus, t7 no longer generates that output, for Inferno it outputs:
function template(fragment) {
 var root = Inferno.dom.createElement("div");
 root.textContent = fragment.value;
 fragment.element = root;
}
var fragment = {dom: null, template: template, templateElements: null, templateValues: [...], templateTypes: null}

So it's quite a bit different. I'd need to think about this more.

The example above, would generate a message like this when I tried it:
TypeError: Argument 1 of Node.replaceChild is not an object.
I realy need this kind of feature, and can't use Inferno as it is without it. Could you quickly set up a basic function that works, and then I can deep dive into it and see if I can improve it and then PR if everything is OK ?
I understand too if you can't implement this. Then again I have to look for other libraries.

In case other people wonder above this. The example given by the author is wrong.
Example: fragment.element = root;
is not valid in latest version. It should be fragment.templateElements.
However. fragment.templateElements require to be an array as far as I could see, else you would get this kind of console message TypeError: fragment.templateElements is null
So either way everything has to be an array, or ... even more confusing...
In the code it have also options for fragment.templateElement etc. without the s at the end. Unknown for me how this should work as well.
It also seems that a valueLength are needed, and this one are generated from templateValues with the s at the end. Size of the array. Where to put that length I didnt figure out.
For me a messy operation to dig into!

My example wasn't meant to work, it was a pseudo function to kind of explain what actually happens now with Inferno 0.2.3 and how it handles fragments. Sorry for the confusion there! I'll give you a working example later today.

I've added  createFragment() to the latest Inferno proto build. Use that as a reference to see how fragments are composed.

@trueadm I will check that out, and see if you deserve a star now. As mentioned I abandoned this script, and out of what I see I can expect to get same performance with my beloved and needed createElement? Comparing ot t7? Hmm, I doubt this. Will it be equal in the future?

You'll never get the same performance with createElement due to the fundamental flaws behind createElement and the idea of diffing a a virtual DOM on each pass.
Inferno isn't a typical vdom framework. It doesn't diff the vdom, it diffs the values that are pushed into fragments. Thus it can leave the static "elements" alone and simply check what has actually changed (which template strings can provide nicely with their ability to separate expressions from strings).
Treat createElement has a proof of concept for development/experimental purposes, I don't expect anyone to use this API over using the createFragment API (which is robust and won't suffer from the same performance problems).

Looking more into the feasibility of createElement in the way I added it as an experimental feature – it simply doesn't work or fit the criteria of Inferno. Inferno isn't React, the more it tries to be React, the more it moves away from its goal of providing superior performance by not having to diff vdom but instead diff values.
I feel I should expand on the templates with a better functional design for those who do not want to use t7, rather than "hack" in what appears to be a 1:1 createElement API to try and please those who are unwilling to try new and different things.
I've been thinking of something like this actually:
let template = Inferno.createTemplate((firstName, lastName) => {
 return this.createElement("div", null,
    this.createElement("span", null, firstName),
    this.createElement("span", null, lastName)
  );
});
...
render() {
 let firstName = "Dominic";
 let lastName = "Gannaway";
 return Inferno.createFragment([firstName, lastName], template);
}

Thoughts on this? The idea is that could work alongside the current way t7 handles templates (the declarative templates).

big +1 from me. though i'd prefer a single letter fn rather than this.createElement. i guess it can easily be aliased like:
let t = this.createElement.bind(this);
return t("div", null,
    t("span", null, firstName),
    t("span", null, lastName)
  );

@leeoniya That'll deter people :)
Use
let t = ::this.createElement;

Alternatively, I could pass in template as the first param on the function, so:
let template = Inferno.createTemplate((template, firstName, lastName) => {
 let t = template.createElement;
 return t("div", null,
    t("span", null, firstName),
    t("span", null, lastName)
  );
});

Guess it depends on whether you're in the this considered harmful camp or not; I'm the former. Passing it explicitly would keep things more pure and composable, help with mocking/tests and make it largely self-documenting. In addition it would be a tiny minification win, since this cannot be mangled.

I've done some work on it @leeoniya. As you're interested in this, would you be interesting in working with us on contributing to Inferno?

Sure, I'll contribute as I can, I'm a bit loaded down atm, though. It also looks like you guys are churning through a lot of code to refactor lately (on new-build), making it difficult to jump in and grok quickly.

@leeoniya we have a Slack group if you're interested in joining? Just throw me your email to dg (at) domgan.com and I'll add you :) we're moving fast but it's easy to jump right in.

@leeoniya By the way, the createElement API is pretty nice now.
It's what @trueadm posted a few comments up, and you can use it both ways.
https://github.com/trueadm/inferno/blob/new-build/tests/tests.js#L57-L62

@edge I'm actually not sure what's going on in that test. How is the html embedded directly in js? I can't find that as valid syntax anywhere in [1]. Also, I can't see that format suggested anywhere in the comments above. The whole goal of createElement was to avoid template strings (as in the samples above).
[1] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions

@leeoniya Ah, edge gave an example of where he refactored my createElement function (passed as the first argument in the callback on createTemplate). If you notice at the top of the document, he specified t as being JSX, so it's using JSX to do the createElement logic.
Inferno.template.createElement is used as a lower level API to create actual DOM/virtual nodes (for Node env).

@trueadm Thanks, makes sense. I'm gonna play around with everything between today and tomorrow. Do you guys have an active TODO/TOFIX list somewhere? I sent you an email for the Slack join.

@trueadm  Did try this code over and over again because I wanted to use this in my daily work. And your new improvements was good, but still I ending up with too much trouble, and now I lost my work because 3 days over deadline because of this code :(
So I gave up this case, and just found the gun and will pull the trigger in a few sec... bye!  I'M NOT JOKING!! Bye!

I prefer {tag:"div", attrs:[], children:[]}

@stevenvachon Agreed, this topic is actually very much out of date now. We've switched to using vdom structure in templates. :)

@stevenvachon Inferno 0.4.0 has now been released, aiming to update the benchmark pages in the coming days with the new version :)

:tada:

95kb?! Ugh. All that React stuff, probably :(

@stevenvachon How did you end up with that result?

He's looking at the unminifed version in the dist folder

@yaycmyk the unminifed is not 61 kb.
Anyway there is a huge difference between 450kb++ (react) and 91kb (inferno). So inferno have the smallest core size

I know, he said a higher number. Only you said 61kb.

@yaycmyk We should keep focused on things that matters. But to the record, he wrote this
95kb (61kb minified) ?! Ugh. All that React stuff, probably :(
61kb  are mentioned inside the parentheses.
This is only a small thing anyway. So now let us focus on things that matters.

:fireworks:

cito.js is 11.7kb

@stevenvachon cito.js is really simple but doesn't have serious optimizations...

I don't think that's what is bloating this library. The functions that are useless to a runtime are.

Take Handlebars -- there is the full and then there is a smaller runtime that does not compile strings.

@stevenvachon
There's a misconception that less code = better performance, that's simply not true at all. Inferno leverages on monomorphic JavaScript objects which in term make for predictable compilation. For example: we want the V8 JIT compiler to fully use hidden classes where possible – as it's extremely efficient, so we have to be careful how we go about writing our code. Unfortunately, doing so requires about 15-20x more source code than using polymorphic objects (which *deopt at JIT compilation).
Secondly, Inferno isn't only solving the problem of the DOM, it's solving problems with components, server-side rendering, handling input/events efficiently, handling templates, checking for user error etc. These will eventually be broken up into inferno-dom, inferno-server etc, but for now they're together.
So given all of that, having a library size of that is 9kb gzipped is massively impressive and it's something I care about. It'll be even less when people start to adopt tree-shaking building tools like Webpack 2 and Rollup and only use from Inferno what they need.
The realism is though, people will be using Inferno to build single page applications and will be bundling Inferno with about 1-2mb of their own application source code/assets, so 9kb will mean absolutely nothing in the grand scheme of things.

Front-end apps needn't be 1–2mb, especially gzipped. Less code downloads faster and provides better SEO results, so it is a concern. I never said that less code meant faster runtime performance, which is clearly not the case even with regular expressions vs substrings.
I'm interested to see what happens when inferno-server is separated from inferno-dom.

@stevenvachon I work for a company that builds large SPAs on scale of like Gmail, Spotify, Soundcloud, etc. These apps can have thousands of SVGs, images, sounds and other large assets. These are great cases where using something like Inferno would have a massive impact on performance.
I think the separation of inferno-dom and inferno-server is what you're likely hinting at wanting the most and that will definitely by a goal for Q1 2016. :)
Of course, if you're willing to contribute to help Inferno and take some ownership on some the tasks involved into making this happen, I'd love for you to help!

Time will make that impossible for the beginning of 2016, surely. Perhaps after, but I have other projects already on hold.

Given this thread is very much out-dated given our plans for 2016, I'm closing it in favour of a new roadmap issue.


Dummy PR: demonstrate unit test failures

🚀 Pull Request
Description
As raised on the Google Group, cftime v1.3 was released this week and is unforgiving about what kind of datetimes you can have.  Iris tests now produce a variety of errors of the form
ValueError: invalid year provided in cftime.datetime(0, 0, 0, 0, 0, 0, 0, calendar='gregorian')

While demonstrating this locally, I saw a bunch of other failures that aren't obviously about cftime.  So I figured the easiest way to raise this was to create a PR and let Travis show them!

Consult Iris pull request check list

I tried pinning cftime in my local requirements/ci/py37.yml.  The resulting environment ran the tests with no failures or errors, so I guess cftime is the culprit for all the issues.

I seems that, at cftime 1.3 you can still specify a datetime without a calendar using e.g.
cftime.datetime(0,0,0, calendar=None)

Really not obvious how a flipped pressure coordinate would be caused by cftime....  😕
@ -187,4 +187,4 @@
-        <dimCoord id="6eef7051" long_name="pressure" points="[0.1, 0.2, 0.3, 0.5, 0.7, 1.0, 2.0, 3.0, 5.0,
-		7.0, 10.0, 20.0, 30.0, 50.0, 70.0, 100.0, 150.0,
-		200.0, 250.0, 300.0, 400.0, 500.0, 600.0, 700.0,
-		850.0, 925.0, 950.0, 1000.0]" shape="(28,)" units="Unit('hPa')" value_type="float32"/>
+        <dimCoord id="6eef7051" long_name="pressure" points="[1000.0, 950.0, 925.0, 850.0, 700.0, 600.0,
+		500.0, 400.0, 300.0, 250.0, 200.0, 150.0, 100.0,
+		70.0, 50.0, 30.0, 20.0, 10.0, 7.0, 5.0, 3.0,
+		2.0, 1.0, 0.7, 0.5, 0.3, 0.2, 0.1]" shape="(28,)" units="Unit('hPa')" value_type="float32"/>

https://travis-ci.org/github/SciTools/iris/jobs/744701405#L26923-L26931

@rcomer We've already pin back cftime<1.3.0 and will be investigating this failure.
Do you still need this PR? Or happy to close? :small_airplane:

Happy to close


Save loading bugs.

I saved the game, but when I ran the game again, the save didn't load except the second and minutes and the room name while interacting to the savepoint object.

Also there's no intro (story) object. I mean this: https://www.youtube.com/watch?v=zs0QqiTAg28&t=1s

And there's also nothing in the settings menu.

These are all because TML(or HouJunhao33) doesn't finish it.This's a Pre-Releases(maybe?).

This is a pre-release version (see gamejolt), I'm working on it, please be patient and wait for the update.
(PS: I can only use the computer on weekends, so it might be slow.)

Okay, thanks.


Cache directory and the root user

Output of restic version
restic 0.8.0 (v0.8.0-0-gc02923fb)
compiled with go1.8.3 on linux/amd64
Issue
When running restic as the root user to take a system backup, the default cache directory is /root/.cache/restic. I propose to use /var/cache/restic as the cache directory when restic is run as root.
Reason
/root is often part of the root file system.  This file system might not be as big, particularly on servers where more advanced partitioning schemes are used.  Those places /var is more commonly more spacious and some might even have split /var over multiple partitions as well to avoid system havoc if some lesser critical partitions goes empty; like /var/cache.  Filling up / can easily cause issues - and with restic repositories with thousands of files with lots of changes, the cache directory can easily grow quite a bit.

Thinking a bit about your proposition, it makes a lot of sense. /var/cache is standard FHS location for various system caches. Thanks for opening this issue.
Not to mention that I've already symlinked /root/.cache/restic to another bigger partition with more space on ALL of my restic client hosts. ;)
But, even if it's easy to symlink, sane defaults are always welcome. Probably restic could also emit a line saying Using cache: /var/cache/restic (or /home/user/.cache/restic for ordinary users), so there's no confusion. And user always knows where the cache ended.

As always, migration is hard, @fd0, you could probably put in code that works for both locations, but for newly created repos, /var/cache would be chosen. So, restic client would first check the current /root/.cache/restic, and use that if found. Maybe another info line (not warning 😄) that would suggest user to move cache to the new default /var/cache/restic.

To be honest, I'd like to leave it as is for now. Adding this requires more code and even more special cases, even checking two different cache dirs or a migration. If needed, people can easily set XDG_CACHE_HOME to /var/cache and be done with it.

That approach is fine when only considering non-admin users running backups.  But once starting to use this for system wide backups, where the backup tools needs to be run as root to have access to all files being backed up, this will be a growing issue.

Just a note on the side: If you are on Linux, you don't have to run restic as root to make a full system backup. Yes, restic needs to be able to read all files, but it does not need any of the other privileges that root has. On Linux you can assign that specific single capability to the restic binary and run it as an ordinary user:
# create restic user
root@a3e580b6369d:/# useradd -m restic

# install restic
root@a3e580b6369d:/# mkdir ~restic/bin
root@a3e580b6369d:/# curl -L https://github.com/restic/restic/releases/download/v0.8.0/restic_0.8.0_linux_amd64.bz2 | bunzip2 > ~restic/bin/restic

# make restic binary executable by root and restic user only
root@a3e580b6369d:/# chown root:restic ~restic/bin/restic
root@a3e580b6369d:/# chmod 750 ~restic/bin/restic

# assign capability to read all files to restic binary
root@a3e580b6369d:/# setcap cap_dac_read_search=+ep ~restic/bin/restic

Starting at this point, the restic user can backup the whole system without having to run anything as root.

@dstosberg @fd0 Might be interesting to document this for everyone? :-)

Great idea, anyone up for a PR? :)

mmm... @dstosberg I must be doing something wrong as I am still getting a bunch of "permission denied".
I created a user "restic" and gave it permission as you suggest. I made sure to run restic from that user and to run /home/restic/bin/restic rather than simply restic to make sure I am not running the restic I have installed in the root bin folder. I wrote a new rclone config file and a new exclusion file for the restic user. It all works, except that I am getting all these "permission denied".
What am I doing wrong??

@prosoitos I think this issue is not the right place for debugging such issue, would you mind heading over to the forum and posting there? We're trying to use the GitHub issue tracker for actionable things like bugs and feature requests. Thanks!
I'm also closing this issue for now as a decision has been made. Thanks all!

Thank you for pointing me to the forum. I had not realized that this resource existed.


Parsing data incorrectly from source

Somehow ya ended up with 1.8k deaths and 80k infected which is totally inaccurate, please fix :)

Fixed the parser. Thanks for report.


rancher-windows-exporter is available in feature charts for a windows cluster

What kind of request is this (question/bug/enhancement/feature request): bug
Steps to reproduce (least amount of steps as possible):

On 2.5-head, commit id: ff68b3a
Deploy a windows cluster
Go to Dashboard --> Apps and Market place --> Charts --> rancher-windows-exporter is available

Expected Result:
rancher-windows-exporter should not be available
Other details that may be helpful:
Environment information

Rancher version (rancher/rancher/rancher/server image tag or shown bottom left in the UI): On 2.5-head, commit id: ff68b3a
Installation option (single install/HA): single

Cluster information

Cluster type (Hosted/Infrastructure Provider/Custom/Imported): windows custom cluster
Kubernetes version (use kubectl version):

any

PR: https://github.com/rancher/charts/pull/1042

Switched from https://github.com/rancher/charts/pull/1042 to https://github.com/rancher/charts/pull/1059 to avoid blocking this issue on the Dashboards

The windows-exporter app disappeared from Apps & Marketplace menu on dev-v2.5 helm chart repo.
Closing, thanks.


D435i can't be detected

Before opening a new issue, we wanted to provide you with some useful suggestions (Click "Preview" above for a better view):

Consider checking out SDK examples.
Have you looked in our documentations?
Is you question a frequently asked one?
Try searching our GitHub Issues (open and closed) for a similar issue.

All users are welcomed to report bugs, ask questions, suggest or request enhancements and generally feel free to open new issue, even if they haven't followed any of the suggestions above :)

Required Info

Camera Model
D435i

Firmware Version
v2.23

Operating System & Version
ubuntu 16.04

Kernel Version (Linux Only)
4.15.0-51-generic

Platform
PC

SDK Version
lastest distribution

Issue Description
My PC can not detect the realsense D435i, for the following erro when I use dmesg:
`[33417.878683] usb 2-2: USB disconnect, device number 10
[33500.986804] usb 2-2: new SuperSpeed USB device number 11 using xhci_hcd
[33501.011829] usb 2-2: New USB device found, idVendor=8086, idProduct=0b3a
[33501.011836] usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[33501.011841] usb 2-2: Product: Intel(R) RealSense(TM) Depth Camera 435i
[33501.011845] usb 2-2: Manufacturer: Intel(R) RealSense(TM) Depth Camera 435i
[33501.011849] usb 2-2: SerialNumber:<PHONE_NUMBER>20
[33501.045082] PKCS#7 signature not signed with a trusted key
[33501.053089] PKCS#7 signature not signed with a trusted key
[33501.057527] PKCS#7 signature not signed with a trusted key
[33501.059216] PKCS#7 signature not signed with a trusted key
[33501.060362] PKCS#7 signature not signed with a trusted key
[33501.063433] PKCS#7 signature not signed with a trusted key
[33524.766950] xhci_hcd 0000:00:14.0: Cannot set link state.
[33524.766963] usb usb2-port2: cannot disable (err = -32)
[33524.766974] usb 2-2: USB disconnect, device number 11
[33545.554970] usb 2-2: new SuperSpeed USB device number 12 using xhci_hcd
[33545.575974] usb 2-2: New USB device found, idVendor=8086, idProduct=0b3a
[33545.575981] usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[33545.575986] usb 2-2: Product: Intel(R) RealSense(TM) Depth Camera 435i
[33545.575991] usb 2-2: Manufacturer: Intel(R) RealSense(TM) Depth Camera 435i
[33545.575995] usb 2-2: SerialNumber:<PHONE_NUMBER>20
[33545.617983] PKCS#7 signature not signed with a trusted key
[33545.618502] PKCS#7 signature not signed with a trusted key
[33545.619374] PKCS#7 signature not signed with a trusted key
[33545.621121] PKCS#7 signature not signed with a trusted key
[33545.622317] PKCS#7 signature not signed with a trusted key
[33545.624051] PKCS#7 signature not signed with a trusted key
`
It can perform perfectly when I connect the T265 camera. I installed the distribution version of the librealsense. Last time, I installed the SDK by compling the source code and I could use the D435i. But it cannot perform well when I use the distribution version. Did I lost sth?

@L1ttlewhite Seen from the dmesg you provided, D435i was detected. Aslo you can type "lsusb |grep 8086" to double check.  And could you please provide the result of "rs-enumerate"?
[33501.011845] usb 2-2: Manufacturer: Intel(R) RealSense(TM) Depth Camera 435i
[33501.011849] usb 2-2: SerialNumber:<PHONE_NUMBER>20

@L1ttlewhite Could you please update so that we can further support on this? Thanks!

@L1ttlewhite  Sorry that we didn't get response from you, will close the ticket at this point. Please feel free to open new ticket if you still have issue. Thanks!

@RealSenseCustomerSupport I have the exact same issue.
Here are some outputs:

lsusb | grep 8086

Bus 001 Device 013: ID 8086:0b3a Intel Corp.

rs-enumerate

No device detected. Is it plugged in?


Move Lint/EndAlignment cop to Layout department

Fixes #23.
Follow up of rails/rails#32681.

Thank you! @koic <3


Modules

Hello @alissonpelizaro.
And what are empty classes (Config.class.php / Engine.class.php / Methods.class.php) for?
Thanks.

Hi @tcolonel
Today all the Skype API engine is running in the same class src/modules/Skype.class.php. I was refactoring this file and improving the design pattern of the application when I created this othes files. But I hadn't time to finish that.
I'll keep this issue open, to help me dont forget to finish that a day.
Thank you!


restore render support for mujoco<3

Description
This PR re-enables rendering support for all mujuco version from 2.1.5 to 3.0.0
Fixes # (issue)
Type of change
Please delete options that are not relevant.

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

Screenshots
Please attach before and after screenshots of the change if applicable.

Checklist:

[ ] I have run the pre-commit checks with pre-commit run --all-files (see CONTRIBUTING.md instructions to set it up)
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes

yup all versions from 2.1.5 to 3.0 are suported


Remove User FAQ refer links

Fixes issue #5462.

This change is

@heckj Refer from @bgrant0607 comments, I removed all of the wiki refer links.


Icon tagging not working

I'm VERY new to Obsidian and Map View.  It's possible I'm doing something wrong, but I haven't been able to figure out what that might be.
I'm using Ubuntu, Obsidian 1.3.5, Map View 3.1.1

Here's the "map" link with location fuzzed a bit: geo:39.4,-87.3
This is what I see when I apply a tag.  It's not working as expected.  Below is my tag configuration:

I also tried with one that existed on install (trip) and the same happens.  When I click through to the map, the icon is also still just the default.  I'm building out a trip plan and would love to have everything on the map with icons to help easily identify things.

Hi, it's hard for me to tell from your issue what kind of location you are using, an inline one or a front matter one. However, what you may not be doing (I'm guessing here a bit) is just adding a tag to the relevant note, e.g. just add #hotel to the note where your location is set. Alternatively, if you are using an inline location and wish to only tag that one off a bigger note, add tag:hotel right after the location (Map View will try to complete you while typing).
Let me know if I understood you correctly and that's the issue.


Fix for removing the handling of descriptors in audio backends

Summary of the PR
This PR is an effort to prepare virtio-sound device to be independent of the descriptor distribution by using the descriptor_utils module or something like that. I thought that something should be done before a PR that uses such a module. This PR aims at removing any handling of descriptors in audio backends. To do this, the PR does the following:

limit the need for sending notifications to guests from the audio backends only when it is strictly required. For example, this PR removes the need of the Control Message parameter in the set_param() and release() methods. This also cleans up the tests in the pw audio backend regarding descriptors.
remove the use of a runner thread in the alsa backend. By removing the runner thread, the notification to guests can be sent by the device after the audio backend has processed the request so there is no need to have a Control message as parameter of the method nor an extra thread. Also, it is possible to propagate the result of the operation from the audio backend to the device. Before this PR, there were no mechanism to get the result from the runner thread. Now, all that processing shall happen only once for all backends in the device.

Thanks for reviewing!
Requirements
Before submitting your PR, please make sure you addressed the following
requirements:

[x] All commits in this PR are signed (with git commit -s), and the commit
message has max 60 characters for the summary and max 75 characters for each
description line.
[x] All added/changed functionality has a corresponding unit/integration
test.
[x] All added/changed public-facing functionality has entries in the "Upcoming
Release" section of CHANGELOG.md (if no such section exists, please create one).
[x] Any newly added unsafe code is properly documented.

Can you explain the motivation for this PR a bit more? I don't understand from the description why these changes improve anything. For example:

limit the need for sending notifications to guests from the audio backends only when it is strictly required

Can you point out where there are there unnecessary notifications? The notification is sent once: when ControlMessage is dropped

By removing the runner thread, the notification to guests can be sent by the device after the audio backend has processed the request so there is no need to have a Control message as parameter of the method nor an extra thread

That was already happening before. In this pr, you return the error, unwrap and crash the daemon, if I understand correctly.

Now, all that processing shall happen only once for all backends in the device.

What processing do you mean?

Also, it is possible to propagate the result of the operation from the audio backend to the device

Is it necessary for the device to know this though?

Before this PR, there were no mechanism to get the result from the runner thread.

Why do we need that?
Thanks!

Manos, thanks for taking a look at this. I apologize if I didn't explain this PR well. I'll try to answer your comments below. If that helps, I'm happy to split this PR into several.

Can you explain the motivation for this PR a bit more? I don't understand from the description why these changes improve anything. For example:

This PR aims to prevent audio backends from manipulating descriptors. Note that the distribution of a request over a chain of descriptors is guest dependent. Reading and writing over descriptors shall happen with something like Reader/Write modules from descriptor_utils.
For example, set_param() in pipewire and alsa are both parsing the descriptors to get the VirtioSndPcmSetParams structure (see https://github.com/rust-vmm/vhost-device/blob/f34f7b9869f503cf47250b0413a46055ad74d214/staging/vhost-device-sound/src/audio_backends/pipewire.rs#L145 and https://github.com/rust-vmm/vhost-device/blob/f34f7b9869f503cf47250b0413a46055ad74d214/staging/vhost-device-sound/src/audio_backends/alsa.rs#L665). The device already parsed the descriptors too to get the stream id.  I think such a parsing should happen in the device and then passed as parameter to the set_param() function of each audio backend.

limit the need for sending notifications to guests from the audio backends only when it is strictly required

Can you point out where there are there unnecessary notifications? The notification is sent once: when ControlMessage is dropped

Yes, I did not explain myself very well here. I meant to say that the control message is not required and the dropping of the message for set_param() and release() commands can happen in the device itself without requiring to pass the control message as a parameter in those functions. By doing so, we avoid to set up the status error in these methods in the audio backend thus avoiding to manipulate descriptors  (see https://github.com/rust-vmm/vhost-device/blob/f34f7b9869f503cf47250b0413a46055ad74d214/staging/vhost-device-sound/src/audio_backends/pipewire.rs#L168 or https://github.com/rust-vmm/vhost-device/blob/f34f7b9869f503cf47250b0413a46055ad74d214/staging/vhost-device-sound/src/audio_backends/alsa.rs#L680C30-L680C30). In addition, this also simplifies the tests in the audio backends. I think setting the status in the descriptor shall happen only once in the device.

By removing the runner thread, the notification to guests can be sent by the device after the audio backend has processed the request so there is no need to have a Control message as parameter of the method nor an extra thread

That was already happening before.

Yes but before we had to pass the control msg to allow the alsa audio backend to notify the guest later. I think that is not required. The error handling and the setting of the corresponding error in the status shall happen in the device for all the audio backends.

In this pr, you return the error, unwrap and crash the daemon, if I understand correctly.

yes, I forgot that in this PR.

Now, all that processing shall happen only once for all backends in the device.

What processing do you mean?

I mean setting the error in the status descriptor shall happen when returning from the audio backend method. I did not do that in this PR but this is now possible.

Also, it is possible to propagate the result of the operation from the audio backend to the device

Is it necessary for the device to know this though?

Before this PR, there were no mechanism to get the result from the runner thread.

Why do we need that?

I think if the error handling happens in the device we prevent to have it in each audio backend thus reducing duplication. This also prevents to handle descriptors in each audio backend. Another example that comes to me is that if in the future we move the PCM state-machine validation to the device instead of having it in each audio backed, this would allow to transits states based on the result of the audio backend operations. Currently, stream states are changing without checking if the operation has been successful.
To summarize, I think a better way to split this PR would be:

Add VirtioSndPcmSetParams as a parameter for set_param() to avoid reading descriptors from audio backend. The parsing of the request can happen only once in device.rs
Get rid of the control msg in param() and release(), and propagate errors from the audio backend to the device. I think to do this we can remove the runner thread in alsa.

I hope the goal of this PR is clearer now. I think I did not miss any question otherwise let me know.
Thanks.

I'm not sure about this. It's not that it's wrong or bad, of course, but the reasoning for the changes does not seem strong to me. I think however, that passing the parsed request to set_params instead of reparsing it from the descriptor is a very good point.

I meant to say that the control message is not required and the dropping of the message for set_param() and release() commands can happen in the device itself without requiring to pass the control message as a parameter in those functions. By doing so, we avoid to set up the status error in these methods in the audio backend thus avoiding to manipulate descriptors

We're using the audio backends as separate threads that "own" their streams and internal logic. This seperation of concerns allows us to react to events from the host backend as well as the device, which we do not do now but we allow for it. I agree the differences are not that substantial here, I just hope we're not changing code without evaluating the benefits first.
You're right that we eventually need to decouple descriptor logic from the backends. That can happen the following way which requires way less changes:

Pass the parsed requests to e.g. set_params and not parse anything in the audio backends
Add a method to ControlMessage for setting the response result; the ControlMessage can handle the descriptors internally and the audio backend will not know the difference if the abstraction changes.

Thanks,

Hello Manos, thanks for the feedback, let me clarify some points that may also help other reviewers:

You're right that we eventually need to decouple descriptor logic from the backends. That can happen the following way which requires way less changes:

Pass the parsed requests to e.g. set_params and not parse anything in the audio backends

This is what this PR does in commit 876cb402. In addition, the commit removes the ControlMessage from set_param().

Add a method to ControlMessage for setting the response result; the ControlMessage can handle the descriptors internally and the audio backend will not know the difference if the abstraction changes.

A proposal like that would be the right way to go if set_param() or release() really require a ControlMessage, but they don't. There may be a reason for such methods sending asynchronous notifications, but I haven't found one other than that they rely on a runner thread created when the alsa backend is instantiated to send notifications. I removed the runner thread and tested whether the simple implementation without the thread also worked as well. This results in
31feb4bb80d95ca47ae4f9b90da045ff276ff80c commit that gets rid of:

the runner thread
the set of channels to communicate the daemon-thread and the runner.

This commit implements the alsa backed as pipewire is currently implemented:

Control requests are processed in the daemon-thread and none notification is handled by the audio-backed except for tx/rx requests
A set of threads is created per stream, e.g., the workers, the demon thread and the worker threads communicate via channels

By removing ControlMessage, we can get rid of the following code:

Tests that need to fake ControlMessage in the audio backends
Double definition of ControlMessage in https://github.com/rust-vmm/vhost-device/blob/f34f7b9869f503cf47250b0413a46055ad74d214/staging/vhost-device-sound/src/device.rs#L789 and https://github.com/rust-vmm/vhost-device/blob/f34f7b9869f503cf47250b0413a46055ad74d214/staging/vhost-device-sound/src/lib.rs#L214C12-L214C26
Setting the status error in all audio backends

Would it make sense to split this PR into:

Use a parsed structure in set_param()
Get rid of the ControlMessage in set_param() and release() and remove the thread runner in alsa.

Thanks.

Yes this is indeed more clear, thanks for taking the time to write this up :)
If you agree, I would like to do this in standalone steps/PRs. I can make a PR to remove the duplicate ControlMessage definition (thanks for catching that!). Then you can add a PR for

Use a parsed structure in set_param()

and a final one for

dismantling the alsa main thread

What do you think?

This PR has been split it and resubmitted. I close it.

Great job @MatiasVara.

@epilys Thank you for taking the time to review it!


Update to security center

Darn - looking at this, I think there's a generation bug when it comes to the namespace. Checking.

Urgh - no, it's a bug in the proto. It doesn't have a C# namespace. I'll create an internal CL...

Closing this now; will need to fix it separately, then I'll create a new PR.


Error 255: require(/app/src/config/assets-gen/prod.php): failed to open stream

after make all

Which version are you using?
Is the file there on your host an in the container?
Could you post a bit more of the output...

Just pulled today the version:
4.0.0-dev
and then tried to "just make" "make all" -> my other phundament setups work fine, so don't know why this one doesnt like e

This may be related to docker-compose and override files.
Which version do you have, can you upgrade to 1.5.2?
Workaround: Set YII_ENV to dev in .env.

1.4.2 and I try to update - thanks!

ok, can confirm that after update to docker-compose 1.5.2 everything works perfect!
Thanks for support!


custom error page(preview) status 503 not work

Type of issue
Other (describe below)
Feedback
I want to upload a customized html error pages instead of default html page. According to ref, I could upload the html file to complete it. But in fact, only the 403 error work, when my service met 503 error, still see the default error page like this picture. I'm very confused. Could you tell me why?

@Lijiaoa
It would be great if you could add a link to the documentation you are following for these steps? This would help us redirect the issue to the appropriate team. Thanks!

Thanks for you reply. I think the documentation https://github.com/Azure/app-service-linux-docs/blob/master/HowTo/configure_custom_error_page.md is important for my questions.
azure web app service linux python custom error page(preview)

any updates?

Thank you for bringing this to our attention.
I've delegated this to content author, who will review it and offer their insightful opinions.

@jeffwmartinez, @TPavanBalaji  Could you give me some suggestions or any documentation to follow?

ok, in my example, 503 error is triggered by the backend errors.

We are working on adding a feature to work for both front and backend errors.

I think it is a good and practical feature for users to better understand the errors rather than the default error pages. I could not get any useful message. Please open this issue and related fix PRs when the features is done, thanks.

@jeffwmartinez Could you have a response for the above questions?

@Lijiaoa the only current workaround is to trigger your backend error pages using application code.

Thanks for your reply. It is useful for me. But in fact my backend code(using Python) start failed and then I met default error page(503 error). So how can trigger error pages by using application code? I tried this method but still met default error page.

#please-close as the original question has been answered. For any troubleshooting scenario, please ask a question at Microsoft Q&A.


Move metrics_to_scalars to a dedicated utilities file

What does this PR do?

Similar to #6834 to simplify the trainer class inheritance. This doesn't need to be a mixin since it doesn't use any trainer state. It's a pure function which we can put into a utilities file to avoid false dependencies on the trainer class
Before submitting

[ ] Was this discussed/approved via a GitHub issue? (not for typos and docs)
[ ] Did you read the contributor guideline, Pull Request section?
[ ] Did you make sure your PR does only one thing, instead of bundling different changes together?
[ ] Did you make sure to update the documentation with your changes? (if necessary)
[ ] Did you write any new necessary tests? (not for typos and docs)
[ ] Did you verify new and existing tests pass locally with your changes?
[ ] Did you update the CHANGELOG? (not for typos, docs, test updates, or internal minor changes/refactorings)

PR review
Anyone in the community is free to review the PR once the tests have passed.
Before you start reviewing make sure you have read Review guidelines. In short, see the following bullet-list:

[ ] Is this pull request ready for review? (if not, please submit in draft mode)
[ ] Check that all items from Before submitting are resolved
[ ] Make sure the title is self-explanatory and the description concisely explains the PR
[ ] Add labels and milestones (and optionally projects) to the PR so it can be classified

Did you have fun?
Make sure you had fun coding 🙃

Hello @ananthsub! Thanks for opening this PR.

In the file pytorch_lightning/utilities/metrics.py:

Line 19:1: E302 expected 2 blank lines, found 1

Do see the Hitchhiker's guide to code style


Merge to SpringBoot3 after spring cloud azure 5.4.0 released

Description
Merge to SpringBoot3 after spring cloud azure 5.4.0 released
All SDK Contribution checklist:

[ ] The pull request does not introduce [breaking changes]
[ ] CHANGELOG is updated for new features, bug fixes or other significant changes.
[ ] I have read the contribution guidelines.

General Guidelines and Best Practices

[ ] Title of the pull request is clear and informative.
[ ] There are a small number of commits, each of which have an informative message. This means that previously merged commits do not appear in the history of the PR. For more information on cleaning up the commits in your PR, see this page.

Testing Guidelines

[ ] Pull request includes test coverage for the included changes.

API change check
APIView has identified API level changes in this PR and created following API reviews.
azure-spring-data-cosmos


Is this repository licensed under the Apache 2.0 license?

Hi,
Is this repository licensed under the Apache 2.0 license? Would it be possible to add this license to this repository. I would like to use an upgraded version of it as a piece of an upcoming AWS blog. I would be really glad to have it soon.
Thank you very much,
Anil Sener

Hi @awssenera we added an Apache 2.0 license: https://github.com/h2oai/h2o3-sagemaker/commit/d8946e447d16bb67a78d8bf24de93650f755f4fe


[Bug]: NameError: uninitialized constant ShopifyCLI::IdentityAuth::Servlet

Please confirm that you have:

[X] Searched existing issues to see if your issue is a duplicate. (If you’ve found a duplicate issue, feel free to add additional information in a comment on it.)
[X] Reproduced the issue in the latest CLI version.

In which of these areas are you experiencing a problem?
Theme
Expected behavior
shopify theme dev should load dev environment
Actual behavior
dev environment doesnt load and terminal log error
Verbose output
2023-06-12T20:17:27.658Z: Running command theme dev
  shopify:theme:dev init version<EMAIL_ADDRESS>argv: [ '--verbose' ] +0ms
2023-06-12T20:17:27.675Z: Ensuring that the user is authenticated with the Theme API with the following scopes:
[]

2023-06-12T20:17:27.675Z: Ensuring that the user is authenticated with the Admin API with the following scopes for the store ****.myshopify.com:
[]

2023-06-12T20:17:27.676Z: Getting session store...
2023-06-12T20:17:27.677Z: Validating existing session against the scopes:
[
  "openid",
  "https://api.shopify.com/auth/shop.admin.graphql",
  "https://api.shopify.com/auth/shop.admin.themes",
  "https://api.shopify.com/auth/partners.collaborator-relationships.readonly",
  "https://api.shopify.com/auth/shop.storefront-renderer.devtools",
  "https://api.shopify.com/auth/partners.app.cli.access"
]
For applications:
{
  "adminApi": {
    "scopes": [],
    "storeFqdn": "****.myshopify.com"
  }
}

2023-06-12T20:17:27.677Z: Sending Identity Introspection request to URL: https://accounts.shopify.com/oauth/introspection
2023-06-12T20:17:27.678Z: Sending POST request to URL https://accounts.shopify.com/oauth/introspection
With request headers:
 - User-Agent: Shopify CLI; v=3.46.4
 - Keep-Alive: timeout=30
 - Sec-CH-UA-PLATFORM: darwin
 - Content-Type: application/json

2023-06-12T20:17:27.943Z: Request to https://accounts.shopify.com/oauth/introspection completed in 259 ms
With response headers:
 - cache-control: no-cache, no-store, private, must-revalidate, max-age=0
 - content-type: application/json; charset=utf-8
 - etag: W/"7b5aaffa760d4ea8e4a3e6c0d69c138d"
 - x-request-id: a13dfcb5-3089-48bf-bafd-ac9ba84ce749

2023-06-12T20:17:27.946Z: The identity token is valid: true
2023-06-12T20:17:27.947Z:
The validation of the token for application/identity completed with the following results:
- It's expired: false
- It's invalid in identity: false

2023-06-12T20:17:27.947Z: The current session is valid but needs refresh. Refreshing...
2023-06-12T20:17:27.947Z: Sending POST request to URL https://accounts.shopify.com/oauth/token?grant_type=refresh_token&access_token=atkn_6beb0a9c46b37d9a4b5e1550eb5483765479d0295f7573ed29adbef0b043bc46&refresh_token=atkn_d94aff16cba1c452d4aac931c8027fa6e1ddbb054cd3ff693836a8d9d8583fb7&client_id=fbdb2649-e327-4907-8f67-908d24cfd7e3
With request headers:
 - User-Agent: Shopify CLI; v=3.46.4
 - Keep-Alive: timeout=30
 - Sec-CH-UA-PLATFORM: darwin
 - Content-Type: application/json

2023-06-12T20:17:28.323Z: Request to https://accounts.shopify.com/oauth/token?grant_type=refresh_token&access_token=atkn_6beb0a9c46b37d9a4b5e1550eb5483765479d0295f7573ed29adbef0b043bc46&refresh_token=atkn_d94aff16cba1c452d4aac931c8027fa6e1ddbb054cd3ff693836a8d9d8583fb7&client_id=fbdb2649-e327-4907-8f67-908d24cfd7e3 completed in 374 ms
With response headers:
 - cache-control: no-cache, no-store, private, must-revalidate, max-age=0
 - content-type: application/json; charset=utf-8
 - etag: W/"1f77cf72cbc1bb20ac67abf64303d981"
 - x-request-id: 4b10f52c-c0ec-4afc-b2e9-62d20326289e

2023-06-12T20:17:28.327Z: Sending POST request to URL https://accounts.shopify.com/oauth/token?grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange&requested_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aaccess_token&subject_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aaccess_token&client_id=fbdb2649-e327-4907-8f67-908d24cfd7e3&audience=271e16d403dfa18082ffb3d197bd2b5f4479c3fc32736d69296829cbb28d41a6&scope=openid+https%3A%2F%2Fapi.shopify.com%2Fauth%2Fpartners.app.cli.access&subject_token=atkn_78c036d81836667c7f039a960e93fb8b6daaddbc7641b627ad30d7b3a0be2e40
With request headers:
 - User-Agent: Shopify CLI; v=3.46.4
 - Keep-Alive: timeout=30
 - Sec-CH-UA-PLATFORM: darwin
 - Content-Type: application/json

2023-06-12T20:17:28.327Z: Sending POST request to URL https://accounts.shopify.com/oauth/token?grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange&requested_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aaccess_token&subject_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aaccess_token&client_id=fbdb2649-e327-4907-8f67-908d24cfd7e3&audience=ee139b3d-5861-4d45-b387-1bc3ada7811c&scope=openid+https%3A%2F%2Fapi.shopify.com%2Fauth%2Fshop.storefront-renderer.devtools&subject_token=atkn_78c036d81836667c7f039a960e93fb8b6daaddbc7641b627ad30d7b3a0be2e40
With request headers:
 - User-Agent: Shopify CLI; v=3.46.4
 - Keep-Alive: timeout=30
 - Sec-CH-UA-PLATFORM: darwin
 - Content-Type: application/json

2023-06-12T20:17:28.558Z: Request to https://accounts.shopify.com/oauth/token?grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange&requested_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aaccess_token&subject_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aaccess_token&client_id=fbdb2649-e327-4907-8f67-908d24cfd7e3&audience=ee139b3d-5861-4d45-b387-1bc3ada7811c&scope=openid+https%3A%2F%2Fapi.shopify.com%2Fauth%2Fshop.storefront-renderer.devtools&subject_token=atkn_78c036d81836667c7f039a960e93fb8b6daaddbc7641b627ad30d7b3a0be2e40 completed in 227 ms
With response headers:
 - cache-control: no-cache, no-store, private, must-revalidate, max-age=0
 - content-type: application/json; charset=utf-8
 - etag: W/"e48a11487bc045cd242775ffaeeeaf69"
 - x-request-id: 8bcf2468-e776-4cdb-932b-0a9ec7625de3

2023-06-12T20:17:28.808Z: Request to https://accounts.shopify.com/oauth/token?grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange&requested_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aaccess_token&subject_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aaccess_token&client_id=fbdb2649-e327-4907-8f67-908d24cfd7e3&audience=271e16d403dfa18082ffb3d197bd2b5f4479c3fc32736d69296829cbb28d41a6&scope=openid+https%3A%2F%2Fapi.shopify.com%2Fauth%2Fpartners.app.cli.access&subject_token=atkn_78c036d81836667c7f039a960e93fb8b6daaddbc7641b627ad30d7b3a0be2e40 completed in 479 ms
With response headers:
 - cache-control: no-cache, no-store, private, must-revalidate, max-age=0
 - content-type: application/json; charset=utf-8
 - etag: W/"7c271d37ef0452b4c9812b64739440eb"
 - x-request-id: 91761311-b55d-4df3-9bb0-7f5ce56733c0

2023-06-12T20:17:28.811Z: Sending POST request to URL https://accounts.shopify.com/oauth/token?grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange&requested_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aaccess_token&subject_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aaccess_token&client_id=fbdb2649-e327-4907-8f67-908d24cfd7e3&audience=7ee65a63608843c577db8b23c4d7316ea0a01bd2f7594f8a9c06ea668c1b775c&scope=openid+https%3A%2F%2Fapi.shopify.com%2Fauth%2Fshop.admin.graphql+https%3A%2F%2Fapi.shopify.com%2Fauth%2Fshop.admin.themes+https%3A%2F%2Fapi.shopify.com%2Fauth%2Fpartners.collaborator-relationships.readonly&subject_token=atkn_78c036d81836667c7f039a960e93fb8b6daaddbc7641b627ad30d7b3a0be2e40&destination=https%3A%2F%2F****.myshopify.com%2Fadmin
With request headers:
 - User-Agent: Shopify CLI; v=3.46.4
 - Keep-Alive: timeout=30
 - Sec-CH-UA-PLATFORM: darwin
 - Content-Type: application/json

2023-06-12T20:17:29.054Z: Request to https://accounts.shopify.com/oauth/token?grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange&requested_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aaccess_token&subject_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aaccess_token&client_id=fbdb2649-e327-4907-8f67-908d24cfd7e3&audience=7ee65a63608843c577db8b23c4d7316ea0a01bd2f7594f8a9c06ea668c1b775c&scope=openid+https%3A%2F%2Fapi.shopify.com%2Fauth%2Fshop.admin.graphql+https%3A%2F%2Fapi.shopify.com%2Fauth%2Fshop.admin.themes+https%3A%2F%2Fapi.shopify.com%2Fauth%2Fpartners.collaborator-relationships.readonly&subject_token=atkn_78c036d81836667c7f039a960e93fb8b6daaddbc7641b627ad30d7b3a0be2e40&destination=https%3A%2F%2F****.myshopify.com%2Fadmin completed in 242 ms
With response headers:
 - cache-control: no-cache, no-store, private, must-revalidate, max-age=0
 - content-type: application/json; charset=utf-8
 - etag: W/"544c5c2d278c5e03cb610b8d53eccf0b"
 - x-request-id: e526b2c5-8842-4ce7-aa48-82d5c9ab2c50

2023-06-12T20:17:29.056Z: Setting session store...
2023-06-12T20:17:29.063Z: Ensuring that the user is authenticated with the Storefront API with the following scopes:
[]

2023-06-12T20:17:29.063Z: Getting session store...
2023-06-12T20:17:29.065Z: Validating existing session against the scopes:
[
  "openid",
  "https://api.shopify.com/auth/shop.admin.graphql",
  "https://api.shopify.com/auth/shop.admin.themes",
  "https://api.shopify.com/auth/partners.collaborator-relationships.readonly",
  "https://api.shopify.com/auth/shop.storefront-renderer.devtools",
  "https://api.shopify.com/auth/partners.app.cli.access"
]
For applications:
{
  "storefrontRendererApi": {
    "scopes": []
  }
}

2023-06-12T20:17:29.065Z: Sending Identity Introspection request to URL: https://accounts.shopify.com/oauth/introspection
2023-06-12T20:17:29.065Z: Sending POST request to URL https://accounts.shopify.com/oauth/introspection
With request headers:
 - User-Agent: Shopify CLI; v=3.46.4
 - Keep-Alive: timeout=30
 - Sec-CH-UA-PLATFORM: darwin
 - Content-Type: application/json

2023-06-12T20:17:29.247Z: Request to https://accounts.shopify.com/oauth/introspection completed in 180 ms
With response headers:
 - cache-control: no-cache, no-store, private, must-revalidate, max-age=0
 - content-type: application/json; charset=utf-8
 - etag: W/"ed1d9ab378c2fbaede80bfe826f1b3bc"
 - x-request-id: b465ef62-6166-4497-ab38-f4662d06ac87

2023-06-12T20:17:29.250Z: The identity token is valid: true
2023-06-12T20:17:29.251Z:
The validation of the token for application/identity completed with the following results:
- It's expired: false
- It's invalid in identity: false

2023-06-12T20:17:29.251Z: Getting development theme...
2023-06-12T20:17:29.606Z: Request to https://****.myshopify.com/admin/api/unstable/themes/132179427522.json?fields=id completed in 349 ms
With response headers:
 - content-type: application/json; charset=utf-8
 - x-request-id: 31ab0d1b-1bf9-473f-8baa-b6c1ba5c6063

╭─ success ──────────────────────────────────────────────────────────────────────────────╮
│                                                                                │
│  Preview your theme                                                                    │
│    • http://<IP_ADDRESS>:9292                                                             │
│                                                                                │
│  Next steps                                                                            │
│    • Customize your theme at the theme editor                                          │
│    • Share your theme preview                                                          │
│                                                                                │
╰────────────────────────────────────────────────────────────────────────────────────────╯

2023-06-12T20:17:29.659Z:
Running system process:
  · Command: /opt/homebrew/opt/ruby/bin/ruby -v
  · Working directory: /Users/****/Documents/apollo-projects/New Theme/apollo-scooters-cli

2023-06-12T20:17:29.690Z:
Running system process:
  · Command: /opt/homebrew/opt/ruby/bin/bundle -v
  · Working directory: /Users/****/Documents/apollo-projects/New Theme/apollo-scooters-cli

2023-06-12T20:17:29.800Z: Reading the content of file at /opt/homebrew/Cellar/shopify-cli/3.46.4/libexec/lib/node_modules/<EMAIL_ADDRESS>2023-06-12T20:17:29.801Z:
Running system process:
  · Command: /opt/homebrew/opt/ruby/bin/bundle config set --local path /Users/****/Library/Caches/shopify-gems-nodejs
  · Working directory: /opt/homebrew/Cellar/shopify-cli/3.46.4/libexec/lib/node_modules/@shopify/theme/node_modules/@shopify/cli-kit/assets/cli-ruby

2023-06-12T20:17:29.879Z:
Running system process:
  · Command: /opt/homebrew/opt/ruby/bin/bundle config set --local without development:test
  · Working directory: /opt/homebrew/Cellar/shopify-cli/3.46.4/libexec/lib/node_modules/@shopify/theme/node_modules/@shopify/cli-kit/assets/cli-ruby

2023-06-12T20:17:29.955Z:
Running system process:
  · Command: /opt/homebrew/opt/ruby/bin/bundle install
  · Working directory: /opt/homebrew/Cellar/shopify-cli/3.46.4/libexec/lib/node_modules/@shopify/theme/node_modules/@shopify/cli-kit/assets/cli-ruby

2023-06-12T20:17:30.129Z:
Running system process:
  · Command: /opt/homebrew/opt/ruby/bin/bundle exec /opt/homebrew/opt/ruby/bin/ruby /opt/homebrew/Cellar/shopify-cli/3.46.4/libexec/lib/node_modules/@shopify/theme/node_modules/@shopify/cli-kit/assets/cli-ruby/bin/shopify theme serve /Users/****/Documents/apollo-projects/New Theme/apollo-scooters-cli --live-reload hot-reload --theme<PHONE_NUMBER>22
  · Working directory: /Users/****/Documents/apollo-projects/New Theme/apollo-scooters-cli

✗ An unexpected error occurred.
        To submit an issue include the stack trace.

/opt/homebrew/Cellar/shopify-cli/3.46.4/libexec/lib/node_modules/@shopify/theme/node_modules/@shopify/cli-kit/assets/cli-ruby/lib/shopify_cli/identity_auth.rb:141:in `server': uninitialized constant ShopifyCLI::IdentityAuth::Servlet (NameError)

        server.mount("/", Servlet, self, state_token)
                          ^^^^^^^
        from /opt/homebrew/Cellar/shopify-cli/3.46.4/libexec/lib/node_modules/@shopify/theme/node_modules/@shopify/cli-kit/assets/cli-ruby/lib/shopify_cli/identity_auth.rb:154:in `block in initiate_authentication'

Reproduction steps

Run shopify theme dev --verbose

Operating System
Mac OS Ventura 13.4
Shopify CLI version (check your project's package.json if you're not sure)
3.46.4
Shell
zsh
Node version (run node -v if you're not sure)
v20.3.0
What language and version are you using in your application?
ruby 3.2.2 (2023-03-30 revision e51014f9c0) [arm64-darwin22]

Hi @shawnsan-apollo! This should be fixed with the latest CLI version (3.46.5), please update and try again :)


correct anySatisfy docs

the documentation of anySatisfy was identical to allSatisfy.
Which is of course wrong.

Auto-merge toggled on


/pay command

Proposed specs:
Add an Availability table
As per the rulebook (p290), add a table to roll an Availability Test. Like the "Weather" table in EiS, when rolled without any args, it should ask for the settlement size (Village, Town, City).
It should then ask for the rarity of the item (Common, Scarce, Rare).
Result should give the following informations:

In stock: Yes/No
Quantity available: 1d10+settlement size modifier (rulebook p290-291) rounded up

Arguments can be passed to the table: Size and Rarity
The Table Modifier Menu have to be available for this table.
Roll for item availability
On an item card in the chat, add a contextual menu (right lick) roll the Availability Table with prepopulated arguments from the item card.
Add the ability to Send to chat a Compendium item entry
This can allows GMs to easily share informations on an item that a player want to buy, or a service like a room for the night.
Add a button to get some change
In the Trapping tab of the character sheet, add a button to change the quantity of each money in order to maximize GC, then SS, then BP.
Some example:
120bp, 12ss, 0gc => 0bp, 2ss, 1gc
9bp, 75ss, 1gc => 9bp, 15ss, 4gc
A GM could allow its players to use it when they are currently in a shop or a bank. It is also useful for the /pay command.
Unsure: If the character do not have some of the 3 money trappings at all (not even at 0 quantity), this button could maybe add the missing money?

Add a /pay command
The /pay command is used to modify the 3 money trappings (gc, ss and bp).
Usage:
/pay 3gc2bp
/pay 450bp
/pay 2ss12bp4gc
This command modifies the quantity of each money on the following rules:

Trying first to remove the exact amount of each money given to the command
If there is not enough money, the command will try to calculate everything into BP then try to pay the price. If it succeed, it will then use the "make change" feature to give the player the lowest quantity of coins possible.

Ease of use: the command tries its best to understand the arguments.
As an example, this would still work:
/pay 51GC 8BP 7 ss
Add a "Pay" contextual action on item cards in chat
Under the "Roll for availability" action, a player can directly pay the full price of a trapping entry.
While the price can't be negotiated, it can still be useful for very cheap trappings like a beer, a room or a meal. The GM could use this for other means too, like creating a "Fine" item to ask for payment when the group's thief get caught by the guards.
Note that "paying" an item does not add it to the character inventory. However, the player can then drag&drop the item card from the chat to its sheet.

What do you think about all of this?
Any critics, issues, ideas?

@JiDW great work, I like the look of this, I will add that I made money "Items" specifically so that different currencies could be used. I think it would be good to add an "abbreviation" field to the money item template so this can be supported for any type of money.

Additional Ideas

Maybe place 2 buttons at the bottom of the item chat card (similar to character generation) for "Availability" and "Pay"

Instead of a 'fine' item, maybe make it a chat command? /pay 10bp when coming from a GM will show a very simple chat card that has a button players can click on to automatically pay.

Yes, buttons are better. Could be done for "apply damage" too by the way, it's more user friendly, I agree.
Good idea for the GM /pay command, I will look into that once I'm done with everything else!
And yes for abbreviation support, I'll definitely do it if I found an easy way to make it work with everything else, not sure how tho.

In your /pay command, when arguments aren't recognized, make sure to throw an error detailing what the parser is looking for, ideally list out
/pay 3gc2bp
/pay 450bp
/pay 2ss12bp4gc```


Re-Size

I did not see the document size feature. I wonder, is it possible in future version size feature?
For example;

.. place: 'bottom', height:'40px', width:'80px', ..

Toasts style is under the guide of google material design, snackbars-toasts-specs
If, it is global(all toasts is same), you can customize the sass(if build with gulp)/css file.
Next version will add this to options, and also add iOS HUD toasts style.
Thanks for your suggestion. If more, please let me know.

I thank you,
I wish happy days


How to query bigquery table?

I want to perform a select inner join query on my BigQuery table and get the result. How can I do this using the connector? I know it is possible to apply filters but my sql statement is pretty long and I don't think it'd be possible for me to do this since I also have udfs.
Is there an option I can pass, something like query, to do this?

In concept, what you'd want to do would be to execute this query in BigQuery and then use the storage API to read the data from the results table. It looks like there's an example of how to do this in our code samples; can you give that a try?

Ah ok, thank you! I was hoping to be able to use the spark connector, because spark queries tend to be faster than loading in via an api and converting the results to a dataframe, but I will see how this performs! Thank you

Ah, I misunderstood then. I am not a Spark expert, but I would expect that Spark would also be capable of performing such a join; however, I would not expect that doing so would require anything special from the BigQuery connector, since the shuffle / join / etc. steps would have to occur after reading the data. At best, maybe the Spark query planner could compute the filters to be passed down, assuming you're using Spark SQL. Perhaps @davidrabinowitz can help further here.

There are two options:

Use BigQuery for the join - Run a join query on BigQuery, get the result table from the query job, and use the connector to load the data (basically what @kmjung had suggested)
Use spark for the join - load each table independently using the connector, and then run join on spark:

df1 = spark.read.format("bigquery").option("table","TABLE1").load()
df1.createOrReplaceTempView("t1")
df2 = spark.read.format("bigquery").option("table","TABLE2").load()
df2.createOrReplaceTempView("t2")
joined_df = spark,sql("select ... from t1 join t2 on ...")

Notice that table filters (during the read phase) cannot refer to another table, but only to a constant. For example:

"int_field > 5" "date_field = CAST('2014-9-27' as DATE)"
"nullable_field is not NULL"
"st_equals(geo_field, st_geofromtext("POINT(2, 2)"))"
"numeric_field BETWEEN 1.0 AND 5.0"


Richtext editor support

Hi, just a question: Do you think it is possible to make this plugin compatible with the richtext editor? Or is this a general "not compatible at all" issue?
thanks!
Jojo

Did you mean the wysiwyg editor? As the wysiwyg editor is not very mature, I have not used it currently. It may be compatible in the future.

Did you mean the wysiwyg editor? As the wysiwyg editor is not very mature, I have not used it currently. It may be compatible in the future.

yeah exactely. i think it's called rich text editor in joplin's options IIRC.
thanks in advance and let me know. for now this issue could be closed.

yeah exactely. i think it's called rich text editor in joplin's options IIRC.
thanks in advance and let me know. for now this issue could be closed.


vscode-extensions: update vim related extensions

Description of changes
vscode-extensions.asvetliakov.vscode-neovim: 0.0.86 -> 0.0.89
vscode-extensions.vscodevim.vim: 1.23.1 -> 1.23.2
vscode-extensions.xadillax.viml: 1.0.1 -> 2.1.2
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
22.11 Release Notes (or backporting 22.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 184767 run on x86_64-linux 1

3 packages built:

vscode-extensions.asvetliakov.vscode-neovim
vscode-extensions.vscodevim.vim
vscode-extensions.xadillax.viml


CVA7845: cannot switch light / light state reversed

Describe the bug
When setting ACTIONS.Light to true or false while my CVA7845 coffee machine is powered on, the requested action is not taken and the LastActionResult is
Light command 'ENABLED (1)' is not available for device with mieleDeviceId<PHONE_NUMBER>67 and state 2 at this moment. Available light commands: List(DISABLED (2))
If the machine is powered off, the light switch action seems to be reversed: Setting ACTIONS.Light to false turns light on and setting it to true turns it off.
Expected behavior
The light should be set as requested.
Versions:

Adapter version: 6.1.0
JS-Controller version: 4.0.23
Node version: 14.19.1
Operating system: Ubuntu

Tested and confirmed. It's a bug. Fixing it is easy.


Allow for customizing the mods and config folder with VM args

This PR lets you change the subfolders (within the current game directory) from which mods and mod configuration files are loaded.
The arguments are as follows:
-Dquilt.modSubDir=path/to/mods
-Dquilt.configSubDir=path/to/config

Is there a reason why this mandates both folders as being sub paths of the game path, rather than being anywhere else? I just find that a little odd, that's all.

Is there a reason why this mandates both folders as being sub paths of the game path, rather than being anywhere else? I just find that a little odd, that's all.
@AlexIIL Mainly that you'd have to additionally configure whether the specified path is to be a subfolder or not, and I didn't think that would be necessary. If you have an idea on how this could be implemented, let me know.

@AlexIIL Mainly that you'd have to additionally configure whether the specified path is to be a subfolder or not, and I didn't think that would be necessary. If you have an idea on how this could be implemented, let me know.

When parsing paths, Java will recognize if a path is absolute or not. As such, something like this could be done to simply allow users to provide either relative or absolute paths:
  private void setGameDir(Path gameDir) {
    this.gameDir = gameDir;
    this.configDir = resolveDirectory(gameDir, SystemProperties.CONFIG_SUBDIRECTORY, "config");
    refreshModDir(gameDir);
  }

  private void refreshModDir(Path gameDir) {
    this.modDir = resolveDirectory(gameDir, SystemProperties.MOD_SUBDIRECTORY, "mods");
  }

  private Path resolveDirectory(Path gameDir, String systemProperty, String defaultName) {
    String subDir = System.getProperty(systemProperty);

    if (subDir == null || subDir.isEmpty()) {
      return gameDir.resolve(defaultName);
    } else {
      Path path = Paths.get(subDir);

      return path.isAbsolute() ? path : gameDir.resolve(path);
    }
  }

@FoundationGames @AlexIIL @Haven-King

return path.isAbsolute() ? path : gameDir.resolve(path);

is the default behaviour of resolve. So this should already be handled.

@AlexIIL Mainly that you'd have to additionally configure whether the specified path is to be a subfolder or not, and I didn't think that would be necessary. If you have an idea on how this could be implemented, let me know.

When parsing paths, Java will recognize if a path is absolute or not. As such, something like this could be done to simply allow users to provide either relative or absolute paths:
  private void setGameDir(Path gameDir) {
    this.gameDir = gameDir;
    this.configDir = resolveDirectory(gameDir, SystemProperties.CONFIG_SUBDIRECTORY, "config");
    refreshModDir(gameDir);
  }

  private void refreshModDir(Path gameDir) {
    this.modDir = resolveDirectory(gameDir, SystemProperties.MOD_SUBDIRECTORY, "mods");
  }

  private Path resolveDirectory(Path gameDir, String systemProperty, String defaultName) {
    String subDir = System.getProperty(systemProperty);

    if (subDir == null || subDir.isEmpty()) {
      return gameDir.resolve(defaultName);
    } else {
      Path path = Paths.get(subDir);

      return path.isAbsolute() ? path : gameDir.resolve(path);
    }
  }

Haven, I assume you are referring to impl methods there?
We can't have a setModDir method in public api because that causes a chicken and egg problem. Your mod is loaded from initial folder, but then changes to another folder?

Haven, I assume you are referring to impl methods there?
We can't have a setModDir method in public api because that causes a chicken and egg problem. Your mod is loaded from initial folder, but then changes to another folder?

@i509VCB
None of the methods related to setting the mod directory are visible or in the public api (At least, they shouldn't be)

The tenary operator seemed fine, with a single use I don't see why we need a dedicated util method


Documentation/Sphinx updates

This pull request updates the documentation generator (Sphinx) and makes some preparations to be able to move the documentation to ReadTheDocs.org.

LGTM


Add note about Media Capabilities in workers

This PR adds note below to the Media Capabilities article:

Note: This API is available in all types of workers in Chrome 76

Whoops!
There were 7 warnings that will prevent this PR from being merged. Please take a look, and either fix, or provide a justification for why they can't be fixed.
WARNINGS
src/content/en/updates/2017/12/chrome-63-64-media-updates.md#L224 - '

:tada: This has been pushed live to https://developers.google.com/web/

Digital Marketing! | Work From Home!
Make money online without any expenses!
Our Journey Since 24.12.2012
Subscribe & help us to build a blog !
http://www.mizansurovi1.blogspot.com


Tagging bytes protobuffers with mir type results in wrong conversion

Protobuffers bytes are converted to slices []uint8 in Go. Because of this, when tagging a bytes type with a go type using mir.type  (for example, type TxID []byte) in protobuffers, the codegen actually takes the tagged type and uses it to replace the underlying type of the slice, i.e. uint8. As a result, the resulting type is []TxIDinstead ofTxID. A similar behavior is expected when tagging map types with mir.key_typeandmir.value_type`.
The proposal consists of creating a new tag, mir.outer_type, that if defined tells the codegen to actually convert the entire the entire slice or map, instead of the underlying types.

I imagine, with the suggested fix (a new annotation), there could be an issue with repeated bytes fields.

Although, the feature of wrapping the repeated field, as well as maps, would be nice on its own :)
(either with a new annotation or with (mir.type) as suggested in https://github.com/filecoin-project/mir/pull/348#discussion_r1121774305)


Idea - Do a reset button and/or saving project

This is very cool to be able to build a custom font as easily, but there is no way to reset selected icons, or save project, or anything like this (like if you want to work on a totally different project).
So, if you have time, and you want to do this, this would be a great upgrade :+1:

Reset button already in there. And once yhou have saved font, there's config.json file that you can import.

Just retrieved my account access ! Thank you so much ! I'm feeling so mad about this option I didn't seen (a)

All good! :D Glad it helped :D


Weird behaviour of Text Field when adding flutter to existing Android app as a module .

I had follow this guide to add flutter to existing android app https://github.com/flutter/flutter/wiki/Add-Flutter-to-existing-apps but i when i tap on textfield and keyboard pop ups but , some how screen get flicker .
[✓] Flutter (Channel master, v0.7.1-pre.26, on Mac OS X 10.13.5 17F77, locale en-US)
[✓] Android toolchain - develop for Android devices (Android SDK 28.0.2)
[✓] iOS toolchain - develop for iOS devices (Xcode 9.2)
[✓] Android Studio (version 3.1)
[✓] IntelliJ IDEA Community Edition (version 2018.2.3)
[✓] VS Code (version 1.26.1)
[!] Connected devices
! No devices available

You probably need to assign a TextEditingController to the text field that you keep around so that it is not recreated when the widget is rebuilt.

Here is gif of this behaviour  there is black view showing when keyboard open or close

Are you still seeing this with recent Flutter versions?


Complete EPD parser

Essential components:

[ ] Implement tokeniser
[x] Basic parsing for mandatory fields
[ ] Specific parsing for all operations
[ ] Mandatory, minimal, and complete parsing modes
[ ] Complete testing coverage on a substantial (several MB) real-world dataset

Mandatory field parsing is effectively already complete, since those fields inherit their spec from FEN. By the same token, the hmvc and fmvc opcodes are also already complete.


How to include tesseract 4.0 into my C++ project

I'm trying to create a C++ project by visual studio 2015. But I can not find anywhere that I can download the include and lib file to import to my project. Anyone help me plz.

Please use tesseract user forum for asking support (especially for your own projects). This not tesseract issue.


Azure SQL Data Sync for Azure Database for PostgreSQL

Can someone please confirm whether Azure SQL Data Sync works for Azure Database for PostgreSQL?

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

ID: fa9bff59-c1f2-f93e-46ed-50eb2b6bc1e8
Version Independent ID: 83943260-4a5c-cae6-0b77-621cf2f772bf
Content: What is SQL Data Sync for Azure? - Azure SQL Database
Content Source: articles/azure-sql/database/sql-data-sync-data-sql-server-sql-database.md
Service: sql-database
Sub-service: data-movement
GitHub Login: @stevestein
Microsoft Alias: sstein

@nunepalli We are checking this and we will get back to you.

@nunepalli Azure Data Sync is only for Azure SQL Single instance. For continued migration you may to want to use the Azure Data Factory. Some of the details are on this StackOverflow issue.

@NavtejSaini-MSFT
Thanks for the response.