[Feature Request] When using TakeVideoAsync it does not implement StoreVideoOptions.

Bug
When recording a video we set the StoreVideoOptions, but they are not implemented.  The TakePhotoAsync() works great.  We are able to save to a custom Directory with a unique Name.
Code for TakePhotoAsync():
var photofile = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions { Directory = "Pictures", Name = "filename.jpg" });
Result is ../LocalState/Pictures/filename.jpg
Code for TakeVideoAsync():
var videofile = await CrossMedia.Current.TakeVideoAsync(new Plugin.Media.Astractions.StoreVideoOptions { Directory = "Videos", Name = "filename.mp4" });
Result is ../TempState/CCapture.mp4
Version Number of Plugin: v2.6.2
Device Tested On: Lumia 950 XL
Simulator Tested On: Visual Studio UWP and Android Emulators
Expected Behavior
Ability to set Directory and Name of video file using StoreVideoOptions.
Actual Behavior
The default values are being implemented.  No directory is created and the file name is CCapture.mp4

Hi @jamesmontemagno - I'm happy to contribute a fix for UWP in the next couple days 👌

I think @prashantvc maybe was working on it? Maybe not?

Ahhh, I just saw the up-for-grabs label was added a couple days ago, but now I see it was added and removed.
@prashantvc -- let me know if you have a fix in the works, otherwise I'd be happy to make a contribution.

PS -- seems this duplicates https://github.com/jamesmontemagno/MediaPlugin/issues/308

I think there are a few branches where he started work. Probably need some guidance there.

 I'll open a PR against master and request @prashantvc 's review to see what he thinks.
thanks!

re: https://github.com/jamesmontemagno/MediaPlugin/issues/178#issuecomment-353676083
Fix for this should be available in the [issue-308] (https://github.com/jamesmontemagno/MediaPlugin/tree/issue-308) branch. Changes in your PR will work too, but they are not ready for master branch yet


Filter pushdown for Parquet reader

This PR implements filter pushdown for the Parquet reader. Scan filters are checked in two places: Within the scan and when RowGroup statistics are present.
Filters in Scans
While scanning, we first load the columns for which filters are set. We evaluate the filters and construct a bit mask that has bits set for rows that matched the given filters. This bit mask is used when reading non-filtered columns so only rows that are going to be part of the result are ever materialised.
However there is a catch, we still have to at least partially read all columns even if all rows are eliminated by filters since we need to move the various read pointers forward properly. Due to the "unique" properties of the Parquet format, we have to actually decode the define levels (inverse NULL mask) and dictionary offsets and string columns since we otherwise cannot put the read pointer in the correct place to read subsequent chunks. This is a bit unfortunate but hard to avoid. For constant-length types where no NULLs are present this gets a bit easier. But the performance gains from this pushdown are generally limited because of this.
Filters and RowGroup Statistics
We also use the filters to not read entire row groups when statistics are set. For example, if we have an equality filter, say a = 42, and a row group in the parquet file exposes statistics for column a with min(a) = 2 and max(a) = 10, we can skip reading the entire row group. This is a much more powerful optimisation. Obviously this optimisation depends on the presence of row group statistics and some correlation within the data. Also, Parquet files that contain only a single row group do not benefit that much either.
Fixes #1152

CC @mbasmanova


HA Setup fails with error 100

I try to setup a HA-Cluster Level 4 or Level 3. Both are ending up by "error 100".
hetzner-kube cluster create -k<EMAIL_ADDRESS>--master-count 3 --worker-count 3 --ha-enabled --name k8s-cluster
2018/04/28 09:48:37 Creating new cluster k8s-cluster with 3 master(s), 3 worker(s), HA: true
2018/04/28 09:48:38 creating server 'k8s-cluster-master-01'...
  --- [====================================================================] 100%
2018/04/28 09:49:05 Created node 'k8s-cluster-master-01' with IP <IP_ADDRESS>
2018/04/28 09:49:05 creating server 'k8s-cluster-master-02'...
  --- [====================================================================] 100%
2018/04/28 09:49:22 Created node 'k8s-cluster-master-02' with IP <IP_ADDRESS>
2018/04/28 09:49:22 creating server 'k8s-cluster-master-03'...
  --- [====================================================================] 100%
2018/04/28 09:49:46 Created node 'k8s-cluster-master-03' with IP <IP_ADDRESS>
2018/04/28 09:49:47 creating server 'k8s-cluster-worker-01'...
  --- [====================================================================] 100%
2018/04/28 09:50:18 Created node 'k8s-cluster-worker-01' with IP <IP_ADDRESS>
2018/04/28 09:50:18 creating server 'k8s-cluster-worker-02'...
  --- [====================================================================] 100%
2018/04/28 09:50:29 Created node 'k8s-cluster-worker-02' with IP <IP_ADDRESS>
2018/04/28 09:50:29 creating server 'k8s-cluster-worker-03'...
  --- [====================================================================] 100%
2018/04/28 09:50:55 Created node 'k8s-cluster-worker-03' with IP <IP_ADDRESS>
2018/04/28 09:50:55 sleep for 30s...
...-cluster-master-0 : prepare packages                   11.1% [--------------]
...-cluster-master-0 : prepare packages                   12.5% [>-------------]
...-cluster-master-0 : installing transport tools          8.3% [--------------]
...-cluster-worker-0 : prepare packages                   20.0% [=>------------]
...-cluster-worker-0 : prepare packages                   20.0% [=>------------]
...-cluster-worker-0 : installing transport tools         13.3% [>-------------]
2018/04/28 09:51:33 E: Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)
E: Unable to lock directory /var/lib/apt/lists/

2018/04/28 09:51:33 > apt-get update && apt-get install -y apt-transport-https ca-certificates curl software-properties-common
2018/04/28 09:51:33
2018/04/28 09:51:33 Reading package lists...
run failed:Process exited with status 100run failed:Process exited with status 100run failed:Process exited with status 1002018/04/28 09:51:33 run failed:Process exited with status 100

hetzner-kube cluster list
NAME	NODES	MASTER IP

Same seems to happen with Level 1:
hetzner-kube cluster create --name k8s-cluster --ssh-key<EMAIL_ADDRESS>2018/04/28 09:59:24 Creating new cluster k8s-cluster with 1 master(s), 1 worker(s), HA: false
2018/04/28 09:59:25 creating server 'k8s-cluster-master-01'...
  --- [====================================================================] 100%
2018/04/28 09:59:57 Created node 'k8s-cluster-master-01' with IP <IP_ADDRESS>
2018/04/28 09:59:57 creating server 'k8s-cluster-worker-01'...
  --- [====================================================================] 100%
2018/04/28 10:00:28 Created node 'k8s-cluster-worker-01' with IP <IP_ADDRESS>
2018/04/28 10:00:28 sleep for 30s...
...-cluster-master-0 : installing transport tools          8.7% [--------------]
...-cluster-worker-0 : installing transport tools         14.3% [>-------------]
2018/04/28 10:01:04 E: Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)
E: Unable to lock directory /var/lib/apt/lists/

2018/04/28 10:01:04 > apt-get update && apt-get install -y apt-transport-https ca-certificates curl software-properties-common
2018/04/28 10:01:04
2018/04/28 10:01:04 Reading package lists...
run failed:Process exited with status 100run failed:Process exited with status 100run failed:Process exited with status 1002018/04/28 10:01:04 run failed:Process exited with status 100

Maybe I have some misconfigured?

Weird: When I run the same command, again after it fails (with error 100), it "continuous" / "overwrites" it's deployment process and finishes successfully:
hetzner-kube cluster create -k<EMAIL_ADDRESS>--master-count 3 --worker-count 3 --ha-enabled --name k8s-cluster

2018/04/28 10:41:26 Creating new cluster k8s-cluster with 3 master(s), 3 worker(s), HA: true
2018/04/28 10:41:27 creating server 'k8s-cluster-master-01'...
2018/04/28 10:41:28 loading server 'k8s-cluster-master-01'...
2018/04/28 10:41:28 Created node 'k8s-cluster-master-01' with IP <IP_ADDRESS>
2018/04/28 10:41:28 creating server 'k8s-cluster-master-02'...
2018/04/28 10:41:28 loading server 'k8s-cluster-master-02'...
2018/04/28 10:41:28 Created node 'k8s-cluster-master-02' with IP <IP_ADDRESS>
2018/04/28 10:41:28 creating server 'k8s-cluster-master-03'...
2018/04/28 10:41:29 loading server 'k8s-cluster-master-03'...
2018/04/28 10:41:29 Created node 'k8s-cluster-master-03' with IP <IP_ADDRESS>
2018/04/28 10:41:29 creating server 'k8s-cluster-worker-01'...
2018/04/28 10:41:29 loading server 'k8s-cluster-worker-01'...
2018/04/28 10:41:29 Created node 'k8s-cluster-worker-01' with IP <IP_ADDRESS>
2018/04/28 10:41:29 creating server 'k8s-cluster-worker-02'...
2018/04/28 10:41:30 loading server 'k8s-cluster-worker-02'...
2018/04/28 10:41:30 Created node 'k8s-cluster-worker-02' with IP <IP_ADDRESS>
2018/04/28 10:41:30 creating server 'k8s-cluster-worker-03'...
2018/04/28 10:41:30 loading server 'k8s-cluster-worker-03'...
2018/04/28 10:41:30 Created node 'k8s-cluster-worker-03' with IP <IP_ADDRESS>
...-cluster-master-0 : complete!                         100.0% [==============]
...-cluster-master-0 : complete!                         100.0% [==============]
...-cluster-master-0 : complete!                         100.0% [==============]
...-cluster-worker-0 : complete!                         100.0% [==============]
...-cluster-worker-0 : complete!                         100.0% [==============]
...-cluster-worker-0 : complete!                         100.0% [==============]
2018/04/28 10:48:43 Cluster successfully created!

you can close this issue if you want

yeah, that's all about the issue with hetzners nodes after they are created. But for your information, the create procedure is designed to be as idempotent as possible. This means that re-running the command should always work. That means, if the 100 error occurs, just run it again. It won't create new servers if it sees they are already there. It also won't install the packages if it finds them on the machine.
attention: you can use the create sub-command without a name to let hetzner-kube create a random. If the cluster fails, you should not forget to pass the name of the cluster to the create statement.
I will rename this issue to a better description. I hope I will find a solution on dealing with these problems.
As a quick fix, I tuned the sleep time up to 10 seconds again.


Auto title and tags generation not working in 0.5.1

Bug Report
Installation Method
I installed it using pip
Environment

Open WebUI Version: v0.5.1

Ollama (if applicable): v0.5.4

Operating System: macOS Sequoia 15.2

Browser (if applicable): Chrome 131.0.6778.109

Confirmation:

[x] I have read and followed all the instructions provided in the README.md.
[x] I am on the latest version of both Open WebUI and Ollama.
[ ] I have included the browser console logs.
[ ] I have included the Docker container logs.
[x] I have provided the exact steps to reproduce the bug in the "Steps to Reproduce" section below.

Expected Behavior:
I expect the title and the tags of a new chat to be automatically generated after the first answer from the AI is available.
Actual Behavior:
The title of the new chat remains "New Chat" and the tags are empty.
Description
Bug Summary:
I believe the auto-generation for title and tags of a chat is working before updating from v0.4.8 to v0.5.1
Reproduction Details

Install the v0.5.1
Ensure the model tasks are the Current Model, in my case it's qwen2.5-coder:32b
Create a new chat and ask the AI anything

Logs and Screenshots

One more thing, I don't see any code calling this function for some reason, whereas the "Chat.svelte" file in version v0.4.8 calls this function.
https://github.com/open-webui/open-webui/blob/v0.5.1/src/lib/apis/index.ts#L203

Can you provide Docker logs (if applicable)?
Maybe this is a regression introduced with #8075

@alwint3r Try pulling the latest main instead of 0.5.1, and let us know if that fixed the issue on your end!

Same problem I am experiencing even after upgrading to latest main(v0.5.1)
Title generation works for OpenAI Models like 4o, 4o-mini. But leaves a blank title when using reasoning models(o1, o1-mini, o1-preview)

@MigiSenpai416 expected behaviour from o1 models, however I just added a title generation fallback logic to set the user message as the title.


⚠ Bofrost.lu has degraded performance

In bdb976a, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 1228 ms

Resolved: Bofrost.lu performance has improved in 6d4e83d after 9 minutes.


Conflict override syntax vs anyplace directive

scenario Sample {
  GET /sample/$id {
    id = 1 # ← Parse as id directive !!!
  }
}

Resolve with New Parser


chems in smoke and foam dont get absorbed

Description
title
Reproduction

chem dispenser
beaker
60 radium 10 phosphorus 10 potassium 10 sugar
dont die

See https://github.com/space-wizards/space-station-14/pull/17693
Needs fixing and a big nerf to avoid getting abused again.


Android build of 1.1.1 broken with new r22 NDK

When using the new r22 Android NDK, OpenSSL Configure prints $ANDROID_NDK_HOME=/usr/local/lib/android/sdk/ndk-bundle is invalid at (eval 7)[openssl/Configure:3018] line 37. as neither $ndk/platforms nor $ndk/AndroidVersion.txt exist.
This bug has probably already been addressed by 948fd7af627f42cf9ab6b7c3df34aa5ebad422ae ("Support for Android NDK r22-beta1"); but, as far as I can tell, that patch is only in master for 3.0.0 and hasn't been backported to 1.1.1.

Checking for $ndk/platforms is broken in r22 because:
The deprecated <NDK>/platforms and <NDK>/sysroot directories have been removed. These directories were merged and relocated into the toolchain during r19. The location of these contents should not be relevant to anyone, including build systems, since the toolchain handles them implicitly. If you are using a build system that hasn't adapted to the changes introduced in NDK r19, file a bug with your build system maintainer. See the Build System Maintainers Guide for information on using the NDK in your own build system. https://github.com/android/ndk/wiki/Changelog-r22
I think we need to wait for https://github.com/openssl/openssl/pull/13694

Checking for $ndk/platforms is broken in r22 because:
The deprecated <NDK>/platforms and <NDK>/sysroot directories have been removed. These directories were merged and relocated into the toolchain during r19. The location of these contents should not be relevant to anyone, including build systems, since the toolchain handles them implicitly. If you are using a build system that hasn't adapted to the changes introduced in NDK r19, file a bug with your build system maintainer. See the Build System Maintainers Guide for information on using the NDK in your own build system. https://github.com/android/ndk/wiki/Changelog-r22
I think we need to wait for https://github.com/openssl/openssl/pull/13694

openssl3.0 支持 ndk r22了, 1.1.1版本的我这边使用r21e是可以编译通过的。

I wish there were a way for me to more easily just bypass the OpenSSL build system here and pass my own flags, as the Configure script was awkward before anyway--it doesn't parse my ABI-annotated -target and insists on my passing -D__ANDROID_ABI__, which it then also sets (and which isn't how you are supposed to do that AFAIK)--but now it is forcing my entire project to be stuck being compatible with some extremely old version of LLVM so I can compile this one extremely-key dependency correctly for this one platform :(. I am probably just going to have to give up and figure out what files are being compiled and try to bypass the build scripts entirely soon.

This (my) issue was a duplicate of #13685 and has now been fixed by #13694 \o/.


NoClassDefFoundError

Models are generated just fine using the Studio plugin, but fails with the Gradle plugin.
$ ./gradlew build --stacktrace
Parallel execution with configuration on demand is an incubating feature.
WARNING: Dependency org.json:json:20140107 is ignored for prodDebug as it may be conflicting with the internal version provided by Android.
         In case of problem, please repackage with jarjar to change the class packages
WARNING: Dependency org.json:json:20140107 is ignored for devDebug as it may be conflicting with the internal version provided by Android.
         In case of problem, please repackage with jarjar to change the class packages
:app:preBuild
:data:preBuild UP-TO-DATE
:testlib:processResources
:data:preReleaseBuild UP-TO-DATE
:domain:compileKotlin UP-TO-DATE
:presentation:processResources
:mock:compileKotlin UP-TO-DATE
:presentation:processResources UP-TO-DATE
:app:preDevBetaBuild UP-TO-DATE
:data:compileReleaseNdk
:app:checkDevBetaManifest UP-TO-DATE
:data:compileReleaseNdk UP-TO-DATE
:testlib:processTestResources
:presentation:processTestResources
:app:preDevDebugBuild
:mock:compileJava UP-TO-DATE
:data:compileLint UP-TO-DATE
:app:preDevDebugBuild UP-TO-DATE
:app:preDevReleaseBuild UP-TO-DATE
:testlib:processResources UP-TO-DATE
:data:copyReleaseLint
:app:preProdBetaBuild UP-TO-DATE
:mock:processResources UP-TO-DATE
:app:preProdDebugBuild
:data:checkReleaseManifest UP-TO-DATE
:app:preProdReleaseBuild
:data:preDebugAndroidTestBuild UP-TO-DATE
:app:preProdReleaseBuild UP-TO-DATE
:data:preDebugBuild UP-TO-DATE
:app:preProdDebugAndroidTestBuild UP-TO-DATE
:data:preDebugUnitTestBuild UP-TO-DATE
:app:generateDevBetaBuildConfig
:data:preReleaseUnitTestBuild UP-TO-DATE
:data:generateReleaseBuildConfig UP-TO-DATE
:data:generateReleaseSqlDelightInterface
:app:generateDevBetaAssets UP-TO-DATE
:app:generateDevBetaResValues
:app:compileDevBetaNdk
:app:generateDevBetaResValues UP-TO-DATE
:app:processDevBetaJavaRes UP-TO-DATE
:app:validateDebugSigning
:app:checkProdBetaManifest
:app:generateProdBetaBuildConfig FAILED
:data:copyReleaseLint UP-TO-DATE
:app:preBuild UP-TO-DATE

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':data:generateReleaseSqlDelightInterface'.
> Could not initialize class com.squareup.sqldelight.SqliteLexer

* Try:
Run with --info or --debug option to get more log output.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':data:generateReleaseSqlDelightInterface'.
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
	at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
	at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
	at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
	at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:42)
	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
	at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
	at org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.java:310)
	at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.executeTask(AbstractTaskPlanExecutor.java:79)
	at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:63)
	at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:51)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
	at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.squareup.sqldelight.SqliteLexer
	at com.squareup.sqldelight.gradle.SqlDelightTask$execute$1.execute(SqlDelightTask.kt:59)
	at com.squareup.sqldelight.gradle.SqlDelightTask$execute$1.execute(SqlDelightTask.kt:42)
	at org.gradle.api.internal.changedetection.changes.RebuildIncrementalTaskInputs.doOutOfDate(RebuildIncrementalTaskInputs.java:45)
	at org.gradle.api.internal.changedetection.changes.StatefulIncrementalTaskInputs.outOfDate(StatefulIncrementalTaskInputs.java:40)
	at org.gradle.api.internal.changedetection.changes.RebuildIncrementalTaskInputs.outOfDate(RebuildIncrementalTaskInputs.java:28)
	at com.squareup.sqldelight.gradle.SqlDelightTask.execute(SqlDelightTask.kt:54)
	at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75)
	at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.doExecute(AnnotationProcessingTaskFactory.java:243)
	at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:219)
	at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.execute(AnnotationProcessingTaskFactory.java:230)
	at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:208)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
	... 14 more

BUILD FAILED

Total time: 3.235 secs

I'm guessing this is the same as #150 since NoClassDefFoundError is usually thrown as the result of the class failing to load and not actually because it isn't present.
Can you move sqldelight above the android plugin in the buildscript classpath dependencies block?

Yes, I'm also getting the error in #150. Moving the classpath above the Android classpath resolves the error, thanks.
Now I'm getting reference errors trying to using generated models in Kotlin. I'll fool around with that and submit an issue if necessary, but I see there are some Kotlin related issues already #80. Not sure if that's the same.

Yes, Kotlin support does not work because of a shortcoming in the Kotlin
plugin.
Both the Android plugin and Kotlin plugin have poor choices which sadly
render this project hard to use with them.
On Wed, Feb 24, 2016 at 4:58 PM Michael Pardo<EMAIL_ADDRESS>wrote:

Yes, I'm also getting the error in #150
https://github.com/square/sqldelight/issues/150. Moving the classpath
above the Android classpath resolves the error, thanks.
Now I'm getting reference errors trying to using generated models in
Kotlin. I'll fool around with that and submit an issue if necessary, but I
see there are some Kotlin related issues already #80
https://github.com/square/sqldelight/issues/80. Not sure if that's the
same.
—
Reply to this email directly or view it on GitHub
https://github.com/square/sqldelight/issues/153#issuecomment-188470881.

Well I suppose until those shortcomings are resolved, Java implementations of generated models will work just fine. Thanks again.


Is Leshan server ready for production in industry ?

Question
Hi,
Our company (www.cls.fr) is very interested in using LwM2M and we would like to add instance of leshan server inside our infrastructure but I wonder if today leshan is ready to be used in industrial in production mode ?
We need to support LwM2M 1.1 with queue mode as our devices will be sleeping most of the time, will use dynamic IP addresses (devices are using cellular modems).
Then 10000+ beacons could connect at the same time, is Leshan able to cope with this ?
What would be the licensing model in use ?
Regards

Hi,

I wonder if today leshan is ready to be used in industrial in production mode ?

At least, we try to be. (except demos and some experimental feature which are not production ready, the client is maybe a bit less production ready, I think it is mainly used for testing)
CoAP and CoAP over DTLS 1.2 based on Californium/Scandium are currently the more production ready transport layer.
I can also say that Leshan 1.x is currently used in production at Semtech (SierraWireless)
I'm not totally sure but I understand that Orange is currently using Leshan 2.0.0-Mx in production.
You can also see :

https://github.com/eclipse-leshan/leshan/issues/830
https://iot.eclipse.org/adopters/#iot.leshan

Leshan 1.x is the stable release (stable API). It implements LWM2M v1.0.x only and is based on Californium/Scandium 2.x.
Leshan 2.0.x is the in development (not stable API, you could face API changes between 2 release. It implements LWM2M v1.1.x only and is based on Californium/Scandium 3.x. (4.x is there is a release before the stable release?)
See more details at : https://github.com/eclipse-leshan/leshan/wiki/Roadmap

We need to support LwM2M 1.1 with queue mode as our devices will be sleeping most of the time, will use dynamic IP addresses (devices are using cellular modems).

This is a classic use case and should be supported following : https://github.com/eclipse-leshan/leshan/wiki/LWM2M-Devices-with-Dynamic-IP

Then 10000+ beacons could connect at the same time, is Leshan able to cope with this ?

It's very hard to answer to this kind of question, it depends on so many different factor but I guess this should be OK :thinking:
But whatever the answer you will get to this question, I advice you to do some test performances anyway.

What would be the licensing model in use ?

Leshan is dual licensing so you can choose to use one license or another.
More details at :

https://www.eclipse.org/legal/eplfaq.php#DUALLIC
https://www.eclipse.org/legal/eplfaq.php

If all of this information is not enough, you could directly contact<EMAIL_ADDRESS>

@JaroslawLegierski, @jvermillard, @cyril2maq, @gcx-seb maybe you have some experience to share about your usage of Leshan ?

I use Leshan 2.0.x  in production for some customers (I'm a freelancer), and even load-tested it way above 10k devices, so if you need 2.0.x features, it's totally doable to run it in prod; but you need to be careful when upgrading milestones.
IMO, 10k devices can be doable on a single machine. If you target more than 50~100k+ it's where you need more work to have a multinode setup + redis to manage the sessions

Ok, actually our beacons are not very verbose, we are generally sending around 16 bytes every 1 minutes in term of data push (SEND method,, only the useful data speaking without SENML CBOR overhead). Exceptionnally it could output more data if beacon was out of cellular coverage during long time (datalogger feature), in this case the beacon may output more than 1500 bytes x 50 times in the same connection but then that's all ... So the average uplink content is really reduced and we will use CBOR and opaque data as much as possible

(devices are using cellular modems)

we are generally sending around 16 bytes every 1 minutes

That's less than 200 msgs/s, so it should not be an issue.
Just to mention: 16 bytes application data will require about 100 bytes additional for ip, udp, dtls, and coap. That will be 5MB per month and device. And it will drain the battery a lot.

At Orange we do use leshan 2.X in production, with heterogeneous types of devices and LwM2M SDK connected to ours servers, and I can confirm it is very robust. Even more in your case, where it seems that you manage both device and server code.
And as @jvermillard and @sbernard31 mentioned, the API can still change (with breaking change), so you need to anticipate this in your project.
On our side, with regards to our backend application, we currently aim about 5k devices per leshan instance. So we performed loading tests with 5k devices on 1 instance with heavy usage (bootstrap, firmware updates, observation...). As @boaks mentionned, performance limitations will probably not come from leshan but rather from your backend application. And FYI, to handle multi-instances, you will need some work regarding specific implementations (using redis to share sessions).

Thanks.
I have now to present this solution to our infra architect and come back with other questions.
Regards

Apart from Leshan, Most of the "Production Readiness" Depends on the backend integrations (mainly the patterns used to integrate) with your own frameworks and managing client connect, disconnect and bootstrapping cycles ( loadbalancing and avoiding thundering heards)
We have Leshan v1.x running in a clustered setup with backend integrated to C* and Kafka (while keeping redis for Auth) with 2.5 Million actively connected devices(Hubs) sending us events (using observe-notify) in the range of 500-600 events/day/device. This load is served by 25 instances of leshan (staying at 100k per server since the Californium/scandium had a max connection value at 150k)
As your scale increases (beyond say 1M active/live connections), you need to reinvent dynamic loadbalancing ( bootstrap based or otherwise) yourself. Building in the observability would help a lot in understanding the application and loadpattern.
We still didnt try Leshan 2.0 at scale. I'm hoping it can hold 4-5x more connections than v1.x

@PadmabushanReddy
Thanks a lot for let us know!

since the Californium/scandium had a max connection value at 150k

150k is the default, with Cf 3.11 it will be
Californium3.properties:
# Maximum number of active peers.
# Default: 150000
COAP.MAX_ACTIVE_PEERS=1000000

# DTLS maximum connections.
# Default: 150000
DTLS.MAX_CONNECTIONS=1000000

to adapt that. With Cf 2.x it depends on
Californium.properties:
MAX_ACTIVE_PEERS=1000000

and which value is passed to
DtlsConnectorConfig.Builder.setMaxConnections(int)

You may need to check here in the Leshan project, what is supported.

@EmbGangsta any news do you know if Leshan will be used by CLS ?

I hope we could ! Today it would be the best approach in term of "price".  So I am pushing them to use Leshan yes !
We may have a little talk together maybe, I am in holidays right now.

Thx for the update.

We may have a little talk together maybe, I am in holidays right now.

I will be unavailable next few days back the 21th.
Generally, I prefer to use public async communication, but I you want to ask more "private" question you can send me an email :slightly_smiling_face:

@EmbGangsta maybe you ca be interested by #1669 discussion ?


tmp path

Right now gactar is putting generated files in tmp next to the executable.
Should probably default to putting them in an actual temporary directory (and clean up afterwards).
Allow override of this on the command line because it's useful to look at the generated code.
This is related to #18.

Fixed by 0ac28cea23a0071fba92d266d58d21f87e1d200b
Decided to leave the generated code in the temp dir (now called "gactar-temp" by default) & allow the user to override the location on the command line.


Does ffm support regression?

It seems we cannot set the optimization objective. Can we use ffm for regression problem?

You can find a version for regression in this page: https://www.csie.ntu.edu.tw/~cjlin/libffm/.


Please invite me to the GitHub Community Organization

Please invite me to the GitHub Community Organization.

Name: Amrit Anand

Discord Username(if exists): Galahad#9318

Additional Context:

Where did you meet Eddie?
I first saw Eddie on my LinkedIn feed and was totally fascinated by his achievements and work in Open-Source Community(side note: I'm still waiting for that connection invite acceptation Eddie). From there I went to his YouTube channel and finally his awesome discord community. It was because of him that I participated in my first hackathon under his guild(#Eddiehub FTW)
What do you like about this community/ why do you want to join?
After being in their discord community I saw all the people over there were really helpful and kind to everyone. I got my doubts cleared in just a few minutes plus they suggested better ways too. The thing I liked most about this community was that they are really inclusive and inviting community.
Also I'm stepping into open-source and I would love to start my journey in this amazing path with this amazing community
:nerd_face:

Invitation sent for the GitHub Organisation. Welcome to the community 🎉
Don't forget after accepting to make it public so it appears on your GitHub profile for everyone else to see, you can do this by finding your name in the GitHub organisation list and change the dropdown to public https://github.com/orgs/EddieJaoudeCommunity/people
Tips for practising:
Customise your GitHub profile, here is a live stream on it https://www.youtube.com/watch?v=cT6GXCuS0Zo
Practice repo, instructions on how to add your name to the README in the README https://github.com/EddieJaoudeCommunity/hacktoberfest-practice
Remember contributing to open source is not just about code, its about collaboration, communication and adding value
I hope that helps

Invitation sent for the GitHub Organisation. Welcome to the community 🎉
Don't forget after accepting to make it public so it appears on your GitHub profile for everyone else to see, you can do this by finding your name in the GitHub organisation list and change the dropdown to public https://github.com/orgs/EddieJaoudeCommunity/people
Tips for practising:
Customise your GitHub profile, here is a live stream on it https://www.youtube.com/watch?v=cT6GXCuS0Zo
Practice repo, instructions on how to add your name to the README in the README https://github.com/EddieJaoudeCommunity/hacktoberfest-practice
Remember contributing to open source is not just about code, its about collaboration, communication and adding value
I hope that helps


[Task] Add empty router result diagnostic documentation

Related issue #10154 #9826
Status: Documents to be improved
Background: When a user requests the Dubbo interface, due to problems such as registry configuration problems, server status, and routing processing exceptions, no available server addresses are available for the request, and an error is reported.
Solution: Print out the processing process by improving logs such as log output registration center status, routing status, etc. to simplify the troubleshooting process. Currently, there is a lack of corresponding documentation.

please assgin to me

@AlbumenJ can you please assign this to me


Sort native library paths for deterministic builds

Fixes #3800 by using a BTreeSet, which guarantees a deterministic iteration order.
Since the order was previously arbitrary, a sorted order is just as good. The list is so small, that any performance difference between BTreeSet and HashSet is negligible.

r? @alexcrichton
(rust_highfive has picked a reviewer for you, use r? to override)

As I commented on #3800 there is no correct ordering here I believe, but do you think differently? In that sense it seems like using a sorted set will just allow everyone to accidentally depend on what is otherwise a bug?

The ideal solution would be linkers getting smarter and having proper diagnostics for ambiguities and/or more precise ways to specify linking, but AFAIK that's not going to happen anytime soon.
So lacking ability to fix the root cause, I'd like to at least make the bug less painful. My hope is that it turns intermittent linking problems into deterministic linking problems.
Other options I considered are:

Leave as-is. That's not good, because builds that work may stop working at any time, and Cargo can't help diagnose the problem. Without warnings that's not help, but punishment.

Completely randomize every time. It prevents relying on any order, but then running Cargo a couple of times may "fix" it. I worked on projects that ran buggy rm -rf node_modules; npm a few times until it worked, and that wasn't good.

Some other deterministic order that isn't alphabetical. It would be an extra deterrent against trying to "configure" linking order by renaming directories, but I don't think that's big enough problem to justify complexity.

Try to preserve some "original" order these paths were set in. As far as I understand such order doesn't really exist because of parallel builds, so it'd have to be invented (e.g. by simulating what the order would have been without parallel builds), but then it would still depend on build scripts and dependencies-of-dependencies which aren't easy to control, so in practice it wouldn't be under control anyway.

I agree that deterministic errors are better than intermittent ones, but my point is that any deterministic order will create a silent reliance on the order by accident which will then inevitably fail later and cause bug reports. I don't think there's anything we can do here?

I think allowing an accidental dependence is less bad than Cargo being flaky and annoying. Hashmap breaking builds intermittently is the worst "user interface" for this. Intermittent failures make it harder to diagnose the problem.
If Cargo was deterministic then breakage would come only from changes to the build or environment, like addition of paths or installation of new libraries, which makes it easier to notice what caused it.
If user finds that a crate builds on one machine, but not another, it's much easier to diagnose the problem by having two deterministic builds to compare.
So Cargo is not equipped to prevent this failure in a reliable user-friendly way, so I think it should not try to prevent it, and let the failure happen for its "natural" reasons, which make the root cause easier to diagnose, and let Cargo be a reliable component of the build process.

That's sort of my point though in that I disagree. If Cargo were deterministic then it has no recourse for ever changing, and because there's no "right answer" here it seems like we should ensure that we have the freedom to change this in the future.

I think it's fair if you change that between releases. The main problem is that it currently changes at random, but in an annoying way that is neither guaranteed to be random, nor stable enough to allow debugging of the problem.

I think at this point we're just talking past each other and saying the same thing? To maybe help out a bit can you provide an example of where the build breaks for you and only succeeds with one ordering?

To maybe help out a bit can you provide an example of where the build breaks for you and only succeeds with one ordering?

OpenSSL from #3800 would be one example.
Trying to use a custom version of libjpeg would be another.

Anytime there are multiple answers to a link search, this becomes a nightmare.
@aturon explains this well in https://github.com/rust-lang/cargo/issues/3800#issuecomment-286273221

@alexcrichton I feel like you and the others on this thread are talking past each other a bit.

I think everyone is in agreement that non-determinism can sometimes reveal the existence of a bug.

However, as @nathanaeljones points out (rightly IMO), finding out that there's a bug when you can't reproduce it is usually worse than the bug being hidden. And in particular, the bugs we're talking about here, AIUI, will tend to result in very visible failures when they're triggered. So "masking" them doesn't mean that there's problems lurking in production code, but rather that your build could fail if something gets perturbed.
@alexcrichton, you say that it's OK for the build system to have "controlled" nondeterminism (and you cite parallel builds as an example). I think that's probably true at a fundamental level, since build scripts can observe arbitrary machine state.

However, I think a basic goal of reducing the amount of nondeterminism over time is a good one for Cargo. This isn't about blindly sorting in an effort to fix bugs, but rather about systematically making builds easier to reproduce, so that you have some hope of debugging things when they do go wrong. So, in particular, I don't think we should choose to be nondeterministic when there's an easy way around it.
Finally, @alexcrichton you've mentioned a couple times that there's no "right" order for these items to appear in. But that seems beside the point, to me. What we're after is just determinism, so we can choose any order as long as its consistent. Sorting seems totally reasonable to me.

The only solution I'm aware of that can fully eliminate reliance on link path order is to implement linker search for each platform and fail the build if there are multiple possibilities. Otherwise, it's up to developers to ensure that the wrong library version breaks the build (either through missing symbols or version checks in unit tests). Given that this is not going to happen anytime soon, we'd like to slow the bleeding here.
I've abandoned Cargo wherever possible, but I'd prefer to not have to do that.

I may be wrong, but I think that what you'd want to have here is a LinkedHashSet, not a BTreeSet.
That is, you'd want to cargo to deterministically preserve the original insertion order (i.e. input vector order), not to enforce its own lexicographic reordering.
This is because:

as @nathanaeljones said above, search path order is relevant to the linker
build script knows the proper ordering, and this information is relayed to cargo
any kind of re-ordering (either random or deterministic but custom) could introduce a bug

@lucab AFAIK original user-specified insertion order is non-deterministic, because dependencies are compiled in parallel and any dependency can add a path at any time.

Yes, I'm aware of https://github.com/rust-lang/cargo/issues/3800#issuecomment-284749188. I'm also aware that there are cases where a correct order does not exist.
What I'm pointing out is that:

in cases without an existing correct order (e.g. the MozJPEG-OpenSSL example above), this PR does not matter. Solution does not exist, whatever the order we try
in simple cases with a solution (e.g. a single library returning multiple paths), this PR has (correctness) bugs due to the arbitrary reordering which may change relative order
in more complex cases (e.g. a DAG with multiple -sys crates), a fix at an higher level is due anyway if you are aiming for both correctness and determinism

I'm nominating this for discussion at the next Cargo team meeting, since it's come up a few times in the past.
cc @rust-lang/cargo

Is this important for reproducibility? Does the nondeterminism show up in the compiled artifact?
I think its valuable for builds to be reproducible using the same version of cargo, but that we should not provide any backwards compatibility guarantee that the determinism will be the same between versions of cargo (in other words, as Alex is saying, people should not rely on a particular ordering).

@withoutboats the problem as I understand it is not cross-version; even within the same Cargo version the order is non-deterministic.

Is this important for reproducibility?

Yes

Does the nondeterminism show up in the compiled artifact?

Yes

not provide any backwards compatibility guarantee that the determinism will be the same between versions of cargo

We'll take anything to get reproducible builds.

people should not rely on a particular ordering

There's often no way around it if you're using more than one *-sys crate, or using pkg-config. The only way I know around it is to eliminate -sys crates and exclusively use Conan.io, which isolates each linked artifact in its own folder.
We need to be able to combine multiple -sys crates safely.
Linkers rely on order. Link paths offer multiple solutions for each artifact. It's kind of hard to audit a app when it's built against a different version of dependencies every time you hit enter. Even Docker can't help us with this until we end the randomization.
There's also no working mechanism for users to test, modify, or fixup the merged set of link paths before they're passed to rustc (AFAICT, and I looked for months, then suggested one).
Alphabetical (or smarter - like pushing system folders down the list) sorting helps a ton. Far better than the status quo.
Preserving order - such that  users have some level of control over the order - would be ideal.  I do think this is solvable, and I can't envision a concrete example of how it would paint us into a corner.

@nathanaeljones Thanks for the info! The core of what I'm asking I guess is this: is it sufficient to guarantee that the order will be deterministic within a version? So if you're relying on the ordering being any particular way (e.g. alphabetic), an upgrade might break it, but if you're just relying on it being the same between 2 different builds with the same version of cargo, we should never break that.

It's sufficient for me.
On Dec 1, 2017 5:53 PM, "boats"<EMAIL_ADDRESS>wrote:

@nathanaeljones https://github.com/nathanaeljones Thanks for the info!
The core of what I'm asking I guess is this: is it sufficient to guarantee
that the order will be deterministic within a version? So if you're relying
on the ordering being any particular way (e.g. alphabetic), an upgrade
might break it, but if you're just relying on it being the same between 2
different builds with the same version of cargo, we should never break that.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/rust-lang/cargo/pull/4724#issuecomment-348653176, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAGln0XNhibNjsFq_ohBXug6GBgd1e6bks5s8J-agaJpZM4Qfx37
.


How to disable AriaNG for specific domain?

AriaNG is not working properly for some domain and it's annoying. How can I disable it for these domain as exception?

Can you provide some screenshots or more details?


Source of battery model function

Do you recall the reference for the Transient_S, CTransient_S, RTransient_L, and CTransient_L functions? The function seems to be different from the Accurate electrical battery model capable of predicting runtime and I-V performance paper you cited.
https://github.com/christiansiegel/electrical-circuit-battery-model/blob/ea9783e280b06ee676ceb312571a0236a5619249/batteries.py#L51-L56

I think I used higher order functions. See "2.3 Parameter Extraction" for details.
On 24/06/2019, 03:38 Sathoshi Kumarawadu<EMAIL_ADDRESS>wrote:
Do you recall the reference for the Transient_S, CTransient_S, RTransient_L, and CTransient_L functions? The function seems to be different from the Accurate electrical battery model capable of predicting runtime and I-V performance paper you cited.
https://github.com/christiansiegel/electrical-circuit-battery-model/blob/ea9783e280b06ee676ceb312571a0236a5619249/batteries.py#L51-L56
—You are receiving this because you are subscribed to this thread.Reply to this email directly, view it on GitHub, or mute the thread.

Did you mean model extraction? These functions are different from the ones you have listed. Just curious to where you got the higher order function.
Cheers,

Ah, sorry. I see what you mean. There is no reference for them. I just used those because I could fit them closer to my physical measurements.


"Temporary Chat" feature results a pop-up "You do not have permission to access this resource."" error after upgrading to v0.3.16

Bug Report
Installation Method
Docker
Environment

Open WebUI Version: [v0.3.16]
Previous Version: v0.3.15 (where the feature worked correctly)
Operating System: [Ubuntu 22.04.4 LTS]
Browser : [ Chrome, Firefox, Edge]

Confirmation:

[Y] I have read and followed all the instructions provided in the README.md.
[Y] I am on the latest version of both Open WebUI and Ollama.
[N] I have included the browser console logs.
[Y] I have included the Docker container logs.
[Y] I have provided the exact steps to reproduce the bug in the "Steps to Reproduce" section below.

Expected Behavior:
The "Temporary Chat" should accept the question and respond as intended.
Actual Behavior:
On "Temporary Chat" a pop-up error message appears: "You do not have permission to access this resource." with a "401 Unauthorized" status in the logs.
Description
Bug Summary:
After upgrading to Open-WebUI Docker version v0.3.16, the "Temporary Chat" feature, which was functioning correctly in v0.3.15, results in a pop-up error "You do not have permission to access this resource. Please contact your administrator for assistance." when trying to submit a question, and then the chat/conversation continues without any other issue.
Reproduction Details
Steps to Reproduce:

Upgrade Open-WebUI to Docker v0.3.16.
Enable "Temporary Chat" feature in the chat/model dropdown settings.
Submit a question in the chat interface.
Observe the error popup that states "You do not have permission to access this resource. Please contact your administrator for assistance."

Logs and Screenshots
Docker Container Logs:

open-webui    | INFO:     xxx.xxx.xxx.xxx:0 - "GET /api/v1/users/user/settings HTTP/1.1" 200 OK
open-webui    | INFO:     xxx.xxx.xxx.xxx:0 - "POST /api/chat/completions HTTP/1.1" 200 OK
open-webui    | INFO:     xxx.xxx.xxx.xxx:0 - "POST /api/chat/completed HTTP/1.1" 200 OK
open-webui    | INFO:     xxx.xxx.xxx.xxx:0 - "POST /api/v1/chats/local HTTP/1.1" 401 Unauthorized
open-webui    | generate_title
open-webui    | gpt-4o-mini
open-webui    | INFO:     xxx.xxx.xxx.xxx:0 - "POST /api/task/title/completions HTTP/1.1" 200 OK
open-webui    | INFO:     xxx.xxx.xxx.xxx:0 - "GET /api/v1/chats/?page=1 HTTP/1.1" 200 OK

Screenshots/Screen Recordings:
Edge Browser Screenshot:

Docker Container Logs Screenshot:

Additional Information
This issue began occurring after the upgrade to v0.3.16.
No changes were made to permissions or authentication settings prior to the upgrade

Already reported here, although, it has not been fixed on the dev branch yet.


Move "distributions" out of "on" part of "deploy"

See the URL below for docs on where travis expects to find "distributions":
https://docs.travis-ci.com/user/deployment/pypi/#Uploading-different-distributions
See issue #162

Thanks for this, I'll give this a try on the next release!

Thanks @greatestape !
Was this changed recently?

Ok, the only way we can find out whether this works is to try. So for the next release, let's keep an eye out.


support multi arch properly

At present only kernel+initrd and tarball builds work. Fix the others to use multiarch images.

I think this is also done, now that the mkimage-* are multi-arch


SQLite Browser?

Thanks for releasing this.
Are there any SQLite browsers than can read the encryption created by this library? I've tried both https://sqlitebrowser.org/ and https://sqlitestudio.pl both of which claim SQCipher support, but neither can open the file when provided with the password, and using a simple password like "password".
I'm creating the file (which does appear to be encrypted) with:
DriverManager.getConnection("jdbc:sqlite:db.sqlite", "", "password")

Hello,
Just for you information, this library is based on WxSQLite native SQLite C library (https://github.com/utelle/wxsqlite3) which in fact support multiple encryption scheme. For the moment, the default cipher algorithm is CHACHA20. You might need to change the cipher you are using to be compatible with the GUI tool.
Here you can find all available algorithms and information on how to use and configure them:
https://github.com/Willena/libsqlite3-wx-see/blob/master/readme-2.md#supported-ciphers
https://github.com/Willena/libsqlite3-wx-see/blob/master/readme.md
Each encryption scheme support multiple parameters, that you can provide at connection time in your java code. There are also multiple way to configure all things (using parameter in the URI, using SELECT statements, using natives functions).
Hope it help you.

Hi, I tried "make" then "mvn -Dmaven.test.skip=true package" with your software and I was able to generate sqlite-jdbc-3.27.2.jar file in the target folder.  However, when I include that jar file inside my Java app with DriverManager.getConnection("jdbc:sqlite:db.sqlite", "", "password"), but my db file is still not encrypted.  Am I missing anything?  Thanks!

Oh, I figured it out.  I didn't use the right version of JDK to compile.  In the end, I picked Java8 and it works.  Thanks for your shared repository!

Hi @wenchenglai
Thanks for the report. I did not notice this problem before. I'll try to investigate.

Hi @WilfulTravesty, Hi @wenchenglai
The problem you are facing is seems to be rather more a configuration problem than a problem of the lib itself.
As I was saying, you need to configure the library with the parameters that correspond to the version of SQLCipher (if using SQLCipher) you are using. They are all listed on this page : https://github.com/utelle/wxsqlite3/tree/master/sqlite3secure#cipher_sqlcipher
In Java, you then have two possibilities to open the database:

Use specific SQL functions created in the SQLite binary to configure the library (here is a sample code for SQLCipher4)

    Connection connection = DriverManager.getConnection("jdbc:sqlite:file:sample4.db");
    Statement statement = connection.createStatement();
    statement.execute("SELECT wxsqlite3_config(\"cipher\", \"sqlcipher\")");
    statement.execute("SELECT wxsqlite3_config(\"sqlcipher\", \"legacy\", 4)");
    statement.execute("SELECT wxsqlite3_config(\"sqlcipher\", \"legacy_page_size\", 4096)");
    statement.execute("SELECT wxsqlite3_config(\"sqlcipher\", \"kdf_iter\", 256000)");
    statement.execute("SELECT wxsqlite3_config(\"sqlcipher\", \"fast_kdf_iter\", 2)");
    statement.execute("SELECT wxsqlite3_config(\"sqlcipher\", \"hmac_use\", 1)");
    statement.execute("SELECT wxsqlite3_config(\"sqlcipher\", \"hmac_pgno\", 1)");
    statement.execute("SELECT wxsqlite3_config(\"sqlcipher\", \"hmac_salt_mask\", 0x3a)");
    statement.execute("SELECT wxsqlite3_config(\"sqlcipher\", \"kdf_algorithm\", 2)");
    statement.execute("SELECT wxsqlite3_config(\"sqlcipher\", \"hmac_algorithm\", 2)");
    statement.execute("SELECT wxsqlite3_config(\"sqlcipher\", \"plaintext_header_size\", 0)");
    statement.execute("PRAGMA key='oo'");

Use a much more compact notation using URI parameters (it is basically the same as before be without having to write specific queries. Also for SQLCipher4).

Connection connection = DriverManager.getConnection("jdbc:sqlite:file:sample4.db?cipher=sqlcipher&legacy=4&legacy_page_size=4096&kdf_iter=256000&fast_kdf_iter=2&hmac_use=1&hmac_pgno=1&hmac_salt_mask=0x3a&kdf_algorithm=2&hmac_algorithm=2&plaintext_header_size=0&key=oo");
Statement statement = connection.createStatement();

You may have noticed that the key is NOT passed as argument of the driver connection. You need to pass it through the URI or using the PRAGMA syntax (only if you are not using the default parameters).
Note: Tested on windows 64bit.
Can you try to open the database with SQLite Browser and SQLCipher4 using the code provided above ?

@Willena Thanks for your help, I am able to compile a version of JDBC driver on Mac that can encrypt database files and is also compatible with DB Browser for SQLite.  I used the method you described above.

I tested this on DB Browser for SQLite 3.12.1 and it does not work. I created an encrypted DB using both the JDBC Library as well as the Browser.

Seams related to #25 and utelle/SQLite3MultipleCiphers#20

We are also not having any success accessing databases encrypted by DB Browser for SQLite v3.12.0 (sqlitebrowser).
The GUI tool is built using sqlcipher and makes use of the sqlcipher_export() convenience function:
CipherSettings cipherSettings = cipherDialog.getCipherSettings();

// Attach a new database using the new settings
qApp->processEvents();
if(ok)
    ok = db.executeSQL("ATTACH DATABASE '" + db.currentFile().toStdString() + ".enctemp' AS sqlitebrowser_edit_encryption KEY " + cipherSettings.getPassword() + ";",
                        false, false);
qApp->processEvents();
if(ok)
    ok = db.executeSQL("PRAGMA sqlitebrowser_edit_encryption.cipher_page_size = " + std::to_string(cipherSettings.getPageSize()), false, false);
if(ok)
    ok = db.executeSQL("PRAGMA sqlitebrowser_edit_encryption.cipher_hmac_algorithm = " + cipherSettings.getHmacAlgorithm(), false, false);
if(ok)
    ok = db.executeSQL("PRAGMA sqlitebrowser_edit_encryption.cipher_kdf_algorithm = " + cipherSettings.getKdfAlgorithm(), false, false);
if(ok)
    ok = db.executeSQL("PRAGMA sqlitebrowser_edit_encryption.kdf_iter = " + std::to_string(cipherSettings.getKdfIterations()), false, false);
if (ok)
    ok = db.executeSQL("PRAGMA sqlitebrowser_edit_encryption.cipher_plaintext_header_size = " + std::to_string(cipherSettings.getPlaintextHeaderSize()), false, false);

// Export the current database to the new one
qApp->processEvents();
if(ok)
    ok = db.executeSQL("SELECT sqlcipher_export('sqlitebrowser_edit_encryption');", false, false);

Sqlitebrowser does not seem to provide an interface to set or propagate fast_kdf_iter,  hmac_pgno and hmac_salt_mask.

We are also not having any success accessing databases encrypted by DB Browser for SQLite v3.12.0 (sqlitebrowser).
The GUI tool is built using sqlcipher and makes use of the sqlcipher_export() convenience function:
CipherSettings cipherSettings = cipherDialog.getCipherSettings();

// Attach a new database using the new settings
qApp->processEvents();
if(ok)
    ok = db.executeSQL("ATTACH DATABASE '" + db.currentFile().toStdString() + ".enctemp' AS sqlitebrowser_edit_encryption KEY " + cipherSettings.getPassword() + ";",
                        false, false);
qApp->processEvents();
if(ok)
    ok = db.executeSQL("PRAGMA sqlitebrowser_edit_encryption.cipher_page_size = " + std::to_string(cipherSettings.getPageSize()), false, false);
if(ok)
    ok = db.executeSQL("PRAGMA sqlitebrowser_edit_encryption.cipher_hmac_algorithm = " + cipherSettings.getHmacAlgorithm(), false, false);
if(ok)
    ok = db.executeSQL("PRAGMA sqlitebrowser_edit_encryption.cipher_kdf_algorithm = " + cipherSettings.getKdfAlgorithm(), false, false);
if(ok)
    ok = db.executeSQL("PRAGMA sqlitebrowser_edit_encryption.kdf_iter = " + std::to_string(cipherSettings.getKdfIterations()), false, false);
if (ok)
    ok = db.executeSQL("PRAGMA sqlitebrowser_edit_encryption.cipher_plaintext_header_size = " + std::to_string(cipherSettings.getPlaintextHeaderSize()), false, false);

// Export the current database to the new one
qApp->processEvents();
if(ok)
    ok = db.executeSQL("SELECT sqlcipher_export('sqlitebrowser_edit_encryption');", false, false);

Sqlitebrowser does not seem to provide an interface to set or propagate fast_kdf_iter,  hmac_pgno and hmac_salt_mask.


File Renaming Counter stops at 100

Hello,
if you activate the renaming option for file names which already exists, SIR appends a counter to the file name like (1), (2), (3) ... and so on. But this counter seems to be capped at 100. After the 100, a "Save file as ..."-dialog appears and you have to rename the file by yourself. Is it possible for you to increase / uncap that counter?
Chromium Version 61.0.3163.100 (Offical Build) (64-Bit), Windows 7 (x64)

This seems to be a feature in Chrome:
https://bugs.chromium.org/p/chromium/issues/detail?id=437362
You can workaround it by activating the renaming feature in SIR, and using a timestamp as prefix or suffix.


[BUG]Cell shared formula does not exists when the import is queued

Prerequisites

[x] Checked if your Laravel Excel version is still supported: https://docs.laravel-excel.com/3.1/getting-started/support.html#supported-versions
[ ] Able to reproduce the behaviour outside of your code, the problem is isolated to Laravel Excel.
[x] Checked that your issue isn't already filed.
[x] Checked if no PR was submitted that fixes this problem.
[ ] Filled in the entire issue template

Versions

PHP version: php-7.4.10-Win32-vc15-x64
Laravel version: Laravel Framework 8.5.0
Package version: 3.1.23

Description
We have an excel xlsx file with a column C1=ROUND(A1 + B1, 2).
From the C1 we drag down, and excel autofills the C2,C3,C4,C5....,C999 cells with the formula.
That means the xml from the xslx zip ( you can extract the xslx by changing the extension to .zip) should look like:
C1 XML : ROUND(A1 + B1, 2)22.22
...
Cn XML : 99.99
...
C999 XML : 11.11
When importing this file over laravel queue chunked, with SheetImport, the getCalculatedValue in Cell.php line 63 comes as empty string.
Steps to Reproduce

Expected behavior:
The cell value to be the calculated formula value.
Actual behavior:
The cell value is empty string.
Additional Information
I found that the cell type C2,C3,..C999 is shared, so it goes in castToFormula() in Xlsx.php:269 when loading and reading the file.
Because the shared formula C1 is not loaded yet in $sharedFormulas ( if condition in Xlsx.php:271), and the $value ( defined in Xlsx.php:264 ) is equal to '=', the return value will have no formula like "=ROUND(An + Bn, 2)" where N = { 2,3,4,5,6,7...,999 }
I think because the file is queued, the initial formula is never loaded for some chunk, which will result in an empty value instead of a computed value when using toCollection, on some batches.

There's isn't a lot we can do about that when using chunked imports, because the entire idea of chunking the import is that you only load the sheets that are actually needed.

The data is in the same sheet.
If what you are saying is correct that means laravel-excel cannot correctly parse function cells.

We just use the PhpSpreadsheet chunk filter, I'm not 100% sure how it works behind the scenes with references to other cells in other chunks. Perhaps if you need this kind of logic, using chunks is not a good fit.

You are refering to a package that we don't use

i know, maybe you can improve.

I don't have this use case myself, when we have formulas we don't use chunk. If this is important for you to work, feel free to PR improvements or consider our commercial support.

The docs are open source, feel free to PR the note.

For others who are having the same problem,  and also for you if there is a need to fix laravel-excel:
https://github.com/PHPOffice/PhpSpreadsheet/issues/1669
https://github.com/PHPOffice/PhpSpreadsheet/pull/1680


Drm VS Wanyland

hi,  I found that Wayland's performance is better than DRM's, with Wayland reaching 60FPS while DRM only reaches 30FPS. Why is this?

Sorry, I'll close this ticket as I guess this issue depends on DRM driver or KMS display settings.


windows_package matcher makes any source string lowercase

Issue:
The windows_package matcher is taking any string provided for the source parameter and making it lowercase.
Environment:
Windows 7 64-bit
Chef Development Kit Version: 0.15.16
chef-client version: 12.11.18
berks version: 4.3.5
kitchen version: 1.10.0
Code to reproduce:
Here's the recipe:
windows_package 'UnitTestPackage.exe' do
  action :install
  source 'C:\Temp\UnitTestPackage.exe'
end

Here's the spec file:
describe 'test::default' do
  # Run unit tests with mocked data for all relevant windows versions
  %w(2008R2 2012R2).each do |win_version|
    context "Test #{win_version}" do
      let(:chef_run) do
        ChefSpec::SoloRunner.new(platform: 'windows', version: win_version).converge(described_recipe)
      end

      it 'Installs the package' do
        expect(chef_run).to install_windows_package('UnitTestPackage.exe').with(source: 'C:\Temp\UnitTestPackage.exe')
      end

      it 'converges successfully' do
        expect { chef_run }.to_not raise_error
      end
    end
  end
end

Here's the output:
  1) server_connectivity_setup_pkg::aaa Test 2008R2 Installs the package
     Failure/Error: expect(chef_run).to install_windows_package('UnitTestPackage.exe').with(source: 'C:\Temp\UnitTestPac
kage.exe')

       expected "windows_package[UnitTestPackage.exe]" to have parameters:

         source "C:\\Temp\\UnitTestPackage.exe", was "c:\\temp\\unittestpackage.exe"
     # ./spec/unit/recipes/aaa_spec.rb:18:in `block (4 levels) in <top (required)>'

  2) server_connectivity_setup_pkg::aaa Test 2012R2 Installs the package
     Failure/Error: expect(chef_run).to install_windows_package('UnitTestPackage.exe').with(source: 'C:\Temp\UnitTestPac
kage.exe')

       expected "windows_package[UnitTestPackage.exe]" to have parameters:

         source "C:\\Temp\\UnitTestPackage.exe", was "c:\\temp\\unittestpackage.exe"
     # ./spec/unit/recipes/aaa_spec.rb:18:in `block (4 levels) in <top (required)>'

I guess this could also be a Chef problem, not a ChefSpec problem... starting here though..

It looks like it's due to the way Chef implemented the windows_package resource. The source string is converted to lowercase using Chef::Util::PathHelper.canonical_path. I guess the matcher should be updated for install_windows_package to always convert the expected to lowercase? Is that matcher in the Chef repo or the Windows cookbooks repo?

This is the expected behavior


Fix markdown in Svelte and React tutorials

Changes
React and Svelte quick start tutorials have this useful section:

Markdown changes two hyphens -- to an n-dash –. When pasting these flags in Terminal I get [ERROR] Unexpected extra arguments.
I changed quotes around these flags to a code block to avoid symbol conversion. They would look like README.md in a block just above:

Testing
This change was not tested, because it is a pretty simple Markdown fix.
Docs
No docs other than the subject of this PR were changed, it is a cosmetic fix.

Screenshot from deploy prevew:

Screenshot from deploy prevew:

Thank you!

Thank you!


Correct foreign key for setJoin() in hasManyThrough relation

Replace getQualifiedParentKeyName() with getThroughKey() to provide correct foreign key for query.
Wrong foreign key generated in setJoin() method of hasManyThrough relation class. When both models and foreign keys specified, $this->getQualifiedParentKeyName() always results in id key instead of using specified key.
tables:
`task`
  id: task id (primary)
  title: task title
  ...
`task_user`
  task_id: task ID foreign key
  user_id: user ID foreign key
  ...
$this->hasManyThrough('Model\Task', 'Model\UserTask', 'user_id', 'id')

resolves to following query upon relation data request, which results in exception
select `tasks`.*, `task_user`.`user_id` from `tasks`
inner join `task_user` on `task_user`.`id` = `tasks`.`id`
where `task_user`.`user_id` = 1

Looks like you need to be using belongsToMany, not hasManyThrough based on your table structure.


Allow accessing symbols using [] in classes / @structs.

Unless I annotate my ES6 class as @unrestricted, I get a warning when I access symbol on this class externally.
class LibraryClass {
}
... client scope ...
const lib = new LibrabryClass();
lib[mysymbol] = "my metadata";

This is a duplicate of #1737


Dublicated rows in Indexed DB for CMS extension

The includes work only for simple array ['cat', 'etc'] But in CMS blocs using [{id: '', identifier: ''}, {...}]
https://github.com/DivanteLtd/vue-storefront/blob/f8035412705c0449783bf7441cbf560822ff7677/src/extensions/cms/store.js#L45
I check fix:
if (!state.cmsBlock.filter(e => e.id === data.id).length > 0) {

@anqaka coult You take a look at this?


Changes implemented are as follows

1 : generated requests for node now
a : include support for timeout
b : additional jsdoc entries to help in development
c : extract from swagger spec the supported contentType and inclusion those to the request
2 : generate models defined in swagger doc. Unfortunately this only supports swagger 1.2 specification

@nickfloros Thank you for doing this! Could you had more elaborated test cases and examples into the readme. The usefulness of this PR is still a little bit blurry but I'm sure that clear examples and test cases will solve that.

Hi @wcandillon
I wanted to use to use swaggger-codegen to generate API clients as well as models...Just wanted to know if you are planning to merge this pull request anytime soon
Thanks,
Gaurav

@gauravhub Can you provide me details on your use case? That might help me to understand this feature a little bit better and also help for the review.

@wcandillon I am trying to create an express application which integrates with https://developer.marqeta.com/endpoints API. They have swagger 1.2 docs available and I wanted to generate a client library with API Client + Models to talk to their API. swagger-js-codegen generates the API clients and I was looking for generating models with validation rules as well. I could then extend auto-generated models with any custom logic / validations.


Modularise the code

Currently, the code contains just a single main.py.

Add more methods, divide the logic to make the code more readable.

Working on this one


Ideas / Discussion towards AI wall defence

Hi,
so the next version will probably have upgraded and working ai wall / tower manning.
This will open up a whole lot of options.
For example I tested around a bit yesterday or on Saturday, and gave the Wolf arabian archers, which makes the wolf able to light pitch. I also upped the amount of units he puts on the walls.
So, what are you ideas, wishes? Try to think about balance for AI vs AI matches as well, not only Player vs Ai.
My propositions:
Rat: Upgrade to about 90 to 120 wall defence, 110 to 140 total defence. But with a focus on spearmen, not archers. 1: 2 maybe. (results in 30 archers and 60 spearmen up to 40 archers and 80 spearmen)
Pig: Slightly up the amount of patrols and wall defence, and also recruit some macemen every 6th unit or smthg.
Sultan: Slightly more men, but also very few fire throwers and arab. archers (maybe?).
Caliph: Very few slingers.
Wolf: Up wall defence and patrols just a little bit. European archers, arabian archers, crossbowmen and pikemen in a 1:1:2:1 maybe.
Saladin / Wazir: A few more arabian archers, very few slingers (maybe?) and a few more patrols. For Wazir even more patrols.
Nazir: Add a few wall defence, and very few assassins to the wall defence.
Richard. A few more archers than vanilla, but also pikemen and swordmen for wall defence.
Emir: A few Arabian swordsmen as wall defence?
Abbot: I hate this guy. Give him more patrols for his economy. He is a hamster after all.
Edit:
Also could we have a list of units and their hex values? I tried to mess around and did not know any units besides archers, crossbowmen, spearmen and pikemen.
If so, I might be able to code a little programm that creates textfiles / scripts that you could read in.
How about that? (It would not look great, but it would work. Would do it in C#, Windows forms probably)

Every bot should man as many archers on towers as Snake does.

Phillip def needs some work. Since he never trains archers specifically for defense. I don't think he should hire too many archers, maybe 3 or so per AIV Editor 'archer token'. Given his crazy amount of stables, I feel like he should train knights specifically for castle defense.
Sultan needs to retrain killed firethrowers. I'd love him to use wall archers but that would require AIV edits. Maybe have him train a set number (maybe 12 or so) archers specifically to stay in the keep?

@Panbutt I disagree about Philipp's defense. He should have at most 2 units per aiv spot.
Instead he should have more knights, as you mentioned.
About Sultan and archers. If there are no aiv spots for them, then he will keep them on his ... keep.
Which would be kinda cool I guess.

I am halfway done with creating a small tool to create scripts.
@Sh0wdown I kinda need your help for the last step. I need a list of hex - values for the unit types.

The tool is in beta, and can be downloaded on my google drive.
It won't do anything yet though, Nere needs to actually use the files I create.
@Sh0wdown I will attach an example output file FYI.
zipidi_zapidi_IT.zip

Some more suggestions:

Saladin also sometimes struggles with replacing his fire throwers.
Abbot could use some (more?) monks for wall defense, and a little bit more archers (currently has 3 on some/most of his spots, and just 1-2 on a few others, when 10 spots are used... more even distribution with 3 on every spot would be nice!). Archer patrols he does use already (given enough bow production or patch-allowed bow purchases) in sufficient numbers I'd say.
Sheriff should use more crossbowmen - right now, he usually has only 1-2 crossbows per spot, which is a bit low; 2 crossbows on every spot would be the least one can expect from him!

But, now, I've got some questions:

Rat: Upgrade to about 90 to 120 wall defence, 110 to 140 total defence.

So what exactly is "wall defense" and what is "total defense" / where's the difference?
Also, if you propose new values such as "90 to 120", it would be useful to know the current value as a baseline to compare with.

Pig: Slightly up the amount of patrols and wall defence

If there is "patrols"... do those count towards the "total defense"? Are those the patrols that are sent out of the castle to protect workers?
What about raiding troops (e.g. Marshal's knights or Caliph's slaves) - can those be modified in terms of troop types or numbers as well now? How (if at all) do they factor in with the other values?
What about siege attack troops, can those be modified as well?

Nazir: Add a few wall defence, and very few assassins to the wall defence.

Afaik, Nizar currently uses 80 Arabian archers for his towers (wall defense?), which is about enough I'd say. Adding additional assassins might be neat, but additional archers (in case you also meant that, not sure) I do not think are necessary... with that many archers already there, I'd rather see him use some tower ballistae for long-ranged defense (yes, I know, that would be AIV not AI-character) than even more archers unable to defend against siege engines.

Wolf: Up wall defence and patrols just a little bit. European archers, arabian archers, crossbowmen and pikemen in a 1:1:2:1 maybe.

So what would those pikemen do on the walls? Will they behave like Rat's spearmen, i.e. patrolling between all placed spots, or will they just stand in place on the individual spots?
Also, is it possible to explicitly specify one or the other type of behavior (guarding a spot vs patrols between spots)?
(Depending on what is the answer to those two questions, I have more suggestions for melee troop usage on defense for some AI characters...)

What I get (or think I get) so far is:

There is some sort of "troop budget" for AI characters, that gets distributed among several troop types and the spots placed for them, according to some hardcoded / soon-configurable ratio.
It is possible to change those values, as well as what troop types the AI uses for manning their walls and towers (or the keep, if no corresponding slots are placed in an AIV, but that "fallback behaviour" is already present in vanilla Crusader, of course).
It seems to be possible to give entirely new troop types to an AI character (e.g. slingers to Caliph as you suggested above).
These are exciting times to witness! :D

@Heroesflorian
Let me post the answers here:

So what exactly is "wall defense" and what is "total defense" / where's the difference?

Wall defence are the static troups used to protect the castle, NOT the economical buildings outside (woodcutters etc). Total defence is patrols + wall def.

Also, if you propose new values such as "90 to 120", it would be useful to know the current value as a baseline to compare with.

Current value is 20 for wall def and 30 or something for total def.

What about raiding troops (e.g. Marshal's knights or Caliph's slaves) - can those be modified in terms of troop types or numbers as well now? How (if at all) do they factor in with the other values?

No idea.

What about siege attack troops, can those be modified as well?

No idea.

In regards to Nazir:

80 archers for his huge castles seems not enough, especially because those big towers aren't even half full most of the times.

So what would those pikemen do on the walls? Will they behave like Rat's spearmen, i.e. patrolling between all placed spots, or will they just stand in place on the individual spots?

Nope, sadly not. except for very few AI lords (like the rat, pig) have patrols. They defend the lord and storm out, once the walls are breached. Pretty effective in a lot of cases.

Also, is it possible to explicitly specify one or the other type of behavior (guarding a spot vs patrols between spots)?

No idea.
Let me try to sum it up again:
We have two values, wall defence, which means all static defences used to protect the ai village itself and total defence, which also includes patrols that protect the outside eco (e.g. Sultans army to protect his quarries, same for rat, or Saladins army of archers patrolling around).
Then recruiting defensive units, the army goes through a list of units to recruit (up to 8) and after the last one it loops around. It won't recruit crossbowmen if it does not have crossbows and leather armor though for example. So if we have 2 spots of archers, and 1 spot of spearmen (and the rest empty), then we have double the amount of archers as defence.

80 archers for his huge castles seems not enough, especially because those big towers aren't even half full most of the times.

Well, one thing to also consider: Nizar can have more than 5 archers stacked up on the small towers (80 archers / 10 spots = 8 archers per spot) as well. So sometimes one just doesn't see all of his archers.
I also tried putting all 10 spots (as well as, in a second test, placing just 1 spot in total, there) on a gate house. This resulted in 80 archers on said gatehouse. Obviously, a small 5x5-gate (25) or larger 7x7-gate (49) has not enough tiles to properly show all 80 archers next to each other, and they stack on the same tiles once there are no more empty tiles left.
Anyway, 80 Arabian archers (if Nizar has enough gold and tranquility to manage getting all of them in place) is quite a lot, actually.
Compare that to e.g. Emir or Saladin - both of which can have some rather huge castles as well!
They only use like (guessed) 20-40 Arabian archers. And no defensive fire ballistae either (with vanilla AIVs).
(Yes, Emir (with weapon purchasing) can have a bunch of additional European archers, but still he doesn't get anywhere near Nizar's numbers. And Emir's oil engineers are AIV-specific and can be used by Nizar as well.)
Now, don't get me wrong - I don't want to disadvantage Nizar compared to others, but I just really think the best way to buff Nizar is not necessarily "more archers", but other changes. Be it AIV-related ones (protective walls around towers, tower siege engines, oil pots, pitch ditches, more efficient castle layouts for shorter walking distances and more effective bread production, ...), or AI behaviour adjustments (some additional quarries or iron mines or whatnot, to get more gold from selling resources, additional siege engines or auxiliary ranged troops for Nizar's attacks, better assassin AI, improved assassin (and/or slave) harassment, ...).

Current value is 20 for wall def and 30 or something for total def.

We have two values, wall defence, which means all static defences used to protect the ai village itself and total defence, which also includes patrols that protect the outside eco (e.g. Sultans army to protect his quarries, same for rat, or Saladins army of archers patrolling around).

Sometimes the AI goes crazy, sending tons of units to guard quarries or other economy... I've seen the Rat guard a quarry with over 60 troops (both archers and spearmen) sometimes. Considering the fact 60 > 30, I wonder how that behaviour can be explained... there must be either situations in which the AI ignores the total def limit, or additional values besides the currently known total / wall def.

I agree with most of your points @ByBurton , but even as strongly i would like to see poor ratty a bit better off than now, i disagree on the amount of troops. Sure, Rat is a Lord nonetheless and should at least have a decent amount of bodyguards on its keep. I do feel sorry for the poor rat for being killed instantly by the other ais or by the human player, still it is a goddammed Rat and no character in the Stronghold Universe was ever made to be defeated by the Rat (not even poor Sultan must sleep the sleep of the ancients against the glorious forces of de Puce). So doubling - even trippling seems alright, but from 20 30 to 90 110 or even 120 140 seems way too much

One minor thing I would suggest also: Snake never retrains his wall slingers. He actually only uses his starting slingers (much like phillip and his archers). I'd suggest 3 slingers per spot instead of the usual one and to also allow him to retrain slingers KIA.
Also for Pig, I actually am fond of the idea of him using few crossbowmen and just using craploads of macemen in compensation. He's pretty much a marauding bandit. He will position macemen on macemen tokens placed in AIVs, however only the first two. Anymore placed causes him to use those macemen to patrol those spots, which can be pretty handy for castle defense.
Sheriff ... Yeah. He needs an upgrade to the priority of defensive crossbowmen. Most games he'll only have 4-5 crossbowmen -total- defending his castle. He relies way too much on firethrowers who can be easily killed.

@LordDerMoff The rat would still lose to every enemy with armored forces, e.g. the Sultan.
With my proposed defences (I take 100 wall def. and 120 total def. for now), the rat would have 6 7 spearmen and 33 archers on his walls, and 20 archers and spearmen mixed on his quarry.

@Panbutt Firethrowers for Sultan, Slingers for the Snake. These things can easily be adjusted. We will just have to wait for @Sh0wdown to implement and release a version, which includes support for my tool, so you guys can have your wishes..

Abbot: I hate this guy. Give him more patrols for his economy. He is a hamster after all.
Judging from the code he actually has 0 patrols in Vanilla.

Also could we have a list of units and their hex values?
I have to investigate quite a bit for these values, so maybe I'll do it this evening.

I am halfway done with creating a small tool to create scripts.
I had something like this already in mind. Thanks for helping out!
It could take a bit until I find the time to implement this though.

 And Emir's oil engineers are AIV-specific and can be used by Nizar as well.)

I do notice Emir is better now he can buy bows with his lookout towers manned, especially when enemy horse archer raids come to call at his castle (archers on lookout towers seem to be good against horse archers).
As for boiling oil, like Richard who has the same problem, half the time the oil doesn't work at all when poured from the keep :( No fire at all created. This needs to be fixed I think.

Richard. A few more archers than vanilla, but also pikemen and swordmen for wall defence.
Emir: A few Arabian swordsmen as wall defence?

Well I suppose this would be good against siege towers but none of the other AI use them as yet....(I suppose Snake uses ladders though)

Sheriff ... Yeah. He needs an upgrade to the priority of defensive crossbowmen. Most games he'll only have 4-5 crossbowmen -total- defending his castle. He relies way too much on firethrowers who can be easily killed.

That's why I was thinking slingers for Sheriff, they would be good to support the crossbowmen in the towers.

Saladin / Wazir: A few more arabian archers, very few slingers (maybe?) and a few more patrols. For Wazir even more patrols.

I think Saladin should have a few slingers on walls (as he is a character that already uses a wide variety of Arabian troops), but it might take away from Emir and Wazir's characters to use slingers as a troop type A few additional archers on each of their big towers would probably be better.

Abbot: I hate this guy. Give him more patrols for his economy. He is a hamster after all.

He should I think also send a big group of monks to counterattack any enemy melee troops attacking his front walls.

(archers on lookout towers seem to be good against horse archers)

Everything on lookout towers is good. Those are overpowered.

Well I suppose this would be good against siege towers but none of the other AI use them as yet....(I suppose Snake uses ladders though)

Wrong, this can be effective on all situations. If someone breaches the walls and gets into the castle, additional melee units are much more effective than ranged units.

@ByBurton  thank you for this program. You GOD!!!!

@Lolasik011 Nope. No god here! Maybe a goddess though.
Also ... NOPE!
Just a programmer!

looking great looking forward to messing around with all the new possibilities!
I have to ask through since I am neither a god/godess or programmer ;) how do we add the scripts so they work in game? or is that something which would have to be implemented by showdown first?

looking great looking forward to messing around with all the new possibilities!
I have to ask through since I am neither a god/godess or programmer ;) how do we add the scripts so they work in game? or is that something which would have to be implemented by showdown first?

I can tell you. You can not do anything yet. They won't work. @Sh0wdown will have to implement a way to use them at some point. We are working together on a project regarding this.

That's very cool work, opens a lot of doorways :D.
Reporting a bug with the latest patch however. Emir will not hire European archers for defense when on Deathmatch (much gold little troopers) settings. This was a bug on Crusader (little gold much troops) settings as well but it only effected Arabian Archers.

@Panbutt Sure that it does not just take a long time? Just wait a little longer.

Abbot: I hate this guy. Give him more patrols for his economy. He is a hamster after all.

Judging from the code he actually has 0 patrols in Vanilla.

Hmm... I definitely remember him sending dozens of archers to protect his farmers and other workers, similar to how Saladin or others also do it. (And separate from his harassment monks who approach hostile buildings.)
But possibly there is a distinction to be made here... patrols (patrolling quarries, various farms and other buildings pretty much independent from enemy activity) and "worker-protecting archers / ranged troops" (actively moving to wherever own workers were attacked by enemy troops or workers).

Re melee troops on walls: Even without a wall breach, I guess they could sometimes be somewhat useful as distraction / meat shield as well.
And (when patrolling like Rat's spearmen) have some value as "mobile" / non-stationary defensive troops that slightly increases the need for good timing for attacks and adds some dynamics to sieges.
And of course, for wall breaches and/or siege towers / ladders / assassins / accessible walls, they provide big value to defenders.
(And yes, e.g. walls lowered by mangonels or catapults to the point where they can be entered from the outside are less unlikely than you may think... already happened to (especially thick-walled) AI characters a number of times, even happened to me against the AI already, with just 1 Snake catapult firing at my thick front wall for about 10 seconds, to then rush onto it with dozens of spearmen, archers and slaves... ugh! :D)

That's very cool work, opens a lot of doorways :D.
Reporting a bug with the latest patch however. Emir will not hire European archers for defense when on Deathmatch (much gold little troopers) settings. This was a bug on Crusader (little gold much troops) settings as well but it only effected Arabian Archers.

Does it only happen on Deathmatch?
I noticed a while ago that Emir won't hire European archers even for defence if he is intending to attack an AI player or human player without a moat.
And yes on Crusader mode (little gold much troops), Emir starts with loads of horse archers instead of Arabian archers like Caliph, Wazir or Saladin (and I like this as it makes him different) but the problem is he doesn't seem to man his towers properly until those starting horse archers are killed :(

@Panbutt Sure that it does not just take a long time? Just wait a little longer.

Yeah nvm. I guess just a really weird bug with the custom AIVs i'm using. Tried it out on vanilla AIVs and its fine, switched over to mine and Emir seems to ignore the archer tokens. Probs just a corruption on my end or something.
RE Slingers for Sheriff: Considering Sheriff's units already deal -25% damage when he's in full swing, Slingers for him would be kinda useless. I would suggest instead Arabian Archers and braziers as Sheriff uses pitch so he'd get better usage out of them. Same deal with Caliph. The 5 tier negative fear factor on Slingers makes them nearly worthless.
Instead I'd say perhaps Saladin could use slingers? Slingers atm are the only unit Arab unit he doesn't use. And right now, Saladins castle defenses are a bit pitiful. Only 1 firethrower per spot and 3 archers per spot. They can be overwhelmed pretty easily. I think upping the count to 5 archers per spot and 2 firethrowers per spot while allowing him to use slingers defensively would help a lot.

Slingers just does not suit the Sheriff though. Not at all. It is like giving the rat swordsmen, kind of.

RE Slingers for Sheriff: Considering Sheriff's units already deal -25% damage when his fear factor is in full swing, Slingers for him would be kinda useless.

Does negative fear factor affects unit health or unit damage given....
Anyway, yes on reflection, for Sheriff and Wazir it might not be best to have slingers, but also for Caliph, they won't be as effective with his -5 fear factor, but I suppose if he was supposed to have singers then he should have them.

And right now, Saladins castle defenses are a bit pitiful. Only 1 firethrower per spot and 3 archers per spot. They can be overwhelmed pretty easily. I think upping the count to 5 archers per spot

I think Saladin, Abbot, Emir and Wazir could do with more archers per spot, especially as they have big castles. I suggested 4 more archers per spot for each, apart from Emir who uses both types of archers, he should have 2 more European archers and 2 more Arabian archers per spot I think.

Yeah nvm. I guess just a really weird bug with the custom AIVs i'm using. Tried it out on vanilla AIVs and its fine, switched over to mine and Emir seems to ignore the archer tokens. Probs just a corruption on my end or something.

There is still a problem with Emir manning his towers on Crusader mode (low gold, many troops) though as far as I am aware.

There is still a problem with Emir manning his towers on Crusader mode (low gold, many troops) though as far as I am aware.

This is a problem probably not limited to Emir. The additional starting troops might count towards the wall / total defence, which may prohibit recruiting additional units.

Does negative fear factor affects unit health or unit damage given....

It affects damage. A 'neutral' crossbowman can oneshot a neutral slave, but a -5 crossbowman will have to double tap a neutral slave. This sentence sounds odder than it should. Anyway, a -5 crossbowman leaves a slave on just a tiny sliver of HP after the first shot, result of -25% damage. I feel like thats why Wolf compliments his defensive crossbowmen with archers to compensate for the damage loss.


Pil in asm at global level

This now is able to handle:
let x = 12;

mod M {
    use super::x as r;

    let y = r + 2;
}

mod R {
    use super::x;
    use super::M::y;

    machine FullConstant {
        degree 2;

        let C = |i| match i % 2 {
            0 => x,
            1 => y,
        };
        col commit w;
        w = C;
    }
}

and translates this through all the stages of the assembly handling, object, pilgraph, linker, whatever ... to:
namespace M(2);
let y = (x + 2);
namespace Global(2);
let x = 12;
namespace main(2);
let C = |i| match (i % 2) { 0 => x, 1 => M::y, };
pol commit w;
w = C;

which is then properly parsed and executed!

And yes, we should have mod{...} in pil, but I'm wondering if we shouldn't just use the asm module parser for both.


Return all layoutpages regardless of publication status

Layoutpages do not have publication dates since they are not routable and are always displayed in the context of another page.

Very nice. Thanks.


[SPARK-21125][PYTHON] Extend setJobDescription to PySpark and JavaSpark APIs

What changes were proposed in this pull request?
Extend setJobDescription to PySpark and JavaSpark APIs
SPARK-21125
How was this patch tested?
Testing was done by running a local Spark shell on the built UI. I originally had added a unit test but the PySpark context cannot easily access the Scala Spark Context's private variable with the Job Description key so I omitted the test, due to the simplicity of this addition.
Also ran the existing tests.
Misc
This contribution is my original work and that I license the work to the project under the project's open source license.

Can one of the admins verify this patch?

Can someone take a quick look here? Thanks!

ok to test

Test build #78263 has started for PR 18332 at commit 280bb01.

Test build #78263 has finished for PR 18332 at commit 280bb01.

This patch fails PySpark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/78263/
Test FAILed.

Addressed comments. Thank you!

Test build #78314 has started for PR 18332 at commit 2eb90f2.

Test build #78314 has finished for PR 18332 at commit 2eb90f2.

This patch fails Python style tests.
This patch merges cleanly.
This patch adds no public classes.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/78314/
Test FAILed.

Merged build finished. Test FAILed.

Test build #78316 has started for PR 18332 at commit c1fb62b.

Test build #78316 has finished for PR 18332 at commit c1fb62b.

This patch fails Python style tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/78316/
Test FAILed.

Test build #78318 has started for PR 18332 at commit ab93262.

Test build #78318 has finished for PR 18332 at commit ab93262.

This patch fails Python style tests.
This patch merges cleanly.
This patch adds no public classes.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/78318/
Test FAILed.

Merged build finished. Test FAILed.

Test build #78321 has started for PR 18332 at commit 3aa91cf.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/78321/
Test FAILed.

test this please

Test build #78340 has started for PR 18332 at commit 3aa91cf.

Test build #78340 has finished for PR 18332 at commit 3aa91cf.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/78340/
Test PASSed.

Thanks! merging to master.


DBZ-1235 Final record format for connectors

https://issues.jboss.org/browse/DBZ-1235

@jpechane, looks alright on first sight. But I'm wondering: shouldn't the first step be to enable to switch between old and new behavior. I think ordering should be kept as is in the "legacy" mode we discussed.

@gunnarmorling Please check how the switch mode is implemented

@gunnarmorling Ready for the final review

Hey @jpechane, so I've done some testing with the Schema Registry regarding re-ordering of fields. It looks better than we had anticipated: re-ordering fields indeed causes new versions of schemas in the registry, but the change is allowed in both BACKWARD and FORWARD compatibility checking modes. So that explains why no one complained when we added the new (optional) fields for connector versions etc. and it will also be fine to later on introduce new optional fields at the beginning of the source block such as that TX serial no. we discussed 🤸♀

@gunnarmorling Rebase to the latest master

Ok, looking now. Thanks!

@gunnarmorling Changes LGTM, thanks for the improvement!

@gunnarmorling Force-pushed update that removes one unused import

@jpechane, I've pushed two more commits on top of yours. Can you take a look at them? Thanks!

@gunnarmorling Fine for me!

@gunnarmorling Rebased to the latest master

And applied; thanks a lot, @jpechane 🎉


Feature Request: Overdub/overwrite setting as a route

Hello! Would it be possible to add the recording type (overdub/overwrite) to the midi routing menu? Both are so useful in live performance for different reasons - it’d be great to assign a midi controller to toggle between them while playing live. Thanks for the consideration!

Will look into it, just added Play Toggle and Record Toggle routing targets with the 0.1.40 release.

That's a great new addition.
Still hoping though that this route can be added; it's really amazing to be able to record in both manners especially when building up a track live. It's a little clumsy to have to jump into the project menu and out again at speed when you're performing live; I go back and forth when say adding to or replacing a bass line - and both are incredibly useful for different results! This would make this sequencer uber-powerful in live situations!
Hoping hoping hoping :) :) :)