Helm

Language name
Helm
URL of example repository
https://github.com/DataDog/helm-charts
URL of syntax highlighting grammar
https://github.com/vscode-kubernetes-tools/vscode-kubernetes-tools/blob/master/syntaxes/helm.tmLanguage.json
https://helm.sh/docs/chart_template_guide/getting_started/
https://github.com/helm/helm/tree/main/pkg/lint/rules
https://helm.sh/docs/chart_best_practices/templates/
Most popular extensions

.yaml for chart files
.tpl for _helpers.tpl
.txt for NOTES.txt

Detected language

Smarty
Mustache

Additional details
In my opinion, Helm should be its own language; however, Helm Charts technically use the Go templates, so I would settle for that as well.

https://github.com/github/linguist/issues/4905
https://github.com/github/linguist/issues/4578

Thinking through the required updates...
Helm:
  type: programming
  color: '#0f1689'
  aliases:
  - helm chart
  - helm template
  extensions:
  - ".tpl"
  - ".yaml"
  - ".yml"
  filenames:
  - NOTES.txt
  - _helpers.tpl
  ace_mode: yaml
  codemirror_mode: yaml
  codemirror_mime_type: text/x-yaml
  tm_scope: source.helm

Some additional thoughts:

Some of the Helm files are just pure YAML and should be classified as such, e.g. Chart.yaml and values.yaml
Not sure if the ace_mode and codemirror_mode settings should be YAML, because Helm charts aren't perfect YAML.

I'm on a mac and I'm having issues getting Ruby set up properly, so I haven't been able to add the language yet.

In my opinion, Helm should be its own language; however, Helm Charts technically use the Go templates, so I would settle for that as well.

I don't think Helm warrants its own language as it's not a language, in much the same way an apt package repository isn't a language. Helm charts are essentially a collection of configuration files written in YAML and plain text with some Go templating involved and as such it wouldn't be correct to label them all Helm.
If something were to be added, I'd say it should be Go templating which is going to bring its own challenges around devising a reliable heuristic to differentiate it from other templating languages using the same extensions.

That's fair! I appreciate the input. Closing this and thanks for all you do!

So what happened here?  If it is supposed to be "go-templates" instead of Helm", then why not adjust the submission instead of closing this, leaving the output still 100% wrong as Smarty.

New issue, or ideally a PR, and it would be for adding .tpl to YAML for the case of Helm. This will require a heuristic (aka regex) to diffentiate the files from Smarty, the current only user of this extension in Linguist (and the reason these files are identified as Smarty).


chunks aren't being removed

I have the temp folder set to /tmp but I'm not seeing my chunks dir cleaning up. I am using this:
--clear-chunk-max-size=500g  --clear-chunk-age=120m
I have chunks in there from the 14th. Previously I had just the --clear-chunk-age and it wasnt removing them either.
My concern is perhaps I am not setting these properly. Do they need quotes?
Thank you!

I had this problem too, make sure you're using the latest binary

Thank you for the assistance. I'll close this and give these a try.

Just to follow up. It appears that if both clear-chunk-max and clear-chunk-age are give, only clear-chunk-max is used which is probably the behavior I was seeing. Your examples do not work, it needs the equal sign in there per https://github.com/dweidenfeld/plexdrive/issues/59


AssetSourceId::Name(embedded) does not have an AssetWatcher configured. Consider enabling the file_watcher feature.

Bevy version
0.12.0
What you did
My program prints at start:
2023-11-17T00:16:11.164907Z  WARN bevy_asset::io::source: AssetSourceId::Name(embedded) does not have an AssetWatcher configured. Consider enabling the `file_watcher` feature. Note that Web and Android do not currently support watching assets.

But I have file_watcher feature enabled.
If I enable embedded_watcher feature, this warning disappears.
So I guess it is error message which needs to be fixed.
I'm sorry, I don't have small repro (I have no idea what triggers it), issue appeared after upgrade to 0.12.0.

Must be this https://github.com/bevyengine/bevy/issues/10401

Duplicate of #10401 as mentioned above.


Segfaults with v1.2.15

Using the v1.2.15 release this PHP version will cause a silent segfault:
PHP 5.3.10-1ubuntu3.14 with Suhosin-Patch (cli) (built: Sep  4 2014 07:08:49)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
    with Xdebug v2.1.0, Copyright (c) 2002-2010, by Derick Rethans

Have not yet been abled to trace down the cause, but will update when i find it.

This bug should no longer exist due to the reverted implementation.


Prod mode breaks CSS

🐞 bug report
Description
When building with prod mode and including bootstrap within a wrapper selector via scss, the styles are wrong.
🔬 Minimal Reproduction
The inclusion of bootstrap scss within a wrapper selector looks like this:

clone this repo: https://github.com/cmaart/angular-bootstrap-css-problem
run it with ng serve --prod and you will see that the container on the site has set a min-width which actually should only be in print mode.
CSS with non-prod mode  (the min-width style for container is inside of the media query for print):

CSS with prod mode (the min-width style for container is outside of the media query for print):

EDIT: The issue occurs only when extract-css is executed. So as a workaround setting this to false in angular.json "fixes" the problem.
🌍  Your Environment
Angular Version:

Angular CLI: 7.3.9
Node: 10.10.0
OS: win32 x64
Angular: 7.2.15
... animations, common, compiler, compiler-cli, core, forms
... language-service, platform-browser, platform-browser-dynamic
... router

Package                           Version
-----------------------------------------------------------
@angular-devkit/architect         0.13.9
@angular-devkit/build-angular     0.13.9
@angular-devkit/build-optimizer   0.13.9
@angular-devkit/build-webpack     0.13.9
@angular-devkit/core              7.3.9
@angular-devkit/schematics        7.3.9
@angular/cli                      7.3.9
@ngtools/webpack                  7.3.9
@schematics/angular               7.3.9
@schematics/update                0.13.9
rxjs                              6.3.3
typescript                        3.2.4
webpack                           4.29.0

I'm sorry, but this issue is not caused by Angular CLI.
Please contact the author(s) of the CleanCss project or file an issue on their issue tracker.


AZDS Connect - standard k8s env variables not set when using --run-with-container

When using AZDS --run-with-container option standard environment variables set on K8S pods are not set on the container started by AZDS. Any explicitly set variables are set correctly but ones like e.g. KUBERNETES_SERVICE_HOST are not set.

Thanks for the feedback @skwasiborski . We are investigating and will report back.

Hi @skwasiborski , I'm on the Dev Spaces product team. I'm interested in hearing more about your experiences with Dev Spaces Connect and would love to learn more about your scenarios. Would you be ok with a quick 30 min phone call to discuss more? Feel free to reach out to me at<EMAIL_ADDRESS>


API enhencement request

This plugin is what I was searching for some time in order to replace the old deprecated cordova plugin media, but some functions are missing for a complete API:

Functions for pausing and resuming recording, it seems possible since the the MediaRecorder  class support pause and resume methods.
Add parameters to VoiceRecorder.stopRecording to change the return value format. In my case I will record for dozens of minutes and the base64 encoded string will be really too large, it would be nice to have a parameter to specify that we want to move the temporary file to another location instead of returning its content. For example VoiceRecorder.stopRecording() could take an options object like

interface StopOptions {
    move?: string;
}

In this case if move is != null, the plugin move the file to the given location (this could be an URI returned by Filesystem.getUri) and return this location instead of returning the file content as encoded string.
If you don't have enough time to do it, I will try to implement this (only for Android because I have no idea how to do this on iOS).

As I answered to #7 this plugin was written for my own use case, and I shared this plugin as I thought it might help other people in similar situation.
I really wish i could add additional features that people ask for, but I just don't have the time to put on these features right now

No problem! Thank you anyway because I used it to write my own plugin.


box-shadow definitions have a false space

On line 200 of propeller.css the box-shadow for Firefox, IE and Opera have a false space in their definition. Eg. -moz- box-shadow instead of -moz-box-shadow.

Hello Oliver,
Thank you for bringing this to our notice. We will remove the extra space and you will find updates in our next release.


docs: fixed wrong link to the webrtc-star signaling server deployment file

The previous documentation link was wrong, updated to the new one.

Thanks!


That bar thing under watched episode

When we watch a episode completely in Kuro, that bar thing appears under that episode.

Maybe you should make it such that it appears on every episode we have watched, even if we haven't watched it on Kuro.
Btw, your are doing a great job
Here, have some cookies and take your time 🍪🍪.

The white bar shows the percentage you've watched of the show. Originally the purple line you got around your episodes showed watched, which is why you can tap and hold on an episode to mark it. Before the project switched devs you could also tap and hold to make watched to unwatched.


The issue with variable scope

What version of Go are you using (go version)?

$ go version
go version go1.14 linux/amd64
go version go1.13.8 linux/amd6

Was reproduced for both
Does this issue reproduce with the latest release?
Yes
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/denis/.cache/go-build"
GOENV="/home/denis/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/denis/go/rental_car_golang_migrator"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/home/denis/.go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/home/denis/.go/pkg/tool/linux_amd64"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build624672185=/tmp/go-build -gno-record-gcc-switches"

What did you do?
package main

import (
	"context"
	"fmt"
	"go.mongodb.org/mongo-driver/bson"
	"go.mongodb.org/mongo-driver/mongo"
	"go.mongodb.org/mongo-driver/mongo/options"
)

func findAllValues() chan bson.M {
	connStr := "mongodb://localhost:27018"
	var mongoClient, _ = mongo.Connect(context.TODO(), options.Client().ApplyURI(connStr))

	items := mongoClient.Database("example").Collection("values")
	cursor, _ := items.Find(context.TODO(), bson.M{})

	channel := make(chan bson.M)
	go func() {
		var value bson.M
		for cursor.Next(context.TODO()) {
			cursor.Decode(&value)
			channel <- value
		}
		close(channel)
	}()

	return channel
}

func main() {
	chnlWithRecords := findAllValues()
	for i := range chnlWithRecords {
		fmt.Println(i)
	}
}

Output:
map[_id:ObjectID("5e6fb943a3e9c891fe1783fd") value:1]
map[_id:ObjectID("5e6fb943a3e9c891fe1783fd") value:1]
map[_id:ObjectID("5e6fb943a3e9c891fe1783ff") value:3]
map[_id:ObjectID("5e6fb943a3e9c891fe1783ff") value:3]
map[_id:ObjectID("5e6fb943a3e9c891fe178401") value:5]
map[_id:ObjectID("5e6fb943a3e9c891fe178401") value:5]
map[_id:ObjectID("5e6fb943a3e9c891fe178403") value:7]
map[_id:ObjectID("5e6fb943a3e9c891fe178403") value:7]

After moving value variable inside the loop:
channel := make(chan bson.M)
go func() {
	for cursor.Next(context.TODO()) {
		var value bson.M
		cursor.Decode(&value)
		channel <- value
	}
	close(channel)
}()

Then it works properly:

map[_id:ObjectID("5e6fb943a3e9c891fe1783fc") value:0]
map[_id:ObjectID("5e6fb943a3e9c891fe1783fd") value:1]
map[_id:ObjectID("5e6fb943a3e9c891fe1783fe") value:2]
map[_id:ObjectID("5e6fb943a3e9c891fe1783ff") value:3]
map[_id:ObjectID("5e6fb943a3e9c891fe178400") value:4]

============================================

Another way to reproduce the issue:

func findAllValues() chan bson.M {
	connStr := "mongodb://localhost:27018"
	var mongoClient, _ = mongo.Connect(context.TODO(), options.Client().ApplyURI(connStr))

	items := mongoClient.Database("example").Collection("values")
	cursor, _ := items.Find(context.TODO(), bson.M{})

	channel := make(chan bson.M)
	go func() {
		var value bson.M
		for cursor.Next(context.TODO()) {
			cursor.Decode(&value)
			value = bson.M{"value": "ok"}
			channel <- value
		}
		close(channel)
	}()
	return channel
}

Output will be:
map[_id:ObjectID("5e6fb943a3e9c891fe1783fd") value:1]
map[value:ok]
map[_id:ObjectID("5e6fb943a3e9c891fe1783ff") value:3]
map[value:ok]
map[_id:ObjectID("5e6fb943a3e9c891fe178401") value:5]
map[value:ok]
map[_id:ObjectID("5e6fb943a3e9c891fe178403") value:7]
map[value:ok]
map[_id:ObjectID("5e6fb943a3e9c891fe178405") value:9]

Reinitializing value inside the loop fix the issue

Please fill out the complete issue template. What did you expect to see and why, and what did you see instead?

The code is working if you'll run it with any mongodb collection, but in fact, mongo driver seems isn't an issue here.
Here is how it should work:
https://gist.github.com/mrjazz/cb0f2218ea7f223ddc2808436091ac39/b2929b210ac335f7c7e22d0ac24ce9a4fad98ecf
Here is the code that doesn't work properly:
https://gist.github.com/mrjazz/cb0f2218ea7f223ddc2808436091ac39/9d4ec897c778fad60c587dee64192c0c454fe223
Here is the small difference (moving the value variable into the loop scope):
https://gist.github.com/mrjazz/cb0f2218ea7f223ddc2808436091ac39/revisions

This is a regular old aliasing bug. bson.M is a map type, and maps are reference-like. After you send value on the channel, the next cursor.Decode decodes into the same underlying map.
The race detector should report this (build and test with -race). Please let us know if it does not.

Yes, you are right. Flag -race helps detects it. What is the correct way to avoid such bugs? Thanks

For a start, always test with the race detector whenever you write concurrent code.
(https://golang.org/doc/articles/race_detector.html has more detail.)

Closing, since this seems to be working in line with the language spec and the race detector successfully reports the bug.

Thanks @bcmills


nextcloud module: changing config doesn't propagate to the module

Data that was once config and recorded on ${dataDir}/config/config.php doesn't get updated when the configuration changes.
This is a violation of purity. And more than that, it's very surprising when trying to install, hesitating between pgsql and sqlite, and struggling before understanding that the configuration doesn't get used anyway :p
cc @globin @flokli @eqyiel @fpletz

@Ekleog that's a bit tough.
We have a nextcloud-setup unit, that's supposed to do the installation.
We use the nextcloud-occ maintenance:install command to install nextcloud (passing the configured database and adminpass settings as command parameters).
This CLI generates ${cfg.home}/config/config.php, and installs nextcloud.
The script checks the presence of ${cfg.home}/config/config.php, and skips installation on following starts.
If you now change configuration from the module, we won't run the install command again, as the config file already exists, and nextcloud-setup assumes nextcloud is already installed.

Hmm… Maybe it would be possible to generate the ${cfg.home}/config/config.php somewhere in the store, and symlink to it? This way the next time nextcloud-setup runs it can in addition check whether config.php points to the correct store path.
Now, I don't really know what nextcloud-occ exactly does, so maybe it's not actually possible to do this because eg. one would need to re-run maintenance:install on certain configuration changes? In which case it'd be hard :/ but at least we can maybe make nextcloud-setup fail or something like that, so that the issue is at least noisy?

Now, I don't really know what nextcloud-occ exactly does, so maybe it's not actually possible to do this because eg. one would need to re-run maintenance:install on certain configuration changes?

I don't recommend to do this, I just tried that (after upgrading one of my personal systems) and this tries to recreate a database schema which can end in very bad results.

This way the next time nextcloud-setup runs it can in addition check whether config.php points to the correct store path.

Unfortunately I doubt that this will work properly, nextcloud wants to merge this during the runtime. E.g. it adds a installed => true after a successful maintenance:install or adds trusted domains when running the corresponding command.
I'm using this as well now and hitting these issues, unfortunately I don't have useful ideas either ATM, but I'm happy to discuss better solutions :)

Nextcloud edits it's config.php in a lot of different places, so having it generated through Nix currently isn't possible.
https://github.com/nextcloud/server/issues/11075 digs into that already, I added a comments about our use case here too.

@Ma27, @Ekleog to avoid other people running into the reconfiguration issue for now, what about documenting that, maybe in services.nextcloud.enable?

In the light of this issue, what's the correct way to upgrade nextcloud to a new major version? Do I just pull a newer nixpkgs, upgrade my system and hope that the systemd job will do the right thing?

The nextcloud-setup service runs an occ upgrade that should apply all changes like database migrations needed for the new Nextcloud version (beware, downgrades aren't possible).
As long as you let Nextcloud do its job, you shouldn't get that much issues. IMHO the actual problem here is the configuration of the software within Nix(OS).

just a simple question (could not come to a conclusion after the lengthy thread) but I recently updated my nextcloud via nixops deploy and the update disabled the calendar module. Did I mess up or is that expected ? any way to configure this from nix ?

Assuming that you installed the calendar module via the UI, it is installed in /var/lib/nextcloud/store-apps/calendar. The beginning of my config reads:

I don't think there's anything actionable here - the nextcloud nixos module is limited by how Nextcloud (imperatively) manages its configuration.
The current state is properly documented in services/web-apps/nextcloud.xml, and we raised our concerns to upstream in https://github.com/nextcloud/server/issues/11075#issuecomment-439690749 - closing this issue, feel free to reopen if there's more to be done.

@flokli I think one actionable item would be to have the nextcloud service fail with an explicit error if the configuration being used is not compatible with the configuration defined in the .nix. At least the user would be warned in practice that configuration is not really applied, and not only by the manual that they are relatively unlikely to actually read.
Reopening for now, feel free to reclose if you think that's not a reasonable “solution” :)

The problem is we don't know whether the configuration on disk containing database connection information (${cfg.home}/config/config.php) differs from the one that would be generated through an installation via ${occInstallCmd}- we don't render the configuration on our own, but the installer writes it out as a side-effect.
If I'm not missing something obvious, checking configuration changes would translate to parsing/evaluating config.php on every nextcloud startup as an ExecStartPre, comparing every "interesting" key with the one provided through nixos configuration, and eventually then bailing out if they differ.
I'm not sure if that's a road we'd like to go and keep up to date, while the underlying bug is a missing distinction between configuration and state upstream…

Since upstream mixes state and config it's questionable whether their configuration format is somehow supposed to be backwards-compatible (as it's only supposed to be used internally by Nextcloud). Hence I'm afraid that this will make i.e. upgrades even harder in case of configuration changes, so :-1: from me.
As the issues are documented in the manual now, folks are warned and I think that this is a better option in contrast to adding more complexity to nextcloud-setup.service.
I suggest we either close this for the reasons @flokli already stated or wait for an appropriate upstream fix.

I really don't feel good having stuff in configuration.nix that's actually a disguised command line… :/
Something that would sound nicer to me would be an setup-nextcloud executable that the user would have to manually run, and a bare-bones nextcloud module that does not handle setup or configuration and just makes sure that the systemd unit is setup.
At least the error is obvious (enabling the module without having run the executable would fail), all module options actually mean something, and the impure operation is made explicit.
Either that or, similar to services.postgresql.initialScript, rename all the options so it's explicit that they're used only for initial configuration.
Would one of these solutions make sense to you?

I really don't feel good having stuff in configuration.nix that's actually a disguised command line… :/

Me neither, but currently we don't have much choice…

Something that would sound nicer to me would be an setup-nextcloud executable that the user would have to manually run, and a bare-bones nextcloud module that does not handle setup or configuration and just makes sure that the systemd unit is setup.
At least the error is obvious (enabling the module without having run the executable would fail), all module options actually mean something, and the impure operation is made explicit.

I really like the fact that we can set up the Nextcloud instance in an unattended fashion, without having to worry about manual setting things up.
I really don't want to end with more imperative setup steps than necessary.

Either that or, similar to services.postgresql.initialScript, rename all the options so it's explicit that they're used only for initial configuration.

In theory, we could move some of the options in services.nextcloud.config.* to services.nextcloud.initialConfig.* to make it more obvious what isn't applied continuously. But TBH, I'd rather like to see the state/config mixing fixed upstream than having to introduce more mental complexity here, especially if this gets fixed and we end up with both incarnations.
Really, this issue only occurs while a user changes nextcloud database parameters (mostly while tweaking his initial setup), and not having read the module documentation, where the behaviour is documented.
What about adding the following (subtile) log statement, to point users to the docs when they peek into the logs while things are not working as expected?
diff --git a/nixos/modules/services/web-apps/nextcloud.nix b/nixos/modules/services/web-apps/nextcloud.nix
index 7b3af60ae24..a4665a37f36 100644
--- a/nixos/modules/services/web-apps/nextcloud.nix
+++ b/nixos/modules/services/web-apps/nextcloud.nix
@@ -347,6 +347,8 @@ in {
             # Do not install if already installed
             if [[ ! -e ${cfg.home}/config/config.php ]]; then
               ${occInstallCmd}
+            else
+              echo "${cfg.home}/config/config.php already exists, skipping installation / db reconfiguration (see docs)…"
             fi

             ${occ}/bin/nextcloud-occ upgrade

I agree that the log statement is the minimum we can do, and would at least give a hint about the way in which things are broken.
Now, I guess the reason we're kind of disagreeing on the path forward is that you're much more hopeful than me that nextcloud will ever fix its stuff -- I'm assuming it'll get fixed in years at best (and even then…) -- and if it's in years then I'd much rather live with initialConfig for years then spend a year deprecating it by making it conflict with new config options than try to live with config from now on and have users fail to understand what is going on.
Now urhm, I'm investigating the module a bit deeper, and… is there any reason we can't put the database configuration etc. in override.config.php? We could then refresh override.config.php on each activation, and it should be enough? If we have a way to couple it with something that automatically runs install iff the database is not ready yet then the setup would actually be… almost perfect?

Now urhm, I'm investigating the module a bit deeper, and… is there any reason we can't put the database configuration etc. in override.config.php? We could then refresh override.config.php on each activation, and it should be enough? If we have a way to couple it with something that automatically runs install iff the database is not ready yet then the setup would actually be… almost perfect?

After having a deeper look at the sources (nextcloud/server at github, d3332f516ff2b773b75d7269aac8adecb16ea512 (6 commits ahead of v16.0.0RC1)) I guess that this should be possible (I didn't test it yet though).
Configs will be loaded from /var/lib/nextcloud/config using PHP's glob function[1] while all files ending with config.php will be taken into account. Hence override.config.php works as all config arrays will be merged together. This config will be loaded at lib/base.php[2] and is available as OC::$config which is then used in the DI container[3].
If I understand the code correctly, I assume that it should be possible to render all config options in /var/lib/nextcloud/config/override.config.php as config files found by glob will override values from config.php[4].
[1] Config::readData
[2] OC::initPaths
[3] OC\Server
[4] https://github.com/nextcloud/server/blob/d3332f516ff2b773b75d7269aac8adecb16ea512/lib/private/Config.php#L194

@Ma27 Nice catch! This might indeed be possible - we should make very sure that config overrides work the way we think they will - Config::writeData seems to write the merged configuration, and not just the overrides (and merging this with other config in the wrong order can lead to wonderfully weird to debug issues) ;-)
While I'd still prefer nextcloud splitting config and state properly, and being able to cope with read-only (base) config - it might be a direction worth exploring.
What do you think?

Nice catch! This might indeed be possible

Well, for the record it was actually @Ekleog's idea :sweat_smile:

Config::writeData seems to write the merged configuration, and not just the overrides (and merging this with other config in the wrong order can lead to wonderfully weird to debug issues) ;-)

I guess so, all the stuff from overrides.config.php is also in my config.php at the moment. I'll probably have sufficient time next weekend to check if I can trigger such a case.
I can't promise that, but unless anybody beats me, I can hopefully prepare a fix for this :)

@Ma27 Did you gain some new insights on this?

Unfortunately not... I was pretty busy back then. But as this only requires some fiddling in the module and no patching of the actual package, the change shouldn't be too painful, so if you'd like to take over... :sweat_smile:

@bachp there's #63900 with a fix now :)


Update documentation to note object type returned by versions

It was unclear in the documentation that overriding the versions method would
result in changed behavior not just when retrieving versions but also in
creating them. This commit adds some documentation so the user is aware of this
behavior.

Seems reasonable, thanks Devon.


EVE with ZFS. Problem mounting VM snapshots under IO load.

Description
EVE with ZFS configuration. Virtual machine (container) crashes when trying to mount a snapshot under the IO load.
Steps to Reproduce
Build EVE in a ZFS configuration (HV=zfs). Run the io_perfomance test in Eden. After ~ 2 minutes under load, the virtual machine crashes.
Actual Results
HALTED: [description:"doActivate: Failed mount snapshot: e1086f4d-92cb-4da8-b34b-06af6e153bda#0.container for 10966271-06ec-4e8a-845c-30f417f1d518. Error MountSnapshot: Exception while fetching mounts of snapshot: e1086f4d-92cb-4da8-b34b-06af6e153bda#0.container. device or resource busy" timestamp:{seconds:1610555447 nanos:615540484}]
Expected Results
io_perfomance test passes successfully.
Additional Information
The problem is here:
https://github.com/lf-edge/eve/blob/1b75ad6dcae858ef706956fdd9ab3b142d4c17a0/pkg/pillar/containerd/containerd.go#L307
Function Mounts returns the mounts for the active snapshot transaction identified by a key. Can be called on a read-write or read-only transaction. This is available only for active snapshots.
The problem is reproducible when FIO is active in a container i.e. only under load. If you run a container with no IO load, the problem won't reproduce.
It is possible that this could also be a feature of working with zfs.
A solution to this problem is already in the process and will be released soon pr.

Run the io_perfomance test in Eden

Can you please provide exact steps I can use on my laptop to repro this?

A solution to this problem is already in the process and will be released soon pr.

I'm very curious about your findings -- can you please share ASAP (even if it isn't in a form of mergeable PR)

Run the io_perfomance test in Eden

Can you please provide exact steps I can use on my laptop to repro this?

A solution to this problem is already in the process and will be released soon pr.

I'm very curious about your findings -- can you please share ASAP (even if it isn't in a form of mergeable PR)

Can you please provide exact steps I can use on my laptop to repro this?

You can reproduce this problem by running the following in Eden:
./eden pod deploy --metadata="FIO_TIME=60\nFIO_DEPTH=1,16,32\nFIO_BS=4k\nFIO_JOBS=1,8\nGIT_LOGIN=<you login for github>\nEVE_VERSION=ZFS\nGIT_TOKEN=<your token for github>\nGIT_REPO=eve-performance" -p 8029:80 docker://itmoeve/fio_tests:v.1.2
Don't forget to change GIT_TOKEN and GIT_LOGIN to your own.
OR
Run the test as instructed here, additionally adding to the required env - FIO_TIME (required)

I'm very curious about your findings

I tried several solutions:

This is the wait for the mount to be successful. spent enough time but failed. This turned out to be not quite the right option since we cannot wait long in this case.
The second option is related to the perception of EBUSY status as one of the possible for zfs in this context of this problem under load. This allows for testing (The ultimate goal for my task.). It is also impossible to leave this problem as it is if we decide to switch to zfs. At the moment, I'm trying to figure out that this solution does not have negative consequences both for the system as a whole and for the correct operation of zfs under eve.

Can you please provide exact steps I can use on my laptop to repro this?

You can reproduce this problem by running the following in Eden:
./eden pod deploy --metadata="FIO_TIME=60\nFIO_DEPTH=1,16,32\nFIO_BS=4k\nFIO_JOBS=1,8\nGIT_LOGIN=<you login for github>\nEVE_VERSION=ZFS\nGIT_TOKEN=<your token for github>\nGIT_REPO=eve-performance" -p 8029:80 docker://itmoeve/fio_tests:v.1.2
Don't forget to change GIT_TOKEN and GIT_LOGIN to your own.
OR
Run the test as instructed here, additionally adding to the required env - FIO_TIME (required)

I'm very curious about your findings

I tried several solutions:

This is the wait for the mount to be successful. spent enough time but failed. This turned out to be not quite the right option since we cannot wait long in this case.
The second option is related to the perception of EBUSY status as one of the possible for zfs in this context of this problem under load. This allows for testing (The ultimate goal for my task.). It is also impossible to leave this problem as it is if we decide to switch to zfs. At the moment, I'm trying to figure out that this solution does not have negative consequences both for the system as a whole and for the correct operation of zfs under eve.


runtime: consider making "slice bounds out of range" messages more explicit

What version of Go are you using (go version)?

go version go1.11.4 linux/amd64

Does this issue reproduce with the latest release?
yes
What operating system and processor architecture are you using (go env)?
go env Output
GOARCH="amd64"
GOBIN=""
GOCACHE="/root/.cache/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/usr/local/src/dev/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/go"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build225702417=/tmp/go-build -gno-record-gcc-switches"

What did you do?
a := make([]int, 0, 5)
fmt.Println(a[5:])

What did you expect to see?
Result must be same as for the following code:
a := make([]int, 5)
fmt.Println(a[5:])

What did you see instead?
Error: "panic: runtime error: slice bounds out of range"

The slice indexes must be within the length of the slice, not its capacity. Please read the spec more carefully: https://golang.org/ref/spec#Slice_expressions

For arrays or strings, the indices are in range if 0 <= low <= high <= len(a), otherwise they are out of range. For slices, the upper index bound is the slice capacity cap(a) rather than the length.

Note that it says "upper index bound". You can do:
a := make([]int, 0, 5)
fmt.Println(a[:5])

That is, you can use a slice expression to extend length up to capacity. But arbitrary slice expressions outside of the length range aren't allowed. Perhaps the spec could be made clearer, but I think it's clear enough as it is. I'll leave that to @griesemer.

low<=high
low = cap(a)
2. why the following code work fine:
a := make([]int, 0, 5)
fmt.Println(a[5:5])

I have an impression that the low index in s[low:high] must not be larger than len(s) for a long time.
I just rechecked Go spec, I was wrong.
fmt.Println(a[5:]) should work fine, it is a bug at least since Go SDK 1.8.

Then one section in my article should be wrong. And one SSA optimization in gc is too conservative.

Ah, sorry, it is misunderstanding. The compiler is right.
fmt.Println(a[5:]) doesn't work for it is equivalent to fmt.Println(a[5:0]). :)

But my former impression for the slice rule was really wrong.

Yep!
A missing low index defaults to zero; a missing high index defaults to the length of the sliced operand.

Perhaps the runtime panic message could be a bit more explicit. In particular, the issue here is that we're slicing [5:0], which breaks the low <= high property.
Aside from that, I don't see what else there is to do in Go. The program is wrong, and the runtime is right to panic. I'll leave the issue open for now to see if anyone has any opinions on improving the runtime panic messages.

I'll leave the issue open for now to see if anyone has any opinions on improving the runtime panic messages.

I don't think we should change the runtime panic messages, for two reasons:
(1) I'm sure that people are relying on the text of the existing messages in their programs. They shouldn't be, but they are, and it's not worth breaking them.
(2) Adding additional information (such as the bounds involved) has a cost in binary size and execution. With the current ABI, passing bounds to the runtime panic routines requires stack space, which might prevent elimination of the function prolog, which can have a substantive performance cost in hot code. And there's always a binary size impact.

I imagined that would be the case (2), but I wanted to make sure :)

Thanks for all your advice.


Screenshot is not being attached to the Failed Cucumber Scenario Step in Allure(or Any) Reports

I am new in wdio and trying to explore different wdio frameworks. I have been working on wdio-cucumber-framework lately and facing this issue. Kindly help me in this matter
Issue :> Whenever I try to run my cucumber tests along with allure reports (in sync mode), it doesn't attach the Screenshot to the right failed step in the allure XML file [even it is happening to other reports too like multiple HTML reports] BUT it is attaching screenshot to the next Scenario's 1st step.
Here is the simple wdio-cucumber project ('https://github.com/kasyed245/webdriverio-cucumber/tree/master/allure-results') where you can check two xml files (*-testsuite.xml) regarding screenshots.
Here is the hook where I am trying to capture the screenshot in wdio.conf.js
   afterStep: function afterStep(stepResult) {

        if(stepResult.status == "passed"){
           console.log("===============Step passed===============")
        }else{
          console.log("===============Step Failed===============")
          console.log("Feature : "+stepResult.feature);
          console.log("Scenario : "+stepResult.scenario);
          console.log("Step Text : "+stepResult.text);
          var d = new Date();
          var datetime = d.getDate() + "_"+ (d.getMonth()+1)  + "_" + d.getFullYear()
                          + "_"+ d.getHours() + "_" + d.getMinutes() + "_" + d.getSeconds();
          var fileName = encodeURIComponent(stepResult.scenario.replace(/\s+/g, '-'))+"_"+datetime;
          var filePath = this.screenshotPath + fileName +'.png';
          browser.saveScreenshot(filePath);
          console.log('\n\t Screenshot location:',filePath,'\n');
         }

Apologies in advance if this is already discussed in this forum although I searched but couldn't find any relevant  details. Thanks.

I found the solution here
https://github.com/wswebcreation/wdio-multiple-cucumber-html-reporter/blob/master/README.md#how-do-i-add-screenshots-to-the-report

You need to copy following code in separate file in step folder (like hooks.js) and commented out all the After hooks in the conf.js file
const {After, Status} =  require('cucumber');

After((scenarioResult)=>{
  // Here it is added to a failed step, but each time you call `browser.saveScreenshot()` it will automatically bee added to the report
  if (scenarioResult.result.status === 'failed') {
    // It will add the screenshot to the JSON
    browser.saveScreenshot()
  }
  return scenarioResult.status;
});

And now you'll find both Allure report or wdio-multiple-cucumber-html-reporter working fine.

Hello,
The same problem that I have had. If you use afterStep to take screenshot, the screenshot save after that step attach.
Here is my package.json file details below;
    "@types/archiver": "^3.0.0",
    "@types/chai": "^4.2.3",
    "@types/cucumber": "^4.0.7",
    "@types/fs-extra": "^8.0.0",
    "@types/mysql2": "github:types/mysql2",
    "@types/node": "^12.7.7",
    "@types/nodemailer": "^6.2.1",
    "@types/sprintf-js": "^1.1.2",
    "@types/underscore": "^1.9.3",
    "@types/uuid": "^3.4.5",
    "@types/xml2js": "^0.4.5",
    "@wdio/allure-reporter": "^5.13.2",
    "@wdio/cli": "^5.13.2",
    "@wdio/cucumber-framework": "^5.13.2",
    "@wdio/local-runner": "^5.13.2",
    "@wdio/selenium-standalone-service": "^5.13.2",
    "@wdio/spec-reporter": "^5.13.2",
    "@wdio/sync": "^5.13.2",
    "allure-commandline": "^2.13.0",
    "appium-controller": "^1.1.6",
    "archiver": "^3.1.1",
    "browser-detect": "^0.2.28",
    "chai": "^4.2.0",
    "fs-extra": "^8.1.0",
    "moment": "^2.24.0",
    "mysql2": "^1.7.0",
    "nodemailer": "^6.3.0",
    "sprintf-js": "^1.1.2",
    "ts-node": "^8.4.1",
    "tsconfig-paths": "^3.9.0",
    "typescript": "^3.6.3",
    "webdriverio": "^5.13.2",


Returning sources from RAG response

Since langchain4j 0.31.0 we can retrieve sources :

https://github.com/langchain4j/langchain4j/releases/tag/0.31.0
https://github.com/langchain4j/langchain4j/pull/1015
https://github.com/langchain4j/langchain4j-examples/commit/db4a954f85113dae0592415f331c7d679419daf3

#49


Alabou review of latest IS-11 specification

Trying to enhance the normative text about intersection. The key aspects are 1) Controller "chooses" a number of Receivers, 2) "such intersection" could be "satisfying" all or some of the Receivers, 3) "such intersection" should represent the "largest consensus" among the Receivers, 4) the user may set preferences about how the largest consensus is obtained.

Controller must track Sender during IS-05 connection but also after as the signal may change.

The Receiver state is not directly associated to the active/inactive state of the Receiver (as it is for the Sender).  The Receiver state is about the "active Flow" which is a way of saying about the "active transport file content".

Make the sentence "Inputs/Outputs MAY be associated with multiple Senders/Receivers" more general to allow any possible cases.

I included Nikita's comments/suggestions and some other edits as discussed in our meeting of March 21th in a few additional commits. Make sure to compare using all the commits of alabou-patch-1 from v1.0-dev.


Game Not Extracting.

Game name:  High Heels!
Engine version: (specify engine version, if known)
Platform: APK
Error message: Some data left
Stack trace:    at uTinyRipper.Lz4.Lz4DecodeStream.ReadBuffer(Stream stream, Int64 count)
at uTinyRipper.BundleFileScheme.ReadFileStreamMetadata(Stream stream, Int64 basePosition)
at uTinyRipper.BundleFileScheme.ReadScheme(Stream stream)
at uTinyRipper.GameCollection.ReadScheme(SmartStream stream, String filePath, String fileName)
at uTinyRipper.GameCollection.LoadScheme(String filePath, String fileName)
at uTinyRipper.GameStructure.ProcessPlatformStructure(GameStructureProcessor processor, PlatformGameStructure structure)
at uTinyRipper.GameStructure.Load(List1 pathes, LayoutInfo layinfo)    at uTinyRipper.GameStructure.Load(IEnumerable1 pathes, LayoutInfo layinfo)
at uTinyRipperGUI.MainWindow.LoadFiles(Object data)

Support for Unity versions up to 2020.2.0 has been recently added to my AssetRipper fork.


Run specific testcase?

I appreciate the work done for this tessuite. I use it to debug a websocket server I built. The problem is that there are many test cases and I want to narrow down the debugging to specific test cases. For example if the problem is on test case 9.2.3 I don't want to have to wait for all the tests for every attempt to fix my bug.
So is there a way to run a specific testcase?
Examples:
wstest --mode fuzzingclient --testcase 9.2.3
wstest --mode fuzzingclient --testcase 7-9 # this would run all test cases from 7.x.x to 9.x.x

Take a look at the fuzzingclient.json and fuzzingserver.json config files. They allow you to specific a single test or a sub-range, exclude a specific test or subrange, etc.

Exactly. You can use patterns like "cases": ["1.*", "3.1.*"] in the config https://github.com/tavendo/AutobahnTestSuite/blob/master/examples/fuzzingserver/fuzzingserver.json#L8

Thank you. It wasn't that clear for a newbie how to go on doing this but now I figured it out :)
For future reference, you simply have the json in the same directory where you run wstest:
wstest --mode fuzzingclient --testset fuzzingclient.json

fuzzingclient.json:
{
   "options": {"failByDrop": false},
   "outdir": "./reports/servers",

   "servers": [{"agent": "AutobahnServer", "url": "ws://localhost:9001", "options": {"version": 18}}],

   "cases": ["9.*"],
   "exclude-cases": [],
   "exclude-agent-cases": {}
}

The above configuration will run all 9.x.x tests.


Update release process to match main gaffer project

Update the release process for the gaffer-tools project by publishing artefacts using Travis.

Merged into develop.


[1.0] Don't throw an uncaught m.request rejection

It's very useful to see uncaught errors in promise chains, but I don't think throwing them is a good idea. With the dev tools open, it triggers the js console and can be pretty annoying, especially since it doesn't give you a good stack trace.
I suggest using console.warn instead, which displays a nice message without interrupting the page.
Edit: I'm using v1.0.0-rc.8

Sorry, you're talking about https://github.com/lhorie/mithril.js/blob/rewrite/request/request.js#L86 and https://github.com/lhorie/mithril.js/blob/rewrite/request/request.js#L90 ?
I think that code is doing exactly the right thing. The promise can't resolve because there's an error so it rejects. I'm not sure how console.warn would make any sense there. Would the promise resolve with an error? Just never resolve or reject? None of the alternatives I can imagine make much sense in the context of a promise-returning API.
You can m.request().then().catch(console.warn.bind(console)) if you really don't want to know about it.

Sorry, I should have looked at the codebase first. I'm definitely not saying it shouldn't reject. What I'm saying is, it throws an error that – if uncaught – causes chrome's dev tools to go into exception mode (the code stepper). Normal promises do not do that; if you have an unhandled reject, it silently swallows the error.
This line is the culprit: https://github.com/lhorie/mithril.js/blob/rewrite/request/request.js#L22 – it's the line that chrome dev tools opens up when there's an unhandled promise rejection.

Unhandled promise rejections don't get silently swallowed. Chrome logs eagerly (and potentially incorrectly) and Firefox waits for a timeout before logging.

Woah, you're right. I must have been using an old version of chrome. Thanks!


implement pre-order traversal of node

Hello! I'm playing around with your nice library to learn a bit of Rust. I found myself filtering and mapping the AST, for example to extract only a specific type of Node. After implementing my own filter function I noticed that the Iterator trait actually provides just that, all that's needed is the next function.
So here I implement a pre-order traversal of the Node-tree to create an Iterator over the AST. I show how it can be used on the to_string implementation.
Since I'm new to Rust, I was wondering if this sounds useful to you and if there is anything I could improve.

Hey! Thanks for your patience, cool work!
This seems a bit similar to my preorder traversel utility here: https://github.com/wooorm/mdxjs-rs/blob/8cba71bcf926057ae4bdc5b67de69010a5621301/src/mdast_util_to_hast.rs#L1198-L1222. (I also had a mutable version there as well: https://github.com/wooorm/mdxjs-rs/commit/f6b705f2fe7c47ff704aeca563f25c5fd5b81850#diff-d1bf57e8534841c5ee7eda0ab2bcf89b943719c21ea89a48bf96e25a114e2f3f)
I’ve been meaning to turn the nodes into traits (see https://github.com/wooorm/markdown-rs/issues/27#issuecomment-1340467635). That way, we can have such utilities working on mdast and hast.
Perhaps that’s something you might be interested in working on? :)


Prevent textinput from auto focusing when scrolling down

In the demo, if the view becomes scrollable, scrolling down will auto trigger the textinput to focus, which then shows the keyboard.  Is there a way to prevent this behavior?

Yes, if you don't want this behavior you can remove the revealKeyboardInteractive prop from KeyboardAccessoryView.

I couldn't do it and i am struggling with this....could someone help please?


feat: gcp spot instances

Remove node kubernetes resource on spot node eviction event.
close #179
Pull Request

What? (description)
Why? (reasoning)
Acceptance
Please use the following checklist:

[ ] you linked an issue (if applicable)
[ ] you included tests (if applicable)
[ ] you ran conformance (make conformance)
[x] you linted your code (make lint)
[x] you linted your code (make unit)

See make help for a description of the available targets.

/m


Internet Explorer isn't starting on SeleniumHub on Testerra v.  2.0-RC-7

Describe the bug
If I try to exec final WebDriver driver = WEB_DRIVER_MANAGER.getWebDriver(); with test.properties tt.browser.setting= ie:11
(the request isn't even showing up on my SeleniumHub, with Safari e.g. it's working)
Expected behavior
The internet explorer starts on my SeleniumHub Server. (With plain Selenium it's working)
Environment(please complete the following information):

OS: [WIN 10]
Browser [internet explorer]
Version [11]

You are welcome to contact me directly.

@fdomesle Which Selenium version are you using? Its 3.14 or 4.x?

@martingrossmann 3.141.59


What is the purpose of CSS classes .one .two .three?

https://github.com/twokul/ember-lazy-image/blob/master/vendor/lazy-image/lazy-image.css#L35-L57
That hit me hard. Now all my grid classes are fading in and out ;)

@fsmanuel those are for animating loading dots in "Loading..."

I don't they're used so I might as well just delete them


Remove rimraf devdep

Remove rimraf as a dev dep. One less thing to update.

Hmm, I have a feeling that the docs should keep the rimraf there so the "recommendation" is to support multiplatform builds?

I know github action windows runners support rm -rf directly now, is that a gha specific feature?
Alternatively could we instead recommend windows users use wsl for multiplatform builds?
My goal is to eliminate random one off solutions like rimrad when there are better platform solutions available now.

I'm not sure it's GHA only. I'll check what's available to confirm if this actually affects pure Windows (non-WSL) developer machines.

FYI this breaks native Windows cmd and requires a unix environment, so WSL, MSYS, etc.

Wsl should work. Posh has rm -rf now right? Git bash is also a good option on windows. GitHub action windows runners have rm -rf now. Besides this is just used in testing and docs, people are free to use rimraf as needed. I just don't want to keep updating this dep since it doesn't seem that critical here.

@XhmikosR Do you know how this can be the case then?

I know github action windows runners support rm -rf directly now, is that a gha specific feature?

Are GitHub:s runners not representative of a normal windows box? Does it run a different version of windows to what you do?
Unless there’s a way to test and verify that it works or break then it’s hard to know

@voxpelli the default is to use bash even on Windows, hence why this doesn't fail on CI. So, no, it's not default regarding the shell. But believe me, it does fail on Windows native cmd :)

That’s weird and unexpected :/ Then one can’t trust those tests really

There's a reason behind this decision, as always.
But this doesn't change the thing that this change breaks things on Windows
native cmd.
If you guys consider it important, that's another thing. I personally
strive to keep Windows compatibility all these years, but either decision
is OK since this doesn't seem to affect the end users.
On Thu, Oct 24, 2024, 18:28 Pelle Wessman @.***> wrote:

That’s weird and unexpected :/ Then one can’t trust those tests really
—
Reply to this email directly, view it on GitHub
https://github.com/bcomnes/npm-run-all2/pull/156#issuecomment-2435610096,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AACVLNPRSR5DILK46K2EHTLZ5EG3DAVCNFSM6AAAAABQFDL4LWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIMZVGYYTAMBZGY
.
You are receiving this because you were mentioned.Message ID:
@.***>

As long as the tests still pass on Windows I’m 🙌

I mean, this was my review comment @XhmikosR

As a windows user worried about compatibility, it seems like wsl would be the better solution to this and for many of the other edge cases similar to this. Is this not accessible by default for some reason? (Sorry I haven't run windows in years).
Also, as a dev time only dep, you would also need access to git, which would also seem to necessitate wsl or git bash.
My goal is to cut down on everywhere deps when there are better solutions available because I get like 50+ prs when they major version.

@XhmikosR That bash is the default on windows seems to be incorrect? The documentation says that this is the default:

Windows pwsh
This is the default shell used on Windows. The PowerShell Core. GitHub appends the extension .ps1 to your script name. If your self-hosted Windows runner does not have PowerShell Core installed, then PowerShell Desktop is used instead.
pwsh -command ". '{0}'".

@bcomnes If you make a config like I did here you can opt to ignore such automated PR:s for specific dependencies: https://github.com/voxpelli/renovate-config/blob/main/ignores.json

Maybe we should restore some note in the docs? I'm okay with keeping the npm scripts as they are


ImportError: libcudart.so.7.5: cannot open shared object file: No such file or directory

I am running mxnet in a gpu-enabled docker container (https://hub.docker.com/r/kaixhin/cuda-mxnet/)   which uses cuda8.   Apparently the FCIS expects cuda7.5?  After copying the operator_cxx files to mxnet home and recompiling , I hit the libcudart error when trying to run the demo.  Any hints on how to proceed?
The mxnet itself seems fine from the python check:

In [2]: import mxnet as mx
In [5]: a=mx.nd.ones((2,3),mx.gpu())
In [6]: b=a*2+1
In [7]: b.asnumpy()
Out[7]: array([[ 3.,  3.,  3.],
       [ 3.,  3.,  3.]], dtype=float32)

Use CUDA 7.5 docker image from
https://github.com/Kaixhin/dockerfiles/blob/master/cuda-mxnet/cuda_v7.5/Dockerfile

Also you will need to modify above Dockerfile to use following specific commit that FCIS uses.
https://github.com/dmlc/mxnet/tree/62ecb60


Webspace Import Xliff

Based on #1695
Tasks:

[ ] test coverage
[ ] gather feedback for my changes
[ ] submit changes to the documentation
[x] added changelog line
[ ] Missing Fields:

[ ] Navigation Context
[ ] State
[ ] Published
[ ] Creator?
[ ] Changer?

Informations:

Q
A

Tests pass?
yes

Fixed tickets
part of #1686

BC Breaks
New ContentTypeExportInterface functions (importData)

Doc
none

Currently some fields are missing in the export add them to the requirements.

new PR: #2705


Only contacts working properly

Description
I cannot seem to get anything other than the contacts command to work. I had both fb-messenger-cli and messer installed, but neither of them was working properly. I tried to uninstall (not 100% successfully) and install again (seemed successful). Messer logs in OK, but the only command I get a response is with contacts. Any suggestions on how to do a clean install or to solve this issue?
Versions
Run and copy-paste the results of the following:

npm -v 6.4.1
node -v v11.9.0
messer -v 0.5.0

Ubuntu 18.04 LTS

Hey @blandre sorry to hear you're having trouble. The latest vestion of Messer is 0.6.0, so I'd suggest trying to upgrade to this version and see if you have any success. Let us know! Please reopen this issue if you need more assistance


Add shapeBorder option on App Bar

I added borderRadius for a project.

@lsaudon Thanks for your contribution! This will need a test to make sure we don't accidentally regress your change later, though.
cc @HansMuller @willlarche for review

Please add screenshots when you get a moment.

BorderRadius.only(       bottomRight: Radius.circular(15.0),       bottomLeft: Radius.circular(15.0),     )
Simple Appbar

And with bottom

So, I can't see from the screenshots but I assume the top corners are rounded too?

It's a shapeborder. Yes, the top corners can be rounded too. https://docs.flutter.io/flutter/painting/ShapeBorder-class.html

Great! I don't think I'd recommend shaping the lower corners but we shouldn't forbid it. And the top ones are shaped in lots of apps these days.

So, no objections from Material product. Code up to @Hixie and @HansMuller to LGTM.

I'm sorry, I'm sorry.
I can't do the tests.
I have a lot of package errors with flutter and art in the project.

Is everything okay?

I will land this when the tests have finished.


schema:update always has updates

Describe the bug
schema:update always has updates.
Tried rebuilding the cache and that didn't fix things.
Stack trace
NODE_ENV=proxy mikro-orm schema:update -r --fk-checks
Config environment: proxy
Schema successfully updated

NODE_ENV=proxy mikro-orm schema:update -d --fk-checks
Config environment: proxy
alter table "Person" drop constraint if exists "Person_displayName_check";
alter table "Person" alter column "displayName" type varchar using ("displayName"::varchar);
alter table "Person" alter column "displayName" set default null;
alter table "Person" drop constraint if exists "Person_photoURL_check";
alter table "Person" alter column "photoURL" type varchar using ("photoURL"::varchar);
alter table "Person" alter column "photoURL" set default null;

Expected behavior
Shouldn't see anything.
Versions

Dependency
Version

mikro-orm
3.6.10

your-driver
postgres

fyi, removing default: null from:
	@Property({columnType: 'varchar', nullable: true})

Fixed it.

Did you really test this with 3.6.10? I see in the email you reported it on older version and there were fixes related to schema generator recently.
Anyway, i need to see entities, its not that simple (not happening always) - there are tests for this, and they pass. It might be also connected to the db version (not driver or connector, but the actual db).

Ok got it replicated, it's really because of the default: null (although it is not needed, as nullable columns already default to null, but agreed this should be covered).

Yea, I went back and tested it after upgrading. =)


add provenance columns

In the main table, you may want to add columns track when the row was added and modified.

I think this would be a request on the rdftab.rs tracker, since it handles bulkloading
How would this track deletes?
There are various ways of handling this in a RDBMS, e.g. shadow audit tables. This is how we did it in Chado: http://gmod.org/wiki/Chado_Audit_Module
or there could be a very general history table
I think having some kind of metadata about updates will be useful for our async reasoner strategy
closing for now, feel free to continue here: https://github.com/cmungall/semantic-sql/discussions

I've thought about this for a long time. I don't think it's practical to manage history while also managing blank nodes everywhere. But the Thick Triples idea my team is not implementing will eliminate most blank nodes, and then I plan to experiment with the approach taken by Datomic and/or TerminusDB, to add a transaction ID and an assert/retract boolean. Then we'll see if we can make practical use of diffs/deltas in triples.


Remove internal step package

Description
This commit removes the use of the step package and the use of STEPPATH as the base directory for relative paths in template files, as well as the location of the tpmkms storage directory.
This change will require changes in smallstep/cli and smallstep/certificates.

@hslatman I've been making changes in other projects, and currently, the only problem I'm facing is that I need to specify "storage-directory" when using commands like:
$ step path
/tmp/step
$ step kms key 'tpmkms:name=mariano;device=/var/run/step-tpmsimulator.sock;storage-directory=/tmp/step/tpm
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKYUDXQVk5lWPkN1TPy7lsAvQFp9O
ynHQW976bqcYCQB4bHNqr5j4dmWHYvIorHk5YDY3JbPAEb2jdTqSqos0iw==
-----END PUBLIC KEY-----

That flag was not necessary before.


WoB collaboration issues as mentor at Gssoc-Ext.

I was selected as mentor in GSSoC-Extended and as a contributor at WoB. After the merge of both programs, I've received an email about being contributor and not mentor.
Now do I contribute as a contributor or a mentor? Also I've already been mentoring the project assigned and assisting the project admin, so kindly clear up the details.

the option is yours you can either continue as a contributor or mentor. what ever works for you. but one role at a time


Cargo refactor & examples work

This is some precursor work to being able to use features to build just clients for wasm and dedicated headless servers for the examples, and deploy the servers for live demos.
I'll squash this down when it's ready – there are a lot of micro commits to debug github workflows
I still have some tidying up to do, then would like to merge – i'll make a follow-up PR later to upgrade the rest of the examples. For now at least, all the examples are using the new workspace level deps. Should make the upgrade to bevy 0.15 slightly easier.
Changelog

moved all dependencies to top-level Cargo file, under workspace.dependencies. this helps ensure we are always using the same version of deps that are needed across multiple crates (eg lightyear, tests, examples/*).
changed bevy dep to, by default, only add features needed for headless operation
added "gui" feature to lightyear_examples_common and examples, which enables the other gui-related bevy features. this allows us to build true headless server binaries for the examples.
refactor some setup code in common, so examples explicity say if the plugin is for client/server/shared/renderer. This is so we can omit UI related stuff in headless builds.
added a rendering plugin in common that sets up the window plugin, a connect button system, and some status text, which all the examples will use. individual examples still responsible for adding a camera bundle and rendering their game.
added bevygap features to common and simple_box and spaceships examples. the example games don't need to write any bevygap code, they just need to enable the appropriate feature on lightyear_examples_common and the behaviour of the connect system in the common renderer plugin changes accordingly.
added a common/BevygapSharedExtensionPlugin plugin that replicates a server metadata resource and displays the FQDN and location of the server you connect to.
added some feature combo guards in common/lib. so now you can be sure that (eg) if the steam feature is enabled, you can't be on wasm.  this simplifies some of the cfg checks in the code (of which there are now more..).
added build system for bevygap-enabled wasm frontend for examples, publishing to github pages.
added build system for bevygap-enabled single docker image for all server binaries, publishing to gh container registry.
fixed a few minor linting things as i noticed them
wrote and used arbctl to manipulate docker version tags on deployed edgegap applications as part of build pipeline
made and migrated to lightyear org on my edgegap account.

TODO

add egui world inspector to common renderer with shortcut to toggle
fix spaceships ui overlapping with common ui. connect button kinda hidden by metrics.
update the other examples to support bevygap and split client/server features
decide on max players per server, set in edgegap
either write a template for the example menu index.html, or maybe add to the existing book via iframes pointing to ghpages?
decide where to run the matchmaker bits, at what url. currently sharing infra with my bevygap-spaceships demo.
ideally the wasm and server builders should be two phase - compile artifacts, once both are known to compile, then deploy.. want to avoid situation where we push new servers and still have old wasm clients due to failed build, and visa-versa. the "right" way might be to embed the application version edgegap uses, but that adds too much complexity for now, for some simple examples.

After merging please disable the 2 new workflows for server and wasm builds.


✨ Only run license check and not everything

The main workflow currently uses make all even though it only needs the licensecheck binary. This makes the check really slow.
In addition, I've pinned the dependency

I. think we're hitting API rate limits, Rate limit exceeded happening on integration test.
FYI @azeemsgoogle @naveensrinivasan


How to update the time Interval dynamically?

I will start the counter with 0... every iteration value will be increased to 0.1 and  the periodic timer will be stopped when
the counter value reaches 20.
My requirement is I have to pass the counter values to the front end with different time intervals.
For example, If the counter value is between 0 and 5... the time interval should be 0.1 seconds. When the counter value is between 5 and 10 the time interval should be 0.005... if it is between 10 and 15 then the time interval should be 0.00005. Like this, it goes on...
I tried the below code.
function testLoops($loop) {
        $counter = 0;
        $loop->addPeriodicTimer(0.1, function(TimerInterface $timer)  use(&$counter, $loop) {
            $counter = $counter+0.1;

            if($counter > 5 && $counter <= 10) {
                $this->Timer(0.005);
            } else if($counter > 10 && $counter <= 15) {
                $this->Timer(0.00005);
            } else if($counter > 15 && $counter <= 20) {
                $this->Timer(0.0000005);
            }
            echo "counter: ({$counter}) \n";

            if($counter >= 20) {
                $loop->cancelTimer($timer);
            }
        });
    }

Could someone help me how to achieve this functionality.

I used the recursive technique to implement this. Calling the same function repeatedly.

@CherukuriSiva Glad to hear you've already sorted this out.
For future reference: If you want to change the intervals in-between timer invocations, it's probably easier to use one-off timers and reschedule after each invocation. Periodic timers use a similar logic internally, but automatically reschedule with a fixed interval.


Save salt config info

@xJonathanLEI
Hi~, After successfully depleyed contract, need to save the salt value used to calculate the contract address.

Thanks for the PR, but I'm not convinced that this is the best way to redeploy an account. Depending on implementations, account contracts might be capable of changing state, which when naively deployed, even with the original salt, would result in a different address.
For example, an account contract most likely has the public key as part of the constructor arguments. If the key is later on changed, deploying the same account with the new key and the original salt won't give you the same address.
We need a better solution for account redeployment. I'm afraid this is not it.


Styles Issues after 2.0 release

Describe the bug

Issue where styles worked in 1.38.9, but after release they didn't. (screenrecording Robbert > can't share the recording over here) > @keeganedwin can you link related thread?
Issue where multiple themes are enabled and the styles don't show in Figma. (screenrecording Keegan > can't share here) > https://tokens-studio.slack.com/archives/C02HN88QARL/p1723732865563299
Internal screenrecording: https://hyma-team.slack.com/archives/C04V8U8UH0F/p1723817105349809?thread_ts=1723813528.996869&cid=C04V8U8UH0F
#3088
https://github.com/tokens-studio/figma-plugin/issues/3095

Also linking this user submitted related issue: https://github.com/tokens-studio/figma-plugin/issues/3080
https://github.com/tokens-studio/figma-plugin/issues/3088#issue-2475404043

Isuse no.1 is resolved by #3103

I am having this problem again, document wide styles break on text layers in my custom overrides, they all revert to raw values, styles get broken. But when I look at the Lara set for same token they still work style is connected.


Email template

Created and added a template for forgot password email
Example Implementation

responsive as well:

dont push the sqlite db

@Robogeek95 can you
visit this conflict as soon as possible bro


Rocket immediately launches upon selecting destination in guidance computer (v0.8)

Satellite bay, no seat. Not a lot else to say here.

can you send me a screenshot of your rocket setup?  And do you have any infrastructure connected to it?  Is this single player or on a server?  I've so far been unsuccessful in replicating this.

Does the fueling machine output a redstone signal when the rocket is full on fuel? Because I've noticed it's actually once the rocket is fully fueled, and my monitoring station is next to it.
(If that is what it is, can we get a UI button for monitoring station redstone sensitivity?)

yes, it does, and I'll look into adding that.


Update credentials-binding plugin

When using withCredentials with v1.12 of the credentials-binding
plugin causes the console output to become corrupted with extra
asterisks making output difficult to read.  This is also described in JENKINS-41760

[test]
on the surface I'm good with this, but I want to see the workflow/pipeline plugin flow that and if it was bringing in the older version.  Ultimately, as it progresses and picks up later versions of credential-bindings, we'll want to remove this bumping of it and pick it up from there.
I'll examine our test output and report back.  Based on the results, I may have @jcpowermac add a comment so we remember what to track / look for.
thanks

OK, pipeline-model-definition (declaritive pipeline) pulls it in directly, as well as indirectly via its dependency on docker-workflow/docker-common.  But those only bump it to 1.12.
I'll go ahead a merge this but create a follow up PR to add the appropriate comments so we don't forget
to remove it long term.

[merge]


support crop with dynamic point

Q
A

Bug fix?
no

New feature?
yes

BC breaks?
no

Deprecations?
no

Fixed tickets
fixes #issuenum

Related issues/PRs
#issuenum

License
MIT

What's in this PR?
Support crop video with dynamic point
for example
ffmpeg -i input.mp4 -filter:v "crop=in_w/4:in_h:t*100:0" output.mp4

Why?
for creating a motion animation from a video, something like dynamic view of a video
Example Usage
require __DIR__."/../vendor/autoload.php";

try {
    $ffmpeg = \FFMpeg\FFMpeg::create();
    $video = $ffmpeg->open(__DIR__."/merge_img.mp4");

    $video
        ->filters()
        ->crop(new \FFMpeg\Coordinate\Point("t*100", 0, true), new \FFMpeg\Coordinate\Dimension(200, 600));

    $video->save(new \FFMpeg\Format\Video\X264(), __DIR__."/test.mp4");
~~~

#### To Do

- [ ] Create tests

Looks good to me, can you provide the tests please?

@jens1o i added UT for dynamic point. Please check my merge request again pls

Looks good to me, but I will check the changes again when I've got more time


Use rubocop-govuk for linting instead of govuk-lint

The govuk-lint gem is deprecated!
This switches to rubocop-govuk, the more up-to-date replacement, using the migration guide.
Thanks for adopting our linting rules!
Closes #126.

Thanks for doing this, Issy.
All the places where single quotes are being changed to double quotes - is that to satisfy Rubocop?

Exactly. The default linting rules that we have enforce that. 😞


Ngrok.exe Flagged as PUA

This is not inherently your problem, but I thought I would mention that several well-known security suites, including Microsoft Defender, flag ngrok.exe as a Potentially Unwanted Application (PUA). This is because Ngrok is a tool which is sometimes exploited for unauthorized access (https://www.microsoft.com/en-us/wdsi/threats/malware-encyclopedia-description?Name=PUA:MacOS/Ngrok!MTB) (https://github.com/microsoft/botframework-sdk/issues/6654).
If there aren't alternatives, I would at least suggest mentioning this on the description page, noting that this is normal and generally safe to allow in this instance. I would also note why this happens, possibly linking to resources that explain the security implications (https://news.sophos.com/en-us/2022/07/14/rapid-response-the-ngrok-incident-guide/).
It might be worth looking into alternatives like PageKite or Localtunnel, which could offer similar functionality with potentially fewer security flags, though I understand they may have other trade-offs in terms of ease of use and features.

I would like to be able to disable the creation of the ngrok.exe file in the mod's config every time the game is started, since my antivirus will delete it every time anyway, and I don't use it.


chore: upgrade Azure Disk CSI driver to v1.15

What type of PR is this?
/kind feature
What this PR does / why we need it:
chore: upgrade Azure Disk CSI driver to v1.15
Which issue(s) this PR fixes:

Fixes #
Requirements:

[ ] uses conventional commit messages

[ ] includes documentation
[ ] adds unit tests
[ ] tested upgrade from previous version

Special notes for your reviewer:
Release note:
chore: upgrade Azure Disk CSI driver to v1.15

cc @ZeroMagic as well, we need to cache azuredisk/file image for windows and linux both.

@AbelHu seems AKS Windows VHD Build - PR check-in gate is broken
https://msazure.visualstudio.com/09706533-03bf-4b43-9a9b-b49c75429646/_apis/build/builds/53745639/logs/29
2022-04-01T09:02:35.7531715Z /usr/lib/python3/dist-packages/requests/__init__.py:89: RequestsDependencyWarning: urllib3 (1.26.6) or chardet (3.0.4) doesn't match a supported version!
2022-04-01T09:02:35.7533794Z   warnings.warn("urllib3 ({}) or chardet ({}) doesn't match a supported "
2022-04-01T09:02:35.8523578Z + [[ default != \d\e\f\a\u\l\t ]]
2022-04-01T09:02:35.8524998Z + [[ -n '' ]]
2022-04-01T09:02:35.8525689Z + [[ -n '' ]]
2022-04-01T09:02:35.8526351Z + [[ -n '' ]]
2022-04-01T09:02:35.8527026Z + '[' == arm64 ']'
2022-04-01T09:02:35.8527605Z ./vhdbuilder/packer/cleanup.sh: line 74: [: ==: unary operator expected

@andyzhangx it is a known issue and @shiqiantao is investigating it.

@andyzhangx Are the updated versions using currently?

@andyzhangx Are the updated versions using currently?

@AbelHu yes, I forgot to update csi driver images on Windows in the before, this PR added all missing images.


PHP Parse error in enhancedData_multiple_lineItem.php

PHP Version: PHP 7.1.16
When running php -l on enhancedData_multiple_lineItem.php a parse error is emitted on line 52:
PHP Parse error:  syntax error, unexpected 'new' (T_NEW) in enhancedData_multiple_lineItem.php on line 52

Parse error: syntax error, unexpected 'new' (T_NEW) in enhancedData_multiple_lineItem.php on line 52

Errors parsing enhancedData_multiple_lineItem.php

Thank you for pointing it out. It is fixed and should be working in the next release.


Support Fedora 30

Add support for Fedora 30: https://getfedora.org/en/server/download/

Closing as Fedora 30 came and went (is now EOL)


Fix warning about the missing file

If I have not installed kubectl, I will get the missing  ~/.kube/config error.

Thank you @Runrioter for PR. But there's already a PR for this in #229.

@salmanulfarzy  sorry, I will close this

Thank you for the support 👍

Duplicate of #229.

Closing in favor of #229


usingRecursiveComparison too permissive with smaller class

When comparing 2 kotlin classes with usingRecursiveComparison, it happens that isEqualTo is returning true or false depending on who comes first.
class Test {

    data class OpenAt(val hour: String)
    object Closed

    @Test
    fun `Not passing`() {
        assertThat(OpenAt("10:00"))
            .usingRecursiveComparison()
            .isEqualTo(Closed)
    }

    @Test
    fun `Passing`() {
        assertThat(Closed)
            .usingRecursiveComparison()
            .isEqualTo(OpenAt("10:00"))
    }
}

One possibility would be to use withStrictTypeChecking to get around this issue, but I'm not sure the previous behaviour is the one intended. Is it ?
Thanks for your insight.

assertj core version: 3.24.2

Ok so I guess that's the standard behaviour.
Shouldn't withStrictTypeChecking be the default behaviour when using usingRecursiveComparison ?

It was at some point but we decided otherwise for flexibility.
Even with withStrictTypeChecking the recursive comparison is not symmetrical as shown https://www.javadoc.io/doc/org.assertj/assertj-core/latest/org/assertj/core/api/RecursiveComparisonAssert.html#withStrictTypeChecking()


Native reminder support

⚠ Please check that this feature request hasn't been suggested before.

[X] I searched previous Ideas in Discussions didn't find any similar feature requests.
[X] I searched previous Issues didn't find any similar feature requests.

🔖 Feature description
There is user demand for notifications based on task dates see #432. However this requires the use of another obsidian plugin which was not designed to be used with tasks first, instead adding support later in development.
✔ Solution
Create a native implementation of reminders build into the tasks plugin. See my current ideas for it under Additional Context.
❓ Alternatives
Do nothing, and use the currently existing reminder plugin
📝 Additional Context
Setting Reminder Date
How to set the reminder date:

create a new date field called reminder:

Con: starts to bloat the modal UI with two many dates
Pro: probably the easiest to implement

Convert and existing one to reminders name and all

scheduled -> reminders (personally never found this one useful)

regardless should maybe add a setting to hide unused element in modal. Or add page on publish for CSS snippets

Con: could mess with existing work flows if converting

Treat and existing field due, start… as the reminder date via a selector in settings or a toggle next to the date ⏲

Pro: could enable multiple reminders, one on Start and another on Due
Pro: could set this on by default via a global setting, low friction for user
Con: Could complicated existing tests and would require a new data fields to be added of type bool: isRemind

While option one is probably the easiest I think three is the most interesting to implement while also offering the most expandability with multiple reminders and a minimally clutter UI. I do believe a PR should be created to hide elements from the modal see #1853.

Thanks very much indeed for picking this up @Erik-Handeland.

Earlier references and requests:

#1282
#292
#1269

Create a new date field called reminder

Yes, this needs to be the approach.
In case you haven't seen it, this page will be very useful when adding the field :

https://publish.obsidian.md/tasks-contributing/Code/How+do+I+add+a+new+field+to+the+Task+class

In the interests of keeping the steps manageable, perhaps the first version could not support reminder times, and could instead have a setting the user says what times of day they would like that day's reminders.

Tasks is in the fortunate position of PRs coming in very often now, and long-lived PRs have a high chance of conflicting with main by the time they are merged.
For example, there are incoming PRs to add support for dataview format, and a new SQL-based search engine. Both of which would overlap with a PR adding a new field.
And the larger a PR is, the longer it takes me to review, and again the more potentially conflicting other edits come in.
Therefore, ideally, it would really help for this feature to be done in small chunks, for example adding the storage and editing of reminders in one PR and the actual Reminder modal in a different one - at each stage, providing enough documentation and tests that Tasks could be released as soon as the PR is merged.

Indeed, having too many PRs is a nice problem to have. I had some time to look at the existing reminders plugin and the key functions for notifications seems fairly straight forward (famous last words). I've also taken a look at the two mentions pending PRs and will keep them in mind, hopefully they can be merged in here soon. Love to see all this momentum

FYI I forked this repo and built this myself. I'd like to properly contribute to this project by making a PR, writing the tests, etc, but have very little bandwidth at the moment. I would really welcome anyone that wants to help get this over the very final lap.
The branch with Reminder support is here: https://github.com/stevendkwtz/obsidian-tasks/tree/develop

Supports YYYY-MM-DD and YYYY-MM-DD hh:mm formats
Suggester autocomplete support
dataview and emoji style support
Integrates with reminder plugin (at least emoji style) so notifications (within the app) are scheduled as expected

NOTE that branch contains other changes I've made to this repo, including an API to toggle tasks. Would need to be decoupled from the reminder changeset to be properly merged into this repo.

Hi @stevendkwtz

FYI I forked this repo and built this myself. I'd like to properly contribute to this project by making a PR, writing the tests, etc, but have very little bandwidth at the moment. I would really welcome anyone that wants to help get this over the very final lap.

Thanks very much for this.
Things I've noted from reading through the code, if/when this is picked up:

There was an earlier, incomplete PR that may already have answered some of the following: https://github.com/obsidian-tasks-group/obsidian-tasks/pull/1925
A significant concern - and area in need of thorough exploratory and automated testing -  with this and similar implementations is how things like before and after in date searches interact with values that have times on - in ReminderDateField.ts - and whether this will give confusing results... as the entire search mechanism is built around times being at midnight...
In Recurrence.ts, what was the thinking behind putting Reminder before Scheduled and Start in the priority order? This would be quite a significant change that would need clear documentation....
With Reminder having been added to Recurrence, I think it should probably be added to the happens query, and to Task.happensDates()
There is also type HappensDate in Postponer.ts - how should Reminder interact with the Postpone facility - or vice versa?
The order of fields in Task lines needs review - I'm not sure where in the line Reminder should go, but Done date should definitely still be the last field on Task lines (which it looks like it might have done, from one of the tests)
The following code could be put behind a helper function somewhere, to avoid repetition and the risk of inconsistency....

task.reminderDate?.format(
                    isDateTime(task.reminderDate)
                        ? TaskRegularExpressions.dateTimeFormat
                        : TaskRegularExpressions.dateFormat,
                ),

withAllRepresentativeReminderDates() would benefit from having some values with times in too

@claremacrae

There was an earlier, incomplete PR that may already have answered some of the following: #1925

😮 I have not seen this before commenting on this issue even though its liked above.

With Reminder having been added to Recurrence, I think it should probably be added to the happens query, and to Task.happensDates()

I was wondering myself whether it made sense for Reminders to be added to happens or not. I added it to recurrence because I assumed that if a user adds a reminder to a recurring task, they'd normally like to be reminded about that task at each recurrence.

There is also type HappensDate in Postponer.ts - how should Reminder interact with the Postpone facility - or vice versa?

Not sure myself 😅. TBH I would defer to you / the other plugin owners and maintainers, any user feedback you may have collected about this, or copy whatever todoist does.

In Recurrence.ts, what was the thinking behind putting Reminder before Scheduled and Start in the priority order? This would be quite a significant change that would need clear documentation....

No thinking at all, I just hacked this together quick and dirty and can update this. I probably use this plugin differently than probably every other user, so I built reminders for my use case first, and haven't properly tested or given much thought to most of the other functionality. What I mean by that is:

I actually I don't use this plugin's tasks query code block to search and render tasks
I wrote a JS class which adds a bunch of additional fields and functions on top the task struct, query and sorting helpers, etc.
I use obsidian-custom-js to load that class within a codeblock and query my tasks, and obsidian-react-components to render the queried tasks, so I can tweak and customize exactly how tasks are rendered.

Example Source:

Becomes:

My personal end goal tasks+reminder support+global notification support (using ntfy since obsidian doesn't have notification support?!)
Let me know what you think some next steps are here, and where the best channel to continue the conversation is as well.

Hi @stevendkwtz, wow, thanks for a really interesting reply.

Let me know what you think some next steps are here, and where the best channel to continue the conversation is as well.

Definitely a video call to explore how to move forwards... It's way higher bandwidth than to-and-fro here...
My email is in my GitHub profile.... Hope to hear from you...

We will add support for a Reminder field.
But we are not going to implementation a Reminder mechanism in Tasks - that is best done by other plugins or tools.
Background: This request falls within a set of areas that we have decided not to support in Tasks.

https://github.com/obsidian-tasks-group/obsidian-tasks/issues/2721

Closing as wontfix.


Detachable field should be multiselect

Edit: Because some galls are integral in some phases and partly detachable in others, we need to be able to select yes, no, or yes and no for a given gall. It seems like the simplest way to achieve this would be to make "Detachable" a multi-select field like Location is now. This would also obviate the checkbox bug noted below.
Original:
Eg: I load the page for Aceria elongata and it correctly shows "Detachable: no." Then I open the admin page for that species and the box is checked for yes. If I make a change elsewhere and submit, that changes the detachable status to yes. Easy to overlook and change the data by mistake. In species that are listed as "Detachable: yes" on their gall page, the box loads as checked on the admin page as well, though it's correct in that case.

@jeffdc it occurred to us that instead of fixing this bug, we should just change the nature of this field. There are species that can be integral early in the season and develop a detachable part later in the season (eg Celticecis expulsa), so some galls need to be associated with both yes and no, OR we need to add a third category that somehow communicates that special kind of detachability (although that third condition may not be obvious in some life stages, so even then we'd still need to be able to assign multiple values to a given gall). Either way the check box isn't going to cut it. Sorry I didn't catch this earlier.

No problem. Re-write this issue to encompass what is needed.

@jeffdc Sorry I dragged my feet on this one. I know I'll frick something up if I try to do a schema change myself. What's the protocol/order of operations for deploying a code change + schema update? I'll probably just try accomplishing this on my local repo using the documentation you provided and update the PR and we can go from there

What schema change is needed? It is already an integer so provides flexibility.
I have a bunch of schema changes that will be needed upcoming, see #72, we could make a change as part of that if we want to.

What are the values for detachable?
It sounds like they are (at least):

yes
no
both (not sure how to word this
none/unassigned

I was thinking we would keep it as simple as possible

Yes
No
(none selected)

If it's both, then you just select both. That's why I want it to be a multiselect.
Does that seem good to you?

Selecting both (multiselect) requires that I add two new tables (to allow the many-to-many) relationships so it is a lot more work to do. I am already doing that for the other fields, shape, color, etc. so I can do it and now is the time to do so if that is what we want. However, I think that having a multiselect field with the options yes and no is really weird. People's expectations for Yes/No are that they are exclusive. I would recommend that we re-think this field. Possibilities:

Rename Yes / No to something else
Disallow multiselect and give options like I suggested: yes, no, both, none

Maybe there are other ways?

I don't understand how a third "both" option would work. I must be misunderstanding what you mean?
What I think you're saying is that the admin would select "both", which would mean that gall would only appear if the ID user selected "both." But how would an ID user know to do that? They're looking at a gall that is either detachable or not, so they select the one they think they see. They may not know that later in the season it becomes detachable (or vice versa).
The user's expectation is that they are mutually exclusive, so it's on the user end that we have to only present those two options. In order to make that possible, we have to account for the fact that they are not actually exclusive on the admin end.
The only way I can imagine your suggestion working is that you could let admin users select yes/no/both and then have the ID user filter pull "both" entries whether they select yes or no. That would save a click for the admin side (and let you keep it as a single select field) but it would complicate the other side so idk if it's worth it.
We could rename yes/no to "integral/detachable" but IMO those are synonymous with the existing terms. Giving the impression these are technical terms might make people think more carefully about them, which has some pros and cons, but it wouldn't change the underlying data structure at all, so idk if it would address your concerns and it wouldn't save you any work.

My biggest concern is that putting "yes" or "no" up on the screen for a user to see implies that it is a 2 choice option. The data structure and the admin side, I am not as concerned about. We can make those work however we need to.
Your 4th paragraph gets to what I was suggesting. Show the user Yes/No/None on the ID screen filters like we do now. Then if a species is assigned "both" then it would match anything but None. On the gall detail screen we would show "Both" with some kind of explanation that "Both" means that it transitions from one to the other not that it is quantum in nature.

Can you give me an example of a case where it would be bad to present the user the implication that it's a two choice option? I think it is, within the context of an individual observation.

If you search on Amazon and are a Prime member you get a screen like this:

Now imagine if it were instead like this:

Or even more strangely:

This is confusing UX and is what I am concerned about.

As a novice in gall identification, I would likely come to this site with a specific photo/visual of a gall I am looking to identify. In that moment the gall is either in a detachable state or it is not. While it is true that some galls can start out one way and end up another way, at this point in my journey I don't know that. I am trying to figure out what I'm looking at and can only give my input based off the current state of the gall I am observing.
That being said, what would probably be the most intuitive to me would be a Yes or No.  What Jeff mentions here makes sense and sounds like would cover me in the majority of scenarios: "Show the user Yes/No/None on the ID screen filters like we do now. Then if a species is assigned "both" then it would match anything but None. On the gall detail screen we would show "Both" with some kind of explanation that "Both" means that it transitions from one to the other not that it is quantum in nature."

As a novice in gall identification, I would likely come to this site with a specific photo/visual of a gall I am looking to identify. In that moment the gall is either in a detachable state or it is not. While it is true that some galls can start out one way and end up another way, at this point in my journey I don't know that. I am trying to figure out what I'm looking at and can only give my input based off the current state of the gall I am observing.
That being said, what would probably be the most intuitive to me would be a Yes or No. What Jeff mentions here makes sense and sounds like would cover me in the majority of scenarios: "Show the user Yes/No/None on the ID screen filters like we do now. Then if a species is assigned "both" then it would match anything but None. On the gall detail screen we would show "Both" with some kind of explanation that "Both" means that it transitions from one to the other not that it is quantum in nature."

This explanation makes the most sense to me.

What schema change is needed? It is already an integer so provides flexibility.
I have a bunch of schema changes that will be needed upcoming, see #72, we could make a change as part of that if we want to.

Ahh. So we map ints to an arbitrary set of hardcoded values elsewhere, like an enum? In that case nevermind about the schema change. Should be simple enough then.

Can we program an easter egg where if you select 'Both' that it takes you a single option named Schrodinger's Gall and is just a picture of a box with an annotation: Detachable: BOTH?
(I'm joking. Sorta.)

@jeffdc  I think I see what you mean now? That leaving the "yes" box unchecked should be the same as having the no box checked and vice versa? I think replacing yes/no with integral/detachable would solve that confusion adequately--do you agree? Otherwise I think we're on the same page with this:
"Show the user Yes/No/None on the ID screen filters like we do now. Then if a species is assigned "both" then it would match anything but None. On the gall detail screen we would show "Both" with some kind of explanation that "Both" means that it transitions from one to the other not that it is quantum in nature."
So is this a good solution?

Admin Add/Edit Gallformers has a single select Detachability field with options "detachable", "integral", "both" or can be left blank
ID page will have a filter called Detachability which can be left blank or one of two options can be selected. Detachable pulls up all galls labelled either Detachable or Both, etc.
Gall pages for galls tagged Both will have an explanation of what that means
Detachable terms will be explained on the Filter term FAQ as well

I would have thought that would be a lot more work for you than just making it a multiselect but it amounts to the same result so if it is easier then it seems fine to me.

I am already doing a bunch of work to deal with making those other fields multi-select so I am already in this code. Believe it or not all of these changes stemmed from #83.
This makes sense and is I a solid approach.

Here is what the Admin side is looking like now. This includes making the other fields multiselect as in #77

and here is the user-facing screen if it is "Both":

Wow, that was fast! Looks great to me.

I got iced in yesterday so could not leave the house so I had time! I opened a PR for these changes #85. I have done some basic local testing and it seems good. I will deploy it today. However I think that we need to look at all of the current galls and re-assess their detachable state as it looks like they were defaulting to integral which is not what I had thought.
I am going to have to run a migration to covert the data over to the new forms so now is the time to look at this. Here is a table of all the galls currently in the DB and what their detachable state is (0 - integral; 1 - detachable):
Acalitus essigi	0
Acalitus ferruginea	0
Acalitus gossypii	0
Acalitus phloeocoptes	0
Aceria aloinis	0
Aceria annonae	0
Aceria baccharipha	0
Aceria brachytarsa	0
Aceria breakeyi	0
Aceria calaceris	0
Aceria caliberberis	0
Aceria caulis	0
Aceria ceanothi	0
Aceria celtis	0
Aceria cephalanthi	0
Aceria chondrillae	0
Aceria cinereae	0
Aceria cynodoniensis	0
Aceria dina	0
Aceria elongata	0
Aceria erinea	0
Aceria eucricotes	0
Aceria fraxini	0
Aceria fraxiniflora	0
Aceria granati	0
Aceria kuko	0
Aceria lepidosparti	0
Aceria litchii	0
Aceria mackiei	0
Aceria major	0
Aceria modesta	0
Aceria myriadeum	0
Aceria negundi	0
Aceria neoessigi	0
Aceria nyssae	0
Aceria parapopuli	0
Aceria parulmi	0
Aceria sandorici	0
Aceria sheldoni	0
Aceria spermaphaga	0
Aceria spicati	0
Aceria theospyri	0
Acericecis ocellaris	0
Acraspis quercushirta	0
Aculops aenigma	0
Aculops rhois	0
Aculops tetanothrix	0
Aculus minutissimus	0
Aculus quinquilobus	0
Amphibolips confluenta	0
Amphibolips globulus	0
Amphibolips quercuscoelebs	0
Amphibolips quercusinanis	0
Amphibolips quercusostensackenii	0
Amphibolips quercusspongifica	0
Andricus apiarium	1
Andricus femoratus	1
Andricus flavohirtus	0
Andricus ignotus	0
Andricus pattoni	0
Andricus quercusstrobilanus	0
Andricus robustus	0
Andricus weldi	1
Aprostocetus smilax	0
Asphondylia borrichiae	0
Asteromyia carbonifera	0
Asteromyia euthamiae	0
Asteromyia modesta	0
Atrusca quercuscentricola	0
Belonocnema fossoria	1
Belonocnema kinseyi	1
Blaesodiplosis canadensis	0
Blaesodiplosis crataegifolia	0
Blaesodiplosis undescribed	0
Blaesodiplosis venae	0
Callirhytis furva	0
Callirhytis gemmiformis	0
Callirhytis infuscata	0
Callirhytis lanata	0
Callirhytis piperoides	0
Callirhytis quercuspunctata	0
Callirhytis seminosa	0
Callirhytis tubicola	0
Callirhytis vaccinii	0
Caryomyia tubicola	0
Cecidophyes naulti	0
Cenalox conyssae	0
Cenalox nyssae	0
Colomerus vitis	0
Contarinia (undescribed)	1
Contarinia negundinis	0
Cryptophyllaspis liquidambaris	1
Ctenodactylomyia watsoni	0
Dasineura aceris	0
Dasineura communis	0
Dasineura crataegibedeguar	0
Dasineura rileyana	0
Disholcaspis bassetti	0
Disholcaspis globosa	0
Disholcaspis quercusmamma	0
Dryocosmus deciduus	0
Eriophyes aceris	0
Eriophyes adenostomae	0
Eriophyes cerasicrumena	0
Eriophyes emarginatae	0
Eriophyes helicantyx	0
Eriophyes laevis	0
Eriophyes paraspiraeae	0
Eriophyes pyri	0
Eriophyes sorbi	0
Eriophyes tiliae	0
Leptocybe invasa	0
Neuroterus laurifoliae	0
Neuroterus saltarius	0
Neuroterus tantulus	1
Phyllocoptes didelphis	0
Phyllocoptes triacis	0
Phytoptus avellanae	0
Podapion gallicola	0
Proteoteras aesculana	0
Proteoteras willingana	0
Rabdophaga rosacea	0
Rhyncaphytoptus magnificus	0
Rhytisma acerinum	0
Rhytisma americanum	0
Rhytisma punctatum	0
Stephomyia eugeniae	0
Synanthedon acerni	0
Synanthedon acerrubri	0
Trisetacus alborum	0
Trisetacus batonrougei	0
Trisetacus campnodus	0
Trisetacus floridanus	0
Trisetacus gemmavitians	0
Trisetacus neoquadrisetus	0
Trisetacus pseudotsugae	0
Trisetacus quadrisetus	0
Trisetacus sequoiae	0
Undescribed undescribed	1
Vasates aceriscrumena	0
Vasates oldfieldi	0
Vasates quadripedes	0
Xanthoteras ornatum	0
Xylotrechus aceris	0
Zopheroteras cuneatum	1
Zopheroteras hubbardi	0

What I need is to know all of the ones that I should change and what I should change them to.

I notice a lot of the cynipid galls here are wrong. These are the ones I notice now but may not be perfect--I assume it will be possible to edit them as we actually incorporate the literature and do final checks etc?
Should be detachable:
53
43
48
39
40
42
71
47
52
45
62
44
73
68
70
50
49
51
55
60
Should be both:
54
30
41

I will update these when I run the DB migration. We will be able to edit any and all after this as well via the normal mechanisms I just wanted to get these fixed to start with since I am migrating the data.