Error when invoking middleware/createTradeApp.js with release-1.4

Hi - I am attempting to run middleware/createTradeApp.js with release-1.4, but am getting an error (please see below)
I am following the instructions in the README.md at https://github.com/HyperledgerHandsOn/trade-finance-logistics/tree/release-1.4/middleware.  I believe that all of my config parameters in the network and middleware directories are consistent.
I believe that my error is not related to Issue #3  (Race condition during channel join in createTradeApp.js).  (As one attempt to debug, I extended the sleep time at line 196 of create-channel.js, but still getting same error.)
Here is the console output when I invoke createTradeApp.js:
++++++++++++++
rick@mac4hull middleware % node createTradeApp.js
2020-02-07T08:05:53.600Z - info: [ClientUtils]:

Using temp dir: ../network/client-certs

Successfully extracted the config update from the configtx envelope
Successfully enrolled user 'admin' for exporterorg
Successfully signed config as admin of exporterorg
Successfully enrolled user 'admin' for importerorg
Successfully signed config as admin of importerorg
Successfully enrolled user 'admin' for carrierorg
Successfully signed config as admin of carrierorg
Successfully enrolled user 'admin' for regulatororg
Successfully signed config as admin of regulatororg
Successfully enrolled user 'admin' for every org and obtained channel config signatures
Successfully enrolled user 'admin' for orderer
2020-02-07T08:05:53.987Z - error: [Orderer.js]: sendDeliver - rejecting - status:NOT_FOUND
Channel tradechannel does not exist yet (IGNORE ANY ORDERER ERROR MESSAGES YOU SEE ABOVE!!)
Successfully signed config update as orderer admin
{ status: 'BAD_REQUEST',
info: 'error validating channel creation transaction for new channel 'tradechannel', could not succesfully apply update to template configuration: error authorizing update: error validating DeltaSet: policy for [Group]  /Channel/Application not satisfied: implicit policy evaluation failed - 0 sub-policies were satisfied, but this policy requires 1 of the 'Admins' sub-policies to be satisfied' }
"-------------------------"
CHANNEL CREATION FAILED: Error: Error: Failed to create the channel.
at Client.newDefaultKeyValueStore.then.then.then.then.then (/Users/rick/go/src/trade-finance-logistics/middleware/create-channel.js:201:10)
at
at process._tickCallback (internal/process/next_tick.js:189:7)
at Client.newDefaultKeyValueStore.then.then.then.then.then.then (/Users/rick/go/src/trade-finance-logistics/middleware/create-channel.js:209:9)
at
at process._tickCallback (internal/process/next_tick.js:189:7)
"-------------------------"
++++++++++++++
Any suggestions would be appreciated.
(In case it is useful, I have attached logs from 3 of the containers.)
ca_peerImporterOrg--log.txt
orderer.trade.com--log.txt
peer0.importerorg.trade.com--log.txt
Thanks

@Hull4Progress Just to make sure that versioning is consistent across modules, can you check what versions of the fabric-client and fabric-ca-client were installed in middleware/? Run npm list | grep fabric to view the installed versions. If they are greater than 1.4.0, can you remove the ~ from the following two lines, rerun npm install, and rerun the application?
Typically there shouldn't be a breaking change across minor versions but there's no guarantee of that.
If this still doesn't work, I'll do some debugging.

@VRamakrishna
Thank you for your ultra-quick response.  Unfortunately the same bug seems to be occurring, but let me tell you some things that I attempted.

Indeed I had different versions for fabric-ca-client (1.4.5) and fabric-client (1.4.5) so I edited the file in ../middleware/package.json file as you recommended

I was using an up-to-date version of node, and when I did "> npm install" it complained about incompatibility with the fabric-client and fabric-ca-client, so I did "> nvm install v8.9.0".  It came back saying that I was now using node v8.9.0 (npm v5.5.1) so that seems good.

When I did "> npm install" it complained about the xcode set up, that
"xcode-select: error: tool 'xcodebuild' requires Xcode, but active
developer directory '/Library/Developer/CommandLineTools' is a
command line tools instance"
So, I reloaded the Xcode app from the Apple App store (Version 11.3.1 (11C504)) and then, following the first comment in https://stackoverflow.com/questions/17980759/xcode-select-active-developer-directory-error I invoked "> sudo xcode-select -s /Applications/Xcode.app/Contents/Developer"

After this the "> npm install" ran with only a warning "npm WARN<EMAIL_ADDRESS>No repository field."   But as I look at the log there may still be something wrong with my Xcode installation -- I appears that the npm install is attempting to find certain directories multiple times, but finally gives up.

And, when I invoke "> node createTradeApp.js" I get the same error as before.
I am attaching here a new set of logs from orderer.trade.com, peer0.importerorg.trade.com, and ca_peerImporterOrg, although these look the same as before.  I am also attaching the output from when I ran "> npm install", in case that is useful.
Thanks!
Rick
ca_peerImporterOrg--log.txt
npm-install--log.txt
orderer.trade.com--log.txt
peer0.importerorg.trade.com--logs.txt

@Hull4Progress I tested this out and made a small change to the configtx.yaml file. Now the applications run fine. Can you pull the latest code from the release-1.4 branch and retry? No need to make any changes to package.json; the latest version will work, just revert your changes and rerun npm install.
(It seems version 1.4.5 requires these setting changes to be explicit whereas 1.4.0 didn't.)
About your Xcode issues, I can't offer any advice as I develop on Linux. Perhaps @ldesrosi can help?

Hi - Thank you for your comments.  Here are some points

as for the "npm WARN<EMAIL_ADDRESS>No repository field.", that appears to be a warning only and I think it is not causing any problems (according to, e.g., https://stackoverflow.com/questions/16827858/npm-warn-package-json-no-repository-field)

In your update to configtx.yaml I noticed that for the first change (relating to "Global: &ChannelCapabilities") that you used V1_4_3, but for the other two changes you used V1_4_2.  Also, after replacing my copy of configtx.yaml with the new one, when I attempted in ../network to run "> ./trade.sh generate -c tradechannel" it turned out that the orderer.trade.com container crashed.  Please see first log in the attached file.  Since it seemed suspicious to have V1_4_3 for the first change and V1_4_2 for the second and third, I experimented with making the first change be V1_4_2 rather than V1_4_3.  In that case, when I ran "> ./trade.sh generate -c tradechannel" the tradechannel seemed to come up and the orderer.trade.com container seemed to launch satisfactorily

I then reverted my copy of package.json to the original as per your suggestion

However, I have made a couple of runs of "> node createTradeApp.js" and continue to get the same error
{ status: 'BAD_REQUEST',
info: 'error validating channel creation transaction for new channel 'tradechannel', could not succesfully apply update to template configuration: error authorizing update: error validating DeltaSet: policy for [Group]  /Channel/Application not satisfied: implicit policy evaluation failed - 0 sub-policies were satisfied, but this policy requires 1 of the 'Admins' sub-policies to be satisfied' }
(I tried with the latest node/npm, and with node 9.8.0/npm 5.7.1 (requested by the release-1.4 middleware readme).

Do you have some additional suggestions?  BTW, I think you are in India, and I will be up for a while - would you possibly have some time when you start working in the next 4 or 5 hours to have a skype or webex call to attempt to troubleshoot this in realtime?  I can be reached at<EMAIL_ADDRESS>or skype4hull on skype...
Thanks
Rick
logs-from-orderer.trade.com-container.txt

@Hull4Progress I'm in the India Research Lab blockchain team and used to attend your weekly calls back in 2016, especially the discussions on the smart contract framework.
I had meetings in the morning, so I'm just getting free time now, sorry.
What you observed in (2) is strange. I know the version numbers were inconsistent, but I followed the example in the fabric samples: https://github.com/hyperledger/fabric-samples/blob/release-1.4/first-network/configtx.yaml. I assumed there's a reason for keeping different version numbers, and this worked for me.
From your logs, I see that you got the error panic: unable to bootstrap orderer. Error reading genesis block file: read /var/hyperledger/orderer/orderer.genesis.block: is a directory. This means that generate failed to create genesis.block, which then couldn't be synced to the orderer's container. I'm not sure why. Can you rerun everything from a clean slate? Kill and remove all the running containers, and delete channel-artifacts and crypto-config folders, start from scratch? And attach the console output from the generate command?
I suspect the version difference is why you are still getting the error in (4). Can you display the container image versions? Run docker images | grep hyperledger. I can tell you that I tested from a clean slate on a new VM, and my docker images and npm packages are using version 1.4.5.

@VRamakrishna  -- Hi - I am just seeing your message and will try to follow your suggestions in the coming minutes

@Hull4Progress They aren't different versions but rather the same images with different sets of tags (see the image IDs, they are identical). If you examine the list, every image has a latest tag associated with it, which is what trade.sh uses. When you ran make docker in the Fabric source folder, it build these container images and then tagged them with latest so applications can rely on them. Tomorrow, if you want to upgrade the Fabric source and rebuild the images, the latest tag will be associated with the new images, and used by the trade application without having to modify the trade.sh script or configuration files (except as required for compatibility).
Anyway, glad you were able to get things to work. Good luck! I'll close this issue now.

@VRamakrishna  Hi - BTW - that is nice to know that we crossed paths a few years ago.
Actually, there may be a further "bug".  I was successful with createTradeApp.js, which runs through all of the steps.
However, now I am attempting the "Test Run to Add a New Organization to the Network".
I checked whether the config_upgrade.json was consistent with the specs in network folder, and that seems OK.  (For one thing, config.json and config_upgrade.json agree on the 4 original orgs.)
In the network folder I invoked "> ./trade.sh createneworg" to generate the cryptographic and channel artifacts for exportingentityorg.  Here is the console output from that:
rick@mac4hull network % ./trade.sh createneworg
Generating certs and configuration for new org with channel 'tradechannel'
Continue? [Y/n] Y
proceeding ...
/Users/rick/go/src/github.com/hyperledger/fabric/.build/bin/cryptogen
######################################################################
Generate certificates for new org using cryptogen tool
######################################################################

cryptogen generate --config=./add_org/crypto-config.yaml
exportingentityorg.trade.com
res=0
set +x

/Users/rick/go/src/github.com/hyperledger/fabric/.build/bin/configtxgen
####################################################################################
#########  Generating Channel Configuration for Exporting Entity Org  ##############
####################################################################################

FABRIC_CFG_PATH=/Users/rick/go/src/trade-finance-logistics/network/add_org/
configtxgen -printOrg ExportingEntityOrgMSP -channelID tradechannel
2020-02-10 03:40:44.686 EST [common.tools.configtxgen] main -> INFO 001 Loading configuration
2020-02-10 03:40:44.690 EST [common.tools.configtxgen.localconfig] LoadTopLevel -> INFO 002 Loaded configuration: /Users/rick/go/src/trade-finance-logistics/network/add_org/configtx.yaml
res=0
set +x

============================
However, there may have been something wrong with the outcome, because I see that in the folder ../network/channel-artifacts that there is a file exportingEntityOrg.json.  Which doesn't match the pattern of the other orgs, which have files such as ImporterOrgMSPanchors.tx
Anyway, then in the ../middleware folder I invoked "> node run-upgrade-channel.js" and got the following console output
========================
rick@mac4hull middleware % node run-upgrade-channel.js
2020-02-10T09:06:00.043Z - info: [ClientUtils]:

Using temp dir: ../network/client-certs

Successfully enrolled user 'admin' for orderer
Got configuration block
Current config version: 1
configtxlator: error: open /dev/stdout: permission denied, try --help
configtxlator: error: Error decoding: error decoding input: *common.Config: unknown field "policies" in common.Config

CHANNEL UPGRADE FAILED: Error: Error: Error: Command failed: configtxlator proto_encode --input ./tmp/modified_config.json --type common.Config --output ./tmp/modified_config.pb
configtxlator: error: Error decoding: error decoding input: *common.Config: unknown field "policies" in common.Config
at checkExecSyncError (child_process.js:575:11)
at Object.execSync (child_process.js:612:13)
at Client.newDefaultKeyValueStore.then.then.then (/Users/rick/go/src/trade-finance-logistics/middleware/upgrade-channel.js:134:9)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:118:7)
at Client.newDefaultKeyValueStore.then.then.then.then.then (/Users/rick/go/src/trade-finance-logistics/middleware/upgrade-channel.js:180:9)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:118:7)
at Client.newDefaultKeyValueStore.then.then.then.then.then.then (/Users/rick/go/src/trade-finance-logistics/middleware/upgrade-channel.js:185:9)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:118:7)

====================
Any thoughts on what is going wrong here?
( I checked that I have version 1.4.5 for both fabric-client and fabric-ca-client, as shown by this command
=====================
rick@mac4hull middleware % npm list | grep fabric
├─┬<EMAIL_ADDRESS>├─┬<EMAIL_ADDRESS>│ ├─┬<EMAIL_ADDRESS>)

@Hull4Progress First: run node runTradeScenarioApp.js right after you complete node createTradeApp.js so the chaincode's ledger state gets updated (if you don't do this, you'll see errors in a later step.)
The file exportingEntityOrg.json is the expected output of createneworg, so don't worry, that step succeeded. The bootstrapping of a channel requires the creation of different configuration files than upgrade does.
I don't know why you are getting an error with configtxlator. The following looks like a permissions issue?
configtxlator: error: open /dev/stdout: permission denied, try --help

The following looks like there is an incompatibility between the structure and the expected schema:
configtxlator: error: Error decoding: error decoding input: *common.Config: unknown field "policies" in common.Config

Now, assuming that you built configtxlator using make from the Fabric source, I think this happened because the command executed in line 134 in upgrade-channel.js depends on an input file that couldn't be created because of the permissions issue above. Also, can you confirm that you left the exportingEntityOrg.json file as is, and did not move or rename it? (Look at line 131; it depends on that JSON file being in the right place.)

Hi - sorry to say but I am still wrestling with things.  Perhaps my environment has some stray files in some caches or something.
My basic situation is that I have made several attempts involving restarting from scratch, on both the hyperledger/fabric download and the trade-finance-logistics download, but I keep running into a problem with "> node createTradeApp.js".  Please see the attached log.
console-log-of-createTradeApp-with-go1.12.16.txt
Also, it might be that I am somehow not using the correct version of go, node, or npm (or something else?)  I have experimented with different variations, including:

I have tried go1.12.16.darwin-amd64, because the page at https://hyperledger-fabric.readthedocs.io/en/release-1.4/prereqs.html says that for release-1.4 I should be using go1.12.x.  I have also tried using go1.13.4.darwin-amd64, because I had loaded that way back. and go1.13.7.darwin-amd64 because that is the latest.

I have generally used node 9.8.0 / npm 5.7.1, at least in the network directory, because that is what https://github.com/HyperledgerHandsOn/trade-finance-logistics/tree/release-1.4/middleware recommends.  I have sometimes used node v8.17.0/npm 5.6.0  or node v10.19.0 in the hyperledger folder, because https://hyperledger-fabric.readthedocs.io/en/release-1.4/prereqs.html says  "version 8 is supported from 8.9.4 and higher. Node.js version 10 is supported from 10.15.3 and higher."  (I haven't used node 10.19.0 in the middleware folder, because when I try to "install" it, it complains about a lot of vulnerabilities)

I am wondering
-- do you have any idea why I'm getting this error about "failed to get submitter Importer"?  (It is especially strange because I was running createTradeApp.js successfully about 24 hours ago)
-- is it related to the line "Successfully loaded user Importer from persistence" which is a few lines above?  Where is the "persistence" and is it possibly stale
-- precisely what versions of go, node, npm are you using in the network, middleware and hyperledger folders
-- any other suggestions?
Many thanks for your time on this.
Rick

Also - I am still stuck on errors in ../middleware/run-upgrade-channel.js which read

configtxlator: error: open /dev/stdout: permission denied, try --help
configtxlator: error: Error decoding: error decoding input: *common.Config: unknown field "groups" in common.Config

I agree that there seems to be a read/write permission challenge here, but I haven't solved it.
Can you please tell me the specific versions of node, npm, go that you are using? And whether it is different for different directories?
Some of the versions I've been testing with include
-- for go I have tried go1.12.16.darwin-amd64 (because https://hyperledger-fabric.readthedocs.io/en/release-1.4/prereqs.html says that I should) but also tried 1.13.4 darwin/amd64 and go1.13.7.darwin-amd64
-- in the hyperledger directory I have node v10.19.0 / npm 5.6.0 , (because https://hyperledger-fabric.readthedocs.io/en/release-1.4/prereqs.html says that I should)
-- in the ../middleware directory I have node v.9.8.0 / npm 5.7.1 (because https://github.com/HyperledgerHandsOn/trade-finance-logistics/tree/release-1.4/middleware says that I should)
Does that match your set up?
Thanks
Rick

Yes, you need to delete client-certs, which acts as a key and certificate cache. You don't have to  manually delete the folders and bring down the containers. You can run ./trade.sh down followed by ./trade.sh clean, and that will do the job for you.

I checked my setup, and I was running node v10.19.0. But I downgraded to 9.8.0 and ran the complete workflow successfully. I don't believe the application is very sensitive to node/npm versions. The suggestions made in the READMEs are just guidelines.

It looks like you deleted an earlier comment? I got it in my email though. I believe you were getting those errors while running createTradeApp.js because of the presence of client-certs. (I should have mentioned that earlier, but at that point you were still stuck in the channel create phase, so it didn't seem relevant.)
About the configtxlator, I'm not sure how to help. What the code is doing is trying to execute a shell command in the Node.js runtime (using the execSync function). Perhaps you can give global write permissions to /dev/stdout using chmod and retry?

Yes - I did radically edit one of my comments, because at some point I realized that part of my problem was that I wasn't cleaning out the client-certs.  Sorry about that.  Thanks for pointing to the './trade.sh clean' capability.
Yes, I tried to give global permissions for /dev/stdout, but that doesn't work immediately because /dev/stdout is being used as a link to other more concrete directories.  I had also been experimenting with different versions of go, etc.  But I will go back to trying to investigate the global permissions further.

Hi @VRamakrishna   -- Thank you for your observation that there seemed to be an access permissions problem going on.  Indeed, it appears that with the OSX version that I am using -- Catalina 10.16.3 -- there are some new security features that block programs and apps from getting at certain things.
I decided to switch to Ubuntu in VirtualBox, and I have successfully run the entire exercise for the network folder and the middleware folder.  So, that is good news.  (I will be trying the application folder soon.)
Can I suggest that you alert users of your website (at least for release-1.4, but probably for all releases) that parts of the HL Fabric won't work with Mac OSX Catalina (and perhaps with some of the preceding OSX versions)?  Perhaps in the README.md for the page https://github.com/HyperledgerHandsOn/trade-finance-logistics/tree/release-1.4.
BTW, I did post a comment into the HL JIRA to see if they would give a response.  You can see that as the second comment in https://jira.hyperledger.org/browse/FAB-16987?jql=text ~ "catalina"  .  But perhaps I should have started a new thread in the JIRA - what do you think?
I think it is now appropriate to close this issue.  Thanks again very much for your timely and on-going assistance.
Rick

@Hull4Progress Good to know you got it working, and thanks for letting me know. We will add warnings to our instructions as you suggest. (Not being a Mac developer nor having access to a Mac prevents me from even attempting to fix your issue.)
@ldesrosi FYI.
I'll close this now.


FogVolume problems

each eye has diffrent fog level

This is definitely more of a Godot rendering issue and should be submitted on the normal Godotengine repository, however it would be valuable to note whether this occurs on Godot 3 or Godot 4 and which renderer is being used gles2, gles3, vulkan mobile, or vulkan forward+

I tested it on gd4 rc2 forward+
śr., 22 lut 2023, 05:16 użytkownik Malcolm Nixon @.***>
napisał:

This is definitely more of a Godot rendering issue and should be submitted
on the normal Godotengine repository, however it would be valuable to note
whether this occurs on Godot 3 or Godot 4 and which renderer is being used
gles2, gles3, vulkan mobile, or vulkan forward+
—
Reply to this email directly, view it on GitHub
https://github.com/GodotVR/godot-xr-tools/issues/381#issuecomment-1439415203,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AMHGGSXD5NPSOWCNC6VDWQLWYWHKVANCNFSM6AAAAAAVDVFGHU
.
You are receiving this because you authored the thread.Message ID:
@.***>

I don't think fog volumes have been updated for stereoscopic rendering yet.  But indeed as Malcolm states, please raise this as an issue on the Godot repository, this is unrelated to XR Tools.

Ok I will

This is indeed an engine issue, so this one should be closed.


forwarded_ip_config block is not supported in geo_match_statement

Description
It appears that the forwarded_ip_config block is not supported in geo_match_statement, even though the block is declared Terraform  does not recognize any changes.
Steps to Reproduce
Add forwarded_ip_config block in the geo_match_statement before deploying the infrastructure.
Deploy the infrastructure using Terraform.
Observe that the rule is not configured to check the header  argument does not take effect.
Modify the rule from AWS Console
Run Terraform plan and it detects a drift and tries to revert back the rule to its original state
Relevant Code Snippet
module "waf" {
source = "github.com/aws-ss/terraform-aws-wafv2"
resource_arn = [aws_lb.test_alb.arn]
name = "custom_rate_based_waf"
scope = "REGIONAL"
default_action = "allow"
{
name     = "not-block-traffic-from-IT"
priority = 10
action   = "block"
not_statement = {
geo_match_statement = {
country_codes : ["IT"]
forwarded_ip_config = {
header_name = "x-forwarded-for"
fallback_behavior = "MATCH"
}
}
}
visibility_config = {
cloudwatch_metrics_enabled = true
metric_name                = "not-block-traffic-from-IT"
sampled_requests_enabled   = true
}
},

@dadogmail Hello 👋
Sorry for the late response, I've updated the 'forwarded_ip_config' argument in the geo_match_statement to be usable.
You can use v3.4.0.


Open-source Command Prompt

Description of the new feature/enhancement
Open source the Command Prompt Application.
Proposed technical implementation details (optional)

What you're referring to is conhost.exe and its source is already in this repository.

I looked at it wrong.

leejy12 is partially correct. The "console window" that CMD runs inside (and powershell, and ping.exe, ...) is conhost.exe. We are not planning on open sourcing CMD itself (the actual shell, which prints out C:\> and says Microsoft Windows 10.xxx.yyyy at the top).


Freezing On web screenshot option

Hie Deploying reconftw on a vps server is working fine but sadly its freezing (unresponsive) on the Webcreenshots
is the anyway i can skip that like to skip the use off that functionality

Yes! You can skip it setting to False the webscreenshot module in reconftw.cfg


Function for disassembling driver version into major/minor/patch

Hi there,
So currently we're using agsCheckDriverVersion to ensure the AMD driver version is supported. However, for debugging purposes and for a more standardized flow between various vendors we want to get a version name that is formatted the following way: major.minor.patch. The name we get from ASGPUInfo::driverInfo doesn't seem to be that way, we have to split by - to ensure we don't get remainder (<IP_ADDRESS>-230210a-388153C-AMD-Software-Adrenalin-Edition).
Is there a guarantee that this assumption (- being splittable and separating version) will hold true for the future?
My guess is that the agsCheckDriverVersion function will parse this string and turn it into a uint and do a compare on that, if this is the case; why is this not exposed (by providing this value and a function that turns the bitfield back into the separate components)? Maybe I'm missing something, but the only thing I found was ags version major/minor/patch and that's about AGS itself and not about the driver.
Thanks for the help.

I would recommend using AGSGPUInfo::radeonSoftwareVersion in the agsCheckDriverVersion as that is expected to be in the format major.minor.patch.  This also maps to the year.month.revision of the driver package.
The AGSGPUInfo::driverVersion is going to look something like 22.40.xxx which is an internal versioning scheme we use, and as you've seen, doesn't map well to major.minor.patch numbering.

Awesome, guess I'll use that then, thank you.


Scope of the ontology

Should we consider additional standards (CSPA, CSDA, GSDEM...)?
Should we broaden the scope (e.g. geospatial)?

Ideally, we would like to cover all of these, but do we have the time, in our current plan, and do we have the resources in our current group? Should we first use our time and resources doing a really good job of GAMSO, GSBPM, GSIM, getting that finished and thereby having a good starting point for the others?

In my opinion we should concentrate on the models for statistical business process (GSBPM and GSIM) as such as this is the core activity of different statistical agencies. This is enough for the duration of this project. Taking into consideration other models e.g. GAMSO, CSPA, CSDA, GSDEM could be suggested as 'new' projects for next year.

Decided during 23/02/21 meeting: stick to GAMSO/GSBPM/GSIM for now, but keep in mind capability (CSDA, GAMSO) and roles (CSPA, GSIM).

In the previous meetings it has been decided to concentrate on the following standards in the framework of this project: GSIM, GAMSO and GSBPM.
What are the scope of these standards, which is going to determine the scope of this project? Those are as follows:
GSBPM
•	The Generic Statistical Business Process Model (GSBPM) describes and defines the set of business processes needed to produce official statistics. It provides a standard framework and harmonised terminology to help statistical organisations to modernise their statistical production processes, as well as to share methods and components.
GSIM
•	GSIM provides the information object framework supporting all statistical business processes such as those described in the Generic Statistical Business Process Model (GSBPM) giving the information objects agreed names, defining them, specifying their essential properties, and indicating their relationships with other information objects. It does not, however, make assumptions about the standards or technologies used to implement the model.
•	GSIM does not include information objects related to activities within an organisation such as human resources, finance, or legal functions, except to the extent that this information is used directly in statistical production. For more information on these activities see the Generic Activity Model for Statistical Organisations (GAMSO).
GAMSO
•	The GAMSO describes and defines activities that take place within a typical statistical organisation. It extends and complements the GSBPM by adding activities needed to support statistical production (i.e. activities in the areas of strategy and leadership, capability development and corporate support). In the GSBPM v5.0, some of these activities were included as overarching processes. Activities that are not directly related to the production of statistics and/or are managed at a corporate or strategic level are now included in the GAMSO (e.g. human resource management, quality management activities that are carried out at the corporate level such as development of a quality framework).
•	The GAMSO describes activities – that is, what statistical organisations do. It includes high level descriptions of these activities. On the other hand, the GSBPM focuses on the production process – it describes in more detail how statistical organisations undertake the activity of statistical production.
•	Like the GSBPM, the GAMSO aims to provide a common vocabulary and framework to support international collaboration activities. Greater value will be obtained from the GAMSO if it is applied in conjunction with the GSBPM.
As it can be seen, the summarised scope of these standards is quite broad. It covers both the main task of a NSO or any statistical organisation and also the background tasks in order to ensure the operation of the main task which is the handling of statistical business processes.
In case of information objects, the model used for describing them concentrates only on statistical business processes, their inputs and outputs and does not take into consideration of the more generic activities (not necessarily statistical ones, which means the aim of these tasks are not statistical activity but operating an organisation in general) described in GAMSO. There are some examples of information objects that are output objects of those previously mentioned background tasks in GSIM, but those are in close relation to the statistical business process e.g. provision agreement, statistical support program, information request, process method etc.
But if we consider that the generic tasks described in GAMSO also have information objects (e.g. vision, strategy, HR trainings, information standards etc) that have to be handled there might be a lack in standard information objects for this project.
The granularity of GSBPM and GAMSO also differs. GSBPM covers overarching processes, process steps and sub-processes while GAMSO only describes the field that only classifies the processes and activities (or as those are called in GAMSO activity areas and activities) to be conducted in the given are. The processes are missing so far. That might be a future task for further development of GAMSO if there is a need for that.
Also another development could be to determine the information objects handled by GAMSO activities of course keeping in mind the objects that are defined in GSIM.
Conclusion and suggestion: The two standards that are in line with each other (concerning scope, concepts, and coverage) are GSBPM and GSIM, therefore we suggest to concentrate only on these two standards as a scope of this project.

We should probably include the definition of Capability as well:
https://github.com/linked-statistics/COOS/issues/7#issuecomment-816858737

Capability class introduced in commit f8a689e4982041a8be95564101a1bbf13a8e8bcd, question on CSPA roles remaining.

TOGAF has a definition of capability: "An ability that an organization, person, or system possesses. Capabilities are typically expressed in general and high-level terms and typically require a combination of organization, people, processes, and technology to achieve."

TOGAF is a good reference to follow.
CSDA definition of capability, loosely based on TOGAF, provides an interesting twist: "Capabilities provide the statistical organisation with the ability to undertake a specific activity. ". That gives use a link to Activity. Putting everything together, we could define capability in COOS as "an ability a Statistical Organization possesses to undertake a specific Activity".
Also from CSDA: "A capability is only achieved through the integration of all relevant capability elements (e.g. methods, processes, standards and frameworks, IT systems and people skills)"
I like the addition of "methods, processes, standards and frameworks" as capability enablers.


Sections headers without Item getting highlighted

In Multi choice mode, after selecting an item, some sections headers without the item, are getting highlighted while scrolling up and down.

I solved this issue by changing the background colour of ConvertView to transparent. The section headers would never gets highlighted anymore.


⚠ Itaca Gallery has degraded performance

In 7ebc304, Itaca Gallery ($SITE_TCGLR) experienced degraded performance:

HTTP code: 200
Response time: 8057 ms

Resolved: Itaca Gallery performance has improved in 18c371e after 6 minutes.


Indicator constraints in MOI

Supports indicator constraints. The removal of these is not yet in the exposed C API (even though it is in CPLEX documentation), so it is simple additions for now. A new dict keeps track of the added indicator constraints

The tests are currently erroring. Checking for example MOIT.indicator1_test, it seems the indicator constraints are not registered. There is unfortunately no way of seeing this with CPLEX.

Indicator constraints are not registered. There is unfortunately no way of seeing this with CPLEX.

What do you mean by this?

bump there

this is all good on my side, I think the MOI incompatibility should be fixed in another PR

the tests are passing with MOI v0.9.11

bump @odow

Screenshot of the tests passing?


"changed items" badges need another color

i think either the font color or the badge background color should give more contrast.
As for background color, i would suggest blue or yellow / orange.

I'll experiment with this, I personally prefer the current right now. :P

Hm, yes i can see that it fit's into the general theme.
So, feel free to close as won't fix :)

Yh, I've tested with others and looked at DevTools, I find that this colour fits in quite well. This is also similar with other themes ironically enough so yeah it's all good. Feel free to test yourself, just edit themes/Quantum Dark.json

Actually, since the change to buttons having a slightly lighter grey, I probably will. change the badge colour also :)

This change has been implemented in my build


no logs

Hey Man,
when I don't deploy the non developed application I don't receive any message but I can't see anything in the logs, I am lost... don't know what to do without reading logs!

Congratulation!
You can go to bed all the time.

@gxvigo
Congratulation!
You can go to bed all the time.


Excv doesn't work on Linux + CUDA

When loading NIF, the following error occurs:
11:35:00.323 [error] Failed to load NIF: {:load_failed, 'Failed to load NIF library: \'/media/zacky/xavier/zacky/github/gamma_excv/_build/dev/lib/excv/priv/libexcv.so: undefined symbol: _ZTIN2cv9ExceptionE\''}

This symbol _ZTIN2cv9ExceptionE\ expresses cv::Exception.

I found Excv doesn't work on Linux + CUDA, neither.

I found Excv doesn't work on Linux without CUDA, neither.

This issue is caused by easy mistakes. To fix, I should do as follows:

Use g++ instead of gcc when linking.
Place LDFLAGS after file names of object files.


DDC expands constants many times with CFE constants flag

Discovered while investigating https://github.com/dart-lang/sdk/issues/36532
DDC's technique for emitting constants in its Analyzer backend ensured that large constants would only be emitted once, typically. It worked because users put large constants (e.g. lists, maps, objects) in a variable and refer to that variable, rather than copy+paste the constant expression into multiple locations.
That breaks down with Kernel with the constants flag on, because it's now inlining these constant nodes everywhere. The original Kernel tree is not kept around. So DDC only gets "InstanceConstant" or "ListConstant" for example. Since DDC is a modular compiler, it cannot do global canonicalization. By inlining constants, CFE removes DDC's primary means of optimizing constants (the fact that developers generally put large constants in variables).
I don't see any reasonable way for DDC to work around this on its own. We'll need some help from CFE/Kernel--some way to control constant inlining. Inlining numbers/bools/small strings is fine, but otherwise we don't want to inline, and need these to remain as StaticGet nodes.
The first step would be to prevent inlining when we're not in a const context, and let DDC perform const evaluation (if desired). For example if I refer to Zone.root in my method, that should remain a static get, and not be inlined.

EDIT: see comment below, this isn't as bad as I thought, because CFE can't inline constants across modules. So we could do per-module canonicalization. It's not as optimal as preventing the inlining, but it's not quite as bad as I'd feared, assuming we implement per-module canonicalization for constants in DDC. We'll need to override cacheConst from shared_compiler to do something different in DDC's Kernel backend.

FYI @jakemac53 @vsmenon @sigmundch ... I'm not sure if this will become a performance/code size issue for Flutter code, once we're running on DDC+Kernel. My hope is that it won't be too bad, but I don't have any evidence one way or the other. We should try out DDC+Kernel+CFE constants flag once it's working.
I'm not sure if this is an easy fix in CFE or not. All we'd need here is a way to control the inlining behavior.

I've tentatively put this into 2.4, in hopes that this doesn't impact perf in 2.3 badly enough.
We'll need to address this before we can remove the DDC Analyzer backend. The constant optimizations in DDC were critical for our large internal apps.

Looking at this more, I found several things:

I don't think this is a huge problem yet, because CFE won't inline constants across modules currently. So we only need to canonicalize within the module, which DDC could do itself.

If cross module canonicalization becomes an issue, I think we could address this by adding a flag to ConstantsBackend. And then in constant_evaluator, don't inline constants when that flag is set.

Interesting, thanks for looping me in.

... CFE won't inline constants across modules currently.

To clarify, how are references to the other modules' constants represented? Is there anything different in the constant tree (e.g. a node to another constant expression?) or is it because of how constant nodes are canonicalized at the kernel level that that you can tell them apart (e.g. two references to the same constant are represented by the same node in the tree)?
For context - dart2js names constants based on the usage: we may create a  whole tree of constants in a single expression if there are no references to intermediate constants, otherwise we generate a variable for anything that's referenced in the middle. So by identifying constants that are available from other modules, could that be used in DDC to force that those constants are named and those names are available from the corresponding modules?

This should be fairly easy. How about a method on the ConstantsBackend which is given a StaticGet and returns whether it should be inlined (with a guarantee that the target variable's initializer has already been evaluated so the constant can be inspected, or perhaps with the constant value given as an extra argument)?

That sounds good to me!

For a StaticGet that is not part of another constant (nor in constant context), it might make more sense to just leave the StaticGet as it is. WDYT?

Yeah, that'd work too.

Moving to 2.3 per discussion offline. We'll just need to verify that there's no perf impact on Flutter. If not, we can move to 2.4.

I sketched an API that would let the backend control things. I'm testing it now: https://dart-review.googlesource.com/c/sdk/+/98875 ... the changes are in constant_evaluator.dart and targets.dart. The API gives DDC the ability to make inlining decisions, using the same heuristic it used previously.
The API is just a sketch to capture the requirements, I'm sure it can be improved.
(As I was looking at the constant evaluator code, I realized it's not just StaticGet: other things like const variables could also get expanded many times. DDC could work around that by doing module-level canonicalization, but it's easier for us if we don't have to. So the API lets us make the decision every time a constant would be transformed.)

The changes in the constant transformer look reasonable from a quick glance. Let me know when you have something that you think makes sense as a proposed change, and I will review it.

@jmesserly @jakemac53 @natebosch @kevmoo  - have we seen a noticeable perf/size regression in Flutter Gallery debug size since moving to DDK?  If not, we can drop the P1.

(or any other Flutter Web app?)

@jmesserly - assigning to you to re-triage.  Note: we'll likely move to full kernel files for 2.3 ( #36635 ).

@askeksa-google - can you take over Jenny's CL here?  (fyi - @kmillikin )

@kmillikin - the repro here (https://github.com/dart-lang/sdk/issues/36635#issuecomment-490654095) also highlights this problem.
We generate:
const2.main = function() {
  core.print(const$35 || (const$35 = dart.constMap(core.String, ListOfnum(), ["data", const$34 || (const$34 = dart.constList([0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], core.num))])));
  core.print((const$72 || (const$72 = dart.constMap(core.String, ListOfnum(), ["data", const$71 || (const$71 = dart.constList([0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], core.num))])))[$length]);
};

@kmillikin Extending the kernel output with an auxiliary structure that holds constants (that we talked about at the summit) would help this issue - at least within a module.

@aadilmaan - note: this is not marked P1, but is blocking a P1.

Marked.

This needs an API change in the CFE before we can change anything in DDC.


[BUG] Flaky test in 1.2 CI

Describe the bug
One of the test is intermittently failing and has cascading effect on other tests -
./gradlew ':integTest' --tests "org.opensearch.replication.integ.rest.PauseReplicationIT.test pause replication in restoring state with multiple shards" -Dtests.seed=7D4AE75BD933EC82 -Dtests.security.manager=true -Dtests.locale=ru -Dtests.timezone=Indian/Mayotte -Druntime.java=14

Expected Behavior

This test should execute successfully

Resolving as the code changes to flaky tests are merged


drop-down list disappears immediately

Regression?
Yes
System Info and Version
 System/Version info
Hyprland, built from branch main at commit b7f42a1e88a5b6c9d2dbdba31e0f35f6a02461e7  (keybinds: fix move to prev ws, moved to same mon (6688)).
Date: Fri Jun 28 01:20:50 2024
Tag: v0.41.2-7-gb7f42a1e, commits: 4893

flags: (if any)

System Information:
System name: Linux
Node name: kntspc
Release: 6.9.6-arch1-1
Version: #1 SMP PREEMPT_DYNAMIC Fri, 21 Jun 2024 19:49:19 +0000

GPU information:
00:02.0 VGA compatible controller [0300]: Intel Corporation CoffeeLake-H GT2 [UHD Graphics 630] [8086:3e9b] (rev 02) (prog-if 00 [VGA controller])

os-release: NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://gitlab.archlinux.org/groups/archlinux/-/issues"
PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/"
LOGO=archlinux-logo

plugins:

======Config-Start======

Config File: /home/knt/.config/hypr/hyprland.conf: Read Succeeded
# https://wiki.hyprland.org/Configuring/Configuring-Hyprland/
source = ~/.config/hypr/conf/monitors.conf
source = ~/.config/hypr/conf/myprograms.conf
source = ~/.config/hypr/conf/autostart.conf
source = ~/.config/hypr/conf/environment.conf
source = ~/.config/hypr/conf/look_and_feel.conf
source = ~/.config/hypr/conf/input.conf
source = ~/.config/hypr/conf/keybindingss.conf
source = ~/.config/hypr/conf/windows.conf

Config File: /home/knt/.config/hypr/conf/monitors.conf: Read Succeeded
################
### MONITORS ###
################

# See https://wiki.hyprland.org/Configuring/Monitors/
monitor=,preferred,auto,1

Config File: /home/knt/.config/hypr/conf/myprograms.conf: Read Succeeded
###################
### MY PROGRAMS ###
###################

# See https://wiki.hyprland.org/Configuring/Keywords/

# Set programs that you use
$terminal = terminator
$fileManager = thunar # dolphin
$menu = wofi --show drun

Config File: /home/knt/.config/hypr/conf/autostart.conf: Read Succeeded
#################
### AUTOSTART ###
#################

# Core components (authentication, lock screen, notification daemon)
exec-once = gnome-keyring-daemon --start --components=secrets
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 || /usr/libexec/polkit-gnome-authentication-agent-1
exec-once = hypridle
exec-once = dbus-update-activation-environment --all
exec-once = sleep 1 && dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP # Some fix idk
exec-once = hyprpm reload

#exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP

exec-once = wl-paste --type text --watch cliphist store
exec-once = wl-paste --type image --watch cliphist store

exec-once = swaybg -i ~/.config/archlinux_wp.jpg
exec-once = waybar
exec-once = blueman-applet
exec-once = nm-applet --indicator
exec-once = [workspace 1 silent;noanim] firefox
exec-once = [workspace 3 silent;noanim] $terminal
exec-once = [workspace 9 silent;noanim] ticktick
exec-once = [workspace 9 silent;noanim] obsidian.sh
exec-once = swaync
# exec-once = nextcloud --background

Config File: /home/knt/.config/hypr/conf/environment.conf: Read Succeeded
#############################
### ENVIRONMENT VARIABLES ###
#############################

# See https://wiki.hyprland.org/Configuring/Environment-variables/

env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24

env = CLUTTER_BACKEND,wayland
env = GDK_BACKEND,wayland,x11
env = QT_AUTO_SCREEN_SCALE_FACTOR,1
env = QT_QPA_PLATFORM,wayland;xcb
env = QT_QPA_PLATFORMTHEME,qt5ct
env = QT_SCALE_FACTOR,1
env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
env = SDL_VIDEODRIVER,wayland,x11
env = ELECTRON_OZONE_PLATFORM_HINT,auto
env = MOZ_ENABLE_WAYLAND,1
env = GDK_SCALE,1

env = XDG_CURRENT_DESKTOP,Hyprland
env = XDG_SESSION_TYPE,wayland
env = XDG_SESSION_DESKTOP,Hyprland

Config File: /home/knt/.config/hypr/conf/look_and_feel.conf: Read Succeeded
#####################
### LOOK AND FEEL ###
#####################

# Refer to https://wiki.hyprland.org/Configuring/Variables/

# https://wiki.hyprland.org/Configuring/Variables/#general
general {
    gaps_in = 0
    gaps_out = 0

    border_size = 1

    # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
    col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
    col.inactive_border = rgba(595959aa)

    # Set to true enable resizing windows by clicking and dragging on borders and gaps
    resize_on_border = false

    # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
    allow_tearing = false

    layout = dwindle
}

# https://wiki.hyprland.org/Configuring/Variables/#decoration
decoration {
    rounding = 2

    # Change transparency of focused and unfocused windows
    active_opacity = 1.0
    inactive_opacity = 1.0

    drop_shadow = true
    shadow_range = 4
    shadow_render_power = 3
    col.shadow = rgba(1a1a1aee)

    # https://wiki.hyprland.org/Configuring/Variables/#blur
    blur {
        enabled = true
        size = 3
        passes = 1

        vibrancy = 0.1696
    }
}

# https://wiki.hyprland.org/Configuring/Variables/#animations
#animations {
#    enabled = true
#    bezier = linear, 0, 0, 1, 1
#    bezier = md3_standard, 0.2, 0, 0, 1
#    bezier = md3_decel, 0.05, 0.7, 0.1, 1
#    bezier = md3_accel, 0.3, 0, 0.8, 0.15
#    bezier = overshot, 0.05, 0.9, 0.1, 1.1
#    bezier = crazyshot, 0.1, 1.5, 0.76, 0.92
#    bezier = hyprnostretch, 0.05, 0.9, 0.1, 1.0
#    bezier = fluent_decel, 0.1, 1, 0, 1
#    bezier = easeInOutCirc, 0.85, 0, 0.15, 1
#    bezier = easeOutCirc, 0, 0.55, 0.45, 1
#    bezier = easeOutExpo, 0.16, 1, 0.3, 1
#    animation = windows, 1, 3, md3_decel, popin 60%
#    animation = border, 1, 10, default
#    animation = fade, 1, 2.5, md3_decel
#    animation = workspaces, 1, 3.5, easeOutExpo, slide
#    animation = specialWorkspace, 1, 3, md3_decel, slidevert
#}

animations {
    enabled = false
}

#
#    # Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
#
#    bezier = myBezier, 0.05, 0.9, 0.1, 1.05
#
#    animation = windows, 1, 7, myBezier
#    animation = windowsOut, 1, 7, default, popin 80%
#    animation = border, 1, 10, default
#    animation = borderangle, 1, 8, default
#    animation = fade, 1, 7, default
#    animation = workspaces, 1, 6, default
#}

# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
dwindle {
    pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
    preserve_split = true # You probably want this
}

#gestures {
#    workspace_swipe = false
#}

# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
#master {
#    new_is_master = true
#}

# https://wiki.hyprland.org/Configuring/Variables/#misc
misc {
    force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
    disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :(
}

Config File: /home/knt/.config/hypr/conf/input.conf: Read Succeeded
#############
### INPUT ###
#############

input {
    kb_layout = us,ru
    kb_options = grp:caps_toggle,grp_led:caps,grp:switch
}

# https://wiki.hyprland.org/Configuring/Variables/#input
# input {
#   kb_layout = us,ru
#    kb_variant =
#    kb_model =
#    kb_options =
#    kb_rules =

#    follow_mouse = 1

#    sensitivity = 0 # -1.0 - 1.0, 0 means no modification.

#    touchpad {
#        natural_scroll = false
#    }
#}

# https://wiki.hyprland.org/Configuring/Variables/#gestures
gestures {
    workspace_swipe = false
}

# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
device {
    name = epic-mouse-v1
    sensitivity = -0.5
}

Config File: /home/knt/.config/hypr/conf/keybindingss.conf: Read Succeeded
####################
### KEYBINDINGSS ###
####################

# See https://wiki.hyprland.org/Configuring/Keywords/
$mainMod = SUPER # Sets "Windows" key as main modifier

# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod, Return, exec, $terminal
bind = $mainMod, C, killactive,
bind = $mainMod SHIFT CTRL, Q, exit,
bind = $mainMod, E, exec, $fileManager
bind = $mainMod SHIFT, V, togglefloating,
bind = $mainMod, R, exec, $menu
bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod, J, togglesplit, # dwindle
bind = , Print, exec, XDG_CURRENT_DESKTOP=sway flameshot gui
bind = SHIFT, Print, exec, ~/.config/hypr/scripts/screenshot.sh
bind = CTRL, Print, exec, grim -g "$(slurp)" - | tee >(swappy -f - -o "$(xdg-user-dir PICTURES)/ss/$(date +'%I:%M_%b_%d-Sel.png')") | wl-copy
bind = $mainMod ALT, V, exec, ~/.config/hypr/scripts/toggle_vpn.sh

bind = $mainMod SHIFT, B, exec, killall -SIGUSR2 waybar # Reload waybar

bind = $mainMod, L, exec, hyprlock # Lock the screen
bind = $mainMod, F, fullscreen, 2
bind = $mainMod, V, exec, cliphist list | wofi --dmenu | cliphist decode | wl-copy
bind = $mainMod, W, exec, swaync-client -t -sw

# Move focus with mainMod + arrow keys
#bind = $mainMod, left, movefocus, l
#bind = $mainMod, right, movefocus, r
#bind = $mainMod, up, movefocus, u
#bind = $mainMod, down, movefocus, d
bind = ALT, TAB, cyclenext, next
bind = ALT SHIFT, TAB, cyclenext, prev
bind = $mainMod, TAB, cyclenext, next
bind = $mainMod SHIFT, TAB, cyclenext, prev

#Volume
bind = , XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +5% # Increase volume by 5%
bind = , XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -5% # Reduce volume by 5%
bind = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle # Toggle mute

# resize
bind = $mainMod ALT, left, resizeactive,-100 0
bind = $mainMod ALT, right, resizeactive,100 0
bind = $mainMod ALT, up, resizeactive,0 -40
bind = $mainMod ALT, down, resizeactive, 0 40

# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10

bind = $mainMod, left, workspace, e-1
bind = $mainMod, right, workspace, e+1
bind = $mainMod, grave, workspace, previous

# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10

# Example special workspace (scratchpad)
bind = $mainMod, S, togglespecialworkspace, magic
bind = $mainMod SHIFT, S, movetoworkspace, special:magic

# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1

# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow

# resize submap (mode)
bind = $mainMod,T,submap,resize
submap = resize
binde = $mainMod, SHIFT L,resizeactive,40 0
binde = ,H,resizeactive,-40 0
binde = ,K,resizeactive,0 -40
binde = ,J,resizeactive,0 40
bind = ,escape,submap,reset
bind = ,Return,submap,reset
submap = reset

Config File: /home/knt/.config/hypr/conf/windows.conf: Read Succeeded
##############################
### WINDOWS AND WORKSPACES ###
##############################

# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules

# Example windowrule v1
# windowrule = float, ^(kitty)$

# Example windowrule v2
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$

windowrulev2 = suppressevent maximize, class:.* # You'll probably like this.

# firefox Picture-in-Picture
windowrulev2 = float,class:^(firefox)$,title:^(Picture-in-Picture)$
windowrulev2 = pin,class:^(firefox)$,title:^(Picture-in-Picture)$
windowrulev2 = fakefullscreen,class:^(firefox)$,title:^(Picture-in-Picture)$
# firefox figma micro indicator
windowrulev2 = fakefullscreen,class:^(firefox)$,title:^(Firefox — Sharing Indicator)$
windowrulev2 = float,class:^(firefox)$,title:^(Firefox — Sharing Indicator)$

windowrulev2 = float,class:^(doublecmd)$,title:^(Options)$
windowrulev2 = float,class:^(doublecmd)$,title:^([0-9]*% Copying.*)$
windowrulev2 = float,title:^(.*)(Deleting)(.*)$

# Dialogs
windowrule=float,title:^(Open File)(.*)$
windowrule=float,title:^(Select a File)(.*)$
windowrule=float,title:^(Choose wallpaper)(.*)$
windowrule=float,title:^(Open Folder)(.*)$
windowrule=float,title:^(Save As)(.*)$
windowrule=float,title:^(Library)(.*)$
windowrule=float,title:^(File Upload)(.*)$
windowrulev2 = float,title:^([Pp]icture[-\s]?[Ii]n[-\s]?[Pp]icture)(.*)$

windowrule=float,title:^(galculator)(.*)$
windowrule=float,title:^(Qalculate!)(.*)$

# No shadow for tiled windows
windowrulev2 = noshadow,floating:0

# Telegram media viewer
windowrulev2 = fullscreen,class:^(org.telegram.desktop)$,title:^(Media viewer)$
# windowrulev2 = workspace unset,class:^(org.telegram.desktop)$,title:^(Media viewer)$
# windowrulev2 = monitor 1,class:^(org.telegram.desktop)$,title:^(Media viewer)$

======Config-End========

Description
The drop-down list appears for a moment and then disappears immediately.
I tried to run it on plasma (wayland) where everything works as it should.
How to reproduce
run orca-slicer and try open any dropdown list
Crash reports, logs, images, videos
2024-06-28_13-06-1719569272.webm

is it running in xwayland

Yes, it seems they are forcing this: https://github.com/SoftFever/OrcaSlicer/blob/v2.1.1/src/OrcaSlicer.cpp#L1049

Can you please recommend where I should look next?

I am facing the exact same issue. Running the latest OrcaSlicer 2.1.1 Appimage.

I've done some testing. It seems that https://github.com/hyprwm/Hyprland/commit/2566d818848b58b114071f199ffe944609376270 introduced this behaviour.

additionally dupe of https://github.com/hyprwm/Hyprland/issues/6616

not sure about the regression but you could try noinitialfocus window rule for the popup

Can you help me to set this up?
i put this into my windowrules.conf
windowrulev2 = noinitialfocus, class:^(OrcaSlicer)$
but the behavior is the same.

check the class/title with socat -U - UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock

did that and the result is:
activewindow>>OrcaSlicer,
activewindowv2>>56100cfcd260
windowtitle>>56100e44f1d0
openwindow>>56100e44f1d0,2,OrcaSlicer,orca-slicer
activewindow>>,
activewindowv2>>
closewindow>>56100e44f1d0
openwindow>>56100cfcf2a0,2,OrcaSlicer,orca-slicer

but with both of them ruled via:
windowrulev2 = noinitialfocus, class:^(OrcaSlicer)$
windowrulev2 = noinitialfocus, class:^(orca-slicer)$

it still doesn't work

did that and the result is:
activewindow>>OrcaSlicer,
activewindowv2>>56100cfcd260
windowtitle>>56100e44f1d0
openwindow>>56100e44f1d0,2,OrcaSlicer,orca-slicer
activewindow>>,
activewindowv2>>
closewindow>>56100e44f1d0
openwindow>>56100cfcf2a0,2,OrcaSlicer,orca-slicer

but with both of them ruled via:
windowrulev2 = noinitialfocus, class:^(OrcaSlicer)$
windowrulev2 = noinitialfocus, class:^(orca-slicer)$

it still doesn't work

I can't get this to work either. I've tried variations of the following window rules:
windowrulev2 = nofocus,title:^(.*orca-slicer.*)$
windowrulev2 = noinitialfocus,title:^(.*orca-slicer.*)$
windowrulev2 = suppressevent activate,title:^(.*orca-slicer.*)$
windowrulev2 = suppressevent activatefocus,title:^(.*orca-slicer.*)$
windowrulev2 = stayfocused,title:^(.*orca-slicer.*)$
windowrulev2 = focusonactivate,title:^(.*orca-slicer.*)$

Same issue present in the Swiftpoint X1 Control Panel - EXPERIMENTAL LINUX VERSION <IP_ADDRESS>
AppImage can be acquired here:
https://support.swiftpoint.com/portal/en/community/topic/x1-control-panel-experimental-linux-version-18-7-2023
The Hyprland IPC provides only empty strings on the popup:
activewindow>>x1cp,Swiftpoint X1 Control Panel - EXPERIMENTAL LINUX VERSION <IP_ADDRESS>
activewindowv2>>5f6a7a6b7650
windowtitle>>5f6a7a729780
windowtitle>>5f6a7a729780
urgent>>5f6a7a729780
activewindow>>,
activewindowv2>>
windowtitle>>5f6a7a729780
windowtitle>>5f6a7a729780
openwindow>>5f6a7a729780,10,x1cp,x1cp
closewindow>>5f6a7a729780

The openwindow "x1cp" part usually says "Swiftpoint X1 Control Panel" but i've renamed that binary to "x1cp".
Looking at https://github.com/hyprwm/Hyprland/commit/2566d818848b58b114071f199ffe944609376270 i see "activate" being added there: g_pXWayland->pWM->activateSurface(self.lock(), activate);
So i've added this to my hyprland.conf
windowrulev2 = suppressevent activate,class:x1cp
At least in the X1 Control Panel the popups now seem to work - not always, but most of the time. If i'm not mistaken, the first click never works but the second one on the same drop down does. On the click that works these two lines seem to be missing on the socat output:
activewindow>>,
activewindowv2>>

Maybe this can be fixed by making sure there's no empty stuff being worked on?

I'm on Orca Slicer 2.1.1 and just encountered this issue today.

Hyprland, built from branch  at commit 918d8340afd652b011b937d29d5eea0be08467f5  (flake.lock: update).
Date: Tue Jun 25 12:06:02 2024
Tag: v0.41.2, commits: 4886

flags: (if any)

This is super annoying as I can't change the profiles anymore.

Been messing with this, this is the solution I have so far, buggy, but technically works:
windowrulev2 = stayfocused, class:^(OrcaSlicer)$,title:^()$

I will inform if I discover anything else

It appears I was slightly wrong, so slight correction, pressing the button to open the drop-down for whatever reason de-focuses the window, before then focusing the drop-down menu, therefore as previously stated, preventing the drop-down from being focused yields no results.
# Focusing Orca Slicer
activewindow>>OrcaSlicer,
activewindowv2>>6319a55d78a0
# Window Defocused, IOW now nothing is focused (This is what makes the mother window decide to close all drop-downs)
activewindow>>,
activewindowv2>>
# The drop-down menu is focused
activewindow>>OrcaSlicer,orca-slicer
activewindowv2>>6319a5361cf0
# The drop-down menu is spawned
openwindow>>6319a5361cf0,2,OrcaSlicer,orca-slicer
# The drop-down menu is instantly killed (As a result of the mother window losing focus earlier, its just now caught up)
closewindow>>6319a5361cf0
# Focus returns to Orca Slicer
activewindow>>OrcaSlicer,
activewindowv2>>6319a55d78a0

So the solution isn't preventing focus from moving, but rather preventing whatever's causing the total loss of focus during the transition of focus from the mother window to the drop-down.

Update, found some neat tidbits.
The reason it is deselecting the mother window is because it is trying to focus the window before it exists, which fails a logic check, and it proceeds to instead focus nothing, or more accurately, XCB_WINDOW_NONE.
https://github.com/hyprwm/Hyprland/blob/22138ac259b2f4253be29311f6b60fbd675074b4/src/Compositor.cpp#L914
https://github.com/hyprwm/Hyprland/blob/22138ac259b2f4253be29311f6b60fbd675074b4/src/xwayland/XWM.cpp#L880-L882
If you ask me, it should abort the activate operation leaving it how it was before rather than deselecting everything.
I'll have to poke around and see if I can find out why it's attempting to activate the window before it exists.

I still keep having to install 0.41.1 just to use OrcaSlicer. Is this fixable? Is it maybe possible to just revert the change that broke it or does it introduce other regressions?

as you can see, it's marked for fixing for 0.42, be patient.

as you can see, it's marked for fixing for 0.42, be patient.

Oh I didn't see that, I apologize for the impatience.

@xdevs23 while you wait, there is another work around if you need it, but it comes with it's own problems. I believe discovered by MPDarkGuy on discord, you can run OrcaSlicer using gamescope and dropdowns will work.
For me this has additional problems though, it crashes pretty soon, I believe with an OOM. So my strategy has been to juggle between OrcaSlicer and gamescope OrcaSlicer depending on whether I need to use a menu. Saving often because of the crash. Very much looking forward to running 0.42 :smile:


Modules folder

Hi, I wanted to try out a Eukrhythmic test run (snakemake -n) after I pulled to project from github.
It throws the following error:

As this folder isn't in the project directory by default, is this something the user should create and subsequently add the .smk rules for the assemblers of interest?
Kind regards,
Michiel

Hi @MichielPerneel !
So we recently changed the organization of the repository such that the modules folder has been renamed rules. This should be changed elsewhere in the repository, it's just that using snakemake -n is currently defunct in eukrhythmic because that runs the Snakefile by default. You could run snakemake -n -s eukrhythmic to run the Snakefile with the non-standard name (eukrhythmic) in the base directory.
However, the best way to run eukrhythmic, even with the -n flag, is using the provided runscripts. You can either use the shell script, by calling it directly or running:
alias eukrhythmic='./bin/eukrhythmic.sh'

and then calling eukrhythmic --dry-run, or you can use the Python run script, by calling:
python submit/eukrhythmic all -np

I will fix the issue of having a defunct default-labeled Snakefile in the base directory - thanks for raising that! Please let me know if the above approaches don't work for you, and of course please continue to keep us updated as you are testing the software (thanks!).
Arianna

Hi @akrinos, thanks for the quick reply!
Both solutions evoke the checkrequirements.py script at some point, resulting in the file not found error due to the late modules/ folder. I'll try a regular run and see whether I get that up and running!
Also, in the eukrhythmic.sh script I needed to modify lines 45 and 54 (added ;; to the case in --subroutine statements)

Hi @MichielPerneel , thanks for continuing with this!!
The checkrequirements.py file is in the scripts folder. When import checkrequirements is called within any eukrhythmic script, it should be after the scripts folder is added to the path. Would you mind printing the backtrace you get?
Thanks!

This is the backtrace of the error:

Hi @MichielPerneel, can you pull from the repo and try again? :) That script was updated on the branch I am working on, but appears not to have made it to the main branch! Just made a pull request and merged in changes.


RGB image as input?

Hi, thanks for your great implementation on ARC.
Is the current version also support 3-channel RGB images as input?
I found that the implementation works fine with gray-scale input images, such as Omniglot dataset, but when I tried with different dataset with RGB images, it seems like it doesn't work.

Unfortunately, I have only implemented the most basic version. But I am open to pull requests.


raygun: Convert Conversation into a trait

Currently, Conversation is a struct that contains data about the conversation. This may pertain about the name, list of members, etc. This was originally done since having Conversation as a trait previously raised some concern about the object safety as well as how to structure things safely across FFI, wasm (when wasm had some focused on at the time), however after some thought based on #453, I do believe we could try to implement Conversation as a trait instead as a struct.
Design concept:
pub trait Conversation {
        /// ID of the converation in Uuid format
        fn id(&self) -> Uuid;

        /// Name of the conversation, if any
        fn name(&self) -> Option<String>;

        /// Time of when the conversation was created
        fn created(&self) -> DateTime<Utc>;

        /// Last time the conversation was modified or updated
        fn modified(&self) -> DateTime<Utc>;

        /// The conversation type
        /// Currently: Direct, Group
        fn conversation_type(&self) -> ConversationType;

        /// Conversation settings
        fn settings(&self) -> ConversationSettings;

        /// List of members to the conversation
        fn members(&self) -> Vec<DID>;
}

(Full concept)
pub trait ConversationUpdate {
        /// Update conversation name
        /// Note: This will only update the group conversation name
        async fn update_name(&mut self, name: &str) -> Result<(), Error>;

        /// Add a member to the conversation
        async fn add_member(&mut self, did_key: &DID) -> Result<(), Error>;

        /// Remove a member from the conversation
        async fn remove_member(&mut self, did_key: &DID) -> Result<(), Error>;

        /// Update conversation settings
        async fn update_settings(&mut self, settings: ConversationSettings) -> Result<(), Error>;
}

pub trait ConversationMessage {
        /// Retrieve a message from the conversation
        async fn get_message(&self, message_id: Uuid) -> Result<Message, Error>;

        /// Retrieve a message reference from the conversation
        async fn get_message_reference(&self, message_id: Uuid) -> Result<MessageReference, Error>;

        /// Retrieve messages from the conversation
        async fn get_messages(&self, options: MessageOptions) -> Result<Messages, Error>;

        /// Retrieve message references from the conversation
        async fn get_message_references(&self, options: MessageOptions) -> Result<BoxStream<'static, MessageReference>, Error>;

        /// Get a number of messages in the conversation
        async fn get_message_count(&self, message_id: Uuid) -> Result<usize, Error>;

        /// Get a status of a message in the conversation
        async fn message_status(&self, message_id: Uuid) -> Result<MessageStatus, Error>;

        /// Sends a message to a conversation.
        async fn send(&mut self, message: Vec<String>) -> Result<(), Error>;

        /// Edit an existing message in a conversation.
        async fn edit(
            &mut self,
            message_id: Uuid,
            message: Vec<String>,
        ) -> Result<(), Error>;

        /// Delete message from a conversation
        async fn delete(
            &mut self,
            message_id: Option<Uuid>,
        ) -> Result<(), Error>;

        /// React to a message
        async fn react(
            &mut self,
            message_id: Uuid,
            state: ReactionState,
            emoji: String,
        ) -> Result<(), Error>;

        /// Pin a message within a conversation
        async fn pin(
            &mut self,
            message_id: Uuid,
            state: PinState,
        ) -> Result<(), Error>;

        /// Reply to a message within a conversation
        async fn reply(
            &mut self,
            message_id: Uuid,
            message: Vec<String>,
        ) -> Result<(), Error>;

        /// Send an event to a conversation
        async fn send_event(&mut self, event: MessageEvent) -> Result<(), Error>;

        /// Cancel event that was sent, if any.
        async fn cancel_event(&mut self, event: MessageEvent) -> Result<(), Error>;
}

pub trait ConversationAttachment {
    /// Send files to a conversation.
    /// If no files is provided in the array, it will throw an error
    async fn attach(
        &mut self,
        message_id: Option<Uuid>,
        path: Vec<Location>,
        messages: Vec<String>,
    ) -> Result<AttachmentEventStream, Error>;

    /// Downloads a file that been attached to a message
    /// Note: Must use the filename associated when downloading
    async fn download(
        &self,
        message_id: Uuid,
        file: String,
        dest: PathBuf,
    ) -> Result<ConstellationProgressStream, Error>;

    /// Stream a file that been attached to a message
    /// Note: Must use the filename associated when downloading
    async fn download_stream(
        &self,
        message_id: Uuid,
        file: &str,
    ) -> Result<BoxStream<'static, Result<Vec<u8>, Error>>, Error>;
}

pub trait ConversationStream {
    /// Subscribe to an stream of events from the conversation
    async fn get_conversation_stream(&mut self) -> Result<MessageEventStream, Error>;
}

Having the trait designed this way allows us to migrate messaging logic to be specifically tied to the Conversation trait itself, removing the need to supply a Uuid thats representing the id to the conversation to the function itself.
Internals
Internally, we can have a struct that contains a clone of the task with metadata pretaining to the set of methods in Conversation, which would allow us to avoid making async calls. We will map each function to a specific internal function while also utilizing the Uuid specific to that conversation.
When the conversation is deleted (either directly or indirectly), we will still allow the metadata stored for existing objects to be supplied to those methods, however they will no longer be updated. For the remaining methods, they will yield Error::InvalidConversation error (or some variant) showing that the conversation no longer exist.
We can deprecate the existing functions while defaulting raygun methods to the respected Conversation methods.
Pros

(Internally, within warp-ipfs, may vary on other implementation) Information like name, list of members, etc., are updated internally, allowing one to make calls to those functions without needing to obtain a new conversation
Can pass around individual objects referencing the conversation itself, and be able to take actions and handle specific events related to that conversation

Cons

When conversation is closed or deleted, Conversation object may still be left hanging around, preserving the metadata. While this is no problem since internally it is disconnected from the conversation and would no longer be updated, it may cause some to believe the conversation is still active.

We could return Result<T, warp::error::Error> to the data getter methods, however this would break compatibility with the existing Conversation getter api to such methods.
We could panic when those getter methods are called to a closed conversation since realistically, upon the conversation being deleted and the event being emitted, the frontend should handle the cleanup of those references, however this would be a race as one thread may access the api while the conversation is being deleted but prior to the api being emitted.

Requires maintaining Conversation for messaging logic unless one calls RayGun::get_conversation and executing the method right away and dropping the trait object.

Note:

Conversation should be object safe (which the implementation above is)
We can only implement Conversation trait instead and leave the remaining logic intact, allowing for more compatibility but may lose out on the flexability of executing messaging logic directly on the trait object. This would reduce the refactoring aspect besides renaming the method from Conversation::recipients (old) to Conversation::members (new).

BTW, I don't think we need to use trait objects. We can use generics with trait bounds and associated types instead, unless I'm missing something here.

BTW, I don't think we need to use trait objects. We can use generics with trait bounds and associated types instead, unless I'm missing something here.

Actually yes but only because the approach taken in the PRs is expecting one impl per crate. While I've no issue with that, it made me realize that neither of the PRs fix the main design flow that #453 address: conversation type being a disconnected field from the other conversation-type-specific fields instead of being represented by the type itself and hence completely eliminating the possibility of any mistakes in this regard.
If I understood correctly, your main objection to #453 was keeping Conversation inside the ConversationDocument. While I still don't quite understand your objection there, I can live without that change and modify my PR to only turn Conversation to enum. Would that be acceptable?

I know you've this lock-free channels-based approach, which has its benefits but if we put all work behind a single task, it creates a bottleneck. E.g a call for changing the name of a conversation A, shouldn't have to wait for another call to get all the messages of conversation B (or even conversation A). So we should be careful here, not to introduce bottlenecks where they are not really needed.

The "bottleneck" itself acceptable since it makes sure things the state of the conversations (and its message) are consistent when it is accessed (although getting all the messages will be moved back down to MessageStore and not be done in the task itself - not sure how that got overlooked there)

As I wrote, I understand the rationale for doing it this way but I don't think we can just say that bottlenecks are acceptable. There is no reason unrelated operations (especially read-only) that doesn't need any synchronisation between themselves, should have to wait for each other in a queue.
I think it would be worth considering to split into further tasks, e.g it could be 1 task per conversation (just an example).

Btw the name is already taken on crates.io.

We are aware that the name is taken on crates.io and to my knowledge dont have plan to publish anything there yet so this is not of any concern right now (though when we do plan to, we will adjust things accordingly).

Yeah, it was just a side-note. Nothing to worry about. :)

While I still don't quite understand your objection there, I can live without that change and modify my PR to only turn Conversation to enum. Would that be acceptable?

That would be acceptable since I wasnt against converting it to an enum.

Cool. I'm glad we could find a middleground. :) Would we still need traits then? They'll have to be named differently, if so.

As I wrote, I understand the rationale for doing it this way but I don't think we can just say that bottlenecks are acceptable.

I had "bottlenecks" in quotes because some would see having the channel buffer set extremely low be considered a bottle neck when that isnt the case. As for the actual list of messages itself, After reviewing it, one part returns a stream, which would not cause any issues as that stream would need to be polled, while another the other part (which generates message pages or just list the messages) would, but for those parts, we could just easily resolve that by passing a future back to MessageStore and awaiting there (similar to what I did for files), which will be taken care of soon.

I think it would be worth considering to split into further tasks, e.g it could be 1 task per conversation (just an example).

Technically speaking, each conversation is in a way in its own task, with the pubsub stream polled in each task and pushing to a single receiver that is polled (before that change, each conversation was processed in its own task but found it to be redundant in some cases). In a more expanded way, where each conversation gets its own set of functions, etc.,, it would still have to wait so the document is updated on the list and stored in the blockstore.

Cool. I'm glad we could find a middleground. :) Would we still need traits then? They'll have to be named differently, if so.

No. It wouldnt make sense to have both since the purpose of Conversation being as a trait would be to replace the struct on the frontend (as well as remove the fields there and use whatever may be the case in the backend side).

I had "bottlenecks" in quotes because some would see having the channel buffer set extremely low be considered a bottle neck when that isnt the case.

The size of buffer isn't the issue. If it's an async call, the caller has to wait for it's request to be completed, regardless of the queue size. The task would be the bottleneck since it can only process 1 request at a time.

Technically speaking, each conversation is in a way in its own task, with the pubsub stream polled in each task

That doesn't help with the bottleneck I'm talking about. As long as the processing task is handling one request at a time, there is a bottleneck.

it would still have to wait so the document is updated on the list and stored in the blockstore.

That makes sense for all the write operations and also simultaneous read and write operations. I think an async RwLock would be the best option here as they'd allow all read operations to work simultaneously and if we do it right and limit the scope of the locking as much as possible, most of the processing of the write operation can also go simultaneously and only keeping a lock when needed and immediately freeing it.
I know that goes about that current design but I think it's worth considering for certain cases, such as for conversation API.

Cool. I'm glad we could find a middleground. :) Would we still need traits then? They'll have to be named differently, if so.

No. It wouldnt make sense to have both since the purpose of Conversation being as a trait would be to replace the struct on the frontend (as well as remove the fields there and use whatever may be the case in the backend side).

Exactly my thoughts but just wanted to make sure we're on the same page.
BTW, I'll need to also switch ConversationDocument into an enum if not embedding Conversation into it. Otherwise, we'll have the same disconnect there that I'll resolve in Conversation. I hope that's OK with you.

The size of buffer isn't the issue. If it's an async call, the caller has to wait for it's request to be completed, regardless of the queue size. The task would be the bottleneck since it can only process 1 request at a time.

The design of it processing one request at a was done intentionally to make sure things remain consistent and when there are no external request sent via RayGun, the task, etc., can continue to be polled until there is something that comes in. Even when something does come in, it doesnt take long to process and return the result.

That makes sense for all the write operations and also simultaneous read and write operations. I think an async RwLock would be the best option here as they'd allow all read operations to work simultaneously and if we do it right and limit the scope of the locking as much as possible, most of the processing of the write operation can also go simultaneously and only keeping a lock when needed and immediately freeing it.
I know that goes about that current design but I think it's worth considering for certain cases, such as for conversation API.

Im not so sure on using RwLock long term in this regard would offer any real benefits or gains given that a lot of the operations would still be write, with some read operations only return either streams or internally could return a future from the task to prevent stalling that task for a read operation (see previous comment). Previously, we did use RwLock, but then it made sense to have a task handle it for every conversation to where it makes sense everything to be in a single task (minus what was mentioned previously).

BTW, I'll need to also switch ConversationDocument into an enum if not embedding Conversation into it. Otherwise, we'll have the same disconnect there that I'll resolve in Conversation. I hope that's OK with you.

Hmm I think would prefer that it remains as a struct, moving the ConversationType internally, however I may not be against it being as an enum too, but may depend on how comes out in the end, but this would be a separate discussion.
Nonetheless, If the enum will be used, this issue and the corresponding PRs can be closed but if it arise in the future that this may be better to a trait for Conversation, this PR could be reopened.

The design of it processing one request at a was done intentionally to make sure things remain consistent

Yeah, as I wrote, I do understand the reasoning for the design and the advantages. Just that we have to acknowledge the drawbacks too and hence consider alternatives.

Im not so sure on using RwLock long term in this regard would offer any real benefits or gains given that a lot of the operations would still be write

Are we talking about the number of possible operations or the actual number of operations that will happen simultaneously? The former isn't relevant but the latter is. I can think of some read only operations happening at the same time (e.g at launch when loading conversations and/or metadata about them) but if we've done some analysis that shows the reality to be on the contrary, then I would take back my suggestion.
But still to keep in mind that I'm only suggesting that we consider the approach and keep the bottleneck in mind.

BTW, I'll need to also switch ConversationDocument into an enum if not embedding Conversation into it. Otherwise, we'll have the same disconnect there that I'll resolve in Conversation. I hope that's OK with you.

Hmm I think would prefer that it remains as a struct, moving the ConversationType internally,

Well then we won't have solved the problem completely.

however I may not be against it being as an enum too

Great, cause I don't see any way around it if we want to fully solve the main issue.

but may depend on how comes out in the end, but this would be a separate discussion.

Sure thing.

Nonetheless, If the enum will be used, this issue and the corresponding PRs can be closed but if it arise in the future that this may be better to a trait for Conversation, this PR could be reopened.

👍

Well then we won't have solved the problem completely.

however I may not be against it being as an enum too

Great, cause I don't see any way around it if we want to fully solve the main issue.

The conversion to an enum is mostly the concern of whats in warp, not in warp-ipfs as there isnt really a problem that has an impact short or long term besides the issue between ConversationType and ConversationSettings.

The conversion to an enum is mostly the concern of whats in warp, not in warp-ipfs as there isnt really a problem that has an impact short or long term besides the issue between ConversationType and ConversationSettings.

The

issue between ConversationType and ConversationSettings

is the main issue being resolved here and it exists in both places so converting Conversation to an enum and not embedding it in ConverstionDocument, implies that we change both types if we're going to resolve the problem everywhere effectively.
I actually also prefer not to change ConversationDocument to an enum and embedding Conversation in it would have allowed us to do that (apart from deduplication). i-e you've to make a choice between these 2 options, unless you've a better idea.

but may depend on how comes out in the end, but this would be a separate discussion.

@dariusc93 So one issue with ConversationDocument becoming an enum is that we'll have to have more duplication since it'll also need a Common struct (like ConversationCommon struct you saw in #453). I'm sure you don't like that and I don't really like it either (it's also a lot more work than needed, well that's what we get for duplication).
However, as I previous explained, it's either this or we embedding Conversation in ConversationDocument. Let me know which one you prefer.

@dariusc93 So one issue with ConversationDocument becoming an enum is that we'll have to have more duplication since it'll also need a Common struct (like ConversationCommon struct you saw in https://github.com/Satellite-im/Warp/pull/453). I'm sure you don't like that and I don't really like it either (it's also a lot more work than needed, well that's what we get for duplication).
However, as I previous explained, it's either this or we embedding Conversation in ConversationDocument. Let me know which one you prefer.

Well for now we could leave it as is internally, move ConversationType internally and probably also ditch the direct conversation settings internally as per my previous comment, which would solve the issue in itself.

Well for now we could leave it as is internally, move ConversationType internally

I'm not sure what this means exactly but moving things around doesn't solve the issue at hand either. We've a mistake waiting to happen because of the disconnection between conversation-type-specific fields. enums completely eliminate the issue because it's a natural representation here (i-e a conversation is either a direct conversation or group).

probably also ditch the direct conversation settings internally

That's quite unrelated IMO. If you remove that struct, and use Option<GroupSettings> (for example), we still have the disconnect.

Another solution would be to only split conversation-type-specific data into an enum. If you recall, this is exactly what I tried to do when I first added group settings: I added the settings to ConversationType enum. You didn't like that at the time but I wasn't sure about it either but I think for me it was because of the name. We can think of a better name of course. Would that be something more acceptable to you?

Another solution would be to only split conversation-type-specific data into an enum. If you recall, this is exactly what I tried to do when I first added group settings: I added the settings to ConversationType enum. You didn't like that at the time but I wasn't sure about it either but I think for me it was because of the name. We can think of a better name of course. Would that be something more acceptable to you?

I took a variation of this in https://github.com/Satellite-im/Warp/pull/466 . I really hope we can agree on this compromise. I still think #453 is the best way forward but I can live with #466 since it does mostly solve the issue, as long as future edits of conversation structs don't add conversation-type-specific fields directly in the structs.


Transition Timer

It would be cool if a timer could be set after which the current piece would stop playing and the next piece would start playing. I would probably set it to 60 minutes at a time, so that I would slowly cycle through pieces while I work.

I've suggested this before on Patreon but didn't get much of a reaction -- glad to see someone else would find it useful
Do you think it need a way to let you choose which pieces where included in the cycle, like some sort of playlist? Or would it work for you to just include everything in the current selection? e.g., cycling through a single tag or your favorites.

I think a great first stab at it would just be to cycle through all pieces in order, just because that's probably the simplest and most general version of the feature. ("in order" could be the current sort order, or any fixed order, like by release date)
Further iterations could then include:

toggle for random order
toggle for favorites only
tag checkboxes to include or exclude a tag


⚠ Secret Website 3 has degraded performance

In 816fc18, Secret Website 3 ($SECRET_WEBSITE_3) experienced degraded performance:

HTTP code: 200
Response time: 2214 ms

Resolved: Secret Website 3 performance has improved in d233177.


Reorder navbar component elements

Feature idea.
In the following image we can see order of navbar elements But I think it should be like Home Services Testimonials About Blog for now, and Feedback should be moved in footer Contact section

Describe the solution you'd like

@MonalikaPatnaik

Please assign this project to me. i will fix the issue

Hey sorry but I think it's not required...Also changes like typo change or small additions( changes in margin ,padding etc) are not counted under GSSOC as per instructions..
@AkankshaAI I think it is not required as of now!


Deprecation warning in console: "You are calling the SightLayer#update method which has been renamed to SightLayer#refresh to be consistent with other PIXI objects."

Not something this module touches at all, something else is the cause.

Okay, something else must be hooking into the same thing that this mod does.


Dotnet

URL
https://dotnet.microsoft.com/en-us/learn/dotnet/hello-world-tutorial/create
Operating system
windows
More information about your system
x64
Description
well im following everything that is said but the only thing that not working is dotnet for some reason?
dotnet --info
dotnet : The term 'dotnet' is not recognized as the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1

dotnet

  + CategoryInfo          : ObjectNotFound: (dotnet:String) [], CommandNotFoundException
  + FullyQualifiedErrorId : CommandNotFoundException

Have you tried restarting VS Code? If you type dotnet --info on a terminal outside of VS Code (command prompt or powershell), does it still say that that dotnet was not recognized?


fix: use fixed width integer types to define jule types

Description
Since the true size of basic integer types might be everything depended, I suggest to define jule integer types using the fixed with integer types.
Checklist

[x] A description of the changes in this PR is mentioned above.
[x] All the new and existing tests pass.
[x] The code follows the code style and conventions of the project.
[x] No plagiarized, duplicated, or repetitive code that has been directly copied from another source.
[x] I have read the whole Contributing guidelines of the project and its resources/related pages.

Screenshots (if any)

Note to reviewers

Use fixed width integer types to define jule types.

@mertcandav do you know what have happened in this job?

Not yet. I will review this problem as far as soon. I will revert this PR and open an issue for that.
If you have idea about that, please share with us via relevant issue.
Thanks.

(since the issue is not yet there)
Did you try to simply rerun the failed jobs? When I synchronized my fork, both build and tests were successful.

No, I'll investigate. There are might be more deep problems.
But issue also discuss some things. Then, I think we can merge this PR.


[runtime] Various Improvements on DataBuffer

We should introduce various additional fields in the DataBuffer abstraction:

[ ] next and prev pointers for putting on lists w/o extra allocations
[ ] an "extra" field that each LibOs can use for whatever it wants (we should have space for another 64 bit field in this struct before we exceed the x86 cache line size)

Related Issues

https://github.com/demikernel/runtime/pull/22
https://github.com/demikernel/demikernel/pull/87

I'm not sure that we need any of these at this time


Create a major version tag

Would it be possible to create a major version tag that constantly gets updated with each minor version like in actions/checkout: https://github.com/actions/checkout/releases? This would allow us to reference this action by just doing uses: dorny/paths-filter@v2 in our workflow YML files since it is a bit of a pain to constantly keep up with each minor version release.

I've created tag v2.
Sorry for the inconvenience :)

I've created tag v2.
Sorry for the inconvenience :)

Thanks a ton, it works great! Thanks for the awesome action!


Remove html boilerplate from About/Index page

Integrating flask_bootstrap into template pages Joying was working on. This should prove relatively simple and not have any impact on existing work.

Removed the CSS property I wrote to test if flask_bootstrap was connected. Removed the html tags from index page


apt-get update fails for docker repository

I followed http://docs.docker.io/en/latest/installation/upgrading/ closely.
W: A error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: https://get.docker.io docker Release: Unknown error executing gpgv

W: Failed to fetch https://get.docker.io/ubuntu/dists/docker/Release

W: Some index files failed to download. They have been ignored, or old ones used instead.

I have this issue too on Ubuntu 10.04

@leifett Ubuntu 10.04 is too old, and not supported. Upgrade your system to a newer Ubuntu version (for example, the current 16.04 LTS). Also note that Ubuntu 10.04 is EOL, and no longer supported by Ubuntu as well, so you won't receive updates, including security updates; https://wiki.ubuntu.com/Releases

@thaJeztah, thanks for the support.  the issue is that my host provider makes an image available preconfigured for docker but they chose 10.04.  I've moved up to the more modern 16.04 and installed docker myself, which works just fine

@leifett that's a really weird choice; 10.04 is insecure as it's no longer maintained 😱


Automated Package Upgrade

:tada: This PR is included in version 7.0.90 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


When loading list virtual scroll dont show it

Hi.
Im trying to implement this solution to angular2/bootstrap tool.
When im implementing the html code to my list component it wont show. Nothing is shown. Through dev tools i can see the list exist and is transferred to your module. But VS wont send it to its components ( the smallest list is empty ) or send two elements and show it after the padding messing with my style. Always those two elements are after the page, on the bottom. Anyone met this issue?

I have the same issue

I am assuming that you have an issue with the container size. The container element must have:

display: block
Predefined height and width

Please read https://github.com/rintoj/angular2-virtual-scroll#if-container-size-change to understand more about this or check out the demo project https://github.com/rintoj/angular2-virtual-scroll/tree/master/demo


MUDARABA Profit Automation

MUDARABA Resource added.
MUDARABA Profit will be shown automatically in the calendar along with amounts.

Please add translation in form fields. And leave a short comment for why we need this.


Polymer2 & es6

This PR upgrades iron-grid to polymer 2 and es6.
It uses ResizeObserver for resize detection.
It is already template string based so that the upcomming upgrade to polymer3 will be painless.
iron-grid-container was moved to its own file.
Inline Demo was added for webcomponents.org

So will this version available, can we now use with polymer 2?

Yes if you use latest master it is using polymer 2.

what if i need to override  the media breakpoints? because as per the iron-grid.html all the breakpoint trigger using [::content .xs{{3}}-important] so if i need to change how could i use @media rule?