xcframework support planned?

https://github.com/x2on/OpenSSL-for-iPhone/pull/200 adds XCFramework.


Multiple "same" permission in different groups

Previously I asked a question in the official plugin thread in spigot
https://www.spigotmc.org/threads/luckperms-an-advanced-permissions-plugin.174259/page-60#post-2526176
The question is the same one I did there.
In my server I give temporal ranks, and when they finish they must return to an old rank (different in each case), therefore I can not do "set" or put it of primary group.
When a user has several similar permissions, he sometimes chooses the right one, sometimes not
I explain it a bit better in the official thread, the groups have the correct weight, I have tried to deny permissions from one group to another but none of this works

Sorry, I must've forgotten to reply to you on the thread.
I'm not sure why that's happening. Your description of the setup on the Spigot thread sounds spot on. I can't see why there would be an issue there.
My only guess is that towny is doing something silly with the lookups. The best way to diagnose this would be to use the verbose command.
https://github.com/lucko/LuckPerms/wiki/Verbose
This should hopefully let you see where things are going wrong.

https://gist.github.com/anonymous/07fa575b27ad61013ba031d616d88466
https://gist.github.com/anonymous/eb92e3278a77097966cb3997ab656298
For some reason he is not checking towny_maxplots in any time

Seems like Towny uses a players primary group, and ignores any other groups or permissions they may have.
So, you can't set the max plots meta value to the user directly. You have to set it to their primary group.
https://github.com/ElgarL/Towny/blob/master/src/com/palmergames/bukkit/towny/TownySettings.java#L1675
https://github.com/ElgarL/Towny/blob/master/src/com/palmergames/bukkit/towny/permissions/VaultPermSource.java#L70
If it cannot find a value via meta, it falls back to this method, which will just use the first value it finds
https://github.com/ElgarL/Towny/blob/master/src/com/palmergames/bukkit/towny/permissions/TownyPermissionSource.java#L72
That's why you're getting strange results. It's not a LuckPerms issue, just crappy Towny design. :(

I'm looking into this, we weren't actually using getPrimaryGroup(), so it was acting the way you said it does. Can't help it if that part of towny was written primary groups were a thing...

Thank you both for your time and for taking the time to help me.

we weren't actually using getPrimaryGroup()

https://github.com/ElgarL/Towny/blob/master/src/com/palmergames/bukkit/towny/permissions/VaultPermSource.java#L67
That's what that method does.

Can't help it if that part of towny was written before primary groups were a thing...

You're using the method for it? I don't understand what you're trying to say?
The sane way to handle this is to either return the max value found here:
https://github.com/ElgarL/Towny/blob/master/src/com/palmergames/bukkit/towny/permissions/TownyPermissionSource.java#L71
instead of just returning when the first result is found, or to use Chat#getPlayerInfoInteger, and query the player, not their primary group.

Took care of it already, https://github.com/LlmDl/Towny/commit/11866ecf88829c2c759f1210335e6b26d66c6225
We were not using the preffered getPrimaryGroup(world, offlineplayer), instead just getPrimaryGroup(player) which your plugin doesn't defined in your vault section. SeDark tested this change and it works properly now.


🚀 Feature Request: Breakpoint debugging support in workerd

Hi,
Basically, I don't know how to debug a worker with VS Code. When clicking "Run/Debug" in VS Code, it basically invokes what is configured in  .vscode/launch.json. I just have no idea what should be written there since the dev environment is wrapped by wrangler.
Since most of the people are using VS Code and they probably have a similar problem, I assume it would be a nice addition and improving developer experience significantly.
I've also posted a related thread here: https://community.cloudflare.com/t/how-to-debug-use-breakpoints-with-vs-code/423775
Thanks for consideration.

Fundamentally everything that is needed for this is in place except for the fact that when a breakpoint is hit we have to be able to sleep the request thread. This implies that the dev protocol connection needs to be run on a separate thread. @kentonv probably has the most insight into how to make that work.

I am not sure, but I think we just need to set up a dedicated thread to run the inspector socket listen loop (in server.c++), thinking carefully about synchronization issues. Luckily the types in worker.h are already designed to allow multi-threaded access.

Seems related to this PR, but it has recently been closed without indications as to why: #595

#595 is just enough to get breakpoints working locally, but this also intersects with product code and has some locking issues. It needs a better approach.

Thank you very much for the prompt answer.

Do we have any update or ETA to enable debugging? My team really want to use Cloudflare Pages and Page Workers but without proper debugging I cannot possibly justify the additional time required to get to market.

Current PR for this is at #710 (since it wasn’t already linked)

Here’s the current PR for Wrangler: cloudflare/workers-sdk#3774. It’ll require a Miniflare bump before it can land—but we’re on the home stretch now 🥹

I Need this for webstorm, how the old version support attach debugger and this does not,
using console is big waste of time, thanks for all effort

We can close this issue, it shipped in Wrangler 3.7.0!

Thanks @huw, that's the last piece.

This is fantastic. Thanks for all the hard work!
I can set a breakpoint on the JS bundle generated by esbuild (it's something), but of course I really want to set my breakpoint on my TypeScript API (the dream).
I tried "sourceMap": true in my tsconfig.json (as per stackoverflow) but didn't see any source maps generated.  Also, pages doesn't support worker.toml.  Identifying the right process to attach to is also unclear (I use pnpm to run these in parallel: 1) esbuild src/index.ts --bundle --watch --format=esm --outfile=dist/_worker.js 2) wrangler pages dev dist --live-reload)
After looking through the existing issues, I was going to raise a new issue requesting a short explanation for "How to breakpoint debugging on TypeScript code running under pages locally", but I couldn't see a fit with any of the available categories...
Does anyone have any suggestions on how to achieve this or how to raise the requirement?
Thanks again!

@mrbbot What exactly is d supposed to do? I get that it says "open Devtools" but it has never done anything for me. I just assumed it was an uncompleted placeholder for something.
Is there a sample .vscode/launch.json config that can be shared so that we can get debugging working properly in VSCode now?

The --no-bundle flag should work in the meantime, yeah? I’ll give it a try soon and report back if you’re not sure

@mrbbot

...I'm guessing you don't have Chrome installed?

Actually, I do. However, I am running Wrangler in Ubuntu 22.04 under WSL2 on Windows. So Wrangler is on the Ubuntu side but my Chrome is on Windows. I had no idea that "d" was supposed to open Chrome Dev Tools. But now I do I have been able to open it manually. Do you happen to know where the code is that launches Chrome from the "d" keypress (e.g. what repo? Maybe even where in the repo?) If you can point me in that direction I can take a look and perhaps figure out how to get it to work in WSL2 world.

Breakpoint debugging is currently supported using these DevTools, or WebStorm's. I've struggled to get VSCode's debugger working. 😕 VSCode's attach configurations connect to workerd, but can't find source maps. From reading VSCode docs, it looks like VSCode ignores //# sourceMappingURL comments, and instead looks for source maps itself on disk? I may be misunderstanding this though. wrangler dev stores its source maps in a random temporary directory that VSCode wouldn't be able to find on its own. I've got some ideas to try work around this though. Will report back on this thread if I get something working. 👍

Breakpoint debugging is something I have taken for granted since I first experienced it with Turbo Pascal on DOS back in the late 80's. So much so that I never stopped to think about how it works. From day 1 JavaScript debugging in VSCode just worked out of the box. And, the Serverless Framework has the serverless-offline plugin making debugging AWS Lambda's a breeze too. CloudFlare workers are the first time I have come across the inability to debug in many years. So, it's really good to understand the intricacies and challenges of the process. I am going to read the VSCode docs you linked so I have a better appreciation and understanding.
Thanks for all your work on this!!!

When using webstorm's debugger, the worker freezes and all subsequent requests will time out. The devtools debugger works fine.

@ben-xD can you open a new ticket and post repro instructions for the issue in WebStorm and/or capture a Chrome Debugger Protocol trace in WebStorm? Thanks

Just tried wrangler 3.9 which I believe has these changes. Unfortunately it doesn't seem to be quite there yet.
The problem from what I see is that the sourcemap generated for the bundle by wrangler's toolchain doesn't follow along from previous files correctly.  Eg: right now if I run the app with VSCode's debugger, it correctly maps the bundle (under "deployed" in the devtools) to the compiled file my tooling is generating, but if sourcemaps were processed correctly, it should map all the way to the original files:

You can see in the screenshot that the bundle (ick3smw8et.js) maps correctly to [[path]].js. But the later is itself a bundle. This is a remix app, and it has sourcemaps for //# sourceMappingURL=/build/[[path]].js.map, and that isn't honored (my knowledge of sourcemap building is limited, but I believe the previous sourcemap in the chain is supposed to be provided when building the next one, so you only need the final one. Maybe that's not happening?)
The issue happens both in Visual Studio Code, or at the Cloudflare devtool url.
If I copy paste the [[path]].js.map in my public directory, and in the devtool rightclick in ick3smw8et.js, choose add sourcemaps, and add a url to [[path]].js.map, then I can debug my source correctly. With the asterisk that its' missing extra lines added during the bundling process, so all my breakpoints are 2-3 lines off.
Considering mapping from my own bundler's output, to wrangler's bundler output, seems to be working correctly, I have a feeling if the final sourcemap was generated using the previous sourcemaps, this would "Just work".
Sorry for the very convoluted explanation! I know just enough about the topic to be dangerous.

@Phoenixmatrix It looks like the sourceMappingURL was just fixed by https://github.com/remix-run/remix/pull/7574
With that change, I am able to get the breakpoint debugging working with the Chrome Dev Tools. Though, if you are using Remix, remix dev -c swallows the [b] open a browser, [d] open Devtools, [c] clear console, [x] to exit menu, so you need to open https://devtools.devprod.cloudflare.dev/js_app?theme=systemPreferred&ws=localhost%3A9229%2Fws&debugger=true manually.
I wasn't able to get debugging working inside VS Code though.

@BrandonNoad, are you on macOS? https://github.com/cloudflare/workers-sdk/pull/4067 will likely need to be released before this works in VSCode (hopefully going out tomorrow) 👍

Yes, I'm on a Mac. I'll keep an eye out for the release. Thanks for fixing!

<EMAIL_ADDRESS>was released yesterday including this fix. I don't think the Remix fix has been released yet, but this should get us one step closer. 👍

Awesome. I verified that it works as expected with both patches applied. Thanks for fixing it!

My notes for getting vscode working and operating with the vitest vscode test runner extension are here:
https://github.com/cloudflare/workers-sdk/discussions/4174

saving people some time from reading thru a bunch of the above - the vscode + wrangler instructions you need are here. https://blog.cloudflare.com/debugging-cloudflare-workers#breakpoints

I just noticed that I can get DevTools working in windows following instructions at: https://blog.cloudflare.com/debugging-cloudflare-workers#breakpoints ...but not in WSL2 - anybody else have that problem and workaround?

I just noticed that I can get DevTools working (but not vscode debugging) in windows following instructions at: https://blog.cloudflare.com/debugging-cloudflare-workers#breakpoints
...but DevTools still won't work in WSL2 - anybody else have that problem and workaround? (ps. using Typescript)

I'm not a Windows user, but I also had issues attaching my debugger. For me, downgrading wrangler fixed it - see reported issue here https://github.com/cloudflare/workers-sdk/issues/5297

On one of my projects, I couldn't get either chrome devtools nor vscode to work, no matter what, where on the other, vscode breakpoints were working but devtools wouldn't until vscode's debugger session was started then closed, but even in that case the devtools just showed a bunch of random eval-somehash.js files
Honestly could just be some configuration reason with my first project, idk what though, and it's really annoying to keep having to use console.log debugging ngl


[HOLD] Hybrid app: Welcome video shows out-dated copy "Request money"

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: 9.0.12-0
Reproducible in staging?: Y
Reproducible in production?:
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: @neil-marcellini
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1721943528361069
Action Performed:

Set the NVP on expensify.com with the snippet NVP.set('tryNewDot', {classicRedirect: {dismissed: "true"}});
Log in to the hybrid app
Open the menu at the top left
Click Try New Expensify
Watch the welcome video

Expected Result:
The video shows "Submit expense" and how to use it
Actual Result:
It shows the out-dated terminology/copy of "Request money", which is not present in the product at all now.
Workaround:
Can the user still use Expensify without this being fixed? Have you informed them of the workaround?
Platforms:

Which of our officially supported platforms is this issue occurring on?

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

Screenshots/Videos
Add any screenshot/video evidence

View all open jobs on GitHub

cc @Expensify/design do you manage changes to the welcome video referenced here?

cc @jamesdeanexpensify since we were talking about this today in Slack.
Yes @sakluger - design can handle these sorts of things with TCW. But let's wait and see what James says first, I think we have plans to redo some of this stuff already in the works?

Hmm...the feedback I gave was in this thread and created this GH. Outside of that, I didn't have anything in the works!

Ah got it, I was thinking of this comment here that you had made today

@ShridharGoel I don't think we plan on making this external. @shawnborton can you confirm that I should label this as internal?

We'll need to update the videos internally first, but we might be switching things up here with different welcome videos based on intent, so let's hold here for a moment until we decide. But once we have updated videos, then we can make it external to implement the changes.

I put this issue on hold since it sounds like we'll likely be making bigger changes to the videos. If we end up moving forward with those bigger changes, I suggest we close this issue.

@shawnborton any thoughts on long-term plans around our welcome videos? If we have near or mid-term plans to update our welcome videos, then we should close this GH issue. If we don't plan to make changes anytime soon, then we should probably change the copy in this video.

@anmurali @dubielzyk-expensify @danielrvidal thoughts on Sasha's comment above?

Great call. I think we're looking at removing it because we have intent specific videos, but I'll let Anu or Daniel remind me if I'm wrong

@anmurali @danielrvidal any thoughts on this one? When are we planning on making the intent-specific videos? Just trying to get a sense on whether we should update the current video, or close this GH issue for now in favor of waiting for the new videos.

I don't think that video is in the flow anymore so I think it's fine to close. We removed the general welcome from the new user flow. Additionally, I think @JmillsExpensify is working on a new welcome video that we'll show to existing users coming over but that would be outside of this issue.


Fix testFixture

Bug in swarm initialization for tests

It won't restore previous swarm state if it was uninitialized


iox-#2072 Include mqueue.h needs sys/stat.h for mode_t (fixes musl compile)

As stated in the mq_open man page ([1]) the mqueue.h include needs additional sys/stat.h include for mode_t definition.
Fixes musl compile:
In file included from .../build/iceoryx-custom/iceoryx_platform/linux/source/mqueue.cpp:17:
.../build/iceoryx-custom/iceoryx_platform/linux/include/iceoryx_platform/mqueue.hpp:23:49: error: ‘mode_t’ has not been declared
23 | mqd_t iox_mq_open4(const char* name, int oflag, mode_t mode, struct mq_attr* attr);
|                                                 ^~~~~~
.../build/iceoryx-custom/iceoryx_platform/linux/source/mqueue.cpp:26:49: error: ‘mode_t’ has not been declared
26 | mqd_t iox_mq_open4(const char* name, int oflag, mode_t mode, struct mq_attr* attr)
|                                                 ^~~~~~
[1] https://man7.org/linux/man-pages/man3/mq_open.3.html
Pre-Review Checklist for the PR Author

[ ] Code follows the coding style of CONTRIBUTING.md
[ ] Tests follow the best practice for testing
[ ] Changelog updated in the unreleased section including API breaking changes
[ ] Branch follows the naming format (iox-123-this-is-a-branch)
[ ] Commits messages are according to this guideline

[ ] Commit messages have the issue ID (iox-#123 commit text)
[ ] Commit author matches Eclipse Contributor Agreement (and ECA is signed)

[ ] Update the PR title

Follow the same conventions as for commit messages
Link to the relevant issue

[ ] Relevant issues are linked
[ ] Add sensible notes for the reviewer
[ ] All checks have passed (except task-list-completed)
[ ] All touched (C/C++) source code files from iceoryx_hoofs are added to ./clang-tidy-diff-scans.txt
[ ] Assign PR to reviewer

Notes for Reviewer

Checklist for the PR Reviewer

[ ] Commits are properly organized and messages are according to the guideline
[ ] Code according to our coding style and naming conventions
[ ] Unit tests have been written for new behavior
[ ] Public API changes are documented via doxygen
[ ] Copyright owner are updated in the changed files
[ ] All touched (C/C++) source code files from iceoryx_hoofs have been added to ./clang-tidy-diff-scans.txt
[ ] PR title describes the changes

Post-review Checklist for the PR Author

[ ] All open points are addressed and tracked via issues

References

Closes #2072

Oh, it seems you need to run clang-format or manually sort the includes in alphabetical order

@pseiderer Okay, now the CI is fine. Would you please also add the fixed issue to the changelog? The link is in the PR template.
Once that is done we just have to wait for the ECA check to pass


Created certificates are not valid

Hi,
some weeks ago, i created the certificates for 3 domains without the plugin on the server, including the www and non-www version of the domain.
1 of this domains is a non-www variant the other 2 will be redirected to the www variant.
These behavior is configured in the hosting settings of the domains as prefered domain (www/non-www)
I have no problems with the non-www domain, as the plugin created certificate is up and running.
But: all www-domain generated certificates are unsafe with an
NET::ERR_CERT_COMMON_NAME_INVALID error in Chrome.
any ideas or hint´s, how i can solve this problem?
// Oliver

I think this might relate to #4
You'll find a workaround there

Thanks @MatrixCrawler
indeed you are right. Search the issues before posting, but didn´t find it, sry.
As my old certificates also exists and valid until Feb/2016, i will wait for the next version.


Symlinked packages (in monorepo) are not copied when when deferSymlinks is set to false

[X] I have read the contribution documentation for this project.
[X] I agree to follow the code of conduct that this project follows, as appropriate.
[X] I have searched the issue tracker for an issue that matches the one I want to file, without success.

 Lerna symlinks my package together in the node_modules. So, to make sure they are included during the build, I have set "deferSymlinks": false. Here's the error I get:
An unhandled error has occurred inside Forge:
ENOENT: no such file or directory, stat '/private/var/folders/0t/xj_cwhvx45q8fxnwcd8mvg400000gn/T/electron-packager/darwin-x64/Universal React-darwin-x64/Electron.app/Contents/Re
sources/app/node_modules/@universal-react/components'
Error: ENOENT: no such file or directory, stat '/private/var/folders/0t/xj_cwhvx45q8fxnwcd8mvg400000gn/T/electron-packager/darwin-x64/Universal React-darwin-x64/Electron.app/Cont
ents/Resources/app/node_modules/@universal-react/components'

As you can see, my symlinked package is not being copied during the build process. Any idea how to fix this?
Thanks a bunch!

You misspelled derefSymlinks. Perhaps try that?

Ooops..... So, just tried to rebuild with "derefSymlinks": false but still get the same issue

I think this is a duplicate of #738 (which I need help with).


How can I apply filters on the data I fetch from firestore using the FirestorePagination widget? Before using this package I was using streamBuilder widget and I used to do the filters by editing the stream of the streamBuilder.

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

@ahmed9hussin What kind of filters are you talking about? Can you explain this a bit more with examples and a sample code?

For example there is "status" field in each doc in the collection it's value could be "accepted", "rejected" or "onHold". This is an example of the stream of my streamBuilder : "FirebaseFirestore.instance
.collection('assignments')
.where('isDeleted', isEqualTo: false)
.where('status',
isEqualTo: assignmentController.assignmentStatus)
.orderBy('date', descending: true)
.snapshots(),". And I had a function that changes the value of the variable "assignmentStatus" in my controller then the filtered data will be fetched again in the streamBuilder widget. I tried to do the same in the FirestorePagination but It did not work. For example when I open the app the default value of "status" is "accepted" and the data get fetched successfully but when I change it to "onHold" the new filtered data would not be updated unless I scroll down, when I change it again to "rejected" for example it will not be updated again even If I scrolled down. If I did a mistake so correct me please and If you have a better idea I will be thankful. note the isLive property is "true".

@ahmed9hussin What kind of filters are you talking about? Can you explain this a bit more with examples and a sample code?

For example there is "status" field in each doc in the collection it's value could be "accepted", "rejected" or "onHold". This is an example of the stream of my streamBuilder : "FirebaseFirestore.instance .collection('assignments') .where('isDeleted', isEqualTo: false) .where('status', isEqualTo: assignmentController.assignmentStatus) .orderBy('date', descending: true) .snapshots(),". And I had a function that changes the value of the variable "assignmentStatus" in my controller then the filtered data will be fetched again in the streamBuilder widget. I tried to do the same in the FirestorePagination but It did not work. For example when I open the app the default value of "status" is "accepted" and the data get fetched successfully but when I change it to "onHold" the new filtered data would not be updated unless I scroll down, when I change it again to "rejected" for example it will not be updated again even If I scrolled down. If I did a mistake so correct me please and If you have a better idea I will be thankful. note the isLive property is "true".

@ahmed9hussin What you can do is give the key parameter of FirebasePagination the value as ValueKey(assignmentController.assignmentStatus). So whenever you change the value of assignmentController.assignmentStatus using setState it'll re-render the widget with your new firestore query.
Tell me if this works.

@OutdatedGuy @ahmed9hussin This method works. Thanks!

@ahmed9hussin What you can do is give the key parameter of FirebasePagination the value as ValueKey(assignmentController.assignmentStatus). So whenever you change the value of assignmentController.assignmentStatus using setState it'll re-render the widget with your new firestore query.
Tell me if this works.

@OutdatedGuy Thanks a lot! it worked honestly you saved me I really appreciate your work. Just to understand when we assign a value to the key and that value change the widget will be rendered again or what can you explain for me more please I will appreciate it a lot. I closed it by mistake btw I it's my first time using the issues in git :) but you already solved it so it's ok I think.


Need tests for watch evaluation that result in errors

test-v8debugapi exercises conditions, but doesn't do a lot of testing of watch expressions, specially ones that are going to be valid expressions but will fail to evaluate.

What if, instead of evaluating watch expressions manually, we allowed node to take care of that part with something like:
vm.runInContext(`try { ${watch_expression} } catch (e) { e }`,
  vm.createContext(clone(global)));

This would give nice error handling and let the expression execute in a completely sandboxed way to prevent side affects being a problem. There is probably a performance trade off here but I'd have to test the current implementation against this to get more information.

I don't think global has enough state. You also need all the variables reachable from the stack.


samples: net: sockets: net_mgmt: Increase main thread priority

net_mgmt sockets do not implement internal queue but use net_mgmt_event_wait() internally to receive events. As a consequence, in case of events burst, some events may be lost if the receiving thread has lower priority than the net_mgmt thread.
This was visible in the sample, where only DAD event was reported properly, as IPv6 Add/Remove events were triggered in pair with corresponding multicast events (from solicited-node multicast address).
We can mitigate this by increasing main thread priority to be at the same priority as net_mgmt thread, so that the receiving thread (main) has a chance to run in between event reports.

The commit & PR information can be hard to find or notice. Won't it be better to mention that in config NET_MGMT_EVENT_THREAD description or to have a separate priority config option?

The commit & PR information can be hard to find or notice. Won't it be better to mention that in config NET_MGMT_EVENT_THREAD description or to have a separate priority config option?

I've added this information to the help string of the corresponding Kconfig option. We don't really have any other documentation for this feature at the moment.


feat: support turning off preserve dynamic imports cjs

❓ Type of change

[ ] 📖 Documentation (updates to the documentation, readme, or JSdoc annotations)
[ ] 🐞 Bug fix (a non-breaking change that fixes an issue)
[x] 👌 Enhancement (improving an existing functionality like performance)
[ ] ✨ New feature (a non-breaking change that adds functionality)
[ ] 🧹 Chore (updates to the build process or auxiliary tools and libraries)
[ ] ⚠ Breaking change (fix or feature that would cause existing functionality to change)

📚 Description
This PR adds support to choose to turn off "preserve dynamic imports" to older environments.
Issue found using unbuild to build a dependency of create-react-app v4 project where it's doesn't support esm import
📝 Checklist

[ ] I have linked an issue or discussion.
[X] I have updated the documentation accordingly.

Thanks for this pull request. But since this is mostly an edge-case for legacy environments not supporting dynamic imports (not sure which not version) would it makes sense that we document it as how to configure rollup via hooks?

Well, to be honest, I don't know which is the right way to go.
But, I understood that other options follow the same, like:
https://github.com/unjs/unbuild/blob/1d06a266ed454c016e1e59323de006056cd97246/src/types.ts#L48-L49
Did you think that this option differs too much from the expectations?

Other options are often to "opt-in" into a behavior while this one is an "opt-out" for an expected behavior. I am not against introducing an option to make unbuild customizable only questioning if this is really something we expect to be normally used.

Issue found using unbuild to build a dependency of create-react-app v4 project where it's doesn't support esm import

Do you have more information of this? What library supports legacy node without dynamic import support?

Other options are often to "opt-in" into a behavior while this one is an "opt-out" for an expected behavior. I am not against introducing an option to make unbuild customizable only questioning if this is really something we expect to be normally used.
Update: Let's have it! I have renamed option name slightly to reflect that it always changes behavior.

Issue found using unbuild to build a dependency of create-react-app v4 project where it's doesn't support esm import

Do you have more information of this? What library supports legacy node without dynamic import support?

Sorry for the late. But I was using this library to build a team lib that is currently using material-ui 4.


Example fails due to context being null

Hi, The example code fails like this for me:
......./node_modules/vectorize-text/lib/vtext.js:197
  context.font = size + "px " + family
               ^
TypeError: Cannot set property 'font' of null

Which makes sense, because defaultContext gets set to null in your index.js, and I don't pass in an options.context so it defaults to that on index.js:23.
Am I missing something?
The Readme says it works both in Node and Browserify, but the code seems to require a canvas to be passed in?

Ah good catch.
The behavior of this module changed recently and the docs need to be updated to reflect this.  Basically to remove the node.js' canvas dependency the module requires that you pass in a WebGL context.  I'll update the example to reflect this.

Excellent, thanks!

Hm, played around and couldn't get it to work with gl (a headless WebGL lib) and from what I could gather some other libs required desktop graphics, and wouldn't work on a server. Will I be able to render server-side with your package?

Errr, sorry I typoed that.  It isn't a webgl context but a canvas 2d context, as would be produced for example from node-canvas

Ah, okay. Bummer, I was primarily looking for a module not relying on external libs (node-canvas needs non-node libs installed, different on different systems etc)
Thanks anyway!

Yeah, it is unfortunate. Text rendering is really complicated though, and there aren't easy solutions.

I have same original problem described by @prewk.
I'm confused because the source code still wants a canvas. The example code isn't passing it.
What can I edit to make this work?


Save beakerx.json to paths specified in JUPTYER_CONFIG_DIR

The %%spark magic is currently hardwired to store its configuration at Paths.get(System.getProperty("user.home") + File.separator + ".jupyter" + File.separator + "beakerx.json"))));
It should instead honor paths (if) specified in the JUPYTER_CONFIG_DIR environment variable
e.g., I have JUPYTER_CONFIG_DIR set to /mnt/mesos/sandbox/.jupyter which yields the following acceptable config locations with jupyter --paths:
$ jupyter --paths
config:
    /mnt/mesos/sandbox/.jupyter
    /opt/conda/etc/jupyter
    /usr/local/etc/jupyter
    /etc/jupyter
data:
    /mnt/mesos/sandbox/.local/share/jupyter
    /opt/conda/share/jupyter
    /usr/local/share/jupyter
    /usr/share/jupyter
runtime:
    /mnt/mesos/sandbox/.local/share/jupyter/runtime

Instead, the Spark Magic fails to initialize when I run the notebook as the non-privileged user nobody because it attempts to store beakerx.json under /nonexistent/.jupyter, which as the name implies, is non-existent :)
$ grep nobody /etc/passwd
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin

Thanks for the report, will get this into the next release.

the envar would be a good quick fix.
would it be more accurate to use Python API:
jupyter_core.paths.jupyter_config_dir()
?

https://github.com/twosigma/beakerx/blob/8893d41fb735aa8f727b1b40642f938bc5b7b525/kernel/sparkex/src/main/java/com/twosigma/beakerx/widget/SparkUiDefaultsImpl.java#L43
should this class be in python, ie reuse
https://github.com/twosigma/beakerx/blob/8893d41fb735aa8f727b1b40642f938bc5b7b525/beakerx/beakerx/environment.py#L48
could call into it with py4j?


Remove 'expect' dependency and mocha/sinon/chai

About expect:

we should use the "expect" function included with Jest.

About sinon chai mocha:

we can use Jest as both client and server testing framework

@pierpo I approve - but can we have an example of Jest tests on the server side ? cc @daniel-jorge

@ghamaide I tried, it's not easy because the jest configuration would be mutualised between the client and server.
It will be possible once the client and server will be split.


Clicking on graphs in website throws error

Clicking on the graphs shown in the example website throws an error. I would imagine the expected behavior to either not be a link, or to show a larger version of the graph.

For anyone who stumbles here, this was fixed in https://github.com/upptime/status-page/releases/tag/v1.7.2.


updated bgp util to take input ports to configure bgp

Pull Request Functional Test Report for #2787 / 9c1e40ca4a149d8e065f82eda85fdb7e84261d01
Virtual Devices

Device
Test
Test Documentation
Job
Raw Log

Arista cEOS

RT-7.2: BGP Policy Community SetRT-1.28: BGP to IS-IS redistributionRT-1.51: BGP multipath ECMPRT-1.52: BGP multipath UCMP support with Link Bandwidth CommunityRT-7.4: BGP Policy AS Path Set and Community SetRT-7.3: BGP Policy AS Path Set
98105be5
Log

Cisco 8000E

RT-7.2: BGP Policy Community SetRT-1.28: BGP to IS-IS redistributionRT-1.51: BGP multipath ECMPRT-1.52: BGP multipath UCMP support with Link Bandwidth CommunityRT-7.4: BGP Policy AS Path Set and Community SetRT-7.3: BGP Policy AS Path Set
891730e0
Log

Cisco XRd

RT-7.2: BGP Policy Community SetRT-1.28: BGP to IS-IS redistributionRT-1.51: BGP multipath ECMPRT-1.52: BGP multipath UCMP support with Link Bandwidth CommunityRT-7.4: BGP Policy AS Path Set and Community SetRT-7.3: BGP Policy AS Path Set
1bd2df47
Log

Juniper ncPTX

RT-7.2: BGP Policy Community SetRT-1.28: BGP to IS-IS redistributionRT-1.51: BGP multipath ECMPRT-1.52: BGP multipath UCMP support with Link Bandwidth CommunityRT-7.4: BGP Policy AS Path Set and Community SetRT-7.3: BGP Policy AS Path Set
8f23400f
Log

Nokia SR Linux

RT-7.2: BGP Policy Community SetRT-1.28: BGP to IS-IS redistributionRT-1.51: BGP multipath ECMPRT-1.52: BGP multipath UCMP support with Link Bandwidth CommunityRT-7.4: BGP Policy AS Path Set and Community SetRT-7.3: BGP Policy AS Path Set
961f7924
Log

Openconfig Lemming

RT-7.2: BGP Policy Community SetRT-1.28: BGP to IS-IS redistributionRT-1.51: BGP multipath ECMPRT-1.52: BGP multipath UCMP support with Link Bandwidth CommunityRT-7.4: BGP Policy AS Path Set and Community SetRT-7.3: BGP Policy AS Path Set
8e7f245c
Log

Hardware Devices

Device
Test
Test Documentation
Raw Log

Arista 7808

RT-7.2: BGP Policy Community SetRT-1.28: BGP to IS-IS redistributionRT-1.51: BGP multipath ECMPRT-1.52: BGP multipath UCMP support with Link Bandwidth CommunityRT-7.4: BGP Policy AS Path Set and Community SetRT-7.3: BGP Policy AS Path Set

Cisco 8808

RT-7.2: BGP Policy Community SetRT-1.28: BGP to IS-IS redistributionRT-1.51: BGP multipath ECMPRT-1.52: BGP multipath UCMP support with Link Bandwidth CommunityRT-7.4: BGP Policy AS Path Set and Community SetRT-7.3: BGP Policy AS Path Set

Juniper PTX10008

RT-7.2: BGP Policy Community SetRT-1.28: BGP to IS-IS redistributionRT-1.51: BGP multipath ECMPRT-1.52: BGP multipath UCMP support with Link Bandwidth CommunityRT-7.4: BGP Policy AS Path Set and Community SetRT-7.3: BGP Policy AS Path Set

Nokia 7250 IXR-10e

RT-7.2: BGP Policy Community SetRT-1.28: BGP to IS-IS redistributionRT-1.51: BGP multipath ECMPRT-1.52: BGP multipath UCMP support with Link Bandwidth CommunityRT-7.4: BGP Policy AS Path Set and Community SetRT-7.3: BGP Policy AS Path Set

Help

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 54.484%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
1847

Relevant Lines:
3390

💛  - Coveralls


MD5? Consider SHA256

Hi - While doing a quick review after seeing the project on reddit, I found myself cringing at the use of MD5. While I understand that your indented use case is not specifically security related, using MD5 specifically excludes any security related use cases. Please consider a secure cipher like sha256.

Closing issue. I'll create another issue to track the possibility of moving from SHA1 to SHA256.


All audio broken

Audio is completely broken on my MBP 16 2021 M1 Pro. I haven't turned off my computer for some days, just turned it into sleep, and today this happened. This sound is heard instead of all sounds in system, not only browser.
https://github.com/AsahiLinux/asahi-audio/assets/62416447/ac710ece-7836-4744-af38-034066a1b20c
Maybe you can place instruction somewhere how to restart sound system to fix this?

Could you please paste the output of asahi-diagnose somewhere first

asahi-diagnose-20240106-151609.txt

Why does asahi-diagnose prints
Pipewire macaudio profile is "none". Headphones and speakers will not work. Select the "Default" or "HiFi" profile.
But my speakers are working right now

That's just a result of some faulty logic that will be fixed soon. If your speakers are working, there's no need to worry about that message.
The garbled audio is probably due to codec chip shenanigans that we need to work through. The actual electrical configuration of these machines can be quite delicate and  needs careful handling. A similar effect can be produced from I2S problems so it may be that.

Ok, thank you for the explanation. Can you write some instructions how audio system can be restarted without full laptop reboot if possible?

For the particular issue you showed in your video, the only fix is to reboot.

Got it, thank you.


Consistent type hints for Optional

Replace "Optional[...]" with "... | None"

Hi @Jemeljanov. Thanks for the pull request. Looks good.


IntelliSense/completions within comments

It would be better if you can add comment intellisense for TypeScript, let's say if I've defined a function below (Just a sample, please ignore the error syntaxes if I have)
function SayHello(word:string):void
{
   //Contents ignored
}

So when I type "/*" at the beginning of "function" and press Enter, I should get an intellisense list of parameters such as "word" to choose and write comments(just like what I can do in C# or VB.NET)
/*
function SayHello(word:string):void
{
   //Contents ignored
}

Any other ideas or suggestions?

We do have comment template generation now, and completion for JSDoc tag names such as param at the beginning of an @, but we still don't give parameter name completions for an existing comment.

I'm reopening this. The original suggestion was to have actual completions for words, not to have a full comment completion. As I said,

We do have comment template generation now

But this isn't the original suggestion. The suggestion was to have things like parameter names show up in your comments when above a function definition.

We already support completions for tag names after @ and types between { and } in JS files.
Please file other suggestions with more details. i core issue here has been addressed.


Feature request: Trigger Seil options when plug in/out keyboard

Hi !!!
I've switched the 'command' and 'option' key so I can 'command-tab' on my none-mac external keyboard normally. But when the external keyboard isn't present, I don't want that mapping to run. So It would be great if I didn't have to toggle those options each time I switch from external keyboard to the none external one.
I hope this isn't as hard as it sounds, you just have to create a shell input to the Seil commands, and trigger those on a keyboard-connected Event (from an external tool or like)

Please use Hammerspoon for this purpose.
http://www.hammerspoon.org/
Please execute Seil's command line interface from Hammerspoon.
https://pqrs.org/osx/karabiner/seil.html.en#commandlineinterface

Thank you so VERY much @tekezo


fix: encode paths correctly for autofix in windows

Description
Provide description of this PR and changes, if linked Jira ticket doesn't cover it in full.
Checklist

[ ] Tests added and all succeed
[x] Linted
[ ] README.md updated, if user-facing
[ ] License file updated, if new 3rd-party dependency is introduced

🚨After having merged, please update the CLI go.mod to pull in latest language server.
Screenshots / GIFs

this is BIG, thank you Basti!


Fix plugin failing to load

Resolves #1 - the plugin now loads correctly.
The namespace Wox.Infrastucture.* is from an internal library for Wox, not from Wox.Plugin.dll. This was causing problems when the plugin was being loaded into the app, as evidenced by the Wox log file.
Changes

Dropped all usage of Wox.Infrastructure.dll.
Rebuilt the settings read/write so that it no longer needs to reference Wox.Infrastructure.dll. The Settings object now implements INotifyPropertyChanged, which will trigger a write to {PluginDirectory}/twitch_settings.json on any property value change.
Added plugin.json and Images/app.png to project, repo, and build output. Now, everything in the output folder can be zipped up into a .wox file to make a working plugin!
Bumped version number

Testing

Able to get expected results from twstream, twtop, and twgames
Able to make changes to the plugin's settings and verify that they were changed in twitch_settings.json
Able to close and re-open Wox to verify that settings persist

Final steps
I've built and attached the code to save you some time. Feel free to download and try this, or re-build it from the code yourself.

If no more changes need to be made, download this: WoxTwitch.zip
Change the extension to ".wox" (github won't let me upload a .wox file)
Click the Edit button here, and upload the .wox file.

@dolphinspired is this merge also supports Twitch's new API such that an API key is required for every request?

I uploaded version 2.2.2 to the Wox website.

I didn't change anything with the API call, just the settings. Thanks for merging!

End of 2018 Twitch made it mandatory that API calls need their token with every request.


Update htmlFor prop on terra-form-field to be a required prop

Issue Description
Currently, the htmlFor prop is not a required prop in the terra-form-field. This prop is helpful to create a mapping between the for attribute in a label with and id attribute on an input element. In our InputField, TextareaField, and SelectField, we require an id prop and pass that down to the htmlFor prop, so that scenario is covered. What we don't cover is the use-case of someone using terra-form-field to build their own field composition. By making htmlFora required prop, it will help ensure teams build custom field compositions have the right data needed to create the accessible mapping between label and input field.

Planning to hold off on this change until around the end of Q2/beginning of Q3 to minimize major version bumps in the Terra UI ecosystem.


Can’t Change Download Location

I made sure to follow the instructions, but youtube-dl isn’t downloading videos to the location I specified. It creates a whole new directory in my user folder and puts the downloaded videos there. This is the command I used:  -o “/user/Jfblagden/Movies/youtube-dl/%(title)s-%.%(ext)s” The other problem is that it puts “-%(ext)s” at the end of the video’s name instead of the file extension, which in this case should be “.mp4”. Is this a bug, or is my syntax wrong?

Post the full output of youtube-dl when run with -v, i.e. add -v flag to your command line, copy the whole output and post it in the issue body wrapped in ``` for better formatting. It should look similar to this:
$ youtube-dl -v <your command line>
[debug] System config: []
[debug] User config: []
[debug] Command-line args: [u'-v', u'http://www.youtube.com/watch?v=BaW_jenozKcj']
[debug] Encodings: locale cp1251, fs mbcs, out cp866, pref cp1251
[debug] youtube-dl version 2015.12.06
[debug] Git HEAD: 135392e
[debug] Python version 2.6.6 - Windows-2003Server-5.2.3790-SP2
[debug] exe versions: ffmpeg N-75573-g1d0487f, ffprobe N-75573-g1d0487f, rtmpdump 2.4
[debug] Proxy map: {}
...

Do not post screenshots of verbose log only plain text is acceptable.
The output (including the first lines) contains important debugging information. Issues without the full output are often not reproducible and therefore do not get solved in short order, if ever.

Here’s the output: ‘''[youtube] N4_3ci9jvis: Downloading webpage
[youtube] N4_3ci9jvis: Downloading video info webpage
[youtube] N4_3ci9jvis: Extracting video information
[youtube] N4_3ci9jvis: Downloading MPD manifest
[download] Destination: “/user/Jfblagden/Movies/youtube-dl/Bring Back MST3K, Part 4 - Joel Shares A Few More Details-%(ext)s”
[download]  21.0% of 18.73MiB at 355.73KiB/s ETA 00:42’''

Read my post closely.

‘''[debug] System config: []
[debug] User config: [u'-o', u'\u201c/user/Jfblagden/Movies/youtube-dl/%(title)s-%.%(ext)s\u201d']
[debug] Command-line args: [u'-v', u'[youtube]', u'N4_3ci9jvis:', u'Downloading', u'webpage']
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2016.02.22
[debug] Python version 2.7.8 - Darwin-15.3.0-x86_64-i386-64bit
[debug] exe versions: none
[debug] Proxy map: {}
ERROR: u'[youtube]' is not a valid URL. Set --default-search "ytsearch" (or run  youtube-dl "ytsearch:[youtube]" ) to search YouTube
Traceback (most recent call last):
File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 666, in extract_info
ie_result = ie.extract(url)
File "/usr/local/bin/youtube-dl/youtube_dl/extractor/common.py", line 316, in extract
return self._real_extract(url)
File "/usr/local/bin/youtube-dl/youtube_dl/extractor/generic.py", line 1204, in _real_extract
% (url, url), expected=True)
ExtractorError: u'[youtube]' is not a valid URL. Set --default-search "ytsearch" (or run  youtube-dl "ytsearch:[youtube]" ) to search YouTube
Joshs-MacBook-Pro:~ jfblagden$ [youtube] N4_3ci9jvis: Downloading video info webpage
-bash: [youtube]: command not found
Joshs-MacBook-Pro:~ jfblagden$ [youtube] N4_3ci9jvis: Extracting video information
-bash: [youtube]: command not found
Joshs-MacBook-Pro:~ jfblagden$ [youtube] N4_3ci9jvis: Downloading MPD manifest
-bash: [youtube]: command not found
Joshs-MacBook-Pro:~ jfblagden$ [download] Destination: “/user/Jfblagden/Movies/youtube-dl/Bring Back MST3K, Part 4 - Joel Shares A Few More Details-%(ext)s”
-bash: syntax error near unexpected token `('
Joshs-MacBook-Pro:~ jfblagden$ [download]  21.0% of 18.73MiB at 355.73KiB/s ETA 00:42
-bash: [download]: command not found’''

You must use proper quotes: preferably single ' or maybe double " but not “ or ”.
What is the purpose of the second % in %(title)s-%.%(ext)s? Either remove it or replace with %% if you want output percent literal.

I copied that section directly from the instructions. I just took out the id and what I thought were its delimiters.

I took out the second ‘%’, but I still get a similar result; the video is put in the same folder, though it finally shows the right extension.

Post the full output with latest command.

[debug] System config: []
[debug] User config: [u'-o', u'\u201c/user/jfblagden/Movies/youtube-dl/%(title)s-.%(ext)s\u201d’]
[debug] Command-line args: [u'-v', u'https://www.youtube.com/watch?v=HN3uXrgNpvw']
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2016.02.22
[debug] Python version 2.7.8 - Darwin-15.3.0-x86_64-i386-64bit
[debug] exe versions: none
[debug] Proxy map: {}
[youtube] HN3uXrgNpvw: Downloading webpage
[youtube] HN3uXrgNpvw: Downloading video information webpage
[youtube] HN3uXrgNpvw: Extracting video information
[youtube] HN3uXrgNpvw: Downloading MPD manifest
[debug] Invoking downloader on u'https://r7---sn-mv-ab5z.googlevideo.com/videoplayback?sparams=dur%2Cid%2Cinitcwndbps%2Cip%2Cipbits%2Citag%2Clmt%2Cmime%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cratebypass%2Crequiressl%2Csource%2Cupn%2Cexpire&requiressl=yes&lmt=1450850208486653&initcwndbps=607500&key=yt6&fexp=9416126%2C9420452%2C9422526%2C9422596%2C9423661%2C9423662%2C9423845%2C9424129%2C9424879%2C9426471%2C9426722%2C9427363%2C9427391%2C9427773%2C9427799%2C9427958%2C9429231&sver=3&signature=DDCDDFB4024EC3BECE3B3AFD5D46BBE1304ABFDD.719E83C66105F01FEC1C1F478D4E61C6C78D3854&ipbits=0&expire=1456613741&upn=zl44rEqqgt0&itag=22&mime=video%2Fmp4&dur=41.099&ms=au&id=o-AFQyYSgY3jJC4zjcYEU3bnF79PkMh4GDK0MoVkPdiv5a&pl=19&mv=m&mt=1456592052&ratebypass=yes&ip=<IP_ADDRESS>&mn=sn-mv-ab5z&mm=31&source=youtube’
[download] Destination: “/user/jfblagden/Movies/youtube-dl/MST3K - The Beatniks - DVD Menu-.mp4”
[download] 100% of 6.03MiB in 00:10

Do you read my posts at all?

You must use proper quotes: preferably single ' or maybe double " but not “ or ”.

I changed the triple quotes to single quotes. Is that better?


GroupByV2 error message

We are seeing some of the GroupByV2 queries fails with ResourceLimitExceededException but error message does not say exactly what was the cause, that makes tuning difficult.
It would be nice if we can log message which says where error happens.

Hi @akashdw  We have been facing similar issues with groupBy V2 where tuning is becoming difficult with similar message for most of the issues - i have replied @gianm about our problems - https://github.com/druid-io/druid/issues/3833.


[Contesting] Added Exchangetype "Serial + Grid + Exchange"

Added Exchangetype "Serial + Grid + Exchange" to support for example the Moon Contest (which also requires #797 )
In addition I added some security in the contesting model (bindings and xss_clean)

Added an additional button which contains the CopyToField feature and an option to choose the sequence of the exchanges. This is handy especially for different types of contest.
For example:
Moon Contest need Serial - Grid - Exchange
The "Frankencontest", a german DOK contest needs: Serial - Exchange (with copy to dok) - Grid
Thx @DB4SCW for this hint
It would be absolutely awful to have the wrong sequence during the contest.
Last TODO is to fix the "Press Space to jump to the next input" feature.


Examples Don't Work

Well, this would be a fine document IF it actually worked.
It's frustrating enough there's not any documentation on Blazor, but to come to
Microsoft's site and try and get stuff to work by following the examples and finding
out it doesn't.....
Let's look at the 1st two examples. Pretty simple, right? So I add AboutModel
to a new Blazor project and instantiate an instance in the default 'IncrementCount'
method.
Inside I make a call to AboutModel.Message. Value returned "null". Not real
Useful.
Next, I try the second example: var username = Context.User.Identity.Name;
And i receive the error: The name 'Context' does not exist in current context.
There needs to either 1) Be more detail or 2) Ensure these examples work.

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

ID: 4fc35621-ae53-cfb5-5eb1-07aefdc5342f
Version Independent ID: 79cb05f8-9ac0-26a8-8434-15de071160c3
Content: Access HttpContext in ASP.NET Core
Content Source: aspnetcore/fundamentals/http-context.md
Product: aspnet-core
Technology: aspnetcore-fundamentals
GitHub Login: @coderandhiker
Microsoft Alias: riande

@jdosser Not sure yet from your remarks what approach you're taking and what you're trying to do ... even if you discovered the Blazor doc node. HttpContext in the MVC/Razor Pages part of a Blazor Server app doesn't have anything to do with Blazor. You mention IncrementCount, but that's part of a Razor component. If you're new to Blazor apps ... how they're set up and how they work ... access the docs in the Blazor node, which should clear a lot of things up for you. Coverage starts here ...
https://docs.microsoft.com/aspnet/core/blazor/


Transforming GET requests without content-type

Hi
Why are we only performing conversion for requests with content-type? Often times GET request does not contain a content-type header, but in these cases, I'd still like to convert response payload to different casing.
https://github.com/sticksnleaves/accent/blob/945659b826b0d1df4d28eb5c6c4d8178f3418704/lib/accent/plugs/response.ex#L86

Currently, Accent only supports sending JSON responses.
Part of the reason is that Plug makes it difficult to mess with the response body. I have to manually decode the JSON body, transform the keys, then re-encode the body back into JSON. I have to know the content-type in order to know that's a safe operation. Otherwise, Accent would crash if the content-type was anything other than JSON.
Hopefully, that makes sense. I'm open to suggestions if you have any.

Why not use the response's content-type, as opposed to the content-type of the request?

Closing due to inactivity.


use alias for entity manager

Should fix #15. @weaverryan, can you confirm this works?

👍 Works great for me in our real app using this branch (without setting the model_manager_name config). Thanks!

 Released v3.0.3.

Haha, whatever - we still love your bundle ❤

What do you think of the split into 2 separate entities (Redirect/NotFound) in 3.0?


fialed to start OpenPAI service

Organization Name:

Short summary about the issue/question:
when I run python paictl.py service start-c ~/.kube/config   in the dev-box container to start the OpenPAI service, I get the following error.
error: unable to recognize "priority-class.yaml": no matches for kind "PriorityClass" in version "scheduling.k8s.io/v1"

Brief what process you are following:

Operating type: Initial deployment
deployment process

# pull dev-box docker image
docker pull docker.io/openpai/dev-box:v1.2.0

# run dev-box
sudo docker run -itd \
        -e COLUMNS=$COLUMNS -e LINES=$LINES -e TERM=$TERM \
        -v /var/run/docker.sock:/var/run/docker.sock \
        -v /pathHadoop:/pathHadoop \
        -v /pathConfiguration:/cluster-configuration  \
        --pid=host \
        --privileged=true \
        --net=host \
        --name=dev-box \
        docker.io/openpai/dev-box:v1.2.0

# login dev-box
sudo docker exec -it dev-box /bin/bash

# the following commands are running in the container
cd /pai
git fetch --tags
git checkout v1.2.0

# edit quick-start.yaml
cd /pai/deployment/quick-start/
cp quick-start-example.yaml quick-start.yaml
vim quick-start.yaml

# generate config file
cd /pai
python paictl.py config generate -i /pai/deployment/quick-start/quick-start.yaml -o ~/pai-config -f

# edit layout.yaml

# deploy Kubernetes
cd pai
python paictl.py cluster k8s-bootup \
  -p ~/pai-config

# push config to Kubernetes
cd pai
python paictl.py config push -p ~/pai-config/ -c ~/.kube/config

# start OpenPai service
python paictl.py service start -c ~/.kube/config

How to reproduce it**:

OpenPAI Environment:

OpenPAI version: v1.2.0

Cloud provider or hardware configuration:

OS (e.g. from /etc/os-release): ubuntu 16.04

Kernel (e.g. uname -a): 4.15.0-118-generic

Hardware (e.g. core number, memory size, storage size, GPU type etc.):

Others:

Hostname
IP
Vcore
Mem
GPU
Role

node01
<IP_ADDRESS>
32
128G
RTX 2080Ti
master,dev-box

node02
<IP_ADDRESS>
32
128G
RTX 2080Ti
worker

node03
<IP_ADDRESS>
32
128G
RTX 2080Ti
worker

node04
<IP_ADDRESS>
32
128G
RTX 2080Ti
worker

Anything else we need to know:
Error log:
2020-06-29 08:04:25,065 [INFO] - deployment.paiLibrary.paiService.service_management_start : Begin to generate service rest-server's template file
2020-06-29 08:04:25,065 [INFO] - deployment.paiLibrary.paiService.service_template_generate : Begin to generate the template file in service rest-server's configuration.
2020-06-29 08:04:25,066 [INFO] - deployment.paiLibrary.paiService.service_template_generate : Create template mapper for service rest-server.
2020-06-29 08:04:25,066 [INFO] - deployment.paiLibrary.paiService.service_template_generate : Done. Template mapper for service rest-server is created.
2020-06-29 08:04:25,066 [INFO] - deployment.paiLibrary.paiService.service_template_generate : Generate the template file /pai/deployment/paiLibrary/paiService/../../../src/rest-server/deploy/rest-server.yaml.template.
2020-06-29 08:04:25,066 [INFO] - deployment.paiLibrary.paiService.service_template_generate : Save the generated file to /pai/deployment/paiLibrary/paiService/../../../src/rest-server/deploy/rest-server.yaml.
2020-06-29 08:04:25,173 [INFO] - deployment.paiLibrary.paiService.service_template_generate : Generate the template file /pai/deployment/paiLibrary/paiService/../../../src/rest-server/deploy/start.sh.template.
2020-06-29 08:04:25,173 [INFO] - deployment.paiLibrary.paiService.service_template_generate : Save the generated file to /pai/deployment/paiLibrary/paiService/../../../src/rest-server/deploy/start.sh.
2020-06-29 08:04:25,183 [INFO] - deployment.paiLibrary.paiService.service_template_generate : Generate the template file /pai/deployment/paiLibrary/paiService/../../../src/rest-server/deploy/configmap-create.sh.template.
2020-06-29 08:04:25,183 [INFO] - deployment.paiLibrary.paiService.service_template_generate : Save the generated file to /pai/deployment/paiLibrary/paiService/../../../src/rest-server/deploy/configmap-create.sh.
2020-06-29 08:04:25,189 [INFO] - deployment.paiLibrary.paiService.service_template_generate : Generate the template file /pai/deployment/paiLibrary/paiService/../../../src/rest-server/deploy/auth-configmap/oidc.yaml.template.
2020-06-29 08:04:25,189 [INFO] - deployment.paiLibrary.paiService.service_template_generate : Save the generated file to /pai/deployment/paiLibrary/paiService/../../../src/rest-server/deploy/auth-configmap/oidc.yaml.
2020-06-29 08:04:25,205 [INFO] - root : It is not a service deploy file! Only support ['DaemonSet', 'Deployment', 'StatefulSet', 'Pod']
2020-06-29 08:04:25,206 [INFO] - deployment.paiLibrary.paiService.service_template_generate : Generate the template file /pai/deployment/paiLibrary/paiService/../../../src/rest-server/deploy/group-configmap/group.yaml.template.
2020-06-29 08:04:25,206 [INFO] - deployment.paiLibrary.paiService.service_template_generate : Save the generated file to /pai/deployment/paiLibrary/paiService/../../../src/rest-server/deploy/group-configmap/group.yaml.
2020-06-29 08:04:25,232 [INFO] - root : It is not a service deploy file! Only support ['DaemonSet', 'Deployment', 'StatefulSet', 'Pod']
2020-06-29 08:04:25,232 [INFO] - deployment.paiLibrary.paiService.service_template_generate : Generate the template file /pai/deployment/paiLibrary/paiService/../../../src/rest-server/deploy/job-exit-spec-config/job-exit-spec.yaml.template.
2020-06-29 08:04:25,232 [INFO] - deployment.paiLibrary.paiService.service_template_generate : Save the generated file to /pai/deployment/paiLibrary/paiService/../../../src/rest-server/deploy/job-exit-spec-config/job-exit-spec.yaml.
2020-06-29 08:04:25,257 [INFO] - root : It is not a service deploy file! Only support ['DaemonSet', 'Deployment', 'StatefulSet', 'Pod']
2020-06-29 08:04:25,258 [INFO] - deployment.paiLibrary.paiService.service_template_generate : Generate the template file /pai/deployment/paiLibrary/paiService/../../../src/rest-server/deploy/k8s-job-exit-spec-config/k8s-job-exit-spec.yaml.template.
2020-06-29 08:04:25,258 [INFO] - deployment.paiLibrary.paiService.service_template_generate : Save the generated file to /pai/deployment/paiLibrary/paiService/../../../src/rest-server/deploy/k8s-job-exit-spec-config/k8s-job-exit-spec.yaml.
2020-06-29 08:04:25,565 [INFO] - root : It is not a service deploy file! Only support ['DaemonSet', 'Deployment', 'StatefulSet', 'Pod']
2020-06-29 08:04:25,566 [INFO] - deployment.paiLibrary.paiService.service_template_generate : The template file of service rest-server is generated.
2020-06-29 08:04:25,566 [INFO] - deployment.paiLibrary.paiService.service_management_start : Begin to start service: [ rest-server ]
2020-06-29 08:04:25,567 [INFO] - deployment.paiLibrary.paiService.service_management_start : Begin to execute service rest-server's start script.
W0629 08:04:25.671594   37367 helpers.go:535] --dry-run is deprecated and can be replaced with --dry-run=client.
configmap/group-configuration configured
W0629 08:04:25.867507   37415 helpers.go:535] --dry-run is deprecated and can be replaced with --dry-run=client.
configmap/k8s-job-exit-spec-configuration configured
2020-06-29 08:04:26,990 [INFO] - legacy_user_migrate.py:217 : Starts to migrate legacy user data from etcd to kubernetes secrets
2020-06-29 08:04:26,993 [INFO] - legacy_user_migrate.py:233 : Etcd data has already been transferred to k8s secret
2020-06-29 08:04:27,842 [INFO] - user_v2_migrate.py:287 : Legacy data has already been transferred from v1 to v2. Skip it.
error: unable to recognize "priority-class.yaml": no matches for kind "PriorityClass" in version "scheduling.k8s.io/v1"
2020-06-29 08:04:28,245 [ERROR] - deployment.paiLibrary.common.linux_shell : Failed to execute the start script of service rest-server
2020-06-29 08:04:28,246 [ERROR] - deployment.paiLibrary.paiService.service_management_start : Failed to start service rest-server
2020-06-29 08:04:28,247 [INFO] - deployment.paiLibrary.paiService.service_management_start : -----------------------------------------------------------
2020-06-29 08:04:28,247 [ERROR] - deployment.paiLibrary.paiService.service_management_start : Have retried 5 times, but service rest-server doesn't start. Please check it.

There's an error : error: unable to recognize "priority-class.yaml": no matches for kind "PriorityClass" in version "scheduling.k8s.io/v1".
Looks like your k8s doesn't support priority class. Could you provide the version of Kubernetes in your cluster?

v1.9.9

We recommend you to use kubespray 2.1.1 to deploy Kubernetes 1.14. v1.9.9 is too old.

@hzy46, could we add a precheck for the required version?

We recommend you to use kubespray 2.1.1 to deploy Kubernetes 1.14. v1.9.9 is too old.

OK, I`ll try to install it manually. Should I install the Nvidia driver and nvidia-container-runtime on every node before deploying OpenPAI.

Yes. You can check our document for requirements: https://openpai.readthedocs.io/en/latest/manual/cluster-admin/installation-guide.html
We provide a script quick-start-kubespray.sh for installing Kubernetes. But you can install manually if you prefer so.

When I run /bin/bash requirement.sh -m ~/master.csv -w ~/worker.csv -c ~/config checking requirements, I get the following error:
TASK [requirement/worker : Remove unnecessary char in the end of the output] *************************************************************************************************************************************
ok: [gpu-cluster-node004] => (item=)
ok: [gpu-cluster-node004] => (item="nvidia")
ok: [gpu-cluster-node003] => (item=)
ok: [gpu-cluster-node003] => (item="nvidia")

TASK [requirement/worker : Get Default Runtime] ******************************************************************************************************************************************************************
skipping: [gpu-cluster-node004] => (item=)
skipping: [gpu-cluster-node003] => (item=)
ok: [gpu-cluster-node004] => (item=nvidia)
ok: [gpu-cluster-node003] => (item=nvidia)

TASK [requirement/worker : Check the default runtime is set correctly] *******************************************************************************************************************************************
ok: [gpu-cluster-node004]
ok: [gpu-cluster-node003]

TASK [requirement/worker : Worker machines' os is not ubuntu.] ***************************************************************************************************************************************************
skipping: [gpu-cluster-node004]
skipping: [gpu-cluster-node003]

PLAY [all,localhost] *********************************************************************************************************************************************************************************************

TASK [Gathering Facts] *******************************************************************************************************************************************************************************************
ok: [localhost]
ok: [gpu-cluster-node002]
ok: [gpu-cluster-node004]
ok: [gpu-cluster-node003]

TASK [display unmet requirements] ********************************************************************************************************************************************************************************
skipping: [gpu-cluster-node002]
skipping: [localhost]
fatal: [gpu-cluster-node004]: FAILED! => {"changed": false, "msg": "The following requirements are not met: The default runtime is not set correctly"}
fatal: [gpu-cluster-node003]: FAILED! => {"changed": false, "msg": "The following requirements are not met: The default runtime is not set correctly"}
	to retry, use: --limit @/home/openpai/pai/contrib/kubespray/environment-check.retry

PLAY RECAP *******************************************************************************************************************************************************************************************************
gpu-cluster-node002        : ok=16   changed=0    unreachable=0    failed=0
gpu-cluster-node003        : ok=23   changed=0    unreachable=0    failed=1
gpu-cluster-node004        : ok=23   changed=0    unreachable=0    failed=1
localhost                  : ok=9    changed=0    unreachable=0    failed=0

Failed: There are unmet requirements in your cluster, the installation will be very likely to fail.

This is my daemon file, it`s the same as the guide shows. I do not know where the problem is.
root@gpu-cluster-node003:~$ cat /etc/docker/daemon.json
{
  "default-runtime": "nvidia",
  "runtimes": {
      "nvidia": {
          "path": "/usr/bin/nvidia-container-runtime",
          "runtimeArgs": []
      }
  }
}

Maybe related to https://github.com/microsoft/pai/issues/4957 You can ignore the check.
I will take a look at this issue recently.

@hzy46, could we add a precheck for the required version?

Yes, we can add a kubernetes version check in service-boot.sh (e.g. after this line: https://github.com/microsoft/pai/blob/98fd56a70e27a913852075158e68fb5459bde5db/contrib/kubespray/script/service-boot.sh#L41).

Maybe related to #4957 . You can ignore the check.
I will take a look at this issue recently.

Sorry, I ignore the check but meet a new problem.
openpai@gpu-cluster-node001:~/pai/contrib/kubespray$ /bin/bash quick-start-service.sh -m ~/master.csv -w ~/worker.csv -c ~/config
worker list file path: /home/openpai/worker.csv
master list file path: /home/openpai/master.csv
cluster config file path: /home/openpai/config
Branch Name v1.2.0
OpenPAI Image Tag v1.2.0
5c0b1455d656d39e585a5a0251611f679aa03d71a6b8fd9b6cc5f8e4fb1a728c
The connection to the server localhost:8080 was refused - did you specify the right host or port?

Did you run quick-start-kubespray.sh? Looks like the k8s is not started.

Maybe related to #4957 . You can ignore the check.
I will take a look at this issue recently.

Sorry, I ignore the check but meet a new problem.
openpai@gpu-cluster-node001:~/pai/contrib/kubespray$ /bin/bash quick-start-service.sh -m ~/master.csv -w ~/worker.csv -c ~/config
worker list file path: /home/openpai/worker.csv
master list file path: /home/openpai/master.csv
cluster config file path: /home/openpai/config
Branch Name v1.2.0
OpenPAI Image Tag v1.2.0
5c0b1455d656d39e585a5a0251611f679aa03d71a6b8fd9b6cc5f8e4fb1a728c
The connection to the server localhost:8080 was refused - did you specify the right host or port?

I find that the port 8080 is only listening on <IP_ADDRESS>. how to change it to <IP_ADDRESS>
openpai@gpu-cluster-node001:~/pai/contrib/kubespray$ netstat -tnulp | grep 8080
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 <IP_ADDRESS>:8080        <IP_ADDRESS>:*               LISTEN      -

Did you run quick-start-kubespray.sh? Looks like the k8s is not started.

Yes, I have ran it.

Did you run quick-start-kubespray.sh? Looks like the k8s is not started.

Yes, I have ran it.

TASK [download : set_container_facts | Define path of image] *****************************************************************************************************************************************************
Thursday 15 October 2020  15:27:50 +0800 (0:00:00.151)       0:03:19.342 ******
ok: [gpu-cluster-node004]
ok: [gpu-cluster-node002]
ok: [gpu-cluster-node003]

TASK [download : download_container | Determine if image is in cache] ********************************************************************************************************************************************
Thursday 15 October 2020  15:27:51 +0800 (0:00:00.174)       0:03:19.516 ******

TASK [download : download_container | Set fact indicating if image is in cache] **********************************************************************************************************************************
Thursday 15 October 2020  15:27:51 +0800 (0:00:00.127)       0:03:19.644 ******

TASK [download : download_container | Upload image to node if it is cached] **************************************************************************************************************************************
Thursday 15 October 2020  15:27:51 +0800 (0:00:00.081)       0:03:19.725 ******

TASK [download : download_container | Load image into docker] ****************************************************************************************************************************************************
Thursday 15 October 2020  15:27:51 +0800 (0:00:00.102)       0:03:19.828 ******

TASK [download : download_container | Prepare container download] ************************************************************************************************************************************************
Thursday 15 October 2020  15:27:51 +0800 (0:00:00.126)       0:03:19.954 ******
included: /home/openpai/pai-deploy/kubespray/roles/download/tasks/check_pull_required.yml for gpu-cluster-node004, gpu-cluster-node002, gpu-cluster-node003

TASK [download : check_pull_required |  Generate a list of information about the images on a node] ***************************************************************************************************************
Thursday 15 October 2020  15:27:51 +0800 (0:00:00.201)       0:03:20.156 ******
ok: [gpu-cluster-node002 -> <IP_ADDRESS>]
ok: [gpu-cluster-node004 -> <IP_ADDRESS>]
fatal: [gpu-cluster-node003]: UNREACHABLE! => {"censored": "the output has been hidden due to the fact that 'no_log: true' was specified for this result", "changed": false}

NO MORE HOSTS LEFT ***********************************************************************************************************************************************************************************************
	to retry, use: --limit @/home/openpai/pai-deploy/kubespray/cluster.retry

PLAY RECAP *******************************************************************************************************************************************************************************************************
gpu-cluster-node002        : ok=152  changed=16   unreachable=0    failed=0
gpu-cluster-node003        : ok=131  changed=14   unreachable=1    failed=0
gpu-cluster-node004        : ok=149  changed=14   unreachable=0    failed=0
localhost                  : ok=1    changed=0    unreachable=0    failed=0

I am so happy that I finally successfully deployed OpenPAI after reinstalling the system. I waited for almost an hour after running /bin/bash quick-start-service.sh -m ~/master.csv -w ~/worker.csv -c ~/config
OpenPAI is successfully deployed, please check the following information:
Kubernetes cluster config :     ~/pai-deploy/kube/config
OpenPAI cluster config    :     ~/pai-deploy/cluster-cfg
OpenPAI cluster ID        :     pai
Default username          :     admin
Default password          :     admin-password

You can go to http://<IP_ADDRESS>, then use the default username and password to log in.

Congratulations!

What causes the long running time in your opinion? I guess maybe it is due to the downloading time of our docker images.

Yes, It costs too much time downloading the docker images.

@hzy46 I just see 1 GPU but in fact, we have 2 GPUs in every node. how to change the GPU count? And I use different CPUs in the cluster, how to set it up?

I'm not sure why pai generates wrong config for you. But you can refer to https://openpai.readthedocs.io/en/latest/manual/cluster-admin/how-to-set-up-virtual-clusters.html and https://github.com/microsoft/hivedscheduler/blob/master/doc/user-manual.md to set up proper resource for your virtual cluster.

After modification of the configuration, I use ./paictl.py service stop -n rest-server hivedscheduler to apply the settings but failed.
openpai@dev-box:~/pai$ ./paictl.py service stop -n rest-server hivedscheduler
Traceback (most recent call last):
  File "./paictl.py", line 29, in <module>
    from deployment.paiLibrary.common import file_handler
  File "/home/autox-it/pai/deployment/paiLibrary/common/file_handler.py", line 19, in <module>
    import yaml
ImportError: No module named yaml

And after installing yaml, I got the new error ImportError: No module named jinja2

Did you use the paictl in a dev box container?

See our doc: https://openpai.readthedocs.io/en/latest/manual/cluster-admin/basic-management-operations.html#pai-service-management-and-paictl

Did you use the paictl in a dev box container?

No, I run the command in the dev-box machine, no container is running on the host.

I recommend you to leverage our dev box docker image to avoid environment-related problems.

How to set up https access for OpenPAI? I want to access Kubernetes dashboard.

You can refer to https://openpai.readthedocs.io/en/latest/manual/cluster-admin/how-to-manage-users-and-groups.html#pylon-prepare-your-certificate-for-https-self-sign-cert-as-an-example .
I'm refactoring the document of this part to let it become more clear.


Update comments for xspec.schematron.preprocessor.step* Ant properties

This pull request derives from #554. So needs to be handled after that.

Closes #555.
This pull request just updates some comments to remind developers of compatibility.

@cirulls
Merged this update of comments.
Thanks @galtm for the review.


Notarize app releases for macOS Catalina (and beyond)

Please consider submitting the app to be notarized by Apple for Gatekeeper.
While users can get around it by telling macOS to open it anyway, it would be nice if the app were notarized. From looking at the developer ID page and the more detailed instructions, it seems like a fairly simple step to add to a release checklist or even a script.
I often recommend the app to folks new to the Python data science ecosystem (especially for the quick view functionality), and this would eliminate one (small) hurdle for them.

You're right, it would be fairly simple thing to do. But it requires me to enroll in the Apple Developer Program, which is $99 per year. I'm wondering how other free and open source projects deal with notarization?

I'm wondering how other free and open source projects deal with notarization?

What @amadeuspzs said is right!
One thing to add is that Mac Mouse Fix has a little banner at the top of the official website that says „If you have trouble opening the app click here”. It links to a small guide that shows people how to work around the lack of Notarization.
Before I had that in place I got lots of messages from people having trouble opening the app, but this seems to work pretty well.

Of all of the open source stuff I run, this is the single thing that isn't notarized. The reality is that it makes it frustrating for users, and it also throws up a scary warning for new users to the Jupyter ecosystem.
If you're not willing to do it, maybe see if the VS Code devs will take the quicklook plugin.


Music Collection is not displayed correctly

What happened?
The music collection is not displayed correctly. The browser only displays the cover image of the collection. The music format (mp3) is not displayed.
Please reproduce in steps
https://github.com/kodadot/nft-gallery/assets/81104034/12705db0-d27b-4dc8-a4c2-4413a8bf606a
Expected Behavior
I was expecting a display similar to the Sungullar
What browsers are you seeing the problem on?
Chrome, Firefox
At which address did you encounter bug?
rmrk2.kodadot.xyz, beta.kodadot.xyz, kodadot.xyz
Are you logged in?
Yes
Which wallet you are using?
PolkadotJS
Screenshots
https://github.com/kodadot/nft-gallery/assets/81104034/0dbd02bc-69b3-41e3-822f-41fa6a93cd4b
Relevant log output
No response
Payment link for reward
https://beta.kodadot.xyz/transfer?target=FqCJeGcPidYSsvvmT17fHVaYdE2nXMYgPsBn3CP9gugvZR5&usdamount=0&donation=true
Code of Conduct

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

👋


💡 Waybar features from CLI?

Summary
How would I go about things like enabling do not disturb or disabling sleep from the CLI, which I usually do from the waybar buttons?
Sometimes the waybar mysteriously vanishes, or I simply prefer not to use the mouse.
Drawbacks

Implementation idea
No response
Will you be able to contribute a PR for this?

[ ] Yes I will be able to get that feature a lot quicker.

I think we have to talk about the items individually, as most of them already are command line tools:

[ ] rofi
[ ] workspace switcher
[ ] language switcher
[ ] open github issues (gh cli)
[ ] clipboard (clipboard)
[ ] zeit (zeit)
[ ] cpu (htop)
[ ] temperature (sensors)
[ ] memory (htop)
[ ] battery
[ ] network (nmtui)
[ ] bluetooth (bluetuith)
[ ] playerctl (playerctl)
[ ] idle_inhibitor
[ ] dnd
[ ] pulseaudio (pulseaudio)
[ ] backlight (light)
[ ] adaptive light (wluma)
[ ] sunset (wlsunset)
[ ] pacman (yay,pacman,pamac)

I guess the above list should be part of the documentation, makes it much easier to apply customization

Feel free to contribute ;-)


Issue with k8s.io/docs/concepts/cluster-administration/cloud-providers/

Add a New cloud Provider of Alibaba Cloud
Alibaba Cloud
If you wish to use the external cloud provider, its repository is kubernetes/cloud-provider-alibaba-cloud(link:https://github.com/kubernetes/cloud-provider-alibaba-cloud)
Node Name
The AlibabaCloudProvider use ${region-id}.${instance-id} as the name of the Kubernetes Node object which is determined by the kubelet overridden with --hostname-override=${region-id}.${instance-id} --provider-id=${region-id}.${instance-id}

/sig cloud provider

sig/cloud

/sig cloud-provider

See PR #18255

Alibaba cloud is now part of the cloud providers page - ref https://github.com/kubernetes/website/pull/20858.

/remove-lifecycle rotten

/close

cc @sftim for /close


Missing, according to Wiki

Rather than creating separate issues, I thought I would point out some of the most used things I miss from Ramda when coming to Sanctuary and hopefully hear about whether they're on the roadmap, been discussed, or should:

tap: #504
assocPath: I use it all the time, ImmutableJS has a similar concept, so does Clojure and others.
cond: Both Clojure and Ramda have it, and it's really helpful in replacing if statements and switch/case.
construct/invoker/partial/partialRight: We have to deal with non-functional-friendly libraries and having helpers that would help us make functions like these would be really helpful.
into.
isEmpty, isNil, propEq and pathEq are really good with filters.
lift2/3 are missing from the Wiki in the Sanctuary side.
memoize Should I just give up on this? ;)
mergeDeepRight/mergeDeepLeft.
pick/select-keys.
reject I know it's filter(negate(f)) but still.

Will update if you guys want me to.
EDIT: removed ifElse

assocPath: I use it all the time, ImmutableJS has a similar concept, so does Clojure and others.

Ramda has ended up with a large number of functions for manipulating specific parts of a nested data structure. There's a great deal of duplication as a result of supporting lens-based and non-lens-based approaches. I would like to avoid this duplication by using lenses exclusively. The user will need to write slightly more code, but the code will me more powerful (since a lens can act as a getter, a setter, and an updater). Additionally, the API will have a small surface area, making it easy to learn.

cond: Both Clojure and Ramda have it, and it's really helpful in replacing if statements and switch/case.

I added this function to Ramda several years ago, and have used it just a handful of times since. I do not find the function compelling. Consider the example from the R.cond documentation:
var fn = R.cond([
  [R.equals(0),   R.always('water freezes at 0°C')],
  [R.equals(100), R.always('water boils at 100°C')],
  [R.T,           temp => 'nothing special happens at ' + temp + '°C']
]);

I would prefer to see the function written with nested ternary expressions:
//    fn :: Number -> String
const fn = temp =>
  temp === 0    ? 'water freezes at 0°C' :
  temp === 100  ? 'water boils at 100°C' :
  /* otherwise */ 'nothing special happens at ' + temp + '°C';

construct/invoker/partial/partialRight: We have to deal with non-functional-friendly libraries and having helpers that would help us make functions like these would be really helpful.

For me these functions contributed to an unhealthy obsession with point-free code. Consider this code I wrote several years ago:
var getComments =
R.pipe(R.partialRight(esprima.parse, [{comment: true, loc: true}]),
       R.prop('comments'));

I rewrote the function during the weekend and find the result much clearer:
function getComments(input) {
  return esprima.parse(input, {comment: true, loc: true}).comments;
}

into.

Let's discuss this in #478.

isEmpty, isNil, propEq and pathEq are really good with filters.

Could you provide a couple of examples of your use of R.isEmpty?
Instead of isNil I would use:
x => x == null

Sanctuary is designed in such a way that it's rarely necessary to reference null or undefined. When it is necessary, I would prefer to see x == null so the offensive code stands out.
One could compose S.isJust and S.toMaybe, but a lambda is clearer.
Instead of propEq/pathEq I would use:
o => S.equals ([1, 2, 3]) (o.x)
o => S.equals ([1, 2, 3]) (o.x.y.z)

One could compose S.equals and S.prop/S.props, of course, but a lambda is clearer.

lift2/3 are missing from the Wiki in the Sanctuary side.

The mapping is from Ramda functions to Sanctuary functions. A mapping from Sanctuary functions to Ramda functions would hopefully never be used. ;)
You're welcome to update the wiki as you see fit.

memoize Should I just give up on this? ;)

Have you considered creating a dedicated npm package for this?

mergeDeepRight/mergeDeepLeft.

I can't imagine providing these functions as they're not well defined, as whichever behaviour we were to choose would disappoint half of the potential users.

pick/select-keys.

I'm 100% with you on this! I'd love to see this function:
S.pick :: Array String -> StrMap a -> StrMap a

Would you like to submit a pull request?

reject I know it's filter(negate(f)) but still.

This is coming in the next release. See #475 for details.

I would like to avoid this duplication by using lenses exclusively.

I wasn't aware lenses were coming, as I seem to recall an earlier discussion where I was told it wasn't on the roadmap (I might've asked for lensPath).
For some pipeline operations, if you're "treating mutable data as immutable" assocPath comes handy since your building an object up, it might not get the approval from really-functional programmers, but I've since this used quite a lot.

I would prefer to see the function written with nested ternary expressions

IMHO most users wouldn't, and AirBnB's (and others) eslint would scream at us.
In addition, cond is most beneficial when the conditionals themselves are different.

For me these functions contributed to an unhealthy obsession with point-free code.
I agree, except we still have to deal with JS Date, String methods not in ramda, plus the plethora of frameworks/libraries out there. While I can concur we should probably write our own functions or not resort to point-free at all, it sticks out if you're doing this in the middle of a comp and defeats the purpose since I'm now thinking about what that code does and what the arguments are as opposed to being declarative about it.

The mapping is from Ramda functions to Sanctuary functions. A mapping from Sanctuary functions to Ramda functions would hopefully never be used. ;)
I meant there's lift2 and lift3 on Sanctuary and the Sanctuary side for it it's different, I'm honestly not sure whether this was by design (they're indeed different), or something that needs to be added. I'd be happy to that if it's the latter.

Could you provide a couple of examples of your use of R.isEmpty?
I use it a lot with arrays. I agree isNil is worthless if all your data is "safe" aka Sanctuary-safe, but unfortunately, it's not when you're transitioning.

Have you considered creating a dedicated npm package for this?
Oh dear, and here I was about to suggest trampoline. 😂 I don't see why memoize is any different from curry, flip, lift and other HOFs already present in the library.

I can't imagine providing these functions as they're not well defined, as whichever behavior we were to choose would disappoint half of the potential users.
I'd be happy if we had to provide a combination function similar to how transducers work. No default behavior but the fact that we don't have to care about traversing anymore would be enough for me.

if you're "treating mutable data as immutable" assocPath comes handy since your building an object up

I agree. At some point, though, we need to say no to handy functions. Currently assocPath is a handy function I don't think Sanctuary should provide, but I'm open to having my mind changed. :)

cond is most beneficial when the conditionals themselves are different

What do you mean by this? Could you provide an example?

there's lift2 and lift3 on […] the Sanctuary side

R.lift is a complex monstrosity, in my view. Sanctuary provides S.map for lifting unary functions, S.lift2 for lifting binary functions, and S.lift3 for lifting ternary functions.

I use [R.isEmpty] a lot with arrays

Had you considered using S.equals ([]) in such cases?

I don't see why memoize is any different from […] other HOFs already present in the library

There are multiple approaches, each with pros and cons. If we serialize arguments as keys in a string map, we limit ourselves to serializable values. If we use an approach which handles every possible value we may end up with a comparison algorithm which is slower than the wrapped function. ;)

I'd be happy if we had to provide a combination function similar to how transducers work. No default behavior but the fact that we don't have to care about traversing anymore would be enough for me.

I'd love to hear more about this in #478.


Improve logs around Developer mode and pull snapshot if local device has changed

Description
This PR covers the agreed actions in #2323

Improves logging (into/out-of dev mode, enable/disable of tunnel)
Improves the switching operation: On top of the existing "poll for mode/state", pushed the Dev Mode change instruction to the device via mqtt immediately.
Does not affect or impact how the current device-agent behaves when this "push" operation occurs
Re-applies the target snapshot, when switching off developer mode (but only if a change is determined).

Logs after changes (with #comments to highlight improvements)
29/06/2023 09:51:49    [info]    Version: 1.9.2
29/06/2023 09:51:49    [info]    Mode: Device Mode
29/06/2023 09:51:49    [info]    Device: OWXVvjYVBJ
29/06/2023 09:51:49    [info]    ForgeURL: http://<IP_ADDRESS>:3000
29/06/2023 09:51:49    [info]    Instance      : 940152c5-613b-423d-8cad-ffea6f267581
29/06/2023 09:51:49    [info]    Snapshot      : Xj7YJqyD1z
29/06/2023 09:51:49    [info]    Settings      : d412590677043736302bb65b9cb8ce99edb53e7132100ce8ee407d849c200f75
29/06/2023 09:51:49    [info]    Operation Mode: autonomous
29/06/2023 09:51:49    [info]    Starting MQTT heartbeat thread. Interval: 30s (±5s)
29/06/2023 09:51:49    [info]    Starting Node-RED
29/06/2023 09:51:49    [info]    Welcome to Node-RED
===================
29/06/2023 09:51:49    [info]    Node-RED version: v3.1.0-beta.2
# <snip for brevity>
29/06/2023 09:51:51    [info]    Server now running at http://<IP_ADDRESS>:1880/device-editor/
29/06/2023 09:51:51    [info]    Starting flows
29/06/2023 09:51:51    [info]    Started flows
29/06/2023 09:51:51    [info]    Project Link nodes connected
# ^^^^ Node-RED started ^^^^

# NEW: Switching on developer mode
29/06/2023 09:52:00    [info]    Switching on developer mode
# NEW: Enabling remote editor access
29/06/2023 09:52:05    [info]    Enabling remote editor access
29/06/2023 09:52:05    [info]    Connecting editor tunner to ws://<IP_ADDRESS>:3000/api/v1/devices/OWXVvjYVBJ/editor/comms/ffde_OWXVvjYVBJ_BXWBARYN0tthSd_YemrtHA
# NEW: Disabling remote editor access
29/06/2023 09:52:15    [info]    Disabling remote editor access
29/06/2023 09:52:15    [info]    Editor tunnel closed
# NEW: Switching off developer mode
29/06/2023 09:52:17    [info]    Switching off developer mode

# NEW: Switching on developer mode again
29/06/2023 09:52:22    [info]    Switching on developer mode
# NEW: Enabling remote editor access again
29/06/2023 09:52:24    [info]    Enabling remote editor access
29/06/2023 09:52:24    [info]    Connecting editor tunner to ws://<IP_ADDRESS>:3000/api/v1/devices/OWXVvjYVBJ/editor/comms/ffde_OWXVvjYVBJ_f2R5kgDRQsG1oEGKcKXP0Q
# Flow modification made in the remote device editor
29/06/2023 09:52:34    [info]    Stopping modified nodes
29/06/2023 09:52:34    [info]    Stopped modified nodes
29/06/2023 09:52:34    [info]    Updated flows
29/06/2023 09:52:34    [info]    Starting modified nodes
29/06/2023 09:52:34    [info]    Started modified nodes
29/06/2023 09:52:47    [info]    Capturing device snapshot
# Closed tunnel
29/06/2023 09:52:50    [info]    Editor tunnel closed code=1005 reason=
29/06/2023 09:52:50    [info]    Editor tunnel closed
# NEW: Disabling remote editor access
29/06/2023 09:52:50    [info]    Disabling remote editor access
# NEW: Detected a change in the project, flagging for reload
29/06/2023 09:52:50    [info]    Current Node-RED files differ from the Platform snapshot, a reload will be requested
# NEW: Switching off developer mode
29/06/2023 09:52:50    [info]    Switching off developer mode
# NEW: Reload request being actioned
29/06/2023 09:52:50    [info]    Reload snapshot requested
29/06/2023 09:52:50    [info]    Stopping current snapshot
29/06/2023 09:52:50    [info]    Stopping Node-RED
29/06/2023 09:52:51    [info]    Stopped Node-RED
29/06/2023 09:52:51    [info]    Instance: 940152c5-613b-423d-8cad-ffea6f267581
29/06/2023 09:52:51    [info]    Snapshot: Xj7YJqyD1z
29/06/2023 09:52:51    [info]    Settings: d412590677043736302bb65b9cb8ce99edb53e7132100ce8ee407d849c200f75
29/06/2023 09:52:51    [info]    Updating configuration files
29/06/2023 09:52:51    [info]    Installing dependencies
02/01/1970 23:53:22    [info]    Starting Node-RED
29/06/2023 09:52:57    [info]    Welcome to Node-RED
===================
29/06/2023 09:52:57    [info]    Node-RED version: v3.1.0-beta.2
# <snip for brevity>
29/06/2023 09:51:51    [info]    Server now running at http://<IP_ADDRESS>:1880/device-editor/
29/06/2023 09:52:59    [info]    Starting flows
29/06/2023 09:52:59    [info]    Started flows
29/06/2023 09:52:59    [info]    Project Link nodes connected

New tests:
  Agent
    setState
      ✔ Checks in when switching to developer mode (HTTP) (104ms)
      ✔ Checks in when switching to developer mode (MQTT) (104ms)
      ✔ reloads latest snapshot from platform when switching off developer mode (if flows modified)
      ✔ does not reload latest snapshot from platform when switching off developer mode (if flows are unchanged)

TODO

[x] tests
[x] check documentation algins with this change

Related Issue(s)
https://github.com/flowforge/flowforge/issues/2323
Checklist

[x] I have read the contribution guidelines
[x] Suitable unit/system level tests have been added and they pass
[x] Documentation has been updated

[ ] Upgrade instructions
[ ] Configuration details
[ ] Concepts

[ ] Changes flowforge.yml?

[ ] Issue/PR raised on flowforge/helm to update ConfigMap Template
[ ] Issue/PR raised on flowforge/CloudProject to update values for Staging/Production

Labels

[ ] Backport needed? -> add the backport label
[ ] Includes a DB migration? -> add the area:migration label

@knolleary requested 2nd review.
Only the 2x differing log formats have been updated:

Revert the log fn formatting
Align the log fn to match the NRLog function


how to compile after saving source and resource folders?

hello
i decompiled an apk file by jadx-gui and using "save all (ctrl + s)" for saving source
now i have 2 folders and edited my source but how can i convert back to apk file?

IMHO Jadx is the wrong tool for modifying the code of an Android app. Especially because often Jadx can not decompile 100% of the code of an Android app. Usually at least one method can't be decompiled correctly.
Therefore if you want to modify the code of an app I would suggest to use apktool. However apktool does only decompile the code to Smali which is not as easy to understand as Java. If you only want to do very small modifications you can do that directly in Smali.
If you still want to give the decompiled code of Jadx a try you need Android Studio. Copy the decompiled code and the resources into a new Android app project. Then try to identify the used libraries and delete the decompiled code of each library (the original library is always better than the decompiled code). Add each identified library as gradle implementation dependency.


Enable the Discussions tab

Would it be possible to enable the "Discussions" tab on GitHub? This would provide a good place to share designs and get feedback.
Thanks!

Done !

Thanks!


Upgrade vue-demi version and remove peerDependencies and peerDependenciesMeta

Due to the @vue/composition-api peer dependency, Nuxt 3 users cannot install @floating-ui/vue without the --force flag. The installation fails with the error:
npm ERR! Conflicting peer dependency<EMAIL_ADDRESS>npm ERR! node_modules/vue
npm ERR!   peer vue@">= 2.5 < 2.7" from<EMAIL_ADDRESS>npm ERR!   node_modules/@vue/composition-api
npm ERR!     peerOptional<EMAIL_ADDRESS>from<EMAIL_ADDRESS>npm ERR!     node_modules/@floating-ui/vue
npm ERR!       @floating-ui/vue@"*" from the root project

Context: https://github.com/floating-ui/floating-ui/discussions/2339
This configuration of peerDependencies is recommended by vue-demi. But @vueuse/core doesn't follow this recommendation. I have found couple issues about Yarn warnings like this https://github.com/vueuse/vueuse/issues/2781.
I'm not sure that removing of peerDependencies and peerDependenciesMeta is the right way, but it will allow Nuxt 3 users to install @floating-ui/vue.
Do you have any thoughts on this?

Following what @vueuse/core does seems good to me. That includes the semver range for vue-demi to prevent it from being installed multiple times due to its v0 status?

Sure, updated.

I think >=0.13.0 might be better based on npm downloads to reduce dupes for people? (Since we don't need 0.14.x features, presumably?)

I agree, we don't need the features of 0.14.x now.


Map: need an ez time filter component

This has been discussed in dataviz. requirements, partly subject to some change/ finalization, are these:

have a variable input
means to indicate for which values that variable does or doesnt have data visible on the map (using the width of the slider)

is this a separate component?
needs legend as well

has text inputs but also two thumbs on the slider, and either can define range start and ends
an easy means to add/ remove multiple ranges
potentially a means to take the defined ranges to a faceted layout

see tentative ex (with obvious room for ux improvements) here.

worth noting, we may choose to phase these features in. their exact priority order isnt determined yet.

we have updated mockups

whoever works on this, just give me a ping when you need the icon!

@asizemore Thank you for your kind consideration. I think that the icon is not that urgent as I will be able to use any other icon for the time being - either way, I didn't even start SAM part either :)


🛠 switch to using yarn in our Grunt tasks

requires https://github.com/TryGhost/Ghost/pull/8261

use yarn install instead of npm install in our grunt init task (used in Ghost's grunt init via subgrunt)

Coverage remained the same at 74.645% when pulling 0822a2d6ee0a37003129104870bb920026c64390 on kevinansfield:yarn-install into 0a7154d1c4cf570b3f4579af74c2af0709a22ebb on TryGhost:master.