New Feature - Windows Support

Hey, just wanted to let you know, that i am working on the windows part of this. I havent forked the project yet, but will do once i am finished.
So far everything seems to be working, though starting powershell from the batch file with the arguments and everything correct gave me some headache, aswell as some other things. But i am quite sure, i will be done soon and hopefully have everything working by then.
But i wanted to know 2 things:

I havent signed my commit ever, so i dont know, how this works, could you please explain this? And why you want this? It feels like it makes i way harder for people to contribute to this project although its quite cool.
I saw you have your license information in every file, should i add something similar to files from me aswell? I would just copy/paste yours but replace your name with mine?

Hey, just wanted to let you know, that i am working on the windows part of this. I havent forked the project yet, but will do once i am finished.

Thank you!!! My backlog is quite big at the moment.

So far everything seems to be working, though starting powershell from the batch file with the arguments and everything correct gave me some headache, aswell as some other things. But i am quite sure, i will be done soon and hopefully have everything working by then.

Haha.. take your time. I couldn't setup powershell on my Debian system because MSFT Powershell's telemetry. Can't risk it.

I havent signed my commit ever, so i dont know, how this works, could you please explain this? And why you want this? It feels like it makes i way harder for people to contribute to this project although its quite cool.

I'm not sure how it works on Windows. To allow a signed commit, you need not just git but also gpg with your own key. I did a maintenance back in the day here for GPG (on how to create the key and protecting it):  https://sites.google.com/view/chewkeanho/guides/gnupg
or you can refer to GitHub docs:
https://docs.github.com/en/authentication/managing-commit-signature-verification/generating-a-new-gpg-key
Then in .git/config, you need to add something like this:
[user]
        name = (Holloway) Chew, Kean Ho
        email =<EMAIL_ADDRESS>        signingkey = YOUR_PUBLIC_GPG_KEY_ID_HERE

On Linux, we have an agent called gpg-agent that helps maintain a session. Otherwise, you have to unlock your GPG Key for signing with password every time you commit.
On GitHub, please remember to add your public key as guided here:
https://docs.github.com/en/authentication/managing-commit-signature-verification/adding-a-gpg-key-to-your-github-account
Don't worry, this is just a side project. GPG signing is not required but recommended. I suggest you can take the opportunity to explore. Let me know if you need help. =)

I saw you have your license information in every file, should i add something similar to files from me aswell? I would just copy/paste yours but replace your name with mine?

Yeap. Same licenses. The owner is you of course. Something like
Copyrights <YEAR_WHEN_PR_IS_RAISED> Full Name with Comma indicator <Email>

....BSD License notice...

Because your script is a copyrightable item on its own and for preventing IP hijacking, that's why I maintain per file basis. If the PowerShell or Batch script commenting system does not support it, then it's okay not to include. Function first.

FYI, I'm flexible in the model's config data file (e.g. https://github.com/hollowaykeanho/Upscaler/blob/main/models/upscayl-realesrgan-x4plus-anime.sh)
It's currently written in POSIX script format but I'm open for adjustment (e.g. convert to a common format) in case the efforts are too much on your side.

FYI, I'm flexible in the model's config data file (e.g. https://github.com/hollowaykeanho/Upscaler/blob/main/models/upscayl-realesrgan-x4plus-anime.sh)
It's currently written in POSIX script format but I'm open for adjustment (e.g. convert to a common format) in case the efforts are too much on your side.

Nah, i am fine with the format, i can work with that.
I am so far finished with the ground work, but i need to adjust the code a bit, refactor, cleanup some stuff and especially add error handling. Thats something i have skipped. But so far everything seems to be working.
Afterwards i will look into commit signing, cant be that hard on windows. And push to my fork, but i will let you know when i am done.

Ok, i think i am finished. I was even able to add a gpg key and sign the commit.
Pls take a look at my form here https://github.com/Joly0/Upscaler
So far i tried to make the scripts work 1:1 like yours, though i have not added a lot of error handling (though the most important parts are there). Merging should be fine, but please take a look at my work first.
So far i was able to handle the exact same commands you used for linux to work with powershell and same for the models/*.sh files, no changes are needed, though i cant confirm this will stay like this in the future if things change massively

I reviewed your codes. Here are some reqeusts:
https://github.com/Joly0/Upscaler/blob/main/init/windows.ps1:
Line 4
add your contact channel (e.g. email or github). Examples: https://github.com/ZORALab/Hestia/blob/experimental/hestiaGO/hestiaINTERNAL/hestiaMATH/Float64.go
If you want to use github profile, use a bracket like Copyright (c) 2023, Joly0 (https://github.com/Joly0).
If you want to use an email, use the angle bracket like Copyright (c) 2023, Joly0<EMAIL_ADDRESS>Function Naming
Line 56 - use dash instead of underscore. The rest were cosistently using dashes. No rules on _ or - but being consistent is one.
Line 63, 83 - add dash after the 2nd word. Consistencies.
Quik question: is it possible to map the naming to be the same as the posix script? If not it's okay...can work the other way round.
Tab Spacing
Line 221, 222 - indent inconsistencies.
Line 86 - 100 - definitely indent inconsistencies.
Line 287-290 - definitely indent inconsistencies.
Line Spacing
Line 68, Line 76, Line 80, Line 112, Line 118, Line 122, Line 133, Line 158, Line 162, Line 173,  - give 1 line spacing before for ease of readability.
Line 84 - remove line spacing.
Bracket Spacing
Line 308, 313, 318, 322, 356, 335 - no need extra spacing after the open parenthesis.
Inline braces
Line 192 - expand it like Line 198. Don't hide anything into 1 line. If can, move Line 192 down to Line 198 for clarity.
Spelling
Line 181, Line 177,
FFMPEG
Line 254 - I see you had removed the -loglevel error argument compared to mine's line 456 https://github.com/Joly0/Upscaler/blob/main/init/unix.sh#L456
Is it working differently on Windows? Mine is as follows:
u0:Upscaler$ ffprobe -show_entries stream=pix_fmt -of csv=p=0 tests/image/sample-01.jpeg
ffprobe version 4.3.6-0+deb11u1 Copyright (c) 2007-2023 the FFmpeg developers
  built with gcc 10 (Debian 10.2.1-6)
  configuration: --prefix=/usr --extra-version=0+deb11u1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100
Input #0, image2, from 'tests/image/sample-01.jpeg':
  Duration: 00:00:00.04, start: 0.000000, bitrate: 40901 kb/s
    Stream #0:0: Video: mjpeg (Baseline), yuvj420p(pc, bt470bg/unknown/unknown), 768x768 [SAR 1:1 DAR 1:1], 25 tbr, 25 tbn, 25 tbc
yuvj420p

u0:Upscaler$ ffprobe -loglevel error -show_entries stream=pix_fmt -of csv=p=0 tests/image/sample-01.jpeg
yuvj420p

With -loglevel error it only cherry-pick the value.
Error Handling
I just checked the critical ffmpeg and ffprobe command checking + the binary programs. Since the checking is inside, I considered it pass. =)
If you're referring to the pretty printing from _print_status function, take your time.
Test Scripts + Files
There is an internal test scripts + files made available in tests/ directory. See if you can bring it up and run a benchmark. I use that benchmark.sh to do script testing and also capturing benchmark so that end-users can make an informed choice.
Once done, I consider your scripts are stable enough for use.

Once again, thanks for the efforts and commitments.
Don't need to rebase (unless you know what you're doing). I'm ok with a new commit stating about new learning.

Thank your for your feedback. I will look into it and fix it.
I have already tried to run the test files, but not with the benchmark.sh file, rather manually, and so far that did work. But i will try to test it. Unfortunately i am in vacation now and the laptop i am using is quite on the weak side for such tasks 😅

No hush. Enjoy your vacation. =)
I'll convert the benchmark.sh file with the polygot script so that it will be available for you as well.

Ok, i think i got everything fixed now.
Just some side-notes:

I could match the same function names as in the posix script, but those are not using powershell naming conventions, so i sticked to that, also the reason the functions now dont have _ (for example here https://github.com/Joly0/Upscaler/blob/f25b7e86b7b53897f31de5729d5afe5722e21ca0/init/windows.ps1#L56). I would like to stick to the naming conventions for that
Loglevel was indeed a copy/paste issue on my side, should be correct
Somehow indentation issues appeared after pushing. Locally everything was correct, hopefully now its fine aswell
I could implement __print_status, but i thought thats overkill and not really necessary, so i stick to Write-Host with -ForegroundColor
benchmark scripts doesnt work for me, i keep getting "Entered time cannot be accepted."-errors. Is there something wrong with this https://github.com/hollowaykeanho/Upscaler/blob/af46b3e6697db2cda666fb17b2b99f7ff4c7db04/tests/benchmark.cmd#L63 ? So i was unable to test that

Everything else should be right now and can be merged imo

I could match the same function names as in the posix script, but those are not using powershell naming conventions, so i sticked to that, also the reason the functions now dont have _ (for example here https://github.com/Joly0/Upscaler/blob/f25b7e86b7b53897f31de5729d5afe5722e21ca0/init/windows.ps1#L56 ). I would like to stick to the naming conventions for that

Ok. No problem. Stick to PowerShell convention. Functionality first.

Loglevel was indeed a copy/paste issue on my side, should be correct
Somehow indentation issues appeared after pushing. Locally everything was correct, hopefully now its fine aswell

Much cleaner now. Patch merged. Thank you. =)
Oh yeah, can you give me your github version email address please? (I'm aware you're not displaying your email for privacy concern). Attributing you as co-author. See: https://github.blog/2018-01-29-commit-together-with-co-authors/
It's the github version, not the personal/primary one. Should be availble under "Settings > Emails > Keep my email addresses private" section.

I could implement __print_status, but i thought thats overkill and not really necessary, so i stick to Write-Host with -ForegroundColor

Yeah it's a low priority thing (good to have). I'm much more happy to accept your code enabling the project for Windows user. =)

benchmark scripts doesnt work for me, i keep getting "Entered time cannot be accepted."-errors. Is there something wrong with this

I haven't test the Windows part. Please feel free to amend it as required. The process I thought of was:

capture start time
run the benchmark command
capture end time
calculate duration in minutes / seconds
dump out value

It should be batch script calling that start.cmd command (like the way we want user to call).

Here is the private mail address github is showing me:
<EMAIL_ADDRESS>Regarding the benchmark tests i will try to test them today or tomorrow, maybe i have some free time during vacation stuff to do so without annoying my gf to much 😅 but i will let you know once i am finished.
I might be able to spin up a vm on my server to test with an nvidia quadro t600, should be equivalent to a gtx 1650 or 1660 (not sure). That should be faster than my igpu only laptop and i have a friend who has a nvidia 3090ti and could maybe benchmark on that

Regarding the benchmark tests i will try to test them today or tomorrow, maybe i have some free time during vacation stuff to do so without annoying my gf to much sweat_smile but i will let you know once i am finished.

Haha.. Enjoy the trip ya.

I might be able to spin up a vm on my server to test with an nvidia quadro t600, should be equivalent to a gtx 1650 or 1660 (not sure).

Don't have to intentionally spin a cloud server and burn through money. The ideal case is conventional laptop or pc can use the AI program without bringing in the expensive big guns.

i have a friend who has a nvidia 3090ti and could maybe benchmark on that

Sure. Same rules: don't burn money because of benchmarks. Tough economy these days.

Btw, while trying to run the benchmark, i found some issues in the benchmark script and in my script aswell. So i made another commit to adjust that. Looks like its running thought now, though benchmark takes a while, so i wont run the whole thing again now, but it goes through now atleast.
And i found some duplicate arguments in your last ffmpeg command aswell, but didnt fix that, because i didnt want to break anything, so i will leave that to you.

And i found some duplicate arguments in your last ffmpeg command aswell, but didnt fix that, because i didnt want to break anything, so i will leave that to you.

Line number?

Btw, while trying to run the benchmark, i found some issues in the benchmark script and in my script aswell. So i made another commit to adjust that. Looks like its running thought now, though benchmark takes a while, so i wont run the whole thing again now, but it goes through now atleast.

Haha. I usually leave it run overnight so that I can do things elsewhere.
Yeah. Please proceed. Once you updated it please add the co-authored-by:  signed off and raise a pull request for this one like https://github.com/hollowaykeanho/Upscaler/commit/fcf3d6133617feca5618dc997449f13b0b2fe518. Reason:
Appearently, GitHub only recognizes pair-progrmaming via its pull request so it wasn't a choice. =.=" I can't leave you empty handed in return. Not my style.
Don't worry, I will deal with the signing signatures after the pull request.

Line number?

https://github.com/hollowaykeanho/Upscaler/blob/fcf3d6133617feca5618dc997449f13b0b2fe518/init/unix.sh#L502-L513C1

Yeah. Please proceed. Once you updated it please add the co-authored-by:  signed off and raise a pull request for this one like fcf3d61.

Ok, so i have already commited and pushed prior to your comment. What do i have to add where to fulfill the github needs now?

Hmm, just in case... add me into your repo. I'll push some stuff before the pull request.

https://github.com/hollowaykeanho/Upscaler/blob/fcf3d6133617feca5618dc997449f13b0b2fe518/init/unix.sh#L502-L513C1

Oh that's not duplicate. FYI, FFMEG's input has a positional meaning. What it implies there is to take both the video and the upscale frame images as simultenous inputs where the video is the primary reference. Then apply the resizing frame + map the frame image on top filter in accordingly. No worries. XD

Standing by waiting for your user addition. Please remember to set me as editor role.

Granting access --> Repo's settings > Collaborator > add "hollowaykeanho" > set to edit permission. This should be fine. I'll handle the rest for you. =)

Thank you. Here you go! =) I'll rebase and re-write all the commits to match the latest.

@Joly0, we managed to run the test with the PowerShell script but appearently the init/windows.ps1 is not able to call the binary file... which is working fine on the system (see below):

Are the arguments passing done correctly when calling the binary compared to bash (e.g. -f instead of --format etc)?
I just repaired the start.cmd alongside with its permission thing. It should be ok.

Hm, it worked for me. Why do you think it isnt working correctly? For the powershell script i decided to hide the program window entirely because it is short-lived and doesnt give a lot of useful information. To see if it actually works (which it should) you could remove "-WindowStyle Hidden" here https://github.com/hollowaykeanho/Upscaler/blob/291d08d9cfef6f7226c7ac63d3e09eb543cda37f/init/windows.ps1#L186

I just realized powershell don't provide feedback using Start-Process cmdlet from (https://lazyadmin.nl/powershell/start-process/).
I just altered the invoke instruction into
+       & "$program" @(
+               "-i", $input_path,
+               "-o", $output_path,
+               "-s", $scale,
+               "-m", $repo"\models",
+               "-n", $model,
+               "-f", $format
+       )

Currently testing with my friend. The binary feedback is very important. It shows GPU types and progression.

Would be smart to add
if ($LastExitCode) { Exit }
after the command.
Maybe Write-Host with the error message before exiting, but i would have to check, how to properly output the error message of an external programm invoked with &

Would be smart to add
if ($LastExitCode) { Exit }
after the command.

You already got it covered. =)

Maybe Write-Host with the error message before exiting, but i would have to check, how to properly output the error message of an external programm invoked with &

PowerShell can't stream the binary's output real time? That's interesting. I was stunned and speechless after reading through that blog post.
Still pending my friend's test result before I rebase another progress.
My next attempt would be Invoke-Command if fails.. from here https://stackoverflow.com/questions/50995058/powershell-capture-output-from-invoke-command-running-exe-on-remote-machine
Will keep you posted.

PowerShell can't stream the binary's output real time? That's interesting. I was stunned and speechless after reading through that blog post.

Ye, powershell can sometimes be terrible with executing third party applications via cli and catch their output. There are multiple different ways like . and & or invoke-expression, invoke-command, start-process. All of them have their advantages and drawbacks. I sticked with start-process as it was simple and i didnt thought the output would be necessary, but you are totally right, that it is important.
But ye, invoke-command might be the best to handle the stream imo
Tbh, batch is even worse in my opinion, powershell is better in every way. I couldnt have done this so easily with batch, so we must find a way to handle this on powershell

But ye, invoke-command might be the best to handle the stream imo
Tbh, batch is even worse in my opinion, powershell is better in every way. I couldnt have done this so easily with batch, so we must find a way to handle this on powershell

No worries. We are definitely staying in PowerShell. All we need to do is to replace that Start-Process with something sensible. I'm reverting the patch but I need your help on this one since you have a Windows machine over there (can be a lot faster). The patch I did was as below:
commit 2e0d5aecc5960f97f9e94db4f2fe0cfd4a94e23a
Author: (Holloway) Chew, Kean Ho<EMAIL_ADDRESS>Date:   Sun May 21 17:51:06 2023 +0800

    S

diff --git a/init/windows.ps1 b/init/windows.ps1
index e050186..2120241 100644
--- a/init/windows.ps1
+++ b/init/windows.ps1
@@ -182,8 +182,14 @@ function Get-IO {
 }

 function Invoke-Upscale($input_path, $output_path) {
-	$params = "-i `"$input_path`" -o `"$output_path`" -s $scale -m `"$repo\models`" -n $model -f $format"
-	Start-Process -FilePath $program -ArgumentList $params -Wait -WindowStyle Hidden
+	& "$program" @(
+		"-i", $input_path,
+		"-o", $output_path,
+		"-s", $scale,
+		"-m", $repo"\models",
+		"-n", $model,
+		"-f", $format
+	)
 }

 function Invoke-Program {
@@ -342,4 +348,4 @@ if (-not (Get-IO) ) {

 if (-not (Invoke-Program) ) {
 	Exit
-}
\ No newline at end of file
+}

Remember, it has to be piped in since the binary is reporting progress, not the result capturing like most SO recommended =.=".
No test results yet. Both of us collapsed early yesterday night =.=" too tired.

Hey, dropping to give you 2 some cheers! =)

So i have tried multiple things now, using &, invoke-command, etc. But none of them really suited the case really. Either the output is not shown at all, as powershell can only redirect output of an executable to a variable without displaying it, or displaying the output, but cant redirecting it to a variable for error handling. Also & in my opinion results in a cluttered output, as it outputs to the same window, start-process opens a new powershell window.
In the end, i think this should work:
function Invoke-Upscale($input_path, $output_path) { 	$params = "-i "$input_path" -o "$output_path" -s $scale -m "$repo\models" -n $model -f $format" 	$process = (Start-Process -FilePath $program -ArgumentList $params -Wait -PassThru) 	if ($process.ExitCode) { 		Write-Host "Error occured while upscaling:" $input_path 		Exit 	} }
That way a new powershell window is opened to execute the program, the output is shown properly and we can exit the whole process if the upscaler errors-out.
In my opinion thats the most elegant solution for this.

I repaired your code snippet. Try use triple back ticks next time. Super useful. =)
I committed your changes already here in this patch: dafc12f655ad393f24d8ce66125db29dfce285a8
Will have my friend to run a test again and then benchmark it. I'll keep you posted.

@Joly0 , would you mind help me run the tests/benchmark.cmd overnight and update me with 2 data please?

Statistics
Graphics card, VRAM, CPU type and RAM size

Hands are way too tight here. =x

Btw, i am curious why you change this https://github.com/hollowaykeanho/Upscaler/blob/331a23f773b4e9b8bcb963dd97bf3854179b4f69/init/windows.ps1#L206-L210 ?

Ooh... make it common output across terminals... easier to communicate with end-users.

Hm, understandable, but imo unnessecary to tell the user that video mode is not set. I mean, the user should know that and it makes the output more cluttered.

Especially the formatting is not great imo.
If output for both scenarios is desired, why not simply "Write-Host "Video mode set"" and "Write-Host "Video mode is not set"".
The current way makes it unintuitive to read for me

Hmm.. what about this one (generated from UNIX side replacing it to Yes/No)? If it works I do want to replace max scale with the real infinity unicode if allows.

I'm open for status reporting re-design. Not that hard compared to what we been through.
At the moment I'm dumping all the vitals for user to do sharp decision quick.

the user should know that and it makes the output more cluttered.

HAHAHA. End users. They're quite creative.

Hmm.. what about this one (generated from UNIX side replacing it to Yes/No)? If it works I do want to replace max scale with the real infinity unicode if allows.

Hm, that looks good to me. Easy to read, understandable, not cluttered

I'm open for status reporting re-design. Not that hard compared to what we been through.
Haha, ye, maybe we first get this feature done right and working, afterwards we can discuss such things 😆

HAHAHA. End users. They're quite creative.
You are sooo right

it makes the output more cluttered.

Hm, that looks good to me. Easy to read, understandable, not cluttered

Is the window side printing out the same or similar output at the moment? 0.o I'm assuming those
Write-Host ""

acutally spawns an empty line (\n), right? Otherwise, I need your help to patch it. XD
In that case, I'll push out the Yes/No and N/A printout first on UNIX side to your branch first for you to raise pull request.
Site-note: I managed to pump your pair badge to bronze.

Haha, ye, maybe we first get this feature done right and working, afterwards we can discuss such things

Should be fine now... we're hitting the project limit too. Too bad this project can't execute safe concurrency without actively monitoring the OS resources. It's a different beast.

Ok.. I just pushed to your forked repo: f5d0afd8faf760381677e6036135d7ec1dbe0d64
Final terminal output would be:
Image

Video (start fresh)

Video (continue)

Hm, looks like i have to take a look first at the last ffmpeg command. Somethings not right there

pathing problem... missing frames after the _workspace directory. full path should be:
tests\vides\sample-1-640x360-upscaled_workspace\frames\0%d.webp

Ah, you are right. I will test it again later. My gf has something planned for our last vacation day, so i will report back later today with my results.

Btw, i found some other bugs aswell and fixed them locally. I am currently running the benchmark to see if everything runs through. If it does, i´ll push my changes to my fork for you and post my results and specs here

Ok, i dont know, but this never finished in 61 seconds

So i guess somethings wrong with the time calculation

Ok, i got it right i guess. Took some code from here https://gist.github.com/jcefoli/57881d79aa4c7548324e

Ok, i dont know, but this never finished in 61 seconds

Yeap. Definitely a bug. It means on unix side we will have problems too. =.="

Ok, i have pushed my fixes, but my calculation formula was wrong aswell, so i left it as is for now.
I am going to sleep now, if you find something i can test that tomorrow, if not, i will probably have time to look into it tomorrow afternoon when i am back at home.

Ok, i have pushed my fixes, but my calculation formula was wrong aswell, so i left it as is for now.

Got it.. I'll handle it here and pint you back.

I am going to sleep now, if you find something i can test that tomorrow, if not, i will probably have time to look into it tomorrow afternoon when i am back at home.

Thank you. I'll keep you posted. Have a great rest!

I applied https://stackoverflow.com/questions/673523/how-do-i-measure-execution-time-of-a-command-on-the-windows-command-line to fix the benchmark.cmd timing calculation problem (Hopefully it works).

I will give the UNIX part run again tonight (my time).

Ok, it did run through.

This was running in a vm on my local server, i might be able to test it on my laptop-egpu combo later aswell. But the specs of the vm is
GPU: Nvidia Quadro T600 (GTX 1650 equivalent)
VRAM: 4GB
CPU: Ryzen 9 7950x (but only with 8 cores + SMT; normally this would be 16 cores with SMT). Equivalent would be a Ryzen 7 7800X
RAM: 22GB

Haha. It's okay to release now with the statistics. Please be my guest, raise a pull request. I'll be happy to merge into the main repo anyitime.
Vielen Dank für Ihre Mühe (not chatGPT; took me a while). =)

i might be able to test it on my laptop-egpu combo later aswell.

Yeap. Sure. The more stat the better.  I suggest we open a new ticket for this transaction.

Ok, so i open a simple pr from my fork to your origin repo? What about the signing? Wasnt this an issue?

What about the signing? Wasnt this an issue?

I will sign on behalf using my key.
Appearently on GitHub: Each owner signs his/her own repository when accepting patches. They are already signed and on stand-by. The whole idea of pull request is quite silly.
The pull request is for your GitHub profile badges attribution. =)

Tada: https://github.com/hollowaykeanho/Upscaler/releases/tag/0.6.0
Thanks for making it happens. We can close the ticket now. I'll open the discussion tab so that we can chit-chat over there. =)

Nice, finally. Took some time, but i guess it was worth it in the end. Happy to see this released now :D

Happily closing the ticket now.


End your search test

As a G-Cloud buyer
I need a fixed list of services
so that I can start the shortlisting process
Ticket: https://trello.com/c/gs2I3Cj2/676-end-your-search

@samuelhwilliams - is this fine to merge?


Add misisng yourkit

I would put it in the readme of the main jabref repo. We don't use it that often to warrant such a high-profile ad placement, and the monetary equivalent is also less of e.g what we get from azure.

We need to


maybe accept queries with a list/tuple/vector of Julia types (conversion targets)

It would be a nice low-level assist from the DBAPI to SELECT fields from the DB and, before returning the result, convert(TargetType, field)ing the field values to the types the queryor will use.

Yes, I have been thinking about a version of fetchinto_ that takes a container type and constructs and returns that container. I think that would satisfy this?
Thanks for contributing :) feel free to open any other feature request or idea issues, as I want to take many perspectives into account with this package.

If by container you mean https://github.com/pluskid/SimpleStructs.jl -- yes if also you can replicate that for multirow responses.
Python DBI2 is not all that compelling -- it is a least likely to offend, erstwhile attempt at genericity.
Times have changed some.  I have no qualm with using it to make sure 'bases are covered'.
What is your opinion of SQLAlchemy (not that that should be the DBI  -- that the DBI should allow such constructions (the Julia way) to become available with more ease and less expertise.

unclosed

Moved the design discussion which is out of the scope of this issue to #6


GEODE-8413: CI failure: MergeLogFilesIntegrationTest.testDircountZero fails on Windows

Fixing directory path formation problem for Windows.  I've tested these changes on a Mac and on a Windows machine.
Thank you for submitting a contribution to Apache Geode.
In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:
For all changes:

[ ] Is there a JIRA ticket associated with this PR? Is it referenced in the commit message?

[ ] Has your PR been rebased against the latest commit within the target branch (typically develop)?

[ ] Is your initial contribution a single, squashed commit?

[ ] Does gradlew build run cleanly?

[ ] Have you written or updated unit tests to verify your changes?

[ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?

Note:
Please ensure that once the PR is submitted, check Concourse for build issues and
submit an update to your PR as soon as possible. If you need help, please send an
email to<EMAIL_ADDRESS>

Since this is a test-only change and the checks that use that test have passed I'm merging this PR before all of the non-required checks have finished.


编译Book demo无法使用画图引擎

已按照说明装好了gnuplot，graphviz等，并将其加入msys2 PATH环境变量，art，book, slide样例都能编译通过，但就是提示找不到画图引擎，而画图引擎在msys2中运行都是没有问题的，提示信息如下。
$ panbook book --style=elegantbook
[NOTE] Welcome to PanBook!
[NOTE] use -V device:(pc|mobile|kindel) to produce different size of pdf
[NOTE] use -V cover:path to use custom cover image
[NOTE] use -V logo:path to use custom logo image
The system cannot find the path specified.
Plot Warning: dot not installed!
The system cannot find the path specified.
Plot Warning: ditaa not installed!
The system cannot find the path specified.
Plot Warning: goseq not installed!
The system cannot find the path specified.
Plot Warning: a2s not installed!
The system cannot find the path specified.
Plot Warning: gnuplot not installed!
The system cannot find the path specified.
Plot Warning: gnuplot not installed!
The system cannot find the path specified.
Plot Warning: asy not installed!
The system cannot find the path specified.
Plot Warning: abcm2ps not installed!
The system cannot find the path specified.
Plot Warning: xelatex not installed!
The system cannot find the path specified.
Plot Warning: gnuplot not installed!
The system cannot find the path specified.
Plot Warning: gnuplot not installed!
The system cannot find the path specified.
Plot Warning: ditaa not installed!
所使用工具版本如下：
xufl8@DESKTOP-PE4CSDO MSYS /d/Latex/PanBook
$ gnuplot --version
gnuplot 5.4 patchlevel 1
xufl8@DESKTOP-PE4CSDO MSYS /d/Latex/PanBook
$ dot -V
dot - graphviz version 2.44.1 (20200629.0846)
xufl8@DESKTOP-PE4CSDO MSYS /d/Latex/PanBook
$ pandoc --version
pandoc.exe <IP_ADDRESS>
Compiled with pandoc-types 1.20, texmath <IP_ADDRESS>, skylighting <IP_ADDRESS>
Default user data directory: C:\Users\xufl8\AppData\Roaming\pandoc
Copyright (C) 2006-2020 John MacFarlane
Web:  https://pandoc.org
This is free software; see the source for copying conditions.
There is no warranty, not even for merchantability or fitness
for a particular purpose.
xufl8@DESKTOP-PE4CSDO MSYS /d/Latex/PanBook
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/opt/bin:/c/Windows/System32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0/:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/c/texlive/2019/bin/win32:/c/Program Files/Pandoc:/d/Latex/PanBook:/c/Program Files/gnuplot/bin:/c/Program Files/Graphviz:/c/texlive/2019/bin/win32:/c/Program Files/Pandoc:/d/Latex/PanBook:/c/Program Files/gnuplot/bin:/c/Program Files/Graphviz 2.44.1/bin

执行
$ which dot
/mingw64/bin/dot

可以直接安装 msys2 版本的 graphviz
pacman -S mingw64/mingw-w64-x86_64-graphviz

执行
$ which dot
/mingw64/bin/dot

可以直接安装 msys2 版本的 graphviz
pacman -S mingw64/mingw-w64-x86_64-graphviz

之前用的是windows下的gnuplot和graphviz，which dot都能显示。现在安装了msys2的gnuplot和graphviz，问题还是和之前一样。
xufl8@LAPTOP-212JLGQI MSYS /e/Latex/book
$ which gnuplot
/mingw64/bin/gnuplot
xufl8@LAPTOP-212JLGQI MSYS /e/Latex/book
$ which dot
/mingw64/bin/dot
xufl8@LAPTOP-212JLGQI MSYS /e/Latex/book
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/opt/bin:/c/Windows/System32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0/:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/c/texlive/2019/bin/win32:/e/Latex/PanBook:/c/Program Files/Pandoc:/mingw64/bin
$ panbook book
[NOTE] Welcome to PanBook!
[NOTE] use -V device:(pc|mobile|kindle) to produce different size of pdf
[NOTE] use -V cover:(1-60|R|N|filepath) select cover background.R=random,N=no cover,filepath=custom cover file
[NOTE] use -V pagestyle:style to set pagestyle
The system cannot find the path specified.
Plot Warning: dot not installed!
The system cannot find the path specified.
Plot Warning: ditaa not installed!
The system cannot find the path specified.
Plot Warning: goseq not installed!
The system cannot find the path specified.
Plot Warning: a2s not installed!
The system cannot find the path specified.
Plot Warning: gnuplot not installed!
The system cannot find the path specified.
Plot Warning: gnuplot not installed!
The system cannot find the path specified.
Plot Warning: asy not installed!
The system cannot find the path specified.
Plot Warning: abcm2ps not installed!
The system cannot find the path specified.
Plot Warning: xelatex not installed!
The system cannot find the path specified.
Plot Warning: gnuplot not installed!
The system cannot find the path specified.
Plot Warning: gnuplot not installed!
The system cannot find the path specified.
Plot Warning: ditaa not installed!
Latexmk: This is Latexmk, John Collins, 17 March 2019, version: 4.63b.
Latexmk: All targets () are up-to-date
[NOTE] book Compile SUCCESSFUL

之前用的是windows下的gnuplot和graphviz，which dot都能显示。现在安装了msys2的gnuplot和graphviz，问题还是和之前一样。
xufl8@LAPTOP-212JLGQI MSYS /e/Latex/book
$ which gnuplot
/mingw64/bin/gnuplot
xufl8@LAPTOP-212JLGQI MSYS /e/Latex/book
$ which dot
/mingw64/bin/dot
xufl8@LAPTOP-212JLGQI MSYS /e/Latex/book
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/opt/bin:/c/Windows/System32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0/:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/c/texlive/2019/bin/win32:/e/Latex/PanBook:/c/Program Files/Pandoc:/mingw64/bin
$ panbook book
[NOTE] Welcome to PanBook!
[NOTE] use -V device:(pc|mobile|kindle) to produce different size of pdf
[NOTE] use -V cover:(1-60|R|N|filepath) select cover background.R=random,N=no cover,filepath=custom cover file
[NOTE] use -V pagestyle:style to set pagestyle
The system cannot find the path specified.
Plot Warning: dot not installed!
The system cannot find the path specified.
Plot Warning: ditaa not installed!
The system cannot find the path specified.
Plot Warning: goseq not installed!
The system cannot find the path specified.
Plot Warning: a2s not installed!
The system cannot find the path specified.
Plot Warning: gnuplot not installed!
The system cannot find the path specified.
Plot Warning: gnuplot not installed!
The system cannot find the path specified.
Plot Warning: asy not installed!
The system cannot find the path specified.
Plot Warning: abcm2ps not installed!
The system cannot find the path specified.
Plot Warning: xelatex not installed!
The system cannot find the path specified.
Plot Warning: gnuplot not installed!
The system cannot find the path specified.
Plot Warning: gnuplot not installed!
The system cannot find the path specified.
Plot Warning: ditaa not installed!
Latexmk: This is Latexmk, John Collins, 17 March 2019, version: 4.63b.
Latexmk: All targets () are up-to-date
[NOTE] book Compile SUCCESSFUL

cd test/lua-filters/dot2image
make latex

看看结果

cd test/lua-filters/dot2image
make latex

看看结果

按照以下代码 修改 extensions/plot/plot.lua ，然后执行，看看输出的结果
diff --git a/extensions/plot/plot.lua b/extensions/plot/plot.lua
index dd8d8a1..da77409 100644
--- a/extensions/plot/plot.lua
+++ b/extensions/plot/plot.lua
@@ -32,7 +32,7 @@ function file_exists(filename)
 end

 function which(command)
-       return os.execute("which " .. command .. ' >/dev/null 2>&1')
+       return os.execute("which " .. command)
 end

 function rsvg(svg, output, format)

按照以下代码 修改 extensions/plot/plot.lua ，然后执行，看看输出的结果
diff --git a/extensions/plot/plot.lua b/extensions/plot/plot.lua
index dd8d8a1..da77409 100644
--- a/extensions/plot/plot.lua
+++ b/extensions/plot/plot.lua
@@ -32,7 +32,7 @@ function file_exists(filename)
 end

 function which(command)
-       return os.execute("which " .. command .. ' >/dev/null 2>&1')
+       return os.execute("which " .. command)
 end

 function rsvg(svg, output, format)

按照上述方法修改后之前找不到的程序的问题消失了，但是编译到最后出现了如下错误：
** WARNING ** No valid name object found.
** WARNING ** Could not find a value in dictionary object.
** WARNING ** Didn't find "endobj".
** ERROR ** pdf_link_obj(): passed invalid object.
不过我根据dockfile，在WSL1 Linux下使用各个程序的linux版本成功配置好了环境，可以成功编译各个demo，包括各种plot扩展。
不想折腾msys2了，非常感谢耐心解答。

按照上述方法修改后之前找不到的程序的问题消失了，但是编译到最后出现了如下错误：
** WARNING ** No valid name object found.
** WARNING ** Could not find a value in dictionary object.
** WARNING ** Didn't find "endobj".
** ERROR ** pdf_link_obj(): passed invalid object.
不过我根据dockfile，在WSL1 Linux下使用各个程序的linux版本成功配置好了环境，可以成功编译各个demo，包括各种plot扩展。
不想折腾msys2了，非常感谢耐心解答。


Revise all the implicit conversions

We might probably want to move them into the corresponding companion objects (if possible) to make the compilation faster for both Finch contributors and Finch users.

I'm happy to help make this happen, but I've encountered some trouble identifying offending code. It seemed like every implicit method I found was already in an object (or trait extended by an object). Would you be willing to help me understand what needs to be fixed?

@vanyacohen, Travis and I are addressed a lot of conversions in #278, but I'm pretty sure something is left. Otherwise, we can just close this issue.

Hi @vanyacohen—one example I just noticed by grepping for implicit def is toOptionalRule in the request package object. Right now you have to import the contents of the package object to get it to apply, and then it's just another implicit conversion in scope that the Scala compiler has to consider all the time. If it were in the ValidationRule companion object (since it has ValidationRule as both source and target), it wouldn't need to be imported and the compiler would only consider it when it needs an implicit conversion to or from ValidationRule.
There are probably at least a few other conversions like this still around.

Thanks @travisbrown! ValidationRule is probably the lowest hanging fruit for this ticket. Once we fix it we can probably close the ticket.

Yes, thanks @travisbrown! I'll go ahead and move toOptionalRule to the ValidationRule companion object and look for similar conversions.


chore: Extract text into YAML file

This is an incomplete extraction of text from the website into a YAML file. Hoping for some help to finish it up. :)

There are still some pieces on the homepage and then most of the donate page. I'm going to finish up the homepage today. If you'd like to work on the donate page, I'd welcome the help.


✨ Pydantic v2 migration, initial implementation

✨ Pydantic v2 migration, initial implementation
Continues from https://github.com/tiangolo/fastapi/pull/9442, but from a branch in this repo, to let me push to it. :nerd_face:
2023-06-16:
Most of the initial implementation is done. Tests are passing locally for both Pydantic v1 and v2.
Still missing:

Set up CI to run both Pydantic v1 and v2
Refactor _compat.py to remove continuous runtime checks for PYDANTIC_V2
Update docs for usage with Pydantic v1 and v2
Deprecations and warnings

📝 Docs preview for commit a1318c481c7c35b59a2891ae6ce08574b8df9754 at: https://648c4aebc9851702789b2e21--fastapi.netlify.app

📝 Docs preview for commit 8b4a258d306fd79c88f94d3b451f966a5ad476e6 at: https://648c708af0fb641b71284db8--fastapi.netlify.app

👀 👍

😲😲😲


nixos/tests/wireguard: tie kernel version to test to default

When wireguard began being tested on multiple kernel versions, the current default version at the time was hard coded: 41bd6d2614749d12ce5ded3e991555b56ea6b2dc.
We should update this and prevent it from becoming stale ever again by computing the default value.
Description of changes

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.11 Release Notes (or backporting 23.11 and 24.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

@ofborg test wireguard


"Plugin ID mismatch" when installing.

Hi.
I get "Plugin ID mismatch" when installing via Obsidian community plugin manager.
Works fine installing via BRAT.

Same here, can't install it through Obsidian

My apologies for the issue @AndyLiu9  and @dneez . A foolish mistake on my part.
I've fixed it now, so I'd appreciate if you would confirm on your ends. I appreciate your patience.

Thanks, now solved!


Dirt Rally 2.0 maxes out VRAM on alt-tab

When tabbing out the second time, the game consumes all VRAM it can acquire on my RTX 3080 10 GB (shown by nvidia-smi). This also leads to my X11 Gnome desktop to start lagging and behaving erroneous. @gofman This bug is a regression from #2675.
Additionally, since this VRAM bug, the host will quickly run out of memory too when debugging via VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation.
steam-690790_alt_tab.log

Can't replicate this on AMD. The game sits at a steady 3.8GB on high settings 1080p
Kernel         : 6.12.4-arch1-1-tsc
CPU            : AMD Ryzen 5 5600H with Radeon Graphics
GPU            : AMD Radeon RX 6600M (RADV NAVI23)
Mesa           : 24.3.1
RAM            : 29 GB
VRAM           : 8192 MB
Proton Version : experimental-9.0-20241206


Fly Execute fails with gzip: invalid magic

I am with the Diego development team and when we try to execute our inigo tests remotely from several machines we quite regularly (especially from my machine in Canada) get the following error when doing the upload step in the fly execute ...
executing build 150754
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:--  0:00:59 --:--:--     0
curl: (18) transfer closed with outstanding read data remaining
gzip: invalid magic
tar: Child returned status 1
tar: Error is not recoverable: exiting now
exit status 2
100 42.1M    0 42.1M    0     0   303k      0 --:--:--  0:02:22 --:--:--  206k
failed

upload request failed: Put https://diego.ci.cf-app.com/api/v1/pipes/3df3e884-3b6c-40ba-6800-e04b061e2fc5: EOF

The run-inigo script we use is as follows ...
#!/bin/bash

set -e

scripts_path=./$(dirname $0)
eval $($scripts_path/get_paths.sh)

echo "checking code for compilation errors..."

pushd $DIEGO_RELEASE_DIR/src/code.cloudfoundry.org/inigo > /dev/null
  for pkg in `find . -maxdepth 1 -type d ! -path . -not -path '*/\.*'`; do
    echo $pkg
    go test -c ./${pkg} > /dev/null
  done
popd > /dev/null

echo "compilation done"

if [ -n "${DIEGO_CI_TARGET}" ]; then
  target="-t ${DIEGO_CI_TARGET}"
else
  target="-t local"
fi

if [ -z "${USE_GARDEN_RUNC}" ]; then
  fly ${target} execute -p -x \
    -c $DIEGO_RELEASE_DIR/scripts/ci/run_inigo_glinux.build.yml \
    -i diego-release=$PWD \
    -i garden-linux-release=$HOME/workspace/garden-linux-release \
    -- "$@"
else
  fly ${target} execute -p -x \
    -c $DIEGO_RELEASE_DIR/scripts/ci/run_inigo_grunc.build.yml \
    -i diego-release=$PWD \
    -i garden-runc-release=$HOME/workspace/garden-runc-release \
    -- "$@"
fi

The run_inigo_grunc.build.yml is as follows:

platform: linux

image: docker:///cloudfoundry/inigo-ci

inputs:
- name: diego-release
- name: garden-runc-release

params:
  GINKGO_PARALLEL: "true" # we check for the literal string "true" in the run_inigo script
  DEFAULT_EVENTUALLY_TIMEOUT:
  INIGO_REPEAT_COUNT: 1
  SKIP_PACKAGES:
  SKIP_REGEX:
  USE_SQL:
  USE_GARDEN_RUNC: "true"

run:
  path: diego-release/scripts/ci/run_inigo

This does seem to occur mostly from my slower upload connection but we have also seen this happen from machines in the Pivotal SF office.

Any progress on this?  Still causes issues as unable to run tests remotely on Concourse!

I'm not really sure where to start with this one to be honest. Diagnosing network issues like this tends to be very open-ended. It might just not be stable enough given the physics of your network layout, or it could be something going wrong with your infrastructure's configuration, which we don't really have any way of knowing anything about.

@vito We are seeing this issue too in runtime-ci.  Come by if you would like a demonstration.

@vito Our team, hotSQL is also seeing this issue. Any new ideas as to what's going on?

@vito +1
(or +2, 'cause we are pairing)

@vito I concur that hard to diagnose network issues are likely the cause of these types of issues. During initial configuration of concourse I encountered this error on every attempt to fly execute. In this case it was a very consistent firewall issue, as in the port to concourse was blocked :small_airplane: I was able to resolve the issue with little issue. However, the error returned wasn't very intuitive. I suggest a different behavior in the face of errors:

Retry x times to upload the context (possibly a flag to fly execute)
Have the error message issue a notice about the likelyhood of network issues being the root cause

I got same error at trying https://github.com/starkandwayne/concourse-tutorial#02---task-inputs .
I setting up by using docker-compose, too.

docker-compose.yml

concourse-db:
  image: postgres:9.6
  environment:
    POSTGRES_DB: concourse
    POSTGRES_USER: concourse
    POSTGRES_PASSWORD: changeme
    PGDATA: /database
  volumes:
    - /home/concourse/db/database:/database

concourse-web:
  image: concourse/concourse
  links: [concourse-db]
  command: web
  ports: ["8084:8080"]
  volumes: ["./keys/web:/concourse-keys"]
  environment:
    CONCOURSE_BASIC_AUTH_USERNAME: concourse
    CONCOURSE_BASIC_AUTH_PASSWORD: changeme
    CONCOURSE_EXTERNAL_URL: "http://<IP_ADDRESS>:8084"
    CONCOURSE_POSTGRES_DATA_SOURCE: |-
      postgres://concourse:changeme@concourse-db:5432/concourse?sslmode=disable

concourse-worker:
  image: concourse/concourse
  privileged: true
  links: [concourse-web]
  command: worker
  volumes: ["./keys/worker:/concourse-keys"]
  environment:
    CONCOURSE_TSA_HOST: concourse-web
    http_proxy: ##proxy server's host##
    https_proxy: ##proxy server's host##

occured error

C:\Users\........\concourse-tutorial\02_task_inputs>fly -t lite execute --config inputs_required.yml --input some-important-input=.
executing build 40
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  4052  100  4052    0     0   9611      0 --:--:-- --:--:-- --:--:--  9624
gzip: invalid magic
tar: Child returned status 1
tar: Error is not recoverable: exiting now
exit status 2
failed

Moved to concourse/concourse#1095


remove namespace from tenant

Bug description
how to remote namespace from tenant
How to reproduce
Steps to reproduce the behavior:
None
Expected behavior
I want to know the way to remove a  namespace from a tenant.
Logs
Additional context

Capsule version: (capsule --version)
v0.1.2

Hey Tony, would you like to remove the Namespace association from a Tenant while keeping its content, right?
In that case you would need to remove the ownerReference field and the Capsule labels at the same time.
In case it wouldn't work, we can try to debug it together.
Let me know if it works!

@prometherion  thank you rely so quick. Remove ownerReference and Capsule labels work if the user is a Kubernetes cluster admin who isn't a tenant Owner. But if the user is a Tenant owner, using OIDC Token request removing ownerReference and Capsule labels doesn't work. Like this:
OIDC kubeconfig:
apiVersion: v1
kind: Config
clusters:
  - name: cluster1
    cluster:
      server: https://kube-oidc-proxy:443
      insecure-skip-tls-verify: true
contexts:
  - name: cluster1-admin
    context:
      cluster: cluster1
      user: admin
current-context: cluster1-admin
preferences:
  colors: true
users:
  - name: admin
    user:
      auth-provider:
        name: oidc
        config:
          client-id: client
          id-token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjNkNjdkMDk0NWIyZWYyOTZhNWY3NTJhZWM3MDkyNTE0MjJiMjdhM2QifQ.eyJpc3MiOiJodHRwczovL3BvcnRhbC4xNzIuMjIuOTYuMTYubmlwLmlvL29pZGMiLCJzdWIiOiJDZ1ZoWkcxcGJoSUdhemh6WTNKayIsImF1ZCI6ImJmZi1jbGllbnQiLCJleHAiOjE2NjU1Mzk0NTcsImlhdCI6MTY2NTQ1MzA1NywiYXRfaGFzaCI6InNiQ01icW9MNlVOWmlIa3hoYVZqRXciLCJjX2hhc2giOiJmR29UUm91T2d3X0hvei1wV01obEl3IiwiZW1haWwiOiJhZG1pbkB0ZW54Y2xvdWQuY29tIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsImdyb3VwcyI6WyJzeXN0ZW06bWFzdGVycyIsImlhbS50ZW54Y2xvdWQuY29tIiwib2JzZXJ2YWJpbGl0eSIsInJlc291cmNlLXJlYWRlciJdLCJuYW1lIjoiYWRtaW4iLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhZG1pbiIsInBob25lIjoiIiwidXNlcmlkIjoiYWRtaW4ifQ.Gy97zhJtmCwH48FXa-5Oxff6gv2tBcnJyFogViO66yEWfFczhOYUihzHN-Sw2SJewC8VSuNYOjzPiTp1vlc81Q2sp8laHcx_p5QcH5nIFSF-uB37PvDerxjNLWA0XY0duWZtn7kPRk5beyw0-yIcV2kaeeBwleRwLbnMUQh5KBIeKsOpRkDmXmwmff9A0gkOM--CRcw281q9ocSE2L2Nq3RCs9T527Epu_ksOTyEO6Co0iYOSPnKg1sXKi1YhWPDjXRljh0SWMwx3V_PsnGrA2UpJbT1hMs-ZAs1Zm3Q_bHErRPDzxs697CwqnczmAgo-b0IoPvEWyz9mP-v88-yjQ
          idp-certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURwVENDQW8yZ0F3SUJBZ0lRUG5oNW10djZScXJnMURDeW9jZmVjekFOQmdrcWhraUc5dzBCQVFzRkFEQWsKTVNJd0lBWURWUVFERXhsdmFXUmpMWE5sY25abGNpMXpaV3htYzJsbmJtVmtMV05oTUI0WERUSXlNRGt4TlRBMgpNamd6TlZvWERUSXlNVEl4TkRBMk1qZ3pOVm93SkRFaU1DQUdBMVVFQXhNWmIybGtZeTF6WlhKMlpYSXRjMlZzClpuTnBaMjVsWkMxallUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1YOVorSmgKU1JzdDNmQ1BZSUVyWWhESjhsVkJhK240QkZBTjBFd3dYcENDZHFzVjFNWkZWcS9nZjlVbmdBV0tVSXc4L25xNQpnRzR0L3VuL1duWDAwRTJrTFIxT0I5STJoZHBVZXZTbmZ3T1Z1TVlkQmZwU3BMb01nemZ6MHRkblh5cEt2Znk1CmIwUFg5Vjk3WExPNnFFazFIUmltNUJyVHBBR0hwY0dRUmhQU3lzM3NFWi9UVEhBejA1dnJUNnhMK3RRZkJVS2cKVkF0WEVQSGpCT1plNWovb2JCSVdmMjQ5R2wrUEN1K2N6dGFzcjFUbU15NkIvYnptNmhZT2xnVEpaWFhYcEY1bAp6dmduZ0lIMFVRRGZjN3FKK0wxQVVrL0pCNXI1c0czQkt0U1NjQm5BK1E0NjJWYkRrUGYwWk9oandLSFMwNlNvCjBpOHJ0a1F5UGl1MHlQVUNBd0VBQWFPQjBqQ0J6ekFPQmdOVkhROEJBZjhFQkFNQ0FxUXdFd1lEVlIwbEJBd3cKQ2dZSUt3WUJCUVVIQXdFd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVVo3OWxHMUJNVVppRwpPYWd6eFB1UWU3aWI0RFV3ZUFZRFZSMFJCSEV3YjRJYWIybGtZeTR4TnpJdU1qSXVPVFl1TVRZdWMzTnNhWEF1CmFXK0NEMnQxWW1VdGIybGtZeTF3Y205NGVZSVhhM1ZpWlMxdmFXUmpMWEJ5YjNoNUxtUmxabUYxYkhTQ0cydDEKWW1VdGIybGtZeTF3Y205NGVTNWtaV1poZFd4MExuTjJZNGNFckJaZ0VJY0VyQlpnaFRBTkJna3Foa2lHOXcwQgpBUXNGQUFPQ0FRRUFaazd6MHFXQ2NrL1ltNkVnbExZSGhwUHpnNm9aVk1uV1AzMGIwOERZSnlSWlpFR0hOTmduCmFDMnBqVVdkZkhqeGhmekRMRDExSzlDM1pVeExiQnZGcWQwdjdhbWxlRk1PWlJQK1JzUm10YWZIWXFUanhFRTYKcEd4WHdRS0M2aFZzd0h5WHpCZWVhRGhMMnU4SUQ2akF0ZkRxbERldytWWjZLNEJ1SVhPdXNOUHh2aC9GQW1tcgpBMXlMSmFDVVZsTzBLb1A1UVdOSTRvMFJOVmtsRS9WSUJHZTZkdElSdnRvYjU0MEZGR0lrTEpHMHdVUWRuaHhiCkw0UXB3NXlOV0lNM052ZmM0d09zeWlMbDgvTUt2WmdEdU5JSXdlRjl0UVF0M01JdThlNnYrbFBQc0FzUU5XVEgKOUh2cUdKY05xNnhNK1JhZUM2ZGhRN1htbGtBSTRpWHljUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
          idp-issuer-url: https://oidc-server:443
          refresh-token: ChlrcHUycjJlcXE0anl6YXd0ZG1heHZueG51Ehlsb2JzcndvZmthNDc3NGtvZ3h3cXJzdXlk

kubectl commmand:
 kubectl --kubeconfig=./admin-kubeconfig.yaml  patch namespace testing --v=8 -p '{"metadata": {"ownerReferences": null,"labels":{"capsule.clastix.io/tenant":null}}}' --type="merge"

this way doesn't work.

Additional information: the user groups of admin include capsule.clastix.io already.

But if the user is a Tenant owner, using OIDC Token request removing ownerReference and Capsule labels doesn't work

I always wanted to state that in a GitHub issue: it's not a bug, it's a feature.
Jokes apart :trollface: I think this is legit, since the following considerations. A tenant owner will create a Namespace according to the Tenant definitions assigned to their user, thus a set of system critical resources such as the NetworkPolicy, ResourceQuota, or LimitRange, will be replicated across their Namespaces.
So far, we're enforcing a set of rules and respecting the multi-tenancy design described in the Tenant definition. This is done due to the boundary connection between the Namespace and the Tenant, using the OwnerReference and the NS labels: Capsule will detect the changes, retrieve back the Tenant bounded to, and apply the changes, or eventually, denying the deletion of the NetworkPolicy resources that could lead to a privilege escalation to other network services.
If the Tenant Owner is able to deregister its Namespace, there's room for that escalation: the said Namespace will not be reconciled by Capsule since not bound to any Tenant, and the Tenant Owner will be able to delete the Capsule-enforced NetworkPolicy resources, as well consuming as many resources as they want, etc.
If you could provide a different user story with a real use case behind that we can start the discussion and try to design a feature request, as always as keeping an eye on the security perspective. Eventually, you could join also a Capsule community call to illustrate it with the maintainers.

Closing due to inactivity, feel free to open it back, or open a new user story as requested.


Electron 7: 'getName function' is deprecated and will be removed.

Just wonder if you could update index.js to use app.name instead of getName()? Currently I got this message:
(electron) 'getName function' is deprecated and will be removed. Please use 'name property' instead.

Yep, it's on the todo :) Good small PR as well!

fixed in 3.0.1


Automated cherry pick of #4509: account create bugfix

Cherry pick of #4509 on release/2.13.
#4509: account create bugfix

Codecov Report

:exclamation: No coverage uploaded for pull request base (release/2.13@1c0c648). Click here to learn what that means.
The diff coverage is 0%.

@@              Coverage Diff               @@
##             release/2.13   #4510   +/-   ##
==============================================
  Coverage                ?   6.84%
==============================================
  Files                   ?     522
  Lines                   ?   88780
  Branches                ?       0
==============================================
  Hits                    ?    6078
  Misses                  ?   82196
  Partials                ?     506

Flag
Coverage Δ

#aFlag
6.84% <0%> (?)

Impacted Files
Coverage Δ

pkg/compute/models/elasticcache_skus.go
4.21% <0%> (ø)

pkg/compute/models/cloudaccounts.go
0.86% <0%> (ø)

pkg/compute/models/disks.go
0.58% <0%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 1c0c648...39517c2. Read the comment docs.

/lgtm

/approve


got a linker error when included bbb/json/parse.hpp twice or more.

duplicate symbol bbb::json_utils::detail::print_parse_error
Shouldn't it be inline or static?

exactly!
i don't know why i didn't do it.
thanks!!