revamp with .net 8

Complete rewrite using improved .NET 8 WASM capabilities and new JavaScript interop.
Changed

Package name changed to Bootsharp.
All the package-specific MSBuild properties got "Bootsharp" prefix to prevent conflicts; eg BootsharpEmbedBinaries.
Event.getLast() changed to Event.last.
Enums are now serialized as numbers by default (prev. strings). This can be changed via Bootsharp.Serializer.Options in C#. Enum names can still be accessed in JS, eg:
enum MyEnum { Foo, Bar } // C#

MyEnum[MyEnum.Foo] === "Foo" // JS

Improved

The package now uses stock .NET runtime. (resolves #20, resolves #17)
Multithreading is now supported.  (resolves #79)
AOT compilation is now supported. Package itself is now completely free of dynamic code and fully AOT-compatible.
Trimming is now supported. With aggressive trimming enabled, minimal compressed build size is 744 KB.
Stream-compiling WASM module is now supported.
ES module is now produced instead of UMD, providing support for modern consumption scenarios in both browsers and JavaScript runtimes (node, deno, bun and VS Code web extension were tested). (resolves #53)
Internal JSON serializer now works in source generation mode and doesn't use reflection.
New JavaScript interop doesn't use reflection and allows direct transfer of common data types (byte, int, bool, char, string and arrays of them); only custom data structures are serialized to JSON. (resolves #75, resolves #51, resolves #19)
Added extensions on Microsoft.Extensions.DependencyInjection for automatic injection and instantiation of the generated interop implementations (via standalone package).
Event.last now returns all the arguments of the last broadcast (previously returned only the first one).
When invoking a C# API while the runtime is not booted or invoking JavaScript binding which has not been assigned, an error with the endpoint is thrown. (resolves #26)

Fixed

Publishing to custom output path. (fixes #112)
Defining bindings in non-entry assemblies. (fixes #23)
Disposing runtime WASM module resources. (fixes #22)

TODO

[ ] Explore replacing source generator with interceptors. This will move all the codegen logic to the builder, which in turn will allow defining single entry point for namespace overrides (and potentially adding single extensibility point for more overrides, eg [assembly: JSExport<MyCustomOptions>(...)]. (resolves #50, resolves #72)
[ ] Explore adding an option to auto-generate instance bindings. Eg: [JSExport(typeof(JSInstance<IMyService>))] or [JSInstance(typeof(IMyService))]. (resolves #84)
[ ] Explore binding properties.

Any ETA on the merge?

Any ETA on the merge?

Hopefully by the end of the year. Planned to finish before .NET 8 GA, but got distracted with a side hustle. Though, it's already fully functional: I've migrated my own projects and everything seem to be working fine. Here are the latest packages if you'd like to try it out: bootsharp.zip.

Hopefully by the end of the year. Planned to finish before .NET 8 GA, but got distracted with a side hustle. Though, it's already fully functional: I've migrated my own projects and everything seem to be working fine. Here are the latest packages if you'd like to try it out: bootsharp.zip.

Thanks for the packages! I was able to test the generation, but I'm not sure if it generated the desired outcome. Basically, it generates bin\Debug\net8.0\browser-wasm\AppBundle, but using BootsharpPackageDirectory for a custom path where the end package should be copied seems not to work.
Should the outcome be similar to what we had previously? The typescript declaration for the package and the wasm files?

Yes, it should be similar to how it's worked before. Check the samples: https://github.com/elringus/DotNetJS/tree/feat/revamp/Samples

Many thanks for your effort. I'm amazed how you got this working as there is not much information available I found.
I have an issue when publishing a project with bootsharp: After sucessful compilation the process exists with error code "npx rollup bootsharp.js -o bootsharp.mjs -f es -g process,module --output.inlineDyn
amicImports" + another message "Cannot find module 'node:process'". This happens when I build the samples (ex. Trimming ) as well as in my own projects I tried it with. Any idea what this might be?

@Problemkurs Make sure node v20 or later is in the system path. (https://nodejs.org)


New Version of FLora-2

There is a new RC for Flora2.1, which includes useful date and time calculations. Need to confirm that the existing code works properly with the new RC in dev.

Existing code seems to work fine. Need to make changes to the Dockerfile to refer to the new version of Flora-2 when it is released.

Existing code seems to work fine. Need to make changes to the Dockerfile to refer to the new version of Flora-2 when it is released.

Implemented in Dev in #59

Implemented in Dev in #59


Web app: Display error messages for failing connections

If ntfy is hosted behind a proxy server that doesn't have websocket enabled by default, the topic subscribed keeps spinning and there is no visual indication of what is potentially wrong. I was able to notice that it was failing to connect to websocket.
Synology NAS uses nginx for its configuration and is internal implementation details. They provide an UI to enable it. https://kb.synology.com/en-us/Surveillance/tutorial/WebSocket_connection_fail_streaming_issue
You can try to reproduce it by adding it behind nginx with websockets disabled.

i had the same problem. fixed it by changing the nginx config.
relevant settings:
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
    proxy_set_header Host $host;

full nginx config example:
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {
	listen       *:443 ssl;
	server_name ntfy.example.com;

	ssl on;
	ssl_certificate           /etc/letsencrypt/live/ntfy.example.com/fullchain.pem;
	ssl_certificate_key       /etc/letsencrypt/live/ntfy.example.com/privkey.pem;
	ssl_dhparam               /etc/ssl/dhparam.pem;
	ssl_session_cache         shared:SSL:10m;
	ssl_session_timeout       5m;
	ssl_protocols             TLSv1 TLSv1.1 TLSv1.2;
	ssl_ciphers               ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS;
	ssl_prefer_server_ciphers on;

	root /var/www/html;
	client_max_body_size 50m;
	proxy_buffering off;

	access_log            /var/log/nginx/ntfy.example.com.access.log combined;
	error_log             /var/log/nginx/ntfy.example.com.error.log;

	location ^~ /.well-known {
		index     index.html index.htm index.php;
		allow all;
	}

	location / {
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header X-Forwarded-Proto $scheme;
		proxy_set_header host $host;
		proxy_connect_timeout 300;
		proxy_http_version 1.1;
		proxy_set_header Upgrade $http_upgrade;
		proxy_set_header Connection $connection_upgrade;
		proxy_pass http://unix:/var/run/ntfy/ntfy.sock:/;
	}
}

further reading:

https://www.nginx.com/blog/websocket-nginx/
https://www.tutorialspoint.com/how-to-configure-nginx-as-reverse-proxy-for-websocket
https://futurestud.io/tutorials/nginx-how-to-fix-unknown-connection_upgrade-variable


fix isChannelPairInUse()

Codecov Report

Merging #306 (4f2d7a3) into main (e583556) will decrease coverage by 0.02%.
The diff coverage is 100.00%.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
@@            Coverage Diff             @@
##             main     #306      +/-   ##
==========================================
- Coverage   84.75%   84.73%   -0.02%
==========================================
  Files          99       99
  Lines       10112    10112
==========================================
- Hits         8570     8568       -2
- Misses       1219     1220       +1
- Partials      323      324       +1

Impacted Files
Coverage Δ

client.go
73.02% <100.00%> (ø)

server_session.go
77.23% <100.00%> (ø)

... and 1 file with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


End/Home keys do not work

I just created a new MSYS2-based setup here, which I use together with latest ConEmu and run msys's bash in it.
I got everything to work pretty well except for the Home and End key. If I press them they just print ~ and do nothing.
If figured that I can fix it in ~/.inputrc with this config:
"\e[1~": beginning-of-line         # Home
"\e[4~": end-of-line               # End

That makes them work locally, but once I am ssh'd in a machine they go back to not working. They worked fine with my old mingw+msys1 setup, including in ssh, so I am thinking it must be possible to fix but I have no clue how. Help would be appreciated if it's a failure on my part.
Note that keys work fine if I use the msys2_shell.bat script to start mintty but I like ConEmu's tabbed interface so if I can make it work there that would be great.

Have you tried with the ConEmu version from the msys/conemu-git package? With this version, HOME and END keys work in MSYS2 Bash on the command line. Though, I haven't figured yet out how to get more complex console applications such as vim or mc to work properly in ConEmu. Also, the clear command isn't working as expected and I had to emulate it via a bash alias echoing an escape sequence.

Yeah sorry the home/end was due to a misconfiguration of some sort. I figured it out and now those work fine even without inputrc tweaks.
I however have an issue with function keys and alt-1, alt-2, etc not working in irssi/screen. Not sure what's up there, but I am not sure which part is at fault in the whole chain.


Merge fetch_qc_torsiondrive example into retrieving-results

Description
This PR adds the 2D torsion drive visualization from the 2024 SMIRNOFF workshop (gist here) to the existing retrieving-results.ipynb example. This was a pretty small change but also required adding plotly and nglview as dependencies in the CI environments and updating a little bit of the prose in the example.
Todos
Notable points that this PR has either accomplished or will accomplish.

[x] Add 2D torsion visualization to examples

Status

[ ] Ready to go

Thank you! Release notes updated. I'll squash and merge once the checks finish again!


Support Numba 0.57

Codecov Report

Merging #12 (4137e1f) into master (68b63cf) will decrease coverage by 0.71%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master      #12      +/-   ##
==========================================
- Coverage   55.08%   54.38%   -0.71%
==========================================
  Files          11       11
  Lines         334      331       -3
  Branches       71       68       -3
==========================================
- Hits          184      180       -4
  Misses        134      134
- Partials       16       17       +1

see 4 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


[Bug] Performance Issue after w4 quantization model converted to turbomind format

Checklist

[X] 1. I have searched related issues but cannot get the expected help.
[X] 2. The bug has not been fixed in the latest version.

Describe the bug
I am still getting this issue, used pre-quantized model repo and converted to turbomind, but getting this
https://huggingface.co/lmdeploy/llama2-chat-7b-w4

Reproduction
Used this command to convert:
python3 -m lmdeploy.serve.turbomind.deploy     --model-name llama2     --model-path ./llama2-chat-7b-w4     --model-format awq  --group-size 128
Error traceback
No response

It got solved for me, it is basically fault of nvidia architecture you are using. Check Cuda device capability by torch.cuda.get_device_capability(), if it is greater or equal to 8.0, then it will work perfectly


chore(deps): upgrade configuration

Upgrades project dependencies. See details in workflow run.

Automatically created by projen via the "upgrade-configuration-k8s-30-main" workflow

⚪ Backport skipped
The pull request was not backported as there were no branches to backport to. If this is a mistake, please apply the desired version labels or run the backport tool manually.
Manual backport
To create the backport manually run:
backport --pr 4854

Questions ?
Please refer to the Backport tool documentation


Add assign member to team functionality

Codecov Report
Base: 57.62% // Head: 55.75% // Decreases project coverage by -1.86% :warning:

Coverage data is based on head (f695f51) compared to base (3aa8b28).
Patch coverage: 0.00% of modified lines in pull request are covered.

Additional details and impacted files
@@             Coverage Diff              @@
##             master     #106      +/-   ##
============================================
- Coverage     57.62%   55.75%   -1.87%
  Complexity      406      406
============================================
  Files            88       90       +2
  Lines          1581     1634      +53
  Branches        157      165       +8
============================================
  Hits            911      911
- Misses          630      683      +53
  Partials         40       40

Impacted Files
Coverage Δ

...du/address/logic/commands/AssignMemberCommand.java
0.00% <0.00%> (ø)

.../seedu/address/logic/parser/AddressBookParser.java
69.56% <0.00%> (-3.17%)
:arrow_down:

...seedu/address/logic/parser/AssignMemberParser.java
0.00% <0.00%> (ø)

src/main/java/seedu/address/model/AddressBook.java
61.36% <0.00%> (-2.93%)
:arrow_down:

src/main/java/seedu/address/model/Model.java
100.00% <ø> (ø)

...rc/main/java/seedu/address/model/ModelManager.java
56.97% <0.00%> (-13.03%)
:arrow_down:

...a/seedu/address/model/person/UniquePersonList.java
79.16% <0.00%> (-13.52%)
:arrow_down:

src/main/java/seedu/address/model/team/Team.java
0.00% <0.00%> (ø)

.../java/seedu/address/model/team/UniqueTeamList.java
19.56% <0.00%> (-2.94%)
:arrow_down:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.

Seems fine.


x/crypto/acme/autocert: better error messages for failed validations

What version of Go are you using (go version)?
Does this issue reproduce with the latest release?
Yes, with latest golang.org/x/crypto/acme/autocert on 2023-06-01.
What did you do?
I'm using golang.org/x/crypto/acme/autocert in https://github.com/mjl-/mox. A user of mox couldn't get a TLS certificate with autocert through Let's Encrypt. The error message only contained "no viable challenge type found". They had to try different software to see the error messages Let's Encrypt was sending back. Autocert does not expose the errors, even though they describe nicely what the problem was (CAA lookup failed in this case).
What did you expect to see?
An error message like this:
unable to satisfy "https://acme-v02.api.letsencrypt.org/[...]" for domain "domain.example": no viable challenge type found (failures: tls-alpn-01: acme: authorization error for domain.example: 403 urn:ietf:params:acme:error:caa: CAA record for domain.example prevents issuance)

What did you see instead?
unable to satisfy "https://acme-v02.api.letsencrypt.org/[...]" for domain "domain.example": no viable challenge type found

Suggested patch
diff --git a/vendor/golang.org/x/crypto/acme/autocert/autocert.go b/vendor/golang.org/x/crypto/acme/autocert/autocert.go
index 6b4cdf4..d3fca39 100644
--- a/vendor/golang.org/x/crypto/acme/autocert/autocert.go
+++ b/vendor/golang.org/x/crypto/acme/autocert/autocert.go
@@ -694,7 +694,8 @@ func (m *Manager) verifyRFC(ctx context.Context, client *acme.Client, domain str
 	// all order authorizations: if we've tried a challenge type once and it didn't work,
 	// it will most likely not work on another order's authorization either.
 	challengeTypes := m.supportedChallengeTypes()
-	nextTyp := 0 // challengeTypes index
+	nextTyp := 0         // challengeTypes index
+	var authErrs []error // Validation errors, possibly hinting at a solution.
 AuthorizeOrderLoop:
 	for {
 		o, err := client.AuthorizeOrder(ctx, acme.DomainIDs(domain))
@@ -735,18 +736,29 @@ AuthorizeOrderLoop:
 				nextTyp++
 			}
 			if chal == nil {
-				return nil, fmt.Errorf("acme/autocert: unable to satisfy %q for domain %q: no viable challenge type found", z.URI, domain)
+				details := ""
+				if len(authErrs) > 0 {
+					details = " (failures: " + authErrs[0].Error()
+					for _, err := range authErrs[1:] {
+						details += "; " + err.Error()
+					}
+					details += ")"
+				}
+				return nil, fmt.Errorf("acme/autocert: unable to satisfy %q for domain %q: no viable challenge type found%s", z.URI, domain, details)
 			}
 			// Respond to the challenge and wait for validation result.
 			cleanup, err := m.fulfill(ctx, client, chal, domain)
 			if err != nil {
+				authErrs = append(authErrs, fmt.Errorf("challenge %s: preparing response for validation: %v", chal.Type, err))
 				continue AuthorizeOrderLoop
 			}
 			defer cleanup()
 			if _, err := client.Accept(ctx, chal); err != nil {
+				authErrs = append(authErrs, fmt.Errorf("challenge %s: requesting validation: %v", chal.Type, err))
 				continue AuthorizeOrderLoop
 			}
 			if _, err := client.WaitAuthorization(ctx, z.URI); err != nil {
+				authErrs = append(authErrs, fmt.Errorf("challenge %s: %v", chal.Type, err))
 				continue AuthorizeOrderLoop
 			}
 		}
@@ -755,6 +767,7 @@ AuthorizeOrderLoop:
 		// Wait for the CA to update the order status.
 		o, err = client.WaitOrder(ctx, o.URI)
 		if err != nil {
+			authErrs = append(authErrs, fmt.Errorf("waiting for order: %v", err))
 			continue AuthorizeOrderLoop
 		}
 		return o, nil

CC @FiloSottile @rolandshoemaker @golang/security


Migrate MySQL to sqlite

I've been running my Gogs instance on a MySQL database for some time. I've dump the database to an sqlite file, by using this https://gist.github.com/esperlu/943776 and the structure seems intact. However, when i boot up the Gogs instance with the config changed to
DB_TYPE = sqlite
DB_PATH = data/gogs.db

It throws this error: [...s/routers/install.go:71 GlobalInit()] [E] Fail to initialize ORM engine: migrate: sync: duplicate column name: id - I suspect Gogs, for trying to re-create the database which is throwing this error, as it already exists.
I'm using the latest master as of this writing: v<IP_ADDRESS>3

I think this question would be more apropriate in the forum: https://discuss.gogs.io/
Maybe you have better luck letting Gogs create the schema to you? You would run just the INSERTs after, skipping CREATE TABLEs and all.
Don't know if will work, just something to try.

Thanks @andreynering, I'll try that

I'm closing this since it's more like a deployment thing.
Maybe come back to this issue later.


The mouseover/out/click handlers of hexbins are called with old datum

After updating the data of the hexbins the mouse handlers are called with old datum.
When using the built-in popup (L.HexbinHoverHandler) its handler is also called with the old datum.

Fixed in v4, thanks for letting me know about this.


Switch from Travis to Azure for aarch64

Hi! This is the friendly automated conda-forge-webservice.
I've started rerendering the recipe as instructed in #3.
If I find any needed changes to the recipe, I'll push them to this PR shortly. Thank you for waiting!
Here's a checklist to do before merging.

[ ] Bump the build number if needed.

@conda-forge-admin, please rerender


Make global config path absolute

Description of the change
Fix #472 by making the global config path absolute. As a result of this we also need to make the output path absolute in order for spago test to continue working; and this in turn means a bunch of the test fixtures needed updating.
Checklist:

[x] Added the change to the "Unreleased" section of the changelog
[ ] ~Added some example of the new feature to the README~
[x] Added a test for the contribution (if applicable)

P.S.: the above checks are not compulsory to get a change merged, so you may skip them. However, taking care of them will result in less work for the maintainers and will be much appreciated 😊

If this goes in after #484 I can add a test like the one in that PR but with an absolute path.

Hmm this change apparently breaks spago test because the pretty printing inside findRootOutputPath seems to mangle absolute paths... I will investigate more later

@f-f Should be good to go now I think

@elliotdavies the Windows CI seems still unhappy about this, I'm not sure what might be up with it 🤔
And sorry for the bunch of merge conflicts, but we needed #486 to be in as soon as possible as that's swapping out the whole logging system so it would conflict with any other PR anyways

@f-f No worries, I can rebase!
Not sure about the Windows CI though :scream: Looks like it's calculating the absolute paths directly but something (Dhall?) doesn't like them.

@elliotdavies I'm afraid I don't have a Windows machine to test this on, but maybe @stkb might have some idea of what's happening here?

I will take a look

Hold on, I might have realized what's up here: I think Dhall doesn't support absolute paths on Windows!
I guess this could be reported upstream, but I now wonder if we can get away with a smaller fix here. E.g. what if we just change this line:
https://github.com/spacchetti/spago/blob/97a2131fbcce67c3af62255d24bddbae65a167b3/src/Spago/Config.hs#L115
..to something like
expr <- liftIO $ Dhall.inputExpr $ if isAbsolute path then path else "./" <> path

@f-f While I don't understand all the code yet, that change still produces the same error on my machine

@stkb note that I mean the change above to be on top of master, not on top of this PR. If you applied it on top of master and it still gives you that error then it's also good because it means we have found a smaller replication

..to something like
expr <- liftIO $ Dhall.inputExpr $ if isAbsolute path then path else "./" <> path

@f-f This seems to work for me :+1: I can put another PR up with the more minimal change. (By not making the path absolute when we read it in there is a chance we'll run into this problem again in future, but I guess we can cross that bridge when we get to it.)

@elliotdavies yes sounds great!


[signup] Send welcome email

TODO: welcome email template.

@subhankarb what template variables can we use for template emails in auth0

@subhankarb how are we doing on this?

Done. It takes application.name and logo parameter

I still need to draft this. @subhankarb don't i get more variables than that e.g. the name of the person signing up? Best thing here is probably a link to auth0 documentation.

There is one default mail format. That is
![Your logo goes here](https://d19p4zemcycm7a.cloudfront.net/logos/logo-100.png)

# Welcome to @@application.name@@!

If you are having any issues with your account, please don't hesitate to contact us by replying to this mail.

Thanks,
@@application.name@@

We can modify the template once we can set some custom email provider.
Then we can add these macros:

@@application.name@@
@@connection.name@@
@@user.email@@
@@user. username@@
But these are global level settings. These are same for all application. Can not be changed per application level

auth0 docs on customizing emails: https://auth0.com/docs/email/templates
Key points:

You must setup your own email provider using a third-party service (Amazon SES, Mandrill or SendGrid) or a custom provider to be able to customize your emails.
It is a fair amount of work to setup due to configuring security stuff
Attributes available in templates listed here https://auth0.com/docs/email/templates#html-liquid-syntax
Can design emails in HTML (or maybe plain text). Markdown support has been deprecated.
No API to set this. Have to do it manually.

Based on what we now know I'm pushing to backlog as not clear this is a priority and seems a fair amount of work.


Service Workers

Hi, I have explored the Advanced Webview but didn't found any option to control how service workers are loaded.
In my case I want to prevent or kill a service worker from running.
How is it possible to do?

In that regard, this library does not differ from the original WebView, which it extends. So you can just look up the specific parts of the documentation for Android’s WebView.


Help

May i either contact you on discord or can you help me here? i tried starting the bot, after setting up the env and i get this, I've added you on discord btw.

Hi,
You can send me a friend request on discord:
Kry0#1327
I can help you further there

Can u clone the fix/#1 branch of the repo and try running it. If you run into the same issues let me know :)

My apologies, didnt know you replied! that seems to work, but my issue i think is im not sure how to set up the supabase database? can u show me how to? also i've added u on discord but im guessing u dont see it, and how would i make it auto add users that add the bot?

Error was caused because supabase was not setup, closing.


For frame [imu4]: Frame [imu4] does not exist

After using "$rostopic echo /imu0" I got the following errrors the orientation in 'x','y','z','w' don't change

Hi @omarosamahu,
That is expected, since an IMU does not provide absolute orientation information but angular velocities (which can then be integrated over time to get relative orientation).


Allow theme to specify a border for block images

Allow a border to be set for block images using the theme. This allows figures to be more clearly offset from the text.

Any progress on this?
Dark themes are all across the place but mostly white images on paper need some border/delimitation!

I don't have time to work on this right now, but I would accept a PR from the community as long as it has a test.

Any advice on where the border would go? Is it just around the image, or around the caption too? Is it necessary to allow for space (i.e., padding) between the border and the image? Should the border stretch the width of the page?

I would copy the HTML rendering behavior. There you can manipulate the CSS in a way to add box shadow, which is useful for white background images on white background page.
Border should delimit the image only, caption is separate. If the image is 500px wide and you define 2px wide border, shrink image to 496 - border is part of the image.
Border:

color
width
style? (dotted, dashed, mixed, solid)
transparency?

Can you produce a shadow-style border?
Can you make it consider the [role], to make images exempt of this rule?
For instance [no-border] would omit the border etc.

Can you produce a shadow-style border?

Not with Prawn.
I'm not really asking to expand the scope of this. I'm asking what the minimum functionality is that would make it useful. I really don't have a lot of time for this, so it's either minimum or nothing.

We can implement the border as it already is available for other blocks (width, color, style). So the question is whether we need padding. It sounds like the answer is yes. What about the width? I'm assuming the width of the page?
This would be on or off. It can't be controlled by the document, at least not in the first iteration.

Padding should be around the image - between the image and the border itself - like creating a frame. What is outside of the border is not the concern of this setting.

In my case, I would be using this like CSS img { border: 3px solid gray }.

The border goes around the image only, not the caption.
The border size is approximately the same as the image itself; either slightly larger or the image is shrunk slightly to accommodate the border.
I do not need any padding between the image and the border or any additional padding anywhere else.
The resulting behavior would be the same as if I added a 3px border as part of the image itself.

I hope the above is helpful. It looks like @andraz-kozelj has given some feedback also. @mojavelinux, thanks for looking into this!

Thank you both. I think the requirements are now clear.
Since there are cases for extending the border out to the page margins, what I'm thinking is adding support for "auto" padding on the left and right. The auto value means "take up the remaining space". In other words:
image:
  padding: 0 auto

The only remaining case to address is when the image already extends to the page margins (i.e., pdfwidth=100%). Do we shrink the image so that the border will fit? I think we need to.

The only remaining case to address is when the image already extends to the page margins (i.e., pdfwidth=100%). Do we shrink the image so that the border will fit? I think we need to.

Yes, it seems like it would be necessary to shrink the image in that case.

While implementing this feature, I've learned that it would be incredibly complicated to shrink the image to fit inside the border (it's a bit of a chicken-egg problem and some of the logic lives inside Prawn and Prawn SVG). Therefore, we're going to draw the border on the inside of the box that is allocated for the image. If the border is thin, this will hardly be noticeable, so I think it's a fair trade off to get this feature implemented.


Can we have some natural focus behavior on window close ?

By "natural focus behavior" I mean that when a window closes, it automatically focuses on the one to its right (east), else to its left (west). Currently yabai has this focus behavior but only across windows of the same app, and if no more windows of the same app are visible, then it seems to stay focused on the app, though on no specific window, instead of focusing on any other open application window, let alone on the one to its right (else its left); and then we have to manually focus on some app window.
I've been able to achieve this desired "natural" behavior by creating a custom keybinding alt-w:
alt-w : \
    nextwinid=$(bash -c 'yabai -m query --windows --window east 2>/dev/null || yabai -m query --windows --window west 2>/dev/null' | jq -r .id) \
    bash -c 'yabai -m window --close && yabai -m window --focus $nextwinid'

...but this only works if you actually close windows with alt-w, but not with the normal cmd-w, or some other way.

So would it be possible to have this feature added ? If not would it at least be possible to get a list of windows IDs, akin toyabai -m query --spaces --space | jq .windows, sorted in the order that they are laid out on screen, from west to east, allowing us to implement this added feature ourselves using a yabai -m signal --add event=window_destroyed action.

I have something fairly natural in my config, no need to overload the system shortcuts:
yabai -m signal --add event=window_destroyed action="yabai -m query --windows --window &> /dev/null || yabai -m window --focus recent || yabai -m window --focus first"
yabai -m signal --add event=application_terminated action="yabai -m query --windows --window &> /dev/null || yabai -m window --focus recent || yabai -m window --focus first"

This will select the previous window (so in most cases the n,w,e,s window) or if that fails the first window of the screen.

I have something fairly natural in my config, no need to overload the system shortcuts:
yabai -m signal --add event=window_destroyed action="yabai -m query --windows --window &> /dev/null || yabai -m window --focus recent || yabai -m window --focus first"
yabai -m signal --add event=application_terminated action="yabai -m query --windows --window &> /dev/null || yabai -m window --focus recent || yabai -m window --focus first"

This will select the previous window (so in most cases the n,w,e,s window) or if that fails the first window of the screen.

Try doing this:

... and try closing windows. at least for me, when I try doing this, when I close a chrome window, it jumps to the next chrome window, and not the kitty window to its right, like it's supposed to, else the window to its left, if there are none to its right.

This is just how focus works on macOS. yabai is not doing anything here, and you will find that if you set the exact same layout and then disable yabai, the behaviour will persist. The reason why yabai is not doing anything, is simply that there is no way to prevent this macOS behaviour from taking effect, and so if yabai tries to do things it will a) mess with focus history, b) in some cases it will lead to arbitrary flicker and inconsistent effects due to timing.
If the signal and query system is not powerful enough to make this behaviour scriptable by the user, the solution would be to improve those, imo.


[client] improve social module

styling
add tribe in the players leaderboard
add sorting

Closed by #2081


disable innobackupex --version-check

When rebuilding a failed galera container, the joiner attempts to pull updates from the donor but the donor fails due to what appears to be a permission issue with the percona-version-check in /tmp. After modifying the permissions to mysql:mysql, the transfer succeeds and the container can then join the cluster.
A few others have ran in to this same issue as well. Is it necessary that we keep this enabled?

Does this need more information? It is still an issue when version checking is enabled for Galera.

This is still an issue.

Should we be disabling version check, or should we be changing the location instead? (--tmpdir)

I think this is still a valid issue. If the removal of the version check fixes this issue, it debatable. I seem to recall a percona fix around that. I guess we are open to all ways of fixing this issue

Are you getting this issue when running a play or running something manually?  Do you hit this when simply rebuilding the container instead of trying to rejoin an existing contianer?

Usually we get this issue after deploying the cluster, at least I did not encounter it during play run. Suddenly replication dies with this error after running galera for few days/weeks

So why is this check running in the first place?

It is enabled by default as of xtrabackup 2.1.6.
https://www.percona.com/doc/percona-xtrabackup/2.1/release-notes/2.1/2.1.6.html
I believe we'd need to add the following to one of the mysql config files if we want to disable it.
[xtrabackup]
no-version-check=true

if we set this value it'll likely need to go into this file
playbooks/roles/galera_server/templates/cluster.cnf.j2
we may not need to set it based on what @BjoernT for newer versions of galera (they fix this possibly)  so maybe kilo only?

I think before we submit this bug upstream (because that's where the fix would go) we need to understand why this is happening.  I'm hesitant to disable something when we don't know the root cause.

Upstream closed as Won't Fix at https://bugs.launchpad.net/openstack-ansible/+bug/1511910 since it's a known upstream bug with the package versions we use.
I think we were looking for an RPC-specific band aid.
For reference, here's an older bug mentioning the same issue and work arounds:
https://bugs.launchpad.net/percona-xtrabackup/+bug/1255451


Precharge layout generator

Codecov Report

Merging #37 (0258e88) into master (95bef36) will decrease coverage by 1.54%.
The diff coverage is 7.79%.

@@            Coverage Diff             @@
##           master      #37      +/-   ##
==========================================
- Coverage   61.78%   60.24%   -1.55%
==========================================
  Files          34       34
  Lines        2761     2832      +71
==========================================
  Hits         1706     1706
- Misses       1055     1126      +71

Impacted Files
Coverage Δ

sram22/src/cells/gates/nand/single_height.rs
100.00% <ø> (ø)

sram22/src/lib.rs
14.66% <0.00%> (-0.20%)
:arrow_down:

sram22/src/precharge/layout.rs
0.00% <0.00%> (ø)

sram22/src/cells/gates/mod.rs
75.00% <66.66%> (-25.00%)
:arrow_down:

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 95bef36...0258e88. Read the comment docs.


Local installation not working

With the latest version (either beta or master), I can't get Lexonomy to run locally anymore. Tried a fresh clone (on Linux Mint 18.3, based on Ubuntu 16.04), followed the instructions under Inside a user environment, but I get the following error:
$ python3 lexonomy.py
Traceback (most recent call last):
  File "lexonomy.py", line 175, in <module>
    import paste
ImportError: No module named 'paste'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "lexonomy.py", line 177, in <module>
    except ModuleNotFoundError:
NameError: name 'ModuleNotFoundError' is not defined

i understand, this won't solve the problem - but, at least, the docker version still works (this means, comparing the two environments, the one described in INSTALL.md and the automatically built one should help disentangle the issue).
i was also thinking that having an auto-build for the 'user environment' use-case should be a thing.
i will self-assign the ticket and take care of these things (during the upcoming hackathon)

[ ] update INSTALL.md (or whatever needs updating)
[ ] set-up minimal CI for 'user environment' use-case (i.e. bypass docker)

The problem is that your version of Python is throwing NameError instead of ModuleNotFoundError. That is weird if it is indeed Python 3. If you replace ModuleNotFoundError with NameError, it will probably work I guess, but it is still weird. Can you post python3 --version?
Btw, I'm now in Leiden so you can drop by if you want.

Okay, thanks. My Python version is 3.5.2, and it seems ModuleNotFoundError is available starting from 3.6. I'll see if I can upgrade easily.

Installed 3.6, and python3.6 lexonomy.py seems to work, but when I load http://localhost:8000/ in the browser, it says 400 Bad Request. Here's the output from lexonomy.py:
Bottle v0.13-dev server starting up (using WSGIRefServer())...
Listening on http://localhost:8000/
Hit Ctrl-C to quit.

<IP_ADDRESS> - - [12/Jun/2019 09:29:00] "GET / HTTP/1.1" 400 303

Maybe we can have a look this afternoon. Alternatively I'll look into Docker.

On my Chromebook, running Xubuntu 16.04, I get a different error when running lexonomy.py:
$ python3.6 lexonomy.py
Traceback (most recent call last):
  File "lexonomy.py", line 4, in <module>
    import os, sys, json, sqlite3, functools, ops
  File "/home/jan/projects/tmp/lexonomy/website/ops.py", line 5, in <module>
    siteconfig = json.load(open(os.environ.get("LEXONOMY_SITECONFIG", "siteconfig.json")))
  File "/usr/lib/python3.6/json/__init__.py", line 296, in load
    return loads(fp.read(),
  File "/usr/lib/python3.6/encodings/ascii.py", line 26, in decode
    return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 1301: ordinal not in range(128)

first, check if LEXONOMY_SITECONFIG is defined as environment variable
$ [[ -v LEXONOMY_SITECONFIG ]]; echo $?
Let's say its not defined (there is 1 in stdout). Next, check if "./siteconfig.json" is proper ascii file:
$ file ./siteconfig.json
If it says it is utf-8, then you could change that line to force utf-8 decode:
> configfile = os.environ.get("LEXONOMY_SITECONFIG", "siteconfig.json")
> json.loads(open(configfile, 'rb').read().decode('utf8'))

Although this should be the default by my pythonic standards, but here you get a strange ascii decode error, so try this.

something is strange... try this
python3.6 -c "import sys; import os; import platform; print(sys.getfilesystemencoding()); print(sys.platform); pyioenc = os.environ['PYTHONIOENCODING'] if 'PYTHONIOENCODING' in os.environ else 'undefined'; print(pyioenc); print(platform.python_version());"
echo "LANG:"$LANG "LC_ALL:"$LC_ALL "LC_CTYPE:"$LC_CTYPE

...which should give something like (but the details depend on your system):

utf-8
linux
undefined
3.6.8
LANG:en_US.UTF-8 LC_ALL: LC_CTYPE:

and then try this:
echo "héhé"|python3.6 -c 'import sys; sys.stdout.write(sys.stdin.read())'|cat
echo "héhé"|LANG= PYTHONIOENCODING=utf-8:surrogateescape python3.6 -c 'import sys; sys.stdout.write(sys.stdin.read())'|cat

Output of the first two commands:
ascii
linux
undefined
3.6.8
LANG: LC_ALL: LC_CTYPE:

The second command doesn't copy/paste right to the terminal, probably because the default encoding seems to be ascii instead of utf-8. Probably a quirk of Xubuntu.

By the way @gareins, forcing utf8 fixed it. Mint is working again as well; not sure, but it seems I messed something up there before.

ok, we know it's utf-8: insofar, it seems reasonable to explicitly state that it's utf-8 (because the default obviously depends on the system setting...).
still, you should do something like:
sudo dpkg-reconfigure locales

and set a utf-8 default locale (if you want to be as language agnostic as possible you can look for C.UTF-8. however, the availability might depend on a package and/or you have to set this manually in /etc/default/locale).

My "solution" is far from perfect, because it means you have to be aware of the encoding every time you open any text file - if there are none, then fine. There are better ways however, like doing it system-wise, like @iiegn, but that is manual work. If we want it as part of the code, you could do this, but this has other bad side effects.
I vote for @iiegn 's solution with just a section in INSTALLATION.md and then it's the administrator's problem.

Unless there's a pressing reason to support other encodings, I would opt for always explicitly reading text files as UTF-8. It's a simple approach that works on any system, no matter how it's configured.
But I guess giving very clear instructions in INSTALLATION.md is also okay.

and. finally. done. (re-)opened subplots from here as new issues: #139 #140


Doc error in production segment

The production documentation assumes that gunicorn is installed with inv update - but that is not the case anymore.
Should we correct the docs or add gunicorn to the requirements?
@SchrodingersGat

Good catch - I think we should add this requirement back into the base requirements.txt file


feature request: allow system to show negative airspeed

Currently PX4 does not pass though negative airspeed (or diff pressure?) measurements from the diff pressure sensor module.  This hides potential problems from the users such as:  bad calibration or blocked/pinched or reversed pitot-static lines.  Negative values should be allowed to be sent to the system and ultimately displayed to the user.  These negative values can also be used to detect problems or prevent arming in other parts of the system.
partially related issue: https://github.com/PX4/Firmware/issues/9566

@Kjkinney let's ground test this soon.

PR https://github.com/PX4/Firmware/pull/9636

I think this is working fine in the recent Sentera builds.  I'll close it and we will continue to roll it in as a separate add-on to the sentera builds until it makes it into upstream and we sync.


AppVeyor: enable MSSQL ODBC connection

Re-worked #413 per @vadz comments.
Test code unchanged. Used command line tool for db creation.

Great, thank you, I think it's much better to do it like this.

Great effort @snikulov !

@mloskot Thank you :)
But now we have failed tests.
One exposes #383 and one MySQL problems on Windows.


Resources

@Adrian-Wrona, do you still need this issue? I see only one issue for a changelog in docs-new, and it's closed.

This is the last epic with 1 unfinished task. I am closing it, as everything left will be migrated and tracked under docs repository.


Allow for an alternate application name to be used as part of deploym…

…ent.
This lets us test applications that are compiled with a different assembly name

Required to E2E test https://github.com/aspnet/MvcPrecompilation/pull/82

👍


Performance issues in you project (by P3)

Hello! I've found a performance issue in your project: batch() should be called before map(), which could make your program more efficient. Here is the tensorflow document to support it.
Detailed description is listed below:

/data.py: dataset.batch(batch_size)(here) should be called before dataset.map(_parser)(here).
/data.py: dataset.batch(batch_size)(here) should be called before dataset.map(_parser)(here).
/data.py: dataset.batch(batch_size)(here) should be called before dataset.map(_preprocess_inference)(here).
/cGAN/data.py: dataset.batch(batch_size)(here) should be called before dataset.map(_parser)(here).
/cGAN/data.py: dataset.batch(batch_size)(here) should be called before dataset.map(_parser)(here).
/cGAN/data.py: dataset.batch(batch_size)(here) should be called before dataset.map(_preprocess_inference)(here).

Besides, you need to check the function called in map()(e.g., _preprocess_inference called in dataset.map(_preprocess_inference)) whether to be affected or not to make the changed code work properly. For example, if _preprocess_inference needs data with shape (x, y, z) as its input before fix, it would require data with shape (batch_size, x, y, z).
Looking forward to your reply. Btw, I am very glad to create a PR to fix it if you are too busy.

Hey, this looks good, unfortunately it's been a while since I looked at the codebase. I agree from the documentation that this should increase performance. Happy to accept a PR if you create it for this and any other issues.


Changed BotStats

Added some new modules and changed Previous UI
Request to author: Kindly change the owner parameter and attach it with the .env file. These are out of my reach.
Thanks.

You mean move all the config.js values to .env or just the owner parameters?

just the owner parameters.. ! it will help greatly

You may join the discord, we can help you there
https://discord.gg/fE75UShbqB

Okay Thanks!


gateway: fix gateway GetBucketInfo

When MultiBucket is false and bucketName is not equal to volumeName, return BucketNotFound instead of BucketNameInvalid
ref https://github.com/juicedata/jfs/issues/48

Codecov Report
Patch coverage has no change and project coverage change: -31.35 :warning:

Comparison is base (b9515a1) 56.24% compared to head (70b69f5) 24.90%.

Additional details and impacted files
@@             Coverage Diff             @@
##             main    #3498       +/-   ##
===========================================
- Coverage   56.24%   24.90%   -31.35%
===========================================
  Files         149       24      -125
  Lines       36303    14094    -22209
===========================================
- Hits        20420     3510    -16910
+ Misses      13647    10206     -3441
+ Partials     2236      378     -1858

see 146 files with indirect coverage changes
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Add product/permutations/combinations from Python itertools

We currently have cartestian_product(seq1, seq2, ...) which takes a pack of N sequences and yields N-tuples of all the possible combinations of elements from those sequences. This is equivalent to a set of N nested for loops, and to one form of the Python itertools product operation.
It's pretty common however to want to use the same sequence repeatedly with cartesian_product. Itertools provides a second form of product for this, using a repeat argument. It would be good if we provided an equivalent too.
We'd need it to have a different name, and we'd probably want to take N as a template parameter to avoid having to allocate. So we could have something like products<3>(seq), which would be equivalent to cartestian_product(seq, seq, seq) except that we wouldn't have to store multiple references to/copies of the sequence. The size of the resulting sequence would be size(seq)^N.
Itertools also provides the permutations operation, which would also be nice to have. This yields (in lexicographical order) all the length-N permutations of the elements of the input sequence. This is a strict subset of the elements of products<N>, skipping those tuples which contain repeated elements from the underlying sequence. If S is the size of the original sequence, the size of permutations<N> is S!/(S - N)!.
Finally, Itertools has two slightly different combinations operations. The first gives a strict subset of permutations, skipping tuples in which the elements are not in "sorted" order (according to their position in the initial sequence), and has size S!/N!(S-N)!
The second, the slightly oddly named (to me) combinations.with_replacement. This does the same as combinations except that it additionally allows individual elements to be repeated -- meaning the resulting elements are a subset of product<N>, but not permutations<N>. The number of elements is (S+N-1)!/N!(S-1)!.
To make this a bit more concrete, imagine an input sequenceseq = [a, b, c, d]. Then the various operations give:
products<3>(seq): (4^3 = 64 elements)
aaa, aab, aac, aad, aba, abb, abc, abd, aca, acb, acc, acd, ada, adb, adc, add
baa, bab, bac, bad, bba, bbb, bbc, bbd, bca, bcb, bcc, bcd, bda, bdb, bdc, bdd
caa, cab, cac, cad, cba, cbb, cbc, cbd, cca, ccb, ccc, ccd, cda, cdb, cdc, cdd,
daa, dab, dac, dad, dba, dbb, dbc, dbd, dca, dcb, dcc, dcd, dda, ddb, dcd, ddd

permutations<3>(seq): (4!/(4-3!) = 24 elements)
abc, abd, acb, acd, adb, adc,
bac, bad, bca, bcd, bda, bdc,
cab, cad, cba, cbd, cda, cdb,
dab, dac, dba, dbc, dca, dcb

combinations<3>(seq): (4!/3!*(4-3)! = 24/6 = 4 elements)
abc, abd, acd, bcd

combinations_with_replacement<3>(seq): ((4+3-1)!/3!(4-1)! = 6!/3!3! = 720/36 = 20 elements)
aaa, aab, aac, aad, abb, abc, abd, acc, acd, add,
bbb, bbc, bbd, bcc, bcd, bdd,
ccc, ccd, cdd,
ddd

I'm currently working on the products feature and I have a rough implementation that produces the correct output for the example seq = [a, b, c, d]. However, the majority of the code in products.hpp is the same as that in cartesian_product.hpp.
For example, the code in for_each_while_impl is the same for both except that sizeof...(Bases) is replaced with RepeatCount.
How might be a good way to reduce code duplication here?
I was thinking of extracting common functionality to a shared base class (similar to how cartesian_product_traits_base is used for both cartesian_product and cartesian_product_with).

Hi @isaacy2012,

I'm currently working on the products feature and I have a rough implementation that produces the correct output for the example seq = [a, b, c, d]. However, the majority of the code in products.hpp is the same as that in cartesian_product.hpp.

Thanks a lot for working on this.

For example, the code in for_each_while_impl is the same for both except that sizeof...(Bases) is replaced with RepeatCount.
How might be a good way to reduce code duplication here?
I was thinking of extracting common functionality to a shared base class (similar to how cartesian_product_traits_base is used for both cartesian_product and cartesian_product_with).

Yes, I think moving as much as possible up to a shared base class sounds like a good approach :)
cartesian_product_adaptor is one of the most complex adaptors we have in the library so you've chosen a tricky place to start! But if you have a working implementation already then it sounds like you're on the right track. If I can help, or if you have any questions about how Flux works then please let me know. Good luck!
Tristan

Hi Tristan,
Thanks for the feedback, I've moved the majority of the code shared between cartesian_product, cartesian_product_with, and the new cartesian_power (I feel it differentiates better with cartesian_product than simply products while keeping a standard prefix, though it does stray from the python.itertools naming – would be interested to hear your thoughts on the naming).
The code sharing between cartesian_product and cartesian_power is mostly enabled by a new get<I>() function in cartesian_traits_base that becomes std::get<I>(self.bases_) for  cartesian_product and self.base_ for cartesian_power, done through CRTP. This is the main change that facilitates effectively "repeating" the sequences.
However, because cartesian_product_with is unique in that it does not expose move_at, read_at_unchecked, etc..., those functions can't be publicly visible in the cartesian_traits_base struct. I've tried two approaches:

Make them protected in cartesian_traits_base and use using statements in cartesian_product_traits_base and cartesian_power_traits_base to expose them publicly

See https://github.com/tcbrindle/flux/compare/main...isaacy2012:flux:feat/products

Use another trait base cartesian_default_read_traits_base to expose those functions by having cartesian_product_traits_base and cartesian_power_traits_base  inherit from it.

See https://github.com/tcbrindle/flux/compare/main...isaacy2012:flux:feat/products-default-read-traits
I don't like 1. because of the repeated using statements, but 2. is a bit confusing because of the inheritance chain:
For cartesian_product sequence traits
---

sequence_traits<cartesian_product_adaptor<Bases...>> :
cartesian_product_without_traits_base<Bases...> :
cartesian_default_read_traits_base<cartesian_product_traits_base<Bases...>> : // inherits from the type parameter
cartesian_product_traits_base<Bases...>

For cartesian_product_with sequence traits
---

cartesian_product_with_adaptor::flux_sequence_traits :
cartesian_product_with_traits_base<Bases...> :
cartesian_product_traits_base<Bases...>

For cartesian_power sequence traits
---

sequence_traits<cartesian_power_adaptor<Bases...>> :
cartesian_power_traits_base<Bases...> :
cartesian_default_read_traits_base<cartesian_product_traits_base<Bases...>> :  // inherits from the type parameter
cartesian_product_traits_base<Bases...>

What are your thoughts on those approaches, or what might be a better way of expressing the orthogonal functionality of product vs power and _with vs [without] (I imagine that power_with is a natural next step/feature).
Many thanks,
Isaac

Hi Tristan,
Thanks for the feedback, I've moved the majority of the code shared between cartesian_product, cartesian_product_with, and the new cartesian_power (I feel it differentiates better with cartesian_product than simply products while keeping a standard prefix, though it does stray from the python.itertools naming – would be interested to hear your thoughts on the naming).

We already have flux::product which multiplies together all the elements of a sequence, so I think having a function called products that does something completely different is probably not a great idea! :). I quite like cartesian_power as an alternative. I'll do some research into what other languages/libraries call it to see if there's a commonly used name, but we can use cartestian_power as a placeholder for now.

The code sharing between cartesian_product and cartesian_power is mostly enabled by a new get<I>() function in cartesian_traits_base that becomes std::get<I>(self.bases_) for cartesian_product and self.base_ for cartesian_power, done through CRTP. This is the main change that facilitates effectively "repeating" the sequences.

This seems like a nice way of doing it 👍

However, because cartesian_product_with is unique in that it does not expose move_at, read_at_unchecked, etc..., those functions can't be publicly visible in the cartesian_traits_base struct. I've tried two approaches:

Make them protected in cartesian_traits_base and use using statements in cartesian_product_traits_base and cartesian_power_traits_base to expose them publicly

See main...isaacy2012:flux:feat/products

Use another trait base cartesian_default_read_traits_base to expose those functions by having cartesian_product_traits_base and cartesian_power_traits_base  inherit from it.

See main...isaacy2012:flux:feat/products-default-read-traits
I don't like 1. because of the repeated using statements, but 2. is a bit confusing because of the inheritance chain:
For cartesian_product sequence traits
---

sequence_traits<cartesian_product_adaptor<...>> :
cartesian_product_without_traits_base<...> :
cartesian_default_read_traits_base<cartesian_product_traits_base<...>> : // inherits from the type parameter
cartesian_product_traits_base<...> :
cartesian_traits_base<...>

For cartesian_product_with sequence traits
---

cartesian_product_with_adaptor::flux_sequence_traits :
cartesian_product_with_traits_base<...> :
cartesian_product_traits_base<...>
cartesian_traits_base<...>

For cartesian_power sequence traits
---

sequence_traits<cartesian_power_adaptor<...>> :
cartesian_power_traits_base<...> :
cartesian_default_read_traits_base<cartesian_traits_base<...>> :  // inherits from the type parameter
cartesian_traits_base<...>

What are your thoughts on those approaches, or what might be a better way of expressing the orthogonal functionality of product vs power and _with vs [without] (I imagine that power_with is a natural next step/feature).

(FYI, I've been intending to rename cartesian_product_with to cartesian_product_map (to better describe what it does) and it's even listed that way in the documentation, but I hadn't got round to actually changing it in the code yet!)
But yeah, I can see the difficulty: we have four adaptor classes that do fairly similar things and we'd like to make sure we reuse code sensibly between the implementations.
Of the two approaches you show, I think I'd lean towards the second one -- like you, I'm not too keen on the using directives. But I wonder if we could simplify the inheritance hierarchy a little by getting rid of the cartesian_product_traits_base and cartesian_power_traits_base classes? So we'd have:
sequence_traits<cartesian_product_adaptor<...>>
  : cartesian_read_traits<...> // "mixin" to add read_at(), read_at_unchecked() returning a tuple
     :  cartesian_traits_base<...> // provides inc(), is_last() etc etc

sequence_traits<cartesian_product_map_adaptor<...>>
    : cartesian_map_traits<...> // "mixin" to add read_at() which invokes a function
      cartesian_traits_base<...>  // provides inc(), is_last() etc

sequence_traits<cartesian_power_adaptor<...>>
   : cartesian_read_traits<...>
      : cartesian_traits_base<...>

sequence_traits<cartesian_power_map_adaptor<...>>
   : cartesian_map_traits<...>
       : cartesian_traits_base<...>

This might involve a small amount of code duplication (e.g the size() impl), but I think this is justifiable if it simplifies things?
But I have to stress that I haven't actually tried it so I might be completely wrong...!
Tristan

Something else that has just occurred to me: for the "power" versions, the cursor type could be std::array<cursor_t<Base>, N> rather than tuple<cursor_t<Base>, cursor_t<Base>, ...>... I don't know if this would make things easier or more difficult though

Hi @isaacy2012, after saying I hadn't tried it I thought I'd better have a go! This is a very rough prototype of what I had in mind: https://flux.godbolt.org/z/54Wrs3Wha
As you can see, there's a bit of duplication in the top-level flux_sequence_traits classes, but apart from that I think this is quite nice.
What do you think?

Hi again @isaacy2012, sorry for bombarding you with messages!
I've been thinking about this some more and I think I have a cleaner approach.
Rather than using different base classes to encode the different policies -- product/power and map/tuple -- we can instead use just a single traits class that contains everything, and uses a pair of enums to select which code paths to use. The various adaptor classes (four of them) then specify which policies they want for their sequence_traits. I've coded up a proof of concept here: https://flux.godbolt.org/z/8jexzcreb

Hi @tcbrindle

Something else that has just occurred to me: for the "power" versions, the cursor type could be std::array<cursor_t<Base>, N> rather than tuple<cursor_t<Base>, cursor_t<Base>, ...>... I don't know if this would make things easier or more difficult though!

Yep, I think that's much better than the repeated tuple, though I've kept the repeated tuple type for the value_type so that the type is the same as it is for product – should that be changed to std::array too?
Regarding the switching between product/power and map/tuple, I think I actually preferred your mixin idea rather than the if constexpr in the base trait, since it delegates specifics to the derived trait/struct rather than the base trait having an awareness of all the various code paths. Also, since product_map doesn't expose the move_at, move_at_unchedkedetc. functions, would we useenable_ifto conditionally enable those functions based on theread_kind`?
Thanks!

Hi @tcbrindle

Something else that has just occurred to me: for the "power" versions, the cursor type could be std::array<cursor_t<Base>, N> rather than tuple<cursor_t<Base>, cursor_t<Base>, ...>... I don't know if this would make things easier or more difficult though!

Yep, I think that's much better than the repeated tuple, though I've kept the repeated tuple type for the value_type so that the type is the same as it is for product – should that be changed to std::array too?

No, the element type (the thing returned by read_at) is a tuple, so the value type has to be a tuple as well, because there needs to be a conversion relationship between them.

Regarding the switching between product/power and map/tuple, I think I actually preferred your mixin idea rather than the if constexpr in the base trait, since it delegates specifics to the derived trait/struct rather than the base trait having an awareness of all the various code paths.

Yeah, from a pure design perspective bundling everything into one big class that contains every code path is certainly not the recommended way! But practically speaking I think it would probably end up being easier to understand and maintain in this case than using several different base classes with CRTP. I could be wrong though :)

Also, since product_map doesn't expose the move_at, move_at_unchecked etc. functions, would we use requires/enable_if to conditionally enable those functions based on the read_kind?

Yeah, the idea was to use a requires clause, e.g.
template <typename Self>
static constexpr auto move_at(Self& self, cursor_t<Self> const& cur) -> decltype(auto)
    requires (ReadKind = read_kind::tuple)
{
    return do_read(flux::move_at, self, cur);
}

We could actually do this for all the functions -- e.g. provide two versions of first() with different CartKind constraints. I only used if constexpr in the prototype example because it's slightly less typing, and generally compiles faster than constrained overloads.

Hi @tcbrindle

Yeah, from a pure design perspective bundling everything into one big class that contains every code path is certainly not the recommended way! But practically speaking I think it would probably end up being easier to understand and maintain in this case than using several different base classes with CRTP. I could be wrong though :)

I see, thanks for the insight, I think it is definitely easier to understand.

Yeah, the idea was to use a requires clause, e.g.
template <typename Self>
static constexpr auto move_at(Self& self, cursor_t<Self> const& cur) -> decltype(auto)
    requires (ReadKind = read_kind::tuple)
{
    return do_read(flux::move_at, self, cur);
}

We could actually do this for all the functions -- e.g. provide two versions of first() with different CartKind constraints. I only used if constexpr in the prototype example because it's slightly less typing, and generally compiles faster than constrained overloads.

Great, I've done this, the only snag was that neither if constexpr nor the requires worked for defining the using cursor_type = and value_type, so I've used a struct that is partially specialised on the cartesian_kind to provide those types:
https://github.com/tcbrindle/flux/compare/main...isaacy2012:flux:feat/cartesian-product-and-with
I probably won't get around to implementing permutations and the others yet, should I make a pull request?

Hi @tcbrindle

Yeah, from a pure design perspective bundling everything into one big class that contains every code path is certainly not the recommended way! But practically speaking I think it would probably end up being easier to understand and maintain in this case than using several different base classes with CRTP. I could be wrong though :)

I see, thanks for the insight, yeah I think it is definitely easier to understand.

Yeah, the idea was to use a requires clause, e.g.
template <typename Self>
static constexpr auto move_at(Self& self, cursor_t<Self> const& cur) -> decltype(auto)
    requires (ReadKind = read_kind::tuple)
{
    return do_read(flux::move_at, self, cur);
}

We could actually do this for all the functions -- e.g. provide two versions of first() with different CartKind constraints. I only used if constexpr in the prototype example because it's slightly less typing, and generally compiles faster than constrained overloads.

Great, I've done this, the only snag was that neither if constexpr nor the requires worked for defining the using cursor_type = and value_type, so I've used a struct that is partially specialised on the cartesian_kind to provide those types.

So I think that actually we can get away with not defining a cursor_type alias, and just use cursor_t<Self> (rather than cursor_type<Self>, sorry for my bad naming!) in the function definitions.
value_type will be a bit trickier, because we'll need to have different definitions for the tuple and map versions... or in fact we'd rather the value_type wasn't defined at all for the map versions so we fall back to the default definition.

I've also added cartesian_power_with (I assume the renaming to map will be done separately?)

I'm quite happy for you to do the rename of cartesian_product_with while we've "got the hood up"

main...isaacy2012:flux:feat/cartesian-product-and-with
I was also wondering for cartesian_power_with, is there a better way to define regular_invocable_repeated? I needed to define that concept to restrict the mapping function to the form fn(element_t<Seq>, /* repeated PowN times */)

We actually already use this concept in adjacent_map_adaptor:
https://github.com/tcbrindle/flux/blob/f31a1c8ce62fdd9134bcc71f190d252b09883b5f/include/flux/op/adjacent.hpp#L179-L190
You could rename this to repeated_invocable and re-use it in both places.

I probably won't get around to implementing permutations and the others yet, should I make a pull request?

Yeah, let's not worry about permutations or combinations yet, this is a really impressive bit of work as it is! I'm still not entirely sure about the name, but if you'd like to submit a PR then that would be great :)
Thanks!

So I think that actually we can get away with not defining a cursor_type alias, and just use cursor_t<Self> (rather than cursor_type<Self>, sorry for my bad naming!) in the function definitions.

Yep, I've got this to work :)

value_type will be a bit trickier, because we'll need to have different definitions for the tuple and map versions... or in fact we'd rather the value_type wasn't defined at all for the map versions so we fall back to the default definition.

I've kept value_type but now restricted it so it's only explicitly defined when the ReadKind is read_kind::tuple. Unfortunately, I couldn't find a good way to conditionally expose the value_type, so I've settled for this:
template <std::size_t Arity, cartesian_kind CartesianKind, read_kind ReadKind, typename... Bases>
struct cartesian_traits_base : cartesian_traits_base_impl<Arity, CartesianKind, ReadKind, Bases...> {
    using impl = cartesian_traits_base_impl<Arity, CartesianKind, ReadKind, Bases...>;
};

template <std::size_t Arity, cartesian_kind CartesianKind, typename... Bases>
struct cartesian_traits_base<Arity, CartesianKind, read_kind::tuple, Bases...> : cartesian_traits_base_impl<Arity, CartesianKind, read_kind::tuple, Bases...> {
    using impl = cartesian_traits_base_impl<Arity, CartesianKind, read_kind::tuple, Bases...>;

    using value_type = typename impl::types::value_type;
};

Which means that the friend declaration in the adaptor looks like this now:
friend flux_sequence_traits::impl;
It's a small change but I don't like having the impl leak out into its use in the adaptor. Can you think of a better way to conditionally expose the value_type?

You could rename this to repeated_invocable and re-use it in both places.

I moved it to flux/core/concepts.hpp, which I've just realised is probably the wrong place, but I'm not quite sure where to put it since it's now used by both adjacent and cartesian_power_with. Possibly in a new file flux/op/detail/concepts.hpp?

You could rename this to repeated_invocable and re-use it in both places.

I moved it to flux/core/concepts.hpp, which I've just realised is probably the wrong place, but I'm not quite sure where to put it since it's now used by both adjacent and cartesian_power_with. Possibly in a new file flux/op/detail/concepts.hpp?

There's flux/op/requirements.hpp for  concepts that are useful to re-use between adaptors but aren't "core", if you see what I mean

I'm interested in taking a stab at implementing a permutation operation, but before I seriously get working on it I did a bit of research and realized there are a few different ways of approaching the problem. Pythons itertools.permutations operation seems to do the permutation in the same order every time regardless of whether or not the input range is sorted. C++s std::next_permutation always does the next lexicographical permutation of an input range, which means the sequence of permutations produced by std::next_permutation is dependent on the ordering of the input range.
C++ example on compiler explorer
Python example on compiler explorer
+------------+------------+
|      Perm[1,2,3]:       |
+------------+------------+
|    C++     |   Python   |
+------------+------------+
|  (1,2,3)   |  (1,2,3)   |
|  (1,3,2)   |  (1,3,2)   |
|  (2,1,3)   |  (2,1,3)   |
|  (2,3,1)   |  (2,3,1)   |
|  (3,1,2)   |  (3,1,2)   |
|  (3,2,1)   |  (3,2,1)   |
+------------+------------+

+------------+------------+
|      Perm[3,2,1]:       |
+------------+------------+
|    C++     |   Python   |
+------------+------------+
|  (3,2,1)   |  (3,2,1)   |
|  (1,2,3)   |  (3,1,2)   |
|  (1,3,2)   |  (2,3,1)   |
|  (2,1,3)   |  (2,1,3)   |
|  (2,3,1)   |  (1,3,2)   |
|  (3,1,2)   |  (1,2,3)   |
+------------+------------+

The links above have a simple example of producing all the permutations of two lists, [1, 2, 3], and [3, 2, 1] and the table is shown in the code block. The C++ and Python solutions output the same order of permutations for [1, 2, 3], but they output a different ordering of permutations for [3, 2, 1]. Both options are valid, but to me the C++ method makes more sense. I would imagine that in flux if I use the permutation operation I would get the same output that calling std::next_permutation S! / (S - N)! times would produce. What do other people think would be best?

The Rust itertools.permutations() seems to do the same strategy as Pythons itertools.permutation, so maybe that is actually a better way to go than the C++ method.
Rust example on compiler explorer

Hi @nwad123, great to hear you're interested in taking this on!
Regarding the two difference approaches, the STL's next_permutation requires that the input sequence is bidirectional, and that its elements are comparable. The Python version (IIUC) doesn't require either of these constraints, so I think that's probably the better way to go.
We can in principle add the STL ordering as something like lexicographical_permutations later if it turns out to be desirable.


Internal storage reports usage of 830MG while there are only two chunks in the gridfs collection

Environment info

Version: 2.0.0-78d7867
Deployment: AZURE
Customer: QA

Actual behavior

On the overview we see that there is ~800MB in the spill over
On the Bucket Spillover it report 0MB
The system had a lot of free space on it's agents

Screenshots or Logs or other output that would be helpful

Clising won't fix, internal would only be used on dev env


Update components of Lokomotive

Update following components and terraform providers

Done
Component
Current Version
Latest Version
Issue
PR

calico
v3.15.2
v3.16.3

cert-manager
v0.16.1
v1.0.3

contour
v1.7.0
v1.9.0

external-dns
3.3.0
3.4.6

metrics-server
2.11.1
2.11.2

rook
v1.3.2
v1.4.0

openebs
1.12.3
2.1.1

prometheus-operator
0.41.0
v0.42.1

rook
v1.4.2
v1.4.5

aws-ebs-csi-driver
0.6.0
v0.7.0

velero
2.12.15
2.13.5

cluster-autoscaler
1.0.2
1.0.5

Done
TF Provider
Current Version
Latest Version
Issue
PR

AWS
v3.3.0
v3.10.0

Azure
1.35.0
v2.31.1

Local
v1.4.0
v2.0.0

Null
2.1.2
v3.0.0

etcd update is false-positive. Same for MetalLB

Updated description

Rook is added twice :thinking:

updated OpenEBS to 2.2.0 in #1095

Working on aws-ebs-csi-driver

Working on aws-ebs-csi-driver

negative. Sorry I had created branch of it last week. Forgot to push.

No worries, working on contour then 😄

working on cluster-autoscaler

Last remaining PR to merge is #1162

Latest update:
https://github.com/kinvolk/lokomotive/pull/1162#issuecomment-732179755


removed references to this

Thanks! As we go forward we could even remove most of the calls where we pass this as the last argument by using fat arrows.


I have one Problem in Ph3nol/NotificationPusher in GCM for IOS.

Hi,
Hope you are doing great.I have seen your on git hub related to GCM for ios. I can not create proper json for ios push notification.
Can you help me to create proper json for ios.
Please help me as soon as possible.

@piyushpatil027, first of all, GCM isn't for iOS.
iOS uses a different protocol called APNS. Please look here:
https://github.com/Ph3nol/NotificationPusher/blob/master/doc/apns-adapter.md


The .bin is not complete

Hi, I used two Azure Kinects and two PCs to build 3D construction.
I found that my two azure kinects recorded two different view of .bin file and they are not complete in one PC (say, [master] in sync mode). The two PCs' .bin files seem that can be merged together, but we cannot get a complete .bin in one PC.
What's more, the .ply files can store a whole frame with two points of view.
Do you know how to solve the incomplete .bin file problem?
.bin screenshot:

.ply frame:

Hey! Thank for opening the issue here!
You are right, each sensor will store their data in a seperate .bin file, as the sensors might be attached to different PCs during capture. The .bin file is only meant as a very fast way.way to store data during capture
The .bin files are then meant to converted to .ply files, which contain all the data. There are two ways to do that:

As you already discovered, the server stores the .ply files after each capture in the "Saving" phase and merges all the views into one.
You can also load all the .bin files inside of the LiveScanPlayer simultaniously and then check the "Export .ply" button. Hit Play, and the Player will store the merged .ply files inside of the /bin/outPlayer/ directory.

You also might want to try the development branch here, which contains a much more improved version of LiveScan.

Yeah, thanks for your reply and patience.
I just found this issue about '.bin', so there may be currently no such usecase hh~
Moreover, I wonder if you mind providing me with more information about such 3D construction accuracy in estimating the real size of the object. How about the error? Do your team ever validate such matter?
Thanks for your timely response again!

We haven't done any such measurements yet.
If you use a multiple Kinects, the largest factor that causes inaccuracies is the marker calibration. From my personal experience, the offset error can be anywhere from 0,5-5cm at the position of the marker, and then in increases the further the data is away from the marker.

Wow, 5cm is a pretty great error! Is there any way to decrease the error or guarantee the error to a limit interval?
We plan to measure the human body size with 2 opposing Azure Kinects~

Hey! Just to make it clear, this is just a rough assumption from my side, I have not measured the error! Also the further you go from the position from where you put your calibration marker, the bigger the error!
You can decrease the error if you go with a high quality, and large (DinA3) marker, but I don't know by how much.

great, your effort really helps us a lot!


⚠ Turnos 24x7 has degraded performance

In 204c5cc, Turnos 24x7 (https://reservas-dev.alternativasinteligentes.com/) experienced degraded performance:

HTTP code: 200
Response time: 1706 ms

Resolved: Turnos 24x7 performance has improved in a3095ad.


travis ci button added hopefully

Conversation pulled from FB chat:
November 2
Rishi Sinha
11/2, 12:03am
Rishi Sinha
anyone up?
pretty sure i got teh travisci button in

Rishi Sinha
11/2, 12:30am
Rishi Sinha
coveralls button added too


compactor: Add run-interval flag

Add a new --run-interval flag that specifies compactor run interval.
This is helpful, especially for the end-to-end tests. See #2250
Signed-off-by: Kemal Akkoyun<EMAIL_ADDRESS>

[x] I added CHANGELOG entry for this change.
[ ] Change is not relevant to the end user.

Changes

Add --run-interval flag.

Verification

make build
make test-local

@bwplotka --wait also is a neat and simple API to use with a default value, covers most of the cases. On the other hand, having a single flag is simpler.
Let's merge this and see the usage.
I can create an issue about it or even a broader one to clean up flags before 1.0.0 release?


[Bug Fix] Fix "cannot unpack non-iterable NoneType object" error in OS check

Fix: https://github.com/Azure/azure-cli-extensions/issues/6655
This checklist is used to make sure that common guidelines for a pull request are followed.

For new extensions:

[x] My extension description/summary conforms to the Extension Summary Guidelines.

About Extension Publish
There is a pipeline to automatically build, upload and publish extension wheels.
Once your pull request is merged into main branch, a new pull request will be created to update src/index.json automatically.
You only need to update the version information in file setup.py and historical information in file HISTORY.rst in your PR but do not modify src/index.json.

Bug Fix

@vthiebaut10, could you please add test to cover this change?


Fix for #5810, reveal modal without animation bug

Top position was not set, when animation was disabled.

This issue should be resolved, thank you for contributing!


Support HD wallets

Changes
NOTE: The CLI should support HD wallets and private key based wallets.
Generate Account
symbol-cli account generate
Add the option:

param
type
description
default

--hd
flag (boolean)
Generate a  HD seed account.
false

Create Profile
symbol-cli profile create
Add the flag:

param
type
description
default

--hd
flag (boolean)
Create a profile from a  HD seed account.
false

--derivationPath
string
(Optional) Derivation path (e.g. m/44'/4343'/0'/0'/0')

--profile
string
Select between your profiles, by providing a profile name.

Import Profile
symbol-cli profile import
Add the option:

param
type
description
default

--mnemonic
string
(Optional) Import a profile with a mnemonic phrase.

List profiles
symbol-cli profile list
The profile table should show in a new row the "Type", which can be "PrivateKey" or "HD.
Decrypt profile
symbol-cli profile decrypt
If it's an HD profile, it should show the mnemonic + private key.

@decentraliser Updated the spec, please do not hesitate to add your improvements 👍

I disagree to have the derivationPath as a string, it will bring to errors
I propose to stick to what we have in the others wallets, defining 10 standard paths only for child accounts

Ok with me, 10 looks enough at the moment.

@dgarcia360 I don't get the purpose of the profile flag in the Create Profile command

@decentraliser  I've changed it to derivationProfile so that there is no conflict with the current profile property.
Imagine that the derivationProfile passed is the name of an HD wallet seed account already stored. You might want to derive a child account from it (derivationPath) and store this child account as a new profile to sign transactions with the CLI.

OK, makes sense, that adds a fait bit of logic tho the command, I'll think about it


Added support for Android 8.0/8.1 Oreo

In Android Oreo the class name changed, this commit adds support for the new class.

Great tool


Implement the watch mode

What does this PR do?
On homer0/projext#53 I added support for a watch mode, this PR is the implementation on webpack (plus a minor refactor of the private environment variables names).
Since the projext PR is breaking and this one needs that version, this will also be a breaking change.
How should it be tested manually?
You first need projext#next installed, then try using the new projext watch command for a bundled target.
And of course...
npm test
# or
yarn test

Pull Request Test Coverage Report for Build 174

9 of 9 (100.0%)  changed or added relevant lines in 4 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 100.0%

Totals

Change from base Build 172:
0.0%

Covered Lines:
554

Relevant Lines:
554

💛  - Coveralls


Dexie not working on Internet Explorer 11 - same program works on Firefox/Chrome

Tried 1.3.4 and 1.3.6 versions of Dexie, the same result!
The program works perfectly on Firefox/Google Chrome but on Windows/Internet Explorer 11 got errors and documents are not saved.
dumpToIndexedDB:  Error: DataError
   at stack (http://<IP_ADDRESS>:5984/aplicatie_cantemir/app/js/lib/dexie.js:187:13)
   at Anonymous function (http://<IP_ADDRESS>:5984/aplicatie_cantemir/app/js/lib/dexie.js:2494:33)
   at doResolve (http://<IP_ADDRESS>:5984/aplicatie_cantemir/app/js/lib/dexie.js:741:13)
   at Promise (http://<IP_ADDRESS>:5984/aplicatie_cantemir/app/js/lib/dexie.js:585:13)
   at Anonymous function (http://<IP_ADDRESS>:5984/aplicatie_cantemir/app/js/lib/dexie.js:2457:25)
   at Promise.newPSD (http://<IP_ADDRESS>:5984/aplicatie_cantemir/app/js/lib/dexie.js:862:13)
   at _promise (http://<IP_ADDRESS>:5984/aplicatie_cantemir/app/js/lib/dexie.js:2453:17)
   at transactionPromiseFactory (http://<IP_ADDRESS>:5984/aplicatie_cantemir/app/js/lib/dexie.js:2400:17)
   at getIDBObjectStore (http://<IP_ADDRESS>:5984/aplicatie_cantemir/app/js/lib/dexie.js:1841:21)
   at add (http://<IP_ADDRESS>:5984/aplicatie_cantemir/app/js/lib/dexie.js:2225:21)

The program does a clear() all documents from a table, then inserts 713 documents coming from a http stream through jsonpipe , using a compound index for later sorting.
Everything works perfectly on Firefox/Google Chrome!
Promise on Windows/Internet Explorer is done by this polyfill
https://raw.githubusercontent.com/taylorhakes/promise-polyfill/master/promise.js
Any clues?
Thanks for Dexie,
Constantin Teodorescu

IE lacks support for compound indexes. You could try out my polyfill that tries to bridge that: https://github.com/dfahlander/idb-iegap. Safari has the same issue but the polyfill does not target safari yet.

I changed the compound [prd+ddc+si] index definition and build the table from scratch with a single string  column index that I manually assembled before saving into the database, in order to avoid the compound index.
Got the same error!
Teo

Yes, it's the wisest thing to do when needing to support IE and Safari - to not use compound indexes but emulate them by concatinating strings. Glad to hear it works!

@dfahlander  https://github.com/dfahlander/idb-iegap. how do i use this? not clear how do i used with it Dexie.js. any sample code out there ?

It's actually a bit outdated. I would recommend using IndexedDBShim instead, that also polyfills IE10/IE11 in a similar way. I will update its readme.


”Brețcu”, ”Mărtănuș”, ”Oituz” are listed in the drop-down menu

Description:
When user writes ”Brețcu”, ”Mărtănuș”, ”Oituz” the locations appear in the drop-down menu next to the comune and the county witch is a part according to the law.
Precondition:
The website is up an running.

Step 1
Write in the search bar "Brețcu"

Expected results
The location appears in the drop-down menu as "Sat Brețcu, COVASNA (Brețcu)".

Step 2
Press "x" button.

Expected results
The location was deleted from the search bar.

Step 3
Write in the search bar "Mărtănuș"

Expected results
The location appears in the drop-down menu as "Sat Mărtănuș, COVASNA (Brețcu)".

Step 4
Press "x" button.

Expected results
The location was deleted from the search bar.

Step 5
Write in the search bar "Oituz"

Expected results
The location appears in the drop-down menu as "Sat Oituz, COVASNA (Brețcu)".


[quill] Update to 6.0.0

[x] Changes comply with the maintainer guide.
[x] SHA512s are updated for each updated download.
[x] The "supports" clause reflects platforms that may be fixed by this new version.
[x] Any fixed CI baseline entries are removed from that file.
[x] Any patches that are no longer applied are deleted from the port's directory.
[x] The version database is fixed by rerunning ./vcpkg x-add-version --all and committing the result.
[x] Only one version is added to each modified port's versions file.

@microsoft-github-policy-service agree

@microsoft-github-policy-service agree

@microsoft-github-policy-service agree

Please update the version files according the documentation: https://github.com/microsoft/vcpkg-docs/blob/main/vcpkg/contributing/maintainer-guide.md#versioning and check this PR by the list in https://github.com/microsoft/vcpkg/pull/40365#issue-2456938436.

@TomieAi thanks for your PR and for updating the package! 🎉
I would like to add the native CMake support back for this port. Could you please update the port according this
https://github.com/odygrd/vcpkg/tree/quill-6.1.0/ports/quill

Usage passed on x64-windows.


Add multi-file write support

Description
Overloaded the multipart.Part.FileName() method so that it's possible to get the full path with directories.
Tests
See the tests in https://github.com/e2b-dev/E2B/pull/451

@ValentaTomas per discussion in https://github.com/e2b-dev/E2B/pull/451, I overloaded the multipart.Part.FileName() method so that it's possible to get the full path with directories. It's unsafe for regular web apps, but in our sandboxes it's ok, correct?  I adapted the js-sdk to include nested paths and it works.

Yes, I think it should be ok for us, because we are giving users access to the whole sandbox so this is not security risk.

Is it tested for the old file uploads via SDK when passing relative and absolute path and uploads via URL (with the path being part of the multipart)?
I just want to make sure it is compatible with the current usage.

Is it tested for the old file uploads via SDK when passing relative and absolute path and uploads via URL (with the path being part of the multipart)? I just want to make sure it is compatible with the current usage.

New write tests have passed as follow: https://github.com/e2b-dev/E2B/pull/503/files#diff-7a70570a2ea87cb7d3e355b0aa6f011a4bec4d1733f40bf94b05e4024f232b01


Add terminus - Web

We should support Kubernetes for Swish-Web.
Add and configure terminus package.
Docs

Didn't add terminus, built K8s support directly into Swish-Web application.
Resolved in 79e960e0