text:
ChildProcess.spawn never ends

Issue Type: Bug
I do not know how to reproduce this but it happens quite frequently. At some point one of the extensionhost processes in the explorer is using high cpu and no memory with this as a result. the profile file was too big for upload.

VS Code version: Code - Insiders 1.39.0-insider (313ede61cbad8f9dc748907b3384e059ddddb79a, 2019-10-01T05:39:51.694Z)
OS version: Darwin x64 17.7.0

System Info

Item
Value

CPUs
Intel(R) Core(TM) i7-4980HQ CPU @ 2.80GHz (8 x 2800)

GPU Status
2d_canvas: enabledflash_3d: enabledflash_stage3d: enabledflash_stage3d_baseline: enabledgpu_compositing: enabledmultiple_raster_threads: enabled_onnative_gpu_memory_buffers: enabledoop_rasterization: disabled_offprotected_video_decode: unavailable_offrasterization: enabledskia_deferred_display_list: disabled_offskia_renderer: disabled_offsurface_synchronization: enabled_onvideo_decode: enabledviz_display_compositor: disabled_offwebgl: enabledwebgl2: enabled

Load (avg)
2, 2, 3

Memory (System)
16.00GB (0.71GB free)

Process Argv
-psn_0_5059795

Screen Reader
no

VM
0%

Extensions (68)

Extension
Author (truncated)
Version

better-comments
aar
2.0.5

cucumberautocomplete
ale
2.14.1

cypress-snippets
and
1.2.0

atlascode
atl
1.4.3

vscode-custom-css
be5
3.0.8

color-info
bie
0.5.1

markdown-mermaid
bie
1.2.0

mermaid-markdown-syntax-highlighting
bpr
1.0.1

better-toml
bun
0.3.2

twigcs
cer
1.1.0

path-intellisense
chr
1.4.2

scss-grammar-extended
dan
1.0.0

vscode-eslint
dba
1.9.1

hsnips
dra
0.0.10

eslint-disable-snippets
drK
1.2.0

gitlens
eam
10.0.1

EditorConfig
Edi
0.13.0

prettier-vscode
esb
2.3.0

file-icons
fil
1.0.19

vscode-firefox-debug
fir
2.3.3

vscode-architect
gil
0.1.0

vscode-pull-request-github
Git
0.12.0

sass-lint
gle
1.0.6

todo-tree
Gru
0.0.156

beautify
Hoo
1.5.0

rest-client
hum
0.22.2

output-colorizer
IBM
0.1.2

smarty
imp
0.3.0

svelte-vscode
Jam
0.9.2

plantuml
jeb
2.12.1

polacode-2019
jef
0.5.1

browsersync
jer
2.1.0

vscode-peacock
joh
3.1.5

vscode-commitizen
Kni
0.8.3

twig-language-2
mbl
0.8.10

plantumlpreviewer
Meb
0.6.0

git-graph
mhu
1.16.0

auto-barrel
mik
1.6.5

dotenv
mik
1.0.1

vscode-docker
ms-
0.8.1

remote-containers
ms-
0.79.0

remote-ssh
ms-
0.46.1

remote-ssh-edit
ms-
0.46.1

remote-ssh-explorer
ms-
0.46.1

vscode-remote-extensionpack
ms-
0.17.0

references-view
ms-
0.0.30

debugger-for-chrome
msj
4.12.0

ts-prop-dag
nat
1.0.6

vscode-versionlens
pfl
0.24.0

rpa-eslint-snippets
rav
0.0.2

vscode-yaml
red
0.5.3

explorer-exclude-vscode-extension
Red
1.2.0

elastic
ria
0.13.3

preview-vscode
sea
2.0.3

code-settings-sync
Sha
3.4.3

vscode-barreler
shi
0.0.1

sourcegraph
sou
1.0.14

cucumber
ste
0.12.0

gif-code-snippet
sub
1.0.2

vscode-mermaid-editor
tom
0.4.2

vscodeintellicode
Vis
1.1.9

vscode-icons
vsc
9.4.0

snippet
vsc
0.7.0

vim
vsc
1.11.0

vscode-mermaid-preview
vst
1.2.0

quokka-vscode
Wal
1.0.253

literally-html
web
0.1.1

highlight-bad-chars
wen
0.0.3

(1 theme extensions excluded)

@bm-stschneider i can verify that this happens also on linux frequently it freezes the whole PC in my case but i also don't know example what conditions are causing this but i propose to add a delay for startup of processes to stop freezing and then we could debug more

Seems related to auto attach.

is there a way to get more information on the processes running other than the obscure extensionHost process. Would also help with identifying problematic extensions maybe.

@bm-stschneider you can set the VSCODE LOG Level to get such information but its hard to filter then since the problem is not exactly reproduce able maybe you can run vscode in future with a file log

We since have a new debugger that handles auto attach in a more relaible way. Please let us know if you're still running into problems, and if so open an issue on that repo.

authors: Tyriar bm-stschneider connor4312 frank-dspeed st-schneider


text:
terminal not work, exit code: {0}

Open and terminal display message: the terminal process terminated with exit code: {0}

/duplicate of #73790
See https://github.com/microsoft/terminal/issues/1838 for screenshot showing checkbox to clear.

source: gharchive/issue

authors: digobarreto gjsjohnmurray

repo: microsoft/vscode

license: MIT

license_type: permissive

license_source: github-api


text:
Add support for auto-expand snippet

Idea is to have next label of tab completions, e.g have snippets that expand/insert themselves as soon as the prefix is typed, similar to the https://github.com/federico-terzi/espanso text expander. It could be as easy as flag when defining snippets and/or a user setting (maybe a setting per snippet prefix)

Duplicate of https://github.com/microsoft/vscode/issues/64135

authors: jrieken movermeyer


text:
Support "perspectives" like approach in VSCode

What is a Perspective?
https://www.tutorialspoint.com/eclipse/eclipse_perspectives.htm
https://www.eclipse.org/articles/using-perspectives/PerspectiveArticle.html
Considering large projects with different components (backend, frontend  projects with mix of languages) a feature similar to Eclipse IDE "perspectives" would be very useful to easy switch between the projects or scope to a section of the current project. To switch between the perspectives, a ui similar to open recent (Ctrl-R) project could be used and triggered with a shortcut (Ctrl-9). The icon in each entry can show the project's main technology (angular, c#, etc).
In the File Explorer (VSCode's Tab) a new context menu option "Create Perspective" is used to add perspectives based on a folder.
In the Sidebar a new item can be added named "Perspectives" that can list the existing perspectives with a highlight on the active one. A color can be used in the ui sidebar item or a status bar indicator similar to "Open Remote Window" with the name of the current perspective, at click will open Ctrl-9 ui mentioned above.
(Each perspective can have a picked color like in peakoc.)
If accepted this feature can extend the functions that are now present in the "remote connect" feature and maybe not generating another item in the status bar.

Benefits:

large projects can be easier managed on each component (eg: backend perspective, web app perspective, mobile app perspective)
scope to section in same project / perspective with  "Create Perspective"
keeps the same window but switches the workspace (no alt-tab jumps)
keeps the same simple/clean layout (no need for multiple sidebars clutter)

tbh, for the time being I just want a perspective so that when I'm using the terminal within VS Code I can switch to something without a directory tree, editor, etc. and just focus on the terminal. 🤷♂

@MayTheSForceBeWithYou , that one's at least maybe doable. Maybe something like:
    {
        "key": "alt+j",
        "command": [
            "workbench.action.terminal.focus",
            "workbench.action.closeSidebar",
            "workbench.action.toggleMaximizedPanel",
        ]
    }

You'll need some "when" conditions to make the toggling work. The maximization might be forever botched though. Not sure.

this is the only thing that keeps me from switching from emacs

this is the only thing that keeps me from switching from emacs

I wonder if this will ever be implemented ..
Anyway vscode is the best code editor.

@LucaGabi see https://code.visualstudio.com/updates/v1_69#_settings-profiles

This is good news. I look forward to this - especially the layout of views, etc.
I will request additional features i.e. allow switching to a suitable layout based on events. For example, I want to have to debugging focused layout of views. At least the user should get a chance to opt into this aspect.

I see that multiple profiles are supported but that would require keeping all the keyboard shortcuts and other settings in sync between multiple profiles.
The whole point of Eclipse Perspectives features is to only keep list of open views and their sizes in a single Perspective. The most important Perspectives that I'm using in Eclipse is main editor layout and debug layout which has a lot less space for the main editor area and lots of space for the variables and stack.
Eclipse also allows differentiating between current Perspective layout vs saved layout and you can drag panel edges to resize views e.g. while debugging some specific bug and want to have slightly bigger editor area or variable panel and then right click the Perspective tab and select Reset to restore the last Saved state of that Perspective. (The context menu for a Perspective should contain actions "Save", "Reset (restore last saved state)", "Save as new layout" and "Delete layout".) If one adjusts panels in a single perspective and closes the UI, the last adjusted state should be remembered after restart. In practice, that means that there's one unnamed save state for each Perspective which is automatically saved but will be overwritten without a warning when Reset action is used. And Save action simply overwrites the previous saved state with the current state of that named Perspective.
Eclipse also supports automatically switching to named Perspective when given debug configuration is launched but I don't think that's an important feature to support as long as creating and saving Perspectives is easy enough.
And I would like to add that Perspectives is not a great name for this. I think something more descriptive like "Saved editor layouts" or "Editor layout" would be better. The important part is that this is only about reconfiguring layout and opening/closing views and all the other behavior of the whole VS Code interface should stay identical.
In case you haven't seen this feature, it looks like this in Eclipse:

And I honestly think that even the add new button is not needed because one could simply right click of the existing layouts and select Save as. The add new button simply allows selecting from a list of factory default layouts such as Debug, Web, XML, Resource, Team Planning, etc.
The blue label to the right of these buttons is Eclipse Mylyn feature which I hope VS Code also copies one day...

:( sad ...

I would like very much of something like that for when I unplug a monitor from my notebook, so I could use a layout that make sense in the smaller screen.
For example, in my case my notebook has a 14" screen and i have a 29" monitor, quite different.

As @grloch mentioned above, I used Eclipse Perspectives for similar, I had two Java Perspectives with different view layouts to fit when working in wide screen and on laptop screen. In vscode I have to change the view sizes and editor groups when I switch screens.

authors: LucaGabi MayTheSForceBeWithYou chaoky gayanper gjsjohnmurray grloch mikkorantalainen narfanar sandipchitale


text:
Copy and paste from VScode to Excel replaces spaces with non-breaking spaces in .sh files

VSCode Version: 1.44.1
OS Version: Windows_NT x64 10.0.18362

Steps to Reproduce:

Create a new file in vscode with the .sh file extension or open an existing one.
Insert any words with a space character in that file. (for example I put the line foo bar).
Copy that line into excel. Then copy and paste the space character from excel into a unicode converter (e.g. https://www.branah.com/unicode-converter)
It should return   \u00a0 which is the non-breaking space in UTF-16

I am not sure if this happens in other file-types in VScode. I have only noticed it in .sh files. I have only noticed this starting today, and I believe my VScode updated today. As to why am copying things from .sh files to excel, I just happened to have a useful excel formula saved as a comment in a shell script. I tried reproducing these steps in Sublime-Text and did not have the problem.

Does this issue occur when all extensions are disabled?: Yes/No
Yes

I am also experiencing this issue with code pasted from OneNote 2016. My issue filed in vscode-docker.
Pasting formatted text from OneNote will produce non-breaking spaces until cleaned with a service like pastebin.

It's caused by copy/paste with syntax highlighting, you can disable it by editor.copyWithSyntaxHighlighting

authors: ComputerCarl bhanratt rebornix


text:
SearchEditor: Open new editor with args

I'd like to define a keybinding to open a new search editor with args like workbench.action.findInFiles. The following is what I want to define:
    {
        "key": "ctrl+shift+g",
        "command": "search.action.openNewEditor",
        "args": {
            "query": "${selectedText}",
            "filesToInclude": "${relativeFileDirname}"
        },
        "when": "editorTextFocus"
    }

Context: I work on a project which has a lot of files and directories. "Find in Files" takes a long time so I want to limit search target under a specified directory. #95420 is similar but I want to open search editors for different directories so "search.searchEditor.experimental.reusePriorSearchConfiguration": true doesn't fit my cases.

search.action.openNewEditor and search.action.openNewEditorToSide can now be called with args like:
{
	query: string,
	includes: string,
	excludes: string,
	contextLines: number,
	wholeWord: boolean,
	caseSensitive: boolean,
	regexp: boolean,
	useIgnores: boolean,
	showIncludesExcludes: boolean,
}

Note that while "query": "${selectedText}", works, the ${selectedText} variable throws if there's no selected text. By default search editors use selected text, so you can just leave this out to use selected text if it exists and nothing otherwise.

I note that there is no intellisense for the args  as of
Version: 1.46.0-insider (user setup)
Commit: 2b472d1e4aaaecdda5ca96289869f90ae82de3a1
Date: 2020-05-11T10:00:12.459Z
Electron: 7.2.4
Chrome: 78.0.3904.130
Node.js: 12.8.1
V8: 7.8.279.23-electron.0
OS: Windows_NT x64 10.0.19624

Nor is an error indicated if I omit the args key as in
   {
      "key": "alt+g",
      "command": "search.action.openNewEditor",
      "query": "flatten",
      "regexp": true,
    },

@ArturoDent unfortunately intellisense and advanced schema validation for keybinding arguments is not supported for any commands.

Hmmm, maybe I'm talking about something different things?

oh cool. added

If you know of any commands that accept arguments in keybindings.json but don't have IntelliSense then you could create issue for those commands.

@JacksonKearl Thank you for this!
I'm using this to build a "saved search" for all my TODOs, like so:
    {
        "key": "alt+k alt+t",
        "command": "search.action.openNewEditor",
        "args": {
            "query": "(TODO|NOTE|BUG):",
            "regexp": true
        },
        "when": "editorTextFocus"
    }

Now, this launches the search editor with the input box focused and the "query" selected.
After which I have to press enter to actually run the search.
And then, click the search results part to focus that area so I can use Arrow Keys / Page Up/Down to browse the results.
I want two little improvements - perform the search automatically - don't wait for me to press Enter.
And, when you've already run the search, just focus the search results for me - avoiding the need to click that area.

@dufferzafar that sounds like a good idea (have you tried out contextLines btw?), but could you open a separate issue? It’s much easier to manage work items as issues as compared to issue comments

Yeah, I tried contextLines as well, but I seem to like the initial value of 0 for this particular use case.
Issue opened: #97823

Sorry for the late comment before presumed release, but just today I discovered that you can do something similar with the workbench.action.findInFiles command.  Namely:
{
  "key": "ctrl+shift+f",
  "command": "workbench.action.findInFiles",
  "args": {
    "query": "(conc)a.",
    "replace": "boy $1 howdy",
    "triggerSearch": true,
    "filesToInclude": "",
    "isRegex": true
  }
}

The args for this command are here: https://github.com/microsoft/vscode/blob/9a987a1cd0d3413ffda4ed41268d9f9ee8b7565f/src/vs/workbench/contrib/search/browser/searchActions.ts#L163-L172
Notice that some of the args are different and some the same as those proposed above:
{
	query: string,
	includes: string,
	excludes: string,
	contextLines: number,
	wholeWord: boolean,
	caseSensitive: boolean,
	regexp: boolean,
	useIgnores: boolean,
	showIncludesExcludes: boolean,
}

I would think that for consistency purposes they should be same where possible, especially since they both can be used in keybindings.
Also note that the workbench.action.findInFiles version contains a triggerSearch arg which is very nice.
[I am also a little bummed that I just discovered this today thanks to https://stackoverflow.com/questions/62251045/workbench-view-search-vs-workbench-action-findinfiles-commands-in-vscode and that these commands are not reflected in intellisense (I'll open a new issue).]

#97823 is about triggering search when running the keybinding.

authors: ArturoDent JacksonKearl dufferzafar usernamehw wansa9


text:
Horizontal scrolling on editor tabs with Apple Trackpad acts weird

VSCode Version:
Version: 1.45.0
Commit: d69a79b73808559a91206d73d7717ff5f798f23c
Date: 2020-05-07T15:57:33.467Z
Electron: 7.2.4
Chrome: 78.0.3904.130
Node.js: 12.8.1
V8: 7.8.279.23-electron.0
OS: Darwin x64 19.4.0
OS Version: macOS 10.15.4

Steps to Reproduce:

enable "workbench.editor.scrollToSwitchTabs": true,
use Trackpad with two finger to scroll on editor tabs
see flickering

Does this issue occur when all extensions are disabled?: Yes
I think a throttle or the incoming scroll axis would be the solution here. Feels like VS Code tries to switch the tabs too fast.

/duplicate of #96409

authors: gjsjohnmurray muuvmuuv


text:
Failure to load 'jshint'

Failed to load jshint library. Please install jshint in your workspace folder using 'npm install jshint' or globally using 'npm install -g jshint' and then press Retry.

/needsMoreInfo

authors: elroynewton gjsjohnmurray


text:
shellIntegration-bash.sh: parse last history command a little more rigorously

The bash shell integration's __vsc_history_verify feature can be confused if HISTTIMEFORMAT is set. It also unnecessarily invoked the external sed simply to remove the history number prefix.
This updates the implementation to avoid both of these probably-minor issues.

Without these changes, this is what we store in Run recent command when I have set HISTTIMEFORMAT="%d/%m/%y %T "

This issue has been closed automatically because it needs more information and has not had recent activity. See also our issue reporting guidelines.
Happy Coding!

source: gharchive/pull-request

authors: VSCodeTriageBot meganrogge rwe


text:
Aeschli/smoke in productbuild

This PR fixes #

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.:x: eman291 sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.


text:
Snap fixes

This PR is related to #87971 or #85344 but does not entirely fix it

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.:x: sergiusens sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.

Sorry @sergiusens but I can't seem to correlate these changes with the issue? Does this address the issue at all, or you just think XDG_CACHE_HOME should not be touched?

XDG_CACHE_HOME if set, will make firefox open using a cache on that path, hence leading to not using the firefox a user has configured. This is going to be the next issue for that issue.

@sergiusens Got it. Yup, I verify that the issue is still there, even with this PR.

authors: joaomoreno msftclas sergiusens


text:
VsixPub0024 : The description for the extension must be set and it must be less than 280 characters in length.

Describe the bug
I'm trying to publish an extension using the VsixPublisher.exe. I've done this many times before and it has worked fine, but today I'm getting the error:
VSSDK: error VsixPub0024 : The description for the extension must be set and it must be less than 280 characters in length.

The .vsixmanifest file does contain a description:

Brings VS Code's "Auto Surround" feature to Visual Studio.

It's 58 characters in length. I can manually publish the extension through the marketplace website.
To Reproduce
I'm using this command to publish the extension:
C:\Users\runneradmin\.nuget\packages\microsoft.vssdk.buildtools\17.2.2186\tools\vssdk\bin\VsixPublisher.exe" publish -personalAccessToken "***" -payload "D:\a\AutoSurround\AutoSurround\source\AutoSurround\bin\Release\AutoSurround.vsix" -publishManifest "D:\a\AutoSurround\AutoSurround\publish.json"

Expected behavior
The extension is published without error.
Screenshots
N/A
Desktop (please complete the following information):

N/A (using GitHub actions to publish).

Smartphone (please complete the following information):

N/A

Additional context
I'm using VsixPublisher.exe from the Microsoft.vVSSDK.BuildTools v17.2.2186 NuGet package.
Here are the relevant files from the extension:

source.extension.vsixmanifest
publish.json

The build log is here:

Build log

This was still happening today with Microsoft.VSSDK.BuildTools @ 17.2.2186, but after upgrading to 17.3.2094 I was able to publish an extension successfully.

repo: microsoft/vsmarketplace


text:
Typo in wiki: wil::com_ptr_t

There's an extra "to" in wil::com_ptr_t:

you should not need to to instantiate this class [...]

Thanks, fixed that

repo: microsoft/wil

license: mit

license_source: bigquery


text:
GetWindowLong/Ptr functions can fail, but don't return a Result

Suggestion
If we look at the docs for GetWindowLongPtrA (or any of the A/W Long/LongPtr variants), they all can fail by returning 0, however the generated bindings just return an isize: GetWindowLongPtrA.
The error handling might not be as simple as checking for 0 and returning a Result since a proper return type would be Result<Option<isize>>, where it returns Ok(None) when the function returns 0 without having an error (for example when SetWindowLong has not been called).
I've never actually seen it fail so I'm not entirely sure what the fail conditions vs succeed conditions on a 0 return look like (and the docs aren't very clear), but it would be nice to have the error helpers applied to these functions.
The returned value on the Ptr variants is also a pointer, but it's probably best to keep it as an isize since GetWindowLongPtrA and GetWindowLongPtrW return pseudo-values when the wrong A/W version is called.

A developer may also store/retrieve a 0 via DWL_USER, making this difficult to handle generically.

I think this is a case where the caller needs to figure things out since the way that errors are reported is very API specific and cannot be readily inferred through metadata.

These APIs are already somewhat specialized and problematic (#1932) so I'd rather just leave this as is.

authors: kennykerr qwerty01 riverar

repo: microsoft/windows-rs


text:
Make pins block uninstalls

[x] I have signed the Contributor License Agreement.
[x] This pull request is related to an issue.

#3211

Microsoft Reviewers: Open in CodeFlow

/azp run

When we first spec'ed the pinning feature, the community asks were in several categories:

I do not want winget to manage package updates because I have other package managers managing these packages (blocking)
I do not want to accidentally update some packages with upgrade --all (pinning)
I want to limit some packages to specific version (gating)
I prefer one source over another (I pin winget-pkgs source so that I always get updates from msstore source) (pin for one available package)
I do not want some installed packages being updated (pin for one installed package)

To achieve above, we designed the pinning table to have pinning, gating and blocking (either for an available package or an installed package)
With the complexity of all the pinning types and package types, I personally do not think these pins should be mixed with uninstalling behaviors. For example, if I block upgrade some app from winget-pkgs source, it does not mean I cannot uninstall that app. If I pin package to v1.1.*, when v1.1.1 is available, I do still want to uninstall v1.1.0
Pinning is mainly for better upgrade --all  customizations, where we do not have batch uninstall (i.e. uninstall --all). I feel winget uninstall is almost always from user intent. User will just pass in --force to uninstall and leave a stale pin in the index.

I do not want winget to manage package updates because I have other package managers managing these packages (blocking)

Along the same line of thinking, if another package manager is being used to manage the packages, using winget to uninstall it could cause unintended results in the other package manager. Requiring force for an uninstall is an extra reminder to the user that they were using a different package manager for that package.

I do not want to accidentally update some packages with upgrade --all (pinning)

Pinning pins remain unaffected by this change

I want to limit some packages to specific version (gating)

This is actually one of the reasons that I brought this up. Once a pin is added, it will stay there until a user intentionally removes it. It could be months after a pin is added and a user goes to uninstall the package, not remembering they needed the package at a specific version for some workflow they use only once or twice a year. Requiring force for an uninstall is an extra reminder to the user that they wanted it to be at that specific version.

I do not want some installed packages being updated (pin for one installed package)

To me this is no different than the first scenario (blocking) or even a gating pin with a version range of a single version. It is entirely possible that some users just want an app not to be updated, but it's also possible that some users require specific versions and would want to also block uninstall.

For example, if I block upgrade some app from winget-pkgs source, it does not mean I cannot uninstall that app.  If I pin package to v1.1.*, when v1.1.1 is available, I do still want to uninstall v1.1.0

That is true. I would have to see how the upgrade flow calls the uninstall flow in cases where uninstallPrevious is specified.

I feel winget uninstall is almost always from user intent.

I agree completely. However, user intent is not always as intentional as we like to believe. Most people can't remember what they had for lunch two Tuesday's ago, so I felt that a reminder of their past actions would be minimally invasive to confirm the intent.

User will just pass in --force to uninstall and leave a stale pin in the index.

In some cases yes, and in some cases no. Currently, all uninstalls of pinned packages leave a stale pin in the index, so that isn't really a concern IMO.. The thought behind --force was to act as a reminder that there was some reason the user had it pinned, while making it easy to bypass. The other thought I had was to perhaps add a prompt that "A pin exists for this package, are you sure you want to remove it", but I thought that requiring force was more consistent with the current UX.

Just left my thought here. If we do wish to associate pins with uninstall, I feel it should be limited to "blocking pin for installed package".
Pins for available (remote) package just blocks packages from a specific source (for the scenario I prefer one source over another i.e. I pin winget-pkgs source so that I always get updates from msstore source)
Pins for installed packages makes more sense to prevent uninstall. And in the context of gating, I want my package to be latest within some range. So it's still possible to uninstall a version that's slightly older.
P.S. We are in the final stage of winget 1.5 rc. We may need to pick this up in winget 1.6.

Just left my thought here. If we do wish to associate pins with uninstall, I feel it should be limited to "blocking pin for installed package".
Pins for available (remote) package just blocks packages from a specific source (for the scenario I prefer one source over another i.e. I pin winget-pkgs source so that I always get updates from msstore source)
Pins for installed packages makes more sense to prevent uninstall. And in the context of gating, I want my package to be latest within some range. So it's still possible to uninstall a version that's slightly older.
P.S. We are in the final stage of winget 1.5 rc. We may need to pick this up in winget 1.6.

authors: Trenly florelis yao-msft

repo: microsoft/winget-cli


text:
Any comment on the AppGet situation?

For context: https://keivan.io/the-day-appget-died/
I think the community will likely want to know whatever you have to say about it.
Thanks.

I don't think, that this is the right place.

This place is as good as any other, at least MS won't be able to just ignore it.

There's already a discussion over here: https://github.com/microsoft/winget-cli/issues/353
You can see that the author for appget has already given his points on the thread as well and on The Verge article for this matter Microsoft gave a statement that they're already executing an internal investigation to find out what happened during the interview process.

I'll close this since there's a proper issue as @TheRndCoder mentioned.

authors: Bartmax Eugeny SoftCreatR TheRndCoder

repo: microsoft/winget-pkgs


text:
What type of update are you requesting?
A new version of an existing package
Current Package Identifier
KrassyK1LZ.DXLogNet
Package Version
2.5.54
Please describe the changes you would like to see
There is a new release (4.55) available.
Download Page Url: http://dxlog.net/sw/

http://dxlog.net/sw/files/DXLog.net-2.5.54.msi


text:
Please confirm these before moving forward

[X] I have searched for my issue and not found a work-in-progress/duplicate/resolved issue.
[X] I have not been informed if the issue is resolved in a preview version of the winget client.

Category of the issue
Other
Brief description of your issue
winget does not properly detect my installation of AusweisApp, despite the manifest having the correct product code associated with it.
Steps to reproduce
Basically just install the app
Actual behavior
This is the output from winget list AusweisApp:
Name       ID                                     Version
---------------------------------------------------------
AusweisApp {D2AD1FE6-DD7E-441C-BECE-A492D126E1E2} 2.0.3

Note that the winget ID does not appear and that winget isn't shown as the source (that's what happens with properly picked up packages).
Expected behavior
When I do winget list, I would expect winget to show the winget id and winget as the source.
Environment
Windows Package Manager v1.6.10121
Windows: Windows.Desktop v10.0.26052.1000

Screenshots and Logs
No response

Other packages that cannot be matched currently are Spotify.Spotify and WhatsApp.Beta, but before I open issues for them for nothing, are these known issues because they are apps installed from the MS store with very regular updates?

That's odd, I couldn't reproduce it in my VM. Is there a chance you can uninstall the package and re-install via winget? Can you also share the logs from winget list AusweisApp --verbose --open-logs (should be the most recent log)

Yeah, I guess that's happening with all packages installed from msstore as I just noticed that it's also the case for Asus.ArmouryCrate. These apps don't show their version in "Installed apps" and don't show up in my ARPTable so I guess it's just down to them being registered differently in Windows which prevents winget from picking them up properly?

authors: CanePlayz mdanish-kh


text:
Please confirm these before moving forward

[X] I have searched for my issue and not found a work-in-progress/duplicate/resolved issue.
[X] I have not been informed if the issue is resolved in a preview version of the winget client.

Category of the issue
Installer hash mismatch.
Brief description of your issue
jam-software.de has provided a newer version.   4.6  d.d.  august 22.
thus the installer hash no longer matches!
Steps to reproduce
winget install JAMSoftware.TreeSize.Free

Actual behavior

winget install JAMSoftware.TreeSize.Free
Found TreeSize Free [JAMSoftware.TreeSize.Free] Version 4.5.3
This application is licensed to you by its owner.
Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.
Downloading https://downloads.jam-software.de/treesize_free/TreeSizeFreeSetup.exe
██████████████████████████████  11.5 MB / 11.5 MB
Installer hash does not match; to override this check use --force

Expected behavior
Installation of the program..
Environment
Windows Package Manager v1.3.2091
Copyright (c) Microsoft Corporation. All rights reserved.

Windows: Windows.Desktop v10.0.19044.1889
System Architecture: X64
Package: Microsoft.DesktopAppInstaller v1.18.2091.0

Screenshots and Logs
No response

Hash has changed. Needs fixing.

Hash has changed. Needs fixing.

Resolved in #79631

authors: j-dc mdanish-kh treysis


text:
Japplis toolbox 5.5

[ ] Have you signed the Contributor License Agreement?
[X] Have you checked that there aren't other open pull requests for the same manifest update/change?
[X] This PR only modifies one (1) manifest
[X] Have you validated your manifest locally with winget validate --manifest <path>?
[X] Have you tested your manifest locally with winget install --manifest <path>?
[X] Does your manifest conform to the 1.4 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

@microsoft-github-policy-service agree company="Japplis"


text:
isaaclevin.presencelight version 5.6.1.0

[ ] Have you signed the Contributor License Agreement?
[ ] Have you checked that there aren't other open pull requests for the same manifest update/change?
[ ] This PR only modifies one (1) manifest
[ ] Have you validated your manifest locally with winget validate --manifest <path>?
[ ] Have you tested your manifest locally with winget install --manifest <path>?
[ ] Does your manifest conform to the 1.4 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

Why is this throwing an error for missing an optional field?
https://dev.azure.com/ms/winget-pkgs/_build/results?buildId=460230&view=logs&j=1c216ba8-f9ef-5707-496b-69e30b6cb45a&t=d5938111-0e28-5713-0070-4b1bb7df6b82&l=58


text:
Add version: deep5050.qikQR version 1.0.0

Pull request has been created with WinGet Automation 🪟📦🤖
Microsoft Reviewers: Open in CodeFlow

It seems that 1.0.0 has been re-released as 1.0.1.


text:
New version: KRTirtho.Spotube version 3.4.1

Pull request has been created with Komac v1.11.0 :rocket:
Microsoft Reviewers: Open in CodeFlow

Automatic Validation ended with:

2024-01-29T20:56:34.1249399Z ##[error] Manifest Error: Duplicate installer entry found.

(Automated response - build 674.)

/AzurePipelines run

authors: hlqviet stephengillie


text:
Move Apifox.Apifox 2.3.2 to Ruihu.Apifox 2.3.2

[x] Have you signed the Contributor License Agreement?
[x] Have you checked that there aren't other open pull requests for the same manifest update/change?
[x] This PR only modifies one (1) manifest
[x] Have you validated your manifest locally with winget validate --manifest <path>?
[ ] Have you tested your manifest locally with winget install --manifest <path>?
[x] Does your manifest conform to the 1.6 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

[Policy] Approved

authors: SpecterShell Trenly


text:
Remove version: Kitware.CMake version 3.29.0-rc2

Release Candidate instead of release.
Microsoft Reviewers: Open in CodeFlow

URL: https://github.com/Kitware/CMake/releases/download/v3.29.0-rc2/cmake-3.29.0-rc2-windows-i386.msi
Status Code: 200
(Automated message - build 871)

Hi @OfficialEsco,
This manifest has the highest version number for this package. Is it available from another location? (This might be in error if the version is switching from semantic to string, or string to semantic.)
(Automated response - build 870.)

Thanks @OfficialEsco ! I tried that before, but it was blocked because my PR contained both the removal and the introduction of an ID for the actual prerelease version (#140717).

authors: OfficialEsco exoosh stephengillie


text:
Amazon.AWSCLI version 2.15.31

Checklist for Pull Requests

[ ] Have you signed the Contributor License Agreement?
[ ] Is there a linked Issue?

Manifests

[ ] Have you checked that there aren't other open pull requests for the same manifest update/change?
[ ] This PR only modifies one (1) manifest
[ ] Have you validated your manifest locally with winget validate --manifest <path>?
[ ] Have you tested your manifest locally with winget install --manifest <path>?
[ ] Does your manifest conform to the 1.6 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

Close with reason: Duplicate of #145577;

Close with reason: Merge Conflicts;


text:
New version: YO3DMU.PstRotatorAz version 14.90

Pull request has been created with komac v2.2.1 :rocket:
Microsoft Reviewers: Open in CodeFlow

URL: https://pstrotator.com/ANT/PstRotatorAz.exe
OK
(Automated message - build 899)

Hi @Jvr2022,
Is this project moving domains? The PackageUrl still points at the old page. Also, neither page references the other. I couldn't find a developer blog or anywhere mentioning a site move - is there any?

I am gonna take a look

If I go to this link I get the download https://pstrotator.com/ANT/PstRotatorAz.exe


text:
New package: NekkiLimited.Cascadeur version 2024.1.2

Checklist for Pull Requests

[ ] Have you signed the Contributor License Agreement?
[ ] Is there a linked Issue?
Resolve #156092

Manifests

[ ] Have you checked that there aren't other open pull requests for the same manifest update/change?
[ ] This PR only modifies one (1) manifest
[ ] Have you validated your manifest locally with winget validate --manifest <path>?
[ ] Have you tested your manifest locally with winget install --manifest <path>?
[ ] Does your manifest conform to the 1.6 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

For moderators
This account is automated by Github Actions and the source code was created by CoolPlayLin. If you have any questions about any pull request, don't hesitate to ping Exorcism0666.

[!warning]
With the new version of Komac, numerous Pull Requests may contain bugs or unwanted elements. If such issues arise, please tag russellbanks so that these bugs can be addressed in future updates.

[!important]
Please carefully review these Pull Request before merging. If it is a Pull Request for removing incorrect content and the URLs are issue, free upon manual checking, please close this Pull Request directly. (It is best to inform Exorcism0666 of the closure.)

良い一日をお過ごしください！

Automatic Validation ended with:
(Automated response - build 882.)

Manual Validation ended with:

Faulting application name: cascadeur.exe, version:
2024.1.0.11278, time stamp: 0x66476f5c
Faulting module name: Qt6Core.dll, version: 6.5.1.0, time stamp: 0x6469b02c Exception code: 0xc0000409 Fault offset: 0x00000000000156d8
Faulting process id: 0x1a8
Faulting application start time: 0x01dab614aadc50ab
Faulting application path: C:\Program Files\Cascadeur\cascadeur.exe
Faulting module path: C:\Program Files\Cascadeur\Qt6Core.dll Report Id: 6e9dbc15-7f7b-48f5-91c4-8a957cb4fb17
Faulting package full name:
Faulting package-relative application ID:

(Automated response - build 883.)


text:
New version: Amazon.Corretto.20.JDK version 20.0.2.10

Checklist for Pull Requests

[x] Have you signed the Contributor License Agreement?
[ ] Is there a linked Issue?

Manifests

[x] Have you checked that there aren't other open pull requests for the same manifest update/change?
[x] This PR only modifies one (1) manifest
[x] Have you validated your manifest locally with winget validate --manifest <path>?
[ ] Have you tested your manifest locally with winget install --manifest <path>?
[x] Does your manifest conform to the 1.6 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

Verify:

authors: SpecterShell stephengillie


text:
Remove version: Redisant.RedisAssistant version 1.2.1.1

[Automated] It returns code over 400 in all urls
Microsoft Reviewers: Open in CodeFlow

/azp run

/azp run

authors: Exorcism0666 hackean-msft msftrubengu


text:
New version: KLayout.KLayout version 0.29.3

Checklist for Pull Requests

[x] Have you signed the Contributor License Agreement?
[x] Is there a linked Issue? No

Manifests

[x] Have you checked that there aren't other open pull requests for the same manifest update/change?
[x] This PR only modifies one (1) manifest
[x] Have you validated your manifest locally with winget validate --manifest <path>?
[x] Have you tested your manifest locally with winget install --manifest <path>?
[x] Does your manifest conform to the 1.6 schema?

Note: <path> is the directory's name containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

/azp run

/azp run

authors: Patarimi hackean-msft


text:
Remove version: LutzRoeder.Netron version 7.7.9

[Automated] It returns code over 400 in all urls
Microsoft Reviewers: Open in CodeFlow

URL: https://github.com/lutzroeder/netron/releases/download/v7.7.9/Netron-Setup-7.7.9.exe
Response Error: The remote server returned an error: (404) Not Found.
(Automated message - build 912)


text:
7zip.7zip.Alpha.msi test

winget list 7zip:
Name        Id                  Version     Available  Source
-------------------------------------------------------------
7-Zip       7zip.7zip           21.02.00.0
7-Zip Alpha 7zip.7zip.Alpha.msi 21.02 alpha 21.02.00.0 winget

Microsoft Reviewers: Open in CodeFlow

/azp run


text:
New version: Ferdium.Ferdium.Nightly version 6.7.8-nightly.13

Checklist for Pull Requests

[ ] Have you signed the Contributor License Agreement?
[ ] Is there a linked Issue?

Manifests

[ ] Have you checked that there aren't other open pull requests for the same manifest update/change?
[ ] This PR only modifies one (1) manifest
[ ] Have you validated your manifest locally with winget validate --manifest <path>?
[ ] Have you tested your manifest locally with winget install --manifest <path>?
[ ] Does your manifest conform to the 1.6 schema?

Note: <path> is the directory's name containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

@wingetbot run

authors: Alphrag ItzLevvie


text:
Remove unneccessary AppsandFeaturesEntries * manifests/p/PDFsam/PDFsam/5.2.2/PDFsam.PDFsam.installer.yaml

Microsoft Reviewers: Open in CodeFlow

URL:
Invalid URI: The hostname could not be parsed.
(Automated message - build 899)

authors: Trenly stephengillie


text:
WindscribeLimited.Windscribe version 2.0.2.10

[ ] Have you signed the Contributor License Agreement?
[ ] Have you checked that there aren't other open pull requests for the same manifest update/change?
[ ] Have you validated your manifest locally with winget validate --manifest <path>?
[ ] Have you tested your manifest locally with winget install --manifest <path>?
[ ] Does your manifest conform to the 1.0 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

Noticed that as well on my main machine but haven't had the chance to set up a new VM, lost mine when I wiped to install fresh 11. Figured it was just my machine being weird since I had it already installed. According to their changelog they just added the silent flag with the latest version, but didn't see anything about any other flags

I just tried literally every way I can think of to call the silent feature or any other of the flags but none of them are working. Either I'm missing some magical way to call these, or their switches just don't seem to work, launching the installer without any switches works just fine so its not a installer corruption issue

Welp, guess will just have to wait until the fix hits release unless someone else had an idea


text:
IP Messenger v5.1.1

update to v5.1.1
Microsoft Reviewers: Open in CodeFlow

/azp run

authors: jamespik shirouzu


text:
Remove: chrisant996.Clink version 1.2.20.801802

## .\Tools\YamlCreate.ps1 -SkipPRCheck -Mode 5 -PackageIdentifier chrisant996.Clink -PackageVersion 1.2.20.801802

[X] Have you signed the Contributor License Agreement?
[X] Have you checked that there aren't other open pull requests for the same manifest update/change?
[X] Have you validated your manifest locally with winget validate --manifest <path>?
[X] Have you tested your manifest locally with winget install --manifest <path>?
[X] Does your manifest conform to the 1.0 schema?

Microsoft Reviewers: Open in CodeFlow

/azp run


text:
Update: Microsoft.VisualStudio.2019.Professional version 16.11.0

Converting singleton to multi-file manifests
Microsoft Reviewers: Open in CodeFlow

@wingetbot run


text:
Spacemesh.Spacemesh version 0.2.6

[ ] Have you signed the Contributor License Agreement?
[ ] Have you checked that there aren't other open pull requests for the same manifest update/change?
[ ] Have you validated your manifest locally with winget validate --manifest <path>?
[ ] Have you tested your manifest locally with winget install --manifest <path>?
[ ] Does your manifest conform to the 1.2 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

@wingetbot waivers Add Validation-Domain

authors: lechacon oxygen-dioxide


text:
Renormalize: JanDeDobbeleer.OhMyPosh version 8.7.0

null
Microsoft Reviewers: Open in CodeFlow

/azp run


text:
Normalize PTRTECH.UVtools 3.4.2

null
Microsoft Reviewers: Open in CodeFlow

@wingetbot run


text:
This page conflicts with the Permissions Reference page

This page says that in order to create a Service Principal on a single tenant application, you must have the Application Developer role.
The odd part, is that this page: https://learn.microsoft.com/en-us/graph/permissions-reference#application-permissions-4 says that Application.ReadWrite.OwnedBy permissions:

Allows the calling app to create other applications and service principals, and fully manage those applications and service principals (read, update, update application secrets and delete), without a signed-in user.

So the conflict is that one page (the one this report is on) says that you need the Application Developer role to create a service principal, while the other page says you can do it with just the Application.ReadWrite.OwnedBy permission.

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

ID: 4b1fa292-64ad-6567-50c9-4219912b0665
Version Independent ID: 8f228aac-f319-630a-fd9b-b97d51edc1ed
Content: Create serviceprincipal - Microsoft Graph v1.0
Content Source: api-reference/v1.0/api/serviceprincipal-post-serviceprincipals.md
Product: applications
Technology: microsoft-graph
GitHub Login: @sureshja
Microsoft Alias: MSGraphDocsVteam

So, I was doing it wrong, and passing in the ObjectId instead of the ApplicationId.  But the documentation is a bit confusing.  When using Client Credentials, you do not need to have Application Developer permissions.


text:
[app management policies] update docs for adding restriction state

Instructions: Add any supporting information, such as a description of the PR changes, here.

[!NOTE]
The following guidance is for Microsoft employees only. Community contributors can ignore this message; our content team will manage the status.

After you've created your PR, expand this section for tips and additional instructions.

do not merge is the default PR status and is automatically added to all open PRs that don't have the ready to merge label.
Add the ready for content review label to start a review. Your PR won't be reviewed until you add this label.
If your content reviewer requests changes, review the feedback and address accordingly as soon as possible to keep your pull request moving forward. After you address the feedback, remove the changes requested label, add the review feedback addressed label, and select the Re-request review icon next to the content reviewer's alias. If you can't add labels, add a comment with #feedback-addressed to the pull request.
After the content review is complete, your reviewer will add the content review complete label. When the updates in this PR are ready for external customers to use, replace the do not merge label with ready to merge and the PR will be merged within 24 working hours.
Pull requests that are inactive for more than 6 weeks will be automatically closed. Before that, you receive reminders at 2 weeks, 4 weeks, and 6 weeks. If you still need the PR, you can reopen or recreate the request.

For more information, see the Content review process summary.

Created new PR on the private repo https://github.com/microsoftgraph/microsoft-graph-docs/pull/24588


text:
Notify the user when the request has successfully/unsuccessfully completed

We need to come up with a notification process that shows the status codes / status messages for the sent requests

something like this toast ?


text:
Microsoft Graph Explorer get calendars api call returning deleted calendars for the user

-> Getting deleted calendars along with active calendars when I am using below Api call
'https://graph.microsoft.com/v1.0/me/calendars'
Is this expected behavior of this call? if yes how can I get only active calendars, is there any provision for that?

This is the priority item for a client, is there any way to prioritize this request pls?

Hey @jithender9966 ,
Apologies for the delay.
I am unable to reproduce this on my end... did the user run a delete query to delete the unwanted calendar? e.g
DELETE https://graph.microsoft.com/v1.0/me/calendar/{calendar-id


text:
Create React App npm commands out of date

As a backend developer, not knowing much at all about react, I followed the above commands, and it only installed packages, but no code. With a bit of googling, I found  that it should be:
npx create-react-app graph-tutorial
cd graph-tutorial
npm start

https://reactjs.org/docs/create-a-new-react-app.html#create-react-app

Fixed in #37


text:
Calendar Module

Calendar module based on FullCalendar 3.1.0
See index.php for some notes on proposed future updates.

Sorry, process.php shouldn't have been included, it's not used.

merged in 1.0.8

The start and end times with am/pm in admin.php were causing an invalid date. The following changed lines seemed to fix it:
Line 149: var startTime = moment(event.start).format('hh:mm');
Line 150: if(startTime == "12:00") startTime = "00:00";
Line 154: var endTime = moment(event.end).format('hh:mm');
Line 353: $time_options .=  '<option value="' . date("H:i",$time) . '">' . date("h:i a",$time) . "</option>\n";

authors: nickwuk peter-mw

repo: microweber/microweber


text:
Add special keys 'plus' and 'minus', test for binding them

From the times of mousetrap, binding the plus key hasn't worked, e.g. "ctrl++". The most straightforward way to make it possible to bind the plus key is to alias it. So, this PR adds special keys "plus" and "minus", which makes e.g. "ctrl+plus" work straight away, and a test case to verify it.

@mightyiam Does this make sense to you, or is there something I should look at?

I will debug.
On Jan 8, 2015 3:36 PM, "Mike Arvela" notifications@github.com wrote:

@mightyiam https://github.com/mightyiam Does this make sense to you, or
is there something I should look at?
—
Reply to this email directly or view it on GitHub
https://github.com/mightyiam/combokeys/pull/13#issuecomment-69179429.

Thank you, @mieky.
I wouldn't work too hard in order to get cmd++ working. Would you?
Will you please add a word about the special syntax of plus/minus in the readme?

@mightyiam I don't think it's necessarily worth the work, especially considering the binding seems to work nicely with the alias. The root cause still intrigues me, and I might just look into it in more detail later...
Sure, I'll drop a note in readme!

@mightyiam, added a short example.

Cool! Thank you very much, @mieky.

Happy to help, thanks for merging!

Published v2.2.0 for you.

Thank you @mightyiam, appreciated.

authors: mieky mightyiam

repo: mightyiam/combokeys


text:
Fixed issue with memory-freeing callback delegates being garbage-collected in Windows.

Frankly, not sure how to submit a pull request. So here's the info: on Windows, certain delegates that are used to free memory are being garbage collected, resulting in exceptions when trying to dispose TFTensor or TFBuffer classes. Attached are the fixes I made that resolved the issues.
TensorFlowSharp fixes.zip
Had to make some minor changes, primarily to static constructors: Changed

static TFBuffer ()
              {
                     FreeBufferFunc = Marshal.GetFunctionPointerForDelegate (FreeBlock);
              }

to
static TFBuffer ()
              {
            BufferReleaseFunc del = (data, length) => FreeBlock(data, length);
            GCHandle.Alloc(del);
            FreeBufferFunc = Marshal.GetFunctionPointerForDelegate (del);
              }

Also have to add the following code to TFTensor (and then replace use of FreeTensorHandle in the rest of the file with FreeTensorHandleFunc, and FreeTensorData with FreeTensorDataFunc):
        static Deallocator FreeTensorHandleFunc;
        static Deallocator FreeTensorDataFunc;
        static TFTensor()
        {
            FreeTensorHandleFunc = (data, size, deallocatorData) => FreeTensorHandle(data, size, deallocatorData);
            GCHandle.Alloc(FreeTensorHandleFunc);
            FreeTensorDataFunc = (data, len, closure) => FreeTensorData(data, len, closure);
            GCHandle.Alloc(FreeTensorDataFunc);

Try to create a pull request from your fork:
https://help.github.com/articles/creating-a-pull-request-from-a-fork/

I applied a simpler version of this patch, I keep the delegate on a static field:
https://github.com/migueldeicaza/TensorFlowSharp/commit/46bea6c02e7d4c720bce034532e00020a2831f88
https://github.com/migueldeicaza/TensorFlowSharp/commit/daec306fff9aee95fc5a379a259f61ab489738a0

Thanks for catching this bug and reporting it!

Thanks, guys. I didn't find keeping the delegate on a static field was good
enough to prevent garbage collection (even though it's a static field, it
is never referred to after the static constructor--maybe Windows VM 'helps'
you out by getting rid of it), and it looks like you only did it in
TFBuffer but not in TFTensor class.
So I figured the system out well enough to submit a pull request. Let me
know if you need a test program, though I'm not sure if you'll observe the
problem on non-Windows machines (I have the latest Framework 4.7 installed
on Windows 10, if that helps).
By the way, I want to say what a great help this software has been to us.
With just of few lines of code, I've been able to pass images from Emgu's
OpenCV wrapper to Tensorflow and perform inference on the GPU. Took a few
hours in pure C#. Fantastic stuff!
Thanks,
John
On Thu, Jul 27, 2017 at 8:19 AM, Miguel de Icaza notifications@github.com
wrote:

I applied a simpler version of this patch, I keep the delegate on a static
field:
46bea6c
https://github.com/migueldeicaza/TensorFlowSharp/commit/46bea6c02e7d4c720bce034532e00020a2831f88
daec306
https://github.com/migueldeicaza/TensorFlowSharp/commit/daec306fff9aee95fc5a379a259f61ab489738a0
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/migueldeicaza/TensorFlowSharp/issues/104#issuecomment-318394154,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFXn9sWkmWtoyv1R1Ip-vWvfheeatHmlks5sSKpmgaJpZM4Oi6c4
.

I used two commits, one did the buffer, one did the tensor.   I do not think that Windows is optimizing that away, if the issue persists, can you share what kind of error you are getting?
I have  Windows machine, I can test if you can share the program, and my team tells me that this should also be debuggable on Linux with Mono, where we have a debug flag to warn about these errors.MONO_DEBUG=keep-delegates   Would love to see what is happening.
Very happy to hear that this binding has proved useful to you.

I too (eventually) figured out your fix. Think we're good.
Thanks!
John
On Fri, Jul 28, 2017 at 4:58 PM, Miguel de Icaza notifications@github.com
wrote:

I used two commits, one did the buffer, one did the tensor. I do not think
that Windows is optimizing that away, if the issue persists, can you share
what kind of error you are getting?
I have Windows machine, I can test if you can share the program, and my
team tells me that this should also be debuggable on Linux with Mono, where
we have a debug flag to warn about these errors.MONO_DEBUG=keep-delegates
Would love to see what is happening.
Very happy to hear that this binding has proved useful to you.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/migueldeicaza/TensorFlowSharp/issues/104#issuecomment-318787106,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFXn9g2biW8DIgavfiUzismUy5aypUqIks5sSnWcgaJpZM4Oi6c4
.

Excellent!   Also - nice side effect, I have been using this idiom in my code in various places, and once you pointed out this bug, I went and fixed that in other projects ;-)

authors: Dorokhov JohnTenney migueldeicaza

repo: migueldeicaza/TensorFlowSharp


text:
Control: Attributed Label

To make it simpler to add a splash of color to the UI.
Some thoughts:

Attributed strings should allow overlapping attributes
Attributed strings should have an HTML-like input system for ease of creation.

Tags:

<b> - bold
<u> - underline
<r> - reverse

Colors:

<red>, <green>, <yellow> etc

What about just supporting the ANSI Escape SGR parameters?
This way we don't have to invent new markup.
If we re-built Label on top of XTermSharp we'd get this mostly for free.
Related: #432 & #299
In my opinion we should do the following:

Implement a robust read-only text engine that supports:
left, right, center, justifiied justifiction
line wrap (both word and character based)
rendering ANSI color/formatting sequences
Put this text engine under Label

Use Label as a child control (or renderer) inside all other controls that display read-only text: Window.Title, MessageBox, TextField, etc...
@migueldeicaza has been doing work on a better text editor component for SwiftTerm. I suspect that work will not be useful to Terminal.Gui since it's probably tied to iOS. I think having a robust read-only text engine is more important that having BOTH that and an editor. And I'm not convinced they need to be based on the same thing (although one could argue that you'd read-only to just be a read-only version of edit.
(FWIW, I recently built an engine that comes close to this as part of https://github.com/tig/winprint. It doesn't support right, center, or justified and has lame word wrapping, but it DOES do ANSI formatting. It is based on https://github.com/rasmus-toftdahl-olesen/libvt100. I didn't know about @migueldeicaza's XtermSharp when I started, and XtermSharp doesn't support > 8bit color sequences, so I kept with libvt100. It's possible that one way to build this all is to simply layer it on top of XtermSharp or libvt100. I may build a POC of this.)

authors: migueldeicaza tig


text:
Key (Event.cs) should include the CapsLock key

No reason apps should be prevented from seeing CapsLock keypresses. As implemented this is missing.

Good observation. It would really be great to put the status of the CapsLock and Insert keys in the StatusBar

@BDisp fixed this in 4c30df43

authors: BDisp tig


text:
Possibility to ws.send from another Flask route

Hi Miguel, I have a Flask route which accepts a POST request with a parameters. Given one of the parameters is 'hello', is it possible to ws.send this 'hello' string to one of the connected ws clients? My app is purely server to client messages. Thanks!

@danohn Yes, I don't see why not. The ws object wraps a network socket, anything you send on it will go to the other end. Your application will have to have a way to find the correct ws object for the client you want to address though.

Thanks @miguelgrinberg I'll try that out and share the results here

Hi @miguelgrinberg , I'm clearly not doing something right or not understanding the code, apologies! Here is my Flask app:
from flask import Flask, render_template, request
from flask_sock import Sock

app = Flask(__name__)
sock = Sock(app)

@app.route('/publish', methods=['POST'])
def publish_route():
    message = request.form['message']
    sock.send(message)
    return f'Message sent: {message}'

@app.route('/')
def index():
    return render_template('index.html')

@sock.route('/echo')
def echo(sock):
    while True:
        data = sock.receive()
        sock.send(data)

if __name__ == '__main__':
    app.run(debug=True)

What I am trying to achieve is when someone sends a POST request to /publish, I extract the message from the POST form and then I want to send that message to the JS client which has already connected to the server on the /echo route.

By the way, with the above code, my index.html is identical to your example.

This is partly my fault, because the example code in which you based this was confusing, in that it used the sock variable name for two completely different purposes. I apologize for that, I have now removed this ambiguity from the code.
The WebSocket route now looks like this:
@sock.route('/echo')
def echo(ws):
    while True:
        data = ws.receive()
        ws.send(data)

So hopefully it is now more clear what you need to do. The ws variable that you need to use to send something to your client is a local variable, and there is actually multiple ones, one for each active client. Your application needs to use some sort of data structure to keep track of these variables somewhere your route can find them.

Thanks @miguelgrinberg , it looks like flask-socketio might be a better project for my use case. Appreciate the help :)

Hi @miguelgrinberg ,
I just wanted to provide a quick update. I ended up implementing this with your Flask-SocketIO library. Here is the code I am using:
from flask import Flask, request, render_template
from flask_socketio import SocketIO

app = Flask(__name__)

socketio = SocketIO(app)

@app.route("/publish", methods=["POST"])
def publish_route():
    msg = request.form["msg"]
    socketio.emit('my_topic', msg)
    return f"Message sent: {msg}"

@app.route("/", methods=['GET'])
def index_route():
    return render_template("index.html")

if __name__ == "__main__":
    socketio.run(app)

Just out of interest, would the same have been possible with Flask-Sock?

authors: danohn miguelgrinberg

repo: miguelgrinberg/flask-sock


text:
If Possible

Size Restrictions and comma separator format selection

Multiple format selection can actually be possible and there is feature request for it in the [SuggestiionBox)[#99]. Size restrictions can't be done seamless on both platforms and as of now, should be handled by the user in the app side.
Thank you.

authors: miguelpruivo nousath


text:
Library covers (japscan)

Steps to reproduce
1.go on japscan sources 2. Refresh a manga
Expected behavior
Covers should be the manga cover
Actual behavior
The covers are replaced by the ads and not the actual manga covers

Crash logs
No response
Mihon version
App version: 0.16.3 (standard, 139663a, 4, 2024-01-29T20:34Z) Android version: 11 (SDK 30; build RP1A.200720.012.A505FNXXU9CWB4) Device brand: samsung Device manufacturer: samsung Device name: a50 (a50eea) Device model: SM-A505FN WebView: Android System WebView 121.0.6167.101
Android version
Android 11
Device
Galaxy a50
Other details
No response
Acknowledgements

[X] I have searched the existing issues and this is a new ticket, NOT a duplicate or related to another open or closed issue.
[X] I have written a short but informative title.
[X] I have gone through the FAQ and troubleshooting guide.
[X] I have updated the app to version 0.16.3.
[X] I have updated all installed extensions.
[X] I will fill out all of the requested information in this form.

Extension issue and Mihon cannot and will not provide support for issues specific to extensions. Go ask whoever made this extension to fix it.

@MajorTanya commenting here semi-related since I see a few source-related issues here and I believe you'll get a number of them in the future:
You might consider updating the issue template.

I recommend removing the I have updated all installed extensions item (this is irrelevant. Honestly not sure why updates for unrelated extensions would matter even if you were supporting extensions)
add this is not an extension issue. Maybe move it to the top of you get a lot of these issues. It's questionable if this will actual help, but it shouldn't hurt 🤷
I have searched the existing issues can also be converted to a link like others do.

A github action can validate that users have checked the correct boxes and automatically close issues when necessary. There's already an action doing related things here, IIRC you can look for a [x] or [ ] to determine if a box is checked or unchecked, looking for an unchecked box should be sufficient to tell you that the user hasn't responded to one (all) of the items.

authors: Efreak MajorTanya Pestenxir

repo: mihonapp/mihon


text:
IMPROVE - SettingsView Vehicle List

Describe the feature you want to improve

When a user doesn't fill in all of the vehicle information, it shows as blank space on the SettingsView
Fix this so that the text only shows when there is a value

Describe alternatives you've considered

N/A

Screenshot

Hi Mikaela,
Can I have this issue?
I did something similar to this in a chat app list view.

@TratonGossink I think a simple way to do this would be to place the text fields in the same stack with a minimum height. A second option would be to put default text to appear when there is no input data. This would maintain the element's height
I would love work on this issue, if its available.
I wd love to work or help on this issue if its available.

second option would be to put default text to appear when there is no input data

it would be weird to have default values that are not real, for information you haven't filled in
I think it's totally fine for there to be different sizes for each row (depending on the info that's there)
@horaciomota thanks for the help, but it is only one assignee per issue!

@TratonGossink
Thanks for wanting to contribute! Hacktoberfest ended on October 31, if you can still finish this issue by Saturday November 4, I’ll accept it, but otherwise after that I’ll be un-assigning all issues and cleaning up the code to ship this app to the App Store

Hi Mikaela,
I'm ready for a pull request for this issue. I have never done a pull request before and might need a little coaching through it. 🙃

authors: TratonGossink horaciomota mikaelacaron

repo: mikaelacaron/Basic-Car-Maintenance


text:
Ability to export diagram with detailed threats into pdf or visio document

Excellent tool. Would like the ability to export the diagram, especially from the windows app, as a pdf or visio diagram with full threat detail present and visible.

+1

This tool is perfect for organizations that need a basic threat model where security is still maturing. My management is asking to export it but theres no way to do it. Would be awesome if this was possible in some way...maybe not PDF but maybe some nice display format with associated threats etc.

This is implemented in the web version in pull request #100.
The report is pretty basic, so any PRs or comments on ways to improve it are very welcome.

authors: dave-89 jkrow mike-goodwin sgiftakis

repo: mike-goodwin/owasp-threat-dragon


text:
[SocksLayer]: Handle timeout exception.

We need to handle timeout exception in proxy layer. This is also related to issue #95.

PR #101 fix this issue.


text:
🛑 OMSF is down

In 6388234, OMSF (https://www.omsf.io) was down:

HTTP code: 0
Response time: 0 ms

Resolved: OMSF is back up in acd2578 after 10 minutes.

repo: mikemhenry/website-uptime


text:
Update documentation regarding .fail

It took me several hours to figure out you can add .fail to the examples and catch them.  Here is what i came up with that catches the situation when you're asking for a service that doesn't exist:
return new Promise((resolve, reject) => {             sc.query({                 name: 'MyMissingService',                 class: 'service'             })             .fail((err) => {                 caughtError = err;                 return [];             })             .done((services) => {                 if (!services || services.length === 0) {                     if (!caughtError) {                         caughtError = new Error('Unknown error has occurred.');                     }                     reject(caughtError);                     return;                 }                 resolve({ Status: services[0].state.name });             });         });
This is how i dealt with things in NodeJS and would be handy to have the docs updated and save others time researching.

Yeah, all methods return a promise. The docs already cover this and briefly demonstrate how to use them with this module (Fail is an alias of Catch). You can learn more about promises here. HTH

authors: danielheth mikeobrien


text:
Build licenses json only for specific target in multiplatform module

About this issue
I have a multiplatform module (app written with compose) with android and jvm targets. I want to use gradle command to generate json specifically for desktop target while using automatic task for android. The issue is that it looks like android dependencies appear in the output of this manually launched task and I can't find any configuration except for build variant, but it doesn't allow to specify target platform, right? Is it not possible at the moment to generate json only for one specific platform?

L

Good day.
Please have a look at the exportVariant property which you can pass to the CLI

# Filter exported definition by variant by passing `-PaboutLibraries.exportVariant==<VARIANT>`
./gradlew :app-wasm:exportLibraryDefinitions -PaboutLibraries.exportPath=src/main/resources/ -PaboutLibraries.exportVariant=wasmJs
./gradlew :app-wasm:exportLibraryDefinitions -PaboutLibraries.exportPath=src/main/resources/ -PaboutLibraries.exportVariant=jvm

Thanks for the answer, it works!

authors: Tanwiwat mikepenz syt0r

repo: mikepenz/AboutLibraries


text:
Is this still in progress?

Hey there!
I'd like to join forces. I need a resource setting up proxy hosts for me.
Is your 3.0-rewrite-intention still alive? How can i help out?

Hi there!
3.0 rewrite is very much the goal - I've had some slowdown in getting around to testing the centos/systemd stuff: https://github.com/miketheman/nginx/pull/384
I'm already using the Ubuntu one in a production environment - and as long as you mentally remember that it's not /var/log/nginx/ - rather /var/log/nginx-`, things are ok.
There's still some stuff that needs to be figured out - as in how many more things cannot be placed inside the sites-enabled/ file and must be in the root resource.
Also, the rewrite takes the stance of "this cookbook should not be compiling nginx for you on every target server" - rather you should build & distribute binaries (packages!) out of the scope of running servers.

Piggy backing on @miketheman here, https://github.com/cubicdaiya/nginx-build is a great tool for this.

@scalp42 That's cool, hadn't seen that one. I'm more like to go with fpm-cookery, and modify a recipe with my flags like so: https://github.com/bernd/fpm-recipes/blob/master/nginx/recipe.rb
The resulting package can then be stuffed in a package repo, packagecloud, etc.

BTW I'm using the centos/systemd features of #384 in production as well

Closing this question in favor of the release tracking checklist.
Thanks!

authors: computerlyrik miguelaferreira miketheman scalp42

repo: miketheman/nginx


text:
Question for upsert factor

I tryied to develop a mapper between domain model and orm entity.
I wonder what is factory whether insert or update?:)

Not sure I understand, you mean how the ORM knows when to insert and when to update?
https://mikro-orm.io/docs/unit-of-work#how-mikroorm-detects-changes
All known entities (inside the identity map) are considered as updates, rest is considered insert.

@B4nan um, I should have explained issue, sorry.
following is my issue. please help it.
I have domain models for ddd and entities for persistence.
I want to map domain to entities as following.
when i saved entities for persistence by my custom repository,
I received error.
● BaseRepository › .save() › should update domain to database when domain exist in database

    insert into `test` (`bool`, `created_at`, `id`) values (true, '2020-02-25 20:05:22.765', 'id') - Duplicate entry 'id' for key 'PRIMARY'Error: Duplicate entry 'id' for key 'PRIMARY'

      at Packet.asError (node_modules/mysql2/lib/packets/packet.js:712:17)
      at Query.execute (node_modules/mysql2/lib/commands/command.js:28:26)
      at Connection.handlePacket (node_modules/mysql2/lib/connection.js:417:32)
      at PacketParser.onPacket (node_modules/mysql2/lib/connection.js:75:12)
      at PacketParser.executeStart (node_modules/mysql2/lib/packet_parser.js:75:16)
      at Socket.<anonymous> (node_modules/mysql2/lib/connection.js:82:25)

my code is
// Test.ts

import { AggregateRoot } from '@shared/domain/Aggregate';
import { TestId } from '@shared/infra/persistence/repoitory/test/domain/TestId';
import { TestValueObject } from '@shared/infra/persistence/repoitory/test/domain/testValueObject';

export class Test extends AggregateRoot<TestId> {
  private _bool: boolean;
  private _testValueObjects: TestValueObject[];
  private _createdAt: Date;

  get bool(): boolean {
    return this._bool;
  }

  get testValueObjects(): TestValueObject[] {
    return this._testValueObjects;
  }

  get createdAt(): Date {
    return this._createdAt;
  }

  constructor(id: TestId, bool: boolean, testVos: TestValueObject[], createdAt: Date) {
    super(id);
    this._bool = bool;
    this._testValueObjects = testVos;
    this._createdAt = createdAt;
  }

  changeBool(bool: boolean): void {
    this._bool = bool;
  }

  addTestVO(testVO: TestValueObject): void {
    this._testValueObjects.push(testVO);
  }
}

// TestValueObject.ts

import { IsString } from 'class-validator';

import { ValueObject } from '@shared/domain/ValueObject';
import { Guard } from '@shared/utils/Guard';

export class TestValueObject extends ValueObject<TestValueObject> {
  @IsString()
  private _value: string;

  constructor(value: string) {
    super();
    this._value = value;
    Guard.validate(this);
  }

  get value(): string {
    return this._value;
  }
}

// Test.entity.ts

import { Entity, Property, PrimaryKey, Collection, OneToMany } from 'mikro-orm';

import { IAsggregateRootEntity } from '@shared/infra/persistence/entity/Aggegate.entity.interface';
import { TestValueObject } from '@shared/infra/persistence/repoitory/test/entity/TestValueObject.entity';

@Entity()
export class Test implements IAsggregateRootEntity {
  @PrimaryKey()
  id: string;

  @Property()
  bool: boolean;

  @OneToMany({
    entity: () => TestValueObject,
    mappedBy: 'test',
    orphanRemoval: true,
    eager: true,
  })
  testValueObjects = new Collection<TestValueObject>(this);

  @Property()
  createdAt: Date;

  @Property({ nullable: true })
  deletedAt: Date | null;
}

// TestValueObject.entity.ts

import { Entity, Property, PrimaryKey, ManyToOne, IdentifiedReference } from 'mikro-orm';

import { IValueObjectEntity } from '@shared/infra/persistence/entity/ValueObject.entity.interface';
import { Test } from '@shared/infra/persistence/repoitory/test/entity/Test.entity';

@Entity()
export class TestValueObject implements IValueObjectEntity {
  @PrimaryKey()
  id: number;

  @Property()
  value: string;

  @ManyToOne({ entity: () => Test, wrappedReference: true })
  test: IdentifiedReference<Test>;
}

// Test.mapper.ts

import { Injectable } from '@nestjs/common';
import { Collection, wrap } from 'mikro-orm';

import { IMapper } from '@shared/core/Mapper.interface';
import { TestId } from '@shared/infra/persistence/repoitory/test/domain/TestId';
import { Test } from '@shared/infra/persistence/repoitory/test/domain/Test';
import { TestValueObject } from '@shared/infra/persistence/repoitory/test/domain/TestValueObject';
import { Test as TestEntity } from '@shared/infra/persistence/repoitory/test/entity/Test.entity';
import { TestValueObject as TestValueObjectEntity } from '@shared/infra/persistence/repoitory/test/entity/TestValueObject.entity';

@Injectable()
export class TestMapper implements IMapper<Test, TestEntity> {
  public toDomain(entity: TestEntity): Test {
    const testValueObjects = entity.testValueObjects.getItems().map(testVOEntity => {
      const testVO = new TestValueObject(testVOEntity.value);
      testVO.setPrimaryKey(testVOEntity.id);
      return testVO;
    });

    return new Test(new TestId(entity.id), entity.bool, testValueObjects, entity.createdAt);
  }

  public toPersistence(domain: Test): TestEntity {
    const entity = new TestEntity();
    entity.id = domain.id.value;
    entity.bool = domain.bool;
    entity.createdAt = domain.createdAt;

    const testValueObjectEntities = domain.testValueObjects.map(testVO => {
      const testValueObjectEntity = new TestValueObjectEntity();
      if (testVO.primaryKey) testValueObjectEntity.id = testVO.primaryKey;
      testValueObjectEntity.value = testVO.value;
      testValueObjectEntity.test = wrap(entity).toReference();
      return testValueObjectEntity;
    });
    entity.testValueObjects = new Collection(entity, testValueObjectEntities);
    entity.testValueObjects.populated(true);
    entity.testValueObjects.setDirty(true);
    return entity;
  }
}

// Base.repository.ts

import { Injectable, Inject, Type } from '@nestjs/common';
import { EntityManager, wrap } from 'mikro-orm';

import { IRepository } from '@shared/core/Repository.interface';
import { AggregateRoot } from '@shared/domain/Aggregate';
import { Identity } from '@shared/domain/Identity';
import { IMapper } from '@shared/core/Mapper.interface';
import { IAsggregateRootEntity } from '@shared/infra/persistence/entity/Aggegate.entity.interface';

@Injectable()
export abstract class BaseRepository<
  TAggregateRoot extends AggregateRoot<TIdentity>,
  TIdentity extends Identity,
  TPersistenceEntity extends IAsggregateRootEntity
> implements IRepository<TAggregateRoot, TIdentity> {
  @Inject()
  private readonly em: EntityManager;
  private readonly entityType: Type<TPersistenceEntity>;
  protected abstract readonly mapper: IMapper<TAggregateRoot, TPersistenceEntity>;

  constructor(entityType: Type<TPersistenceEntity>) {
    this.entityType = entityType;
  }

  public abstract nextId(): TIdentity;

  public async findById(id: TIdentity): Promise<TAggregateRoot | null> {
    const entityInDB = await this.em.findOne(this.entityType, id.value);
    if (entityInDB === null) return null;
    return this.mapper.toDomain(entityInDB);
  }

  public async save(domain: TAggregateRoot): Promise<void> {
    const entity = this.mapper.toPersistence(domain);
    const entityInDB = (await this.em.findOne(this.entityType, entity.id)) as Type<TPersistenceEntity>;

    if (entityInDB === null) {
      await this.em.persistAndFlush(entity);
      return;
    }

    wrap(entityInDB).assign(entity);
    this.em.persistLater(entityInDB);
    await this.em.flush();
  }

  public async remove(domain: TAggregateRoot): Promise<void> {
    const entity = this.mapper.toPersistence(domain);
    const entityInDB = await this.em.findOne(this.entityType, entity.id);

    if (entityInDB === null) return;

    // for soft delete
    entity.deletedAt = new Date();
    wrap(entityInDB).assign(entity);
    await this.em.persistAndFlush(entityInDB);
  }
}

// Base.repository.spec.ts

import { MikroORM } from 'mikro-orm';
import { Test as NestTest } from '@nestjs/testing';

import { TestRepository } from '@shared/infra/persistence/repoitory/test/repository/Test.repository';
import { MikroOrmPersistenceTestingModule } from '@shared/infra/persistence/MikroOrmPersistence';
import { TestMapper } from '@shared/infra/persistence/repoitory/test/mapper/Test.mapper';
import { Test } from '@shared/infra/persistence/repoitory/test/domain/Test';
import { TestId } from '@shared/infra/persistence/repoitory/test/domain/TestId';
import { TestValueObject } from '@shared/infra/persistence/repoitory/test/domain/TestValueObject';
import { Test as TestEntity } from '@shared/infra/persistence/repoitory/test/entity/Test.entity';
import { TestValueObject as TestValueObjectEntity } from '@shared/infra/persistence/repoitory/test/entity/TestValueObject.entity';

describe('BaseRepository', () => {
  let orm: MikroORM;
  let repository: TestRepository;

  beforeAll(async () => {
    const moduleRef = await NestTest.createTestingModule({
      imports: [MikroOrmPersistenceTestingModule],
      providers: [TestMapper, TestRepository],
    }).compile();
    orm = moduleRef.get<MikroORM>(MikroORM);
    repository = moduleRef.get<TestRepository>(TestRepository);
  });

  afterAll(async () => {
    await orm.close();
  });

  describe('.findById()', () => {
    beforeEach(async () => {
      const testValueObject1 = new TestValueObjectEntity();
      testValueObject1.value = '1';
      const testValueObject2 = new TestValueObjectEntity();
      testValueObject2.value = '2';

      const testEntity = new TestEntity();
      testEntity.id = 'id';
      testEntity.bool = true;
      testEntity.createdAt = new Date();
      testEntity.testValueObjects.add(testValueObject1);
      testEntity.testValueObjects.add(testValueObject2);
      await orm.em.persistAndFlush(testEntity);
    });

    afterEach(async () => {
      const result = await orm.em.findOne(TestEntity, 'id');
      if (result) {
        result.testValueObjects.set([]);
        await orm.em.persist(result);
        await orm.em.removeEntity(result);
        await orm.em.flush();
      }
    });

    it('should return domain that match id', async () => {
      const test = await repository.findById(new TestId('id'));
      expect(test).toBeInstanceOf(Test);
      expect(test?.id).toEqual(new TestId('id'));
      expect(test?.bool).toEqual(true);
      expect(test?.testValueObjects).toHaveLength(2);
      expect(test?.testValueObjects[0].value).toEqual('1');
      expect(test?.testValueObjects[0].primaryKey).not.toBeNull();
      expect(test?.testValueObjects[1].value).toEqual('2');
      expect(test?.testValueObjects[1].primaryKey).not.toBeNull();
    });
  });

  describe('.save()', () => {
    let test: Test;

    beforeEach(async () => {
      test = new Test(new TestId('id'), false, [new TestValueObject('1'), new TestValueObject('2')], new Date());
    });

    afterEach(async () => {
      const result = await orm.em.findOne(TestEntity, 'id');
      if (result) {
        result.testValueObjects.set([]);
        await orm.em.persist(result);
        await orm.em.removeEntity(result);
        await orm.em.flush();
      }
    });

    it('should insert domain to database when domain doesn`t exist in database', async () => {
      await repository.save(test);
      const result = (await repository.findById(new TestId('id'))) as Test;
      expect(result.id).toEqual(new TestId('id'));
      expect(result.bool).toEqual(false);
      expect(result.testValueObjects).toHaveLength(2);
      expect(result.testValueObjects[0].value).toEqual('1');
      expect(result.testValueObjects[0].primaryKey).not.toBeNull();
      expect(result.testValueObjects[1].value).toEqual('2');
      expect(result.testValueObjects[1].primaryKey).not.toBeNull();
    });

    it('should update domain to database when domain exist in database', async () => {
      await repository.save(test);
      const testToChange = (await repository.findById(new TestId('id'))) as Test;

      testToChange.changeBool(true);
      testToChange.addTestVO(new TestValueObject('3'));
      await repository.save(testToChange);
      const result = (await repository.findById(new TestId('id'))) as Test;
      expect(result.id).toEqual(new TestId('id'));
      expect(result.bool).toEqual(false);
      expect(result.testValueObjects).toHaveLength(3);
      expect(result.testValueObjects[0].value).toEqual('1');
      expect(result.testValueObjects[0].primaryKey).not.toBeNull();
      expect(result.testValueObjects[1].value).toEqual('2');
      expect(result.testValueObjects[1].primaryKey).not.toBeNull();
      expect(result.testValueObjects[2].value).toEqual('2');
      expect(result.testValueObjects[2].primaryKey).not.toBeNull();
    });
  });
});

Well it looks like you are creating new entity with the same static id (string “id”), in before each hook. The error is from the db itself, as you are trying to create multiple records with same unique primary key.

Right, but you then remove it...
Could you create a reproduction repository for me so I can try myself?

@B4nan
Thank you for your help.
I prepared repository about working.
https://github.com/seunggu/mikro-orm-issue.git

To be honest I do not really understand why would one want to create so much abstraction on top of the ORM. You are basically creating new data mapper, on top of the MikroORM, which is already a data mapper. Also because of how you do it, you cut yourself from all the nice features that the identity map brings, like comparing entities by identity, not talking about the additional complexity and performance hit.
Maybe EntitySchema would be better suited for you? That way you would define the mapping programatically and you could make the ORM use your own POJO class for representing the entity in memory, without using decorators.
https://mikro-orm.io/docs/entity-schema/
Anyway, your particular problem is in the mapper part, where you create new instance of entity via its constructor:
  public toPersistence(domain: Test): TestEntity {
    const entity = new TestEntity(); // <--- here, this will always result in insert query
    entity.id = domain.id.value; // this has no effect, you set the PK, but ORM still sees it as new method. this is what I mentioned in the first reply here
    entity.bool = domain.bool;
    entity.createdAt = domain.createdAt;

    const testValueObjectEntities = domain.testValueObjects.map(testVO => { // this whole collection replacement will also cause troubles, you are supposed to be working with the collection that is already instanced on the entity, not replace it with new one
      const testValueObjectEntity = new TestValueObjectEntity(); // <--- this will also result in insert queries
      if (testVO.primaryKey) testValueObjectEntity.id = testVO.primaryKey;
      testValueObjectEntity.value = testVO.value;
      testValueObjectEntity.test = wrap(entity).toReference();
      return testValueObjectEntity;
    });
    entity.testValueObjects = new Collection(entity, testValueObjectEntities);
    entity.testValueObjects.populated(true);
    entity.testValueObjects.setDirty(true);
    return entity;
  }

Then you apply this entity to the one loaded from the database, that is where things break.
    const entity = this.mapper.toPersistence(domain);
    const entityInDB = (await this.em.findOne(this.entityType, entity.id)) as Type<TPersistenceEntity>;
    wrap(entityInDB).assign(entity); // here instead of passing POJO with data, you pass fully functional entity instance that is already wired with its children (in this case 1:m collection items)

The assign method is supposed to be doing what your mapper is. But what you are doing here is to create new entities (instances), they get autowired with the "artificial" entity (entity variable in the code), which you then use to feed the assign method. That results in the ORM seeing 2 Test entities, both with primary key id.
So I guess you should have something like assign method on the mapper level, that would do this for you:
  // in the Test.mapper.ts
  public assign(entity: TestEntity, domain: Test): TestEntity {
    entity.id = domain.id.value;
    entity.bool = domain.bool;
    entity.createdAt = domain.createdAt;
    const testValueObjects = entity.testValueObjects.getIdentifiers();

    for (const testVO of domain.testValueObjects) {
      if (!testValueObjects.includes(testVO.primaryKey!)) {
        const testValueObjectEntity = new TestValueObjectEntity();
        if (testVO.primaryKey) testValueObjectEntity.id = testVO.primaryKey;
        testValueObjectEntity.value = testVO.value;
        testValueObjectEntity.test = wrap(entity).toReference();
        entity.testValueObjects.add(testValueObjectEntity);
      }
    }

    return entity;
  }

    // in the base repository
    const entityInDB = (await this.em.findOne(this.entityType, domain.id)) as Type<TPersistenceEntity>;
    this.mapper.assign(entity, domain);

That way the repository tests are passing, you just have some wrong assertions there:
it('should update domain to database when domain exist in database', async () => {
  await repository.save(test);
  const testToChange = (await repository.findById(new TestId('id'))) as Test;

  console.log('bb');
  testToChange.changeBool(true);
  testToChange.addTestVO(new TestValueObject('3'));
  await repository.save(testToChange);

  console.log('cc');
  const result = (await repository.findById(new TestId('id'))) as Test;
  expect(result.id).toEqual(new TestId('id'));
  expect(result.bool).toEqual(true); // this was false
  expect(result.testValueObjects).toHaveLength(3);
  expect(result.testValueObjects[0].value).toEqual('1');
  expect(result.testValueObjects[0].primaryKey).not.toBeNull();
  expect(result.testValueObjects[1].value).toEqual('2');
  expect(result.testValueObjects[1].primaryKey).not.toBeNull();
  expect(result.testValueObjects[2].value).toEqual('3'); // this was '2'
  expect(result.testValueObjects[2].primaryKey).not.toBeNull();
});

Sorry to bring up this old issue. I have also been meaning to do something similar.
The reasoning for having separate entities is that in larger and more complex systems, maintaining a clear separation between domain and persistence concerns becomes crucial for managing complexity and ensuring the integrity of the domain logic. This separation allows for independent evolution of the domain and persistence layers, enabling easier testing, swapping out data storage mechanisms, and accommodating changes in business requirements without affecting the entire system.
I'm not saying Mikro-ORM is bad, just the opposite: it's the best ORM I have seen in TS/JS, but using ORM entities directly in the domain layer may seem convenient initially, it can lead to tight coupling and difficulties in managing complexity as the project scales.

@kallekulp are you using using Mikro for DDD? What approach are you using to separate domain/persistence layers?

authors: B4nan ajfranzoia kallekulp seunggu

repo: mikro-orm/mikro-orm


text:
configure is insensitive to FCFLAGS

Specifying FCFLAGS when running configure, for example:
$ FCFLAGS=-O3 FC=ifort ./configure

does not affect what flags are being used when running make. In fact, the flags are always -Wall -O0 -C -fbacktrace, which are the gfortran flags hardwired in src/lib/Makefile.am:
# Items needed specifically by autotools
AM_FCFLAGS = -Wall -O0 -C -fbacktrace

Specifying FC works as expected.
@blippy can you look into this at your convenience? Thanks!

yes. I'll look into it.

I've asked some questions on Stackexchange to see how autotools actually behaves.
The documentation is VERY confusing.

I am discussing this issue over at http://stackoverflow.com/questions/35117315/so-what-is-am-fcflags , if you're interested. The consclusion so far is that I shouldn't set AM_FCFLAGS.
I will investigate further.

I "think" this is now fixed. I've done my own testing, and it looks OK.
It could definitely use some testing by others though, esp. where other compilers are concerned. I have not been able to perform configuration tests in the presence of alternative compilers.

Right, I believe this is fixed, I just forgot to close the issue few days ago. Thanks!!

authors: blippy milancurcic

repo: milancurcic/datetime-fortran


text:
Update Scala to 3.0.0-RC1

I think we should not let the implementations in dotty-staging and this one diverge much.
I cherry-picked their commits, and I added a couple of more commits to clean things up.

Thanks for making a start on this ... I've got some time to move things along next week.

This looks great ... I'm going to merge as-is, then follow up with an additional tweak from @smarter, dependency updates and switch to github actions.

authors: julienrf milessabin

repo: milessabin/shapeless


text:
Smartlife fan cannot be detected/reflected on hoobs

Describe the bug
Using this plugin with HOOBS to control my fan on smartlife (1 device only) however the HOOBS unable to detect any device after installing. But no errors can be found on the log.
Steps To Reproduce
7/19/2021, 6:18:44 PM: tuyawebbridge stopping
7/19/2021, 6:18:48 PM: Tuya Web Bridge starting
7/19/2021, 6:18:50 PM: Tuya Web BridgeLoaded plugin '@milo526/homebridge-tuya-web'
7/19/2021, 6:18:50 PM: Tuya Web BridgeLoading 1 platforms...
7/19/2021, 6:18:51 PM: Tuya Web BridgeBridge is running on port 51826.
Plugin Version
1.0.1
Homebridge Config
{
"accessories": [],
"platforms": [
{
"options": {
"password": "MY PASSWORD",
"countryCode": "65",
"platform": "smart_life",
"username": "MY USERNAME"
},
"name": "TuyaWebPlatform",
"platform": "TuyaWebPlatform",
"scenes": false
}
]
}

Device Config
Getting credentials
Got credentials
{   'access_token': 'EUheu1603710099811zzA7oBTIQYlaCEI',
'expires_in': 864000,
'refresh_token': 'EUheu1603710099811zzA7oU21nJfXif3',
'token_type': 'bearer'}
Getting devices
Got devices
{   'header': {'code': 'SUCCESS', 'payloadVersion': 1},
'payload': {   'devices': [   {   'data': {},
'dev_type': 'scene',
'ha_type': 'scene',
'id': 'o4sCcqwiudT6sPID',
'name': '\"Smart Ceiling Fan\" Wind '
'Speed Level: Level 1'}],
'scenes': []}}
!!! NOW REMOVE THIS FILE, SO YOUR CREDENTIALS (username, password) WON'T LEAK !!!

I’m sorry but the Issue have not been resolve.

Hi. Anybody can advise me on the issue?

Hi Milo Cesar Sir, can you please advise on my issue if possible. Thanks a million.

Your original post shows that no devices are exposed. Sadly it seems that Tuya does not expose your devices via the HomeAssistant API.
Since im not affiliated with Tuya there is nothing I can do to change this.

Hi Sir, thanks for the reply. I did not know my device was not expose to Tuya.
Under Device Config under which line do i know if the device is expose to Tuya?
Under Payload line??


text:
Enable debug log

Signed-off-by: yudong.cai yudong.cai@zilliz.com

/kind improvement

/lgtm
/approve

authors: cydrain liliu-z

repo: milvus-io/knowhere


text:
[Suggestion] Remake search.md by adding params, etc.

Add relevant details to user guide pages.

Close via #672

repo: milvus-io/milvus-docs


text:
Error with: local variable 'total_vectors' referenced before assignment

使用milvusdm迁移collection
源和目标节点版本均为0.10.3（源为单机版、目标为集群版）
报错信息：Error with: local variable 'total_vectors' referenced before assignment
M2M配置信息如下：
M2M:
  # The dest-milvus version.
  milvus_version: 0.10.3
  # Working directory of the source Milvus.
  source_milvus_path: '/data0/milvus'
  mysql_parameter:
    host: '172.18.248.189'
    user: 'root'
    port: 3306
    password: '123456'
    database: 'milvus'
  source_collection: # specify the 'partition_1' and 'partition_2' partitions of the 'test' collection.
    tidea_is_sample:
      - ''
  dest_host: '172.18.151.165'
  dest_port: 19531
  mode: 'skip' # 'skip/append/overwrite'

错误日志：
2021-11-05 21:18:58,140 ｜ DEBUG ｜ read_milvus_meta.py ｜ connect_mysql ｜ 20 ｜ Successfully connect mysql
2021-11-05 21:18:58,142 ｜ INFO ｜ milvus_to_milvus.py ｜ transform_milvus_data ｜ 38 ｜ Ready to transform all data of collection: tidea_is_sample/partitions: ['']
2021-11-05 21:18:58,143 ｜ DEBUG ｜ read_milvus_meta.py ｜ get_collection_info ｜ 72 ｜ Get collection info(dimension, index_file_size, metric_type, version):((512, 1073741824, 1, '0.10.3'),)
2021-11-05 21:18:58,147 ｜ DEBUG ｜ read_milvus_data.py ｜ read_milvus_file ｜ 89 ｜ Reading milvus/db data from collection: tidea_is_sample/partition:
2021-11-05 21:18:58,148 ｜ DEBUG ｜ read_milvus_meta.py ｜ get_collection_dim_type ｜ 96 ｜ Get meta data about dimension and types: ((512, 1),)
2021-11-05 21:18:58,148 ｜ DEBUG ｜ read_milvus_meta.py ｜ get_collection_segments_rows ｜ 109 ｜ Get meta data about segment and rows: ()
2021-11-05 21:18:58,149 ｜ ERROR ｜ milvus_to_milvus.py ｜ transform_milvus_data ｜ 44 ｜ Error with: local variable 'total_vectors' referenced before assignment

You can refer to #32.

repo: milvus-io/milvus-tools


text:
Log should display the current cuckoo size

Currently the cuckoo size is statically set to 30 in the logs. https://github.com/mimblewimble/grin-miner/blob/2d1de880566a081f75489106c538479576db2f04/src/bin/mining.rs#L86

This should be closed

repo: mimblewimble/grin-miner