RowBatcher thread throws NPE on console when plan with bind params used

Version of MarkLogic Java Client API
develop branch (after 5.2.0 release)
Version of MarkLogic Server
10.0 nightly build
Java version
Open JDK 9
OS and version
IntelliJ IDE Windows
Input: Some code to illustrate the problem, preferably in a state that can be independently reproduced on our end
Using QA's functional test project's optic API data files (TDE and docs) as input, this test configures a RowBatcher with 2 threads and batch size of 1. The results of the Plan is 6 rows.
Plan has a bind parameter named ID.
        StringBuilder failedBuf = null;
        StringBuilder successBuf = null;

        RowBatcher<JsonNode> rowsBatcherOfJsonObj = dmManager.newRowBatcher(new JacksonHandle())
                .withBatchSize(3)
                .withThreadCount(2)
                .withJobName("Export As Rows of JsonNodes");
        RowManager rowMgr = rowsBatcherOfJsonObj.getRowManager();
        rowMgr.setDatatypeStyle(RowManager.RowSetPart.HEADER);
        PlanBuilder p = rowMgr.newPlanBuilder();
        PlanBuilder.ModifyPlan plan1 = p.fromView("opticFunctionalTest", "detail")
                .orderBy(p.schemaCol("opticFunctionalTest", "detail", "id"));
        PlanBuilder.ModifyPlan plan2 = p.fromView("opticFunctionalTest", "master")
                .orderBy(p.schemaCol("opticFunctionalTest", "master", "id"));
        PlanParamExpr idParam = p.param("ID");
        PlanBuilder.ModifyPlan plan3 = plan1.joinInner(plan2)
                .where(
                        p.eq(p.schemaCol("opticFunctionalTest", "master", "id"), idParam)
                )
                .orderBy(p.asc(p.schemaCol("opticFunctionalTest", "detail", "id")));
        JacksonHandle jacksonHandle = new JacksonHandle();
        jacksonHandle.setMimetype("application/json");

        plan3.bindParam("ID", 1);
        rowsBatcherOfJsonObj.withBatchView(plan3);
        ArrayList<Double> exptdAmt = new ArrayList(Arrays.asList(10.01,20.02,30.03,40.04,50.05,60.06));
        ArrayList<Double> resultAmt = new ArrayList<>();

        rowsBatcherOfJsonObj.onSuccess(e ->{
            JsonNode resDoc = e.getRowsDoc().get("rows");

            if (resDoc == null)
                failedBuf.append("No rows returned in batch from " + e.getLowerBound() + "to" + e.getUpperBound());
            else {
                for (int i=0; i<resDoc.size(); i++) {
                    //System.out.println("Thread id : " + Thread.currentThread().getId() + " is named as " + Thread.currentThread().getName());
                    System.out.println("row : "+ resDoc.get(i).get("opticFunctionalTest.detail.amount").asText());
                    resultAmt.add(resDoc.get(i).get("opticFunctionalTest.detail.amount").asDouble());
                }
            }
        })
                .onFailure((fevt, mythrows)-> {
                            failedBuf.append("Batch Failures in " + fevt.getJobBatchNumber() + "batch from "+ fevt.getLowerBound() + "to" + fevt.getUpperBound());
                        }
                );
        dmManager.startJob(rowsBatcherOfJsonObj);
        rowsBatcherOfJsonObj.awaitCompletion();
        for (Double d : resultAmt) {
            assertTrue(exptdAmt.contains(d.doubleValue()));

Actual output: What did you observe? What errors did you see? Can you attach the logs? (Java logs, MarkLogic logs)
In the IDE console we have:
In testRowBatcherWithBind method
23:01:23.547 [Test worker] INFO  c.m.c.d.impl.RowBatcherImpl - (withForestConfig) Using forests on [localhost] hosts for "RowBatcherFuncDB"
23:01:23.549 [Test worker] INFO  c.m.c.d.impl.RowBatcherImpl - Adding DatabaseClient on port 8011 for host "localhost" to the rotation
23:01:23.757 [Test worker] INFO  c.m.c.d.impl.RowBatcherImpl - plan analysis schema name: opticFunctionalTest, view name: detail, row estimate: 6
23:01:23.761 [Test worker] INFO  c.m.c.d.impl.RowBatcherImpl - batch count: 7, batch size:<PHONE_NUMBER>387078802
23:01:23.764 [pool-2-thread-2] INFO  c.m.c.d.impl.RowBatcherImpl - current batch: 2, lower bound:<PHONE_NUMBER>387078802, upper bound:<PHONE_NUMBER>774157603
23:01:23.764 [pool-2-thread-1] INFO  c.m.c.d.impl.RowBatcherImpl - current batch: 1, lower bound: 0, upper bound:<PHONE_NUMBER>387078801
23:01:24.881 [pool-2-thread-2] INFO  c.m.c.d.impl.RowBatcherImpl - error in failure listener: java.lang.NullPointerException
23:01:24.881 [pool-2-thread-1] INFO  c.m.c.d.impl.RowBatcherImpl - error in failure listener: java.lang.NullPointerException
23:01:24.881 [pool-2-thread-2] INFO  c.m.c.d.impl.RowBatcherImpl - current batch: 3, lower bound:<PHONE_NUMBER>774157604, upper bound:<PHONE_NUMBER>161236405
23:01:24.881 [pool-2-thread-1] INFO  c.m.c.d.impl.RowBatcherImpl - current batch: 4, lower bound:<PHONE_NUMBER>161236406, upper bound:<PHONE_NUMBER>3548315207
23:01:24.892 [pool-2-thread-2] INFO  c.m.c.d.impl.RowBatcherImpl - error in failure listener: java.lang.NullPointerException
23:01:24.892 [pool-2-thread-1] INFO  c.m.c.d.impl.RowBatcherImpl - error in failure listener: java.lang.NullPointerException
23:01:24.892 [pool-2-thread-2] INFO  c.m.c.d.impl.RowBatcherImpl - current batch: 5, lower bound:<PHONE_NUMBER>3548315208, upper bound:<PHONE_NUMBER>6935394009
23:01:24.892 [pool-2-thread-1] INFO  c.m.c.d.impl.RowBatcherImpl - current batch: 6, lower bound:<PHONE_NUMBER>6935394010, upper bound:<PHONE_NUMBER>0322472811
23:01:24.901 [pool-2-thread-2] INFO  c.m.c.d.impl.RowBatcherImpl - error in failure listener: java.lang.NullPointerException
23:01:24.901 [pool-2-thread-1] INFO  c.m.c.d.impl.RowBatcherImpl - error in failure listener: java.lang.NullPointerException
23:01:24.901 [pool-2-thread-2] INFO  c.m.c.d.impl.RowBatcherImpl - current batch: 7, lower bound:<PHONE_NUMBER>0322472812, upper bound:<PHONE_NUMBER>3709551615
23:01:24.912 [pool-2-thread-2] INFO  c.m.c.d.impl.RowBatcherImpl - error in failure listener: java.lang.NullPointerException
In tearDownAfterClass

Expected output: What specifically did you expect to happen?
6 rows should have been returned. But we see this line in the console output-
INFO  c.m.c.d.impl.RowBatcherImpl - batch count: 7, batch size:<PHONE_NUMBER>387078802

### Alternatives: What else have you tried, actual/expected?

Adding REST App Server Access Logs
<IP_ADDRESS> - opticUser [27/Aug/2020:13:20:31 -0700] "POST /v1/rows?output=object&column-types=header&bind%3AML_LOWER_BOUND%3Astring=2635249153387078802&bind%3AML_UPPER_BOUND%3Astring=5270498306774157603 HTTP/1.1" 500 285 - "okhttp/4.7.2"
<IP_ADDRESS> - opticUser [27/Aug/2020:13:20:31 -0700] "POST /v1/rows?output=object&column-types=header&bind%3AML_LOWER_BOUND%3Astring=0&bind%3AML_UPPER_BOUND%3Astring=2635249153387078801 HTTP/1.1" 500 285 - "okhttp/4.7.2"
<IP_ADDRESS> - opticUser [27/Aug/2020:13:20:31 -0700] "POST /v1/rows?output=object&column-types=header&bind%3AML_LOWER_BOUND%3Astring=7905747460161236406&bind%3AML_UPPER_BOUND%3Astring=10540996613548315207 HTTP/1.1" 500 285 - "okhttp/4.7.2"
<IP_ADDRESS> - opticUser [27/Aug/2020:13:20:31 -0700] "POST /v1/rows?output=object&column-types=header&bind%3AML_LOWER_BOUND%3Astring=5270498306774157604&bind%3AML_UPPER_BOUND%3Astring=7905747460161236405 HTTP/1.1" 500 285 - "okhttp/4.7.2"
<IP_ADDRESS> - opticUser [27/Aug/2020:13:20:31 -0700] "POST /v1/rows?output=object&column-types=header&bind%3AML_LOWER_BOUND%3Astring=10540996613548315208&bind%3AML_UPPER_BOUND%3Astring=13176245766935394009 HTTP/1.1" 500 285 - "okhttp/4.7.2"
<IP_ADDRESS> - opticUser [27/Aug/2020:13:20:31 -0700] "POST /v1/rows?output=object&column-types=header&bind%3AML_LOWER_BOUND%3Astring=13176245766935394010&bind%3AML_UPPER_BOUND%3Astring=15811494920322472811 HTTP/1.1" 500 285 - "okhttp/4.7.2"
<IP_ADDRESS> - opticUser [27/Aug/2020:13:20:31 -0700] "POST /v1/rows?output=object&column-types=header&bind%3AML_LOWER_BOUND%3Astring=15811494920322472812&bind%3AML_UPPER_BOUND%3Astring=18446744073709551615 HTTP/1.1" 500 285 - "okhttp/4.7.2"

Closing the issue. Looked at wiki page and saw the limitation about parameters.

While we can't support binding parameters, we do want to fix any Null Pointer Exception that is coming from the Java API code.
If the NPE is coming from the success listener, it shouldn't be reaching the failure listener.
In fact, if the plan is invalid, it shouldn't be invoking either the failure or success listener but, instead, should fail fast.
Hmmm.  Potentially, when converting the plan, the initialization endpoint should invoke the plan with a limit of 1 just to make sure it is valid.

I don't get a Null Pointer Exception now.  Instead, the failure listener produces this message
failed batch=12 from<PHONE_NUMBER>6985005211 through<PHONE_NUMBER>0347278411:
Local message: failed to apply resource at rows: Internal Server Error. Server Message: XDMP-EXTVAR: (err:XPDY0002) { SELECTSELECT * {  http://marklogic.com/templateview  . } OFFSET "0"^^http://www.w3.org/2001/XMLSchema#unsignedLong LIMIT ?limit } -- Undefined external variable limit . See the MarkLogic server error log for further detail.
for this code:
@Test
public void scratch() {
    RowBatcher<JsonNode> rowBatcher = moveMgr.newRowBatcher(new JacksonHandle());

    RowManager rowMgr = rowBatcher.getRowManager();
    rowMgr.setDatatypeStyle(RowManager.RowSetPart.HEADER);

    PlanBuilder pb = rowMgr.newPlanBuilder();

    PlanBuilder.ModifyPlan p =
            pb.fromView("rowBatcherUnitTest", "code", "")
                    .limit(pb.param("limit"));

    rowBatcher
            .withBatchSize(10)
            .withThreadCount(2)
            .withBatchView(p)
            .onSuccess(event -> {
                System.out.println("succeeded batch="+event.getJobBatchNumber()+
                        " from "+event.getLowerBound()+" through "+event.getUpperBound()+
                        ((event.getJobBatchNumber() == 1) ? "\n"+event.getRowsDoc() : ""));
                try {
                } catch (Throwable e) {
                    System.out.println(e.getMessage());
                    e.printStackTrace(System.out);
                }
            })
            .onFailure((event, throwable) -> {
                System.out.println("failed batch="+event.getJobBatchNumber()+
                        " from "+event.getLowerBound()+" through "+event.getUpperBound()+
                        ":\n" + throwable.getMessage()
                );
            });

    moveMgr.startJob(rowBatcher);
    rowBatcher.awaitCompletion();
}

Given that the parameter is expected to throw an error, I think this is working as intended now.
Maybe a side effect of other work fixed the NPE.
If you agree, @georgeajit , please close this issue.


Bot running for 14 seconds before stopping

Please check configuration at http://jsonlint.com/ before posting an issue.
Expected Behavior
Should run fine, I do believe, was earlier today. API is up to date.
Actual Behavior
Microsoft Windows [Version 10.0.10586]
(c) 2015 Microsoft Corporation. All rights reserved.
2016-08-09 16:50:04,654 [       cli] [INFO] PokemonGO Bot v1.0
2016-08-09 16:50:04,655 [       cli] [INFO] No config argument specified, checking for /configs/config.json
2016-08-09 16:50:04,658 [       cli] [INFO] Configuration initialized
2016-08-09 16:50:04,667 [PokemonGoBot] [INFO] [set_start_location] Setting start location.
2016-08-09 16:50:04,670 [PokemonGoBot] [INFO] [x] Coordinates found in passed in location, not geocoding.
2016-08-09 16:50:04,671 [PokemonGoBot] [INFO] [location_found] Location found: -33.8613,151.2108 (-33.8613, 151.2108, 0.0)
2016-08-09 16:50:04,674 [PokemonGoBot] [INFO] [position_update] Now at (-33.8613, 151.2108, 0)
2016-08-09 16:50:04,677 [PokemonGoBot] [INFO] [login_started] Login procedure started.
2016-08-09 16:50:06,651 [PokemonGoBot] [INFO] [login_successful] Login successful.
2016-08-09 16:50:07,901 [PokemonGoBot] [INFO]
2016-08-09 16:50:07,903 [PokemonGoBot] [INFO] --- liampuddles ---
2016-08-09 16:50:07,904 [PokemonGoBot] [INFO] Level: 22 (Next Level: 17319 XP) (Total: 417681 XP)
2016-08-09 16:50:07,907 [PokemonGoBot] [INFO] Pokemon Captured: 1218 | Pokestops Visited: 1479
2016-08-09 16:50:07,910 [PokemonGoBot] [INFO] Pokemon Bag: 169/250
2016-08-09 16:50:07,911 [PokemonGoBot] [INFO] Items: 341/350
2016-08-09 16:50:07,913 [PokemonGoBot] [INFO] Stardust: 55858 | Pokecoins: 70
2016-08-09 16:50:07,914 [PokemonGoBot] [INFO] PokeBalls: 113 | GreatBalls: 78 | UltraBalls: 35
2016-08-09 16:50:07,917 [PokemonGoBot] [INFO] RazzBerries: 54 | BlukBerries: 0 | NanabBerries: 0
2016-08-09 16:50:07,918 [PokemonGoBot] [INFO] LuckyEgg: 2 | Incubator: 0 | TroyDisk: 3
2016-08-09 16:50:07,920 [PokemonGoBot] [INFO] Potion: 1 | SuperPotion: 0 | HyperPotion: 21 | MaxPotion: 0
2016-08-09 16:50:07,923 [PokemonGoBot] [INFO] Incense: 4 | IncenseSpicy: 0 | IncenseCool: 0
2016-08-09 16:50:07,924 [PokemonGoBot] [INFO] Revive: 28 | MaxRevive: 0
2016-08-09 16:50:07,927 [PokemonGoBot] [INFO]
2016-08-09 16:50:07,927 [PokemonGoBot] [INFO] Found encrypt.dll! Platform: win32 Encrypt.so directory: C:\Users\liam\Desktop\PokemonGo-Bot
2016-08-09 16:50:07,930 [PokemonGoBot] [INFO]
2016-08-09 16:50:16,193 [PokemonGoBot] [INFO] [bot_start] Starting bot...
2016-08-09 16:50:17,772 [CollectLevelUpReward] [INFO] [level_up_reward] Received level up reward: []
2016-08-09 16:50:17,776 [IncubateEggs] [INFO] [next_egg_incubates] Next egg incubates in 1.94 km
2016-08-09 16:50:19,105 [       cli] [INFO]
2016-08-09 16:50:19,105 [       cli] [INFO] Ran for 0:00:14
2016-08-09 16:50:19,108 [       cli] [INFO] Total XP Earned: 0  Average: 0.00/h
2016-08-09 16:50:19,108 [       cli] [INFO] Travelled 0.00km
2016-08-09 16:50:19,109 [       cli] [INFO] Visited 0 stops
2016-08-09 16:50:19,111 [       cli] [INFO] Encountered 0 pokemon, 0 caught, 0 released, 0 evolved, 0 never seen before
2016-08-09 16:50:19,114 [       cli] [INFO] Threw 0 pokeballs
2016-08-09 16:50:19,115 [       cli] [INFO] Earned 0 Stardust
2016-08-09 16:50:19,115 [       cli] [INFO]
2016-08-09 16:50:19,117 [       cli] [INFO] Highest CP Pokemon:
2016-08-09 16:50:19,118 [       cli] [INFO] Most Perfect Pokemon:
Traceback (most recent call last):
File "pokecli.py", line 521, in
main()
File "pokecli.py", line 95, in main
bot.tick()
File "C:\Users\liam\Desktop\PokemonGo-Bot\pokemongo_bot_init_.py", line 441, in tick
if worker.work() == WorkerResult.RUNNING:
File "C:\Users\liam\Desktop\PokemonGo-Bot\pokemongo_bot\cell_workers\transfer_pokemon.py", line 72, in work
if self.should_release_pokemon(pokemon_name, pokemon_cp, pokemon_potential):
File "C:\Users\liam\Desktop\PokemonGo-Bot\pokemongo_bot\cell_workers\transfer_pokemon.py", line 172, in should_release_pokemon
if logic_to_functioncp_iv_logic:
KeyError: u'AND'
{
	"auth_service": "google",
	"username": "------------",
	"password": "----------",
	"location": "--------------",
	"gmapkey": "------------------",
	"libencrypt_location": "",
	"tasks": [{
		"type": "HandleSoftBan"
	}, {
		"type": "CollectLevelUpReward"
	}, {
		"type": "IncubateEggs",
		"config": {
			"longer_eggs_first": true
		}
	}, {
		"type": "TransferPokemon"
	}, {
		"type": "EvolvePokemon",
		"config": {
			"evolve_all": "none",
			"first_evolve_by": "cp",
			"evolve_above_cp": 500,
			"evolve_above_iv": 0.8,
			"logic": "or",
			"evolve_speed": 20,
			"use_lucky_egg": false
		}
	}, {
		"type": "RecycleItems",
		"config": {
			"item_filter": {
				"Pokeball": {
					"keep": 80
				},
				"Greatball": {
					"keep": 80
				},
				"Ultraball": {
					"keep": 80
				},
				"Potion": {
					"keep": 0
				},
				"Super Potion": {
					"keep": 0
				},
				"Hyper Potion": {
					"keep": 30
				},
				"Revive": {
					"keep": 30
				},
				"Razz Berry": {
					"keep": 50
				}
			}
		}
	}, {
		"type": "CatchVisiblePokemon"
	}, {
		"type": "CatchLuredPokemon"
	}, {
		"type": "SpinFort"
	}, {
		"type": "MoveToFort",
		"config": {
			"lure_attraction": false,
			"lure_max_distance": 2000
			}
	}, {
		"type": "FollowSpiral",
		"config": {
			"diameter": 4,
			"step_size": 70
		}
	}],
	"map_object_cache_time": 5,
	"forts": {
		"avoid_circles": true,
		"max_circle_size": 50
	},
	"websocket_server": false,
	"walk": 4.16,
	"action_wait_min": 1,
	"action_wait_max": 4,
	"debug": false,
	"test": false,
	"health_record": false,
	"location_cache": true,
	"distance_unit": "km",
	"reconnecting_timeout": 15,
	"evolve_captured": "NONE",
	"catch_randomize_reticle_factor": 1.0,
	"catch_randomize_spin_factor": 1.0,
	"catch": {
		"any": {
			"catch_above_cp": 0,
			"catch_above_iv": 0,
			"logic": "or"
		},
		"// Example of always catching Rattata:": {},
		"// Rattata": {
			"always_catch": true
		}
	},
	"release": {
		"any": {
			"release_below_cp": 500,
			"release_below_iv": 0.7,
			"logic": "AND"
		},
		"// Example of always releasing Rattata:": {},
		"Rattata": {
			"always_release": true
		},
		"// Example of keeping 3 stronger (based on CP) Pidgey:": {},
		"Pidgey": {
			"keep_best_cp": 1
		},
		"// Example of keeping 2 stronger (based on IV) Zubat:": {},
		"Zubat": {
			"keep_best_iv": 1
		},
		"// Also, it is working with any": {},
		"// any": {
			"keep_best_iv": 3
		},
		"// Example of keeping the 2 strongest (based on CP) and 3 best (based on IV) Zubat:": {},
		"// Zubat": {
			"keep_best_cp": 2,
			"keep_best_iv": 3
		},
		"Caterpie": {
			"keep_best_cp": 1
		},
		"Weedle": {
			"keep_best_cp": 2
		},
		"Spearow": {
			"always_release": true
		},
		"Psyduck": {
			"keep_best_cp": 2
		},
		"Poliwag": {
			"keep_best_cp": 2
		},
		"Slowpoke": {
			"keep_best_cp": 2
		},
		"Magnemite": {
			"keep_best_cp": 2
		},
		"Shellder": {
			"keep_best_cp": 2
		},
		"Seel": {
			"keep_best_cp": 2
		},
		"Horsea": {
			"keep_best_cp": 1
		},
		"Golden": {
			"keep_best_cp": 1
		},
		"Staryu": {
			"keep_best_cp": 1
		}
	},
	"vips": {
		"Any pokemon put here directly force to use Berry & Best Ball to capture, to secure the capture rate!": {},
		"any": {
			"catch_above_cp": 1200,
			"catch_above_iv": 0.9,
			"logic": "or"
		},
		"Lapras": {},
		"Moltres": {},
		"Zapdos": {},
		"Articuno": {},

		"// S-Tier pokemons (if pokemon can be evolved into tier, list the representative)": {},
		"Mewtwo": {},
		"Dragonite": {},
		"Snorlax": {},
		"// Mew evolves to Mewtwo": {},
		"Mew": {},
		"Arcanine": {},
		"Vaporeon": {},
		"Gyarados": {},
		"Exeggutor": {},
		"Muk": {},
		"Weezing": {},
		"Flareon": {}

	}
}

Steps to Reproduce
python pokecli.py
re-install do it over again, JSON is valid on JSONLint
Other Information
OS: Windows 10

KeyError: u'AND'
Maybe don't write it in caps?

Try with lowercase "and"
"any": {
            "release_below_cp": 500,
            "release_below_iv": 0.7,
            "logic": "AND"
        },

No one show this to my work colleagues okay.


Option to change region not present in latest gateway version

All of the documents relating to installing an on-premises data gateway refer to checking/changing the region, but this option is not available anywhere in the latest version of the software, 3000.122.8 (April 2022).

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

ID: b2a07eaa-023b-fbc8-9508-39411425d096
Version Independent ID: efb6bb0e-5551-e2b3-4e98-3a34188600f3
Content: Set the datacenter region for the on-premises data gateway
Content Source: data-integration/gateway/service-gateway-data-region.md
Product: on-premises-data-gateway
Technology: ****
GitHub Login: @arthiriyer
Microsoft Alias: arthii

Same concern as #149

I think the region picker issue is corrected in a later download since I see the option in the later installation. Sorry for the trouble. Closing as resolved.

Following up - I've downloaded the latest and greatest Gateway installer, and this is what I see when taking over a gateway after reinstalling. I don't get the option to change the region on any screen or by using any combination of register/takeover. Only thing I can think of (that the documentation could help clear up) is that we are a GCC customer in a commercial tenant. We were early adopters of O365 before the gov tenants were established.

@jmcarthurcorr
Oh, maybe you are using Logic Apps gateway?
Logic Apps gateways are created via the Azure portal, and the region is picked at creation time.
Details: https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps-gateway-connection#create-azure-gateway-resource
This is the URL to set up the gateway:
https://portal.azure.com/#create/Microsoft.ConnectionGateway
I'm not an expert yet, but trying to help figure this out. Thanks! Jason

@JasonWHowell - thanks for the reply. Yes, it's a Logic Apps Gateway, and the part where I'm stumbling is creating the gateway in Azure. No matter what region I select, it can't see the installed on-prem gateway. I did find this in the first link you provided, which confirms my suspicions about GCC. I've gone in circles trying to sort this out and your link is the first indication I've come across defining a difference between setting up an on-prem gateway, and setting one up for Logic Apps. I'll see if I can work through things using that<EMAIL_ADDRESS>login workaround.

The<EMAIL_ADDRESS>workaround did the trick.


Add zoom event

I noticed that on zooming the regions do not redraw themselves, which results in them being displayed incorrectly.

Make the region call updateRender on zoom so its
rendering matches the wavesurfer's scale
update readme

Great, thanks!


AddGlob("*") includes the .git folder into the commit

AddGlob("*") includes the .git folder into the commit, completely breaking the repo.
AddGlob("*") should skip the .git folder.

also , maybe unrelated , but AddGlob(".") fails on windows most of the time. from testing it looks like whenever there's at least one previous commit, i'm getting some weird error and its unable to add any file at all

On Windows AddGlob("*") behaves in the same way for me - it succeeds, but adds everything, including the .git folder into the commit.


Parallel integration tests

Linked issue(s):
What change does this PR introduce and why?
Please check if the PR fulfills these requirements

[ ] Include reference to internal ticket and/or GitHub issue "Fixes #NNNN" (if applicable)
[ ] Relevant tests for the changes have been added
[ ] Relevant docs have been added / updated

12 minutes

👀


Add a stress test with 100 CRDs

We've found OOMKills in ACM 1.16.0 on Autopilot clusters with 100+ CRDs. This commit adds a stress test to make sure Config Sync can still work with those CRDs.

LGTM, I'll let Karl approve in case he has any final comments
/lgtm


Keep search results on data cleanup

Summary
Keep current search results when the app is sent to the background if there are any
Ticket Link
https://mattermost.atlassian.net/browse/RN-494

Also fixes https://mattermost.atlassian.net/browse/RN-493


Typeahead > Selection is not visible when the suggestion list is scrollable

I have very large data set, I define a width to the dropdown view.
But when I navigate in the list with keyboard, the implementation did not care about scrollable suggestions view.

I just confirmed this is still an issue with the current master branch and the latest Bootstrap CSS:
http://plnkr.co/edit/DJy5k5uNWHSTqtAFUgVM?p=preview

I have faced with the same problem.
Does anyone found a solution?

The problem at heart is in the dropdown component - the current dropdown does not allow for it being scrollable.

This is currently able to be worked around by applying
.dropdown-menu {
  overflow: scroll;
}

in the CSS.

In light of this workaround, I believe that this should remain a pure CSS fix and not be handled in the library - closing as a consequence.

I think this issue should be reopened / reconsidered.
If the developer modifies the ".dropdown-menu" class to be "overflow: scroll" as stated above by @wesleycho, the user will be able to arrow through a large set of items. However, as the user keyboard arrows down in the overflowed container, the scroll position of the overflowed container remains the same, and the user cannot see which items get the active class, which amounts to a bad user experience. This is a bug that the "workaround" above does not solve.

Looks like #4128 is related to this.

I pieced a couple of fixes together to resolve this.  Seems that one of the original fixes wasn't working when main window already had a scrollbar.
http://stackoverflow.com/a/32464420/357455
Maybe someone would be willing to clean it up.

@ewahner thanks for the fix. removing ng-mouseenter is also causing an unexpected behavior. With typeahead-focus-first which defaults to true is not set to false, using mouse click to select an item will never get selected. the first item in the list is always selected.

@KennedyIhe  Someone created a workaround on Stackoverflow that doesn't modify AngularUI's sources, at least his plunker seems to work just fine.
http://stackoverflow.com/questions/27705490/up-down-arrow-key-issue-with-typeahead-control-angular-bootstrap-ui/32464420#32464420

Hello All,
The solution provided at http://stackoverflow.com/questions/27705490/up-down-arrow-key-issue-with-typeahead-control-angular-bootstrap-ui/32464420#32464420 is for depreciate typeahead. Is there any work around for uib-typeahead?
Thanks!

This is implemented in a1355e76874a68e65d9b481fa42de335d7349b98

I tried the solution that @wesleycho mentioned and it didn't work at all for me.  On pages that span below the fold it will cause the whole page to scroll.  I created a solution that seems to work for me.  I do wish this issue would be resolved so I can start taking latest versions without seeing this popup again.
Stack Overflow: Angular ui-bootstrap typeahead suggestion - scroll

Do not ask about this,
just try it
$('div.class').keydown(function (e) {
    if ($('div.class').is(':visible')) {
        var searchTab = $('ul.class');
        var selectedElement = $('ul.class');

        var elementHeight = selectedElement.outerHeight();
        var scrollTop = searchTab.scrollTop();
        var searchTabHeight = searchTab[0].scrollHeight;
        var offsetTop = 0;
        if (selectedElement.length != 0)
            offsetTop = selectedElement[0].offsetTop;

        if (e.keyCode === 38) {
            if (scrollTop != 0) {
                if (scrollTop >= offsetTop) {
                    searchTab.scrollTop(scrollTop - elementHeight);
                }
            }
            else {
                if (offsetTop + elementHeight + 2 === searchTabHeight) {
                    searchTab.scrollTop(searchTabHeight);
                }
            }
        }
        else if (e.keyCode === 40) {
            if (offsetTop === 0)
                searchTab.scrollTop(0);
            else if (offsetTop - scrollTop > elementHeight * 9)
                searchTab.scrollTop(scrollTop + elementHeight);
        }
    }
});

goodluck

Do not ask about this,
just try it
$('div.class').keydown(function (e) {
    if ($('div.class').is(':visible')) {
        var searchTab = $('ul.class');
        var selectedElement = $('ul.class');

        var elementHeight = selectedElement.outerHeight();
        var scrollTop = searchTab.scrollTop();
        var searchTabHeight = searchTab[0].scrollHeight;
        var offsetTop = 0;
        if (selectedElement.length != 0)
            offsetTop = selectedElement[0].offsetTop;

        if (e.keyCode === 38) {
            if (scrollTop != 0) {
                if (scrollTop >= offsetTop) {
                    searchTab.scrollTop(scrollTop - elementHeight);
                }
            }
            else {
                if (offsetTop + elementHeight + 2 === searchTabHeight) {
                    searchTab.scrollTop(searchTabHeight);
                }
            }
        }
        else if (e.keyCode === 40) {
            if (offsetTop === 0)
                searchTab.scrollTop(0);
            else if (offsetTop - scrollTop > elementHeight * 9)
                searchTab.scrollTop(scrollTop + elementHeight);
        }
    }
});

goodluck

I think I've nailed it..?
Typescript follows:
$(document).on('keydown', 'input.typeahead', e => {
var $elements = $(e.currentTarget).nextAll('.typeahead.dropdown-menu').first();
var $element = $elements.find('.active').first();
if ($elements.length && $element.length) {
var $firstElement = $elements.children().first();
var $lastElement = $elements.children().last();
var scrollTop = $elements.scrollTop();
var scrollBottom = scrollTop + $elements.height();
var topPadding = $firstElement.position().top + $elements.scrollTop();
var bottomPadding = $elements.get(0).scrollHeight
- ($lastElement.position().top + $lastElement.outerHeight() + $elements.scrollTop());
var elementTop = $element.position().top + scrollTop;
var elementBottom = elementTop + $element.outerHeight();
if (elementBottom - bottomPadding > scrollBottom) {
$elements.scrollTop(scrollTop + (elementBottom - scrollBottom) - bottomPadding);
}
if (elementTop - topPadding < scrollTop) {
$elements.scrollTop(elementTop - topPadding);
}
}
});


[Question] How to force text to wrap?

I created a UI with only 64 width, but if the text contains "file path", the text will not be forced to wrap:
The text contains "file path":

The text does not contain "file path":

Hey, @mritd! We’ve seen this come up a few times, so we've updated Lip Gloss to force-wrap long strings as a default behavior. This is now in master and will be included in the next release. In the meantime you can pin to master to get this functionality immediately:
go get github.com/charmbracelet/lipgloss@master

This is now available in release v0.4.0.


Xavier yolo to Int8 met error

Hi I've met the error below during converting from onnx model to int8 trt engine on Xavier
I just followed the step in instructions and exec:
python3 onnx_to_tensorrt.py -v --int8 -m yolov4-int8-416
but got the below error when the code finished calibration and start to build the engine at the first layer:
[09/14/2022-14:46:27] [TRT] [V] >>>>>>>>>>>>>>> Chose Runner Type: CaskConvolution Tactic: -2027588946874785071
[09/14/2022-14:46:27] [TRT] [V] *************** Autotuning format combination: Half(173056,1:4,416,1) -> Half(692224,1:8,1664,4) ***************
[09/14/2022-14:46:27] [TRT] [V] --------------- Timing Runner: 001_convolutional + 001_convolutional_bn (CaskConvolution)
[09/14/2022-14:46:27] [TRT] [V] CaskConvolution has no valid tactics for this config, skipping
[09/14/2022-14:46:27] [TRT] [V] *************** Autotuning format combination: Half(173056,1:8,416,1) -> Float(5537792,173056,416,1) ***************
[09/14/2022-14:46:27] [TRT] [V] --------------- Timing Runner: 001_convolutional + 001_convolutional_bn (CudnnConvolution)
[09/14/2022-14:46:27] [TRT] [V] CudnnConvolution has no valid tactics for this config, skipping
[09/14/2022-14:46:27] [TRT] [V] --------------- Timing Runner: 001_convolutional + 001_convolutional_bn (CaskConvolution)
[09/14/2022-14:46:27] [TRT] [V] CaskConvolution has no valid tactics for this config, skipping
[09/14/2022-14:46:27] [TRT] [V] *************** Autotuning format combination: Half(173056,1:8,416,1) -> Half(692224,1:8,1664,4) ***************
[09/14/2022-14:46:27] [TRT] [V] --------------- Timing Runner: 001_convolutional + 001_convolutional_bn (CudaDepthwiseConvolution)
[09/14/2022-14:46:27] [TRT] [V] CudaDepthwiseConvolution has no valid tactics for this config, skipping
[09/14/2022-14:46:27] [TRT] [V] --------------- Timing Runner: 001_convolutional + 001_convolutional_bn (CudnnConvolution)
[09/14/2022-14:46:27] [TRT] [V] CudnnConvolution has no valid tactics for this config, skipping
[09/14/2022-14:46:27] [TRT] [V] --------------- Timing Runner: 001_convolutional + 001_convolutional_bn (CaskConvolution)
[09/14/2022-14:46:27] [TRT] [V] 001_convolutional + 001_convolutional_bn Set Tactic Name: sm70_xmma_fprop_implicit_gemm_f16f16_f16f16_f16_nhwckrsc_nhwc_tilesize128x256x32_stage1_warpsize2x4x1_g1_tensor8x8x4_t1r3s3 Tactic:<PHONE_NUMBER>5848747
[09/14/2022-14:46:27] [TRT] [V] Deleting timing cache: 3956 entries, 25642 hits
[09/14/2022-14:46:27] [TRT] [E] 1: Unexpected exception
ERROR:  failed to build the TensorRT engine!
and just stopped. I just got the calib bin but no engine
my jetpack version is 4.6.1, onnx ==1.9.0, protobuf 3.8.0, TensorRT == <IP_ADDRESS>, cuda ==10.2
I can use the calib_x.bin and onnx to generate trt engine by using /trtexec successfully
/txtexec --onnx=xxxx --calib=xxxx --saveEngine=xxx --verbose --int8
(but without yolo_layer. I havent read any materials about how to plugin this way).
I can convert onnx to trt in FP16 mode and use trt_yolo.py to detect without any problem.
I've also tested commenting lines about "plugins" in onnx_to_tensorrt.py to see if it is because of the plugins:
#network = add_yolo_plugins(network, model_name, TRT_LOGGER)
#network = add_concat(network, model_name, TRT_LOGGER)
But it didn't work neither, and reported the same error as above. I guess it't not because of the plugins, but tensorrt API?
ps I also tested the demo on jetpack 5.0 version. onnx_to_tensorrt.py doesn't work neither. But it reported as "CudaError"
Do you have any experience about this ?
Much appreciation!

I have not seen this error before.  Which version of TensorRT are you using?

[09/14/2022-14:46:27] [TRT] [V] Deleting timing cache: 3956 entries, 25642 hits
[09/14/2022-14:46:27] [TRT] [E] 1: Unexpected exception
ERROR: failed to build the TensorRT engine!

Hi I've met the error below during converting from onnx model to int8 trt engine on Xavier
I just followed the step in instructions and exec: python3 onnx_to_tensorrt.py -v --int8 -m yolov4-int8-416 but got the below error when the code finished calibration and start to build the engine at the first layer:
[09/14/2022-14:46:27] [TRT] [V] >>>>>>>>>>>>>>> Chose Runner Type: CaskConvolution Tactic: -2027588946874785071 [09/14/2022-14:46:27] [TRT] [V] *************** Autotuning format combination: Half(173056,1:4,416,1) -> Half(692224,1:8,1664,4) *************** [09/14/2022-14:46:27] [TRT] [V] --------------- Timing Runner: 001_convolutional + 001_convolutional_bn (CaskConvolution) [09/14/2022-14:46:27] [TRT] [V] CaskConvolution has no valid tactics for this config, skipping [09/14/2022-14:46:27] [TRT] [V] *************** Autotuning format combination: Half(173056,1:8,416,1) -> Float(5537792,173056,416,1) *************** [09/14/2022-14:46:27] [TRT] [V] --------------- Timing Runner: 001_convolutional + 001_convolutional_bn (CudnnConvolution) [09/14/2022-14:46:27] [TRT] [V] CudnnConvolution has no valid tactics for this config, skipping [09/14/2022-14:46:27] [TRT] [V] --------------- Timing Runner: 001_convolutional + 001_convolutional_bn (CaskConvolution) [09/14/2022-14:46:27] [TRT] [V] CaskConvolution has no valid tactics for this config, skipping [09/14/2022-14:46:27] [TRT] [V] *************** Autotuning format combination: Half(173056,1:8,416,1) -> Half(692224,1:8,1664,4) *************** [09/14/2022-14:46:27] [TRT] [V] --------------- Timing Runner: 001_convolutional + 001_convolutional_bn (CudaDepthwiseConvolution) [09/14/2022-14:46:27] [TRT] [V] CudaDepthwiseConvolution has no valid tactics for this config, skipping [09/14/2022-14:46:27] [TRT] [V] --------------- Timing Runner: 001_convolutional + 001_convolutional_bn (CudnnConvolution) [09/14/2022-14:46:27] [TRT] [V] CudnnConvolution has no valid tactics for this config, skipping [09/14/2022-14:46:27] [TRT] [V] --------------- Timing Runner: 001_convolutional + 001_convolutional_bn (CaskConvolution) [09/14/2022-14:46:27] [TRT] [V] 001_convolutional + 001_convolutional_bn Set Tactic Name: sm70_xmma_fprop_implicit_gemm_f16f16_f16f16_f16_nhwckrsc_nhwc_tilesize128x256x32_stage1_warpsize2x4x1_g1_tensor8x8x4_t1r3s3 Tactic:<PHONE_NUMBER>5848747 [09/14/2022-14:46:27] [TRT] [V] Deleting timing cache: 3956 entries, 25642 hits [09/14/2022-14:46:27] [TRT] [E] 1: Unexpected exception ERROR: failed to build the TensorRT engine!
and just stopped. I just got the calib bin but no engine
my jetpack version is 4.6.1, onnx ==1.9.0, protobuf 3.8.0, TensorRT == <IP_ADDRESS>, cuda ==10.2
I can use the calib_x.bin and onnx to generate trt engine by using /trtexec successfully
/txtexec --onnx=xxxx --calib=xxxx --saveEngine=xxx --verbose --int8
(but without yolo_layer. I havent read any materials about how to plugin this way). I can convert onnx to trt in FP16 mode and use trt_yolo.py to detect without any problem. I've also tested commenting lines about "plugins" in onnx_to_tensorrt.py to see if it is because of the plugins:
#network = add_yolo_plugins(network, model_name, TRT_LOGGER) #network = add_concat(network, model_name, TRT_LOGGER)
But it didn't work neither, and reported the same error as above. I guess it't not because of the plugins, but tensorrt API? ps I also tested the demo on jetpack 5.0 version. onnx_to_tensorrt.py doesn't work neither. But it reported as "CudaError"
Do you have any experience about this ?
Much appreciation!
Please refer to our open source quantization tool ppq, we can help you solve quantization problems
https://github.com/openppl-public/ppq/blob/master/md_doc/deploy_trt_by_OnnxParser.md


Why another layer of abstraction?

This is an attempt to abstract another time (where Scaphandre is already and abstraction of Intel RAPL or SCI is an abstraction of WattTime + RAPL).
Should we really invest time again or rather focus on building the APIs that should really exists:

every virtual machine (KVM, VMware, OpenStack, Xen) should be able to expose its energy use to the virtualized machine as well as auxiliary information on the underlying hardware
every cloud instance should expose the same on a machine readable API that can be accessed from within the operating system
every managed service API should expose its environmental impact though respective meta data or headers
every physical server or network device should provide a transparent Life Cycle Assessment for itself via a machine readable API

Everything we are doing so far are workarounds around the fact the neither cloud providers, nor virtualization systems, nor OEM providers are providing the required APIs and transparency that is needed to determine the footprint of software.
Wouldn’t it make more sense to focus on getting those companies to act rather than building more software / more abstraction / more workarounds?
Maybe sometimes the answer is not “let’s build software to fix this” but “let’s talk to people, let’s engage” to get stuff done.
All it would take to fix is a law that says (along the lines of) “any provider of virtual or physical computing devices must expose machine readable APIs for customers to determine the Life Cycle Impact of the device as well as its energy consumption” - why not focus on this?

@plnoel You raise a fair point that by stopping to build tools / workarounds you also do not contribute to the mission of increasing transparency.
For some people it might not be an option or be in their realm of possiblities to increase pressure on cloud providers to make them publicize real numbers. So working on some workarounds is better than nothing.
Still @maxschulze raises a fair point and from an outside of the GSF point of view I have to admit that I see it as debateable if the GSF should focus energy on another abstraction projection and thus channeling developer and organizational energy into this.
The most valueable point I see from creating tools as workarounds is that it shows developers and cloud providers that more sustainable software could be achieved if only the tooling is easier or the data would be better.
I would argue that especially for the former point we already have that.
CloudCarbonFootprint or the Teads calculator or also estimation models like the one from the SDIA or the one that we are doing (https://www.green-coding.berlin/projects/cloud-energy/) give you already a very easy tooling and show what is possible.
The only thing that is missing is proper data.
If you now put an abstraction layer on top of the already spotty and patchy data you make the energy predictions worse and worse.
Especially the granulary here imagined by @jawache  (https://github.com/Green-Software-Foundation/carbon-ql/discussions/26) imagines that we have good data for any of these services ... but we don't.
What we see in our measurements and tools we develop is that making estimations about a machine by having rough data about a "similar" machine just gives you bullshit data which is too far from reality. Making assumptions about the configurations that the cloud providers actually run is even another can of worms.
If you glue that now into an abstraction like the carbon-ql  I would argue it is rather detremential than helpful because the data is so un-actionable.

We've developed an API endpoint for this at Climatiq, which allows you to:

estimate  use phase carbon emissions for VMs, storage, memory
estimate embodied emissions
returns electricity consumed for each machine.

We'd be keen to collaborate and develop this further. Base methodology is CCF + some Boavizta data.
see here: https://www.climatiq.io/docs#cloud-computing

@rogallp  Let us talk more on how we can collaborate


Spell Table

The spell table is only filling half the page as opposed to the whole thing.
Browser Type/Version: Chrome
Operating System: Windows 10
Issue Description:Spell table only conforming to half the page.
Brew code to reproduce:
http://homebrewery.naturalcrit.com/edit/Byfw4ZLPV

Related Images : [IF APPLICABLE]

The nature of CSS columns is that it tries to even out the content evenly between each column. A fix for your problem, while being a bit tedious, is to add a vertical spacing div at the end of the spell list and keep increasing it until you get the results you like. I've updated the brew you provided with an example of this.

I see. What would need to be done to keep it in such a manner that it looks like the PHB? Is their a way to space it to accomplish this? Would it be possible to adjust the snippet so it ismply adheres to a 4 column layout?

I'm not sure what you are asking for. I've already provided a solution to make it look like the PHB as much as possible. What is wrong with it?


[FLINK-30628] Kerberos in HiveCatalog is not work

We should read kerberos keytab from catalog options and doAs for hive metastore client.

I'm not sure if this successfully solves the problem


feat: Update endpoint urls.

Refactor current api/pages url design.

// Displays a success preview page for handling and showing the results of successful operations.
[YAP-debug] GET    /success                  --> main.(*community).MainEntry.func1 handlers

// Displays an error page for handling and showing encountered errors.
[YAP-debug] GET    /error                    --> main.(*community).MainEntry.func2 handlers

// Displays a failure message page for handling and showing the results of failed operations.
[YAP-debug] GET    /failed                   --> main.(*community).MainEntry.func3 handlers

// Provides a demo page to showcase sample features of the platform or application.
[YAP-debug] GET    /demo                     --> main.(*community).MainEntry.func4 handlers

// Sign-in page offering the interface for user login.
[YAP-debug] GET    /signin                   --> main.(*community).MainEntry.func5 handlers

// The homepage of the website, showcasing the main content and entry points.
[YAP-debug] GET    /                         --> main.(*community).MainEntry.func6 handlers

// Displays specific page content based on the provided ID.
[YAP-debug] GET    /page/p/:id               --> main.(*community).MainEntry.func7 handlers

// Form page for adding new pages, allowing for the input of new page content.
[YAP-debug] GET    /page/add                 --> main.(*community).MainEntry.func8 handlers

// Form page for editing existing pages, allowing modifications based on the provided ID.
[YAP-debug] GET    /page/edit/:id            --> main.(*community).MainEntry.func9 handlers

// API to provide article content, returning article details based on the article ID.
[YAP-debug] GET    /api/article/:id          --> main.(*community).MainEntry.func10 handlers

// API for deleting articles, removing the specified article based on its ID.
[YAP-debug] DELETE /api/article/:id          --> main.(*community).MainEntry.func11 handlers

// API for a list of articles, returning a list of all articles.
[YAP-debug] GET    /api/articles             --> main.(*community).MainEntry.func12 handlers

// Search functionality API, returning search results based on query parameters.
[YAP-debug] GET    /api/search               --> main.(*community).MainEntry.func13 handlers

// API for data submission, handling the submission of data.
[YAP-debug] POST   /api/commit               --> main.(*community).MainEntry.func14 handlers

// User account page, displaying information about the user's account.
[YAP-debug] GET    /page/user/account        --> main.(*community).MainEntry.func15 handlers

// Displays detailed user information based on the user ID.
[YAP-debug] GET    /page/user/:id            --> main.(*community).MainEntry.func16 handlers

// API for unlinking users, handling the operation to unlink a user.
[YAP-debug] GET    /api/user/unlink          --> main.(*community).MainEntry.func17 handlers

// API for a user's articles list, returning all articles published by a specific user.
[YAP-debug] GET    /api/user/articles        --> main.(*community).MainEntry.func18 handlers

// Media resources list API, returning a list of all media resources.
[YAP-debug] GET    /api/medias               --> main.(*community).MainEntry.func19 handlers

// API for deleting media resources, removing specified media based on its ID.
[YAP-debug] DELETE /api/medias/:id           --> main.(*community).MainEntry.func20 handlers

// Translations API, returning specific translation content based on ID.
[YAP-debug] GET    /api/translations/:id     --> main.(*community).MainEntry.func21 handlers

// Submission API for translations, handling the submission of translation content.
[YAP-debug] POST   /api/translations         --> main.(*community).MainEntry.func22 handlers

// API for retrieving media resource URLs, returning the access URL for resources based on media ID.
[YAP-debug] GET    /api/medias/url/:id       --> main.(*community).MainEntry.func23 handlers

// Video content with captions API, returning video and its caption information based on video ID.
[YAP-debug] GET    /api/video-with-caption/:id --> main.(*community).MainEntry.func24 handlers

// Media upload API, handling the uploading of media resources.
[YAP-debug] POST   /api/medias               --> main.(*community).MainEntry.func25 handlers

// Login API, handling user login requests.
[YAP-debug] GET    /api/login                --> main.(*community).MainEntry.func26 handlers

// Logout API, handling user logout requests.
[YAP-debug] GET    /api/logout               --> main.(*community).MainEntry.func27 handlers

// Callback API for login services, handling the callback from third-party login services.


"Setting file [PLAIN_NOTE_FILE] is not matched to the current configuration. skipped."

Abstract
Getting a lot of errors as:
Setting file [PLAIN_NOTE_FILE] is not matched to the current configuration. skipped.
PLAIN_NOTE_FILE:

is just a "bunch" of regular .md file, and not a settings file
PLAIN_NOTE_FILE are only recently edited files, though this list seems to be growing

Synchronisation, either LiveSync or Manual Sync, doesn't seem to work anymore unless the app (desktop and/or mobile) is restarted. Though the errors persist.
Expected behaviour

Not receiving this error
synchronization succeeds for all PLAIN_NOTE_FILEs

Actually happened

Synchronisation shows the errors above, in the desktop, as well as my iphone and android clients
Synchronisation of all the PLAIN_NOTE_FILEs fail

Reproducing procedure

Perform sync

Other information, insights and intuition.

using Self-hosted LiveSync version 0.22.2
Hidden file synchronization: Disabled
Customization sync: Disabled
problem only happens recently (perhaps after a version upgrade?)
not sure if it's related, but I'm also getting the error described in Conflict resolve window is uncloseable #368
On mobile phone, tried setting up again using "Open setup URI" with URI from desktop. Same error when setup finished unfortunately.

Thank you.

Thank you for reporting this issue!
This message should have only appeared in the verbose log. This has been fixed in v0.22.3.
Possibly, #368 is not related to this. However, probably occurred in the same release as you mentioned. The conflict issue may have been caused by #372. This is also fixed in v0.22.3.
Would you mind trying v0.22.3, please?

Yes with 0.22.3 I don't see the error messages anymore.
I rebuilt my DB as you instructed for #368 and I don't see the conflicts anymore.
Thank you again for your prompt reply and of course your awesome plugin!


Filter out test and deleted Stripe customers from tmp view

Unsure if we need to go back and cast booleans as strings, so that these filters are warehouse-agnostic (e.g. here in the macro for customer columns)
This works in Snowflake, though.

Made the changes! Works on my side 👍

@jeffsloan wanted to respond here that I will be taking a look at this PR this week and will update you if I have any questions prior to merging and releasing the new stripe source version. Thanks!

@jeffsloan there were a few cosmetic changes I wanted to make before merging with master and also want to test cross db compatibility with CircleCi. Therefore, I updated the base branch to the new jsloan-updates branch.
I will approve and merge to this branch. We can continue any need conversation there then merge to master from a new PR.


Custom WAV audio files do not play or trigger properly

Describe the bug
Custom WAV sounds can be added and play when tested in settings, but don't play or trigger when in-game. This was tested for Area Join.
Reproduce
If easy to reproduce, describe the steps:

Add a custom audio file (WAV) in the audio folder
Refresh the sound list
Add the custom sound to an action/trigger in the settings
The sound plays when tested inside the app, but seems to trigger never in-game

Setting
SlimTrade Version: v0.4.3
Operation System: Windows 11
Graphics Card if visual bug
Language settings if not English
Keyboard settings if not English/QWERTY
Screenshots

Command Line Errors
Optionally, you can try running SlimTrade from the command line:
https://github.com/zmilla93/SlimTrade/wiki/Running-from-Command-Line
This will allow you to see any error messages while the program is running which can massively speed up the debugging process, although many bugs don't actually cause error messages.
Additional context
Add any other context about the problem here.

Tested and working on my end. If sounds play in the settings, they should work anywhere since it uses the same code. You could try a custom sound on a different event to verify. I'm wondering if the player joined event isn't triggering.
What language is your client set to?
Players joining the area should also cause the player name, item name, and timer to change color. Does that part work? If not, you should open your client.txt, find the player joined area message, and post that here.

It seems like the area join is not properly being detected. Regardless of the sound being custom or not.
Here is a snippet from Client.txt
2024/04/11 00:16:46 50928218 ca3a50f6 [DEBUG Client 26184] Connect time to instance server was 32ms
2024/04/11 00:16:46 50928250 1186a061 [DEBUG Client 26184] Generating level 60 area "HideoutLibrary" with seed 1
2024/04/11 00:16:46 50928296 f22b6989 [INFO Client 26184] Tile hash:<PHONE_NUMBER>
2024/04/11 00:16:46 50928296 f22b6988 [INFO Client 26184] Doodad hash: 0
2024/04/11 00:16:47 50929062 cff94598 [INFO Client 26184] : You have entered Enlightened Hideout.
2024/04/11 00:16:47 50929328 327589f0 [INFO Client 26184] [SHADER] Delay: ON
2024/04/11 00:20:39 51161281 cff94598 [INFO Client 26184] @From JoiningPlayerName: Hi, I would like to buy your Filled Coffin listed for 10 chaos in Necropolis (stash tab "Trade10c"; position: left 1, top 12)
2024/04/11 00:20:50 51171781 cff94598 [INFO Client 26184] @From JoiningPlayerName: all fracs
2024/04/11 00:21:01 51182468 cff94598 [INFO Client 26184] @To JoiningPlayerName: have 1 left
2024/04/11 00:21:02 51183828 cff94598 [INFO Client 26184] : JoiningPlayerName has joined the area.
2024/04/11 00:21:19 51200531 cff94598 [INFO Client 26184] : Trade cancelled.
2024/04/11 00:21:28 51209796 cff94598 [INFO Client 26184] : Trade accepted.
2024/04/11 00:21:36 51217734 cff94598 [INFO Client 26184] : TrickerST has joined the area.
2024/04/11 00:21:48 51229656 cff94598 [INFO Client 26184] : JoiningPlayerName has left the area.
2024/04/11 00:21:53 51234750 cff94598 [INFO Client 26184] : TrickerST has left the area.

I have just changed masked the player name in the Client.txt, otherwise the snippet above is unchanged. For the record, my language is English and I am also using Lailloken UI, which is the only other tool reading the Client.txt, but also doing so without issues.

I'm not quite sure why it's not triggering. Everything looks how it should.
I made a quick version that logs some stuff while trading. You should try running it, complete a trade, then send me the info from the log file (Options > Information > Logs Folder > Find the newest file).
https://github.com/zmilla93/SlimTrade/releases/tag/v0.4.4-pre1
A successful trade should look like this:
2024/04/10 18:49:56 | Handling trade message from "SmashyMcFireBalls".
2024/04/10 18:49:58 | Checking player joined "2023/12/09 20:55:35 403863171 cff94598 [INFO Client 3576] : SmashyMcFireBalls has joined the area.".
2024/04/10 18:49:58 | Handling player joined area for "SmashyMcFireBalls".
2024/04/10 18:49:58 | Comparing players "SmashyMcFireBalls" & "SmashyMcFireBalls" :: true

If you really don't want to post usernames publicly, you can send me the file in Discord if you prefer.

Client.txt snippet:
2024/04/11 11:04:47 1323000 37970285 [WARN Client 23232] Client couldn't execute a triggered action from the server.
action type id = 48518
2024/04/11 11:04:47 1323000 3796fae9 [WARN Client 23232] Instant/Triggered actionwas serialized to the client, but the client failed to execute the action.
skill_instance_id: 16386
action_id: 33825
object_id: 1050
target_id: 3527
flags: 129
2024/04/11 11:04:48 1323625 cff94598 [INFO Client 23232] : None shall stop you.
2024/04/11 11:04:50 1326328 cff94598 [INFO Client 23232] Sister Cassia: Oh!
2024/04/11 11:05:14 1350171 37970285 [WARN Client 23232] Client couldn't execute a triggered action from the server.
action type id = 58415
2024/04/11 11:05:14 1350171 3796fae9 [WARN Client 23232] Instant/Triggered actionwas serialized to the client, but the client failed to execute the action.
skill_instance_id: 16387
action_id: 33844
object_id: 1049
target_id: 4391
flags: 129
2024/04/11 11:06:24 1420015 cff94598 [INFO Client 23232] : Turn your world to ice.
2024/04/11 11:06:28 1424140 cff94598 [INFO Client 23232] Niko, Master of the Depths: Packed with energy, exile. Packed with energy.
2024/04/11 11:06:36 1432156 cff94598 [INFO Client 23232] : Open the eye of the storm.
2024/04/11 11:06:38 1434046 cff94598 [INFO Client 23232] Undertaker Arimor: Running out of room at the Necropolis...
2024/04/11 11:09:35 1611031 cff94598 [INFO Client 23232] @From 收手吧阿祖: Hi, I would like to buy your Breach Ring listed for 1 chaos in Necropolis (stash tab "~price 1 chaos"; position: left 3, top 3)
2024/04/11 11:09:45 1621078 88a9056d [DEBUG Client 23232] Got Instance Details from login server
2024/04/11 11:09:45 1621093 327589f0 [INFO Client 23232] [SHADER] Delay: OFF
2024/04/11 11:09:45 1621093 ca3a6a3d [INFO Client 23232] Connecting to instance server at <IP_ADDRESS>:6112
2024/04/11 11:09:45 1621125 ca3a50f6 [DEBUG Client 23232] Connect time to instance server was 32ms
2024/04/11 11:09:45 1621156 1186a061 [DEBUG Client 23232] Generating level 60 area "HideoutLibrary" with seed 1
2024/04/11 11:09:45 1621218 f22b6989 [INFO Client 23232] Tile hash:<PHONE_NUMBER>
2024/04/11 11:09:45 1621218 f22b6988 [INFO Client 23232] Doodad hash: 0
2024/04/11 11:09:46 1622109 cff94598 [INFO Client 23232] : You have entered Enlightened Hideout.
2024/04/11 11:09:47 1622812 327589f0 [INFO Client 23232] [SHADER] Delay: ON
2024/04/11 11:09:49 1624828 cff94598 [INFO Client 23232] : 收手吧阿祖 has joined the area.
2024/04/11 11:09:59 1635546 cff94598 [INFO Client 23232] @From 收手吧阿祖: ALL
2024/04/11 11:10:02 1637890 cff94598 [INFO Client 23232] : Trade cancelled.
2024/04/11 11:10:15 1651562 cff94598 [INFO Client 23232] : Trade cancelled.
2024/04/11 11:10:22 1658062 cff94598 [INFO Client 23232] @To 收手吧阿祖: got 5
2024/04/11 11:10:31 1667296 cff94598 [INFO Client 23232] : Trade accepted.
2024/04/11 11:10:35 1671296 cff94598 [INFO Client 23232] : 收手吧阿祖 has left the area.
2024/04/11 11:10:35 1671296 cff94598 [INFO Client 23232] @To 收手吧阿祖: Ty!

The relevant log file:
log_2024-04-11_10h45m33s.txt

Here is another example.
Client.txt
2024/04/11 12:15:24 5560468 ca3a50f6 [DEBUG Client 23232] Connect time to instance server was 32ms
2024/04/11 12:15:24 5560500 1186a061 [DEBUG Client 23232] Generating level 60 area "HideoutLibrary" with seed 1
2024/04/11 12:15:24 5560546 f22b6989 [INFO Client 23232] Tile hash:<PHONE_NUMBER>
2024/04/11 12:15:24 5560546 f22b6988 [INFO Client 23232] Doodad hash: 0
2024/04/11 12:15:25 5561218 cff94598 [INFO Client 23232] : You have entered Enlightened Hideout.
2024/04/11 12:15:25 5561500 327589f0 [INFO Client 23232] [SHADER] Delay: ON
2024/04/11 12:15:32 5568265 cff94598 [INFO Client 23232] : EbbieTheCrow has joined the area.
2024/04/11 12:15:44 5580515 cff94598 [INFO Client 23232] : Trade accepted.
2024/04/11 12:15:47 5582765 cff94598 [INFO Client 23232] @To EbbieTheCrow: Ty!
2024/04/11 12:15:48 5584484 cff94598 [INFO Client 23232] : EbbieTheCrow has left the area.

SlimTrade log
log_2024-04-11_10h45m33s.txt

Thanks for the testing! That narrowed it down pretty quick. I'm assuming you are using the new tab feature? Tabs weren't being checked for the player joined area event.
I reuploaded the v0.4.4-pre1 release with the fix if you want to try it out. I'll include the fix in the next update, probably within a week or so when I have some other stuff done.

Ah, yes, I was using the new tab feature. I can also confirm that the new prerelease works and has fixed the issue. Thanks!


Feature workflow enhancement

added Feature class for feature workflows, including prompt rendering, response validation, and code execution, with enhanced logging

Hey. thanks for helping out. I am working on refactoring these classes at #242 . Do you mind holding these changes until then?

sure buddy

There a problème with bug and feature agent
When I request to add a feature
To a file exist in data/projects/test/hello.sh
He fix the error but he create another sub directory and place it on
data/projects/test/data/projects/test/hello.sh
and running sometime he try to run in sub directory Wich the file doesn't exist .

this new version ensures that the files paths are constructed properly without duplicating directory path..and it creates any necessary parent directories if they dont't exist to avoid issues with the file placement

There a problème with bug and feature agent When I request to add a feature To a file exist in data/projects/test/hello.sh He fix the error but he create another sub directory and place it on data/projects/test/data/projects/test/hello.sh
and running sometime he try to run in sub directory Wich the file doesn't exist .

does that new commit fix ur issue?

@ImSuvodeep hey can you check for other path related issues.. or just present in this file only?


 :P
update I'm hotfixing various things I see as low-hanging fruits for our usage, feel free to discuss
TODO

[ ] make /jobs/:id/allocations somehow show up in context of a job instead of on its own
[ ] make /jobs/:id/evaluations somehow show up in context of a job instead of on its own

@iverberk i've think i've killed as many low-hanging fruits as i can by now :)

Awesome, I'll take a look tonight! Many thanks for your efforts.

@iverberk some of the things may be too opinionated on how i currently work with nomad-ui :) e.g. changing the left-menu order of menus to match what's most important or not to me (or maybe any other operator)

Awesome work! Thanks.


The Web Optimization Project has optimized your repository!

Web Optimization Project (Beta)
The Web Optimization Project is a project that will automatically optimizes files in git repositories by compressing them losslessly. This project was created by Devedse in an effort to save the world! :smirk:
If you have any questions, feel free to create an issue or join the gitter chat:

Optimization
The Web Optimization Project optimized this repository. All optimizations (compressions) are done losslessly and no quality / data is lost. This is also verified afterwards by the Wop so you can be sure that your images are exactly the same.
Check the comments below to find out exactly what files where optimized :smile:

Commit 8/10/2020 10:36:52 AM

Information
Value

Version
1.0.6687

Support file extension
.JFI .JIF .JFIF .JNG .JPE .JPG .JPEG .THM .APNG .PNG .GIF .BMP

Statistics

Stats
Value

Total optimizable files
6

Files optimized successfully (size reduced)
6

Files already fully optimized
0

Files that failed to be optimized
0

Total size before optimization
3.1MB

Total size after optimization
2.8MB

Optimized size compared to old
90.62%

Total bytes saved
299.5KB

Time taken for optimization
46 Seconds

Files optimized in this repository
(Files that couldn't be optimized any further are not listed here)

FileName
Original Size
Optimized Size
Bytes Saved
Duration
Status

Image4.JPG
1.1MB
1MB
91.3KB
7 Seconds
Success

Image3.jpg
562.3KB
486.6KB
75.7KB
6 Seconds
Success

Image6.JPG
774.3KB
706.3KB
68KB
3 Seconds
Success

Image5.JPG
666.7KB
614.9KB
51.8KB
3 Seconds
Success

Image1.jpg
29.2KB
21.5KB
7.7KB
4 Seconds
Success

Image2.png
8.4KB
3.4KB
5KB
21 Seconds
Success


[Bug] Code search failed with Elastic Search and Chinese characters

Gitea version (or commit ref): 1.13.0+dev-580-gc6e4bc53a
Git version: 2.11.0
Operating system: alpine
Database (use [x]):

[ ] PostgreSQL
[x] MySQL
[ ] MSSQL
[ ] SQLite

Can you reproduce the bug at https://try.gitea.io:

[ ] Yes (provide example URL)
[x] No
[ ] Not relevant

Log gist:

https://gist.github.com/jnlin/b55388dbc5e65890d87fa11f5701e523
Description
Panic on source code line https://github.com/go-gitea/gitea/blob/master/modules/indexer/code/elastic_search.go#L274
Screenshots

It works! Thank you all


feat: allow definition of stories in vue files

I'm working on a vite plugin that transforms a vue sfc file to a standard Storybook CSF, so that one could specify stories in a format that is more convenient for vue users. This is inspired by histoire and will implement https://github.com/storybookjs/storybook/issues/9768.
In this setting, stories are specified in xyz.stories.vue files, and then in a first step transformed to valid CSF js files. For this to work, the other vite plugins need to include or exclude these vue story files. This is done in this PR.
(As a follow-up, it would probably make sense to determine the files that the vite plugins operate on by looking at the stories config option in .storybook/main.js).

Thanks for your encouraging words and for the pointer to the svelte addon. I'm not very deep into the storybook environment, so its good to see how other projects are doing this. I learned a few good tricks while reading the code.
The storybook addon is a good idea and would simplify the installation for the user. Do you have an example of an addon modifying vite-builder's vite config?

In storybook 7.0, the vite builder will use the vite.config.js from the user, which means we won't be able to add an excludes like you've done here.

My issue was that without this exclude the transformation added by my vite plugin would have been overwritten by the vite/vue plugin. As there doesn't seem a possibility to stop a transformation chain in vite (from a plugin) and my plugin needs to be quite early in the chain, it was easiest to simple exclude the stories file from the vite/vue plugin. I guess it would also be possible (although not very nice) to instruct users to add the exclude mechanism to their vite config in v7 (or maybe do this automatically via the addon).
(Thanks for the invitation to discord, but I'm not a big fan of that platform. Would prefer to continue the discussion here or in https://github.com/tobiasdiez/unplugin-storybook-vue, or via email.)

Do you have an example of an addon modifying vite-builder's vite config?

I don't think there are any addons which do this yet, but the frameworks do.  See https://github.com/storybookjs/storybook/blob/next/code/frameworks/vue3-vite/src/preset.ts#L22 for instance.
Note that this will run before the user's viteFinal (if they have one in their .storybook/main.js).

and my plugin needs to be quite early in the chain

Could you unshift the plugin onto the list of plugins, rather than push, so it ends up at the top?

Do you have an example of an addon modifying vite-builder's vite config?

I don't think there are any addons which do this yet, but the frameworks do. See https://github.com/storybookjs/storybook/blob/next/code/frameworks/vue3-vite/src/preset.ts#L22 for instance.
Note that this will run before the user's viteFinal (if they have one in their .storybook/main.js).

Thanks, this looks simple enough. Is this a v7 specific feature or would it work with v.6.5 as well?

and my plugin needs to be quite early in the chain

Could you unshift the plugin onto the list of plugins, rather than push, so it ends up at the top?

That's what I'm currently doing, and its working in the sense that its executed before the other plugins from builder-vite. However, I do need to exclude stories files from the vite/vue plugin, which runs later and would otherwise overwrite the changes.
https://github.com/tobiasdiez/unplugin-storybook-vue/blob/3a8fed21f315bee55d324be2f9917c425ccef473/examples/vite/.storybook/main.ts#L25

Short update from my side: The basic things are now working. In particular, I've started to add an one-to-one correspondence between the "classical" CSF format and the native vue format for the stories that are in the documentation, see https://github.com/tobiasdiez/unplugin-storybook-vue/tree/main/examples/vite/src/writing-stories.
Feedback on the current state is much appreciated. Where I'm currently stuck is the handling of args in a way that feels native to vue. I've added an initial proposal that is up for discussion at https://github.com/tobiasdiez/unplugin-storybook-vue/issues/13. What do you think?

@Dschungelabenteuer, @shilman I wonder if maybe you have some thoughts on this exciting work to add native vue stories.

I've managed to find a workaround for the compatibility with the vue plugin, so the exclude hack is no longer necessary. The remaining changes of this PR are still needed to run or not run the plugin on the new stories.vue file.
It would be nice if this PR could be merged, so that I can release an early alpha for the vue-storybook addon that people can try out and give feedback on. 🚀

Sorry I didn't have time to take a deep dive into the plugin itself yet! However, there are a few thoughts and questions which cross my mind while taking a quick look at @tobiasdiez's work:

From a Vite+Vue user's perspective, this looks promising and this could be a very interesting alternative way of writing stories.  Some of my colleagues are not quite familiar with Storybook and – despite the CSF format being pretty simple to use and get used to – it might prove more natural for them to write plain Vue SFCs.

From the perspective of a potential user of this plugin, this raises two main questions for you @tobiasdiez. Sorry if you've already answered them before, I could not find this piece of information without going through your code:

Are you intending to make this work for both Vue 2 and 3? Vue 3 user here, but I know that for various reasons, its adoption is quite slower than expected among the Vue ecosystem, and that there is probably still a bunch of Storybook users relying on Vue 2. IIRC, while Storybook's Vite builder initially did not officially supported Vue 2, @IanVS worked on both Vue 2.6 and 2.7 support recently.
Since you went for an unified plugin, would the webpack5 builder be supported? My guess is, if it required some changes on Vite builder's side, it would also require some changes on the webpack one's?

From a contributor's perspective, the actual changes of this PR made me wonder what would maintainers' take be here. As a maintainer, I would probably want to keep the codebase as much framework-agnostic as possible, and some of the changes here introduce a bit of framework specificity. Maybe some work could be done here to provide users with a way of customizing patterns and extensions used to match stories.

Anyway, this looks cool and I'll surely give it a try soon :)

Thanks for the feedback! Concerning your points:

Yes, the CSF format is easy enough to understand and write, but I'm really missing IDE support (Volar) when writing more complex stories/templates.
I mostly focused on Vue 3 currently. But the code currently doesn't use anything specific to that version and the only dependency on vue is via the vue sfc compiler that is used to compile the template to a render function. So if the demand arises one could make the vue compiler a peer dependency and reuse whatever the user has installed.
Webpack support is indeed planned, but I haven't yet looked at this. Since I'm not that familiar with the Storybook + Webpack combo, I would appreciate PRs in this direction. Shouldn't be too hard.
I agree, it would be nice to refactor the whole filter mechanism to match the user-defined stories (and probably use vite's filter method https://github.com/rollup/plugins/tree/master/packages/pluginutils#createfilter).

@IanVS Can you please review this PR? Thanks!

Hi, yes I will indeed find some time to review this, hopefully soon.

I haven't forgotten about this, just been busy lately!  Just wanted to let you know it's on my list of things to get to.

Thanks for the review. I've now committed your suggested improvements to the regexes.

Thanks you very much! I've now released a first early-preview of the addin at https://www.npmjs.com/package/storybook-vue-addon. Please feel free to play around with it if you have the time.

This looks quite interesting. Have you thought about using the new native format as an alternative to writing stories and documentation in mdx format, @tobiasdiez ?

These experiments are still at a very early phase and I've not thought about the integration with mdx/documentation. How is this handled by the native svelte addon?
Maybe we could use the MDC format of nuxt/content to embed vue components and thus stories into markdown?


No package description on pypi.org

The description of the package substratools is not fetched from the setup.py file whereas it is working for the substra package. On both projects, the uploader had a travis token added before.
Any idea why this is happening?
It would be great to have description='Python tools to submit algo on the Substra platform' displayed to the world!

The description is included, in the grey banner under the dark blue one. The difference is that substra specifies a long_description as well.

Okay, thank you, my bad!

Having a proper long description wouldn't be bad though!

Fixed by https://github.com/SubstraFoundation/substra-tools/pull/28.


@unocss-devtools-update not found, using incorrect host

UnoCSS version
0.51.13
Describe the bug
I have a Drupal site with a theme that uses vite and unocss. The virtual:unocss-devtools is working fine when I build. I can edit classes in the browser and uno loads the styles. When I'm in dev mode, it throws an error:
(https://devsite.lndo.site/[@unocss-devtools-update](https://devsite.lndo.site/@unocss-devtools-update) [HTTP/2 404 Not Found 315ms]
Drupal and vite are running inside a docker container. The url for Drupal is https://devsite.lndo.site, and vite dev is at https://node.devsite.lndo.site. The devtools update url should be node.devsite.lndo.site/@unocss-devtools-update.
Should I do something with optimize deps or an alias?
Reproduction
Using this Drupal module: https://www.drupal.org/project/vite
My theme has main.js and styles.css files in /src. I'm using /src/main.js as the rollupOptions input, and it generates manifest.json with /src/main.js mapped to assets/main-xxx.js.
vite.config.js
import UnoCSS from 'unocss/vite'
import { defineConfig } from 'vite'
import liveReload from 'vite-plugin-live-reload'

export default(({mode}) => {
  return defineConfig({
    plugins: [
      UnoCSS(),
      liveReload(__dirname + '/**/*.(php|theme|twig|module)'),
    ],

    // Handle base path for dev/build.
    base: mode === 'development' ? '/' : '/themes/landmarks_theme/src',

    build: {
      // Clear out dist directory on build.
      emptyOutDir: true,

      // Create manifest to map library src to dist output.
      manifest: true,

      //
      sourcemap: true,

      rollupOptions: {
        input: './src/main.js',
      },
    },
    // CSS is printed inline in the head,
    // enabling devSourcemap lets it be viewed as a file in the inspector.
    css: { devSourcemap: true },

    server: {
      // SSL is handled by the lando proxy.
      https: false,
      // Listen for connections.
      host: true,
      // Set fixed port 3000.
      port: 3000,
      // Configure hmr.
      hmr: {host: 'node.landmarks.lndo.site', protocol: 'wss'}
    },
  })
})

uno.config.js
import {
  defineConfig, presetAttributify, presetIcons,
  presetTypography, presetUno, presetWebFonts,
  transformerDirectives, transformerVariantGroup, presetWind
} from 'unocss'

export default defineConfig({
  shortcuts: [
    {
      fontHeader: "text-xl color-primary uppercase font-bold",
    }
  ],
  theme: {
    /* Any color defined below can be used with text- */
    colors: {
      green: '#0F0',
      primary: 'var(--color-brand)',
      secondary: 'var(--color-brand-secondary)',
      offwhite: '#ededed',
      dark: '#333',
    },
    breakpoints: {
      'sm': '640px',
      'md': '768px',
      'lg': '1024px',
      'xl': '1280px',
      '2xl': '1536px'
    }
  },
  rules: [
    [/^text-(.*)$/, ([, c], {theme}) => {
      if (theme.colors[c]) {
        return {
          color: theme.colors[c],
        }
      }
    }],
  ],
  presets: [
    presetUno(),
    presetIcons({
      prefix: 'i-',
      extraProperties: {
        display: 'inline-block'
      }
    }),
    presetTypography(),
    presetWind(),
    presetWebFonts({
      fonts: {
        headerFont: ['Oswald'],
        bodyFont: ['Roboto'],
      },
    }),
  ],
})

postcss.config.js
export default {
  plugins: {
    '@unocss/postcss': {
      content: ['**/*.{html,twig,theme,js,ts,jsx,tsx,vue,svelte,astro}']
    },
  },
}

Setting up an example with lando and drupal is going to be difficult if one is not already familiar. I generated a new theme with drush, installed unocss/vite, and adjusted the libraries according to instructions from the vite module. I also had to proxy port 3000 in the container to a url I could access (could have used the vite port).
System Info
Using lando (docker containers) on linux mint.
Validations

[X] Read the Contributing Guidelines.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Check that this is a concrete bug. For Q&A open a GitHub Discussion or join our Discord Chat Server.
[X] The provided reproduction is a minimal reproducible example of the bug.

I added {origin: 'https://node.demo.lndo.site'} to the vite server config. Now the url for @unocss-devtools-update is correct, but it is throwing a CORS error.
Now my situation is very similar to #2822. In that one, the error suggests adding 'no-cors' to the request: If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
I changed that in @unocss/vite/dist/client.mjs as suggested in the issue and the error went away.
I don't have a proxy defined in vite.config.js. Would that help here?

Another workaround is to use the unocss runtime cdn, loaded in the Drupal site. Is there a way to get the runtime to load from vite? That way it would get the same config instead of having to specify that a second time.


Add Module service and redux for 'get one' and 'get list'

#2434  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @nickgraz and the rest of your teammates on  Graphite

Merge activity

Apr 1, 3:57 PM EDT: @nickgraz started a stack merge that includes this pull request via Graphite.


Add support for get subnets command to show number of /28 prefixes available/assigned

When using VPC Prefix delegation for already existing EKS cluster, we need to make sure that the VPC subnets are not fragmented so that the VPC CNI is able to efficiently utilize all of the /28 contiguous blocks of IPs from the subnets to assign IP addresses for pods. Having largely fragmented subnets will lead to many of the IP addresses (non contiguous) being under utilized in the subnet leading to IP exhaustion.
As of today, eksdemo get subnets command shows the amount of available IP addresses in the subnet. Having the information about number of contiguous blocks of IP addresses available in the subnets is going to help the EKS users in deciding if prefix-delegation is a viable option or not.
My proposal is to add a flag --show-prefix-count to the eksdemo get subnets command to show the amount of available/assigned /28 prefixes in the subnets.
Proposed Usage:
eksdemo get subnets --show-prefix-count

+--------------------------+------------+-----------------+----------+---------------+-----------+
|            Id            |    Zone    |    IPv4 CIDR    | Free IPs | Free Prefixes | IPv6 CIDR |
+--------------------------+------------+-----------------+----------+---------------+-----------+
| subnet-xxx               | us-east-1b | <IP_ADDRESS>/18   |    16378 |          1023 | -         |
| subnet-yyy               | us-east-1b | <IP_ADDRESS>/26 |       59 |             4 | -         |
| subnet-zzz               | us-east-1a | <IP_ADDRESS>/26 |       58 |             3 | -         |
| subnet-aaa               | us-east-1a | <IP_ADDRESS>/17     |    32762 |          2047 | -         |
+--------------------------+------------+-----------------+----------+---------------+-----------+

To do this, we can prepare the list of /28 prefixes based on CIDR range, get the IP addresses and prefixes (if any) already assigned in the subnet and remove them from the initial list, and the remaining would be available prefixes.
Note: This will also help in troubleshooting issues that might arise when the VPC CNI is unable to get a contiguous /28 Prefix for allocation (Client.InsufficientCidrBlocks) even when there are free IP addresses available in the subnets.

I can work on this feature


Xms and Xmx specified in ES_JAVA_OPTS variable are not taken into account, overloaded by jvm.options definition

docker info output:
[rancher@vct2-rancher-host-1 ~]$ docker info
Containers: 20
Running: 19
Paused: 0
Stopped: 1
Images: 19
Server Version: 1.12.3
Storage Driver: overlay
Backing Filesystem: extfs
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: null bridge overlay host
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 4.4.24-rancher
Operating System: RancherOS v0.7.1
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 7.798 GiB
Name: vct2-rancher-host-1
ID: YMVO:OVCD:A3G4:4ZNI:A2NY:NGIN:IGRF:OTQ6:37DU:ESH7:WZQG:DL6J
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Insecure Registries:
devserver2.corp.skysoft-atm.com:5000
<IP_ADDRESS>/8
docker-compose version: 1.2.0
Host OS and version:
NAME="RancherOS"
VERSION=v0.7.1

Bug description
I am using the following docker-compose.yml file to instanciate one Elasticsearch node:
version: '2'
services:
  elasticsearch-master-1:
    image: docker.elastic.co/elasticsearch/elasticsearch:5.1.1
    container_name: master-1
    labels:
      type: master-node
    environment:
      - cluster.name=${cluster_name}
      - node.name=master-1
      - bootstrap.memory_lock=true
      - discovery.zen.ping.unicast.hosts=elasticsearch-master-2
      - discovery.zen.minimum_master_nodes=2
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - node.master=true
      - node.data=false
      - node.ingest=false
      - xpack.security.enabled=false
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    mem_limit:<PHONE_NUMBER>
    cap_add:
      - IPC_LOCK

My expectation is to have a Xms and Xmx with a value of 512m (overloading. However, it seems that the elasticsearch node is started with the default value defined in the jvm.options file. The container shows 2 different Xms and Xmx values:
ps -aef | grep elasticsearch
    1 elastics 257:21 /usr/lib/jvm/java-1.8-openjdk/bin/java -Xms2g -Xmx2g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -server -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -Djdk.io.permissionsUseCanonicalPath=true -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Dlog4j.skipJansi=true -XX:+HeapDumpOnOutOfMemoryError -Xms512m -Xmx512m -Des.path.home=/usr/share/elasticsearch -cp /usr/share/elasticsearch/lib/elasticsearch-5.1.1.jar:/usr/share/elasticsearch/lib/* org.elasticsearch.bootstrap.Elasticsearch -Ecluster.name=docker-cluster -Ediscovery.zen.ping.unicast.hosts=master-1,master-2 -Enode.data=true -Enode.master=false -Enode.name=data-3 -Ediscovery.zen.minimum_master_nodes=2 -Ebootstrap.memory_lock=true -Expack.security.enabled=false -Enode.ingest=true

Indeed, the bin/es-docker entrypoint only appends the Xmx and Xms in the ES_JAVA_OPTS variable.

Feature Description

Thank you for your interest in the docker image!
I couldn't replicate your issue. Using the same docker-compose.yml:
$ cat >docker-compose.yml
version: '2'
services:
  elasticsearch-master-1:
    image: docker.elastic.co/elasticsearch/elasticsearch:5.1.1
    container_name: master-1
    labels:
      type: master-node
    environment:
      - cluster.name=ISSUE22
      - node.name=master-1
      - bootstrap.memory_lock=true
      - discovery.zen.ping.unicast.hosts=elasticsearch-master-2
      - discovery.zen.minimum_master_nodes=2
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - node.master=true
      - node.data=false
      - node.ingest=false
      - xpack.security.enabled=false
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    mem_limit:<PHONE_NUMBER>
    cap_add:
      - IPC_LOCK

Heap size reported is 494.9MB, see logs below:
dl@MS-7885 ~/source/elastic/tmp/issue#22 $ docker-compose up
Creating network "issue22_default" with the default driver
Creating master-1
Attaching to master-1
master-1                  | [2017-01-04T17:32:40,341][INFO ][o.e.n.Node               ] [master-1] initializing ...
master-1                  | [2017-01-04T17:32:40,412][INFO ][o.e.e.NodeEnvironment    ] [master-1] using [1] data paths, mounts [[/ (/dev/mapper/docker-253:1-9175146-e10c059dddb00af4d8b7611ea6f02d798d752216617026fd6f45e7158adfbee3)]], net usable_space [9.7gb], net total_space [9.9gb], spins? [possibly], types [xfs]
master-1                  | [2017-01-04T17:32:40,413][INFO ][o.e.e.NodeEnvironment    ] [master-1] heap size [494.9mb], compressed ordinary object pointers [true]
master-1                  | [2017-01-04T17:32:40,413][INFO ][o.e.n.Node               ] [master-1] node name [master-1], node ID [is4Spy2ASTGWIgSfqcGxjg]
master-1                  | [2017-01-04T17:32:40,415][INFO ][o.e.n.Node               ] [master-1] version[5.1.1], pid[1], build[5395e21/2016-12-06T12:36:15.409Z], OS[Linux/4.8.15-200.fc24.x86_64/amd64], JVM[Oracle Corporation/OpenJDK 64-Bit Server VM/1.8.0_92-internal/25.92-b14]

This can also be checked with a curl request:
bash-4.3$ curl 'http://localhost:9200/_nodes/stats?pretty=true' | grep heap
          "heap_used_in_bytes" : 113252104,
          "heap_used_percent" : 21,
          "heap_committed_in_bytes" : 518979584,
          "heap_max_in_bytes" : 518979584,
          "non_heap_used_in_bytes" : 68603944,
          "non_heap_committed_in_bytes" : 73326592,

As per the docs it is possible to define the heap size via the ES_JAVA_OPTS variable.

Thanks a lot Dimitrios for your quick reply !
I tried to reproduce in a different environment and it works but still I am not convinced by this configuration. I agree that the docs you mentioned precised you can define the heap size via the ES_JAVA_OPTS but it also precises that it should be done after having commented out the Xms and Xmx settings in the jvm.options file :

It is also possible to set the heap size via an environment variable. This can be done by commenting out the Xms and Xmx settings in the jvm.options file and setting these values via ES_JAVA_OPTS:

Actually, I am really not comfortable by having Xms and Xmx defined twice in the same process:

$ docker exec -ti master-1 ps -aef | grep elastic
    1 elastics   0:17  /usr/lib/jvm/java-1.8-openjdk/bin/java -Xms2g -Xmx2g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -server -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -Djdk.io.permissionsUseCanonicalPath=true -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Dlog4j.skipJansi=true -XX:+HeapDumpOnOutOfMemoryError -Xms512m -Xmx512m -Des.path.home=/usr/share/elasticsearch -cp /usr/share/elasticsearch/lib/elasticsearch-5.1.1.jar:/usr/share/elasticsearch/lib/* org.elasticsearch.bootstrap.Elasticsearch -Ecluster.name=ISSUE22 -Ediscovery.zen.ping.unicast.hosts=elasticsearch-master-2 -Enode.data=false -Enode.master=true -Enode.name=master-1 -Ediscovery.zen.minimum_master_nodes=2 -Ebootstrap.memory_lock=true -Expack.security.enabled=false -Enode.ingest=false
   80 elastics   0:00 ps -aef

I am not an expert in JVM configuration but I think it's quite hazardous to predict the behavior even in a docker image. That's my feeling and I will probably create a new image extending the elastic image with a proper jvm.options file.
Thanks again for your support.

@dchambon Doing a customized image with your own jvm.options is definitely a good approrach and there is an example here.
Alternatively, if you can provision the needed jvm.options file on the hosts you can also bind mount that file as shown here. You can either hard code the memory there, or leave it blank and still get your settings honored with ES_JAVA_OPTS.
The double -Xmx -Xms definitions are due to how the startup elasticsearch script works; the params defined in ES_JAVA_OPTS get appended after the ones in jvm.options. Latest openjdk versions (including musl java used in the Alpine image) honor the right most one, so that's why it works:
$ docker run --rm -ti docker.elastic.co/elasticsearch/elasticsearch:5.1.1 /bin/bash
bash-4.3$ java -Xms2g -Xmx2g -XX:+PrintFlagsFinal -Xms512m -Xmx512m 2>/dev/null | grep MaxHeapSize
    uintx MaxHeapSize                              := 536870912                           {product}

However, I do agree that this is not a good practice. I will look into it, possibly addressing it in the documentation for starters.

The double -Xmx -Xms definitions are due to how the startup elasticsearch script works; the params defined in ES_JAVA_OPTS get appended after the ones in jvm.options.

This is correct. It it recommend but not necessary to comment out the heap settings in the jvm.options file; but we deliberately ordered the parameters first the jvm.options and then the ES_JAVA_OPTS options so that the latter will take precedence and we will maintain this functionality (it's very useful when you're developing and testing Elasticsearch to be able to change JVM options without having to edit the jvm.options file).

I can't make it work with es:latest, I set it at the composer but checking /etc/elasticsearch/jvm.options it's still at 2g, same for top at docker host, jvm is using 2g not 6g as I set it.
I can see running "env" inside ES container the variable having 6g assigned, but jmv.options it's not taking it.

It would be proper 12-factor to be able to provide all settings as vars. Changing the GC won't work this way as you get "multiple gc" settings.


Dynamic Resolution Adjustment of PV

Hi,
So I have been using this project to fit my own purpose and I have stumbled upon an issue. Here are my requirements:

I have implemented a slider which increases or decreases the size of the quad object which displays the video feed.
Now if I increase or decrease the size of the quad, I have found that the video feed becomes blurry and pixelated. This is obviously because I am not maintaining the aspect ratio dynamically by the changing the quad size.

My question: is there a way to dynamically adjust the video resolution such that the feed does not appear blurry when I change the scale of the quad on the fly?

I also have two more observations:

When I increase the fps to 60, the video stops working entirely, all I see is a quad,
If the battery of the Hololens 2 goes below 40%, the video stops again even at 30 fps. Is this an issue you have also come across. It would be helpful to gain access to the logs to see what is going wrong.


gradio_app_sdxl_specific_id.py': [Errno 2] No such file or directory

Hi,I was trying to use it but the entry file not found?
python gradio_app_sdxl_specific_id.py
python: can't open file '/ML-A100/team/mm/shuyu/workspace/projects/StoryDiffusion/gradio_app_sdxl_specific_id.py': [Errno 2] No such file or directory

python gradio_app_sdxl_specific_id_low_vram.py


zh-trans: update pull request template to reflect the current workflow

/cc @markthink @xichengliudui @SataQiu @zhangxiaoyu-zidif @idealhack

@chenrui333 please resolve conflicts if still necessary.

@chenrui333 this has been open with no action since Feb 10. Feel free to rebase or open a new PR. Thanks!
/close


Enable mypy warn unused ignores

This PR adds the mypy option "warn_unused_ignores" which will raise an error if a # type: ignore is used where it is no longer necessary.
Should enable us to keep our types updated.
I am not sure if this will lead to many issues whenever e.g. numpy changes/improves their typing, so we might get errors whenever there is a new version. Maybe it is not that bad, or maybe we can also remove the option again and only do it manually from time to time?

Good idea! 👍


dzil: Use [@Author::ZMUGHAL]

Fixes https://github.com/EntropyOrg/p5-Alien-LIBSVM/issues/9.

Coverage remained the same at 25.0% when pulling e5fba2b9f355995c4a35e295638b8670a787127d on 9-dzil-pluginbundle into 0f9f697526696eed175dee3bc1f0f21be5ce4d55 on master.


Why does Franz have so many background processes?

Hey guys,
Is there any word on a 64bit installer?

Lastly is there a reason why Franz has so many background processes?
Running 5 services but have between 7 to 12 services running in the background.
Expected Behavior
5x Background apps, 1 for each service.
Current Behavior
Currently I have 12 background processes for my 5 services.
Screenshots (if appropriate):

Steps to Reproduce (for bugs)
Configured 2x Slack, 1x WhatsApp, 1x Skype, 1x Discord.
Watch background processes
Context
Not a big effect, just extra resources taken.
Your Environment

Franz Version used: 5.0.0-beta.13
Operating System and version: Windows 10 - 1607

Every service runs in a separate process. Based on your screenshot, I'd guess that you have added 9 services.
If one service for examples crashes, just the service goes down and not the complete app.
64bit installer is on my radar but I'm not quite ready yet.

I only have 5 services added...
That's why I was wondering why there were so many running...

When you restart the app and give it some time to initialize everthing, do you already have 12 processes in task manager?

Yup... Its been running now for must be 5+ hours.
Still have 12 instances in background processes.

Ok, thanks!
Can you please update your initial post with the missing information from the issue template? Otherwise it's impossible for me to keep track of it.
https://raw.githubusercontent.com/meetfranz/franz/master/.github/ISSUE_TEMPLATE.md

Updated. Let me know if I'm missing anything helpful for you

It's kinda the same for me, i have 3 services and 5 (or 6 if you count the main one) processes:

@SavellM thanks. I will update this issue once I've ben able to test it.
@deseven in your case, everything seems fine to me :)
Usually those processes will be shown:

One main process (handles background stuff, managing the windows, ...)
One render process (everything inside of Franz e.g. UI)
Every WebView runs in a separate process, even every instance of the dev tools.
Some background tasks that will be spawned from time to time..

So even with just one service, the minimum of processes is 3.

Worth pointing out as well that disabled services still consume memory.

@henrebotha this issue was resolved in #294

Any updates on this? Experiencing similar issue. 4 Services 8 instances of Franz helper eating up 2 gigs of ram :/

same on MacBook Pro (Retina, 13-inch, Late 2013) 10.13.2 Beta (17C79a) when i start the Franz, my mac goes crazy.

Same issue on ubuntu 16.04.
Moreover it uses a lot of memory. :cry:

Version: 5.0.0-beta.17
Release: 1.8.4 / linux / x64

Same on Ubuntu 18.04
Version: 5.0.0-beta.18
Release: 1.8.4 / linux / x64

I have the same issue. My ubuntu 18.04 was only running franz with 8 services and it was eating up 6.7 GB of ram. This is crazy since i have to spin up my local develpment servers and my editors and they all need memory. with franz taking up more than half of it, it's impossible to for me to keep up with my work. I have 12GB of ram. Any update on this issue????

Just deleted a couple of services that were disabled and the memory went down about 500MB to 2.33Gb.
Disabled services shouldn't use that much memory.

@abhanshgiri21, @samura
It may be useful to report the exact services that you're using. Also you could try disabling all services and adding them again one  by one to pinpoint the culprits. Only then can your issues be resolved.
By doing this I was able to determine the new gmail interface was hogging huge amounts of memory and constantly churning CPU. Having two gmail services for work and personal email enabled made Franz unusable for me. Switching them to Inbox by gmail helped a lot. I now ended up switching back to the old Gmail UI, and now my resource usage is back to normal.

Same issue here.
Windows 7 x64
Version: 5.0.0-beta.17
Release: 1.8.4 / win32/ x64
10 services enabled, 2gb+ RAM in use.

Similar issue.
For me it's with Windows 10 x64
Version: 5.0.0-beta.18
Release: 1.8.4 / win32/ x64
8 Services -> 20 open Tasks with minimum 1GB RAM

me too, it's almost 2GB!
screen

@menzow Even better. i made an excel list.
Started with all services enabled. Listed the process RAM usage. Deleted 1, list RAM usage etc etc. until no service were left.
Franz was running for almost 7hours straight after starting up the laptop.
FranzProcesses.xlsx

I'm not impressed by the RAM hungriness of the Franz, I think was not that bad before but when Main app takes usually more than 1.5GB sometimes over 2GB of memory - it's really pretty bad. I love Franz but if this issue will not be addressed, there's really no reason not to use browser that is now way more RAM effective :(. I've also read about slack and other electron apps optimising this problem as well, but I also understand that this is basically a one-man project so no hard feelings, just RAM is the most important bottleneck for me.

I'm on newest version: 5.0.0-beta.22 (5.0.0-beta.22.1059)

I'm in the same boat, love the app, using it for 8 services, but RAM consumption is a bit high. Complete agreement with janjurek. If it can be improved, that would rock.

Not quite as bad here, but still pretty poor.
5 services, 11 processes running, 900MB total. I did have 8 services but didn't use 3 much so figured I recover some ram.
Kind of defeats the purpose of this program if I have to slim down how many services I use because it eats all my available ram.
5.2.1-beta.1


System wide installation

I would like to make a package for Archlinux AUR, so I tried to install vim-python-pep8-indent system wide. I tried to put python.vim into the /usr/share/vim/vimfiles/indent/, but it does not work in such way. So I tried to put it into the /usr/share/vim/vimfiles/after/indent/, but it does not work too. I also tried to cut if exists('b:did_indent') statement to test, but it changes nothing. Therefore things work smoothely with Plug package manager or also when I manually source the python.vim.
Is such behaviour presented by design? I there a way to install script globally?

I think putting it into /usr/share/vim/vimfiles/indent/ should work in general.
Check :scriptnames and e.g. add something like unsilent echom "Loaded" there to see if it gets sourced in the first place.

Indeed, it works with neovim and it works with vim --clean. But python.vim has not been even loaded with plain vim some_file.py run, even when ~/.vimrc is empty. Seems like some specific case. Great thank you, @blueyed, I'll try to investigate it a bit deeper.

Fine, due to documentation Vim >= 8.0 needs manual sourcing of default config in .vimrc like this:
unlet! skip_defaults_vim
source $VIMRUNTIME/defaults.vim

Out of the box defaults.vim is being sourced only if ~/.vimrc is not presented.


B1 Hohla

Create B1 task Pull Request
Node ID: d6ab7dc42fd420f3
Log files:
https://github.com/Hohlas/Testnet3-Challenges/blob/logfiles/concordium-testnet-node-b540fbdda67fb7a4cfb608201f50c3a5a8fc8487564e3b7254a5cd9f7112fa0b.log
https://github.com/Hohlas/Testnet3-Challenges/blob/logfiles/concordium-testnet-system-report.log

confirmed:B1
node:d6ab7dc42fd420f3

confirmed:B6

confirmed:B6

confirmed:B5
address:44CACvcaTMh7yCmcbmHF9CsKb2rBztJcFoY4UduY4TwmrQC8GX

Form Submitted

Form Submitted utc +3


feat(bridge): Show dialog when settings / create project is changed (#4677)

Signed-off-by: Elisabeth Lang<EMAIL_ADDRESS>This PR
Closes #4677
When the user types in something in the create project/project settings form he will get a notification that there are unsaved changes. The user will not be prevented from navigating away - he/she should always have the possibility to decide what to do.
Also, I considered having a "Save" action in the dialogue but was restrained from doing so. When we would add more settings in edit mode it will get overly complicated on validation and deciding on what to save.

https://github.com/keptn/keptn/issues/4677#issuecomment-898283678