Installation fails on Ubuntu 22.04.

Hi,
I wanted to try Kiri again with the newly tools for KiCad6 but I can't get past the installation procedure. It always fails while installing the dependencies, specifically plotkicadsh and kicadsch. During the main install it then obviously can't find plotkicadsh and stops the installation there. Do I have to modify the commands etc. to get it working with KiCad6 on Ubuntu 22.04?
log:
<><> Updating package repositories ><><><><><><><><><><><><><><><><><><><><><><>
[default] no changes from https://opam.ocaml.org

<><> Synchronising development packages <><><><><><><><><><><><><><><><><><><><>
[ERROR] Could not synchronize ~/.opam/4.09.1/.opam-switch/sources/plotkicadsch from
        "git+file:///~/.local/share/kiri/submodules/plotkicadsch#HEAD":
        "/usr/bin/git fetch -q" exited with code 128
[plotkicadsch.0.9.0] fetching sources failed: git+file:///~/.local/share/kiri/submodules/plotkicadsch#HEAD
[ERROR] Could not synchronize ~/.opam/4.09.1/.opam-switch/sources/kicadsch from
        "git+file:///~/.local/share/kiri/submodules/plotkicadsch#HEAD":
        "/usr/bin/git fetch -q" exited with code 128
[kicadsch.0.9.0] fetching sources failed: git+file://~/.local/share/kiri/submodules/plotkicadsch#HEAD
[NOTE] Package digestif is already installed (current version is 1.1.2).
[NOTE] Package lwt is already installed (current version is 5.5.0).
[NOTE] Package lwt_ppx is already installed (current version is 2.0.3).
[NOTE] Package cmdliner is already installed (current version is 1.1.1).
[NOTE] Package base64 is already installed (current version is 3.5.0).
[NOTE] Package sha is already installed (current version is 1.15.2).
[NOTE] Package tyxml is already installed (current version is 4.5.0).
[NOTE] Package git-unix is already installed (current version is 3.9.1).
...@...-VirtualBox:~$ bash -c "$(curl -fsSL https://raw.githubusercontent.com/leoheck/kiri/main/install_kiri.sh)"

Installing KiRI

Installation path ~/.local/share
Change it using KIRI_INSTALL_PATH environment variable

Hit ENTER to continue or Ctrl+C to leave.

cp: cannot stat '../kiri': No such file or directory
environment: line 44: cd: ~/.local/share/kiri/submodules/plotkicadsch: No such file or directory

I was able to install dependencies on a clean Ubuntu 22.04 as you can see the final part of the process.

Opam/Ocaml related packages are a pain, indeed.
Maybe you have an previous installations that is not kind of working.
I would recommend you to remove opam and plotgitsh/kicadsh first.
You can start fresh by doing this
# Remove opam itself
sudo apt purge opam

# Remove opam-related stuff from your user, manualy
rm -rf $HOME/.opam

Then you can run the installation script again.
KiRi script should install opam version 2.1.2
Now, I could find an issue with the wxWidgets but it is not important for KiRI, only for Kicad-Diff if you want to run it manually with GUI. Otherwise, it will work just fine on the command line.
But sure, I have to check how to fix this. But again, this is not a big deal for you, since even failing to install wxWidgest the install_depencencies script finishes.

hmm. I first thought starting from a clean install works as the dependency install runs through without any problems now. So I definitely had a problem with my configuration before. but still the kiri installation itself fails because it searches for plotkicadsch but can't find it.
for the wxWidgets error you got: I had also a problem there. it seems the gtk+3.0 packages needed for compiling wxWidgets are not installed per default on ubuntu.
sudo apt-get install build-essential libgtk-3-dev
did the trick for me there.
log for the kiri install now:
...@...-VirtualBox:~$ bash -c "$(curl -fsSL https://raw.githubusercontent.com/leoheck/kiri/main/install_dependencies.sh)"
Hit:1 http://de.archive.ubuntu.com/ubuntu jammy InRelease
Hit:2 http://de.archive.ubuntu.com/ubuntu jammy-updates InRelease
Hit:3 http://de.archive.ubuntu.com/ubuntu jammy-backports InRelease
Hit:4 https://ppa.launchpadcontent.net/kicad/kicad-6.0-releases/ubuntu jammy InRelease
Hit:5 http://security.ubuntu.com/ubuntu jammy-security InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
7 packages can be upgraded. Run 'apt list --upgradable' to see them.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
git is already the newest version (1:2.34.1-1ubuntu1.2).
0 upgraded, 0 newly installed, 0 to remove and 7 not upgraded.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
libgmp-dev is already the newest version (2:6.2.1+dfsg-3ubuntu1).
0 upgraded, 0 newly installed, 0 to remove and 7 not upgraded.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
pkg-config is already the newest version (0.29.2-1ubuntu3).
0 upgraded, 0 newly installed, 0 to remove and 7 not upgraded.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
opam is already the newest version (2.1.2-1).
0 upgraded, 0 newly installed, 0 to remove and 7 not upgraded.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
python-is-python3 is already the newest version (3.9.2-2).
0 upgraded, 0 newly installed, 0 to remove and 7 not upgraded.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
python3-pip is already the newest version (22.0.2+dfsg-1).
0 upgraded, 0 newly installed, 0 to remove and 7 not upgraded.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
kicad is already the newest version (6.0.5-0-202205030842+a6ca702e91~116~ubuntu22.04.1).
0 upgraded, 0 newly installed, 0 to remove and 7 not upgraded.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
dos2unix is already the newest version (7.4.2-2).
0 upgraded, 0 newly installed, 0 to remove and 7 not upgraded.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
coreutils is already the newest version (8.32-4.1ubuntu1).
0 upgraded, 0 newly installed, 0 to remove and 7 not upgraded.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
zenity is already the newest version (3.42.1-0ubuntu1).
0 upgraded, 0 newly installed, 0 to remove and 7 not upgraded.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
dune is already the newest version (2.9.1-1build1).
0 upgraded, 0 newly installed, 0 to remove and 7 not upgraded.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
scour is already the newest version (0.38.2-2).
0 upgraded, 0 newly installed, 0 to remove and 7 not upgraded.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
librsvg2-bin is already the newest version (2.52.5+dfsg-3).
0 upgraded, 0 newly installed, 0 to remove and 7 not upgraded.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
imagemagick is already the newest version (8:<IP_ADDRESS>+dfsg-1.3build2).
0 upgraded, 0 newly installed, 0 to remove and 7 not upgraded.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
xdotool is already the newest version (1:3.20160805.1-4).
0 upgraded, 0 newly installed, 0 to remove and 7 not upgraded.
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: pillow>8.2.0 in ./.local/lib/python3.10/site-packages (9.1.1)
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: six>=1.15.0 in /usr/lib/python3/dist-packages (1.16.0)
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: dateutils>=0.6.12 in ./.local/lib/python3.10/site-packages (0.6.12)
Requirement already satisfied: python-dateutil in ./.local/lib/python3.10/site-packages (from dateutils>=0.6.12) (2.8.2)
Requirement already satisfied: pytz in /usr/lib/python3/dist-packages (from dateutils>=0.6.12) (2022.1)
Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil->dateutils>=0.6.12) (1.16.0)
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: python_dateutil>=2.8.1 in ./.local/lib/python3.10/site-packages (2.8.2)
Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python_dateutil>=2.8.1) (1.16.0)
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: pytz>=2021.1 in /usr/lib/python3/dist-packages (2022.1)
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: pathlib>=1.0.1 in ./.local/lib/python3.10/site-packages (1.0.1)
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: wxpython>=4.0.7 in ./.local/lib/python3.10/site-packages (4.1.1)
Requirement already satisfied: pillow in ./.local/lib/python3.10/site-packages (from wxpython>=4.0.7) (9.1.1)
Requirement already satisfied: six in /usr/lib/python3/dist-packages (from wxpython>=4.0.7) (1.16.0)
Requirement already satisfied: numpy in /usr/lib/python3/dist-packages (from wxpython>=4.0.7) (1.21.5)

<><> Updating package repositories ><><><><><><><><><><><><><><><><><><><><><><>
[default] no changes from https://opam.ocaml.org
[NOTE] Package digestif is already installed (current version is 1.1.2).
[NOTE] Package lwt is already installed (current version is 5.5.0).
[NOTE] Package lwt_ppx is already installed (current version is 2.0.3).
[NOTE] Package cmdliner is already installed (current version is 1.1.1).
[NOTE] Package base64 is already installed (current version is 3.5.0).
[NOTE] Package sha is already installed (current version is 1.15.2).
[NOTE] Package tyxml is already installed (current version is 4.5.0).
[NOTE] Package git-unix is already installed (current version is 3.9.1).
...@...-VirtualBox:~$ bash -c "$(curl -fsSL https://raw.githubusercontent.com/leoheck/kiri/main/install_kiri.sh)"

Installing KiRI

Installation path ~/.local/share
Change it using KIRI_INSTALL_PATH environment variable

Hit ENTER to continue or Ctrl+C to leave.

cp: cannot stat '../kiri': No such file or directory
environment: line 44: cd: ~/.local/share/kiri/submodules/plotkicadsch: No such file or directory

If you need anymore info on my system let me know.

Alright, it looks like it was not that hard to fix this.
The install_kiri script was fixed and also the README.md has a fix in the command used to call this script
This is the fixed command that you have to use.
bash -c "INSTALL_KIRI_REMOTELLY=1; $(curl -fsSL https://raw.githubusercontent.com/leoheck/kiri/main/install_kiri.sh)"

If the problem is fixed, please, close the issue here. Otherwise, let me know. Cheers!

Thanks for dealing with this so quickly. The installation works now completely and I can run kiri as before. The display of the changes in the PCB seems to work most of the time.
However the changes in the schematics seems not to work for me. After the web interface launches I can see the diff of the top sheet of the two last commits. None of the subsheets are available to select in the pages list. After I change the selection of commits also the top sheet is not displayed anymore. If I hover above the only available item int the pages list I see the following:

This looks not really correct for me. I checked the files in the .kiri folder and it looks like it all images of subsheets are created correctly but are simply not displayed. The bug occurs in firefox and chromium.
During creation of the files via kiri-command I also get the errors, that kicad can't open the subsheets as often as they are present in commits.
Do you want to track this problem in this issue or should I create a new one for this?

We can continue here. Is it possible to share your project so I can check what is the issue?
Also, run it with this command to try find the reason it is failing
kiri project.kicad_pro -d -r

It will remove previous runs and also show extra messages.
If it fails on a command you can go inside the folder it is running (indicated mostly in top of the command) and the  run the command there manually to check what is going on.

Is it possible to share your project so I can check what is the issue?

Sure, I created the project just for this purpose as I can't share my other designs where the same problem persists:
test_project.zip
The yip also contains the kiri files the last run has created if you wan't to check them.

Also, run it with this command to try find the reason it is failing

the command with the additional option fails on permissions:
kiri test_project.kicad_pro -d -r
realpath: invalid option -- 'r'
Try 'realpath --help' for more information.
mkdir: cannot create directory ‘’: No such file or directory

Generating artifacts
6 commits, totaling 30 comparisons

1 79d28d0 | 2022-06-16 10:57:15 | ... | change subsheet
2 e2c8a64 | 2022-06-16 10:56:35 | ... | add subsheet
mkdir: cannot create directory ‘/79d28d0/’: Permission denied
mkdir: cannot create directory ‘/79d28d0’: Permission denied
~/.local/share/kiri/bin/kiri: line 1077: /79d28d0/test_project.kicad_pro: No such file or directory
mkdir: cannot create directory ‘/79d28d0’: Permission denied
~/.local/share/kiri/bin/kiri: line 1077: /79d28d0/test_project.kicad_sch: No such file or directory
mkdir: cannot create directory ‘/79d28d0’: Permission denied
~/.local/share/kiri/bin/kiri: line 1077: /79d28d0/test_project.kicad_pcb: No such file or directory
grep: /79d28d0/test_project.kicad_sch: No such file or directory
mkdir: cannot create directory ‘/e2c8a64/’: Permission denied
mkdir: cannot create directory ‘/e2c8a64’: Permission denied
~/.local/share/kiri/bin/kiri: line 1077: /e2c8a64/test_project.kicad_pro: No such file or directory
mkdir: cannot create directory ‘/e2c8a64’: Permission denied
~/.local/share/kiri/bin/kiri: line 1077: /e2c8a64/test_project.kicad_sch: No such file or directory
mkdir: cannot create directory ‘/e2c8a64’: Permission denied
~/.local/share/kiri/bin/kiri: line 1077: /e2c8a64/test_project.kicad_pcb: No such file or directory
grep: /e2c8a64/test_project.kicad_sch: No such file or directory
find: ‘/79d28d0’: No such file or directory
find: ‘/79d28d0’: No such file or directory
find: ‘/79d28d0’: No such file or directory
find: ‘/79d28d0’: No such file or directory

find: ‘/e2c8a64’: No such file or directory
find: ‘/e2c8a64’: No such file or directory
find: ‘/e2c8a64’: No such file or directory
find: ‘/e2c8a64’: No such file or directory
sed: can't read /79d28d0/: No such file or directory
sed: can't read /79d28d0/: No such file or directory
~/.local/share/kiri/bin/kiri: line 1173: /79d28d0/pages: No such file or directory
sed: can't read /79d28d0/: No such file or directory
~/.local/share/kiri/bin/kiri: line 1215: /79d28d0/layers: No such file or directory
sed: can't read /e2c8a64/: No such file or directory
sed: can't read /e2c8a64/: No such file or directory
~/.local/share/kiri/bin/kiri: line 1173: /e2c8a64/pages: No such file or directory
sed: can't read /e2c8a64/: No such file or directory
~/.local/share/kiri/bin/kiri: line 1215: /e2c8a64/layers: No such file or directory

however, if I remove the existing kiri files manually and start kiri without the options it runs through without any problems:
kiri test_project.kicad_pro

Generating artifacts
6 commits, totaling 30 comparisons

1 79d28d0 | 2022-06-16 10:57:15 | ... | change subsheet
2 e2c8a64 | 2022-06-16 10:56:35 | ... | add subsheet
fatal: path 'test_project/modules/subsheet.kicad_sch' exists on disk, but not in '79d28d0'

3 281b970 | 2022-06-16 10:54:23 | ... | in layout as well
4 4ddedb4 | 2022-06-16 10:52:26 | ... | some fixes in schematic
5 cc1e62b | 2022-06-16 10:51:43 | ... | add connections
6 8877a14 | 2022-06-16 10:49:25 | ... | add parts
Assembling the HTML
- Adding commits list in index.html
- Adding schematic pages list in index.html
- Adding layers list in index.html
  > INFO: Layers lists differ on both commits. What should we do?
- Project's title: git-tests-with-kicad
- Project's name: test_project
- Sch Title: [missing]
- PCB Title: [missing]
- Sch Revision: [missing]
- PCB Revision: [missing]
- Sch Date: [missing]
- PCB Date: [missing]
- Initial selected commits: 79d28d0, e2c8a64
- Initial schematic images:
  Sch 1: ~/git-tests-with-kicad/test_project/.kiri/79d28d0/sch-test_project.svg
  Sch 2: ~/git-tests-with-kicad/test_project/.kiri/e2c8a64/sch-test_project.svg
- Inicial layer: id=00, name=F_Cu
- Initial layer images:
  PCB 1: ~/git-tests-with-kicad/test_project/.kiri/79d28d0/test_project-00.svg
  PCB 2: ~/git-tests-with-kicad/test_project/.kiri/e2c8a64/test_project-00.svg

Output folder: ~/git-tests-with-kicad/test_project/.kiri

Starting webserver at http://<IP_ADDRESS>:8080/web/index.html
(Hit Ctrl+C to exit)

Also, checking the image, there may be some extra whitespaces somewhere. Your project also has schematic files inside a subfolder which is not a common thing then Kiri may have been failing on this too.

I don't think it is a problem with whitespaces, as the problem exists in all of my projects. I think it has way more to do with the structure. If it was not programmed to work with sheets in a subfolder then this is probably the big problem here. I don't know if it is uncommon but I have to say everyone I worked with puts their subsheets in extra folders either for module persistence across different projects or simply due to the fact that the root folder gets otherwise quite crowded if you have more then a handfull sheets in your design.
Also interesting sidenote: the successful running of kiri changes my keyboard layout to the english layout. This is probably unintended?

Definitely some progress as the diff for the top sheet now works as expected and also the sheets can be selected individually. However I still get errors during the creation of the files when kiri opens kicad and does the exports.

The sub sheet was added in the last commit but there is no modules/subsheet.kicad_sch folder and file neither in the zip file or in the .git versioning.
If you open your project with Kicad you will see this:

Here is the subsheet details modules/subsheet.kicad_sch

The .zip does not have this subsheet. It is missing from the .git versioning too. See, this is all I got.

But I found a bug where the Page Name (and Filename in the tooltip) were having the spaces removed. It is fixed now.

If I add a submodule like you want, then I am having another issue with whitespace... I am thinking how I can fix this one, still.

Fixed, hope it works for you too.

let me know if you see other issues, please

ah man sorry for the missing module, I forgot git add there. still weird that it wasn't in the zip anyway, it was on my side. It works now with the subsheets in a subfolder also on my side :+1:
But I discovered an additional problem as I was running the latest version on my projects: There is an issue if modules are used inside other modules. Looking into the kiri files it seems it does not pull these modules to the commit history created by kiri and so kicad can|t open them. I updated the test-project to reflect this problem, I hope I managed to catch everything this time :sweat_smile:
git-tests-with-kicad.zip

No problem, I am discovering bugs with this, which is cool.
Now, modules inside modules, this is the first time I am seeing this. I am pro for organization, but I have never done or seen someone doing that.
Well, let me but let me see your zip.

Solving this will be hard, but lets see if it is doable.

Well, this is getting hard since I believe Kicad may have a bug. Also, your .kicad_sch files all have the same UUID. It is not important for me, but it looks like they were not created by Kicad but replicated manually. This is not important for me, but I am having a hard time trying to detect which file belongs to the project and which one does not. Also, the way Kicad is storing files looks like a bug or it is crazy bad. Since the first page shows something like modules/my_1st_module.kicad_sch and the second page, which is already inside the modules folder, shows the module like  my_2nd_module.kicad_sch. It should show the module as modules/my_2nd_module.kicad_sch  because this second module is inside the modules folder too. In other words, it should show all the modules relative to the root of the project, and not to the folder they currently are. This behavior is crazy. I am trying to work around this, but it is getting pretty hard, haha.
Also, there is something wrong with this hierarchical navigator. It shows pages 1, 2, 3 and then it jumps to 32, 33, 34... I am not sure if this is because your project was kind of manually created or if this is another bug in Kicad. See:

Yes I had to work with copy and paste and modifying the subsheets via editor as kicad was really buggy in reassigning the modules and crashed way to often. So sorry for the messed up file structure there. I assure you the problem persists also in projects where you create/link the modules normally inside kicad. I hope 6.0.6 will get a bit more stable...
regarding the problem with the modules/ in the sheet link: It is like this since at least kicad4 (where I started using it). I think kicad itself always uses the path of the currently opened sheet instead of the root sheet. I think this is a bit weird as well but if you know it, you can work around it.
maybe some explanation is in order where a module inside a module can be quite useful: I worked on designs where a lot of UART to rs422 interfaces where needed but the MCU only had three UARTs available or so. So I used a multiplexer to split up the UARTs and connected them to the RS422 drivers right in the multiplexer module. ofc I also could have put them outside the multiplexer sheet on the top sheet but if you have 4 multiplexer circuits with 4 RS422 drivers each your top sheet gets crowded very quickly.

Yes, I could figure out exactly what you are saying, in summary, this is happening.

Kicad does not create folders. They have to exist otherwise when you save the project, it is going to throw an error about permissions and not about the existing path. This may not be a bug, but I consider it a bug. Especially because the Error is not that good. Now, this can be easily overcome by creating the folder modules manually before of saving the project.

The new page is created in the place where the parent page is.   It looks like an amateur decision if not a bug.

maybe some explanation is in order where a module inside a...

Agree, but you don't have to explain this to me. I understand that the user should use it the way he likes most. I just stated before that this is not what most people do. But in general, they just do what others do, and they are not trying new things as you are.

Hey @T0jan I am going to give it a try to implement this. Could you share a working project with nested modules so I can use it as a second example? It does not need to be a git repo. And it has to have valid pages, if possible. You could use a copy of an existing project, and you can also remove most parts of the circuits in the schematics... just leave something on each sheet (as you've done before) so I can visualize and make changes to test it with Kiri.

Thanks for sharing your project.

btw, not sure if this is really a useful idea but maybe it could be an option to generate a diff for each schematic...

Is this a new idea or, it is related to this one, it looks like you are talking about a new thing or maybe i did not understand yet the whole idea? If this is a new idea, could you open a new issue? so we can discuss there better.
This issue here is pretty complex already.
Kicad is a nightmare for parson sheets and sheets instances.

Is this a new idea or, it is related to this one, it looks like you are talking about a new thing or maybe i did not understand yet the whole idea? If this is a new idea, could you open a new issue? so we can discuss there better.

no it was an idea how to deal with the whole nested file structure problem. in my understanding you now create the export of the whole schematic (so main sheet + eventual sub-sheets) from the main sheet and as the main sheet does not carry the correct information for sub-sheets in folders the problems start here. so my idea now was: create instead an export of each sheet in the project folder and sub-folder on its own and continue from there.

Yeah, this is exactly what I will do, and I am kind of doing this already.
Now, the problem is the lack of organization in the Kicad project, so this information is stored split in many different places.
Also, when I export things using plotgitsch, the exported .svg carries the name of the exported page. Which is what I want. But, now, when I use xdotool/cliclick, plotting graphically with Kicad 6, the generated .svg files are named with a mix of hierarchical place and the instance names. This is a problem because Kiri's javascript that displays images, is presenting unique files, and not instances to avoid duplication of the same sheet. Now, I have to track where the instance name is, with the page filename and its path that I have to reconstruct myself all using Kicad project since I don't think it is good to trust on what I can find on git, since users may have made mistakes.

@T0jan could you share your Helmholtz-Ansteuerung.zip the project with the history, or maybe share the URL, if it is in github.

I could push some code to be able to use Kiri with multiple nested projects that use Kicad 6.
Could you please, test if it works for you?
https://github.com/leoheck/kiri/tree/nested-hierrarchical-sheets
It works with my projects, and also my nested multipage test project.
However, for some reason it did not work with your git-tests-with-kicad.zip and I don't know why yet but I believe that project is a bit broken, unfortunately, I don't know what is happening.

Ah, if you are inside the project, you can use "kiri -r" it does not need to pass the filename anymore.

hmm sadly it does not seem to work for me. for each commit I get at least one error, always in the form:
python3: can't open file '/home/{$USERNAME}/.local/share/kiri/bin/{$USERNAME}.py': [Errno 2] No such file or directory
In the browser view there is now again only one sheet, the main sheet, displayed and selectable.
Maybe I did somethin wrong in switching to the branch version? I just switched the branch in the main kiri install folder, is there something else I have to do?
Concerning the test project: best thing is to leave it alone, it seems I have broken something there in the way I created it via editor.
Concerning the Helmholtz-Cage: I wont be able to provide you with a history there for the next few days as I have no access to the git server due to covid...

the error looks strange.. especially the variables
{$USERNAME} --> they should be ${USERNAME}
but I have no clue where this is... do you?
I don't think it is in my files, well I will check but maybe you have to check your configs too..
To run the new thing, It will need a bit more work than changing branches.
You also need to run, from the root path of Kiri's repo
git submodule update --init --recursive

There is a new submodule and this submodule has also a submodule...

I also made 2 new repos to test these things.
If it does not work for you, you could test these repos too.
So we can talk to check how to improve your repo.
https://github.com/leoheck/multisheet-kicad-5
https://github.com/leoheck/multisheet-kicad-6

hi,

{$USERNAME} --> they should be ${USERNAME}

sorry, my fault, I used search and replace there to make the log better readable and switched the bracket and the dollar sign there.

Hi, I saw one path I was using was hardcoded. Please, update your branch before trying it again.

hi, I did a pull on the branch and also the submodule update but the error persists with my own projects as well as the the projects you shared above.
It seems like it|s searching for a python file with my username in the kiri folder that can not be right or is it?

no changes after I did step by step what you wanted me to do. The error stays the same. I still think:

python3: can't open file '/home/${USERNAME}/.local/share/kiri/bin/${USERNAME}.py': [Errno 2] No such file or directory

is the error here. In the steps I see nothing which should create a file name with my username in the git repo so this is probably the problem here?

If you grep recursivelly all files inside the Kiri folder looking for this string, like this:
cd kiri
grep USERNAME -R

... you are not going to find any file with the USERNAME string since most of the time the correct variable is ${USER} and not ${USERNAME}. Then I still think it is a configuration issue on your side. Maybe check the setup in the ~/.bashrc or ~/.zshrc
Check if the configuration on those files is something like this, please
# Kiri environment setup
eval $(opam env)
KIRI_HOME=/home/lheck/Documents/kiri
export PATH=${KIRI_HOME}/submodules/KiCad-Diff/bin:${PATH}
export PATH=${KIRI_HOME}/bin:${PATH}

... you are not going to find any file with the USERNAME string

yes I know that I won't find it there. the point is, your code is searching for this file...

Check if the configuration on those files is something like this, please

yes, my ~/.bashrc looks like this (adjusted to my kiri path ofc)

I could reproduce this issue on a macOS. I could fix the issue there, and also maybe for you too.
You could update everything by running these 2 lines again.
bash -c "$(curl -fsSL https://raw.githubusercontent.com/leoheck/kiri/main/install_dependencies.sh)"
bash -c "INSTALL_KIRI_REMOTELLY=1; $(curl -fsSL https://raw.githubusercontent.com/leoheck/kiri/main/install_kiri.sh)"

YES! great work, we definitely moved a step ahead now!
But there is still an issue remaining, I think it is related to a timeout set somewhere:
Plotting a92eef2, ${PRJDIR}/.kiri/a92eef2/
   timeout 15 plot_kicad_sch project.kicad_sch

In the html-view all modules are listed now but if you scroll through them not all are actually displayed. some of them only got an empty screen. I assume they are not getting plotted due to the timeout striking in? Looking in the debug output I at least saw no other warning or error which could explain why some pages are not displayed.

Are you running with kiri -r -D ?
It a bad previous run was done before, it wont generate artifacts in a new run. You have to use -r to start it clean.

yeah kiri -r -D gave me the warning above. kiri -r runs without any warning (obviously), running kiri afterwards does not change anything on the output (as expected) and I also tried kiri -r -D -t 10 to save some time but the result was the same there as well.
I just tried with the same project on a other PC (ubuntu 20.04) and got the same result there.

I also checked the kiri files just now: the sch_sheets which is located directly in the .kiri folder lists all sheets in the project. but for each commit the sch_sheets only lists a handful (always the same) or none at all. what is a bit curios for me is, that these handful sheets it seems to detect are not the first five sheets of the list in the .kiri folder.

What is missing for you? Schematics, Layouts, or both?

I miss the schematic plots for most of my modules, layout seems to be fine. if I run kiri -r -D -t 10 it actually also does not list the missing modules in the page list but only the handful from before. but the detection of subsheets seems to work as two of the displayed shematics are submodules.

Your repos are Kicad 6 or 5?
A mix. They started with k5 but are now converted to k6. with kiri -r -D -t 10 I only catch k6 commits.

Ah, maybe it is missing the submodules..

I don't think so as I did a clean fresh install on the ubuntu 20.04 PC. with missing submodules none of the plotting would have worked, right?
I also tried to reproduce the problem with the the test project but was not successful until now. maybe its the mix of k5 and k6 commits which leads to problems here?

ok I can say it is not the mix of k5 and k6. I just created a new repo with just k6 commits of the project and I still get the output for only 5 sheets. I will see if and how I can reproduce the error with a shareable test project.

Which files/images are missing?
Images of schematics, layout, or what?
When the commit has Kicad 6 project, Kiri uses xdotool on Linux to plot schematics, which is a graphical tool... this may be the issue, sometimes.
Now, if the commit has Kicad 5 files, Kiri plots schematics using plotkicadsh/plotgitsch. If it is installed, it mostly works, but it
requires repo having cache-lib file which sometimes is missing since people use to forget to commit it.
Now, for layout, on both Kicad 6 and 5 versions, it uses Kicad-Diff, which may work better than plotting schematics.

The images of most of the schematic sheets for kicad6. as far as I can tell it is dependent from the project because for the test project every schematic is plotted.
I still suspect this timeout above as part of the problem, is there a way to increase it?

Ok I found the reason for the sheets not being plotted. it is not the timeout but you probably won't like it either:
sheets with spaces (and probably other non standard signs, I did not test this) in the sheet-name do not get plotted. see the F with spaces sheet in the test project:
multisheet-kicad-6.zip

I see, Kiri should work with these things (maybe not out of the box). I did the test with folders having spaces, but not with the project files having spaces. I will check and fix it if there is something wrong.

it's not the file naming! it's how the subsheets are named inside kicad, the sheet name in kicad terminology.
I can say it already worked with the spaces in the names before you added the support for the second+ level sheets.

You mean, the sheet instance.
This is the script that I have to fix
find_kicad6_sch_hier multipage-kicad.kicad_sch

You can run it in your computer to see the results...

It calls this one, that looks it is working already, see.
➜  multisheet-kicad-6 git:(main) kicad6_sheet_instances multipage-kicad.kicad_sch
0999d842-9bc9-4370-bae4-7c28aeba0392|A|sch/a.kicad_sch
19432d09-e376-42a6-8b10-a54a895963d1|F with spaces|sch/f.kicad_sch
6483d8c3-df4d-40b4-b616-c993cba432d4|A1|sch/a.kicad_sch

Result

Or try this branch here where I change layers and sheets dynamically for every commit. This may be better for the consistency of the commits view. I put the fix of schematics instances with spaces there.
dynamic-sheets-and-layers

YES! IT'S WORKING! :partying_face:
thank you so much for fixing it for all my unusual side cases and for keeping patience with me for the last few weeks. is there any way I can spend you a coffee or so via paypal for all the time you invested?
interestingly KiCad now forbids the usage of / in the instance name so all my designs using it are now broken, but that's nothing you have to worry about :sweat_smile:

Nice! It will definitely have some bugs still and I appreciate your efforts to share the issues you were/are having.
Considering the tip jar, I have this one here. I would love to drink a coffee or a beer bought by you. Cheers!
https://www.paypal.com/donate/?hosted_button_id=HT74DFNLH2TLQ

Ah, please, close this issue if there is nothing else related. Otherwise if you find any other issue you can open a new one so we can start fresh. haha

The branch dynamic-sheets-and-layers also improves the navigation of multiple sheets. you may like those changes too.

it tries to keep the current page selected when commits change, whenever possible.
it also sorts sheets alphabetically, for each hierarchical level

yes I saw this while testing. it really helps to keep on overview on the modules. espicially in the way I normally name my files.
In the last days I did not found any more issues so I will close this for now. If I find something more, I will surely come back to you.

By the way, thank you for the big coffee. That was nice and kind.

Hey, @T0jan do you mind testing the latest code here: https://github.com/leoheck/kiri/tree/dynamic-sheets-and-layers?

The svg-pan-zoom was refactored to work better.
I improved the multi-sheet/layers to avoid changing these lists when commits have the same pages/layers
It was added new shortcuts to pan with the keyboard (alt+arrow keys)
It was improved zoom with keyboard shortcuts too (+/-/0/f)

interestingly KiCad now forbids the usage of / in the instance name so all my designs using it are now broken, but that's nothing you have to worry about sweat_smile

Could you talk more about this issue here that you have described before? I did not understand what you want to say.
If you think this is a limitation with kicad, then you can run a command to rewrite git history fixing your instance names and replacing this character with something else.. I could help you with that if you are having problems with this.

Hey, @T0jan do you mind testing the latest code here: https://github.com/leoheck/kiri/tree/dynamic-sheets-and-layers?

sure, no problem. I checked with two of my projects and nothing seems to got broken by the changes which is a big plus :D
the new hotkeys work fine and I am actually very happy about them, so thanks for this!
I just found two small issues. one is with the documentation: it seems Kicad-Diff changed its file structure. the path export now needs to be:
export PATH=${KIRI_HOME}/submodules/KiCad-Diff/bin:${PATH}
for the system to find the kidiff-binary.
the other one is with the displaying of the results but here I am not sure f it is a problem with the hardware I run kiri on today: when changing between schematic and layout view, the screen does not get updated. so if I switch from schematic to layout for example I still see the latest schematic view and vice versa. I have to change the selected commits first for the right page to be shown. the problem does not occur when I switch between layers/sheets or commits.
I also have a feature request: it would be nice if one could hide the commits and/or layers list in the inspector or if one can get the current viewed page in full screen.

Could you talk more about this issue here that you have described before? I did not understand what you want to say.
If you think this is a limitation with kicad, then you can run a command to rewrite git history fixing your instance names and replacing this character with something else.. I could help you with that if you are having problems with this.

Well its not really an issue its more like kicad changed things between v5 and v6 and now some old things do not work anymore. I think this has to be expected between major versions.
in this case I named my instances something like Mux/Demux before but as kicad6 now doesn't allow / in instance names anymore it causes some weird side effects in exporting etc which also affect what kiri can display.
My point was that you don't need to fix anything on kiris side to fix this, as this is an heritage issue and border case which should not occur in the future.
If you have an command sequence to change the i instance names in the git history it would be nice as I would then not start to search for it once I really need it :D

export PATH=${KIRI_HOME}/submodules/KiCad-Diff/bin:${PATH}

Got it, it is already fixed, thanks.
====

the other one is with the displaying of the results but here I am not sure f it is a problem with the hardware I run kiri on today: when changing between schematic and layout view, the screen does not get updated. so if I switch from schematic to layout for example I still see the latest schematic view and vice versa. I have to change the selected commits or switch layers/pages first for the right page to be shown. the problem does not occur when I switch between layers/sheets or commits.

This issue was introduced in the last commits. I had to rewrite the way images were being displayed. I have not seen this happening on my Google-Chrome, but I definitely need to investigate this deeply. Nice you found a way to work around this for now. Does it happen always, or just with the first 2 selected commits?
====

I also have a feature request: it would be nice if one could hide the commits and/or layers list in the inspector or if one can get the current viewed page in full screen.

The fullscreen is an interesting feature, since the whole interface can be used with keyboard shortcuts.
I will check if I can make it work.
====
Regarding the instance names. I will try to find a solution for your instance names. Let me see if I can do something.

Hey, good news, it was easy to implement this fullscreen view. It is good that is true fullscreen. It lacks some things like displaying important info so we know which commits and sheet/layers are being displayed. But this is secondary and can be added later..
I also have to create this info window that teaches the shortcuts that are increasing in number...
You can try it yourself, upgrading the branch you are already testing.
The shortcut to toggle it is z

Actually, it is not z anymore, the shortcut i is working now, to show a window with shortcuts. you are going to find that the new shortcut for fullscreen is f

Hey @T0jan
I think I could make a command for you to fix your repos.
Download this script sed_instance_names, and put it in the PATH, so it will be available to your command line.
It finds all .kicad_sch and .sch files and then executes sed to update the instance names.
The syntax is
sed_instance_names REGEXP_TO_MATCH REPLACEMENT

You can run it inside your current branch to check if it is working,
For example, this appends an underscore in front of each sheet instance name
sed_instance_names '^' '_'

Then this removes the previously added underscore
sed_instance_names '^_' ''

================
Now, make a copy of your repo to run it, just in case you have unsaved stuff.
Go inside this repo...
Then run the following command
# Just to make sure the next command won't complain about unsaved work.
git stash

# The following command executes sed_instance_names on each commit, it may take some time...

# Example of how to remove the `/` in front of each instance
git filter-branch --tree-filter "sed_instance_names '^/' '' " -f

# Example of how to replace all the instances of `/` that appear in the instance name with `-`
git filter-branch --tree-filter "sed_instance_names '/' '-' " -f

================
How do you check if it worked?

You are going to see the output of the command in the command line.

You can run kiri -r and click the green link on the commits to launch Kicad on each commit, to check visually there in the Eeschema

You can find and cat all sch_sheets that kiri has created find -name sch_sheets | xargs cat

================
If you are fine with the result then you just have to push force rewriting the history in upstream...
git push -f

Hope it helps you to fix your repos.

Actually, it is not z anymore, the shortcut i is working now, to show a window with shortcuts. you are going to find that the new shortcut for fullscreen is f

Very nice, the fullscreen is working beautiful and all shortcuts except (i) also work like expected. for (i) it opens the information in the background of the fullscreen and only shows it after one goes back to the window-view. don't know if there is a fix for this but I would consider this a minor problem.

I have not seen this happening on my Google-Chrome, but I definitely need to investigate this deeply. Nice you found a way to work around this for now. Does it happen always, or just with the first 2 selected commits?

I happens for all possible commit combinations but only if you switch between schematic and layout with the buttons. if you use the shortcut (s) the page is immediately correctly displayed. I checked it for firefox and chromium now on two different machines and it always happens.
thx for the script in advance, I will check it a bit later.


[FancyZones] Multiple zones at the same time

Multiple zones at the same time
Currently only one zone is active at one time. I want multiple zones at the same time, when move the window, holding Shift and pressing Tab will cycle through list of configured selected zones

@yelliver
using the FancyZones editor you can add as many zones as you need.
Or do you mean "layouts"?

@enricogior ah I see, I was mistaken. Edited

The tracker for this feature is https://github.com/microsoft/PowerToys/issues/2406
Please add your comments there.
Closing this as duplicate.
Thank you.


Update LibCST

Summary
This PR updates the revision of LibCST dependency to https://github.com/Instagram/LibCST/commit/9c263aa8977962a870ce2770d2aa18ee0dacb344
inorder to fix https://github.com/astral-sh/ruff/issues/4899
Test Plan
The test case including the carriage return (\r) character was added for
F504 and then cargo test.
fixes: #4899

Current dependencies on/for this PR:

main

PR #7062   👈

This comment was auto-generated by Graphite.

It improves the performance of two linter benchmarks.


Unexpected expand/collapse behavior on the file tree

To reproduce:

Expand a folder in the project tree which would contain at least one file in it.
Click on file at the width of parent's expand triangle (e.g. slightly left to the file name, could be tricky :).

Observed: parent collapses independently of whether file is selected or not.
Expected: if the file is selected, the selection stays. if it's not selected, then selection changes. Parent should not be collapsed.

Yep.  And for deeply nested files, depending on how far to the left of the filename you click, it'll collapse a folder farther up the parent hierarchy.
I'm going to tweak the title a little to clarify.

Closing as this is fixed by PR https://github.com/adobe/brackets/pull/10652

Reopening this as the fix was not the right fix.

While is a small issue, when you hit it is quite annoying.
Can be prioritized for the next release?


Source Generator: Initial Version

Closes #1297
The idea is to have an Attribute to annotate a stub. The general sentiment is to give fine-grained control so that users still have the ability to invoke event callbacks in their stubs.
So if a parameter is already defined, we don't have to do the work.
Open questions are annotated or are linked in the issue.

I think it's going to be easier to see what's going on if you start by renaming the existing internal generators project to bunit.generators.internal and merge that into main. Then create a PR without those changes.

I think it's going to be easier to see what's going on if you start by renaming the existing internal generators project to bunit.generators.internal and merge that into main. Then create a PR without those changes.

That would've been smart - I can do that once I am in the shape of the Generator I feel confident with.
If it is fine for now, you can easily just checkout the new StubGenerator.cs under Web.Stubs. Everything "that moved" can be ignored ATM

@linkdotnet ToDo: Add to docs with all limitations and use cases. Including setup and what not

Here are the generated files:
CounterComponentStub.g.cs:
namespace System.Runtime.CompilerServices
{
	[AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
	sealed file class InterceptsLocationAttribute : Attribute
	{
		public InterceptsLocationAttribute(string filePath, int line, int column)
		{
			_ = filePath;
			_ = line;
			_ = column;
		}
	}
}

namespace Bunit
{
	static class InterceptorCounterComponentStub
	{
		[System.Runtime.CompilerServices.InterceptsLocationAttribute("/Users/stevengiesel/repos/bUnit/tests/bunit.generators.tests/Web.Stub/StubTests.cs", 8, 22)]
		[System.Runtime.CompilerServices.InterceptsLocationAttribute("/Users/stevengiesel/repos/bUnit/tests/bunit.generators.tests/Web.Stub/StubTests.cs", 19, 22)]
		public static global::Bunit.ComponentFactoryCollection AddGeneratedStubInterceptor<TComponent>(this global::Bunit.ComponentFactoryCollection factories)
			where TComponent : Microsoft.AspNetCore.Components.IComponent
		{
			return factories.Add<global::Bunit.Web.Stub.CounterComponent, Bunit.Web.Stub.CounterComponentStub>();
		}
	}
}

InterceptorCounterComponentStub.g:
namespace Bunit.Web.Stub;
public partial class CounterComponentStub : Microsoft.AspNetCore.Components.ComponentBase
{
	[global::Microsoft.AspNetCore.Components.Parameter]
	public int Count { get; set; }

	[global::Microsoft.AspNetCore.Components.CascadingParameter]
	public int CascadingCount { get; set; }

	[global::Microsoft.AspNetCore.Components.Parameter]
	public Microsoft.AspNetCore.Components.EventCallback IncrementCount { get; set; }
}

Todo: Move AddGeneratedStub into generator

Sorry has been completely swamped the last week. Will try to find time to look at this during the week.

Sorry has been completely swamped the last week. Will try to find time to look at this during the week.

Don’t worry - I am also swamped at the moment

Are there any things open we want to tackle on this PR?
For example - adding nuspec files to have the reference to bunit.web?

Did we come to a conclusion on the release package with preview tag in the version number vs. using the experimental flag in csproj?

Did we come to a conclusion on the release package with preview tag in the version number vs. using the experimental flag in csproj?

The new Experimental thing is an attribute either on a method, class or assembly. Nothing we can add to the csproj itself.
That said, I tried to do the following:
[Generator]
public class ExperimentalFlagGenerator : IIncrementalGenerator
{
	private const string Experimental = """[assembly:global::System.Diagnostics.CodeAnalysis.ExperimentalAttribute("bUnit001: This is an experimental feature.")]""";

	/// <inheritdoc/>
	public void Initialize(IncrementalGeneratorInitializationContext context)
	{
		context.RegisterPostInitializationOutput(
			ctx => ctx.AddSource("ExperimentalAssembly.g.cs", SourceText.From(Experimental, Encoding.UTF8)));
	}
}

The generates:
[assembly:global::System.Diagnostics.CodeAnalysis.ExperimentalAttribute("bUnit001: This is an experimental feature.")]

In a generated file - but that is
a) weird - because generated code belongs to the code of the user and not really to use.
b) It doesn't work for me.
That said - probably we can use tags for the time being.

Yeah that sounds good using preview tags. We need that for the query lib too.
Unfortunately that does require either a custom version.json and custom relesse login in our workflows to update it correctly or that we try minver instead of nbgv.

Yeah that sounds good using preview tags. We need that for the query lib too.
Unfortunately that does require either a custom version.json and custom relesse login in our workflows to update it correctly, see dotnet/Nerdbank.GitVersioning#1004, or that we try minver instead of nbgv.

Fiddled around with that - we would also need a separate release branch for our "extras" plus many changes in the CI workflows.
A separate release gives also the issue of having the docs in an "invalid" state as they are driven by the "main" packages and not the extra ones. So overall that makes it a bit brittle.
Probably the easiest for the time being is to pass in a parameter to the release-workflow that indicates the package version of bunit.generators/bunit.web.query. Of course that has it's own downsides.
With unlimited resources I'd argue it's the cleanest that bunit/bunit.docs/bunit.extras live in their own, separate repository.

Fiddled around with that - we would also need a separate release branch for our "extras" plus many changes in the CI workflows.
A separate release gives also the issue of having the docs in an "invalid" state as they are driven by the "main" packages and not the extra ones. So overall that makes it a bit brittle.
Probably the easiest for the time being is to pass in a parameter to the release-workflow that indicates the package version of bunit.generators/bunit.web.query. Of course that has it's own downsides.
With unlimited resources I'd argue it's the cleanest that bunit/bunit.docs/bunit.extras live in their own, separate repository.

I would like the following:

Same repo and branches for all projects.
The preview libs with different version config such that when the release workflows creates nuget packages from the release branch they retain their preview version postfix.
All libs share the same version number.

This ensures that build dependencies between libs is maintained, and that docs are in sync.

Not sure how easy that works with ngbv (with "sub" version.json).
But the question is, do we want to tackle this on this very PR? I would argue, no.
For now we should be fine, as we explicitly pack the projects and publish them.
So let me know, if there are any open points regarding the generator.

Isn't the easiest solution just to release the preview packages on the main branch and skip on the stable branch. In that case we just need to update the CI workflows to also build the preview generator package and then we are done.

Isn't the easiest solution just to release the preview packages on the main branch and skip on the stable branch. In that case we just need to update the CI workflows to also build the preview generator package and then we are done.

Added to ci.yml

If we merge the PR, we push the package directly. I guess that is fine!!
If so, it might make sense to release bUnit itself so the documentation is also up to date.

Let me add the nuget link to the readme and docs before we merge it - should add some more traction

Let me add the nuget link to the readme and docs before we merge it - should add some more traction

Done - see last commit


Should be able to download sculpin.phar

There should be an easy way to download sculpin by way of phar. This is a combination of finishing the compiler, creating a build script, and managing the website.

I consider this complete. To deploy a specific release:
phing release -Dtag=v1.0.0
To deploy latest of a given branch:
phing release -Dbranch=some-feature
To deploy latest (master):
phing release


WIP: Add tutorial notebook for thicket's query language with demonstrated examples

The goal of this PR is to add a notebook tutorial with examples of use cases for thicket's query language. This PR includes a Jupyter Notebook and files containing performance profiles if required.

@slabasan for example 4, should we add a link/reference to the mentioned software libraries themselves?


Annotations for android

From @Alphapage on July 9, 2015 20:7
Hello,
I use a webview and I want to show a toast between two html pages to inform the user about an action.
With java, you need to add @javascriptInterface annotation to enable the function.
How can I do with Nativescript for android ?
Thanks in advance for your help.
Copied from original issue: NativeScript/NativeScript#414

You should use the WebView events loadStartedEvent, loadFinishedEvent (http://docs.nativescript.org/ApiReference/ui/web-view/WebView.html)
and then use the Toast class of Android framework to show the message
https://developer.android.com/guide/topics/ui/notifiers/toasts.html

@enchev @Alphapage
Feedback needed
I did a working prototype that allows you to specify Java annotations from JavaScript. Let's see the concrete scenario. We want to call NativeScript from a WebView control using addJavascriptInterface method. To accomplish this we need three things

Create a new class :white_check_mark:
Provide public a method :x:
Decorate the method with the proper annotations :x:

NativeScript runtime can already create new types via extend function. That's we can subclass a Java class in JavaScript. For example
var MyObject = java.lang.Object.extend({
   hashCode: function() {
      return 123;
   },
   sayHello: function() {
      return "Hello!";
   }
});

Basically, this will create a Java proxy class similar the to following one:
public class MyObject extends java.lang.Object {
   public int hashCode() {
      return (int)com.tns.Platform.callJSMethod(this, "hashCode", null);
   }
}

However, the generated Java proxy will declare only the methods what are overwritten in JavaScript (so it can pass the control flow). Thus the generated Java proxy will not expose sayHello method.
I added one more parameter to the current extend syntax in the following way.
var MyObject = java.lang.Object.extend("MyObject", {
   hashCode: function() {
      return 123;
   },
   sayHello: function() {
      return "Hello!";
   }
}, {
      annotations: [ /* list of annotations that will be applied on MyObject class */ ],
      exposedMethods: [ /* list of JavaScript methods that will be exposed in Java proxy class */ ]
});

In order to define a Java method all we need is it's signature. For the purpose of this prototype I use the standard JNI notation which is well known among the Java developers and widely used by Java tools. In our case we can encode sayHello methods as
var exposedMethod = { "signature": "sayHello()Ljava/lang/String;" }

In order to apply the corresponding Java annotations we can add annotations property as follows
var exposedMethod = {
   "signature": "sayHello()Ljava/lang/String;" },
   "annotations": [ /* list of annotations applied on sayHello method */ ]
};

We can use a single annotation format for both class and method annotation scenarios. Basically, to describe an annotation we need its name and its parameters if any. I selected the following annotation format
var annotation = {
   "className": <JNI string for the annotation class>
   "props": [ /* array or key/values */]
};

In our case, we can full describe sayHello method as follows
var jsiAnnotation = { "className":"Landroid/webkit/JavascriptInterface;", "props":[] };
var MyObject = java.lang.Object.extend("WebViewInterOp", {
      sayHello: function() {
         return "Hello NativeScript (extended in JavaScript)!";
      }
   }, {
      "annotations": [ /* list class annotations */ ],
      "exposedMethods": [ { "signature": "sayHello()Ljava/lang/String;", "annotations": [ jsiAnnotation ] } ]
   });

In TypeScript, we can use decorators in order to make the syntax more succinct
class MyObject extends java.lang.Object {
   constructor() {
      super();
      return __native(this);
   }
   hashCode() {
      return 123;
   }
   @ExposeWithSignature("sayHello()Ljava/lang/String;", [ { "className": "Landroid/webkit/JavascriptInterface;", "props": [] }])
   sayHello(): string {
      return "Hello NativeScript (extended in TypeScript)!"
   }
}

Here we use a single ExposeWithSignature decorator that follows the same pattern
@ExposeWithSignature("sayHello()Ljava/lang/String;", [ { "className": "Landroid/webkit/JavascriptInterface;", "props": [] }])

The transpiled code will be the same as in the JavaScript case.
The current prototype does not implement setting annotation properties though the infrastructure is already in place. Also, at the moment all annotations are treated as visible to the Java runtime though this also can be configuration option.
This is the first iteration for the feature and the suggested syntax is not set in stone so please feel free to comment and propose other options.

we're closing this because of the lack in interest, but don't hesitate to drop us a line and we'll open the issue, if it's still relevant.

Can we open this issue, looks I saw good prototype that can work, if it is not that hard to add, it will be great addition, as main compelling reason to use Nativescript over others others,  is that it is the least one requiring playing with native platform eclipse or xcode so if it is possible now that we got version 5.0 it will be nice addition

@AhmedAzzabi what is your scenario?
In case your scenario is WebView/NativeScript integration, I would suggest to avoid it and think about other options if possible. While such integration is possible, it comes with a cumbersome memory model and you have to think about the life of the involved JS objects. As you can see for the last 3 years there were no requests for this functionality and it makes sense to focus on other tasks. In case your scenario is critical, I would suggest to use com.tns.Platform.callJSMethod(..) and write the Java proxies yourself even though it is not an elegant solution.
P.S. I am no longer with Telerik and NativeScript team so take my comment as a personal opinion.

I agree looks an edge case, I'm interested what other alternatives you would suggest for webview/nativescript, here is my scenario:  my app get some data from websites but these websites use javascript so content can't be obtained by using http.getString, I need to emulate browser, for now I'm using plugin webview interface but just wondering if there are alternatives

Hello guys,
How can I use Android Annotations from NativeScript? like this: http://greenrobot.org/files/eventbus/javadoc/3.0/ (Annotation Type Subscribe)
For example, within an extended class of java.lang.Object
Any help is really appreciated!


Possible typo (filename) in the header comment of test_training.F90

src/tests/test_training.F90 has this header information:
! TO RUN
! ./test_training $NF_PATH/ExampleModels/simple_model_with_weights.txt

! load the simple_model
! train on simple example
!   run for 10 epochs
!   print predictions, targets, and loss
!   loss should decrease to verify backprop works

However, for some reason, using ExampleModels/simple_model_with_weights.txt  results in End of file error.
If I use ExampleModels/simple_model.txt instead, the test finishes successfully (with decreasing loss values).

The simple_model_with_weights.txt was missing the learning rate value causing the EOF. The file has been updated.


Overlays with links

In the example Overlaying Complex HTML the link "Preceding Tiles" doesn't work. In all browsers I've tested, clicking on it behaves like a regular zoom click. The target address is correctly shown on the status area, though. Am I missing anything, or would you have a working example? Thanks.

Good point! We should fix that example; thank you for reporting it.
Here's an example of it working:
https://codepen.io/iangilman/pen/mEkKaY

Thank you very much for the example!

This is now fixed by: https://github.com/openseadragon/site-build/pull/177


Audio streaming missing poster

Streaming audio and it works good but how to set a background image i.e poster on the TV?
Right now it just a black background with a text "Default Media Receiver" up in top left corner followed by a blue play progress bar down on the screen. See attached picture.

I wasn't able to find an example or more detail information how to setup a proper music Ui.
After 40h of reading and testing where I never got the "chromecast.requestCustomDataFn" function to add a background poster etc.
However after register and paid a fee to google dev to be able to register and create an application ID and thereafter add below lines into the main videojs-chromecast JavaScript file (from line 3432) the music Ui finally appear.
mediaInfo.metadata = new chrome.cast.media.GenericMediaMetadata(); mediaInfo.metadata.metadataType = 3; mediaInfo.metadata.title = 'YOUR TiTLE'; mediaInfo.metadata.artist = 'YOUR ARTiST'; mediaInfo.metadata.images = [{'url': 'https://POSTER.com/img/YOUR-POSTER.jpg'}];


If there is a q in the url it quits the app

Update keybindings to allow q in urls

Fixed in https://github.com/jim-at-jibba/telecharger/releases/tag/v0.0.4


Please consider updating jacfwd and jacrev to work with heterogenous pytrees containing real and complex components

I'm trying to get this code for the Fisher information working:
    fisher_info_f = jacfwd(grad(type(self).log_normalizer))
    return fisher_info_f(self)

where self is a dataclass of type T, and log_normalizer is a method that maps from T to real scalar.
This worked fine until I tried it with the complex normal distribution.
Inititially, I was getting the error:

holomorphic error
jacfwd requires real-valued inputs (input dtype that is a sub-dtype of np.floating), but got complex128. For holomorphic differentiation, pass holomorphic=True. For differentiation of non-holomorphic functions involving complex inputs or integer inputs, use jax.jvp directly.

Passing holomorphic=True doesn't work because some of my distributions only have real components, and others have both real and complex components.  Would it be possible to have holomorphic=True simply work for all input and output types that are real or complex?
Another problem is that jax.api._std_basis produces a basis of three complex arrays for the ComplexNormal dataclass, which has arrays of type complex, float, and complex.  Once I changed it to produce a basis with the same dtypes, everything worked fine.  Would it be possible to update _std_basis to do this?
Incidentally, _std_basis is quite ingenious and very useful.  Is there any interest in exposing it?
@mattjj (I'm sure you'll see this, but atting you since I think you worked on related issues?)

Not sure if you noticed, but I took the liberty of fixing this in #7158, which is awaiting review.


Dynamic configurations

Development Task
#1 has enabled the ability to dynamically configure various things. Here is a TODO list.

#56
per namespace dynamic config #11
security maybe
logging options

Close in favor of #11


Improved layout of Gherkin i18n table

Summary
I've restructured the Gherkin Dialects table so that it renders numerous little tables, one for each language/dialect, so as to ensure that the whole table is visible regardless of a user's Browser's zoom settings.
This resolves #212.

I've come up with a few different options for this, what do you think? @mlvandijk @aslakhellesoy
Option 1: Separate by language
Option 2: Separate by language & vertical table
Alternatively, we can add an overflow: scroll-x attribute via CSS to the original table, but I suspect the original table is a little too busy?

@xtrasimplicity Of these 2 options, the second seems more readable to me (less horizontal scrolling). It does make the page very long though; I'm still not sure we should have it in the docs (or maybe on a separate page?)
Tiny details: There's a comma behind the last language where there shouldn't be. Also, I'd prefer the list to be in alphabetical order of languages, making them easier to find.

Thanks for the feedback, @mlvandijk. I'll move it to a separate page, fix the sorting and remove the comma. :smile:

Love it! (Also as having them on a separate page would probably add them to the menu, and I don't think we'd want that). Does it also have an "expand all" option? (if someone wanted to) Although that might be a nice to have.
My only concern would be whether it would make the docs harder to maintain / more prone to bugs.

All done! I haven't added an 'expand all' button, but it could be very easily done with Javascript. :+1:


fix BCOS Custom Command

Codecov Report

Merging #95 into dev will increase coverage by 0.00%.
The diff coverage is 0.00%.

@@           Coverage Diff           @@
##               dev     #95   +/-   ##
=======================================
  Coverage     4.65%   4.66%
  Complexity      26      26
=======================================
  Files           22      22
  Lines         1954    1951    -3
  Branches       233     233
=======================================
  Hits            91      91
+ Misses        1846    1843    -3
  Partials        17      17

Impacted Files
Coverage Δ
Complexity Δ

...com/webank/wecross/console/custom/BCOSCommand.java
0.00% <0.00%> (ø)
0.00 <0.00> (ø)

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 81bb131...93a2cf0. Read the comment docs.


Rep. Slaughter passed away some time between last night and this morning

I marked the term end date as yesterday. Bioguide (already) has the death date as today, but since it was at least early A.M. I thought it made more sense to indicate yesterday as the last date.

For at least the past several members who died in office, we've used the death date as the end of their last term. Shouldn't we do the same here?

I'm with @bycoffe on this.

Fine by me, updated.

hi, are the death dates parsed out of the bioguide anywhere?

@AlJohri this script will get death dates from wikidata: https://gist.github.com/bycoffe/814fe1a277327080101ffc5451c27232

@bycoffe wow, that was fast! thanks!


Right Click Context Menu - return it to Windows Default

What feature or improvement do you think would benefit Files?
I appreciate all the detail and passion that goes into this project cause as it stands you guys make one of the best current tab management tools for a better 'Windows Explorer' experience. That being said, the effort of customization to be unique is sometimes messy and not intuitive. A great example of this is, the right click context menu. When you go to right click anything in Files.. It's just an alien context menu that looks nothing and does not operate anything like a traditional windows experience. The same way the new Windows 11 Context Menu is convoluted and messy by making users do one more additional click to get to 'options' is a messy process, the same goes for the context menu when right clicking a file in Files. There is no need for cute icons and wrenches and weird menu items that mean nothing to me. Having uniformity to be efficient and productive is. To allow a feature to un-check the use of 'Files' Context Menu and have the traditional Windows right Click Context Menu would be a god send to those who are just trying to get stuff done, quickly and efficiently. I think this would be an awesome addition to this program / tool and make it seem serious about providing an efficient experience to the average user who's looking to boost their workflow
Cheers,
Matt
Requirements

This proposal will accomplish better efficiency and a welcome experience to a person who is used to the Windows Operating System
This proposal will accomplish Uniformity, and better synergy with your tool, instead of trying to masquerade as another operating system on top of an already existing one.
This proposal will accomplish a cleaner look. The needless icons that are not very self explanatory are just bloat. Let the awesome Tab features work harmoniously with the rest of what Windows has to offer. Same could be said about your details/ properties feature. It doesn't have to be so different it's almost too different that it's a hassle.

Files Version
<IP_ADDRESS>
Windows Version
10.0.22631.3737
Comments
I hope this criticism helps as it isn't meant to bash the tool. It's awesome and shows amazing promise as a program that could stand out to show Microsoft what they're missing and how far out of touch they are with the things that matter.  You're really close but it could use a bit more refinement.

Thanks for the feedback, Using Windows 10 context menu isn't possible as many options wouldn't work as they are build for and interact only with Windows File Explorer. It also doesn't follow the design Files uses.
You can turn off Files settings > General > Move shell extensions into a sub menu to make all options show like Windows 10 did and not adding extra steps. The icons on the top are also labeled when you hover over them, same base design as Windows File Explorer and stay in the same place so you can get use to it.


mat-selection-list list-options is not updated when formControl for mat-selection-list is updated with setValue

What is the expected behavior?
Checkboxes should update
What is the current behavior?
Checkboxes do not update.
What are the steps to reproduce?
editor.componenet.html
<mat-selection-list formControlName="role">
    <mat-list-option checkboxPosition="before" *ngFor="let role of roles" [value]="role.id">{{ role.attributes.name }}</mat-list-option>
</mat-selection-list>

editor.component.ts (onInit)
this.form = this.fb.group({
    role: [[...this.user.attributes.role], Validators.required],
});

this.user.attributes.role is an array of string.
I tried
editor.component.ts
ngAfterContentInit() {
    this.form.patchValue({
        'role': [...this.user.attributes.role]
    });
}

I also tried
editor.component.ts
ngAfterContentInit() {
    setTimeout(() => {
      this.form.patchValue({
        'role': [...this.user.attributes.role]
      });
      console.log(this.form.value.role);
    }, 1000);
}

Note that I'm getting roles with an observable :
editor.component.ts
combineLatest(
      // Others observables ...
      this.jsonApi.all('roles').pipe(map(document => document.data)),
    ).subscribe(([firms, langs, roles]) => {
      // Others observables ...
      this.roles = roles;
    });

Which versions of Angular, Material, OS, TypeScript, browsers are affected?
Angular 7.x.x
Material 7.x.x
Is there anything else we should know?
I know there's a ticket about this, but it's closed and no one replies

Same, If I change the values bound, the checkboxes won't update (none is selected). Even though the array is updated correctly If I proceed to check another checkbox.
I tried using the compareWith function and using objects and a simple number[] too, did not work.

I could trick the component though, by introducing an extra boolean variable showBoundMatSelectionList, which is true by default and I added an *ngIf="showBoundMatSelectionList" for the mat-selection-list component. This way I can force to destroy the component before I do the patchValue call and reload it afterwards using the  injected protected ref: ChangeDetectorRef.
this.showBoundMatSelectionList = false;
// now notify angular to check for updates
this.ref.detectChanges();
// do your thing
// patchValues ..etc
this.showBoundMatSelectionList = true;

With this, the mat-selection-list is forced to reload the checkbox values from the supplied array. Does not matter which binding you use.

Possible duplicate: https://github.com/angular/components/issues/9085


The field of a generic is omitted for the function parameter but should be addible

Suggestion

🔍 Search Terms
Generics
Narrow Extension
✅ Viability Checklist
My suggestion meets these guidelines:

[x] This wouldn't be a breaking change in existing TypeScript/JavaScript code

[x] This wouldn't change the runtime behavior of existing JavaScript code

[x] This could be implemented without emitting different JS based on the types of the expressions

[x] This feature would agree with the rest of TypeScript's Design Goals.

[x] This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, new syntax sugar for JS, etc.)

⭐ Suggestion
It would be really nice if you can extend an object with one/selection of keys, in which the types of that keys don't get extended.
The problem with this extension is, that it doesn't allow for a pipe, where you omit some part of it, as it gets added in that pipe with the correct type (e.g. string), but as the generic could be an extension of string you can no longer put it back together.
Maybe there is a workaround for this, but I couldn't find anything online

📃 Motivating Example

export class TemplateFormatter<TemplateInput> {
  bar(templateInput: TemplateInput): void {
    console.log(templateInput)
  }
}

const foo = <
  T extends NARRORTYPE {a: string}
>(
  b: TemplateFormatter<T>
) => (
  payload: Omit<T, 'a'>
): void => {
  const a = 'someString'
  b.bar({ ...payload, a })
}

💻 Use Cases
This would allow for some really nice currying and pipes, in which objects can be put together nicely with good levels of abstractions.

Some examples of legal and nonlegal calls to foo would provide a ton of context. What is the intended interpretation of NARRORTYPE ?

Intended interpretation of NARROWTYPE
T should have a field a with the type string. The way typescript extends this field a it can have any extension of string, but there should also be a way to match exactly that type.
The reason I want to have a type variable is so that I can use a specific version of my TemplateFormatter, so that I can infer the type of the payload variable.
Examples for foo calls
legal:
const foobar = foo(new TemplateFormatter<{a: string, b: number}>())
const b = 5
foobar(b)

nonlegal:
foo(new TemplateFormatter<{b: number}>())
foo(new TemplateFormatter<{a: number, b: string}>())
foo(new TemplateFormatter<{a: Extends<string>, b: number}>())

const foobar = foo(new TemplateFormatter<{a: string, b: number}>())
const b = 5
foobar(b)

Why would this be legal? Do you mean foobar({ b }) ? What is Extends<string> ?
It seems like this does what you want:
const foo2 = <T,>(b: TemplateFormatter<T & { a: string }>) => (payload: T): void => {
  const a = 'someString'
  b.bar({ ...payload, a })
}


Persist data with Room

URL of codelab:
https://developer.android.com/codelabs/basic-android-kotlin-compose-persisting-data-room?continue=https%3A%2F%2Fdeveloper.android.com%2Fcourses%2Fpathways%2Fandroid-basics-compose-unit-6-pathway-2%23codelab-https%3A%2F%2Fdeveloper.android.com%2Fcodelabs%2Fbasic-android-kotlin-compose-persisting-data-room#4
Specify the language of the codelab if it is not English:
In which task and step of the codelab can this issue be found?
Step 5
5. Create an item Entity
Describe the problem
in item 2. it says to set the items as in plural.. it should be singular as in "item" NOT "items" THIS IS VERY MISLEADING.. SEE Screenshot images
"Above the Item class declaration, annotate the data class with @Entity. Use the tableName argument to set the items as the SQLite table name."
Steps to reproduce?

Go to...
Click on...
See error...

Versions
Android Studio version:
API version of the emulator:
Additional information
Include screenshots if they would be useful in clarifying the problem.

Duplicate of #6

Hello @lixoten,
Thank you for reaching out to us. It is fixed and published.


python-packages: use findutils from buildPackages in hooks

This fixes a bunch of errors when cross-compiling.
Description of changes

Things done

Built on platform(s)

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

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] 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/)
22.11 Release Notes (or backporting 22.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
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[ ] Fits CONTRIBUTING.md.

Any example you can give that I can check out?

The python namespaces hook is broken without this. Try pkgsCross.aarch64-multiplatform.python3.pkgs.jaraco_stream:
       > /nix/store/f4hyzz5crxafywc4m1xzzmnn7akynw73-python-namespaces-hook.sh/nix-support/setup-hook: line 35: /nix/store/fvg384csmrynjf8vww44ga65fnxkvf8w-findutils-aarch64-unknown-linux-gnu-4.9.0/bin/find: cannot execute binary file: Exec format error

That would be helpful in the commit message, can you add it?

i cant push in to this branch so please do this instead
diff --git a/pkgs/development/interpreters/python/hooks/default.nix b/pkgs/development/interpreters/python/hooks/default.nix
index 5d605b240ad..ca445afce3c 100644
--- a/pkgs/development/interpreters/python/hooks/default.nix
+++ b/pkgs/development/interpreters/python/hooks/default.nix
@@ -5,7 +5,6 @@
 , disabledIf
 , isPy3k
 , ensureNewerSourcesForZipFilesHook
-, findutils
 , installShellFiles
 }:

@@ -107,7 +106,7 @@ in rec {
       };
     } ./python-imports-check-hook.sh) {};

-  pythonNamespacesHook = callPackage ({}:
+  pythonNamespacesHook = callPackage ({ findutils }:
     makeSetupHook {
       name = "python-namespaces-hook.sh";
       substitutions = {

Done, and checked that it still works.

Touching widely used python hooks will need to go through staging.


Feature Request: Replace and remove property values

This plugin has been really helpful in mass applying and renaming properties In my vault, however, I have noticed that there is no functionality for replacing or removing values within properties. I have a couple of list-type properties from my notes for which there are some values that I would like to change, and this does not just include the default tags property. At the very least, I would like the ability to bulk-remove list items from properties, as I think this plugin already allows its users to add list values in existing properties (I'm too afraid to test it myself at the moment, in fear that I might lose existing list values).

The plugin will add any new list values to properties that match the same name that you inputted.(ex. if you input list1: item3, then all notes with the list1 property will receive item3)  This functionality will occur so long as the overwrite setting is turned off, which will replace the contents of the existing list property.  I understand being afraid of losing existing values as this can be a volatile plugin.  You can always make a backup of your notes, or test it on a completely  separate folder.
As for bulk-removing or editing specific values from lists, you could utilize the overwrite functionality in order to replace all the list values with the same ones, in addition to any changes you want.(ex. list1: item1,item2,item3 to overwrite list1: item1,itme2,item3 to fix a typo)  Again, make a backup if you're afraid of something going wrong.
I recognize this isn't ideal in the current state of the plugin, but it is an option.  At the moment this plugin is not a priority for me, so I don't see myself implementing this anytime soon.  I still appreciate the feedback regardless.


feature/suggetion for add drag and drop object or text

hello..
in that can we add gif animated  object or text over live broadcasting  ?
Thanks

Teorically yes, this is possible on stream using surface and opengl (In this library API21+).
But this need work, not easy. I'm interesing on implement a watermark that can be used for gif but no to set text. If you want set text could be added with a bitmap.

yes that is fine if text converted into transparent bitmap image..
overall feature intense is can able to drag any animation in live ongoing broadcasting
Hope You understand concept.
Let me know if you have any query about it.
Thanks

Hi i did a test for it. For now it is under develop and need some fix.
To test you can donwload the project and change this lines in Default activity:
setContentView(R.layout.activity_example);
    SurfaceView surfaceView = (SurfaceView) findViewById(R.id.surfaceView);

To:
setContentView(R.layout.activity_gl);
    OpenGlView surfaceView = (OpenGlView) findViewById(R.id.surfaceView);

Working with camera2 but render opengl present glitches :(

hello,
i want to pass/send GIF image in live video broadcasting on android app,but in live video we cant send both at a time.
thanks

Gif could be added if you decode the file and send a list of frames like bitmap objects.
I can do that implementation.
To get frames maybe this can be usefull:
https://stackoverflow.com/questions/8933893/convert-each-animated-gif-frame-to-a-separate-bufferedimage

hello
javax.imageio.ImageIO is not part of the Android platform, so unfortunately
we can't use it.
How's possible to use javax.imageio.ImageIO (packages/class) in android?
How we can send the image/GIF in live video broadcasting in android ?
Thanks.

I found other solution to get bitmaps with GifDecoder class:
http://droid-blog.net/2011/10/15/tutorial-how-to-play-animated-gifs-in-android-–-part-2/
https://github.com/felipecsl/GifImageView/tree/master/library/src/main/java/com/felipecsl/gifimageview/library

hello
i set the image on the surface view but when i start the publish live video at that time just blank screen or image live(published), now i want to broadcast together(image & live video)in android.
Thanks.

Clone the project.
If you want only watermark (overload a bitmap in the stream) you can go to default example and change on a activity this lines:
    setContentView(R.layout.activity_gl);
    OpenGlView surfaceView = (OpenGlView) findViewById(R.id.surfaceView);

If you change that lines you will use opengl to process camera image and overload a bitmap. For now all is hardcode because this is under develop so if you want change the bitmap you can modify it in TextureManager class on encoder module.

Gif support is available now.
If you go to OpenGlView and replace TextureManager to TextureManagerGif you can see a demo with a banana gif.
I will add a demo activity this week anyway.

okay thanks..


feat(material/tabs): Optional MatTabContent reinstantiating when lazy loaded

Feature Description
This feature request follows issue #16065 that was closed due to inactivity in 2019.
Currently, when using MatTabContent, the content gets reinstantiated on each tab change.
I am willing to have an option to configure the lazy loading process to instantiate the content only once, when it gets loaded for the first time.

I believe that this is a duplicate of https://github.com/angular/components/issues/19480.


Linked list program

It does basic linked list operations

please accept my program on basic operations of linked list.


Supporting AWS CAPI clusters

Evaluate if Kamaji can provide Control Planes for worker nodes deployed on AWS through CAPA.

Waiting for kubernetes-sigs/cluster-api-provider-aws#4438 getting merged.


[vs-select] - Maximum recursive updates exceeded in component

Hi. An error occurred while searching in the vs-select component. I have a country directory that contains 250 vs-option.
<vs-select v-model="filter.country" filter label="Geo" placeholder="Geo">
  <vs-option
    v-for="country in options.countries"
    :key="country.id"
    :label="country.en_name"
    :value="country.id"
  />
</vs-select>

When searching for a country, this error occurs:

After this error, it is impossible to close the country selection vs-popper

List of countries I use countries.json. If you leave 99 countries from this list, the problem will disappear

Thanks, i'll try it

The error disappeared after I switched from vue v3.4.30 to v3.2.47. Thanks


Added Growth Hacking Awseom list

A random list isn't very useful. Add description of why you chose to include the specific links. I can get random links by googling "growth hacking". As a user I want to know I should bother to click one of the links.
The list is also very new. Give it a month and try again ;)


Dependencies version conflicts for latest commit of client and node repo.

Is your feature request related to a problem? Please describe.
Currently, the client substrate dependencies are dependent on polkadot-v0.9.40 version while the para chain is upgraded to polkadot-v0.9.42 version. Hence both the master version of the repo is not compatible with each other.
Describe the solution you'd like
This needs to be discussed.
Describe alternatives you've considered
Tried patching up client dependencies to polkadot-v0.9.42. And adding the master branch as a dependency on the client side.  Checked the cargo tree for the frame-support dependency the commit id is different for both, hence the following error is passed out
error[E0432]: unresolved imports `frame_support::traits::tokens::Fortitude`, `frame_support::traits::tokens::Preservation`
    --> /home/runner/.cargo/git/checkouts/interbtc-8cf6a8e06590b22b/66dae6a/crates/loans/src/lib.rs:38:38
     |
  38 |         tokens::{fungibles::Inspect, Fortitude, Preservation},
     |                                      ^^^^^^^^^  ^^^^^^^^^^^^ no `Preservation` in `traits::tokens`
     |                                      |
     |                                      no `Fortitude` in `traits::tokens`

Additional context
This will cause issues if the developer is working on both repos simultaneously. For para chain dependency on the client side, the developer might need to be dependent on the last release version and not the master branch.

I'm hoping https://github.com/interlay/interbtc-clients/issues/486 will reduce the need for us to align the dependencies in the future but for now the process is to match those for the parachain release. If decide to include a fix for an older version of the clients we should hotfix.


GUVNOR-2347 : Move ksession selector into kie-wb-common

https://github.com/droolsjbpm/kie-wb-common/pull/220

+1 to merge.

master: e76284a518748412737cd030556a06cf4701f12f