Bug: CALL show_connection() doesn't work with rel table groups in CLI

Kùzu version
0.4.2
What operating system are you using?
MacOS Sonoma 14.5
What happened?
I run this code in Python to display the CALL show_connection() results in Python and the CLI. Python works, but the CLI doesn't.
import shutil
import kuzu

shutil.rmtree("./testdb", ignore_errors=True)
db = kuzu.Database("./testdb")
conn = kuzu.Connection(db)

conn.execute("CREATE NODE TABLE Person (id INT64, name STRING, PRIMARY KEY (id))")
conn.execute("CREATE NODE TABLE Company (id INT64, name STRING, PRIMARY KEY (id))")
conn.execute("CREATE NODE TABLE University (id INT64, name STRING, PRIMARY KEY (id))")
conn.execute("CREATE REL TABLE GROUP Affiliation (FROM Person TO Company, FROM Person TO University)")

res = conn.execute("CALL SHOW_TABLES() WHERE type = 'REL' RETURN *")
tbl_names = []
while res.has_next():
    tbl_names.append(res.get_next()[0])

print(tbl_names)

for tbl in tbl_names:
    res2 = conn.execute(f"CALL SHOW_CONNECTION('{tbl}') RETURN *")
    while res2.has_next():
        print(res2.get_next())

I get the expected result as tuples:
['Affiliation_Person_University', 'Affiliation_Person_Company']
['Person', 'University', 'id', 'id']
['Person', 'Company', 'id', 'id']

In the CLI, it just returns basic_string and crashes out.
kuzu> CALL SHOW_CONNECTION('Affiliation_Person_Company') RETURN *;
------------------------------------------------------------------------------------------------------
basic_string

Are there known steps to reproduce?
No response

Actually this doesn't work in regular rel tables too:
import shutil
import kuzu

shutil.rmtree("./testdb", ignore_errors=True)
db = kuzu.Database("./testdb")
conn = kuzu.Connection(db)

conn.execute("CREATE NODE TABLE Person (id INT64, name STRING, PRIMARY KEY (id))")
conn.execute("CREATE NODE TABLE Company (id INT64, name STRING, PRIMARY KEY (id))")
conn.execute("CREATE REL TABLE WorksAt (FROM Person TO Company)")

res = conn.execute("CALL SHOW_TABLES() WHERE type = 'REL' RETURN *")
tbl_names = []
while res.has_next():
    tbl_names.append(res.get_next()[0])

print(tbl_names)

for tbl in tbl_names:
    res2 = conn.execute(f"CALL SHOW_CONNECTION('{tbl}') RETURN *")
    while res2.has_next():
        print(res2.get_next())

Output:
['WorksAt']
['Person', 'Company', 'id', 'id']

In the CLI:
kuzu> CALL SHOW_CONNECTION('WorksAt') RETURN *;
------------------------------------------------------------------------------------------------------
basic_string

It shows that and then crashes out.

Just tested on the latest master and it seems to be fixed!


file is not working after using SOD only

u need to upload the decoder.php to a site for this protection work
for example :
https://communitykeyv1.000webhostapp.com/Decoder.php?string={encrypted}
my domain don't work anymore so u need to change it with another


Unable to fetch namespaces

First off, I must be doing something wrong....
In my .zshrc, I export KUBECONFIG dynamically, this way:
export KUBECONFIG="$(printf '%s\n' ~/.kube/configs/*.k8sconfig 2>/dev/null | awk '{printf "%s:", $0}' | sed 's/:$//')" 2>/dev/null
This allows my variable to be up-to-date at each start of my shell, regardless of the contents in ~/.kube/configs/ . All of my kube config files have the .k8sconfig extension.
My switch-config.yaml file is this:
kind: SwitchConfig
version: v1alpha1
kubeconfigStores:

kind: filesystem
showPrefix: false
kubeconfigName: "*.k8sconfig"
paths:

~/.kube/configs

The problem I have right now is that I can select a context, but once done, if I come back with ks ns it breaks with the following error:
WARN[0000] failed to retrieve current namespaces: unable to create rest config: invalid configuration: no configuration has been provided, try setting KUBERNETES_MASTER environment variable
Why is that, and how may I correct my setup ? Obviously I am missing something.
I currently have 2 config files in .kube/configs, but it will soon grow. I've tried exporting KUBECONFIG= one of those files. What happens then is that when I run switcher, it lists the contexts from KUBECONFIG, and then the contexts from the 2 files in .kube/configs/ .. This means one file is listed twice.
Moreover, regardless of which context I choose, when it exits and then I try switcher ns, regardless of which config file switch to, switcher ns will always lists the namespaces from the first selected file. As if my selection is disregarded past the first occurence.

Trying to find some work-arounds, I've stumbled on this:
I have 2 config files: .kube/configs/cfg1.yaml, .kube/configs/cfg2.yaml.
I've then ran:

cd ~/.kube
kubectl config view --flatten > config
rm -rf configs switch-state .switch*  <-- wiping out everything kubeswitcher-related, to start from scratch
New switch-config.yaml:

kind: SwitchConfig
version: v1alpha1
kubeconfigStores:

kind: filesystem
showPrefix: true
paths:

~/.kube/config

Ok 2 things:

My 2 cfg files are duplicated (so 4 files show, 2 with the .kube/ prefix, 2 without.
regardless if I take .kube/cfg1.yaml or cfg1.yaml, fetch the namespaces thereafter (switcher ns), once I exit and choose the 2nd configuration, as mentioned way above, a further switcher ns command will still fetch cfg1's namespaces

Do you use the switcher binary only - or also the switch script - which is required to set the KUBECONFIG environment variable? To verify, check that after running switch, that the environment variable is set like so:
KUBECONFIG=/Users/<my_user>/.kube/.switch_tmp/config.3093589165.tmp

My 2 cfg files are duplicated (so 4 files show, 2 with the .kube/ prefix, 2 without.

Probably the contexts without the switch prefix are the contexts taken from your current Kubeconfig file set via the KUBECONFIG environment variable (it also checks this file to be compatible with kubectx, but ignores it when it is a kubeswitch-created temporary kubeconfig to not show duplicate entries)


DO NOT MERGE - Small radios and checkboxes TEST BRANCH

DO NOT MERGE
DO NOT MERGE
DO NOT MERGE

Closing for now, the review application has gone stale, I've updated the original backlog thread to reference this branch.


Allow users to read / write from all components of a given entity using an AllComponents API

What problem does this solve or what need does it fill?
From time to time, users want to fetch all of the components from a given set of entities.
To do so, they must use the EntityRef or EntityMut API, in an exclusive system.
Fundamentally though, there's no reason this must be done in an exclusive system: this does not impact resource data, and we can limit the archetypes affected when combined with query filters.
What solution would you like?
Create a AllComponents type that parallels the API of EntityRef.
This would enable users to write e.g. Query<&AllComponents, With<Networked>> in an ordinary system, allowing them to read from any component of the given entity.
This will require some interesting new logic around defining which fetches are needed, but should be relatively straightforward.
Alternatives considered
Initially, I thought we could use EntityRef and EntityMut for this by implementing the WorldQuery trait on them directly. However, EntityMut allows users to add components, which cannot be done in parallel due to the potential impacts on archetypes.
Without the ability to reuse the APIs, IMO it makes more sense just to create a new type and use the standard & vs &mut distinction.
Alternatively alternatively, we could instead use one of the more 🧪 ideas to allow for instant component addition / removals in parallel systems and then just use EntityRef and EntityMut, likely by deferring the archetype updates until the next sync point and storing new component data in a scratch space of sorts.

You can sort of do this with ReflectComponent, though this both requires Reflect impls, still requires an exclusive system, and is mostly for the dynamic case where the types are not known at compile time. However, I'm not sure what kind of use case for AllComponents would work where we know the types at compile time that isn't served by generic systems and the existing query type.

Agreed, this would be dramatically more useful after we have dynamic components.

This would enable users to write e.g. Query<&AllComponents, With<Networked>> in an ordinary system, allowing them to read from any component of the given entity.

Could you expand on how that would be used?
fn my_system(
    query: Query<&AllComponents, With<Networked>>
) {
    for all_components in query.iter() {
        // how do you use this all_components?
    }
}

Without going full dynamic, you'll need to provide the concrete component type, so why not put it in the query anyway?

Maybe we trade concurrency for ergonomics and provide this as a separate SystemParam that just doesn't block resources.
fn my_system(
    mut all: AllComponentsMut,
) {
    for (mut a, b) in all.query::<(&mut A, &B)>() {
        /* ... */
    }
}

This still doesn't give mutable access to Entity components yet. We need a version of EntityMut that doesn't give access to structural mutations first.


Contains(Vector3[] points) is not implemented in BoundingFrustum

Methos Contains(Vector3[] points) not implemented and because of this operation like frustum.Contains(anotherFrustum) cannot be performed.
Is it possible to fix (implement) that method?

Yes, though I have personally no more spare time left for SharpDX, apart for merging PR and integrate bug fixes from the community.

I would suggest taking implementation from MonoGame https://github.com/mono/MonoGame/blob/8a8f21c65c6e40688ed75b64c65bbf5a5790e40f/MonoGame.Framework/BoundingFrustum.cs


run weex preview throw error

Makes sure these boxes are checked befor submitting your issue - thank you!

[] Check that your node version is >= 6 and npm version is >=4(Run npm --version and node --version).

XdeMacBook-Pro:~ x$ npm --version
6.2.0
XdeMacBook-Pro:~ x$ node --version
v10.8.0

[] If you encounter any problems using the tool, please check if there has a new version to update(Run weex update [pluginname]@latest).
[] Check the FAQ, make sure there have not the same issue.

Your development environment
$ weex -v
v1.3.8

weexpack : v1.2.5

weex-debugger : v1.1.4

weex-builder : v0.4.0

weex-previewer : v1.5.1

platform (Win/Mac/Ubuntu..)

Mac
Steps to reproduce the problem.(Maybe a dotwe link,)
link: http://dotwe.org/vue/d7792ea0634ae171d8d59eaa47756665

weex preview /Users/x/Desktop/weex/src --entry /Users/x/Desktop/weex/src/Map.vue
throw error
/usr/local/lib/node_modules/weex-toolkit/node_modules/weex-previewer/node_modules/weex-builder/node_modules/weex-vue-loader/lib/script-loader.js!/usr/local/lib/node_modules/weex-toolkit/node_modules/weex-previewer/node_modules/weex-builder/node_modules/babel-loader/lib!/usr/local/lib/node_modules/weex-toolkit/node_modules/weex-previewer/node_modules/weex-builder/node_modules/weex-vue-loader/lib/selector.js?type=script&index=0!./Desktop/weex/EmergencyCommandProjectWithoutVueRouter/src/components/Map.vue
Module not found: Error: Can't resolve './CustomButton' in '/Users/x/Desktop/weex/EmergencyCommandProjectWithoutVueRouter/src/components'
resolve './CustomButton' in '/Users/x/Desktop/weex/EmergencyCommandProjectWithoutVueRouter/src/components'
using description file: /Users/x/Desktop/weex/EmergencyCommandProjectWithoutVueRouter/package.json (relative path: ./src/components)
Field 'browser' doesn't contain a valid alias configuration
after using description file: /Users/x/Desktop/weex/EmergencyCommandProjectWithoutVueRouter/package.json (relative path: ./src/components)
using description file: /Users/x/Desktop/weex/EmergencyCommandProjectWithoutVueRouter/package.json (relative path: ./src/components/CustomButton)
no extension
Field 'browser' doesn't contain a valid alias configuration
/Users/x/Desktop/weex/EmergencyCommandProjectWithoutVueRouter/src/components/CustomButton doesn't exist
.js
Field 'browser' doesn't contain a valid alias configuration
/Users/x/Desktop/weex/EmergencyCommandProjectWithoutVueRouter/src/components/CustomButton.js doesn't exist
.json
Field 'browser' doesn't contain a valid alias configuration
/Users/x/Desktop/weex/EmergencyCommandProjectWithoutVueRouter/src/components/CustomButton.json doesn't exist
as directory
/Users/x/Desktop/weex/EmergencyCommandProjectWithoutVueRouter/src/components/CustomButton doesn't exist
[/Users/x/Desktop/weex/EmergencyCommandProjectWithoutVueRouter/src/components/CustomButton]
[/Users/x/Desktop/weex/EmergencyCommandProjectWithoutVueRouter/src/components/CustomButton.js]
[/Users/x/Desktop/weex/EmergencyCommandProjectWithoutVueRouter/src/components/CustomButton.json]
[/Users/x/Desktop/weex/EmergencyCommandProjectWithoutVueRouter/src/components/CustomButton]
@ /usr/local/lib/node_modules/weex-toolkit/node_modules/weex-previewer/node_modules/weex-builder/node_modules/weex-vue-loader/lib/script-loader.js!/usr/local/lib/node_modules/weex-toolkit/node_modules/weex-previewer/node_modules/weex-builder/node_modules/babel-loader/lib!/usr/local/lib/node_modules/weex-toolkit/node_modules/weex-previewer/node_modules/weex-builder/node_modules/weex-vue-loader/lib/selector.js?type=script&index=0!./Desktop/weex/EmergencyCommandProjectWithoutVueRouter/src/components/Map.vue 7:20-45
@ ./Desktop/weex/EmergencyCommandProjectWithoutVueRouter/src/components/Map.vue?entry=true

运行weex preview 命令就报错，在Playground上可以正确显示

hhhhh?

@LionBuer looks like the preview command can't resolve ./CustomButton module, if your project is created by weex-toolkit, you'd better use npm start command to preview your page.

@LionBuer looks like the preview command can't resolve ./CustomButton module, if your project is created by weex-toolkit, you'd better use npm start command to preview your page.

当我使用  npm start 命令的时候，不能实现在移动端客户端实时刷新的效果，必须手动退出页面再次重新进入。但是在浏览器上是有实时刷新的效果的。
而 preview 命令能实现在移动端客户端实时刷新的效果。
我怎么才能实现使用npm start命令在移动端客户端实时刷新的效果？？？

@LionBuer It doesn't support now, maybe you can check why the webpack can't found your local module.
The previewer and builder function of weex-toolkit has many problems, and we have been work on the<EMAIL_ADDRESS>it will come soon.

@LionBuer The feature has been supported on latest weex official template, you can re-create your project using the latest weex template and the weex playground app.
No active issue, I will close it.


Screen Readers tab to the second displayed panel instead of the main content.

Bug Report
Description
When using the Slide Panel, the first content that gets accessed when browsing with the arrow keys is the panel content instead of the main content. Most likely, it should be the main content that is accessed first.

Resolved in https://github.com/cerner/terra-framework/pull/289


UART interface between dongle uC and transciever

Hi @mattdibi
Got a general question about the comms interface between the uC running QMK firmware and the transciever. As I understand it, the interface is pretty simple — the dongle writes s and gets 11 bytes in return.
It looks like the 0.16.x redox_w firmware issue (https://github.com/qmk/qmk_firmware/issues/16553) was caused by switching QMK's UART routines from non-blocking to blocking.
It looks like QMK firmware often writes the first byte, but then it either doesn't successfully send it or the the response doesn't come through. In turn, QMK is stuck waiting for UART data to arrive. That's the reason for the keyboard freeze.
As a general idea (and based on your experience), would it make sense to add status or a healthcheck command to the transciever? In this case nRF could respond to indicate whether it's good to go or not. This I guess could be queried on each matrix scan in QMK and shown on LEDs if an unexpected state is reached.
This PR https://github.com/qmk/qmk_firmware/pull/17203 resolves the issue.

Thanks, It's works for my redox_w keyboard.
I applied the pr in my local qmk msys environment and successfuly compiled the available firmware(use JSON file generated by qmk configurator then use json2c to convert it to keymap.c).


Can not dismiss "No update available" window if opening menu again before the update check finishes

Description
So I just discovered a weird little issue. If I use "check for updates" from the menu, and before the window pops up I open the Atom-menu again I can not dismiss the "No updates available" window neither press something in the menu. The only way to exit Atom is to kill the process using Activity Monitor.

It happens in safe mode as well.
I am running version 1.10.2
No error pops up
Trying to close in any other way that using Activity Monitor fails.

I am using a Macbook Pro Retina 13" (late 2013) with MacOS 10.12 (sierra) installed.
Steps to Reproduce

Open Atom.
Go to Atom menu and select "Check for Update"
Before the window appears (telling you there are no updates) open the Atom menu again.
Wait a bit.
When the update-check window appears try to click whatever. It is no longer possible to close the menu, ok the update-check window.

Versions
Atom    : 1.10.2
Electron: 0.37.8
Chrome  : 49.0.2623.75
Node    : 5.10.0

I can not reproduce this on Atom 1.10.2 Windows 7. I am able to dismiss the No Updates Available dialog.

Here's a video with the issue reproduced on my Mac. I did however also find out that if you click "Ok" enough times (20-30 times or more, seems to vary) it will eventually close.
atom-bug-update-check.zip
(I could not upload the .mov, so I zipped it, contains only a small screen recording of the issue in action).

I was able to reproduce this issue. I was not able to close the dialog, no matter how many times I clicked "OK".
MacOS Sierra 10.12
Atom: 1.11.0
Electron: 0.37.8
Chrome: 49.0.2623.75
Node: 5.10.0

Still happens on 1.11.1, just got the updated and tested it (did not expect it to be fixed, just wanted to update on that).

I have successfully reproduced this in Atom 1.11.1 on macOS 10.12. Looks like a bug in Electron. I'll investigate further, and follow up here once I know more.

This seems to have been already fixed, closing the issue


feat(words): add words

word

interpolable
https://ejje.weblio.jp/content/interpolable

publically
https://ejje.weblio.jp/content/publically

collinearity
https://ejje.weblio.jp/content/collinearity

postprocessor
https://ejje.weblio.jp/content/postprocessor

@kenji-miyake Thank you for suggesting alternative form of words!
At first, I'll try to replate the words to them in code and check if cspell occurs no error about them.
After that, I'll determine whether delete these words or edit to alternative form of these words.


Particle Position Scale

Explanation: Simulations on a large enough scale get some memory leak error and do not work.
Example: Supernova (Scale from -1e10 to 1e10 (20,000,000,000 units apart at farthest points).
Temp Fix: Scale down by dividing until realistic scale (at what scale does this start becoming an issue?)

I know why like this. so talk to me first

We should check it in the Elad new code


cmd/compile: evaluate map initializers incrementally

func g() int
func f() map[int]int {
	return map[int]int{
		1: g(),
		2: g(),
		3: g(),
	}
}

The generated assembly does essentially:
    m = make(map[int]int)
    v1 = g()
    v2 = g()
    v3 = g()
    m[1] = v1
    m[2] = v2
    m[3] = v3

It would be better to evaluate the function g just before we need its result.  So instead, do:
    m = make(map[int]int)
    v1 = g()
    m[1] = v1
    v2 = g()
    m[2] = v2
    v3 = g()
    m[3] = v3

It should be safe to do so, as when we're constructing m no one but the current stack frame has a reference to it, so g can't see the difference.
See #26546 for an instance where this matters.

Are there order-of-evaluation guarantees for map literals? If so, the difference might be observable if one of the calls to g() panics.

If g() panics, the map literal should be inaccessible. So I think it should be fine.

We do need to respect order of evaluation, so there are tricky cases like:
func f() map[int]int {
	return map[int]int{
		k1(): v1(),
		k2(): v2(),
		k3(): v3(),
	}
}

Spec says the eval order must be k1,v1,k2,v2,k3,v3.  But that should work fine with incremental building.

Punting to 1.13, too late for anything major in 1.12.

I just found an internal compiler error with this commit which I've posted to: https://github.com/golang/go/issues/31777


pull_image leaves left over untagged images on update

pull_image should call the remove_image with the original image id if the resource has been updated. this should be an option for docker_image, 'prune_on_update' default to true.

i dont think this is a viable option for docker_image now that I have looked further into it. if there is a container running from the original image, you will be unable to prune it.
a couple of options

create a new resource that prunes all images based off of the repotags == [':']
same as 1 except we make it part of docker_container or docker_images, this would prune all images even if it never belonged to the resource.
we close this, document the behavior, and leave it up to the discretion of ops to do clean up.

We handle this clean with a recipe that drops https://github.com/spotify/docker-gc into cron.daily or cron.hourly
It has some logic there to only remove unused images

thanks for that @rtrauntvein! this sways me in the direction of creating a docker_gc resource that functions the same way; with an exclude array for containers and images.

Does the docker cli behave the same way?
Also, while I like the idea of a docker_gc resource... I'd rather not add something like that right now.
Scope creep is a hell of a drug

Closing this for now, since there doesn't seem to be anything actionable to do in docker_image at the moment


Cannot read property ""'updateStepElement'"" of undefined introjs

To update the Dynamic elements as mentioned in the docs I tried using it in following manner:
To do that, you can use the updateStepElement() API and pass to it the index of the step to update:
<Steps
enabled={stepsEnabled}
steps={steps}
ref={steps => (this.steps = steps)}
/>
onBeforeChange = nextStepIndex => {
if (nextStepIndex === 4) {
this.steps.updateStepElement(nextStepIndex);
}
}
I keep receiving this error:
Uncaught TypeError: Cannot read property 'updateStepElement' of undefined
Can you please give a proper guide to how to use this? Have been stuck for a few days now

I made a small example available here altho from the Cannot read property 'updateStepElement' of undefined error, it looks like your React ref to the <Steps /> component is undefined so unrelated to this library I guess.


broken link on openai page

On page https://learn.microsoft.com/en-us/azure/cognitive-services/openai/concepts/models the link in text "You can easily see the models you have available for both inference and fine-tuning in your resource by using the Models API." is broken! please fix it. Thanks.

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

ID: 25c15e01-3578-c4ae-afbc-32c7172173d0
Version Independent ID: 0d20fad8-0e13-2d85-64e5-31861fabdcdd
Content: Azure OpenAI models - Azure OpenAI
Content Source: articles/cognitive-services/openai/concepts/models.md
Service: cognitive-services
GitHub Login: @ChrisHMSFT
Microsoft Alias: chrhoder

@krusejan
Thanks for your feedback! We will investigate and update as appropriate.

@krusejan
I've delegated this to @ChrisHMSFT , a content author, to review and share their valuable insights.

@krusejan  i am unable to reproduce this issue. when i click on the link it brings me to the models API ref docs. Can you confirm you are still seeing this issue?

It's fixed now, thank you.
ChrisHMSFT @.***> schrieb am Mo., 30. Jan. 2023, 15:45:

@krusejan https://github.com/krusejan i am unable to reproduce this
issue. when i click on the link it brings me to the models API ref docs.
Can you confirm you are still seeing this issue?
—
Reply to this email directly, view it on GitHub
https://github.com/MicrosoftDocs/azure-docs/issues/104373#issuecomment-1408747888,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AFZBV4RVLGMH5QDUOP5SNXDWU7HYTANCNFSM6AAAAAAUIR7KPI
.
You are receiving this because you were mentioned.Message ID:
@.***>

#please-close


Update box images

Hi @EmanHerawy
@DiscRiskandBisque created these images combining Hyperledger and Drizzle logos

Hi @cds-amal
Thanks so much, I'm going to resolve the merge conflict now and merge your PR


Profile Page tolowerCase Issue #1276

Description
Fixed That  to_lowercase Issue
Fixes #1276
Replace issue_no with the issue number which is fixed in this PR
Screenshots

Checklist

[X ] Tests have been added or updated to cover the changes
[ X] Documentation has been updated to reflect the changes
[X ] Code follows the established coding style guidelines
[X ] All tests are passing

hey @thestarsahil please merge this pr as well as it will fix all issues of profile section


Updates on CMultiSelect dynamic options

Any news about what reported here?

Will be fixed in the next release.

Still not working in 4.4.0.


Add blacklisted_files_regex files capability

Working towards https://github.com/owncloud/web/issues/8123 via https://github.com/owncloud/ocis/issues/1323

@micbar is this allowed to go into edge or is this still forbidden because of the upcoming release?

edge is fine.


Fix CLI issues with unicode

Description:
fixes #725
Checklist:

[x] My PR is ready for code review
[x] I have added some tests, if applicable, and run the whole test suite, including linting tests
[x] I have updated the documentation, if applicable

Codecov Report

Merging #727 into develop will decrease coverage by 0.07%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           develop    #727      +/-   ##
==========================================
- Coverage    87.98%   87.9%   -0.08%
==========================================
  Files           65      65
  Lines         3853    3853
  Branches       736     735       -1
==========================================
- Hits          3390    3387       -3
- Misses         353     355       +2
- Partials       110     111       +1


[Windows] On screen keyboard pops up abnormally on touch screen tablets

screen keyboard pops up abnormally on the Surface tablet
It will not pop up for the first time. You need to manually click the keyboard icon on the taskbar. After that, any click on the position on the software will evoke the on-screen keyboard.
Sample demo video: video
Sample code repository: https://github.com/yh4922/flutter_keyboard_test
Hardware platform
Processor	Intel(R) Core(TM) i5-8350U CPU @ 1.70GHz   1.90 GHz
Installed RAM	8.00 GB
System type	64-bit operating system, x64-based processor
Pen and touch	Pen and touch support with 10 touch points

When you click button, you need to unfocus from textfield
or
you can use below code in button click
FocusScope.of(context).requestFocus(FocusNode());

When you click button, you need to unfocus from textfield or you can use below code in button click FocusScope.of(context).requestFocus(FocusNode());

I modified my code, but it doesn't work, and the onscreen keyboard doesn't hide when I use unfoucs, I think it might be an issue with the flutter engine

@selvam920
I also found a phenomenon, when I call methods such as showDialog or Navigator, any click on the screen will pop up the on-screen keyboard

Hi @yh4922, Thanks for filing the issue. I ran the below code sample on a Windows Desktop in tablet mode but could not see the keyboard normally popping up. I suspect this is something that happens only on surface tablets. Please share a minimal and complete reproducible code along with the output of flutter doctor -v to investigate further.

code sample
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              'You have pushed the button this many times:',
            ),
            const TextField(),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
            ElevatedButton(
                onPressed: () {
                  FocusScope.of(context).unfocus();
                },
                child: Text('UnFocus')),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ),
    );
  }
}

flutter doctor -v
[√] Flutter (Channel stable, 2.10.2, on Microsoft Windows [Version 10.0.19044.1526], locale en-US)    • Flutter version 2.10.2 at C:\flutter_sdk\stable
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 097d3313d8 (6 days ago), 2022-02-18 19:33:08 -0600
    • Engine revision a83ed0e5e3
    • Dart version 2.16.1
    • DevTools version 2.9.2

[√] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at C:\Users\mahesh\AppData\Local\Android\sdk
    • Platform android-31, build-tools 31.0.0
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189)
    • All Android licenses accepted.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[√] Visual Studio - develop for Windows (Visual Studio Community 2019 16.11.4)
    • Visual Studio at C:\Program Files (x86)\Microsoft Visual Studio\2019\Community
    • Visual Studio Community 2019 version 16.11.31727.386
    • Windows 10 SDK version 10.0.19041.0

[√] Android Studio (version 2020.3)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189)

[√] VS Code (version 1.64.2)
    • VS Code at C:\Users\mahesh\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.34.0

[√] Connected device (4 available)
    • Android SDK built for x86 (mobile) • emulator-5554 • android-x86    • Android 11 (API 30)
      (emulator)
    • Windows (desktop)                  • windows       • windows-x64    • Microsoft Windows
      [Version 10.0.19044.1526]
    • Chrome (web)                       • chrome        • web-javascript • Google Chrome
      98.0.4758.102
    • Edge (web)                         • edge          • web-javascript • Microsoft Edge
      98.0.1108.56

[√] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!

@maheshmnj
flutter doctor -v
$ flutter doctor -v
╔════════════════════════════════════════════════════════════════════════════╗                                       l
║ A new version of Flutter is available!                                     ║
║                                                                            ║
║ To update to the latest version, run "flutter upgrade".                    ║
╚════════════════════════════════════════════════════════════════════════════╝

Flutter assets will be downloaded from https://storage.flutter-io.cn. Make sure you trust this source!
[√] Flutter (Channel stable, 2.10.1, on Microsoft Windows [Version 10.0.19044.1415], locale zh-CN)
    • Flutter version 2.10.1 at D:\flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision db747aa133 (2 weeks ago), 2022-02-09 13:57:35 -0600
    • Engine revision ab46186b24
    • Dart version 2.16.1
    • DevTools version 2.9.2
    • Pub download mirror https://pub.flutter-io.cn
    • Flutter download mirror https://storage.flutter-io.cn

[√] Android toolchain - develop for Android devices (Android SDK version 32.1.0-rc1)
    • Android SDK at C:\Users\13710\AppData\Local\Android\sdk
    • Platform android-32, build-tools 32.1.0-rc1
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6842174)
    • All Android licenses accepted.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[√] Visual Studio - develop for Windows (Visual Studio 生成工具 2019 16.11.9)
    • Visual Studio at C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools
    • Visual Studio 生成工具 2019 version 16.11.32106.194
    • Windows 10 SDK version 10.0.19041.0

[√] Android Studio (version 4.2)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6842174)

[√] VS Code (version 1.64.2)
    • VS Code at C:\Users\13710\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.34.0

[!] Proxy Configuration
    • HTTP_PROXY is set
    ! NO_PROXY is not set

[√] Connected device (3 available)
    • Windows (desktop) • windows • windows-x64    • Microsoft Windows [Version 10.0.19044.1415]
    • Chrome (web)      • chrome  • web-javascript • Google Chrome 98.0.4758.102
    • Edge (web)        • edge    • web-javascript • Microsoft Edge 98.0.1108.50

[√] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 1 category.

my surface also does not pop up the input box normally when I click TextField for the first time. I need to manually click the keyboard icon on the taskbar in the lower right corner, and then click TextField to pop up the keyboard.

and the onscreen keyboard doesn't hide when I use unfocus, I think it might be an issue with the flutter engine

This issue is being tracked here https://github.com/flutter/flutter/issues/97269

my surface also does not pop up the input box normally when I click TextField for the first time. I need to manually click the keyboard icon on the taskbar in the lower right corner, and then click TextField to pop up the keyboard.

I can confirm this, keyboard pop-ups on manually clicking the keyboard icon.
But I am not able to reproduce this behavior "keyboard popping up abnormally" as shown in your video output. can you share a minimal reproducible code sample which reproduces this behavior?

@maheshmnj
https ://github.com/yh4922/flutter_keyboard_test
This code repository is the code of the sample program

Thanks for the code sample @yh4922, I am unable to reproduce the issue in tablet mode on a windows machine. It looks like this issue manifests on surface tablets or more specifically on windows devices with touch capabilities.
https://user-images.githubusercontent.com/31410839/156166815-9ca3ae27-a67e-4540-9566-fc4d4d0bb246.mp4

code sample
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);
  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  TextEditingController controller = TextEditingController();
  FocusNode focusNode = FocusNode();
  bool isFocused = false;

  @override
  void initState() {
    super.initState();
    focusNode.addListener(() {
      setState(() {
        isFocused = focusNode.hasFocus;
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text('focusNode.hasFocus: $isFocused'),
            TextField(
              controller: controller,
              focusNode: focusNode,
            ),
            const SizedBox(height: 20),
            Row(
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                ElevatedButton(
                  onPressed: () {
                    FocusScope.of(context).requestFocus(FocusNode());
                  },
                  child: const Text('unfocus'),
                ),
                const SizedBox(width: 20),
                ElevatedButton(
                  onPressed: () {
                    Navigator.of(context)
                        .push(MaterialPageRoute(builder: (context) {
                      return const NewsPage();
                    }));
                  },
                  child: const Text('go to news page'),
                ),
              ],
            )
          ],
        ),
      ),
    );
  }
}

class NewsPage extends StatefulWidget {
  const NewsPage({Key? key}) : super(key: key);

  @override
  _NewsPageState createState() => _NewsPageState();
}

class _NewsPageState extends State<NewsPage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('new pages'),
      ),
      body: const Center(
        child: Text('new pages'),
      ),
    );
  }
}

flutter doctor -v
[√] Flutter (Channel stable, 2.10.2, on Microsoft Windows [Version 10.0.19044.1526], locale en-US)    • Flutter version 2.10.2 at C:\flutter_sdk\stable
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 097d3313d8 (6 days ago), 2022-02-18 19:33:08 -0600
    • Engine revision a83ed0e5e3
    • Dart version 2.16.1
    • DevTools version 2.9.2

[√] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at C:\Users\mahesh\AppData\Local\Android\sdk
    • Platform android-31, build-tools 31.0.0
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189)
    • All Android licenses accepted.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[√] Visual Studio - develop for Windows (Visual Studio Community 2019 16.11.4)
    • Visual Studio at C:\Program Files (x86)\Microsoft Visual Studio\2019\Community
    • Visual Studio Community 2019 version 16.11.31727.386
    • Windows 10 SDK version 10.0.19041.0

[√] Android Studio (version 2020.3)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189)

[√] VS Code (version 1.64.2)
    • VS Code at C:\Users\mahesh\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.34.0

[√] Connected device (4 available)
    • Android SDK built for x86 (mobile) • emulator-5554 • android-x86    • Android 11 (API 30)
      (emulator)
    • Windows (desktop)                  • windows       • windows-x64    • Microsoft Windows
      [Version 10.0.19044.1526]
    • Chrome (web)                       • chrome        • web-javascript • Google Chrome
      98.0.4758.102
    • Edge (web)                         • edge          • web-javascript • Microsoft Edge
      98.0.1108.56

[√] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!

Leaving this issue open for further investigation from the team.

@maheshmnj
yes i am using it on a touch device

Hello, I'm encoutering the same problem.
I'm using a Windows Tablet with a touch screen.
After some investigation we found 2 issues :

When I'm in debug mode : the keyboard is never showing no matter what i'm doing (even if I touch a textfield)
When I'm in release mode, as soon as I click on a TextField the keyboard always pops up when I touch the screen (no matter if it's a TextField or not)

Having the same problem, as soon as I click a text field the keyboard pops up randomly when clicking on containers/buttons/changing screens. Once a text field summons it, it will continue to pop up when not wanted.

Resolved my issue.
If the user types in the text fields that trigger the keyboard and uses the keyboard enter key to change the focus then the keyboard would retract when the focus ends on an ElevatedButton.
But if they closed the keyboard with the keyboard close button or navigate to the next screen with the keyboard shown, tapping anywhere on the next screen, which uses containers, text and images only, triggers the keyboard repeatedly.
Closing the keyboard hides it until the next tap.
Pressing Tab on the touch keyboard then makes it retract and not pop up again.
To solve this I placed a transparent ElevatedButton on the second screen and forced it's focus. Then it doesn't matter what the user does to the keyboard before navigating to the second screen. The focus on the ElevatedButton on the second screen retracts the keyboard.

how can i fix this windows keyboard issue?
every screen keyboard popping up  without calling textfield

how can i fix this windows keyboard issue? every screen keyboard popping up without calling textfield

Resolve I don't know but my workaround seems to work.. force the focus on a transparent ElevatedButton
ElevatedButton(
              onPressed: () {},
              child: SizedBox(),
              autofocus: true,
              style: ElevatedButton.styleFrom(
                  primary: Colors.transparent,
                  shadowColor: Colors.transparent,
                  surfaceTintColor: Colors.transparent),
            )

this is not proper way
any one have proper way? or need to wait for flutter to fix

Any updates or any news on this ?

On Windows 11, this can be reproduced when this setting is turned ON, on a touch-screen device, with no keyboard connected:

Press Win+I to open Windows Settings.
Click on the Time & language tab.
Click the Typing menu on the right side.
Expand the Touch keyboard section.
Tick the Show the touch keyboard when there’s no keyboard attached checkbox.

(which I found in this article:
https://www.thewindowsclub.com/make-windows-10-show-touch-keyboard-automatically)

Hi, is there any solution for this problem?

Having had a play, I've found that calling FocusManager.instance.primaryFocus?.unfocus(); results in this error where as FocusManager.instance.primaryFocus?.nextFocus(); seems to work as expected. I'm not sure what this tells us about where the error is.

Any news on this issue ?

please fix this issue, i'm facing the same one here

Seeing this issue as well.

how can i fix this windows keyboard issue? every screen keyboard popping up without calling textfield

Resolve I don't know, but my workaround seems to work.. force the focus on a transparent ElevatedButton
ElevatedButton(
              onPressed: () {},
              child: SizedBox(),
              autofocus: true,
              style: ElevatedButton.styleFrom(
                  primary: Colors.transparent,
                  shadowColor: Colors.transparent,
                  surfaceTintColor: Colors.transparent),
            )

it work for me in my demo, but in my project it is hard to solve all problem.
I upgrade to flutter 3.10.5, when I touch textFiled, on screen keyborad show. but navigator to second route, still has problem, touch any position, on screen keyboard will show.
when I change windows focus, like focus on File explorer, then focus on flutter_demo.exe, can solve, touch any position, on screen keyboard will not show.
@maheshmnj  I guess flutter on windows platform, when textfiled dispose, but it still hold something about input on Windows.
I hope can fix this issue quickly, Windows Tablet with a touch screen device is important for flutter.

We have confirmed that if any of the page or dialog widgets have autofocus set, the problem of the touch keyboard appearing at any time due to an abnormality in focus does not occur.
The problem is when there is no widget to set 'autofocus: true' to.
Tested on Microsoft Surface.

Facing the same issue here, any progress

I also encountered the same issue , is there any progress?

I also encountered the same issue , is there any progress?

As long as there is a touch screen on Windows and there is no external keyboard to display the soft keyboard setting, this problem will be encountered, and the soft keyboard will repeatedly pop up. We hope the official takes this issue seriously.

Is there any solution yet? I am facing the same issue!

I workaround this issue by use RouteObserver in MaterialApp
And then add the bellow code to the didPush function.
FocusManager.instance.primaryFocus?.unfocus();
SystemChannels.textInput.invokeMethod('TextInput.hide');

I faced the same problem before, then I wrapped the TextField in a Container and the problem was resolved.

Hello, I found a great package to help with the problem of the keyboard not closing automatically. Here is the package: https://pub.dev/packages/flutter_osk_x

any progress?

Two years and not a inch of a progress?

Here is a solution that I am currently using for the release version of the app:
1. First created an EmptyButton Widget
`class EmptyButton extends StatelessWidget {
final FocusNode? focusNode;
const EmptyButton({
Key? key,
this.focusNode,
}) : super(key: key);
@override
Widget build(BuildContext context) {
logger("EMPTY_BUTTON");
return ElevatedButton(
focusNode: focusNode,
onPressed: () {},
autofocus: true,
style: ElevatedButton.styleFrom(
fixedSize: Size.zero,
backgroundColor: Colors.transparent,
shadowColor: Colors.transparent,
surfaceTintColor: Colors.transparent),
child: const SizedBox(height: 0));
}
}
**2. Now go to the page and add this button with invisible size like this:** SizedBox(
height: 1.h,
width: .5.w,
child: const EmptyButton()),`
Put this snippet in every page or every widget/class, so that the auto keyboard disappear.
I give some example :
SpacedRow(           mainAxisAlignment: MainAxisAlignment.spaceBetween,           children: [             SizedBox(                 height: 1.h,                 width: .5.w,                 child: const EmptyButton()),             _buildLeftCart(contxt),             _buildMidSec(contxt),             _buildRightSec2(contxt),           ],         )
  `Container(
            padding: EdgeInsets.only(left: 12.w, top: 8.h, right: 12.w),
            child: SpacedColumn(children: [
              SizedBox(height: 1.h, child: const EmptyButton()),
              _buildBodySec(context)
            ]))`

Just came across this issue myself, it is two years old, any fixes yet, flutter devs?

Just came across this issue myself, it is two years old, any fixes yet, flutter devs?

Unfortunately not.

Ok Thank You

faced the same issue, please fix it, when navigate to another page with go router the bug appears, and the keyboard appears on every touch on the touchscreen

Any update in regards to this issue?


mystery squares: missing hemispheres when drawing sparse external json

In this test, I have 5 squares arranged in a quincunx, with the center over null island:
http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares.yaml&lib=0.8#14/0/0
If I hide any of the other squares, whether with a data filter:
http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares1.yaml&lib=0.8#14/0/0
or a visible: false:
http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares2.yaml&lib=0.8#14/0/0
the center square is still drawn, as expected.
BUT if I remove any of the other squares from the data source, the portion of the center square in that semihemisphere is not drawn:
http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares3.yaml&lib=0.8#14/0/0
http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares4.yaml&lib=0.8#14/0/0
http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares5.yaml&lib=0.8#14/0/0
http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares6.yaml&lib=0.8#14/0/0
This is seen with any combination of semihemispheres:
http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares7.yaml&lib=0.8#14/0/0
http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares8.yaml&lib=0.8#14/0/0
... which means if the center square is the only shape in the data source, it will not be drawn:
http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares9.yaml&lib=0.8#14/0/0
This behavior is seen with versions of the library back to least v0.4.

+1

On Jun 16, 2016, at 18:15, Peter Richardson<EMAIL_ADDRESS>wrote:
In this test, I have 5 squares arranged in a quincunx, with the center over null island:
http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares.yaml&lib=0.8#14/0/0
If I hide any of the other squares, whether with a data filter:
http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares1.yaml&lib=0.8#14/0/0
or a visible: false:
http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares2.yaml&lib=0.8#14/0/0
the center square is still drawn, as expected.
BUT if I remove any of the other squares from the data source, the portion of the center square in that semihemisphere is not drawn:
http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares3.yaml&lib=0.8#14/0/0
http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares4.yaml&lib=0.8#14/0/0
http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares5.yaml&lib=0.8#14/0/0
http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares6.yaml&lib=0.8#14/0/0
This is seen with any combination of semihemispheres:
http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares7.yaml&lib=0.8#14/0/0
http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares8.yaml&lib=0.8#14/0/0
... which means if the center square is the only shape in the data source, it will not be drawn:
http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares9.yaml&lib=0.8#14/0/0
This behavior is seen with versions of the library back to least v0.4.
―
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

Maybe the winding orders aren't consistent?
On Thu, Jun 16, 2016 at 10:01 PM, Nathaniel V. KELSO <
<EMAIL_ADDRESS>wrote:

+1

On Jun 16, 2016, at 18:15, Peter Richardson<EMAIL_ADDRESS>wrote:
In this test, I have 5 squares arranged in a quincunx, with the center
over null island:

http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares.yaml&lib=0.8#14/0/0

If I hide any of the other squares, whether with a data filter:

http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares1.yaml&lib=0.8#14/0/0

or a visible: false:

http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares2.yaml&lib=0.8#14/0/0

the center square is still drawn, as expected.
BUT if I remove any of the other squares from the data source, the
portion of the center square in that semihemisphere is not drawn:

http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares3.yaml&lib=0.8#14/0/0

http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares4.yaml&lib=0.8#14/0/0

http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares5.yaml&lib=0.8#14/0/0

http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares6.yaml&lib=0.8#14/0/0

This is seen with any combination of semihemispheres:

http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares7.yaml&lib=0.8#14/0/0

http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares8.yaml&lib=0.8#14/0/0

... which means if the center square is the only shape in the data
source, it will not be drawn:

http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares9.yaml&lib=0.8#14/0/0

This behavior is seen with versions of the library back to least v0.4.
―
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/tangrams/tangram/issues/331#issuecomment-226662407,
or mute the thread
https://github.com/notifications/unsubscribe/AABBXdGgIAKkLfiBi_d3T98Uuln_6cBgks5qMf_kgaJpZM4I3888
.

According to my math they're consistent – they were all drawn the same way,
using the geojson.io editor.
On Fri, Jun 17, 2016 at 12:55 PM, Brett Camper<EMAIL_ADDRESS>wrote:

Maybe the winding orders aren't consistent?
On Thu, Jun 16, 2016 at 10:01 PM, Nathaniel V. KELSO <
<EMAIL_ADDRESS>wrote:

+1

On Jun 16, 2016, at 18:15, Peter Richardson<EMAIL_ADDRESS>wrote:
In this test, I have 5 squares arranged in a quincunx, with the center
over null island:

http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares.yaml&lib=0.8#14/0/0

If I hide any of the other squares, whether with a data filter:

http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares1.yaml&lib=0.8#14/0/0

or a visible: false:

http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares2.yaml&lib=0.8#14/0/0

the center square is still drawn, as expected.
BUT if I remove any of the other squares from the data source, the
portion of the center square in that semihemisphere is not drawn:

http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares3.yaml&lib=0.8#14/0/0

http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares4.yaml&lib=0.8#14/0/0

http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares5.yaml&lib=0.8#14/0/0

http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares6.yaml&lib=0.8#14/0/0

This is seen with any combination of semihemispheres:

http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares7.yaml&lib=0.8#14/0/0

http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares8.yaml&lib=0.8#14/0/0

... which means if the center square is the only shape in the data
source, it will not be drawn:

http://tangrams.github.io/tangram-frame/?url=https://rawgit.com/tangrams/differ-tests/gh-pages/unit-tests/polygons/squares9.yaml&lib=0.8#14/0/0

This behavior is seen with versions of the library back to least v0.4.
―
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/tangrams/tangram/issues/331#issuecomment-226662407,
or mute the thread
<
https://github.com/notifications/unsubscribe/AABBXdGgIAKkLfiBi_d3T98Uuln_6cBgks5qMf_kgaJpZM4I3888

.

—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/tangrams/tangram/issues/331#issuecomment-226822782,
or mute the thread
https://github.com/notifications/unsubscribe/AAcEwoRNUY5xQ5umlbOGBrGql4R6e9JXks5qMtFpgaJpZM4I3888
.

@meetar seems the URLs for scenes and/or resources are out of date now...

This appears to be another corner case with geojson-vt returning invalid polygons -- in this case, a degenerate / zero-area triangle was being generated, our winding order detection code was skipping these rings already, but the rest of the data source was not. They should now be thrown out of the pipeline in https://github.com/tangrams/tangram/commit/3760d81dcc1e167dc602b4cbf572f17ce2c21463.
But it may be worth verifying the fixes explicitly with this test data again.

For the record the links should work again now.

Released in v0.8.1 and verified with updated links.


add logseq-opml-drummer

Submit a new Plugin to Marketplace
Plugin Github repo URL:
Github releases checklist

[x] a legal package.json file.
[x] a valid CI workflow action for Github releases. (Optional for theme plugin only)
[x] a release which includes a release zip pkg from a successful build
[x] a clear README file, ideally with an image or gif.
[x] a license in the LICENSE file.

Hi @scottrblock I found the manifest.json file is empty.

d'oh, just added @xyhp915


Fix #27 Add "path.properties" to list predicates

Here is the pull request for #27
SparqlHandler can now managed 3 new path parameters :

pathData.select : to set a specific select
pathData.distinct (boolean) : to add the DISTINCT keyword
pathData.finalClause : to add a final clause

These parameters are used by the new PropertiesHandler() list all predicates for a given path

Pull Request Test Coverage Report for Build 114

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

Totals

Change from base Build 109:
0.0%

Covered Lines:
242

Relevant Lines:
242

💛  - Coveralls

Thanks for the code review. I've done the changes

Any update on this? I believe this was blocking #31, according to a comment on #31.

Thanks a lot, apologies for the delay in merging.


snap/many: use single dockerfile for all arch values with build args

This simplification means that the image name is specified by a build argument and we only need a single dockerfile in the source tree.

I think it was just that I had a typo in snap/build.sh

Recheck

@anonymouse64 The ubuntu image is multiarch, as you can see in https://hub.docker.com/_/ubuntu/ and it is available in x86 and amd64.
You can use the same dockerfile to build both architectures. The dockerfiles in edgex-go/docker are a good example of that, even when they use alpine instead of ubuntu.

@feclare using multiarch images produces errors when using snapcraft to build the snap, so I think it's just as easy to specify the image architecture when building the file.

@anonymouse64 I didn't knew about that snapcraft issue. It makes sense now.

Actually, that problem I was mentioning doesn't appear to be a problem anymore, let me change it to just use ubuntu:16.04 and see if it passes on the CI.

@feclare looks like the ubuntu:16.04 image and using snapcraft works properly in that image, the thing that wasn't working was using the snapcore/snapcraft:stable docker image which is only published for x86.
pi@raspberrypi:~ $ docker run -it snapcore/snapcraft:stable
standard_init_linux.go:190: exec user process caused "exec format error"
pi@raspberrypi:~ $

@anonymouse64 It looks better now.
It is sad that creating multiarch dockers is not an easy task.


Annotation control page

Right now we ask users to specify the annotation area right from the start. I think it would be nicer to delay this if possible for two reasons

We can then use the already-existing tool for graphically selecting the area and overlay a "ghost" image of already uploaded images. I experimented with that way back when and it actually looks really nice if you simply create an average image across 10 or so images.
Make it lighter to setup the source.

One idea is to basically "grab" people first time they go to the annotation tool, and direct them to a "annotation control page" (which would be under admin permission). This page would enable control of the annotation area but also to change the random point generation scheme (and perhaps also put the confidence threshold here, although it does not quite fit in?) For both of these, we should give the user control as to whether they want the new settings to apply to new images. And if they propagate the changes, we should be considerate of: https://github.com/beijbom/coralnet/issues/14
i.e. to keep as much as possible of previous work. We need to look at this for each point sampling design though, as we can not compromise the randomness in general.

... and we should generate a warning if the  area is too small (say less than 1/4 of the image area).


[ASCII-2130] Add e2e test for diagnose command

What does this PR do?
Add e2e test for diagnose command json option

Motivation

Additional Notes

Possible Drawbacks / Trade-offs

Describe how to test/QA your changes

/merge


[Python][C++] How to use pyarrow in the python sub-interpreter

Describe the usage question you have. Please include as many useful details as  possible.
Hi, I want to execute the same function with different python sub-interpreter  in different threads. The function codes are like that
void f(const char *tname)
{
    PyThreadState *_ts = Py_NewInterpreter();
    // sub.swap_to_self();
    std::string code = R"PY(
import pyarrow
print("TNAME gan ni niang")

a = 0
for i in range(100000000):
    a = a+1
    )PY";

    code.replace(code.find("TNAME"), 5, tname);
    PyRun_SimpleString(code.c_str());
    Py_EndInterpreter(_ts);
}

But I get a error when I import the pyarraow in the sub-interpreter

import pyarrow.lib as _lib
ImportError: module pyarrow.lib does not support loading in sub-interpreters

Dose I use the pyarrow in a wrong way? Or It dosen't allow use in the sub-interpreters?
If the later is, will it support in the future？
If it can use in sub-interpreter, how should I do?
Component(s)
python, c++

cc @pitrou

Unfortunately, Cython support for subinterpreters is experimental and unfinished for now (see CYTHON_USE_MODULE_STATE in http://docs.cython.org/en/latest/src/userguide/source_files_and_compilation.html#c-macro-defines).
Once Cython support is finished for it, we should probably try to enable it.

I use the the subinterpreters in CPython,  not in Cython. It support for subinterpreters in the latest python version. (see in https://docs.python.org/3/c-api/init.html#sub-interpreter-support)

PyArrow uses Cython, this is why it's not compatible with sub-interpreters.

OK，I got that， thanks


feat(formula): regexextract/regexmatch/regexreplace

close #3281

Pull Request Checklist

[ ] Related tickets or issues have been linked in the PR description (or missing issue).
[ ] Naming convention is followed (do please check it especially when you created new plugins, commands and resources).
[ ] Unit tests have been added for the changes (if applicable).
[ ] Breaking changes have been documented (or no breaking changes introduced in this PR).

REGEXMATCH函数：
单元格内输入=REGEXMATCH("13912345678", "^1[3456789]\d{9}$")，结果不一致

REGEXEXTRACT函数
单元格内输入=REGEXEXTRACT(B10,"[a-Z]+")，计算结果未报错

REGEXREPLACE函数
1、单元格内输入=REGEXREPLACE("Sheets","e{2}","X")，计算结果不对


More Python implicit numerical conversions and adding .as_array()

It will be helpful to do some implicit conversions, to allow more seamless integration with Python applications.
For example if I want to use shape predictor with a rectangle object that has 32 bit integer instead of Python's long or double I get this error:
rectangle.__init__(rectangle, numpy.int32, numpy.int32, numpy.int32, numpy.int32) did not match C++ signature:

I noticed I can add e.g. irectangle to rectangles.cpp with a line like bellow to have this also work:
.def(init<boost::int32_t,boost::int32_t,boost::int32_t,boost::int32_t>( (arg("left"),arg("top"),arg("right"),arg("bottom")) ))

I was wondering if boost has a better implicit conversion for some known numeric types. Of course I could just create my rectangle with long(x) but that leaks c++ implementation to Python and the code will look foreign. The reason I had int32 was because it came from another library that is integrated with numpy and if rectangle could just accept the integer type that would have been more Pythonic. This is not just to make dlib work, because it works damn fine already, but a matter of aesthetics and convenience for Python users, and making Python a first-class user of dlib. Even better would be to accept a list (or something iterable) also as rectangle too, and it seems to also be possible with boost.

Some functions return an object that has properties, for example rectangle has top(), bottom(), ... but these objects can be easily converted to a simple numpy array like what OpenCV does. If we could have .to_array() and .to_list() defined for them, it will be less verbose when dealing with those objects than calling those accessors.

Rectangle is just an example, I am sure there are more places that will benefit from relaxing the interface, or adding some helper methods or just adding __repr__.
I have used Cython a lot to build glue layers but boost python integration is new to me, and before looking at dlib I did not even know how well it works already, with docstrings and all!
Do you think in general PRs to do this relaxation are acceptable? or you prefer to have a one-to-one relation to c++ library with API's look-and-feel?

I think you can just add a def("init", another_constructor_that_takes_int32) line to the rectangle to add an overload. This way you don't need to introduce more types.  Although a better thing to do is probably to add a new construction function that takes 4 boost::python::object instances and appropriately converts them to ints.
You can certainly submit some pull requests that make whatever you think are improvements to the python API and I'll review them.  Making the rectangle's constructor take more int types sounds like a good idea.  I'm not so sure about the to_array() API though.  Allowing someone to reference the elements of a rectangle via [0] or [1] instead of .left() or .top() does not seem like a usability improvement.  What use cases does this support?  If there are some compelling use cases then sure, but just because OpenCV does it doesn't mean it's a good idea on its own.  A lot of the API designs in OpenCV are horrible.

I also found this answer here for supporting different scalars, will work on PR.
It is not for rectangles actually but returned results that something like to_array() will help. For example after this:
    shape=predictor(g, np.array([long(x),long(y),long(x+w),long(y+h)]))

In order to get the shapes I have to read the number of elements and call a function to get that element, and more accessors to get what is inside the object again.
This is the (somewhat Pythonic) shortest way that I do it now:
    parts = [[shape.part(n).x, shape.part(n).y] for n in range(shape.num_parts)]

But this whole thing screams like C (not even C++), if the returned object could be iterated I could do this (depending on how it can be iterated):
    parts = [shape[i] for i in len(shape)]  # i.e. it has len, so no need to num_parts
    # or
    parts = [a + 1 for a in shape.to_list() if a > 3]  #  i.e. can filter in Pythonic way
    # or
    parts_str = json.dums(shape.to_list())  # and can send the json over network like any other standard json
   # or
   plt.plot(shape.to_list())

Or if I just want to find the center of eyes (assuming it is 30 to 40):
    eye_x = np.mean(shape.to_array()[30:40], axis=1)

It helps to have lists or numpy arrays (with missing values as nan) when we need to do some array transformations or matrix multiplication, on the result.
I agree OpenCV API is not the best, for example it would have been useful to override the numpy array and keep color space information somewhere. Pandas does a great job of re-using numpy arrays, so that performance is not hit but extra information is used. That is of course much more work.
In general in Python it will help tremendously if all objects are first-class (or derived from one) because many libraries will work with them out of the box. If they are some sort of container for example, it helps to have __iter__ and indexing, for standard python functions ('map', 'filter', ..) as well as other libraries (scikit-learn, nvd3, ...) to be able to use them.
Of course, the API is most important and should be well thought out, but the current API (for Python) can benefit from some of Python's strengths. Perhaps we can ask more Ptyhon users to see what they think.

There are reasonably good docs for boost::python::object here http://www.boost.org/doc/libs/1_59_0/libs/python/doc/tutorial/doc/html/python/object.html.
You could write shape=predictor(g, rectangle(x,y,x+w,y+h)) instead of shape=predictor(g, np.array([long(x),long(y),long(x+w),long(y+h)])) and it would be a lot cleaner.
But yeah, making something that returns a parts array seems like a good idea.  You can't turn the entire shape into an array though because it's got a rectangle in it as well, not just the parts.  But for example, you could add a parts property that returned a std::vectordlib::point which boost.python will turn into an iterable container (specifically a dlib.points object since there is already a mapping defined of std::vectordlib::points to dlib.points).
It would be less ideal to turn things into python lists since python lists are terribly slow.  One of the nice things about boost.python is that it allows you to return actual C++ objects back to python (e.g. std::vectordlib::point) and then when C++ functions are called with those objects you get the actual object back and there is literally no conversion, copying, or any kind of overhead.  So everything is very fast.  If instead you have an intermediate layer that is copying data from std::vectordlib::points into something else to get it to python and then back to std::vectordlib::points for each call then things are very slow.  It might not matter much for these point arrays but in general it's a huge issue, especially for any kind of image processing or numerics.  Avoiding copying is important.

Yes, I meant shape=dlib.predictor(g, dlib.rectangle(long(x),long(y),long(x+w),long(y+h))) the previous one does not work. I had to use long cast because x could be int32.
It is interesting! yes makes sense to keep it as is then. Cython does not have such mechanism.
I think a .to_array() could be better than something like .parts_array though, because 1) it will be created on the fly for those who want the array 2) we could add .to_array() to some other classes too, and api usage will be self documentary. If the class internally is already an array, it could have a .as_array() that will have no copying involved.
In a way to_array() will be just a new representation of the underlying class, while the class will be kept as is.  Will add something along those lines for review, and in the meanwhile will learn the glue layer by doing this exercise.


trunk serve misses changes

Since the addition of f55b6a1 I experience frequently the case that the watcher misses the last change.
In a normal cycle of of editing & saving, the build runs at various times. Unsynchronized with the process of editing/saving. For long running builds, this may actually cover quite a few changes, which now get dropped at the end of a build.

Yea that is expected within 1s after the build finishes. This seems to be the only robust way to mitigate all cases where a recursive / infinite build could be triggered.
The behavior of dropping queued changes is what we want; else, for a long running build, you will just have a continual stream of builds which are indistinguishable from an infinite build loop.
Also, consider the following limitation. std::fs::copy will generate "data modified" FS events on the source file (the file being copied) on some platforms. How can we distinguish that from a user saving a change to that file? There is no way.
As such, there is a period of time where we need to ignore FS events, because they will be false indicators of a data change.

I do understand the issues around that. I am not sure I have a better solution. The problem that I am currently facing is that a build takes around 20 seconds. Which means that I normally miss the last 20 seconds of my editing. I take a look at the reloaded page, and need to make another dummy change (plus 20s) to see the actual result.
The 1s cooldown isn't a blocker, purging the queue is what complicates things.
Maybe a simple first step could be to make this configurable. That way, we can leave the default as it is, but also allow people to opt-out if it's not a concern for them.

An idea just came cross my mind. I normally don't want trunk to build. Only once I am ready with my changes, I want a new build. Still, I want some tool to server that content and perform the build when needed.
So what about adding a mode where the user can control this through a remote endpoint? There could be some trunk trigger build command too, but it might also be possible to some tie that into an IDE?

I dug a bit into this, I have gut feeling that the issue with the events on copy comes from the fact that the notification also triggers on "access" changes:

An event describing non-mutating access operations on files.

IIRC, on Unix, when you access (read) a file, that triggers a change in the atime (access timestamp).
So, we should be able to just ignore this. We could still keep the cooldown, but maybe make it opt-in for people where the issue still persists.

@ctron nice! You may very well be correct about that. If we were to match the change type a bit more deeply:

https://docs.rs/notify/latest/notify/event/enum.EventKind.html
https://docs.rs/notify/latest/notify/event/enum.ModifyKind.html
https://docs.rs/notify/latest/notify/event/enum.MetadataKind.html

on that final MetadataKind, we could just ignore everything other than the WriteTime variant. If that works in a robust way, then we could remove the cooldown, and just leverage the debounce.

@ctron sorry, actually I re-visited the scenario, and this is not the case. It is indeed true that the metadata access time is changed, however the std::fs::copy operation also triggers a Modify(Data(Content)) event on the source file being copied. Moreover, 0.17.5 is already ignoring metadata changes.

That's a weird behavior. I did take another look at issues around this whole topic. IIRC notifications don't work in Linux on some remote filesystems, like CIFS/SMB/NFS. That might be the reason why in some cases (especially with WSL) it might not work. However, there's the "polling" mode of notify too. I am not sure if we can successfully detect such scenarios, but it might be worth adding some argument to enable this polling mode.

I didn't see it mentioned, but downgrading to trunk 0.17.3 resolves this issue for now.

I didn't see it mentioned, but downgrading to trunk 0.17.3 resolves this issue for now.

Unfortunately that brings back to the "build loop" issue.

I didn't see it mentioned, but downgrading to trunk 0.17.3 resolves this issue for now.

Downgrading is a good workaround for now. On Windows 11 none of the changes were detected, even when passing only one file explicitly using -w.

I didn't see it mentioned, but downgrading to trunk 0.17.3 resolves this issue for now.

Downgrading is a good workaround for now. On Windows 11 none of the changes were detected, even when passing only one file explicitly using -w.

What combination of windows are you using (pure Windows, WSL, where are files mounted?)

I didn't see it mentioned, but downgrading to trunk 0.17.3 resolves this issue for now.

Downgrading is a good workaround for now. On Windows 11 none of the changes were detected, even when passing only one file explicitly using -w.

What combination of windows are you using (pure Windows, WSL, where are files mounted?)

Just pure out-of-the-box Windows 11 with its Terminal application running PowerShell, no WSL, nor virtual mounts involved.
Works as very well when downgraded trunk.

@jrasanen I've created an experimental PR to better understand the problem. I've a hard time testing anything on Windows. So it would be great if you could give it a try: https://github.com/thedodd/trunk/pull/609
There are two options --poll and --ignore-cooldown. I would recommend to test them independently. I my expectation would be that --poll resolves the issue. As that seems to be a common way to work around that case.

Hi @ctron, thank you for the reply and the pull request.
I installed the #609 version on my Windows instance and tried it out.
The project is an empty Rust binary with no dependencies.
The Trunk command I installed using cargo install --git https://github.com/ctron/trunk --branch feature/add_poll_1 trunk.
These are the results,

Options
No other parameters
With -w

poll
Doesn't work
Doesn't work

ignore-cooldown
Works
Doesn't work

So I couldn't get the --poll to work, but --ignore-cooldown worked when the watched file or directory was not supplied. I tried Windows-style directory paths with \ and Linux style using forward-slashes.
List of commands I tried. Some might be omitted from the screen recording:

trunk serve --ignore-cooldown -w .\src\main.rs
trunk serve --ignore-cooldown -w ./src/main.rs
trunk serve --ignore-cooldown -w .\src\
trunk serve --ignore-cooldown -w ./src/
trunk serve --poll -w ./src/
trunk serve --poll -w .\src\
trunk serve --poll -w ./src/main.rs
trunk serve --poll -w .\src\main.rs
trunk serve --ignore-cooldown
trunk serve --poll

Here's a recording of the test session if you are interested.
https://github.com/thedodd/trunk/assets/13303/475cf238-2513-40db-9c83-c671bf94fdd1

Thanks for putting in all the effort! That's really helpful! Although I guess I have more questions than answers now :grinning:
So it looks like the issue is not that detecting changes doesn't work, but it might be that changes get filtered out.
If would be great if you could perform another test. For this, you will however need to install trunk again (I pushed some more changes to the branch to have more log information).
When running trunk serve, add -vv (two times is supported now). This should enable the trace level, and also show: a) which changes are detected, and b) which changes are accepted (as trigger).
With that, we might see what's going on. :crossed_fingers:

Hey, thanks for the update!
Before starting, I did the following:
$ cargo uninstall trunk
$ cargo install --git https://github.com/ctron/trunk --branch feature/add_poll_1 trunk

The observed results are identical to my previous write-up, except trace and debug logging are now enabled. It looks like --poll does nothing, and --ignore-cooldown works without the -w parameter.
I tried plain trunk serve -vv, which works. It is not in the recording, but the log file is attached to the gist below.
The logs can be found here
Here's a recording of the test session, which might or might not be helpful. Due to the GitHub file size constraints, I used a 3rd party service called Streamable, I hope it works.
I'm happy to assist further when required. Thanks!

@jrasanen Thanks for all the work you put in!
So it looks like as if plain trunk serve does work? Except that you might need to re-trigger a change after the cooldown? While --poll indeed seems to be dead, I need to check what's going on.

Ok, I made another change. --poll was definitely broken, as it ignored the events coming out of this. Also, I made the polling interval configurable, defaulting to 5s (5 seconds).
But judging from the logs, I think just disabling the cooldown should be good enough in your case too. As the changes with a plain trunk serve do get detected.

@ctron I've just tested the latest version of your branch (as of time of writing) on Windows 11 and --poll is working but --ignore-cooldown didn't seem to do anything. What's working best for me though is cargo watch -- trunk serve

--poll is working but --ignore-cooldown didn't seem to do anything

It is hard to tell without more information. "Ignore cooldown" will only make a difference if you are running into that scenario: you are making changes during compilation and expect a new build afterwards.
It would be helpful to have logs enabled with debug (e.g. -vv) and do a few controlled changes, to understand what happens.
cargo watch is like using a sledgehammer to crack a nut … it will work, but it will basically, restart trunk completely for every change. So yes, that will work. But it will also cause a lot of CPU usage, especially for bigger projects.
Change detection can be a tricky thing, especially on Windows, where you might have network drives involved, even when it's "all local". Filesystem change notifications might not work there. In any case, I would expect the log to give more details.

Hi, I also stumbled with this issue. I'm on Windows 10 22H2 19045.3570 and trunk serve never catches any changes for me starting on version 0.17.4 (0.17.3 works with no issues).
I also had issues with the watch command from nushell also doesn't work, and they are also using notify-debouncer-full, so I'm guessing there's some kind of relation here. More specifically, according to my tests:

Nushell 0.82.0 works (uses notify 4.0)
Nushell 0.83.0 does NOT work (uses notify-debouncer-full 0.2 which includes notify 6.0.1)
Nushell 0.84.0 did not change these dependencies so I didn't try it
Nushell 0.85.0 works although for some reason it takes a while to start 🤷♂ (uses notify-debouncer-full 0.3 which includes notify 6.1.0)

Nushell 0.85.0 also includes this PR which sounds extremely relevant: https://github.com/nushell/nushell/pull/10109

I haven't looked at the code, and I'm not familiar with notify or notify-debouncer-full, but I'm guessing taking a look at the PR from nushell can give some insight. Hope that helps

Just wanted to add that the current version 0.17.5 did not work for me either. I am on Windows 10 22H2 and tried to use trunk serve with leptos. No filechanges seem to be detected. Working with VSCodium.
Downgrading to trunk version 0.17.3 solved the issue for me!

@andoalon that's valuable feedback. I would still encourage you to try trunk-ng 0.17.10. Use the --ignore-cooldown option and maybe also try the --poll option.
If neither of those help, let me know too. So maybe porting trunk-ng to the notify version you mentioned makes sense.

Hi, sorry it took some time, I was busy the last couple of days 😅 @ctron
I tested trunk-ng 0.17.10 as you asked:

With --poll it worked, I didn't notice any issues
Without --poll I couldn't get it to work. I tried both with and without --ignore-cooldown,  it doesn't change the result

It does indeed seem like the version/usage of the notify/notify-debouncer-full crate(s) is the ultimate source of the issues. From what I read, in previous versions of notify, the crate tried its hardest to give the same behavior independent of the platform, but they seem to have concluded that the differences between filesystems are too big to accomplish this to a satisfactory degree, so they no longer try to achieve that uniformity, and it's on users of the crate to decide how to handle the differences.
I can't remeber where I read that, but it was something along those lines 🤔

No worries, I was pretty busy too.
I do recall something like this too. I also saw in other crates/applications (cargo watch?) that they follow a similar approach, adding --poll flag for such cases. That was the inspiration here.
Maybe the "solution" is to make this argument a bit more prominent and leave it with that. If --poll is the "fix", then so be it.

I'd to prefer to have the default "just work", but sure, I think adding --poll is a good thing, even if as a fallback for people experiencing issues with the default

Yea, I agree it would be better. Not sure we can come up with a pattern when this issues gets triggered.

Okay, I took a bit of time to compare the watch implementations between trunk and nushell, and I found the difference is the that nushell also considers (since this PR I mentioned in my original comment: https://github.com/nushell/nushell/pull/10109) events of type EventKind::Modify(ModifyKind::Any) a change (trunk only considers EventKind::Modify a change if it's of kind ModifyKind::Name(_) or ModifyKind::Data(_)).
Nushell: https://github.com/nushell/nushell/blob/7caf27b6658652f3b66f4b807aa442de83268ab1/crates/nu-command/src/filesystem/watch.rs#L254-L256
Trunk: https://github.com/thedodd/trunk/blob/7a27876ad1e38684ceb78239023a421dc1f46e84/src/watch.rs#L120
Therefore, I tried the following change in trunk:
diff --git a/src/watch.rs b/src/watch.rs
--- a/src/watch.rs
+++ b/src/watch.rs
@@ -118,5 +118,5 @@
         // Check each path in the event for a match.
         match event.event.kind {
-            EventKind::Modify(ModifyKind::Name(_) | ModifyKind::Data(_))
+            EventKind::Modify(ModifyKind::Name(_) | ModifyKind::Data(_) | ModifyKind::Any)
             | EventKind::Create(_)
             | EventKind::Remove(_) => (),

This works perfectly for me 🎉. Could you give it a try to see whether it causes any issues on your side?
PD.: nushell also has the following line right after debouncer.watcher().watch(..) which doesn't have a corresponding one in trunk
// need to cache to make sure that rename event works.
debouncer.cache().add_root(&path, recursive_mode);

https://github.com/nushell/nushell/blob/7caf27b6658652f3b66f4b807aa442de83268ab1/crates/nu-command/src/filesystem/watch.rs#L166-L167
It seems important 🤔

@andoalon many thanks for investigating that! Sure, I will give it a try!

I cherry-picked those two changes and pushed that to the trunk-ng branch: https://github.com/ctron/trunk, you should be able to install this by running:
cargo install --git https://github.com/ctron/trunk --branch trunk-ng trunk-ng

It would be great if you could check that this works on your side. I looks ok on mine. So I could test this a bit more early next week and have this part of the next release.

It works great on my side. Thank you!

There are bunch of more changes I have in that branch. I want to test them for a few more days, and then expect to release somewhere in the next few days. Thanks for the help!

It's not fixed yet, the isssue should be reopened

Fixed in release 0.18.0 (https://github.com/trunk-rs/trunk/releases/tag/v0.18.0), by https://github.com/trunk-rs/trunk/commit/a9395f4c3ecd54b834eaf010f7418bb1b57548cd


Update README.md

Improve readme for better self install (release related)

All other repos will be changed accordingly.


feat: add HEAD for response status code 304 (#501)

fixes #501. Adding HEAD for status code 304 as mentioned in RFC 7232 Section 4.1.

:+1:

:+1:


compatibility with node 0.12

Made package compatible with node 0.12, see https://strongloop.com/strongblog/node-js-v0-12-c-apis-breaking/ for details

Will this break 0.10 and 0.8 compatibility?

yes.

Is there a way of getting Travis CI to test the correct version of this package against the correct version of node? Right now, the tests fail.

I think it could be specified in the package dependencies. Will investigate.

Thanks for the package in the meantime!


Create gift with 2FA account.

Create gift from a 2FA account: It will need a 2FA.
We should not show any 2FA account.It is not working right now.

@Parsh It has started showing Savings and Donation account again.

Verified this issue on dev appv2.0.6(387)


Cannot Write to User Settings

Visual Studio Code Version : 1.72
Code Settings Sync Version : 2.83
Operating System : Windows
Occurs On: Upload
Proxy Enabled: no
GIst Id: cded2e06b33ba5e4eef72852eea0b346
[Extension Host] Error: Unable to write into user settings. Please open User Settings file to correct errors/warnings in it and try again.
at new t (file:///C:/Program Files/Microsoft VS Code/resources/app/out/vs/workbench/workbench.main.js:28:2275982)
at e.wrapError (file:///C:/Program Files/Microsoft VS Code/resources/app/out/vs/workbench/workbench.main.js:28:3035038)
at file:///C:/Program Files/Microsoft VS Code/resources/app/out/vs/workbench/workbench.main.js:28:3038872
at Object.g [as _notify] (file:///C:/Program Files/Microsoft VS Code/resources/app/out/vs/workbench/workbench.main.js:28:53561)
at Object.enter (file:///C:/Program Files/Microsoft VS Code/resources/app/out/vs/workbench/workbench.main.js:28:57126)
at n.Class.derive._creator._run (file:///C:/Program Files/Microsoft VS Code/resources/app/out/vs/workbench/workbench.main.js:28:58954)
at n.Class.derive._creator._completed (file:///C:/Program Files/Microsoft VS Code/resources/app/out/vs/workbench/workbench.main.js:28:58395)
at n.Class.derive._creator.then (file:///C:/Program Files/Microsoft VS Code/resources/app/out/vs/workbench/workbench.main.js:28:60387)
at Object.enter (file:///C:/Program Files/Microsoft VS Code/resources/app/out/vs/workbench/workbench.main.js:28:56205)
at n.Class.derive._creator._run (file:///C:/Program Files/Microsoft VS Code/resources/app/out/vs/workbench/workbench.main.js:28:58954)

[Extension Host] Error: Unable to write into user settings. Please open User Settings file to correct errors/warnings in it and try again.

Settings.json is not valid


Fix FIAM test flakes and exposed library bugs

Fix #3046.

Add a test specific cache file for logStorage so that tests don't fail because of stuff in the cache from other tests. Thanks to @ryanwilson for the suggestion and helper file implementation!
Set up the self.mockTimeFetcher currentTimestampInSeconds stub before the mock is passed to other functions.
Stop calling scheduleNextSend in the initializer since the first zero-delayed log can happen logs to happen to soon.
Remove early exit from scheduleNextSend since it can cause logs to get dropped if the first zero-length log is scheduled, the next real log gets scheduled, but the log has already been dropped because of no packets available.
Multiple spelling and wording fixes.

Tests ran cleanly except for #3102

LGTM but want to confirm that the scheduleNextSend logic change is okay and is tested with a sample app.

@ryanwilson I'm testing out an approach where it only schedules the next send on init if there are logs to be sent at that time.


Add plugin name to command descriptor

The reason i want this is so that I don’t have to store the plugin name on the IDE side when calling commandDetail. This also ties in with our "stateless philosophy".
I am not super happy with sprinkling it all over the place, but I couldn’t come up with something better. Suggestions welcome.

I am not sure this is needed.
In a given configuration we already have it, and we should be sending back a structure which is basically "for plugin 'hare' we have these commands"

Ah yeah, I just saw that we already have the plugin name in commandDetail, then we only need to change the format of the response there.


Persistence layer

Add a persistence layer that enables storing the state of a visualization in a database for later retrieval. This is intended to replace the static CSV files currently in use.

A first version of the persistence layer was merged into the master. It uses SQLite to store the state of a visualization in JSON format. It supports multiple revisions for each visualization. The database schema was modeled after MediaWiki (see https://www.mediawiki.org/wiki/Manual:Page_table and https://www.mediawiki.org/wiki/Manual:Revision_table)


CreateProcessParseCommon:786: Failed to translate

Windows Version
Microsoft Windows [Version 10.0.22621.1413]
WSL Version
<IP_ADDRESS>
Are you using WSL 1 or WSL 2?

[X] WSL 2
[ ] WSL 1

Kernel Version
<IP_ADDRESS>
Distro Version
openSUSE Tumbleweed
Other Software
Windows 11 on ARM: 10.0.22621.1413
CPU: Qualcomm Snapdragon 8cx Gen 3
Repro Steps
Run wsl after install the distro
Expected Behavior
Can mount the path
Actual Behavior
The WSL cannot mount the path to Linux distro.
Diagnostic Logs
<3>WSL (10) ERROR: CreateProcessParseCommon:786: Failed to translate C:\Users\<username>
<3>WSL (10) ERROR: UtilTranslatePathList:2721: Failed to translate C:\Program Files (Arm)\BellSoft\LibericaJDK-17-Full\bin\
<3>WSL (10) ERROR: UtilTranslatePathList:2721: Failed to translate C:\Windows\system32
<3>WSL (10) ERROR: UtilTranslatePathList:2721: Failed to translate C:\Windows
<3>WSL (10) ERROR: UtilTranslatePathList:2721: Failed to translate C:\Windows\System32\Wbem
<3>WSL (10) ERROR: UtilTranslatePathList:2721: Failed to translate C:\Windows\System32\WindowsPowerShell\v1.0\
<3>WSL (10) ERROR: UtilTranslatePathList:2721: Failed to translate C:\Windows\System32\OpenSSH\
<3>WSL (10) ERROR: UtilTranslatePathList:2721: Failed to translate C:\Program Files\Git\cmd
<3>WSL (10) ERROR: UtilTranslatePathList:2721: Failed to translate C:\Program Files (x86)\gnupg\bin
<3>WSL (10) ERROR: UtilTranslatePathList:2721: Failed to translate C:\Users\<username>\scoop\shims
<3>WSL (10) ERROR: UtilTranslatePathList:2721: Failed to translate C:\Users\<username>\AppData\Local\Microsoft\WindowsApps
<3>WSL (10) ERROR: UtilTranslatePathList:2721: Failed to translate C:\Users\<username>\AppData\Local\Programs\Microsoft VS Code\bin

Debian is works with WSL.

@AkinoKaede are you using the ARM version of Tumbleweed? It works with downloads from https://download.opensuse.org/ports/aarch64/tumbleweed/appliances. Search for WSL. You'll need to install the certificate first otherwise the appx package won't install.

Thanks.

@AkinoKaede are you using the ARM version of Tumbleweed? It works with downloads from https://download.opensuse.org/ports/aarch64/tumbleweed/appliances. Search for WSL. You'll need to install the certificate first otherwise the appx package won't install.

Thanks

Just wondering. Did you find the reason behind that "Failed to translate" issue?

Just wondering. Did you find the reason behind that "Failed to translate" issue?

No, I don't really understand how WSL works.

The list of WSL distros doesn't include SUSE aarch64 versions. See details as:
https://github.com/microsoft/WSL/blob/5db50890d53406b9910026b4b7a4c8cfcd29d3e1/distributions/DistributionInfo.json#L103-L112
So an ARM kernel won't run x86 binaries thus "Failed to translate" issues. There are sites to download ARM WSL containers. SUSE has the above mentioned link and the latest release works fine on a WinDev 2023 kit.


Implement hydration. Resolves #148

See #148. I still need to test this more thoroughly.

I tested this in a real application a bit more thorougly and it seems to work. There might be edge cases that aren't covered yet, but looks good.


Add script to create BPM automation and bug ticket

See https://github.com/Tim-Cao/work-with-script/pull/26


build error: failed to run custom build command for bonjour-sys v0.3.0

To run cargo build
error: failed to run custom build command for `bonjour-sys v0.3.0`
...
--- stderr
  wrapper.h:4:10: error: 'dns_sd.h' file not found with <angled> include; use "quotes" instead
  ./dns_sd.h:176:10: fatal error: 'dispatch/dispatch.h' file not found
  thread 'main' panicked at xxxxxx/bonjour-sys-0.3.0/build.rs:24:10:
  failed to generate dns_sd.h bindings: ClangDiagnostic("wrapper.h:4:10: error: 'dns_sd.h' file not found with <angled> include; use \"quotes\" instead\n./dns_sd.h:176:10: fatal error: 'dispatch/dispatch.h' file not found\n")
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Running environment
❯ rustup show
Default host: aarch64-apple-darwin
stable-aarch64-apple-darwin (default)
rustc 1.80.1 (3f5fd8dd4 2024-08-06)

That's interesting. Are you able to use dns-sd via CLI? Can you try doing dns-sd -B and see what happens?

That's interesting. Are you able to use dns-sd via CLI? Can you try doing dns-sd -B and see what happens?

Yes, I can run dns-sd just as following:
❯ dns-sd -B
Browsing for _http._tcp
DATE: ---Mon 26 Aug 2024---
13:06:16.742  ...STARTING...

Unfortunately, I cannot reproduce this. It builds fine with the same target on my machine and in CI.

Closing due to inactivity


[Backport] Make possible to deploy rally

A pretty well hidden error.

recheck_cit_xenial

I'll have a look at the xenial issue tomorrow.

recheck_cit_xenial -- another build didn't fail on tempest, checking if it's a consistent issue.

Ok this is ready to merge