Wrong type comparison in Laravel 5.3

Hi,
I tried this package in a Laravel 5.3 app and found that the assets url where compared against the 'type' (style, script, image) in stead of the extension (.CSS, .JS, etc..).
This change fixed it for me:
https://github.com/appstract/laravel-HTTP2ServerPush/commit/724269aa4b90000453a78315ea8f323f295f642d
But I don't know if this will play nice with older Laravel versions?

I don't think your commit will work on all laravel versions.

@GrahamCampbell
It most likely will only work 5.3+5.4. However this is indeed a valid fix, as the package does not work in these versions as is.
A suggestion would be to make a new major version with this fix.

Having the same issue and would love to see this fixed :).

Hey guys! Sorry I haven't responded to this sooner! Been busy dealing with a new member of our little fam! Going to take a look at this and see what I can do for you. Thanks for your support and for your patience!

should be fixed in 51735807f342ad02a5a3f7713bb31ff32dc9e863
Tagged a new version v2.0.0 for now which should fix the issues. Thanks!

Thanks @JacobBennett, works like a charm.

@JacobBennett thanks for the response! Have you ever considered to transfer the package to someone else due to the lack of free time to spend on it? We would like to use this package in our future projects and like to change a thing or two. So maybe instead of using our own fork we could take it over from you?
All the luck to you and your family!

@JacobBennett that's cool 👍


Rebuilding Embeddings

If I want to clear out everything and rebuild all the embeddings what is the best approach?
For example a website may change over time and you may want to clear out the website embeddings or the entire thing and rebuild it weekly, monthly etc

Hello, you can do that with the following methods available within RAGApplication

deleteEmbeddingsFromLoader(uniqueLoaderId, true) - this can be used to remove the embeddings from a single loader
deleteAllEmbeddings(true) - this will remove all the embeddings from all loaders

The parameter true is constant and is used to ensure you really mean to delete the embeddings. Not passing it or passing false would print a console warning without deleting the embeddings.
Hope this helps.

is there anyway to add a webload (url) incrementally, and update the build? something along these lines?
    await ragApplication
        .setTemperature(0)
        .addLoader(new WebLoader({ url: url })) // Use the extracted URL
        .setVectorDb(new LanceDb({ path: './db' }))
        .build();

Yes. Once you get an instance of ragapplcation, you can call the addLoader method on it at any time to add a new loader. In fact, I would recommend you add all loaders dynamically after build.


is_manifold on a Compound object throws exception

The property is_mainfold throws an exception stating that Export3MF is not defined when called on a Compound object, Pylint should have caught this in my opinion.
I am not sure what the goal is here.  With some small guidance regarding the intentions, I might be able to fix it.
Reproduction
from build123d import Box

Box(10, 10, 10).is_manifold

Error:
Traceback (most recent call last):
  File "/home/ruud/git/gridfinity_build123/test.py", line 3, in <module>
    Box(10, 10, 10).is_manifold
  File "/home/ruud/git/gridfinity_build123/.venv/lib/python3.11/site-packages/build123d/topology.py", line 1493, in is_manifold
    return all([Export3MF.is_manifold(sub_shape) for sub_shape in self])
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ruud/git/gridfinity_build123/.venv/lib/python3.11/site-packages/build123d/topology.py", line 1493, in <listcomp>
    return all([Export3MF.is_manifold(sub_shape) for sub_shape in self])
                ^^^^^^^^^
NameError: name 'Export3MF' is not defined

Thanks for pointing this out - a problem from a left-over change.


fix recommendation selectors and logic

Fixes issue #6 as recommendations were not working. After this PR, recommendations should be extracted from profile and shown in output JSON.

@lucbpz Thanks! This looked good and didn't need any changes.
However, a reminder: when making a PR, you should pretty much always make sure that you have merged master into your forked branch to make it easier on the project maintainer. Your branch was actually behind my master branch by multiple commits; in this case, it was fine because there were no merge conflicts, but if there were, it would have caused unnecessary back and forth of me asking you to merge master and fix on your end and updating the PR. Just a tip for the future!
Thanks again for the contribution! I'll version bump this repo and push a new release through the webstore today.

Fixes #6


Make bind parameter processing more flexible

This fixes https://tickets.puppetlabs.com/browse/MODULES-1741.
HAProxy's bind parameter for listen and frontend services accepts
multiple ways of specifying addresses, ports, port ranges, sockets and
bind options. The template templates/fragments/_bind.erb that
processes the haproxy::listen::bind and haproxy::frontend::bind hash
should accomodate that, meaning specifically that it should not assume
that a valid bind configuration is universally of the format
bind <ip address>:<port> [<options>*]. The HAProxy documentation at
http://cbonte.github.io/haproxy-dconv/configuration-1.5.html#4.2-bind
details how complex the bind configuration can be.
The templates/fragments/_bind.erb template now processes the bind
hash very simply by using the hash keys as "address and/or port" and the
key's value as a list of bind options that together make up a single
bind line in the resulting listen or frontend service configuration.
Most notably there is no more IP address or port validation. The values
are taken as is from the bind hash. The rationale behind that is
discussed in https://tickets.puppetlabs.com/browse/MODULES-1741.
Contains updated and expanded documentation, and updated spec tests.

now i finally understand the title of your jira.

Granted, I created the Jira issue at 5 AM but I didn't think the title was going to be a problem :) Do you have a suggestion for a better title?

no worries, it's alright!

Would be nice if we could this get merged :-)

ping @cmurphy / @mhaskel: ping, given that @antaflos and me use this in our prod infra, maye we could merge it :)

also, now that concat has a validate_cmd we could also simplify this whole thing in the next release…


The vite-plugin-inspect in the project dose not suppert vite6.0

The vite-plugin-inspect in the project dose not suppert vite6.0

See: https://github.com/vuejs/devtools/issues/713

I didn't install vite-plugin-inspect


write_verilog: Fix O(N^2) port dumping to O(N)

What are the reasons/motivation for this change?
write_verilog is incredibly slow for modules with lots of ports. We have some modules with thousands of ports and write_verilog can take hours to run. Related to issue #3845 perhaps.
This is because port dumping is O(N^2) runtime, where N is the number of ports in the design. This poor runtime behavior arises due to the nested for loop (see lines 2337-2349); each loop can iterate up to the number of ports in the design.
Explain how this is achieved.
We reduce the runtime to O(N) by pre-building a port_id to wire vector, then using a single for loop.
If applicable, please suggest to reviewers how they can test the change.
Passes all tests.

Fwiw the ports field on modules is holding the ordered port names too

Should we use that instead? Iterate through port names and get module->wire(port)?

Should we use that instead? Iterate through port names and get module->wire(port)?

That sounds like a nice improvement!

I'm on it :)

Patch looks good to me.

Let’s wait for green CI and merge


ebiten-imgui doesn't render text correctly after update to v.2.3.0

Hello.
I'm not sure if the issue at Ebiten's side of ebiten-imgui's side, but here are my investigation results.
OS: Ubuntu 20.04
Renderer: OpenGL
How to test.

Clone ebiten-imgui
Change Ebiten's version to 2.3.0 in go.mod
run go run examples/demowindow/main.go

How it should look:

How it looks in 2.3.0:

I found exact commit in Ebiten which breaks ebiten-imgui: f2209a0b
Inserting this code:
  color.rgb = min(color.rgb, color.a);

after this line fixes it, but I'm not sure that it's a proper fix, of course...

Thanks, I'll take a look tomorrow

CC @divVerent

Any idea what ebiten-imgui does special there? The clamping really should not be needed in that case.
I wonder if for some reason the color matrix shader variant isn't activated in this case?

Without having checked for sure, could it be that a texture is used that has any "invalid" pixels, e.g. R:255 G:255 B:255 A:0, which isn't correctly premultiplied? Ebiten assumes all textures are premultiplied-alpha, and in fact, image.Color in Go assumes the same?

FYI this is how I tried fixing this, which works:
diff --git a/renderer/render.go b/renderer/render.go
index 912f430..69f2c8f 100644
--- a/renderer/render.go
+++ b/renderer/render.go
@@ -115,6 +115,12 @@ func vmultiply(v, vbuf []ebiten.Vertex, bmin, bmax image.Point) {
 func getTexture(tex *imgui.RGBA32Image) *ebiten.Image {
 	n := tex.Width * tex.Height
 	pix := (*[1 << 28]uint8)(tex.Pixels)[: n*4 : n*4]
+	for i := 0; i < n; i++ {
+		alpha := uint16(pix[4*i+3])
+		pix[4*i] = uint8((uint16(pix[4*i]) * alpha + 127) / 255)
+		pix[4*i+1] = uint8((uint16(pix[4*i+1]) * alpha + 127) / 255)
+		pix[4*i+2] = uint8((uint16(pix[4*i+2]) * alpha + 127) / 255)
+	}
 	img := ebiten.NewImage(tex.Width, tex.Height)
 	img.ReplacePixels(pix)
 	return img

With this, things work pixel-perfectly again, and this code makes no visual difference in Ebiten 2.2.
From Ebiten's ReplacePixels docs:

The given p must represent RGBA pre-multiplied alpha values. len(pix) must equal to 4 * (bounds width) * (bounds height).

With print-debugging, I found that the pixel values contained a lot of "255 255 255 0" when running the example, so it clearly didn't follow documented requirements.

@divVerent thanks, this indeed solves the issue.
Would you like to make a PR in ebiten-imgui? (it's your finding, after all)
If not, I can make a PR myself :)

Sent https://github.com/gabstv/ebiten-imgui/pull/14 to fix this - thanks!

Thank you for the investigation, @divVerent !


Update 06_cuda_cnn_hooks_init.ipynb

Change CudaCallback to access its instance variable self.device instead of the global variable device.  Not really a big deal since we don't use this version of the callback

Cleaner this way, thanks!


super-slicer: <IP_ADDRESS> -> <IP_ADDRESS>

Motivation for this change
Bump, also added Debug=True and symbols for easier debugging.
Things done

[X] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[X] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 Relase notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[X] Fits CONTRIBUTING.md.

Alright, I've decided not to add debug symbols. I would guess that intersection of [ superslicer user, nix user, does not ignore bugs, can't rebuild with symbols ] is uninhibited)


fix "Downloaded photo is not appearing in the photo album" in android

Details
To export file to external storage, we need to follow https://github.com/RonRadtke/react-native-blob-util#copytomediastore.
After export, remove temp file from internal storage.
All files are downloaded in /Download/Expensify folder.
All media (images, photos) can be seen in native Gallery app.
Fixed Issues
$ https://github.com/Expensify/App/issues/11101
PROPOSAL: https://github.com/Expensify/App/issues/11101#issuecomment-1283271264
Tests

Login with any account in android app
Send or receive any attachment in any chat
Open attachment detail
Download
Open native Files app and locate /Download/Expensify
Verify that downloaded file appears in that folder.
For media (images or videos) only:
Open native Gallery app
Verify that downloaded media appears in list

[x] Verify that no errors appear in the JS console

Offline tests
Download not working in offline mode
QA Steps

Login with any account in android app
Send or receive any attachment in any chat
Open attachment detail
Download
Open native Files app and locate /Download/Expensify
Verify that downloaded file appears in that folder.
For media (images or videos) only:
Open native Gallery app
Verify that downloaded media appears in list

[ ] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android / native
[x] Android / Chrome
[x] iOS / native
[x] iOS / Safari
[x] MacOS / Chrome / Safari
[x] MacOS / Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is correct English and approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG)

[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Web
https://user-images.githubusercontent.com/96077027/225727012-73b2b7e4-2909-423f-958a-c63ef886b73b.mov

Mobile Web - Chrome
https://user-images.githubusercontent.com/96077027/225727071-3cb0ce5b-f41a-45ce-b905-8c975a1d8d46.mp4

Mobile Web - Safari
https://user-images.githubusercontent.com/96077027/225727109-e6e5f36d-f463-4b0d-8e54-275ed7625225.mp4

Desktop
https://user-images.githubusercontent.com/96077027/225727154-31e087c1-ea8b-496a-86f0-6bc5586f2a70.mov

iOS
https://user-images.githubusercontent.com/96077027/225727220-38ea43c0-e8be-4213-8e37-ddf6a675aff4.mp4

Android
https://user-images.githubusercontent.com/96077027/225727257-90b00d25-6e65-441c-832e-d3aeb9c54784.mp4

BTW, I suggest not to use android download manager.

Why?

I tried to download file on android whatsapp and it's not using download manager so our app can be the same.

Not a good reasoning.
I think it is useful and there is a motive behind using it. But if you think so, feel free to open a slack discussion and explain the problem and reason. Don't forget to share the link here. You can tag me.

Interesting, I can reproduce. Try with an image.
https://user-images.githubusercontent.com/24370807/198079613-7ba1e2cf-9a30-4520-b86d-66c2f3e7ea1f.mp4

Sure.

There is a similar problem on the device. The Logical reason is that we are deleting the file after moving to mediasource which was downloaded via the manager.

I think it is useful and there is a motive behind using it. But if you think so, feel free to open a slack discussion and explain the problem and reason. Don't forget to share the link here. You can tag me.

Or we have to find a fix.

Any update?

There is a similar problem on the device. The Logical reason is that we are deleting the file after moving to mediasource which was downloaded via the manager.

Pretty certain we'll need to find a fix for this. It should be as simple as hiding the DownloadManager notification.  Hopefully the 3rd party library exposes this to us and it should be simple to fix 🤞 -- else I guess we'll need a fork or feature request

@Julesssss  Could you please create a new issue we want to implement the notification?
For now, it seems many agree to disable the notification for moving this PR. @aimane-chnaif let's do that for now. Also, same for iOS.

To move forward we would need an alternative solution for the invalid image URI, else we agree with this workaround and hold this while a custom notification is implemented.

I don't have access to the slack discussion. Could you please post it here?  I am good with holding this.

@parasharrajat oops sorry, I pasted the wrong link. Updated.

Ok, so go ahead with this for now?

How about holding this instead? I'm working on a project for reworking notifications and it will eventually expose a simple method of posting notifications like this.

Please add [HOLD] in the PR title and drop a comment on the issue specifying the reason for the hold.

Okay, let's reverse this decision and continue to work on this PR, as the invalid directory issue is a problem TODAY. We can improve with the custom notification shortly after.

Here's screencasts for Android 8 and 13
Android 13
https://user-images.githubusercontent.com/10736861/226413086-7e49cc54-1c5d-4da0-a995-4eca9257085b.mp4
Android 8 (doesn't show in photos or files)
https://user-images.githubusercontent.com/10736861/226413126-64275473-2248-4c09-9d85-2cdf265d335b.mp4

From the Google developer site:

Downloaded files, which are stored in the Download/ directory. On devices that run Android 10 (API level 29) and higher, these files are stored in the MediaStore.Downloads table. This table isn't available on Android 9 (API level 28) and lower.

So I'd be interested to see how the upstream lib maintainers achieved this.

I'm ignoring the checklist, it matches the provided link and looks good to me

🚀 Deployed to staging by https://github.com/Julesssss in version: 1.3.7-2 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/jasperhuangg in version: 1.3.7-3 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


Window decorations broken for maximized applications

Environment
Windows build number: Microsoft Windows NT 10.0.22000.0
Your Distribution version: Fedora 35
Your WSLg version: 1.0.26

Steps to reproduce

Install GIMP
Launch GIMP
Click the "maximize" button

Confirmed w/ Apache NetBeans 13 (Java), so not limited to GIMP

I'm also subscribed here due to seeing this in VS Code.

This happens randomly also using Intellij Ultimate in a windows 11 Host.

Happens with KDevelop, I fix it by double clicking the titlebar, resizing the window and then maximizing again. Pretty annoying.

Confirmed with GIMP 2.10. When window is maximized it's completely unresponsive. Only editing sessionrc and setting smaller window size makes window responsive again

Any news on this? It's very frustrating

InteliJ IDEA had the same problem for some time, then it was resolved and the latest version has the same issue again!


TypeScript doesn't understand that array shift mutates the values of array from initialization

Bug Report
TypeScript doesn't understand that array shift mutates the values of the array.
https://www.typescriptlang.org/play?#code/MYewdgzgLgBAHjAvDA2gRgDQwExYMwC6A3AFAkCWAZjABRwoAMBSiyaAlDAN4kzwB0EABZUoNdqT5Va9Ji2TZOPPn1CQQAGwCm-DSADmNAOQgA1kYm8YAXxLWgA
🔎 Search Terms
Array
shift
unshift
🕗 Version & Regression Information
Happens on nightly, currently failing on 4.7.0 also.
⏯ Playground Link
https://www.typescriptlang.org/play?#code/MYewdgzgLgBAHjAvDA2gRgDQwExYMwC6A3AFAkCWAZjABRwoAMBSiyaAlDAN4kzwB0EABZUoNdqT5Va9Ji2TZOPPn1CQQAGwCm-DSADmNAOQgA1kYm8YAXxLWgA
💻 Code
const x: number[] = [1, 2, 3];
if (x[0] === 1) {
  x.shift();
  if (x[0] === 2) {    // <--- Error here.
    console.log('ok');
  }
}

🙁 Actual behavior
Error evaluating x[0] after a shift. TypeScript thinks array values are fixed to the values from initialization.
🙂 Expected behavior
Error evaluating x[0] is typed as 'number', not a numeric literal (i.e. no error in example, console statement is reachable and prints).

#9998


Enhancement: "Rich" notifications for camera motion & doorbell events

Hey @nzapponi Im sure youre tired of this issue but as you can tell I got a bit obsessed. The key to solving it was I talked to the author of the homebridge-camera-ffmpeg project who explained that rich notifications dont work when cameras are added as part of a bridge. The solution is to use a different method of adding cameras (see here).
Sooo I've got this working in a branch on my fork, haven't submitted a PR yet cause wanted to discuss with you first, when you have a sec. Some points / issues:

Because of the new way of adding cameras old ones have to be deleted and now adding cameras requires an extra step. Basically you add the platform to HB and then add the cameras separately afterwards (you hit Add Accessory > I Don't Have a Code or Cannot Scan and the cameras show as available to add, you enter the same HB code. The extra step is worth it IMHO, but a consideration.
I wrote some code to try and "respect" the privacy shutter e.g. if the shutter is closed dont take a snapshot (when you have a Home app open it requests a snapshot ~every 10 seconds). This only applies to the indoor cams. I think its a decent solution.
This implementation works pretty well with indoor cam but for some friggin reason it doesnt work with the doorbell camera, for motion or doorbell notifications. The snapshot request gets made to the doorbell cam and when I run the ffmpeg cmd manually it generates an image but for some reason it just doesnt show up on my phone notifications. Sigh. Hopefully will be able to figure this one out with time, I know you dont have one to test.

This is your project so wanted to consult you first, welcome your thoughts—again, when you have time. Let me know and can see about submitting a PR. Appreciate all your effort 🙏
Screenshot :

Edit: it is working with doorbell!

Update: oh shit, works for doorbell too—w00t!

@nikonratm great work...would love to see this implemented, especially the snapshots. It would be great to avoid opening the camera and waiting for video feed when all i'm looking for is a quick glance (especially since camera view drives my pi4's CPU to ~30%+, even with ffmpeg codecs running optimally).
Quick question: does your solution grab video/images from simplisafe cloud, or locally? I ask because I noticed cam views via home/homebridge has significantly less latency than the simplisafe app in its current implementation. Would hate for that to change.

It uses the same video feed as the full camera view just grabs 1 frame. Ideally we’d be able to pull just an image file from somewhere but seems like SS doesn’t generate one. Yea speed of this solution is something I’d like to see about improving.
Happy to help, I’m still just so pissed at SS for backing out on official HomeKit support.

Woah, this is great, thanks for all the hard work put into this!
I’ll review the proposed changes between today and tomorrow and merge them in.
QQ @nikonratm: have you tested on how well it supports loss of power to homebridge/restarts/etc?
It’s something that wasn’t too easy to support on the other accessories, and I want to make sure we cover before merging in.
Let me know, thanks!

Haven’t really tested power loss etc, what exactly would I need to test? The cameras are still part of homebridge (behind the scenes) even though they show in Homekit as not, so recovery after restarts etc should be pretty much the same. I didn’t modify most of your original camera code.
FYI, I think the snapshots sometimes “fail” because it takes too long to get the stream (and perhaps removing the DNS lookup could speed things up?) but this is working most of the time for me. Perhaps you’ll notice other ways to speed up in your code review (and as you mentioned in other thread, local API would be great but 🤷🏽♂).
Great I’ll submit a PR
Cool, lemme know

Great thanks! I'll review today!

@nikonratm I merged your PR into the door-lock branch for me to test it over the next few days - I'll merge it in by Friday!
Thanks for the help here

Simplisafe has thumbnails....var p = On.functionLog("streamThumbnails").enter();
try {
var f = r.defer();
if ("function" != typeof fetch) f.reject();
else {
var m = In + "/" + n + "/";
m += "mjpg?x=" + a, m += "&fr=" + (c || 1), i && (m += "&ts=" + Math.floor(i / 1e3)), o && (m += "&duration=" + Math.floor(o / 1e3)), fetch(m, {
method: "GET",
headers: {
Authorization: "Bearer " + l.authAccessToken
}
}).then(u, d)
}
return f.promise
var e = o.apiHost + o.apiPath,
t = e + "/users";
ft = t, mt = t + "/passwordReset";
var n = t + "/{uid}";
gt = n + "/subscriptions",
ht = n + "/paymentMethods",
vt = n + "/chase/paymentMethods",
yt = n + "/addresses";
var r = e + "/utility";
St = e + "/subscriptions/{sid}",
bt = St + "/pinUnlock",
Ct = St + "/events",
wt = St + "/state",
Et = St + "/upgrade",
At = St + "/permitInfo",
Lt = St + "/plan/{sku}",
Pt = St + "/cameras/subscription",
Tt = Pt + "/all",
It = St + "/cameras/swap/{uuidFrom}/{uuidTo}",
xt = St + "/alertsUsers",
Rt = xt + "/{alertsUserId}",
Dt = xt + "/{alertsUserId}/confirm",
kt = xt + "/{alertsUserId}/resend",
Ut = r + "/smsCarriers",
Mt = r + "/zipInfo/{zip}",
Ot = r + "/zones",
Nt = e + "/activation/{uid}",
Ft = Nt + "/check/{serial}",
$t = Nt + "/planOptions",
Bt = Nt + "/activationCode/{code}",
Vt = Nt + "/{sid}/service",
zt = Nt + "/{sid}/location",
jt = e + "/subscriptions/{sid}/copsOptIn",
_t = Nt + "/{sid}/reactivate",
Ht = n + "/loginInfo",
Gt = n + "/emailPreferences",
Wt = n + "/mobileDevices",
qt = n + "/orderHistory",
Xt = n + "/paymentHistory",
Zt = St + "/pins",
Kt = St + "/settings",
Yt = e + "/subscriptions/service/plans",
Jt = e + "/ss3/subscriptions/{sid}",
Qt = Jt + "/settings/{section}",
en = Jt + "/state",
Rn = o.simpliSafeUrl + "/account/{uid}/alarm-certificate/{sid}",
tn = Jt + "/sensors",
nn = Jt + "/testAndName",
rn = Jt + "/messages",
an = rn + "/{id}",
on = St + "/cameras",
sn = on + "/privacy",
ln = e + "/cameras/{uuid}",
cn = ln + "/settings",
/***** here *******/ un = e + "/doorlock/{sid}/{serial}/command";
var a = e + "/api/chase";
dn = a + "/oas/cuid",
pn = a + "/eu/prepare",
fn = n + "/chase/token/{region}";
var i = e + "/integration/nest/{sid}";
mn = i + "/oauthToken",
gn = i + "/structureId",
hn = i + "/info", vn = i;
var s = e + "/integration/alexa/{sid}";
yn = s + "/tokens", Sn = s + "/{tokenId}";
var c = e + "/integration/googlehome/{sid}";
bn = c + "/tokens", Cn = c + "/{tokenId}";
var l = e + "/integration/august/{sid}";
wn = l + "/info",
***** AUGUST ***** En = l + "/lockSettings",
An = l + "/codeExchange", Ln = l + "/token";
var u = o.simpliSafeUrl + "/admin/phone/recording";
Pn = u + "/pause",
Tn = u + "/unpause",
In = o.mediaHost + o.mediaPath,
xn = In + "/{uuid}/mp4",
kn = e + "/tracking",
Un = kn + "/{vid}",
Mn = Un + "/event"

@graanco Interesting about the thumbnails. One would hope this would be faster than piping a stream through FFmpeg to get the 1 frame but then again that URL is still a stream, its an mjpeg (motion jpeg) stream as opposed to already-saved images and frankly it still seems kinda slow (thats my experience in the app too, the preview jpgs it shows are slow as heck).
Anyway when I try to curl to the URL in that code e.g. https://<IP_ADDRESS>/v1/uuid/mjpg?x=480&fr=1 it starts a continuous stream despite the fr=1. Seems like we'd have to code some logic for stopping after one frame unless someone can tell the format for a URL that'll just download 1 jpg and close the stream?

@nikonratm thanks for the awesome support on this, seriously.
I have now added this to v1.3.0.

@nikonratm i'm still not getting any rich notifications with the latest update (just the text). I checked my notification settings in Home and settings and all looks good. Can you confirm yours is working with the PR merge into v1.3.0?

@virtualjad did you remove the camera and add it again using the new method (add it as a separate accessory)?

Yea it’s working for me in 1.3.x but like @nzapponi said you have to remove old cameras and add them the “new” way. (Obviously this is a one-time thing)

BTW, you can tell if camera is setup properly (old vs new way) by clicking into the settings for it, if it still shows “Bridge” it’s the old way (and you won’t get rich notifications)

I added a simple new way of removing the old camera. Follow these @virtualjad :

Edit config.json, set "cameras": false and "persistAccessories": false
Restart Homebridge and check that the camera disappears from the Home app
Edit config.json again, set "cameras": true and remove persistAccessories
Restart Homebridge and follow the new instructions on the Readme to add the camera(s) - basically you need to go into the Home app and choose + -> Add Accessory -> I Don't Have a Code or Cannot Scan -> select your cameras.

I'm having issues as well. I removed all the cameras (I had to completely remove home bridge and setup it up again as I could not remove the cameras any other way) and re-added them using the new method. I kept seeing the following FFMPEG errors in the logs:
(node:10106) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'ffmpegPath' of null
at CameraSource.handleSnapshotRequest (/usr/local/lib/node_modules/homebridge-simplisafe3/accessories/simplicam.js:343:41)
at Accessory._handleResource (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/Accessory.js:934:25)
at HAPServer.emit (events.js:210:5)
at HAPServer._handleResource (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/HAPServer.js:1035:10)
at HAPServer. (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/HAPServer.js:209:39)
at IncomingMessage.emit (events.js:210:5)
at endReadableNT (_stream_readable.js:1183:12)
at processTicksAndRejections (internal/process/task_queues.js:80:21)
(node:10106) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 4)
I fixed this by specifying the location of ffmpeg in config.json as such:
"cameraOptions": {
"ffmpegPath": "/usr/local/bin/ffmpeg"
I no longer see those errors in the log but I'm not getting motion notifications from the doorbell and the indoor room camera gives me a motion notification but there is no attached snapshot from the camera.

@virtualjad did you remove the camera and add it again using the new method (add it as a separate accessory)?

Yup, I realized that was the case when I remembered cameras should be added externally. Only issue is old cameras stuck, even after following the removal steps. I had to kill the accessories cache as well. I'm not getting notifications with a preview...and the Home snapshot updates every 15 secs. So...looking good.
I'm troubleshooting a new issue though - since the update I'm getting about a 20 sec video lag (i.e. unusable). I've switched between 720p and 1080p with no real difference. I also noticed the logs show a 1080p stream even when I set the camera to 720p in the app.

I'm troubleshooting a new issue though - since the update I'm getting about a 20 sec video lag (i.e. unusable). I've switched between 720p and 1080p with no real difference. I also noticed the logs show a 1080p stream even when I set the camera to 720p in the app.

Quick update - I rebooted the pi and lag is now down to ~5sec in 720p. In the SimpliSafe app there's about a 2sec lag.

Quick and easy way to reload accessories. Shutdown HB delete accessories folder in the ~/.homebridge location... start the HB process. And it should recapture all the accessories.

Change this line in the simpicam file
https://${this.serverIpAddress}/v1/${this.cameraConfig.uuid}/flv?x=${request.width}
To
https://${this.serverIpAddress}/v1/${this.cameraConfig.uuid}/flv
This will pull the stream at the SSAPI settings

@beardedbrewguy I will submit a fix for that error.
@virtualjad Yea, the lag isnt great but thats really just a factor of hardware (e.g. Pi vs other) + SS cloud which I find to be pretty slow (2s lag in their official app is pretty bad, lets be honest). But streaming shouldn't be any slower this way than previous, that code didn't change. When you say the logs show a 1080p stream even when camera is set to 720—are you sure? Can you paste your [de-identified] log here, for me the stream is determined by camera settings see my comment that includes the relevant log in other thread: https://github.com/nzapponi/homebridge-simplisafe3/issues/35#issuecomment-546125891
Yea, in general would love to brainstorm ways to speed things up = "enhancement"

you I am very curious have you tried to capture the traffic from the ip of SS base yet?

@graanco I don't think you'll get anything interesting out of there since it's all SSL encrypted...

@virtualjad I found a bug in the persistAccessories bit which is what didn't allow you to clear the old camera properly. It should work now

Closing this again, if people have new issues or thoughts on speed improvement etc please create a new issue so we can avoid megathread.

I was about to start a new issue for this. This is the error I get is below, I think it is because of the namespace error. It seems to delay everything, including alarm/motion notifications. Apart from that works great!
(node:1570) UnhandledPromiseRejectionWarning: ReferenceError: Cannot access 'ffmpeg' before initialization
at CameraSource.handleSnapshotRequest (/homebridge/node_modules/homebridge-simplisafe3/accessories/simplicam.js:343:22)
at Accessory._handleResource (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/Accessory.js:934:25)
at HAPServer.emit (events.js:210:5)) ...

@tasansal Yea, sorry, thats the error, will be fixed by PR above.


drivers: uart: add support for serial ports on native_posix

Introduction
Hello! I want to contribute to the Zephyr project. The first thing below is the description of my use case that Zephyr does not yet support. In the end, you can see the state of my current implementation and suggested work.
Is your feature request related to a problem? Please describe.
I am writing code for an IoT application which runs on a microcontroller. The application needs to make measurements with several different sensors and send the data to the cloud via the LTE modem. The LTE modem exposes an interface over UART.
I have decoupled the hardware in such a way that I can run the code on the native POSIX:

sensors generate hardcoded measurement data,
that data is converted and modified in a way suitable to the modem, and,
it is sent to the modem (the important part).

I am still in the exploration phase regarding the modem, so I  do not want to hard-code the responses from the modem.
I want to send fake data to the modem and get actual real responses (and errors) from it, so I can write a communication module around it.
My idea was to use the USB/UART bridge dongle, wire up the modem and connect it to the PC. I soon realized that this is currently not supported.
Describe the solution you'd like
I would like to use uart API to talk to serial port devices (such as /dev/USB0, /dev/USB1, etc.).
Describe alternatives you've considered
Since I know that support for native POSIX includes also implementation of an uart driver API for printing to the stdout, I went through the native POSIX documentation to see if serial devices are supported. It seems that they aren't, only stdin/stdout and pseudo-terminals are.
I thought that I can somehow connect the created pseudo-terminal and a serial port device with a socat utility, but that did not work out (or at least I don't how to do it).
Solution and current state of it
I started working on an uart driver that could talk to the serial port devices. For the starting point, I looked into the drivers/serial/uart_native_posix.c.
What I have done:

Implemented open_serial function, which is called before main. It opens a serial port device and configures it as such.
uart_poll_in and uart_poll_out functions.
cleanup function which closes the port on program exit.

Above works, I have tested it with the:

By connecting two UART/USB dongles with wires and plugging them into PC. One was controlled by my driver, the other one with the minicom. Works both ways.
By connecting the UART/USB dongle with the modem and communicating with it.

Work needed
Above is a minimal solution that works, but is far from complete, below items should be done:

Configuration of the serial port (baud rate, parity, data bits, etc.) is currently hardcoded. This should be made configurable through DeviceTree.
Serial port name is also hard coded. This should be made configurable through DeviceTree and/or as a command line argument. Maybe the dts property can serve as a default if a command-line argument is not given?
Multiple instance support.
Some detection mechanisms, if the serial device is removed. The program should abort in that case.
Documentation in the native posix doc page.
Code cleanup.

I am interested in starting on the above items and opening a pull request for them. I am open to any suggestions on how can this be further improved :)

Hello @aescolar, I have opened a PR that implements the above! :)


[syntax] add a stylize_ranges method to the Syntax class

Type of changes

[ ] Bug fix
[x] New feature
[ ] Documentation / docstrings
[ ] Tests
[ ] Other

Checklist

[x] I've run the latest black with default args on new code.
[ ] I've updated CHANGELOG.md and CONTRIBUTORS.md where appropriate.
[x] I've added tests for new code.
[x] I accept that @willmcgugan may be pedantic in the code review.

Description
With this new API we can apply a style from (LINE A, COLUMN A) to (LINE B, COLUMN B) - which is something we will need to be able to add arbitrary ranges to Syntax.
Fixes #2329

Codecov Report

Merging #2341 (93ac8cd) into master (14d47c9) will decrease coverage by 3.24%.
The diff coverage is 96.13%.

@@            Coverage Diff             @@
##           master    #2341      +/-   ##
==========================================
- Coverage   98.88%   95.63%   -3.25%
==========================================
  Files          73       73
  Lines        7629     7656      +27
==========================================
- Hits         7544     7322     -222
- Misses         85      334     +249

Flag
Coverage Δ

unittests
95.63% <96.13%> (-3.25%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

rich/_export_format.py
100.00% <ø> (ø)

rich/cells.py
100.00% <ø> (ø)

rich/live.py
97.90% <40.00%> (-2.10%)
:arrow_down:

rich/control.py
98.38% <87.50%> (-1.62%)
:arrow_down:

rich/console.py
96.53% <96.03%> (-2.25%)
:arrow_down:

rich/_inspect.py
97.69% <100.00%> (-2.31%)
:arrow_down:

rich/_wrap.py
100.00% <100.00%> (ø)

rich/box.py
99.03% <100.00%> (-0.97%)
:arrow_down:

rich/progress.py
92.43% <100.00%> (-0.30%)
:arrow_down:

rich/style.py
100.00% <100.00%> (ø)

... and 26 more

Continue to review full report at Codecov.

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

@willmcgugan @darrenburns I haven't updated the CHANGELOG yet, as I have some doubts about some parts of this PR - that's why I'm summoning you folks for a first review, so we can arbitrate together about some of these doubts :slightly_smiling_face:

As discussed with @willmcgugan :

The feature should not be part of the constructor, but exposed as a dedicated stylize_ranges method
We should try to get better performance by avoiding the loop that goes through every character, by applying the ranges after the code has been split into several lines instead

@willmcgugan I ended up opting for another approach: instead of operating on the code split in lines (which is a state we get only in some cases, such as displaying the line numbers) I kept my previous approach, but improved its performance: :fast_forward:  75315fa
The improvement comes from the function that returns a "code index" from a "code position" : e.g. for this code snippet the position "line 3 / character 15" must be translated to index "168":
def loop_first_last(values: Iterable[T]) -> Iterable[Tuple[bool, bool, T]]:
    """Iterate and generate a tuple with a flag for first and last value."""
    iter_values = iter(values)

With the new implementation of this function, instead of iterating on every character of the code to be able to do this conversion I first store the length of each line of code in a list (which is rather cheap to do, as it's simple calls to str.find()), and then use that information to do the conversion.
(we need to do this conversion to be able to pass indexes to the Text.stylize() method)
By doing so, in order to stylise some parts of a 200 lines of code snippet (the content of "rich/columns.py") I get a performance penalty that is rather low.
Performance with %timeit on a laptop that is doing other things in parallel is not perfect measurement of course :shrug: , but in this test rendering it with several stylised ranges takes 22.3ms in average, versus 21.6ms without stylised ranges:

@willmcgugan I thought of a better way to calculate the index in the string from a line number and column index - and it seems to be a little bit more efficient as a result - the overhead of stylising ranges is now pretty minimal :slightly_smiling_face: 4d80b3a

@willmcgugan Thanks for your review! I'm goignto address your comments  :slightly_smiling_face:
Regarding re.finditer I though of using it indeed, instead of implementing this stuff myself,;but I was afraid of a potential performance hit by using regular expressions instead of simple-and-stupid iterative string lookup.
I just did a quick comparison using %timeit (which the usual flaws of such a comparison), out of curiosity, and it seems that using re is a lot slower?

I don’t think that’s quite apples to apples. The regex will get the offsets within the code, not the lengths of the lines. I think it will replace 2 functions.

Sorry, I wasn't clear! _get_lines_length actually finds the offsets within the code too, and only does a quick additional step on top of it in order to convert this to "line lengths" (so offsets [3, 8, 30] become lengths [3, 5, 22]).
But as this additional step is so trivial, _get_lines_length can be considered as really doing the same thing than the re.finditer approach - i.e. finding the positions of newline characters in the code :slightly_smiling_face:

@willmcgugan I think I addressed your comments! If it looks good to you I'll add some documentation for this new feature next week :slightly_smiling_face:
As a side effect, the code is more compact now that we extract the newline characters offsets with a one-liner:

@willmcgugan Thanks for your review! Hopefully I addressed all your comments there: 8e58adc :slightly_smiling_face:  :crossed_fingers:

@willmcgugan I removed the odd -1 from the algorithm, and tested that it also passes successfully on empty code while I was there :slightly_smiling_face:  b6a4cfa


Random subset of a selection

I found the following extension helpful in some of my own projects. If you think it is generally useful, I'd be happy to create a pull request (after converting the code to use appropriate private methods, etc.). Otherwise, feel free to close the issue.
// Extend the D3 selection object with a method that chooses a random subset of the
// selection. The method's parameter is the number of items to choose.
d3.selection.prototype.randomSubset = function(subsetSize) {
    var subgroups = [],
        subgroup,
        group,
        node;

    for (var j = 0, m = this.length; j < m; j++) {
        subgroups.push(subgroup = []);
        subgroup.parentNode = (group = this[j]).parentNode;
        d3.shuffle(d3.range(group.length)).slice(0,subsetSize).forEach(function(i) {
            subgroup.push(group[i]);
        })
     }

     if ({}.__proto__) {
           subgroups.__proto__ = d3.selection.prototype;
     } else {
           for (var property in d3.selection.prototype) {
               subgroups[property] = d3.selection.prototype[property];
           }
     };

     return subgroups;
}

I’m not sure what the use case for this method is, so it doesn’t seem like something I would consider for inclusion in core, though I also don’t see any harm in releasing this as a plugin if you desire.
If you’re doing this outside of the D3 library (i.e., you don’t have access to the internal d3_selection constructor), I’d recommend using d3.select(null) to create an empty selection with a single group, and then populating the additional groups and nodes, rather than assigning __proto__.


4.2calc

Did the same linearization math as for LSU 4.9 now for LSU 4.2, see f1448e5cf1c3ec97c5b716b6453013ef323f35cc


Adding roles to Service Account user allows to update user by serviceAccountClientId but is not working correctly

Current Behavior
We are provisioning clients with  service accounts. Some of them use client roles binded with service user. The most convenient way to provision such client roles is to use serviceAccountClientId since it is a part of the provisioned change. The operation is successful, but strange things happens. Service accounts users get roles from a wrong client, or they don't get role assigned at all. The solution is to add the username to each entry in the users collection. However, now we have to use a generated username with prefix 'service-account-'. In case Keycloak changes that behaviour and stops prefixing service users with 'service-account-' there will be no way to "guess" that auto-generated name. To summarise I see two issues here:

I'm allowed to create a user using serviceAccountClientId, but this is not working correctly
In fact I'm not able to use serviceAccountClientId which seems to be the most convenient thing to do when I provision a client with service account.

Expected Behavior
When I update service account user using serviceAccountClientId I want roles to be correctly applied to the user.
Steps To Reproduce
Sample config

realm: test
clients:
  - clientId: api-event-mgmt
    description: desc
    enabled: true
    clientAuthenticatorType: client-secret
    secret: secret
    standardFlowEnabled: true
    implicitFlowEnabled: false
    directAccessGrantsEnabled: true
    serviceAccountsEnabled: true
    publicClient: false
    frontchannelLogout: true
    protocol: openid-connect
    attributes:
      oidc.ciba.grant.enabled: 'false'
      backchannel.logout.session.required: 'true'
      display.on.consent.screen: 'false'
      oauth2.device.authorization.grant.enabled: 'false'
      backchannel.logout.revoke.offline.tokens: 'false'
    fullScopeAllowed: true
    authorizationServicesEnabled: false
  - clientId: api-event-mgmt
    description: desc
    enabled: true
    clientAuthenticatorType: client-secret
    secret: secret
    standardFlowEnabled: true
    implicitFlowEnabled: false
    directAccessGrantsEnabled: true
    serviceAccountsEnabled: true
    publicClient: false
    frontchannelLogout: true
    protocol: openid-connect
    attributes:
      oidc.ciba.grant.enabled: 'false'
      backchannel.logout.session.required: 'true'
      display.on.consent.screen: 'false'
      oauth2.device.authorization.grant.enabled: 'false'
      backchannel.logout.revoke.offline.tokens: 'false'
    fullScopeAllowed: true
    authorizationServicesEnabled: false
users:
  - serviceAccountClientId: api-client-mgmt
    realmRoles: [ ]
    clientRoles:
      realm-management:
        - view-realm
        - manage-users
        - query-clients
        - manage-clients
  - serviceAccountClientId: api-event-mgmt
    realmRoles: [ ]
    clientRoles:
      realm-management:
        - view-events
        - manage-events

### Environment

- Keycloak Version: 24.0.2
- keycloak-config-cli Version: Docker image: adorsys/keycloak-config-cli:latest
[5.12.0-24.0.1](https://hub.docker.com/layers/adorsys/keycloak-config-cli/5.12.0-24.0.1/images/sha256-e9ec13c190a6adfd706b1d8a5c71d5434c4766d066259b14b05c3361c04d77c9?context=explore)
- Java Version: 17

### Anything else?

_No response_

Just wanted to add that we have exactly the same issue with one of our customers.


BitDateTimePicker Initialization

Hi
System.IndexOutOfRangeException: 'No Page in PopupStack' on Initialization
This error happended when DateTimePicker.AutoClose = "True" and datetime property of ViewModel has initial value.
for example, in your sample solution, if change this line
<bit:BitDateTimePicker SelectedDateTime="{Binding SelectedDateTime}" Text="Please select a date!"/>
To
<bit:BitDateTimePicker SelectedDateTime="{Binding SelectedDateTime}" Text="Please select a date!" AutoClose="True"/>
on BitDateTimePickerSampleView.xaml, this exception will throw on initialization of page
Bit CSharp client
BR

We're not facing the same issue because there is a workaround in Bit.Client.Xamarin.Prism
I'll move that workaround to Bit.Client.Xamarin.Controls in the upcoming release.
That exception happens in many cases, and in the end, I had to do a trick!
Note that there is a sample with AutoClose="True" in samples. I tested that and it's working fine.
Re clone/download bitframework repo and test the latest version of sample app and let me know if you're facing that issue or not.

this exception thrown if
1- Autoclose="True"
2-bind SelectedDate to a property ( for example property of viewmodel class )
3-Property of viewmodel must have value. not null or empty value.
Not only AutoClose="true"
I downloaded all repo after release version 5 .
if you want to see this exception, you must change this line on your sample. and then run it. dont use hotreload
Thx

Bit 5.2 has been released. You can use that to solve your issue


Updates few leftover examples to use new kernel api

[X] Have you provided a meaningful PR description?
Initial conversion of examples to new kernel API missed few files. The PR addresses the remaining changes to port every example to use the new kernel API.
[ ] Have you added a test, reproducer or referred to an issue with a reproducer?
[X] Have you tested your changes locally for CPU and GPU devices?
[X] Have you made sure that new changes do not introduce compiler warnings?
[ ] If this PR is a work in progress, are you filing the PR as a draft?

coverage: 84.836%. remained the same
when pulling e9a3bfa6d9db8401afd7f5967bb5aa3488fcc527 on fix/examples-to-use-new-api
into 2e4e4cb342397768a1bd1a0ef42770c00f718e5d on main.


Welcome LCrossman join editor team

BTW, feel free to add a bio to introduce yourself. @LCrossman 😸

Hi, @LCrossman. It's ok to merge this PR?

Hi,
Yes should be fine,
Thnx,
L
On Sun, Jan 8, 2023, 2:49 PM Folyd @.***> wrote:

Hi, @LCrossman https://github.com/LCrossman. It's ok to merge this PR?
—
Reply to this email directly, view it on GitHub
https://github.com/RustMagazine/rustmagazine.github.io/pull/8#issuecomment-1374853808,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACYMJF2PAYTZ3NKIP7ZX263WRLHYNANCNFSM6AAAAAATMH4G4M
.
You are receiving this because you were mentioned.Message ID:
@.***>


Compile error on MinGW64 gcc 11.2

[build] C:/include/glaze/thread/threadpool.hpp:40:39: error: invalid conversion from 'long long unsigned int' to 'HANDLE' {aka 'void*'} [-fpermissive]
[build]    40 |                SetThreadGroupAffinity(hndl, &affinity, nullptr);
[build]       |                                       ^~~~
[build]       |                                       |
[build]       |                                       long long unsigned int

https://github.com/stephenberry/glaze/blob/6d2a5961a05b9383f8d1c52885bebe94966eae99/include/glaze/thread/threadpool.hpp#L40
I can set this option in cmake
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive")

But I don't know if you need to be concerned about this

Ohh this might actually be something to be concerned about. Thanks for bringing this up. MinGW has different threading models. I assume you are using posix threads. In that case, std::thread::native_handle is probably returning a pthread handle whereas  SetThreadGroupAffinity is expecting the windows HANDLE.
We could disable the processor group stuff  if MINGW32 is defined. We could probaly also check if the type returned by std::thread::native_handle is the same as HANDLE in an "if constexpr".
The group stuff is not strictly necessary anyway and was being used to utilize all available logical processors on windows systems with more than 64 logical processors that have multiple groups. Note that this is no longer needed in Windows 11 and Windows Server 2022 and up https://learn.microsoft.com/en-us/windows/win32/procthread/processor-groups

Addressed in #189. Removed the usage of processor groups when using MinGW and made some other changes that seemed to be causing problems with MinGW. Added a MSYS2 MinGW gcc 12.2.0 workflow to make sure things work as expected on MinGW.

Thanks


Cannot find type 'StackTransformView' in scope

Apart from TransformableView if i try any other of the three options it gives me same error cannot find in scope.

Did you import the library?
import CollectionViewPagingLayout


refactor: enabled the PITR test and setting the default RAM config

Description
Enabling the PITR example and changed the default value of memory for PITR example.
Types of changes in this PR
No release required

[x] Examples or tests (addition or updates of examples or tests)
[ ] Documentation update
[ ] CI-related update (pipeline, etc.)
[ ] Other changes that don't affect Terraform code

Release required

[ ] Bug fix (patch release (x.x.X): Change that fixes an issue and is compatible with earlier versions)
[ ] New feature (minor release (x.X.x): Change that adds functionality and is compatible with earlier versions)
[ ] Breaking change (major release (X.x.x): Change that is likely incompatible with previous versions)

Release notes content
Replace this text with information that users need to know about the bug fixes, features, and breaking changes. This information helps the merger write the commit message that is published in the release notes for the module.

Checklist for reviewers

[ ] If relevant, a test for the change is included or updated with this PR.
[ ] If relevant, documentation for the change is included or updated with this PR.

Merge actions for mergers

Merge by using "Squash and merge".

Use a relevant conventional commit message that is based on the PR contents and any release notes provided by the PR author.
The commit message determines whether a new version of the module is needed, and if so, which semver increment to use (major, minor, or patch).

Can we move it back to pr_test.go if its back working now?

It is in pr_test.go, I was just skipping it before.

:tada: This PR is included in version 3.0.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


perf(encoding): estimate jsonb's value encoding size

          It’s heavy to pre-compute the size of jsonb, but anyway, 8 is too small and we need some comments here.

Originally posted by @TennyZhuang in https://github.com/risingwavelabs/risingwave/pull/8692#discussion_r1153971072
We need to add some benchmarks to do a trade-off between to calculation and reserve memory for estimate the jsonb's encoding.

after https://github.com/risingwavelabs/risingwave/issues/11805


TEDEFO-2124 add OPT-060-Lot after OPT-070-Lot in NTD 7 to 22,38,39,40,CEI

It was branched from origin/update_sdk_1.7.0
And the destination is origin/update_sdk_1.7.0

For PR see:
https://github.com/OP-TED/eForms-SDK/pull/425

I will close this PR as there was a commit that comes from another branch, it will be cleaner to redo this PR.


Dynamically changing element content should change element, not just child text node

Description
Dynamically changing element content should change element, not just child text node.
Live Demo
http://jsbin.com/siyalix/1
http://output.jsbin.com/qeqeqoleso
Steps to Reproduce

Go to http://jsbin.com/siyalix/1 on an iOS device.  Turn on VoiceOver.
Swipe through the elements on the screen.  Note that VoiceOver reads "Alpha" and "Alpha Polymer" correctly.
Tap on the 2 "change header" buttons.
Swipe through the elements on screen again.  Notice that although they visually say "Beta", they are still read out loud as "Alpha" by VoiceOver.

There is a similar repro on http://output.jsbin.com/qeqeqoleso - note that this repros for h1, h1 with an aria-label set, and span with role="heading".  It does not repro for a simple span.
Expected Results
VoiceOver should read the text on the screen.
Actual Results
VoiceOver reads the text that used to be on the screen.
Browsers Affected
Tested iOS 9 and 10 on iPhone 6 and iPad2.  Does not seem to repro on Android.

@sorvell @azakus For some context, when Polymer updates the textContent of the h1 in the example, it's actually updating the textContent of the h1's child text node. If we update the textContent of the h1 directly, the problem goes away.

This appears to be a bug in VoiceOver.  For the following example...

[[headerTitle]]

... setting h1.firstChild.textContent does result in a change to h1.textContent, based on how the DOM API works.  So it is not "incorrect" to set textContent of the child text node; it appears that VoiceOver just does the wrong thing.
Consider the following case to understand why Polymer binds text to TextNodes rather than textContent of the parent element:

[[headerTitle1]]Hi[[headerTitle2]]

As you can see, since there can be child elements adjacent to child textNodes, Polymer binds to individual child nodes rather than parentElement.textContent since that is a more general approach.
Technically Polymer could special-case the case that an element only has a single TextNode child and in that case bind to parentElement.textContent specifically to workaround the VoiceOver bug.  However, in the meantime a more straightforward workaround would be to explicitly bind to the textContent property of the element via a property binding (as opposed to text binding), as such:

Thank you for the explanation, that makes sense.  Binding to textContent explicitly works for my case, thanks!

Can you file a bug on bugs.webkit.org too? This is a bug in how WebKit reports the changes to voiceover.

A WebKit bug has been logged here: https://bugs.webkit.org/show_bug.cgi?id=190437


Develop the new web page - Catalog Uploads

This epic will contain all tasks related to the development of the above screen Catalog Uploads

Task is closed.


Contact

Who can I contact regarding drink?

I guess that would be me :)

I'm trying to test the examples but I can't seem to run them:
Blocking waiting for file lock on build directory

I tried a different branch and it worked but on main all the examples get stuck.
Should drink work with ink! v5?

Please try with --release

That worked. Any idea what this could be:

My Cargo.toml:
    [package]
name = "api_example"
version = "0.1.0"
authors = ["[your_name] <[your_email]>"]
edition = "2021"

[dependencies]
ink = { version = "5.0.0", default-features = false }
pop-api = { path = "../pop-node/pop-api", default-features = false, features = ["fungibles"] }

[dev-dependencies]
drink = "0.8"

[lib]
path = "lib.rs"

[features]
default = ["std"]
std = [
    "ink/std",
    "pop-api/std",
]
ink-as-dependency = []

It could have something to do with the repo using an older cargo contract?

Working


[wasm/rs]: "wasm-interface-types" Custom Section Present Post-Compilation

Describe the bug
When rust wrappers include dependencies that use wasm-bindgen, even if these wasm-bindgen types do not cross the wasm/host boundary, they still make their way into the resulting wasm binary. This has been discussed and a proposed solution has been described here:
https://github.com/polywrap/integrations/issues/71
The "fix" that was described was implemented in this PR here:
https://github.com/polywrap/toolchain/pull/988
This "fix" tells the wasm-bindgen CLI to remove itself from the module, and use wasm-interface-types in its place. These wasm-interface-types never make their way into the resulting wasm binary though, because again they do not cross the boundary. One final artifact of this though is that the wasm module has a "custom section" added to it that effectively says "wasm-interface-types has been used in this module". This is causing the following error to occur when running these wasm modules with Wasmtime: https://github.com/polywrap/python-client/issues/39
Please provide the steps to reproduce and if possible a minimal demo of the problem.
Build a wrapper that uses wasm-bindgen dependencies, here is an example (sha3-wasm-rs wrapper): https://wrappers.io/v/ipfs/QmbYw6XfEmNdR3Uoa7u2U1WRqJEXbseiSoBNBt3yPFnKvi
Notice that Wasmtime looks for the "wasm-interface-types" custom section, and throws an error if it's present:
https://github.com/bytecodealliance/wasmtime/blob/0548952319d112ecffe519d7eb0fdf9bd10feec7/crates/environ/src/module_environ.rs#L631-L647
Now, inspect the wasm module downloaded above (sha3-wasm-rs), and see what custom sections are held within. Here is a simple program to do so:
extern crate anyhow;
extern crate wasmparser;

use anyhow::Result;
use wasmparser::{Parser, Payload};
use std::env;
use std::str;

fn main() -> Result<()> {
    let args = env::args().collect::<Vec<_>>();
    if args.len() != 2 {
        println!("Usage: {} in.wasm", args[0]);
        return Ok(());
    }

    let buf: Vec<u8> = std::fs::read(&args[1])?;
    for payload in Parser::new(0).parse_all(&buf) {
        match payload? {
            Payload::CustomSection(s) => {
                println!("  CustomSection {:?} {:?}", s.name(), str::from_utf8(s.data()));
            }
            _other => {
                // println!("found payload {:?}", _other);
            }
        }
    }

    Ok(())
}

This will output the following:
CustomSection "producers" Ok("\u{2}\u{8}language\u{1}\u{4}Rust\0\u{c}processed-by\u{4}\u{5}rustc\u{1d}1.60.0 (7737e0b5c 2022-04-04)\u{6}walrus\u{6}0.12.0\u{c}wasm-bindgen\u{6}0.2.82\twasm-snip\u{5}0.4.0")

CustomSection "wasm-interface-types" Ok("\u{5}0.1.0")

Expected behavior
The module does not need the "wasm-interface-types" custom section, as it does not need interface types. This is simply an artifact from wasm-bindgen.

This custom sections can be removed with wasm-tools: https://crates.io/crates/wasm-tools
You can simply run wasm-tools strip ./wrap.wasm -d wasm-interface-types -o ./wrap.wasm


createASCII without margin error

When I call createASCII with a margin of 0 and when the size of the qr code is odd, the last line is cut of and replaced with a half border.
I think the condition to substring and concat the half border should be if (*size % 2) && r) at https://github.com/kazuhikoarase/qrcode-generator/blob/a4ce043c3d8edcb469f07d2db9d4da3527d23f41/js/qrcode.js#L619
https://codepen.io/anon/pen/KJdwXg

@jlami thanks for report.
I could reproduce it only for cell size set to 1. With cell sizes bigger than 2, generated output was OK here.
Please check fix from #68 and confirm it works :).

Yes this works!

Great! Thanks :).


Persistent Volume Claims option?

Hi,
I'm pretty new to k8 and vault. I follow the readme it works great! But, is there a reason you are not using "Persistent Volume Claims" on the etcd storage? Or is it in a future release plan?
Please let know if there is a better place to ask this type of questions. Thank you.

I added this feature to PR #333 and have integrated this in an example quay repository (version 0.1.9-1 is the latest stable release with my added features).
ETCD PVCs are an experimental feature and, as far as I know, you're supposed to use S3 storage for backup and restore jobs with a cron job
Using this example manifest will deploy a vault cluster with PVC's backing etcd.
apiVersion: vault.security.coreos.com/v1alpha1
kind: VaultService
metadata:
  name: vault
spec:
  nodes: 3
  version: 0.10.4-1
  baseImage: quay.io/zenlab/vault
  serviceAccountName: vault-sa
  persistentVolumeClaimSpec:
    accessModes:
    - ReadWriteOnce
    resources:
      requests:
        storage: 5Gi

Thank you! I'll check it out.


Improved module docstrings

Description
I've extended the module docstrings for the core.logger, core.config, core.model and  soil.model modules. The aim is that they give enough information that people weren't involved in building these systems (i.e. Vivienne and Taran) can understand how they are supposed to be used. So let me know if anything is unclear, or if you feel like anything needs further expansion.
I'm also far from an expert in using reStructuredText, so David let me know if any of my usage seems suspect.
In terms of viewing the docstrings it is probably best to make the docs and then view them in browser. This can be done by running cd docs followed by make html. If this doesn't work you might have to make sure that Jupyter is properly set up (see here).
Fixes #105
Also addresses #107, but doesn't completely resolve it.
Type of change

[ ] New feature (non-breaking change which adds functionality)
[ ] Optimization (back-end change that speeds up the code)
[ ] Bug fix (non-breaking change which fixes an issue)
[x] Documentation improvement

Key checklist

[x] Make sure you've run the pre-commit checks: $ pre-commit run -a
[x] All tests pass: $ poetry run pytest

Further checks

[x] Code is commented, particularly in hard-to-understand areas
[x] Tests added that prove fix is effective or that feature works

Codecov Report

Merging #115 (a914b9c) into develop (290caba) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff            @@
##           develop     #115   +/-   ##
========================================
  Coverage    96.35%   96.35%
========================================
  Files           10       10
  Lines          412      412
========================================
  Hits           397      397
  Misses          15       15

Impacted Files
Coverage Δ

virtual_rainforest/core/config.py
98.17% <ø> (ø)

virtual_rainforest/core/logger.py
100.00% <ø> (ø)

virtual_rainforest/core/model.py
100.00% <ø> (ø)

virtual_rainforest/soil/model.py
94.44% <ø> (ø)

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

This is now built at: https://virtual-rainforest.readthedocs.io/en/feature-extend_module_docstrings


Title freeze (black screen) when beating Kefka.

The title will enter ending dialogue upon defeating kefka and then hangs on a black screen.
https://media.discordapp.net/attachments/1018903473036738640/1020385192063541398/unknown.png?width=1193&height=671

I think that I have the post-win screen that I was looking for... it will be available in the next release.


[V2V] Add default credentials to ansible_playbook method

In the ansible_playbook method it's possible that an authentication isn't yet directly associated with the conversion host, e.g. a rhev host without a provided ssh key. This modifies the method so that it calls find_credentials as a fallback which will (ultimately) use the authentication of the associated resource.
Without this a undefined method 'userid' for nil:NilClass error could result.
This wasn't caught in the specs because it's a private method. I think our own testing didn't catch it because we were either using openstack or were explicitly providing an ssh key. I personally was just stubbing that method out without checking it. Oops!
This fix also has the added advantage of raising a proper error if it still can't be found for some reason.
BZ: https://bugzilla.redhat.com/show_bug.cgi?id=1705738
Edit: also fixed an error message bug in the find_credentials method while we were here.

@miq-bot add_label bug, transformation, hammer/yes

@djberg96 since you're adding a call to find_credentials() it might be appropriate to fix up a line of redundant code in there assigning to the "msg" variable. Line #255 before this change.

@miq-bot add_reviewer @agrare

@jerryk55 oh, good catch, i spaced out on that one. Fixed that while we were here.

@djberg96 thanks!

@agrare @jerryk55 Since nothing was using the msg argument, I altered it to accept an auth_type instead, which defaults to "v2v", and updated the ansible_playbook method to use it.
Look ok?

@djberg96 the only issue I see now is that the ansible_playbook method now has an unused auth_type argument.  It can probably be removed.  Also I just want to confirm that you no longer wish to have that auth_type = nil argument be the default.

@jerryk55 Ok, I've updated it so that that auth_type is passed explicitly to find_credentials, which will try to use that first, and fall back to "v2v" as the first default.

Ok @djberg96  cool.  Looks good!

@jerryk55 @agrare I've added another fix that handles cases where it must go through the associated resource. For OSP, it should default to resource -> ems -> authentication instead of resource -> authentication.

I don't think there's any other credentials for conversion host.
Le mar. 7 mai 2019 à 13:02, Daniel Berger<EMAIL_ADDRESS>a
écrit :

@djberg96 commented on this pull request.
In app/models/conversion_host.rb
https://github.com/ManageIQ/manageiq/pull/18724#discussion_r281730938:

def find_credentials(msg = nil)
authentication = authentication_type('v2v') ||

 resource.authentication_type('ssh_keypair') ||

 resource.authentication_type('default')

def find_credentials(auth_type = nil)
authentication = authentication_type(auth_type) || authentication_type('v2v') || authentications.first

@fdupont-redhat https://github.com/fdupont-redhat can it be anything
other than 'v2v', 'ssh_keypair' or 'default'?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/ManageIQ/manageiq/pull/18724#discussion_r281730938,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AGFAA2E34ZC677FHQFIA5BLPUGYZBANCNFSM4HKWHZUQ
.

Okay so we can drop the || authentications.first

@agrare Updated the current logic. See if that's ok, or if you think those "or" checks should be dropped completely.

Nope. We can default to the 'ssh_keypair' and 'default' as they were used
in previous version. We will probably drop them in Ivanchuk.
Le mar. 7 mai 2019 à 13:53, Adam Grare<EMAIL_ADDRESS>a écrit :

@agrare commented on this pull request.
In app/models/conversion_host.rb
https://github.com/ManageIQ/manageiq/pull/18724#discussion_r281751726:

def find_credentials(msg = nil)
authentication = authentication_type('v2v') ||

 resource.authentication_type('ssh_keypair') ||

 resource.authentication_type('default')

def find_credentials(auth_type = 'v2v')
authentication = authentication_type(auth_type) ||

 authentication_type('ssh_keypair')            ||

 authentication_type('default')

Wait I thought we just said v2v was the only auth type that could be added?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/ManageIQ/manageiq/pull/18724#pullrequestreview-234668859,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AGFAA2DFSJM7JRUYG54OUUTPUG6YLANCNFSM4HKWHZUQ
.

@fdupont-redhat okay now you've confused me, is v2v auth type the only one supported or not?

No, it's not. We support 'v2v' (new, common), as well as 'ssh_keypair'
(legacy, OSP) and 'default' (legacy, RHV).
Le mar. 7 mai 2019 à 14:14, Adam Grare<EMAIL_ADDRESS>a écrit :

@fdupont-redhat https://github.com/fdupont-redhat okay now you've
confused me, is v2v auth type the only one supported or not?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/ManageIQ/manageiq/pull/18724#issuecomment-490190544,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AGFAA2DGRIIWLHIXIYEAUBTPUHBGNANCNFSM4HKWHZUQ
.

Okay but on the conversion host v2v was the only option, ssh_keypair and default we're only for the underlying resource

You're right. It's a new converged authentication, that makes the graphical configuration easier, and the others, associated to the resource, will disappear in Ivanchuk.

Hammer backport details:
$ git log -1
commit e9beef70e978a6ec75feb376c5cc691e81fb20b1
Author: Adam Grare<EMAIL_ADDRESS>Date:   Tue May 7 19:58:11 2019 -0400

    Merge pull request #18724 from djberg96/conversion_host_ansible_playbook_default_credentials

    [V2V] Add default credentials to ansible_playbook method

    (cherry picked from commit a68811eee56fc4a7bc632c4b74f8c64c0e5b6ef0)

    Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1694229

Reverted the hammer backport:
commit 282f74ed07d2f851110d9b3d9a5428f1fa7a79ef
Author: Satoe Imaishi<EMAIL_ADDRESS>Date:   Wed May 8 12:46:48 2019 -0400

    Revert "Merge pull request #18724 from djberg96/conversion_host_ansible_playbook_default_credentials"

    This reverts commit e9beef70e978a6ec75feb376c5cc691e81fb20b1.

    https://bugzilla.redhat.com/show_bug.cgi?id=1694229

@miq-bot remove_label hammer/no

@miq-bot add_label hammer/yes

Re-backported to hammer branch:
commit 2a0f93eb01710880b45b651317c28693584b378a
Author: Adam Grare<EMAIL_ADDRESS>Date:   Tue May 7 19:58:11 2019 -0400

    Merge pull request #18724 from djberg96/conversion_host_ansible_playbook_default_credentials

    [V2V] Add default credentials to ansible_playbook method

    (cherry picked from commit a68811eee56fc4a7bc632c4b74f8c64c0e5b6ef0)

    https://bugzilla.redhat.com/show_bug.cgi?id=1712135


Library issues

cannot import name 'UnencryptedCookieSessionFactoryConfig' from 'pyramid.session' (unknown location)
I can't install the package either in windows or in Linux systems.

This seems to be a problem on the environment/dependency of torchscale. Could you please try installing apex (see https://github.com/NVIDIA/apex#linux) before installing torchscale?

Close for now. Please feel free to reopen it if it doesn't work by reinstalling apex.


Update drone caching strategy

A proposed change to the caching methodology.
The cache key has been the boostorg/boost commit SHA, which changes around every 4 hours and thus invalidates the cache most of the times you attempt to use it. If a few hours have passed and there is a pull request or a commit, those will be cache misses.
The new strategy is to basically always use the cache.
common_install.sh runs every time. "git pull" or "submodule update" only take a few seconds because they don't need to download a full git repository. b2 recompilation will be skipped.

So, in principle, we could be testing Boost.URL with v1.82 three years from now?

Running "git pull" or "submodule update" every time is a good idea. Then we can recache the newer versions.

This strategy is quite smart :)
The cache baseline only needs to change when there's a new tag, depinst.py ensures everything is up to date, and anything updated is reached. Perfect.

only needs to change when there's a new tag

By the way, that's not strictly required. It seems to be a nice idea to refresh on a git tag, every three or four months. But conceivably you could remove the check and never recreate the cache so it would be a perpetual eternal cache because "git pull" is being run every time.

https://drone.cpp.al/boostorg/url/2166

caching is currently implemented as a container 'meltwater/drone-cache' which means the function image_supports_caching should check image_str != None

image_supports_caching should check image_str != None

Definitely. This is a plain error.
Is this PR good to go in your opinion?

Each time we find something new, but yes it should be good-to-go.


Do not always create a fides.toml by default

Closes #1661
Code Changes

[x] remove the call to create the config from within the main CLI codepath
[x] only run check_and_update_analytics_config when fides init is run

Steps to Confirm

[ ] head into a fresh directory and run fides, confirm no file was written and no .fides dir exists

Pre-Merge Checklist

[ ] All CI Pipelines Succeeded
Documentation Updated:

[ ] documentation complete, or draft/outline provided (tag docs-team to complete/review on this branch)
[ ] documentation issue created (tag docs-team to complete issue separately)

[ ] Issue Requirements are Met
[ ] Relevant Follow-Up Issues Created
[ ] Update CHANGELOG.md

Description Of Changes
The side-effect of having the fides.toml always be created whether it exists or not is a bit redundant and potentially error-prone (see the attached issue for more discussion). As such, the config file should only be created when a user specifically runs the fides init command
Due to this change though, we also needed to update how analytics_opt_out is handled, given that before we always expected the user to have a file-based configuration file to update. The behaviour is now that we assume analytics is false if there is no config file, but will prompt the user for it when they run fides init. This means we defaulting to opt-out and are no longer prompting the user every time they use the CLI to update this. I think this is no longer a major issue, as we should be relying more heavily on the user registration flow for valuable usage analytics.

@NevilleS can you take a look at the logic changes here and lmk if you're comfortable with these changes?
Particularly around only doing analytics opt-ins when someone runs fides init. My thinking here is that most of that heavy lifting should actually be done by user registration now

it looks like there is an error when running fides init and not choosing to opt-out of analytics


module idea: icon-theme

It would be similar to proposed sound-theme module, but would be easier to implement, as it's more centralized.
Icon pack is copied to /usr/share/icons/ folder, icon cache & app-menu is updated & that should be it in a nutshell.
We could potentially have a external provider similar to fonts module, which would automatically download & install icon-theme you input.
Issue with this is that not all icon-themes are the same in structure, so some of them would require different installation steps.
So we would maybe provide some popular icon-themes as a choice & maintain that.
Morewaita icon theme is popular as far as I see:
https://github.com/somepaulo/MoreWaita
We would only support this in Desktop Environments which encourage icon-theme support though, as Gnome strictly prohibits that as something official. We want to be official-compliant.

Specifically in the case of the icon theme you mentioned it's already packaged in COPR, so in your recipe add:
- type: rpm-ostree
    repos:
       - https://copr.fedorainfracloud.org/coprs/dusansimic/themes/repo/fedora-%OS_VERSION%/dusansimic-themes/-fedora-%OS_VERSION%.repo
    install:
       - morewaita-icon-theme

More generally for installing icon themes on Ublue I would suggest leveraging Fedora COPR instead of doing it through a blue-build module. For inspiration here is the .spec file I use for my gtk theme and icon pack: https://github.com/mecattaf/rpmbuild/blob/main/SPECS/catppuccin-theme.spec
I leverage a fedora distrobox called "rpmbuilder" (short instructions here: https://github.com/mecattaf/rpmbuild/tree/main)
The .spec file mentioned above assumes you save your theme.tar.gz folder containing all the icons you want in the rpmbuild/SOURCES/ directory.
Note that when using a COPR repo the icons will be placed in /usr/share/themes and /usr/shares/icons instead of /var/home/{user}/.themes and .icons
I guess the last step would be to create a github repo where contributors list the COPR repos they create for specific icon packs ("awesome-copr-icons"?)
Hope that helps

@mecattaf
Yeah, I'm aware of RPM being present.
The reason why we would want this as a module instead is better discoverability by users. We can simply utilize rpm-ostree to install those packages, that's not a worry.
Making a special GitHub repo for those could be nice.
We would setup auto-updating & auto-building with Pull GitHub app & GitHub webhooks, but webhook never worked for me, even when I set it up properly, so I have to merge Pull PR & update the build manually.

RPMs from Copr would definitely be easier, but I don't see how that's something that needs a new module (the features required are already supported in the rpm-ostree module). I'm also hesitant to create a new Copr repo like this that does not fall under the main BlueBuild scope, except for making a specific customization slightly easier.
Another concern I have is making another Fedora-only module. Supporting other base images is the long-term goal after all.


Do not return data that has been flagged as unreferenced by the GC process

Work Item
Describe the outcome you expect
If a client makes a request for a data store/component and that object has been marked as unreferenced by the GC process, the request should fail.
Approach
Option 1: ask SPO to return the unreferenced flag and use that information to fail requests for deleted content
Option 2: manage the referenced flags generated by the GC process at summarizer time in the runtime and use that info to fail the requests.
Acceptance criteria
Requests for deleted content will result in a 404.
The deleted content is never sent to the browser.

Ideally we would return something besides a 404 so the client can tailor the error message. It seems like a 410 response would be appropriate.

Ideally we would return something besides a 404 so the client can tailor the error message. It seems like a 410 response would be appropriate.


consistency-level can not be configured

System info: [Include InfluxDB version, operating system name, and other relevant details]
consistency-level can not be configured
Reference:
https://docs.influxdata.com/enterprise_influxdb/v1.8/concepts/clustering/#hinted-handoff
Steps to reproduce:

[First Step]
[Second Step]
[and so on...]

Expected behavior: [What you expected to happen]
Actual behavior: [What actually happened]
Additional info: [Include gist of relevant config, logs, etc.]
If this is an issue of for performance, locking, etc the following commands are useful to create debug information for the team.
curl -o profiles.tar.gz "http://localhost:8086/debug/pprof/all?cpu=true"

curl -o vars.txt "http://localhost:8086/debug/vars"
iostat -xd 1 30 > iostat.txt

Please note It will take at least 30 seconds for the first cURL command above to return a response.
This is because it will run a CPU profile as part of its information gathering, which takes 30 seconds to collect.
Ideally you should run these commands when you're experiencing problems, so we can capture the state of the system at that time.
If you're concerned about running a CPU profile (which only has a small, temporary impact on performance), then you can set ?cpu=false or omit ?cpu=true altogether.
Please run those if possible and link them from a gist or simply attach them as a comment to the issue.
Please note, the quickest way to fix a bug is to open a Pull Request.

Please refer to:

Write Consistency
/write Query parameters: consistency=[any,one,quorum,all]
public void write(final String database, final String retentionPolicy, final ConsistencyLevel consistency, final TimeUnit precision, final String records)

@chengshiwen Thanks.


Funding integration

:heart: Thank you for your contribution!
Description
Please describe briefly your pull request.
Checklist
Ticks in all boxes and 🟢 on all GitHub actions status checks are required to merge:

[ ] I'm aware of the code of conduct.
[ ] I've created logical separate commits and followed the commit message format.
[ ] I've added relevant test cases.
[ ] I've added relevant documentation.
[ ] I've marked translation strings (for relevant code).
[ ] I've followed the CSS/JS and React guidelines (for relevant code).
[ ] I've followed the web accessibility guidelines (for relevant code).
[ ] I've followed the user interface guidelines (for relevant code).
[ ] I've identified the copyright holder(s) and updated copyright headers for touched files (>15 lines contributions).
[ ] I've NOT included third-party code (copy/pasted source code or new dependencies).

Third-party code
If you've added third-party code (copy/pasted or new dependencies), please reach out to an architect.
Reminder
By using GitHub, you have already agreed to the GitHub’s Terms of Service including that:

You license your contribution under the same terms as the current repository’s license.
You agree that you have the right to license your contribution under the current repository’s license.

Can we close https://github.com/inveniosoftware/invenio-app-rdm/pull/768 with this one?

Video updated after applying changes from review
https://user-images.githubusercontent.com/6756943/167575388-63f22f1e-dd38-492a-960b-4ee9013003da.mov


IntAcct API information

https://developer.intacct.com/api/
Here are some question I have asked and gotten answers for.
Vendor:

Does the vendor object in IntAcct have fields for banking information? Even international versions with IBAN etc? Yes, Vendor records have banking information fields. I don’t believe international banking information fields are available but could be added as custom fields. Below are the standard ACH fields.

If Hypha create a vendor object in IntAcct and gets an OK response. Is it safe for us to delete the information in Hypha and rely on it being in IntAcct? We will most likely only save sensitive information like bank accounts temporarily in Hypha. Yes, once a vendor record is added, it will not be deleted unless a delete API call is made or a user manually deletes the record.
Can Hypha ask IntAcct if a vendor has a contract or not? The plan is to via a cron job update vendor status in Hypha (maybe twice daily). Yes, you would use the “List Purchasing Transactions” API call and set the filter to be the vendor ID: https://developer.intacct.com/api/purchasing/purchasing-transactions/#list-purchasing-transactions

Invoices:

Is it possible for Hypha to ask IntAcct for all deliverables belonging to all contracts of a specific vendor? OR do we need to make call for each contract? Yes, you can get all purchasing transaction lines for all contracts belonging to a vendor using this API call: https://developer.intacct.com/api/purchasing/purchasing-transactions/#list-purchasing-transaction-lines
Can we add one or more of these deliverables when we create an invoice from Hypha in IntAcct? Yes, you can add multiple lines per purchasing transaction.
Can Hypha update an already created invoice in IntAcct? Yes, you would want to update the purchasing transaction. Here is the update call: https://developer.intacct.com/api/purchasing/purchasing-transactions/#update-purchasing-transaction-legacy
Does the invoice become locked when it has been approved/paid or do we need to handle that scenario in Hypha? Once an invoice has been approved, it can be edited before payment however would require re-approval. Once an invoice has been paid, coding can be reclassified but amount may not be changed. Once a period is closed reclassification cannot occur nor can the invoice be edited unless the period is re-opened.
Can we attach a PDF to an invoice created from Hypha in IntAcct? Yes, however if the attachment is in Hypha and will remain there then most integrations utilize a custom link back to the source document. In order to create an attachment in Intacct the file’s binary data must be Base64 encoded. More information on the dev site: https://developer.intacct.com/api/company-console/attachments/#create-attachment-legacy (Edit: Hypha will most likely keep the files and only add links to them in IntAcct)
If Hypha updates an IntAcct invoice and has a new PDF file can it overwrite the existing PDF? You would have to first delete the existing attachment then use the above create call to replace.
Can we have one or two link fields on an IntAcct invoice so Hypha can send along links back to the Hypha project and a link to the original invoice (if we can't save that in  IntAcct, see 4.) Yes, we can add custom link fields on the Intacct purchasing invoice.
Can Hypha ask IntAcct about invoice status? What status are available? We plan to update invoice status in Hypha via a cron job (maybe twice daily). Yes, you would use the “List Purchasing Transactions” call and request the field: STATE. The available values for purchasing transaction state are: S for Submitted, A for Approved, X for Partially Approved, R for Declined, I for Draft, O for Pending, D for Closed, G for In Progress, C for Converted, P for Partially Converted. https://developer.intacct.com/api/purchasing/purchasing-transactions/#list-purchasing-transactions
We want to show the status of an invoice, in Hypha, when it has been paid via IntAct.
Can we query the status of the invoice to see if it is paid (via the AP module)? Yes, you would use the List Bill API call requesting the STATE field and a filter for RECORDID (Bill Number on AP Bill) = VENDORDOCNO (Purchasing Vendor Invoice Bill Number). Or you could filter on DESCRIPTION2 (Document ID on AP Bill) = DOCID (Purchasing document ID). Both fields are required on the vendor invoice and propagate through to AP. The first is usually the Vendor’s Bill #, the second is a system generated document # (from Purchasing).

@sks444 It seems to be time to start the IntAcct API work. My goal is as follow:

Have all IntAcct API code in a separate app/directory.
Make it possible to add other API integrations in their own separate app/directory. Maybe have them all in a common subdirectory? "projecttsapi"?
Hava a setting where Hypha using organisations can select which api to use, none should be an option as well.

Is this feasible? Ideas how to implement?

Asking @Parbhat for input here as wells above comment.

Yes @frjo, I will start looking at the IntAcct APIs spec and plan out the implementation.
In the meantime, my plan is to complete the basic payment flow before starting out the api integration implementation:

Add vendor details
Create Invoice
Add deliverables to project and invoice
Approve an invoice/request changes/decline

I think once this issue(https://github.com/HyphaApp/hypha/issues/2383) is done. We would have the flow completed at a basic level. And we could move on to API integration.
Completion of the flow would make sure that we have the data at Hypha that needs to updated on IntAcct and db models at Hypha that can store the data fetched from IntAcct. This would make it easier for us to test things.

Using a directory say services inside projects app seems good. There can be separate file for each external services Or directory for each external services if code needs to be arranged further.

@frjo, I wanted to understand a few fundamentals about IntAcct..dashboard..i.e: How to create vendor/managing and processing invoices..etc.
Looks like I would need to have a separate account at learning centre to get access of such documents.
I am logged in to my account at https://www-p02.intacct.com/ia/acct/frameset.phtml?.sess=bfGNtg5qgTbbqAeXz7N-yTr4NtqoYg..# but there I can't find any info related to adding vendor/invoices etc.

@sks444 I could link a new account to my IntAcct account. Let me know if the following work for you as well:

Go to https://www.sageintacct.com/training
Scroll down to "Getting started is easy" and click the "Sign in" link.
In the login box top right you see a button "Sign in with Sage Intacct". Use that with your IntAcct account.

Thanks @frjo, I am logged in to training centre with my Sage IntAcct account.
It shows: Contact your admin to give you permissions to Sage Intacct connections - Learning Center in the Company application.

I have reviews our accounts and we should have the same level of access.
Did you see this login box and clicked the button the red arrow points to?

And then this page?

That leads me to this page.

Yes I logged in the same way but nothing shows up on the page except:

@sks444 I think I finally found a difference between our accounts. It should hopefully work now.

We also have access to an IntAcct specialist at claconnect.com that we can ask questions. She knows here stuff and are easy to communicate with. Will send here an e-mail, adding you and Parbhat as CC.

Thanks @frjo.
Just wanted to make sure that if it's okay to update/add info/entries at the opentechfund-sandbox instance of Sage Intacct that I have access to.

Yes, in the sandbox we are free to play around as needed.


refactor: Add /v1 to Meetings endpoints

Adds the /v1 part to the Meetings API endpoint paths to future-proof the SDK and ensure compatibility / consistency.

Codecov Report

Merging #482 (129e90e) into main (52f8059) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##               main     #482   +/-   ##
=========================================
  Coverage     93.74%   93.74%
  Complexity     2796     2796
=========================================
  Files           423      423
  Lines          7175     7175
  Branches        460      460
=========================================
  Hits           6726     6726
  Misses          252      252
  Partials        197      197

Files
Coverage Δ

...com/vonage/client/meetings/CreateRoomEndpoint.java
94.44% <ø> (ø)

...om/vonage/client/meetings/CreateThemeEndpoint.java
94.44% <ø> (ø)

...onage/client/meetings/DeleteRecordingEndpoint.java
100.00% <ø> (ø)

...om/vonage/client/meetings/DeleteThemeEndpoint.java
100.00% <ø> (ø)

.../vonage/client/meetings/FinalizeLogosEndpoint.java
100.00% <ø> (ø)

...age/client/meetings/GetLogoUploadUrlsEndpoint.java
87.50% <ø> (ø)

...m/vonage/client/meetings/GetRecordingEndpoint.java
90.00% <ø> (ø)

...va/com/vonage/client/meetings/GetRoomEndpoint.java
90.00% <ø> (ø)

...a/com/vonage/client/meetings/GetThemeEndpoint.java
90.00% <ø> (ø)

...onage/client/meetings/ListDialNumbersEndpoint.java
91.66% <ø> (ø)

... and 8 more