Describing rolls

Is your feature request related to a problem? Please describe.
I'm using DiceRoller to display a list of recently rolled notations and their results, the results can also be clicked to roll the same notation again. This works fine, but it's a bit hard to figure out what the rolls where meant for, especially if there were a lot of rolls.
Describe the solution you'd like
I would love to have the option to give every DiceRoll a separate description, so that for any given roll in the DiceRoller-log I can look up what they were rolled for.
Two solutions come to mind to solve this:
Solution 1: Describing the roll in the notation
FoundryVTT has two options for that in its /roll (in-chat roll) command.
a. Roll description: /roll 1d20 # Roll for initiative -> has roll for initiative as description for the whole roll
b. Dice description: /roll 1d20[Initiative]+1d4[Bonus] -> has Initiative as description for the 1d20 and Bonus as description for the 1d4
These work pretty well. However, this would mean that the the dice grammar needs to be changed and I'm not sure how much work that would mean.
Solution 2:
Another option would be to add an additional (optional) parameter to the roll-method.
Something like:
DiceRoll.roll(notation: string, description?: string) respectively DiceRoller.roll(notation: string, description?: string)
And add the property 'description: string' to the DiceRoll-class.
I like solution 2 more. But it would mean that the api would change (not a breaking change as it's only an optional parameter).
Describe alternatives you've considered
Alternatively, I could track the descriptions in a separate Map or something, but as the user can change the text representation of the DiceRoll using any of its properties, this would get complicated very fast.
Also I think this feature (especially Solution 2) would be an elegant addition to rpg-dice-roller.

Just realized that the module is not written in Typescript, so the code I proposed is not valid. Please understand it as pseudocode ;)

On second thought, it might be a bit more far-sighted to make the second parameter an object and call it options with one of the properties being description, so that potential other properties in the future might go there as well.

Thanks for the suggestion.
It's not something that I've ever thought of supporting, because I always saw things like that as outside scope for the library - ie. you could roll the two dice separately, and add the text when you output as a string. I've also tried to stay away from things that are more part of the "chat" feature of Systems like Roll20.
However I'm thinking that there might actually be some benefit to this after all, and it's worth a look.
You've got some good suggestions on how it could work.
Solution 1
As you've noted, FoundryVTT have two options here:

Roll description: /roll 1d20 # Roll for initiative -> has roll for initiative as description for the whole roll
Dice description: /roll 1d20[Initiative]+1d4[Bonus] -> has Initiative as description for the 1d20 and Bonus as description for the 1d4

For what it's worth, it looks like Roll20 provide similar: https://help.roll20.net/hc/en-us/articles/360037773133-Dice-Reference#DiceReference-InlineLabels
Option 1 - #
This seems to be more of a higher level description, for use in the game chat.
However, I suppose it could work, but it would mean that no other notation could be added after the description:
1d20 # Roll for initiative + 2d10

The  + 2d10 would be classed as part of the description.
You could also go the JS style route (or even both):
1d20 // Roll for initiative

Option 2 [...]
This could work. I don't think the notation would conflict with anything, as I'm fairly sure we're not using square brackets for anything else.
Roll20 have an example that adds a description to more than just a dice role:
2d20+5[Fire Damage] + 3d6+5[Ice Damage]

So the "Fire Damage" label assumedly get assigned to the 2d20+5 equation, rather than just the 5. Here's what  the output looks like:

It could be hard to achieve a description on more than a single die roll, due to how the results are stored.
Solution 2
I don't think option 2 would allow the flexibility that you're after. If you rolled a notation like 4d6+2d10, you'd have no way of adding a description to both rolls:
diceRoll.roll('4d6+2d10', {description: 'initiative'});

We'd be adding the description to the entire notation.
I suppose, an alternative would be to have it as an indexed array:
diceRoll.roll('4d6+2d10', {descriptions: ['initiative', 'bonus']});

Another downside of this method is that it doesn't allow a typical user, who can only write notations, to add a description.
Output
A pertinent question is, how would you expect the roll output to look? Neither Rol20 or FoundryVTT show the description in the roll results - choosing to show them separately instead.
So, are you just wanting the description stored against the objects, so you can grab them and display them yourself, or would you want them to show up in the output, something like;
Rolling:
2d20[Fire Damage] + 3d6[Ice Damage]

Would output:
2d20[Fire Damage] + 3d6[Ice Damage]: [11, 11]+[6, 6, 4] = 38

Or even:
2d20[Fire Damage] + 3d6[Ice Damage]: [11, 11][Fire Damage]+[6, 6, 4][Ice Damage] = 38

I totally understand your concerns and I would accept it as well if you said it's out of scope for the library.
To clarify my use case:
I use obsidian.md to keep notes and I made a plugin to quickly roll inside the app (which uses the dice roller). In a separate panel I show a history of all dice rolls like this:

This uses The DiceRoll.notation and DiceRoll.total properties. (when hovering a roll it also shows the output)
My goal would be to add the ability to add a description to rolls wich would be shown like this:

So Solution 1: Option 1 and Solution 2 would suffice for me after all.
I see the same problem as you regarding describing multiple rolls (as in Solution1:Option2):

It could be hard to achieve a description on more than a single die roll, due to how the results are stored.

Even if we provide an indexed array of descriptions on the resulting DiceRoll we do not know how to split the dice roll properly.
Parsing the Roll20 example using the Parser I get the following.
Parser.parse('1d20+5+3d6+1')
[
  StandardDice {
    [Symbol(qty)]: 1,
    [Symbol(sides)]: 20,
    [Symbol(min-value)]: 1,
    [Symbol(max-value)]: 20,
    [Symbol(modifiers)]: Map(0) {}
  },
  '+',
  5,
  '+',
  StandardDice {
    [Symbol(qty)]: 3,
    [Symbol(sides)]: 6,
    [Symbol(min-value)]: 1,
    [Symbol(max-value)]: 6,
    [Symbol(modifiers)]: Map(0) {}
  },
  '+',
  1
]

Assuming an array DiceRoll.descriptions of ['Fire Damage', 'Ice Damage'] in this case I would assign FireDamage to 1d20 and Ice Damage to +5.
Altough using RollGroups would work fine I guess -> {1d20+5}[Fire Damage] + {3d6+3}[Ice Damage]
roller.Parser.parse('{1d20+5}+{3d6+1}')
[
  RollGroup {
    [Symbol(expressions)]: [ [Array] ],
    [Symbol(modifiers)]: Map(0) {}
  },
  '+',
  RollGroup {
    [Symbol(expressions)]: [ [Array] ],
    [Symbol(modifiers)]: Map(0) {}
  }
]

My initial suggestion of using Solution 2 was based on the assumption that it's the least amount of work of the three (which still holds I think). But I understand your concerns that users, who can only write notations, should also be able to add descriptions. So I agree, that any of the options (or both) of Solution 1 would fit the library better.
As for the output. To be honest, I didn't even think about that yet. But showing them in the output would be a nice addition.
If the description is for the whole DiceRoll I think I would expect something like this:
Roll for Initiative: 1d20+5: [6]+5 = 11

If it's for each dice, your suggestions look good to me. I think I would prefer the first one, to avoid redundant information.

Altough using RollGroups would work fine I guess -> {1d20+5}[Fire Damage] + {3d6+3}[Ice Damage]

Ah! brilliant idea! That would indeed allow comments to be grouped, because we can then add the comment to the RollGroup and ResultGroup objects.
I like that idea. Inline comments can then be attached to a single item, or a group.
// fire damage is just 5d6
5d6[Fire damage] + 5 + 2d10[Ice damage]

// fire damage is 5d6+5
{5d6 + 5}[Fire damage] + 2d10[Ice damage]

With that, I think that both inline comments ([...]), and line comments (# ...) can work.
I do think I prefer these ideas, over passing a list to the roller, as it does mean that anyone can add comments.

Correct me if I'm wrong but there's no possibility to add a comment to a single number as those are stored as number.

Ah yes, you are correct. Unless we change raw numbers to be stored as some sort of object, then we won't be able to add descriptions to them.
This would be a breaking change though, so perhaps something to add to the backlog.
I think, with the suggested functionality, you could probably get around this by wrapping the number in a roll group though:
3d6[Fire] + {3}[Ice]

I think, with the suggested functionality, you could probably get around this by wrapping the number in a roll group though:

Nice, didn't cross my mind!
I think I have a picture of the whole thing now. Will give it a go at the weekend if that's ok for you? But I have to read up on pegjs first 😅.

Yeah, that would be great. PRs are always welcome! It's always worth checking out the contributing guide.
It would be really good to see this!

For reference, below is a list of valid descriptions / comments:
Multi-line
Dice
3d6[Fire]
3d6[ Fire ]
3d6[ Fi
re ]

3d6/*Fire*/
3d6/* Fire */
3d6/* Fi
re */

Roll groups
{5d6 + 5}[Fire]

{5d6 + 5}/*Fire*/

Single-line
Dice
3d6 //fire
3d6 // fire

3d6 # fire
3d6 #fire

Roll groups
{5d6 + 5} //fire
{5d6 + 5} // fire

{5d6 + 5} #fire
{5d6 + 5} # fire

I've been making some headway with this, where the description notation will be cast to a new Description object, with a text and type properties. The type is either "inline" or "multiline".
For example;
3d6 // fire

Would be:
{
  text: 'fire',
  type: 'inline',
}

And:
3d6[Some description]

Would be:
{
  text: 'Some description',
  type: 'multiline',
}

This has just gone out in v5.2.0! I'll be adding info about it to the docs when I can.


[WIP] Shared types for schema stitching

This adds support for shared types in schema stitching.  The details are not worked out at this time.
TODO:

[ ] If this PR is a new feature, reference an issue where a consensus about the design was reached (not necessary for small changes)
[ ] Make sure all of the significant new logic is covered by tests
[ ] Rebase your changes on master so that they can be merged easily
[ ] Make sure all tests and linter rules pass
[ ] Update CHANGELOG.md with your change

@freiksenet @stubailo this is an initial PR for supporting shared types.  I haven't done much other than create schema examples for testing.  However, I wanted to open this so you are aware I am working on it as well as discuss what options exist for how to support this features.
For our use case, we could simple allow common types to be stitched from a local schema and any types found in the remote schema are duplicated with the local schema that we assume the types in the local schema win.
Thoughts?

@nnance My thought was there would be a new (probably scalar?) type that represents imported type. Then it would be replaced by a proper type when things are merged.
The thing we need to achieve is the ability to set precedence on which type is canonical, thus I thought having a separate type of types for that would be good.
Other ideas I thought about is having unions/interfaces as a way to share type and being able to add implementations to interfaces/variants to unions as the way to add common types.

@nnance so I've played around with the some special type ideas and I feel your initial proposal is actually better. The problems with my idea were that every schema actually needs a query and quite possibly common types won't have that query inside schema. Thus instead of what I proposed here is what we need to solve:

Case when schemas just use basic common types (so basically just type definitions, like in the address examples), so merger should compare that types are the same and just use one.
Case when three schemas are merged and two depend on one. (This probably already works, but I kinda need to add tests for that).

I've merged the PR manually, closing.


Electron Cash & TrustedCoin sig script error 16

Hello,
So I've been reading several threads/issues here that are experiencing the same problem as I am.
However, the "fix" or "solution" that is usually given is: "Just use your recovery seed to make a new wallet without 2fa enabled". Well that's the problem. I still have access to the 2fa codes that gets generated every few seconds but I DO NOT have the recovery seed. So the only way I'll be able to get my 4+ BCC from Electron Cash is when this gets fixed.
Everytime I try to send coins, I get the "16 mandatory-script-verify-flag" error.
I've tried changing servers but with no luck. The odd part is that some servers actually let me "broadcast" the transaction and supposedly "succeed" but when I try using the TX ID to look for the transaction in a BCH Block Explorer, it shows as invalid and even when I change the server, the "unconfirmed" transactions disappears from the list.
Please I need your help with this.
I've seen quite a few users that have the same issue: no seed and script sig error/error16.
I contacted TrustedCoins but they pretty much said 'you're out of luck. Here's their message:

Sorry, but Trustedcoin's development team currently does not have the bandwidth to support BCH and it's unclear if/when support will be added.
Therefore, the only recourse 2FA users have to access their BCH is recovery from seed ( as described here https://github.com/fyookball/electrum/issues/41#issuecomment-320099854 ) so if you have lost your seed, you are out of luck for the time being.

So you're my only hope... Help me with this please.
@fyookball @badmofo @Otaci
Thanks in advance!

There is nothing we can do.  Trustedcoin have the private key and have decided to ignore their responsibility to their customers.  If you lost your seed you are reliant on them.

Isn't there a way to modify the Electron Cash code so that the signature is BCC compatible? Or maybe modify the signature? Also, when I tried to export the private key that has my coins and restore it in a new wallet, it shows a totally different public key that doesn't have any coins.
P. S.   If we could do it we'd have the private key.

Why closed?

It is closed because there really is nothing we can do to help you. Only trustedcoin.com can help you.
The trustedcoin.com service uses transactions that need two signatures. You can generate one, and trustedcoin.com generates the other. If trustedcoin.com refuse to generate the second, which is happening in this case, then you are stuck. No-one else can generate these signatures.

It is closed because there really is nothing we can do to help you. Only trustedcoin.com can help you.
The trustedcoin.com service uses transactions that need two  signatures. You can generate one, and trustedcoin.com generates the  other. If trustedcoin.com refuse to generate the second, which is  happening in this case, then you are stuck. No-one else can generate  these signatures.

I have the same problem, why is it possible to still choose for two factor authenticator when they don't support it?

This will be removed in the next version.
You may find some assistance in #41


CASMINST-3403: Adjust upgrade workflow to reference Getting Started Guide for HFP and then FAS update

Summary and Scope
CASMINST-3403: Adjust upgrade workflow to reference Getting Started Guide for HFP and then FAS update
Issues and Related PRs
Testing
Tested on:
Test description:
Risks and Mitigations
Pull Request Checklist

/backport release/1.2 main


Update gradle, update dependencies, fix Facebook theme, fix Facebook CCT

@SUPERCILEX this is great!  Thanks for solving that wacky CCT issue, I always assumed it was Facebook's fault somehow.


Visualize critical lines (ht+circuit) in circuit diagram

Description
Please include a summary of the change and which issue is fixed.
List any external dependencies that are required for this change.
Completes: AB#270013
Checklist:

[ ] I have performed a self-review of my own code.
[ ] I have linked my DevOps task using the AB# tag.
[ ] My code is easy to read, and comments are added where needed.
[ ] My code is covered by tests.

Venter på innspill fra Atle/Cato på om det er slik de vil ha det.


Add gogrouptest

Add gogrouptest for synchronously execution in unit tests.

Could review before this PR?
https://github.com/newmo-oss/gotestingmock/pull/3


Input floating label is not cleared

After entering an input in an input with floating label
floating label is coming on top of the input text

This issue has been fixed!
Thanks.


Autodetect language

Can be great an autodetect feature so if the user access the survey with a device/os/software in an specific language, automatic loads the related language form.

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

ID: c4cb88d8-55a3-9e36-00c2-ab36509bd952
Version Independent ID: 43d00b62-0c3c-332c-9f6c-047707ec3b07
Content: Create a multilingual survey - Microsoft Forms Pro
Content Source: fp-docs/create-multilingual-survey.md
Service: forms-pro
GitHub Login: @sbmjais
Microsoft Alias: shjais

Thanks for your feedback. For product-related feedback, visit, https://microsoftforms.uservoice.com/forums/386451-welcome-to-microsoft-forms-suggestion-box?category_id=357997.
Closing this issue.


Bypass file_server for some file existence checks

This addresses what I believe is the root cause of #381.
During indexing the WorkspaceSymbols genserver works its way through the result of :code.all_loaded/0, calling File.exists? in the course of its work for each entry in the list of loaded modules. This occurs concurrently across n processes where n is the scheduler count. On my current project of decent size :code.all_loaded/0 returns 550 entries.
The File.exists? checks are filling the message queue of Erlang's file_server process, and I think this is causing other file operations to block until it can work through the queue. If you launch the Observer you can see this happen on the process tab, and it would explain why seemingly independent parts of the Elixir LS application are blocking each other.
I think the regression itself would have been introduced in #110 with the introduction of workspace symbols support. I'm unclear on why it got worse for people in the latest Elixir LS release, but as I mentioned in #381 I wonder if the Elixir and OTP upgrade is a piece of the puzzle? Maybe someone has a better idea.
This PR passes the :raw option to File.exists?, which causes the file existence check to bypass the Erlang file server, which I believe is safe under these circumstances.
This seemed to resolve the specific issue I outlined in #381. On my machine it also reduced the cumulative workspace symbol indexing time by 50% for the initial indexing phase and 70% for subsequent updates. I suspect this is because the individual tasks spawned by WorkspaceSymbols aren't blocking each other's File.exists? checks.
As an aside on the subject of performance — after this change I tried Task.async_stream as well as the custom process_chunked family of functions and found no difference between them. It may be worth revisiting if we can simply use Task.async_stream since it will be familiar to more people. It is, of course, also possible I measured incorrectly!
Perhaps @benwilson512 or @bluehotdog could give this change a try to see if it helps?

Nice find @mattbaker. The same fix is also needed in elixir_sense.
Regarding the 0.6 release, I don't think that OTP/Elixir version is the culprit here. We are not using 1.11/23 to compile releases - in 0.6 we updated the build from 1.7/20 to 1.8/21. There were also reports of speed regression on 1.9/22. My guess is that https://github.com/elixir-lsp/elixir-ls/pull/350 made this locking issue more prominent.

As an aside on the subject of performance — after this change I tried Task.async_stream as well as the custom process_chunked family of functions and found no difference between them. It may be worth revisiting if we can simply use Task.async_stream since it will be familiar to more people. It is, of course, also possible I measured incorrectly!

I explained my original reasoning behind a custom process_chunked in https://github.com/elixir-lsp/elixir-ls/pull/110#discussion_r376824484. With this fix applied it may no longer be valid though.

Ah, that's interesting @lukaszsamson, thanks!
And thanks for the information on process_chunked, I'd missed that comment. Since they seem to be behaving equivalently it doesn't seem worth changing, but it's always good to have options :)

Thanks for this @mattbaker :heart:! This looks like it should help with the speed significantly.

Hey folks, I'm checking this out locally to test. Two questions I'm hoping I can get answer to: Does format on save wait for all compilation to complete before formatting? Does it reformat all files in the code base or just the one that was changed?

@benwilson512 - this is my understanding:

It only formats the file in question.
Formatting does not wait on compilation, but it probably should in umbrella apps. I think that's the origin of #252.
It looks like the code that pulls .formatter.exs options in Elixir makes use of File.cwd/0, and the current working directory (apparently) changes during the compilation of umbrella apps. I poked around the language server and Elixir and came up empty handed with regards to a clean fix.

Played around with #391 as a solution to the second bullet, but I'm not sure how I feel about it.


ISPN-6208 Remove deprecated use_send_queues from tests

https://issues.jboss.org/browse/ISPN-6208

integrated! thanks @gustavonalle !


New schema

Requires the following commands to be run on both staging and production before pushing source code there:
heroku run bundle exec rake db:migrate:down VERSION=20160127005233 RAILS_ENV=production -a courtbot-reporter-staging # CreateDataUrls
heroku run bundle exec rake db:migrate:down VERSION=20160127002435 RAILS_ENV=production -a courtbot-reporter-staging # CreateViolations
heroku run bundle exec rake db:migrate:down VERSION=20160127002444 RAILS_ENV=production -a courtbot-reporter-staging # CreateCitations
heroku run bundle exec rake db:migrate:down VERSION=20160127002453 RAILS_ENV=production -a courtbot-reporter-staging # CreateAppointments

Then push the source code to heroku with git push heroku-staging new-schema:master which will trigger a bundle install.
Then run heroku run bundle exec rake db:migrate -a courtbot-reporter-staging to implement the new schema.

deployed to staging and production. ETL processes will commence on each server at 2pm PST. will monitor and revise as necessary.

shoot the commits i pushed don't have the expected code... need to investigate.


refactor: 使用IntelliJ中的inspection功能简化了两行代码

1.propertyValue之上流程已经判空，取消propertyValue != null语句
2.isInstance()替换为instanceof关键词

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.wangzhaoning seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.wangzhaoning seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

Codecov Report

Merging #2920 into master will decrease coverage by 0.03%.
The diff coverage is 0%.

@@             Coverage Diff              @@
##             master    #2920      +/-   ##
============================================
- Coverage     80.52%   80.48%   -0.04%
+ Complexity     7229     7221       -8
============================================
  Files           145      145
  Lines         27134    27133       -1
  Branches       6493     6492       -1
============================================
- Hits          21850    21839      -11
- Misses         3403     3408       +5
- Partials       1881     1886       +5

Impacted Files
Coverage Δ
Complexity Δ

...m/alibaba/fastjson/serializer/FieldSerializer.java
79.88% <0%> (-0.12%)
63 <0> (ø)

...ava/com/alibaba/fastjson/serializer/DateCodec.java
87.05% <0%> (-2.95%)
40% <0%> (-1%)

...main/java/com/alibaba/fastjson/util/FieldInfo.java
86.2% <0%> (-0.35%)
90% <0%> (-1%)

...n/java/com/alibaba/fastjson/util/JavaBeanInfo.java
87.6% <0%> (-0.17%)
206% <0%> (-2%)

...java/com/alibaba/fastjson/parser/ParserConfig.java
83.41% <0%> (-0.17%)
206% <0%> (-1%)

.../java/com/alibaba/fastjson/parser/JSONScanner.java
76.11% <0%> (-0.06%)
506% <0%> (-1%)

...ava/com/alibaba/fastjson/parser/JSONLexerBase.java
71.36% <0%> (-0.04%)
827% <0%> (-1%)

Continue to review full report at Codecov.

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


Your terminal is messed up since 1.92

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

VS Code Version: 1.92
OS Version: windows, with remote ssh to a linux server

Steps to Reproduce:
Your terminal is messed up since 1.92. The max-panel-size is not working properly. In the new version, any less output (e.g. by git log) does not take over the full screen as it used to. The scroll bar on the right is also very fishy: it shows the scroll bar even if I clear the terminal console by clear. If I minimize and maximize the terminal window again, the unnecessary scroll bar disappears.
Someone messed something up in the terminal console since 1.92 (or earlier).
To reproduce:

try git log or git show in a maximized terminal window.
Try for i in {1..10000}; do echo $i; done and then clear, and then observe the weirdness on the right scroll bar.

Thanks for creating this issue! It looks like you may be using an old version of VS Code, the latest stable release is 1.92.1. Please try upgrading to the latest version and checking whether this issue remains.
Happy Coding!

bot: 1.92.1 has the same issue. I'm pissed off that it didn't get fixed by your 1.92.1 which motivated me to report this issue.

Think this is the same as https://github.com/microsoft/vscode/issues/224750
/duplicate

I'm using 1.93.0-insider same error there.


koordlet: supply rdma devices

Ⅰ. Describe what this PR does

Ⅱ. Does this pull request fix one issue?

Ⅲ. Describe how to verify it
Ⅳ. Special notes for reviews
V. Checklist

[ ] I have written necessary docs and comments
[ ] I have added necessary unit tests and integration tests
[ ] All checks passed in make test

/lgtm


打包成静态站点后

Version
3.2.26
Reproduction link
github.com
Steps to reproduce

npm install
npm run build
npm run preview
查看 console

What is expected?
this下能get这些属性
What is actually happening?
undefined

正常开发环境能get到
编译打包成静态站点后都get不到, vite 和 vue cli 都试过了, 都是一样的结果

This is because you declared the properties using the setup syntax. Use onMounted() instead and keep only one version of the component: the composition or the setup version.
You can still access the ref through this.$refs.ref_form though

Why the development environment can get properties, but not after packaging. And there is no prohibition in the documentation to use 2 ways at the same time.


Update sbt-best-practice to 8.2.1

Updates com.thoughtworks.sbt-best-practice:sbt-best-practice from 7.2.0 to 8.2.1.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "com.thoughtworks.sbt-best-practice", artifactId = "sbt-best-practice" } ]

labels: sbt-plugin-update, early-semver-major, semver-spec-major

Superseded by #202.


Feature Request: Support more page size in pagination

🌟 Feature Request
📝 Description
Existing table view data are all having pagination of page size 10.

Blocks page
Block Detail page
Batches page
Batch Detail page
Transactions page
Transaction Detail page
Address Detail page => Transaction & Transfers Tab

Suggested additional page size:

10
20
50
100

🤔 Rationale
A pagination of selectable page size is practical & common to be supported.
e.g. https://etherscan.io/txs?a=0x95222290dd7278aa3ddd389cc1e1d165cc4bafe5
📋 Additional Context
Add any other context or information about the feature request here.

Foundings
e.g. https://block-explorer-api.mainnet.zksync.io/address/0xFb59d06df95091cC7822690a1B12E97008b345E2/transfers?toDate=2024-04-05T09%3A47%3A53.461Z&pageSize=10&page=1
I’m seeing that whatever pageSize I pass, it will always give me an item list of 10. Instead, limit is effective.


Error when (accidentally) removing credentials for an authenticated source (ChocolateyGUI - Bug When Setting Chocolatey.licensed Source to Admin Only)

Description
Chocolatey GUI as well as CLI experience errors when setting the chocolatey.licensed source to admin only.
Issue Repro
Run choco source add -n=chocolatey.licensed -s=https://licensedpackages.chocolatey.org\api\v2\ --adminonly
The run choco source list
Explanation
When running this command no error immediately shows within Chocolatey however if you run choco source list you will get the following error message: Value cannot be null Value = s
Looking further into this within the chocolatey.config file you see that the source no longer has the username and password associated to it via the license file.
When trying to open Chocolatey GUI it will not open but display an Unhandled Exception error upon startup.
Looking into a working ChocolateyGUI sessions source settings the GUI displays a warning on the licensed feed and does not allow setting this to an admin only source.
Other Information

Chocolatey Version - 0.10.15
Chocolatey.Extension Version - 2.1.0
Chocolatey GUI Version - 0.17.3

References

GitLab Issue
ZenDesk Ticket

Workaround
choco source add -n=chocolatey.licensed -s=https://licensedpackages.chocolatey.org\api\v2\ --adminonly --user customer --password licenseguid --priority 10 (grab the guid from your license file)
When you update a source, you need to ensure you are passing all things to it again. The actual bug appears to be something in Chocolatey open source expecting user/password when the source requires authentication and throwing an error when those are not available.

I'm going to transfer this over to Chocolatey FOSS.

Nevermind on that last comment - would like to get confirmation and then transfer over.


Question about GPU memory consumption of spconv implemented in mmdet3d

thx for ur excellent project!!!
I tried to reimplement pvrcnn in mmdet3d, but i cant train pvrcnn with batchsize=2 because of OOM ERROR. i find the reason is that  GPU memory consumption of  spconv implemented in mmdet3d (about 8000M) if much higer than official version (about 6000M).
what are the differences between them? and how to solve the problem
wish ur reply, thx  ^v^

Actually some parts of spconv/voxelization are refactored with cuda operations indeed, which would lead to a little more memory costs. But from our experience, I guess it may not be the direct reason for OOM ERROR? A trick to reduce memory costs if you use SECFPN instead of FPN is setting the reshape_out to False, which typically copies a large intermediate feature map.

Actually some parts of spconv/voxelization are refactored with cuda operations indeed, which would lead to a little more memory costs with better efficiency. But from our experience, I guess it may not be the direct reason for OOM ERROR? A trick to reduce memory costs if you use SECFPN instead of FPN is setting the reshape_out to False, which typically copies a large intermediate feature map.

thx for ur reply.
I set batchsize=2 as OpenPCDet mentioned, and if batchsize=1, there is no OOM ERROR. Actually i use the same config as SECOND (with SECFPN) in sparse conconvolution module.
I compare modules implemented in mmdet3d and pcdet, and find that spconv module  in mmdet3d  cost more gpu memory (about 2000m) than official module imported in pcdet.
so which version of spconv  implemented in mmdet3d?  and would it be possible to decrease the memory cost of spconv  for greater compatibility  with other models
wish ur reply, thx  XD

Thanks for your feedback. We refactor the voxelization to cuda considering the consistency of input for VoxelNet and other models (all is raw points). There is trade-off here. It could improve the framework efficiency, especially for the transition between epochs while lead to more memory overheads.
A work around is that you can use FP16 models to reduce the memory burden. Besides, we also include numpy implementation on cpu here, which could generate the same result as the cuda version. You can try to replace the current voxelization in VoxelNet with it, but it needs some modification in dataset pipelines and maybe also somewhere else.
If you finally make it, PRs are also welcome.


Allow arbitrary configuration options to be overridden via the CLI

Fixes #8368
Fixes https://github.com/astral-sh/ruff/issues/9186
Summary
Arbitrary TOML strings can be provided via the command-line to override configuration options in pyproject.toml or ruff.toml. As an example: to run over typeshed and respect typeshed's pyproject.toml, but override a specific isort setting and enable an additional pep8-naming setting:
cargo run -- check ../typeshed --no-cache --config ../typeshed/pyproject.toml --config "lint.isort.combine-as-imports=false" --config "lint.extend-select=['N801']"

This is what the error message currently looks like if you provide an invalid --config option:
>cargo run -- check ../typeshed --no-cache --config foo.toml
    Finished dev [unoptimized + debuginfo] target(s) in 0.77s
     Running `target\debug\ruff.exe check ../typeshed --no-cache --config foo.toml`
error: invalid value 'foo.toml' for '--config <CONFIG_OPTION>'

  tip: The `--config` flag must either be a path to a `.toml` configuation file or a TOML string providing configuration overrides
  tip: The path `foo.toml` does not exist on your filesystem

For more information, try '--help'.
error: process didn't exit successfully: `target\debug\ruff.exe check ../typeshed --no-cache --config foo.toml` (exit code: 2)

Test Plan
So far, just manual testing. TODO: write proper tests and docs.
Several tests added to crates/ruff/tests/format.rs and crates/ruff/tests/lint.rs. Also, extensive manual testing.

Looks like a test case that I've added will fail if I make this modification:
diff --git a/crates/ruff/tests/lint.rs b/crates/ruff/tests/lint.rs
index 95f068b19..493641f13 100644
--- a/crates/ruff/tests/lint.rs
+++ b/crates/ruff/tests/lint.rs
@@ -570,7 +570,7 @@ x = "longer_than_90_charactersssssssssssssssssssssssssssssssssssssssssssssssssss
         .arg("--config")
         .arg(&ruff_toml)
         .args(["--config", "line-length=90"])
-        .args(["--config", "extend-select=['E501']"])
+        .args(["--config", "extend-select=['E501','F481']"])
         .args(["--config", "lint.isort.combine-as-imports = false"])
         .arg("-")
         .pass_stdin(fixture), @r###"

Not sure exactly why yet...

Alrighty, I've had a stab at writing docs and tests, and I think I'm pretty happy with the error messages. This should be (finally!) ready for proper review!

Thanks @MichaReiser! Would you mind giving the docs another look? I revamped them a fair bit following your comments. Also @zanieb did you still want to take a look? :)

The one thing that isn't entirely clear to m is how --config option=value overrides values: Does it override the option in all configuration files? Even if a directory has its own configuration file that could be considered "closer" to the file in question?

Yeah -- I added some docs about this in 0ccc608b6ec4886682c626bf9794d6a8d57bb358. Lmk if you think they need any additional clarity!

Sorry I haven't looked at this yet I've been focused on v0.2.0. I'm looking forward to reading through this once that's out.

Sorry I haven't looked at this yet I've been focused on v0.2.0. I'm looking forward to reading through this once that's out.

No worries! Yeah, I figured :)

Thanks so much @zanieb! I think I tackled nearly all of your points, except for https://github.com/astral-sh/ruff/pull/9599#discussion_r1480557151 where we're waiting for Charlie to chime in.
Some of the error messages might still be a bit verbose for your liking, but I'm not sure how to trim them down... suggestions welcome :)

Sorry, didn't realize this was waiting on me! I'll take a look today, then we should merge :)

For posterity: https://github.com/astral-sh/ruff/issues/10035


feat(quantic): change sortCriteria for facetValue

SVCC-2293
change sortCriteria to "alphanumeric" for facetValue in order to keep the same order of facetValues after "Show More" or "Show Less" is clicked.
Before:

After:

The other possible values for sortCriteria should work as well though. Changing the default value doesn't feel like a real fix given then users that explicitly set it to something else would still have the same issue.

The other possible values for sortCriteria should work as well though. Changing the default value doesn't feel like a real fix given users that explicitly set it to something else would still have the same issue.

The problem is that we were sending: automatic as the sortCriteria which is not an actually real value for the sortCriterias.
And the search API has a little bit of a weird default value for facet sort:

By default:
When isFieldExpanded is false in the facet request, and moreValuesAvailable is true in the corresponding facet response, use score
Otherwise, use alphanumeric.

So by sending a value that doesn't exist, effectively when pressing show more, it would actually change our sorting criteria...

The other possible values for sortCriteria should work as well though. Changing the default value doesn't feel like a real fix given users that explicitly set it to something else would still have the same issue.

The problem is that we were sending: automatic as the sortCriteria which is not an actually real value for the sortCriterias.
And the search API has a little bit of a weird default value for facet sort:

By default:
When isFieldExpanded is false in the facet request, and moreValuesAvailable is true in the corresponding facet response, use score
Otherwise, use alphanumeric.

So by sending a value that doesn't exist, effectively when pressing show more, it would actually change our sorting criteria from score to alphanumeric

Ahh je comprend. Yeah I recently realized that it wasn't a supported value and brought it up to the search ui team. They had no idea and had been using automatic for a long time. They decided to keep it as a way to explicitly say "not specified". This change makes sense then but we might as well remove any mention of 'automatic' from the JSDoc then.

The other possible values for sortCriteria should work as well though. Changing the default value doesn't feel like a real fix given users that explicitly set it to something else would still have the same issue.

The problem is that we were sending: automatic as the sortCriteria which is not an actually real value for the sortCriterias.
And the search API has a little bit of a weird default value for facet sort:

By default:
When isFieldExpanded is false in the facet request, and moreValuesAvailable is true in the corresponding facet response, use score
Otherwise, use alphanumeric.

So by sending a value that doesn't exist, effectively when pressing show more, it would actually change our sorting criteria from score to alphanumeric

Ahh je comprend. Yeah I recently realized that it wasn't a supported value and brought it up to the search ui team. They had no idea and had been using automatic for a long time. They decided to keep it as a way to explicitly say "not specified". This change makes sense then but we might as well remove any mention of 'automatic' from the JSDoc while we're at it.

And setting sortCriteria to alphanumeric would also trigger untracked change of content in some scenarios. It seems we still to use aria-live utility to announce that facetValues are change. Like the example below:


Julia Client REPL not working[BUG]

When I try to use julia-client in Atom this error pops up in the REPL console.
At line:1 char:159
+ ... 657 -jlpath "julia" -jlargs --depwarn=yes,-O3,--color=yes,-i,,"`"C:\U ...
+                                                                  ~
Missing expression after ',' in pipeline element.
At line:1 char:159
+ ... 57 -jlpath "julia" -jlargs --depwarn=yes,-O3,--color=yes,-i,,"`"C:\Us ...
+                                                                 ~
Missing argument in parameter list.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : MissingExpression

It used to work fine until recently.

Can you give the debug info from

?

# Atom:
Version: 1.40.1
Dev Mode: false
Official Release: true
{
  "http_parser": "2.8.0",
  "node": "10.2.0",
  "v8": "6.6.346.32",
  "uv": "1.20.3",
  "zlib": "1.2.11",
  "ares": "1.14.0",
  "modules": "64",
  "nghttp2": "1.29.0",
  "napi": "3",
  "openssl": "1.1.0h",
  "electron": "3.1.10",
  "chrome": "66.0.3359.181"
}
# julia-client:
Version: 0.9.4
Config:
{
  "firstBoot": false,
  "juliaOptions": {
    "bootMode": "Basic",
    "startupArguments": [
      ""
    ]
  },
  "uiOptions": {
    "docsDisplayMode": "inline",
    "enableMenu": true,
    "layouts": {
      "defaultPanes": {
        "documentation": false
      },
      "openDefaultPanesOnStartUp": false
    }
  }
}

# ink:
Version: 0.10.12
Config:
undefined

# uber-juno:
Version: 0.2.0
Config:
{
  "disable": true
}

# language-julia:
Version: 0.19.1
Config:
undefined

# language-weave:not installed

# indent-detective:not installed

Could not connect to Julia.

I think you have a single space in julia-client > Settings > Julia Options > Additional Julia Startup Arguments. Make sure to clear that and you should be good to go.

It was already empty. I tried to use that option to override the automatic startup commands but still use the same default ones (ie: i wrote the default commands there) and it worked.
I'm not sure why but i think the default startup commands for my installed julia-client had an empty command argument in it that was causing problems.

Can you try putting e.g. -i in there, just to be sure?

That's what I did. It only has -i there now, and it works fine.
So more likely than the default settings being the root cause of the bug I think its my computer not recognizing the -O or --depwarn commands.

https://github.com/JunoLab/atom-julia-client/commit/f1b6c516e06b91ebcfa6f75d73918e36c3ea3f7b should help with this.


Publish current code to the Puppet Forge

As told in #19, preferred method to install a puppet module is through the Puppet Forge.  Current version at the Forge is 0.4.1 from Jul 19th 2015 which suffers from known bugs.
Please publish your most current stable version to the Forge.

0.4.2 has been released to the Forge.

Thanks a lot!
I still having problems, though.  Since they are more focused with #19 scope, I'll comment them there (basically, I'm stuck with version 0.1.1 of your module).  Please see there and consider reopening that issue.


Using translate3d makes the font blurry on Windows machines

We have a couple of Windows users, running the latest Chrome, reporting a weird font issue: when font size is increased, the font is rendered blurry and becomes a bit harder to read.
Turns out that the CSS property translate3d is causing this. The use of translate3d triggers hardware acceleration and I cannot exactly say who to blame for this. But let me ask you first: why are you using translate3d here at all? And have you figured a workaround for Windows machines yet?

Furthermore I see that those rows with .public_fixedDataTableRow_highlighted are looking good. The font in these highlighted rows is crisp and not blurry.

Also when you add one pixel to the translate3d(0px,27px,0px); to translate3d(0px,28px,0px); then the behavior gets inverted, all odd rows are crisp and the even ones are blurry.

@binarykitchen thanks for bringing this up! Do you think you could attach a screenshot of the issue? I have been so far unable to reproduce it on my end.
This may be because of the behavior of translate3d, and I'm guessing that it might have something to do with the setting of a width/height with a fractional value (like a percentage).
Translate3d is used because it triggers hardware acceleration in order to maximize performant scrolling, by giving us explicit control on the location of the elements within the viewport.

Here is a screenshot:

Yes, I suspect fractional pixels too. But the issue happens on Windows machines only.
Do you think you could add an option to disable hardware acceleration? Or try to reproduce this on a Windows machine at least.

I'm getting the same issue in Ubuntu Linux with Chrome. Text is clear in FireFox

For me this was caused by a non integer value for headerHeight
headerHeight={28.5}
Changing this to
headerHeight={28}
Fixed the issue in Chrome

that I already know and doesn't help when the user is increasing/decreasing the font size in the browser

I'm seeing this in Chrome on Linux, in the resizable columns example.  I assume that if the JS were rounding the translation offsets this problem would go away


makes game lag

its like im playing on a slideshow

dawg its your pc

put water on your computer it should help frs

thank you for the help!! :D


Stream command error: option 'format=can' is invalid

When I tried to create stream with "can" format it gives me error.
`{
"sql": "CREATE STREAM canDemo () WITH (TYPE="can" , FORMAT="can", SHARED="TRUE", SCHEMAID="dbc")"
}`
Stream command error: option 'format=can' is invalid
Environment:

eKuiper version (e.g. 1.3.0):
Hardware configuration (e.g. lscpu):
OS (e.g. cat /etc/os-release):
Others:

What happened and what you expected to happen:
How to reproduce it (as minimally and precisely as possible):
Anything else we need to know?:

Dear @maulik9898 ,  the CAN source is not open source yet, it is currently a commercial plugin provided by EMQ company. I can help to connect if you need commercial support. Thanks.

Which commercial product is this part of .?

Can you contact me by email<EMAIL_ADDRESS>or slack? Thanks.

Close as no response.


autoCloseDelay seem not work

Hello,
I'm using latest version (2.5.12) with this configuration, but the Garage when opened not auto close after 10 seconds. What I'm doing wrong?
      {
          "name":"Garage",
          "type":"garage-door-opener",
          "autoCloseDelay ":10,
          "data":{
            "open":"b1411c000b130b0c160c16170b170b0c160c160c16170a0c16170b0c150001ea000000000000000000000000",
            "close":"b1211c000b130b0c160c16170b170b0c160c160c16170a0c16170b0c150001ea000000000000000000000000",
            "lock":"",
            "unlock":""
          }
        },

Can you upgrade to 2.5.13 and send through relevant logs please

Hello,
I'm upgraded using:
pi@homebridge:~ $ sudo npm install -g --unsafe-perm homebridge-broadlink-rm

<EMAIL_ADDRESS>
and still no auto close: I'm using:
{
"name":"Garage",
"type":"garage-door-opener",
"openCloseDuration":5,
"autoCloseDelay ":5,
"data":{
"open":"b1411c000b130b0c160c16170b170b0c160c160c16170a0c16170b0c150001ea000000000000000000000$
"close":"b1211c000b130b0c160c16170b170b0c160c160c16170a0c16170b0c150001ea00000000000000000000$
"lock":"",
"unlock":""
}
},

Sorry, this is the log:
[6/30/2017, 3:18:37 PM] [Broadlink RM] Garage setTargetDoorState: 1
[6/30/2017, 3:18:37 PM] [Broadlink RM] Garage sendHex (<IP_ADDRESS>; 34:ea:34:f4:53:15)
[6/30/2017, 3:18:42 PM] [Broadlink RM] Garage setCurrentDoorState: closed
[6/30/2017, 3:18:42 PM] [Broadlink RM] Garage setCurrentDoorState: 1
[6/30/2017, 3:18:43 PM] [Broadlink RM] Garage setTargetDoorState: 0
[6/30/2017, 3:18:43 PM] [Broadlink RM] Garage sendHex (<IP_ADDRESS>; 34:ea:34:f4:53:15)
[6/30/2017, 3:18:48 PM] [Broadlink RM] Garage setCurrentDoorState: open
[6/30/2017, 3:18:48 PM] [Broadlink RM] Garage setCurrentDoorState: 0

some issue here. auto close does not work

Fixed in 2.5.14

pi@homebridge:~ $ sudo npm install -g --unsafe-perm homebridge-broadlink-rm

<EMAIL_ADDRESS>updated 1 package in 3.786s

Still not working for me :-|
Maybe I'm using wrong something?

New logs please (I updated some of the logging)

After updating, still not work: I've tried to  to update both:
sudo npm install -g --unsafe-perm homebridge-broadlink-rm
and
sudo npm update -g homebridge-broadlink-rm
In log I've only this:
[7/9/2017, 6:46:52 AM] [Broadlink RM] Garage setTargetDoorState: 1
[7/9/2017, 6:46:52 AM] [Broadlink RM] Garage sendHex (<IP_ADDRESS>; 34:ea:34:f4:53:15)
[7/9/2017, 6:46:57 AM] [Broadlink RM] Garage setCurrentDoorState: closed
[7/9/2017, 6:46:57 AM] [Broadlink RM] Garage setCurrentDoorState: 1
[7/9/2017, 6:46:59 AM] [Broadlink RM] Garage setTargetDoorState: 0
[7/9/2017, 6:46:59 AM] [Broadlink RM] Garage sendHex (<IP_ADDRESS>; 34:ea:34:f4:53:15)
[7/9/2017, 6:47:04 AM] [Broadlink RM] Garage setCurrentDoorState: open
[7/9/2017, 6:47:04 AM] [Broadlink RM] Garage setCurrentDoorState: 0

Maybe the problem is that after opening the CurrestDoorState remain 0 ?

You have a space at the end of autoCloseDelay in your config
"autoCloseDelay ":5,

No, I'm using Sublime Text with rsub:
No space after autoCloseDelay


Secure communication with Clio API server

Hello,
Does Clio API server have an opportunity to configure secure communication via wss on port 51233 ? If yes, what additional configurations should be applied to the config file ?
And the second question is related to the etl_sources configuration. As I understand, Clio API server can connect to the rippled node only via public unsecured web socket (ws) port ?

Hi @PaulMoney,
As far as i know you can make clio create a wss server by configuring ssl_cert_file and ssl_key_file in clio's config.
And clio certainly can use both ws and wss when talking to rippled (etl_sources). In fact clio automatically detects which connection is available/configured on the rippled server being accessed. There is nothing you need to configure in clio's config file to support rippled over wss.
@cjcobb23 correct me if i'm wrong please.
Let me know if you run into problems configuring wss.

Hi @godexsoft
Where should I place ssl_cert_file and ssl_key_file in clio's config ? Under server object or in some other place ?
And the second question is related to file permission. As my key and the certificate are in root protected folders (i.e. /etc/ssl/private/server.key, /etc/ssl/certs/server.crt), do I need to change the ownership these folders to clio user ?

Where should I place ssl_cert_file and ssl_key_file in clio's config ? Under server object or in some other place ?
If i read the code correctly, those two are specified in the top level JSON of the configuration file like so:

{
    "server":{
        "ip": "<IP_ADDRESS>",
        "port": 51233
    },
    "ssl_cert_file" : "/full/path/to/cert.file",
    "ssl_key_file" : "/full/path/to/key.file"
}

This is actually a bit surprising. I would expect them to be part of the server configuration object too. This may change in the future.

And the second question is related to file permission. As my key and the certificate are in root protected folders (i.e. /etc/ssl/private/server.key, /etc/ssl/certs/server.crt), do I need to change the ownership these folders to clio user ?
It's up to you how you do this. You can copy the two files as root somewhere accessible by the user you run clio from and then sudo chown them to your user. You can directly change their permissions so it's readable by your user. Or you can even run clio as root - but this is strongly discouraged.

Hope this helps :+1:

"ssl_cert_file" : "ssl_key_file" :  worked perfectly. Thanks for help and the response.

"ssl_cert_file", "ssl_key_file" :  worked perfectly. Thanks for help and the response.

Awesome. Glad it worked out. We will update the example config and docs to cover these parameters.
Thanks for flagging it 👍


Implement Email Notification Service for Completed Donations

Set up an email notification service that sends confirmation emails to both the donor and the non-profit organization once a donation is successfully completed. This service should use credentials stored in environment variables and expose an endpoint that the frontend can call upon donation completion.
Acceptance Criteria:

Set up an email service.
Create a function that sends an email to the donor and another to the non-profit organization with relevant details (e.g., donor's name, donation amount, date, and non-profit name).
Store the email service credentials (API keys, email addresses) in environment variables for security.
Create an endpoint (/api/send-email) that the frontend can call once a donation is completed, triggering the email service.
Ensure that error handling is implemented, and failure notifications are logged.

@phyleria Please assign me to this

Sure, done ✅


Documentation and Issues links not working.

The documentation and Issue links in the deployed version of Odyssey don't work. They are missing href but trigger the error below.

There was no reason for these to be sending any message to the host, they just need to open a link. I replaced and removed the components for these buttons.


separate cycleway from path

Seems to me that cycleways are part of 'path':
road_kind_path = set(('footpath', 'track', 'footway', 'steps', 'pedestrian',
'path', 'cycleway'))
For my purposes it would be nice to be able to separate 'walking' paths from cycle paths.

The original highway tags should still be available in the highway property.
(You are right that kind is collapsing that as you describe, but the original data is still available to you.)

Great, found it!


Add ability to reconnect to a different kernel

When using :IPython --existing I cannot find a way to reconnect to a different kernel afterwards.

This should work now.


Support for TemplatedEmail

Hello. Would it be possible to also support extending from TemplatedEmail as well or instead of the default Email class?
It's very common to use Twig templates for email content and currently if we do new AttachmentEmail() we immediately lose all the Twig integration that Symfony provides.
Thanks!

That's a good idea. I will take a look at it!

It will be included in the next verion. Either this week or next week.

@benr77 Just released a new version, you can now use the TemplatedAttachmentEmail class for this.

/close

Great stuff thank you for your efforts!


Support 'best match' sort option for Pubmed search

Default sort option for Entrez.esearch is 'Most Recent', or it may just sort by PMID descending. This causes (1) a lot of papers to be missing in our database, and (2) our analysis to work not well due to limited amount of citations within the recent papers.
I suggest implementing 'Best Match' sort option, it should correspond to the 'sort=relevance' in the API call (does not reproduce the results from Pubmed page for me, but still brings some diversity):
https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=brain+computer+interface&retmax=5&sort=relevance

Fixed in d3912b5.


Wine Style

This ticket will start with a definition of Wine Style, followed by a list of subClasses of Wine Style, and then followed by definitions of each Wine Style.  Additional tickets will breakout more subClasses of a specific wine style with their own definitions.
Wine Style:  Wine style is a set of common characteristics for wines due to the nature of how the wine is processed.  Wine style is determined by these types of factors: use of White Grapes or Red Grapes, duration of time the pressed grape is in contact with the grape skin, degree of dissolved carbon dioxide that creates bubbles when the wine is opened by the consumer, the addition or lowering the amount of alcohol in the wine from the use of a separate process to effect the percent alcohol in the wine.
The major subclasses of wine style:
Red Wine
White Wine
Rose Wine
Orange Wine
Sparkling Wine
Fortified Wine
Lowered Alcohol Wine
with a subClass of -- Non-Alcoholic Wine
Red Wine is made from red grapes.  After the red grapes are pressed, their skins stay in contact with the grape juice for a period of approximately 1 week to 1 month, and the wine gets a red to deep red purple from the pigments in the grape skin.  Red wine generally contain several antioxidants.  These include resveratol, catechin, epicatechin, and proathocyanins.  However, the level of resveratrol in red wine is rather low, so if seeking certain health benefits of consuming resveratrol, then using as a dietary supplement would be more effective.
White Wine is made with either red or white grapes.  The grapes are crushed and their skins are removed immediately.  Because the grape skins do not stay in contact with the grape juice and do not participate in the fermentation process, the grape skin color is not a factor for producing white wine.  The wine acquires a neutral green, yellow or light grey hue, and contains minimal tannins.
Rose Wine is made from red grapes.  After the grapes are crushed, the grape skins stay in contact with the grape juice a short time up to a few hours before pressing, giving the wine a pink, salmon, copper to very light red color. This process is called maceration.  In some rare cases, a rose wine is made from blending white wine with the addition of a level of red wine to produce the desired color.  This method is prohibited for PDO wines in Europe, so not a common practice for quality wines.  A notable exception that the rules of making Rose Champagne do allow the the addition of a small amount of red wine in the dosage process prior to fermentation, but the primary method is contact with the grape skin.  Another process is the Saignee process where, in the making of a red wine in the maceration process, some of the juice is removed called "bleeding", this juice can be vinified as a rose wine.  Although a common purpose is to use the grape juice that remains after bleeding, to continue vinifying to create a more concentrated red wine.
Orange Wine is made from white grapes where the grape skins are not removed, in contrast to where skins are quickly removed in white wine production.  The white grape skins stay in contact with the juice for days or even months.  This style of wine has an amber or orange color that the wine receives due to the color pigments contained in white grape skins.
Sparkling Wine is a wine with a significant level of dissolved carbon dioxide gas (CO2).  The carbon dioxide content may be the result of natural secondary fermentation in a bottle, or in a large tank designed to withstand the pressures involved (Charmat process).  Some cheaper sparkling wines are the result from injecting carbon dioxide gas into the wine.  To make sparkling wine as a result of fermentation, a base wine is created with the first fermentation, then a certain amount of sugar is added that induces carbonation and reduces acidity.  This mixture is processed with a secondary fermentation where the yeast consumes sugar and creates a by-product of alcohol and carbon dioxide.  The resulting dead yeast is eventually removed.
Fully sparkling wines have pressure from the CO2 gas of 5 to 6 atmospheres of pressure, but technically it is any wine over 3 atmospheres of pressure.  Semi-sparkling wines are defined as having less than 3 atmospheres of pressure, most commonly between 1 and 2.5 atmospheres of pressure.  Semi-sparkling wine is made with a similar process as fully sparkling wine, but little added sugar is introduced.  The lesser the amount of sugar, the smaller the bubbles and pressures, resulting in an effervescent or fizzy effect.
Fortified wine to which a distilled spirit, usually brandy, has been added.  There are several styles of fortified wine to include: port, sherry, marsala, commandaria, and the aromatized wine - Vermouth.  When the additional alcohol is added to the wine before the fermentation process is complete, the added alcohol kills the yeast, stops further fermentation, and leaves residual sugar behind.  The earlier in the fermentation process that the alcohol is added, the wine is sweeter and normally contains a higher percent of alcohol.  If fermentation is allowed to run to completion, the resulting wine will be low in sugar and be considered as a dry wine.  The original use of fortification was to preserve the wine, as casks of wine were prone to turn to vinegar during long sea voyages.
Lowered Alcohol Wine is a wine made with an additional process to remove a portion to most of the alcohol from the fermented juice.  A lowered alcohol wine process takes a wine that is normally 12-14 percent alcohol to a range of 6-11% alcohol.  A Lowered Alcohol wine style is not a low alcohol percent wine that results from traditional wine making processes such as: intentional duration of fermentation process, natural degree of sugar in the grape juice, added sugar, sugar level influenced by the level of grape maturation at harvest, or factors from the natural terroir or climates that the grapes were grown.
Physical processing methods to reduce alcohol content in wine include: membrane processes, distillation process, or a combination of these processes.  Membrane processes include: reverse osmosis, osmotic distillation, and nanofiltration.  Distillation treatments include: vacumn distillation, vacumn rectification, spinning cone column processing, and common distillation.   These physical processing methods can also be used in wine making to affect other wine ingredients not related to alcohol, and also used in commercial processing of other types of liquids.  See reference:  https://www.intechopen.com/books/advances-in-grape-and-wine-biotechnology/alcohol-reduction-by-physical-methods
Non-alcoholic wine is a wine where the alcohol content is lowered to 0.5% alcohol or lower.  Official percent alcohol to be classified as a non-alcoholic wine differs in various countries.

It looks like we can craft these as wine products with certain observable (vision, taste) qualities on the one hand, and a processing story that leads to such qualities on the other.  Ideally we have minimalist definitions that say "X wine style": "A wine style which Y" so that the logical axiomatization of the english definition looks like it might be enough for a computer to go on.  But of course the challenge is to figure out what kind of minimal relations will do the trick to differentiate each of the wine styles logically, or if that is even possible.  At any rate, lets see how much of the descriptive/definitional content can be moved out to a comment field (rdfs:comment).
Ideally each definition has an authoritative "definition source" document to back it up somewhere on the net, if you have that handy.
I'm thinking we could set up a google sheet to work on each term's label, definition, etc. fields?

The google sheet sounds good.  A lot is Wikipedia, but as you know the content depends on various content contributors, so I will try to look up the other web sites that were needed to fill in the information to make each definition more consistent.
Now enjoying a glass of 2020 Kim Crawford Illuminate Sauvignon Blanc from the Marlborough region of New Zealand. It is a full vinified wine processed with a dual spinning cone process to bring to 7% ABV.  I am at risk of becoming a lowered alcohol wine snob.  hahaha!
Diane

On Jun 19, 2021, at 3:36 PM, Damion Dooley @.***> wrote:

It looks like we can craft these as wine products with certain observable (vision, taste) qualities on the one hand, and a processing story that leads to such qualities on the other. Ideally we have minimalist definitions that say "X wine style": "A wine style which Y" so that the logical axiomatization of the english definition looks like it might be enough for a computer to go on. But of course the challenge is to figure out what kind of minimal relations will do the trick to differentiate each of the wine styles logically, or if that is even possible. At any rate, lets see how much of the descriptive/definitional content can be moved out to a comment field (rdfs:comment).
Ideally each definition has an authoritative "definition source" document to back it up somewhere on the net, if you have that handy.
I'm thinking we could set up a google sheet to work on each term's label, definition, etc. fields?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.

I think it best to have someone else document citations of authoritative sources.  Mine were mostly Wikipedia, but where differing levels, conflicts, and detail existed between the various definitions, I searched other sources that may or may not be considered authoritative.  This can serve as an independent cross-check.
I did use observations of documented instances of various wines for commercial sale, to test various assertions made in the definitions.  I will document this wine instance content to contribute. Thinking these test cases of wine instance data can be loaded to the ontology.  The scope of this FoodOn effort is to not attempt to load all instances of wine.  No way to gather all this information and keep it updated.
This set of wine instances that demonstrate unique combinations of values, can challenge and support various subclasses and properties in the structure of the wine section of the ontology.  This empirical set of instances will help minimize biases and differences of opinions in the ontology structure, and could be an interesting fun set of wine information.  FoodOn could decide to delete this wine instance data if and when appropriate.
Diane

On Jun 19, 2021, at 9:08 PM, Diane @.***> wrote:
The google sheet sounds good.  A lot is Wikipedia, but as you know the content depends on various content contributors, so I will try to look up the other web sites that were needed to fill in the information to make each definition more consistent.
Now enjoying a glass of 2020 Kim Crawford Illuminate Sauvignon Blanc from the Marlborough region of New Zealand. It is a full vinified wine processed with a dual spinning cone process to bring to 7% ABV.  I am at risk of becoming a lowered alcohol wine snob.  hahaha!
Diane

On Jun 19, 2021, at 3:36 PM, Damion Dooley @.***> wrote:

It looks like we can craft these as wine products with certain observable (vision, taste) qualities on the one hand, and a processing story that leads to such qualities on the other. Ideally we have minimalist definitions that say "X wine style": "A wine style which Y" so that the logical axiomatization of the english definition looks like it might be enough for a computer to go on. But of course the challenge is to figure out what kind of minimal relations will do the trick to differentiate each of the wine styles logically, or if that is even possible. At any rate, lets see how much of the descriptive/definitional content can be moved out to a comment field (rdfs:comment).
Ideally each definition has an authoritative "definition source" document to back it up somewhere on the net, if you have that handy.
I'm thinking we could set up a google sheet to work on each term's label, definition, etc. fields?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.

Some sources for the concept Wine Style:
https://en.wikipedia.org/wiki/French_wine
All common styles of wine – red, rosé, white (dry, semi-sweet and sweet), sparkling and fortified – are produced in France.
https://en.wikipedia.org/wiki/Orange_wine
Orange wine, also known as skin-contact white wine, skin-fermented white wine, or amber wine,[1] is a type of wine made from white wine grapes where the grape skins are not removed, as in typical white wine production, and stay in contact with the juice for days or even months
Wine styles (same wikipedia link)
Red wine is made with red grapes. After the red grapes are crushed, their skins stay in contact for a period of 1 week to 1 month, and the wine gets a red or deep red color. Rosé, at least when rosé wine is the primary product, is produced with the skin contact method, using red grapes. After the grapes are crushed, their skins only stay in contact a few hours before pressing, but in that short period they give the wine the characteristic light pink hue.
White wine is made either with red or white grapes. The grapes are pressed and their skins are removed immediately. Because the grape skins do not "participate" in the fermentation, their color does not matter and the wine acquires a neutral, green to slightly yellow hue. Orange wine is made with white grapes. After they are crushed, their skins stay in contact for 1 month to 6 months, and the wine acquires an amber, orange color.
Logic from various sources:  if fortified wine is the addition of alcohol from a process not from the natural fermentation process, then lowered alcohol wine is similar but with an intentional physical process outside of natural fermentation to lower the alcohol content partially or almost (by varying country legal standards) to an alcohol percent that can be defined as non-alcoholic wine.
https://www.decanter.com/decanter-best/top-20-low-alcohol-wines-75005/
The real challenge of making low- and no-alcohol wine is about how to remove the alcohol from a fermented juice (which can typically be 13%-14% alcohol by volume) without impairing mouthfeel, balance, typicity and quality.
Some of the wines below have been deliberately made as lower-alcohol options:
https://www.liquor.com/best-non-alcoholic-wines-5088704
Thierry Cowez, oenologist and dealcoholized winemaker for MIS Services in Belgium
According to Cowez, true nonalcoholic / dealcoholized wine is produced from wine that has been fermented with yeasts and has undergone a vinification process, then goes through an additional process of having the alcohol removed. All other fruit-based products marketed as nonalcoholic wine are simply juice.
Reference for physical processes to lower the alcohol in wine is cited above.
https://www.intechopen.com/books/advances-in-grape-and-wine-biotechnology/alcohol-reduction-by-physical-methods
Non-alcoholic wine is a wine where the alcohol content is lowered to 0.5% alcohol or lower. Official percent alcohol to be classified as a non-alcoholic wine differs in various countries.

Proposed:  discuss where in the ontology does Wine Style fit?  -- what are the alternatives to discuss?
Since Wine Style has meanings for the types of processing that a Grape undergoes to produce a type of wine,
Recommend Wine Style be a subClass of:   food treatment process
The major subclasses of wine style:
Red Wine
White Wine
Rose Wine
Orange Wine
Sparkling Wine  :  with a subClass: Champagne
Fortified Wine
Lowered Alcohol Wine:   with a subClass of -- Non-Alcoholic Wine
Then the concept Wine, will have an association to a Wine Style

New proposed question for where Wine Style belongs in the ontology:
The nature of the definition and ontology construct to focus the meaning as: the common characteristics (in theory a group of data properties and values) of the wine for each wine style.
The processing for how to achieve each wine style is only a method to achieve the set of wine style characteristics, and is not the essence of the meaning.
Propose:  add two Wine Styles:  Dry Wine, Sweet Wine.   This represents a broad characteristic of the sweetness of a Wine.  The existing wine styles in the list are broad characterizations of the color/flavor, bubbles when opened, level of alcohol.
Observation: a Wine has one or more Wine Styles.   Example: a Sparkling Sweet Red Wine.  Wine instance "Roscato Rosso Dolce"
Question for discussion:  How to best model Wine Style in the ontology?

I'm looking forward to diving into this! I have deadlines up to tomorrow morning, so can give it my full attention in the afternoon.  @mateolan may also have things to add!

We need an actual conversation. Wine styles originate based on region,
processing method, organoleptic characteristics, among others...I think it
best not to haul off and just start making things without an informed
discussion first. Shall we arrange for a video call sometime next week?
On Wed, Jul 7, 2021 at 7:34 AM Damion Dooley @.***>
wrote:

I'm looking forward to diving into this! I have deadlines up to tomorrow
morning, so can give it my full attention in the afternoon. @mateolan
https://github.com/mateolan may also have things to add!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/FoodOntology/foodon/issues/146#issuecomment-875657273,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAMZGI7V2ZLR7XTKFGQPM6TTWRQWDANCNFSM465VSIMQ
.

Based on Matthew's comment, we do need an additional subClass to Wine Style of "Regional Wine Style".   Regional Wine Style can hold the instances of Regional Wine Style rules/constraints to conform with the regional designation.
One instance is Champange.  It can be a white sparkling wine or a rose sparkling wine (my first inclination was as a subclass of Sparkling wine, but that is not sufficient).  Most common grape varieties used are: Chardonnay, Pinot Noir, and Pinot Meunier, and can be a blend of all three.  Other permitted varieties are: Arbane, Petit Meslier, Pinot Blanc, and Pinot Gris.  A "blanc de blancs" is made from 100% Chardonnay, and a "blanc de noirs" are made solely with the red grapes Pinot Noir, Pinot Meunier, or a mix of the two.
Other instances of Regional Wine Style to include:
Bordeaux
Burgundy White
Burgundy Red
Chateauneuf-du-Pape
----and many others
---- are the below just geography plus grape variety, or do we call as a Wine Style? (? how far to include combination of region and single grape varietal?)
----?is there a wine style that is named for a wine with a single varietal (ex. a Cabernet Sauvignon?)  -- region and wine color?
Chardonnay
Californian Chardonnay
Burgundy Chardonnay
Oregon Pinot Noir
Chilean Carmenere
Northern Italy White
Red Tuscan  (is this restricted to Italy?)
---many more combinations here....

May be interesting to use the set of Wine issues to bring up thought provoking questions, information and proposals to bring into the hack-a-thon event.   This content can be used as the input to many conversations and focused group decisions.

Thinking that Wine Style as impacted by Wine Region would not have every combination of Wine Region / Wine variety(cultivar).   A regional wine style may only exist where there are rules for the grapes used and production techniques that are unique per the region.
Then for this,  California Chardonnay, Oregon Willamette Valley Pinot Noir, Chilean Carmenere would not be wine styles.  Separate object properties of Grape Wine to variety/cultivar and to Geography (Wine Region, city, sub-country, country ...)
But then still need where to place:  Champange (always a sparking wine, can be white, red, or rose, can use Chardonnay, Pinot Noir, Pinot Mineure), Burgundy, Bordeaux,  Chateauneuf-du-Pape

could be that Champange, Burgundy, Bordeaux, Chateauneuf-du-Pape would be associated with an Appellation.  this is where the various rules for that appellation would exist.   Geography, grape variety/cultivar, production method...

I think you mean Champagne…yes, definitively it is a sparkling wine linked to an Appellation, but Vladimir Poutine doesn’t mind this kind of “detail” …
This is to illustrate that the rules can be changed by regional politics…
Cheers !
De : Diane Alexander @.>
Envoyé : lundi 16 août 2021 19:23
À : FoodOntology/foodon @.>
Cc : Subscribed @.***>
Objet : Re: [FoodOntology/foodon] Wine Style (#146)
could be that Champange, Burgundy, Bordeaux, Chateauneuf-du-Pape would be associated with an Appellation. this is where the various rules for that appellation would exist. Geography, grape variety/cultivar, production method...
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHubhttps://github.com/FoodOntology/foodon/issues/146#issuecomment-899682422, or unsubscribehttps://github.com/notifications/unsubscribe-auth/APMVYEGPKKGB3PIN5YXWVD3T5FCN3ANCNFSM465VSIMQ.
Triage notifications on the go with GitHub Mobile for iOShttps://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Androidhttps://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email.

Hmmn, Diane, I like your thinking but I think I would argue that
oaky California
Chardonnay has actually become a wine style of its own (as a native
Californian, I am NOT proud of this)--whether there are rules or not, a
consumer has an expectation of what is in the bottle.
From an ontology modeling point of view, I think that we should start with
a list of classes of information/variables that may comprise any
existing but also potentially new wine styles. For instance, I have friends
in Napa who regularly "revive" once popular, but recently forgotten
cultivars, grow them in alternate geographies with varied climates, soil
types, and irrigation/trellising techniques, then of course process them in
alternate ways once they are harvested. These may reflect old styles, but
may also become new ones as these variables are mixed and matched.  Of
course, even harvesting timing and technique can play a role in wine style
(e.g. ice wine). My point is that geography is sometimes involved,
sometimes not--same with the other variables.
Thus I believe that definitive guide to wine styles will necessarily
include placeholders for (at least):

grape variety/cultivar
viticultural (and harvest) techniques,
post-harvest techniques,
enological techniques,
geographic considerations including appellation, but perhaps also
microclimate, soil, etc,
historico-cultural and legal (also include appellation here)
terminologies,
sensory and organoleptic terms

Did I miss anything?
Best,
~Matthew
PS: maweber-bi --you didn't sign, and your name isn't on the email from the
list--so I don't know your name, but you make a good point.
On Mon, Aug 16, 2021 at 11:08 PM maweber-bia @.***>
wrote:

I think you mean Champagne…yes, definitively it is a sparkling wine linked
to an Appellation, but Vladimir Poutine doesn’t mind this kind of “detail”
…
This is to illustrate that the rules can be changed by regional politics…
Cheers !
De : Diane Alexander @.>
Envoyé : lundi 16 août 2021 19:23
À : FoodOntology/foodon @.>
Cc : Subscribed @.***>
Objet : Re: [FoodOntology/foodon] Wine Style (#146)
could be that Champange, Burgundy, Bordeaux, Chateauneuf-du-Pape would be
associated with an Appellation. this is where the various rules for that
appellation would exist. Geography, grape variety/cultivar, production
method...
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub<
https://github.com/FoodOntology/foodon/issues/146#issuecomment-899682422>,
or unsubscribe<
https://github.com/notifications/unsubscribe-auth/APMVYEGPKKGB3PIN5YXWVD3T5FCN3ANCNFSM465VSIMQ>.
Triage notifications on the go with GitHub Mobile for iOS<
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
or Android<
https://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email>.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/FoodOntology/foodon/issues/146#issuecomment-900019250,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAMZGI5QYN2JS5NJPU5XFRDT5H4EFANCNFSM465VSIMQ
.

In my view,  to use the concept of Appellation to provide  terms such as California Wine  as an instance of AVA
Taste and texture have many factors that are impacting.   For the purpose of this model, proposing to use these sub-classes for Wine Style:    (a specific Wine can have more than one Wine Style)
the wine styles are grouping of characteristics such as color, bubbles, alcohol, sugar
Wine Style:
Red Wine
White Wine
Rose Wine
Orange Wine
Sparkling Wine
Effervescent Wine
Lowered Alcohol Wine
Non-alcoholic Wine
Fortified Wine
Sweet Wine
Ice Wine
Dry Wine
Champange would not be a subClass of   Sparkling Wine  in this model,  it would have the multi-factor rules as expressed by the rules of that Appellation  (geography, type of grapes, bubble size)
In this view;  Wine  is then a  Fermented Beverage, ....  but not necessarily an Alcoholic Beverage
Without intervention, Wine  is  "Still Wine"   and "Alcoholic"  so this view does not create Wine Styles for these.

Orange Wines from Slovenia
https://the-slovenia.com/gastronomy/wine/top-slovenian-wine-orange-wine/
Orange wines in Slovenia are mostly grown in the Primorska wine region. Orange is the “fourth” color of wine, however, don’t mistake the orange wine with rosé. Orange wines are also not made of oranges, which is a common misconception when it comes to this variety of top Slovenian wine.
Orange wines in Slovenia are actually made through a special process. Orange wines in Slovenia are a mixture of white wine made through a process that is intended for red wines. Interesting, right? In Slovenia, orange winemakers use this old process of producing white wines through the process for red wines, which has later spread across the world and gained much popularity among wine experts and wine enthusiasts alike.
The main feature of orange wine in Slovenia is maceration or prolonged contact with grape skins. Winemakers in Slovenia decide on different maceration times for the orange wine – depending on the type of grape as well as the wine production philosophy. Thus, maceration time for orange wines in Slovenia can be either short (a few days) or very long (up to half a year).
The term “orange wine” is relatively new in the wine world. When traveling around the world you might come across another name for orange wine, which is amber wine due to its color. The name orange wine was no made up in Slovenia, the name orange wine was given to this top Slovenian wine by an English sommelier.
Orange wines are mostly produced in the wine regions of Slovenia, Italy, and Croatia. Wine producers in the mentioned countries all use the old process, which results in orange wine. However, the origin of Orange wine is in Georgia. There the production of orange wines represents a long tradition. The orange wine production goes on in so-called kvevris – clay amphoras buried in soil, where the orange wine is kept in contact with grape skins for a long time after fermentation.


Length of edges

Hello,
how I can resize the length of edges? Graphs don't enter into the web page

There is no option to do it. It does not fit the web page?

Perhaps there is an issue. because if there are four or five elements it should not be the case. Problem is the length of edges is actually calculated for directed graph. For others you can actually set the levels


Feature/fix routing extension mods cesm driver

[X] closes #755
[ ] ~tests passed~
[ ] ~new tests added~
[ ] ~science test figures~
[X] ran uncrustify prior to final commit
[ ] ~ReleaseNotes entry~

This should make it into 5.1. @dgergel help can you get this wrapped up?


Task - DWC importer - add TaxonNameId

As a user, I would like to have a TW specific option for DWC importer. Instead of providing complete classification of a taxon, I would like to have a column with TaxonNameId, so that I can specifically reference a particular existing taxon in the database. If the field is provided, the other nomenclature related fields should be ignored.

I think we need a namespace here first, this follows, slightly, the "match a Predicate" patterns we use, but it's different.  Not sure but maybe: 'TW:TaxonDetermination:otu_id' makes the most sense for otu_id, which I feel should be preferred over the taxon_name_id approach.
Alternately you could provide TW:TaxonDetermination:taxon_name_id, however in this mode, we'd have to use some logic:

Fail the row if there are > 1 OTUs with the taxon_name_id
Create an Otu with the ID if it doesn't exist

Thoughts?

Either way will work. Especially if we update the name match service, so I can upload a list of names, and find matching TaxonNames, OTUs and ids. OTU_id should give exact match. In case of types, we may still need taxon_name_id

Type assigment should be by TW:TypeMaterial:taxon_name_id


[Suggestion] Generic mob names & special boss bars

If possible, add an option to use generic names to eldritch mobs, such as an elite mob only show as "Elite Zombie" instead of "Burning Blinding Cloaked Zombie" (or "Ultra Zombie" and "Eldritch Zombie" for the other categories)
Another suggestion that could help to determine the type of an eldritch mob can be by using custom colors and/or symbols to the nameplate and the boss bars. For example, Yellow for Elite, Red for Ultra, and Purple for Eldritch, and adding a Star or other symbol at the beginning and the end of the mob name (eg: 1 star for Elite, 2 for Ultra and three for Eldritch)
Keep up the great work!

Added in the latest update.


Missing  when using -m32 with x86-x64 clang

If you use -m32 switch then clang cannot find <string> header.
Works with gcc, but fails with clang.

Try adding  -stdlib=libc++ - this will use clang's built-in libc++ standard library instead of GCC's. I'm not sure why this is required, but hopefully you don't need to compare GCC's string implementation.

Thanks, works!

Yup, that works for #include <atomic> with clang -m32 as well.

Does that mean that with -m64, clang is also using gcc's headers instead of its own? Could this affect code-gen vs. what you'd get from a normal install of clang on a desktop?

Yes; it does.
However, a "normal install" of clang, as best I can tell, uses the GCC toolchain's libstdc, at least on Linux. Apple's builds I believe bundle libc++, but it's a separate project and repository for clang and so requires extra building.

Fixed since clang 5


[WIP] bootstrap season1 recap page

@wpmonty I closed this PR.
The code for season 1 recap has been moved to a dedicated repo https://github.com/BanklessDAO/season2.bankless.community and transformed to a simple html/css/css page.
I also created an issue and described what's needed to solve the SSR in order to be able to share link meta tags https://github.com/BanklessDAO/bankless-dao-website/issues/66


Updating swagger-ui to the latest version

As per the suggestion here: swagger-api/swagger-ui#1455.
But latest version hasnt made it any faster, as far as I can tell.
Verified that the UI works as before.

cc @bgrant0607 @vmarmol

LGTM, will need @bgrant0607's LGTM as well though

Assigning to @bgrant0607 for his LGTM

Lgtm


Add various Templates

Add the following templates:

template-daily-planner
template-weekly-planner
template-journal
template-meeting-notes
template-smart-goals
template-good-time-journal

The templates do not show up after installing until you reboot, or disable chroot for xochitl and manually start usr-share-remarkable-templates.mount with systemctl.

The templates do not show up after installing until you reboot, or disable chroot for xochitl and manually start usr-share-remarkable-templates.mount with systemctl.

All of which are unrelated to these template packages themselves. After install, which the bind mount working, do they all show up properly? And do they appear properly when using them?

After installing all of them and rebooting to get them to show, they all show up and work fine. Some notes:

Daily Planner: top left has text, which interferes with the interface and it becomes hard to read. The icon has an extra horizontal line which causes it not to match the look of it.
Good Time Journal: icon has nothing to do with the template
Journal: same issue as Daily Planner
Meeting Notes: same issue as Daily Planner; icon does not really match the layout
Smart Goals: icon looks nothing like it
Weekly Planner: icon dos not match

Aw, it's unfortunate these are hardcoded. I'll add my suggestions for each.


Use uint256 for timestamps

As reported in #517, TokenTimelock uses uint64 for its timestamp state variable.
As I explained elsewhere: uint256 is the only integer size native to the EVM. For all other integer sizes, the Solidity compiler generates extra operations to e.g. truncate on overflow. Because of this, using uint64 doesn't really lead to smaller contracts or less gas costs.
We should be using uint256 for consistency.

is this the reason why timestamp is represented as uint256 in EVM? because it's native?
BTW it seems to me like an overkill for timestamp to be uint256. Do you know why EVM developers took such a decision?

uint256 is the native integer size, so any operations on integer sizes smaller require extra processing at runtime. it's not really a specific timestamp concern. and making it a uint256 simplifies the operations being performed on it


dotnet run doesn't work for net4xx TargetFrameworks on non-windows

The binaries from the build are .exes, which need to be invoked via mono path/to/exe <program_args>, much in the way dotnet mono did. Would it be possible to build this detection in?

I would be willing to contribute this if you like.

I would be willing to contribute this if you like.

Yes!
I am not a  linux  specialist
your view is more professional than me


Support for macOS with Apple Silicon

Sorry for opening an issue for such a supporting problem.
I'm running the tests of this project using pytest on macOS with Apple Silicon, but I got any error saying that only linux-x64 is the only supported platform for now. Will there be any plan to support macOS? Or can I get a guidance on how to add support for such platform?
Thank you in advance.

Hey, thanks for your interest!
multilspy itself supports all the platforms, win, linux and macOS, but it depends on whether the language server is available for your platform or not. Different languages use different language servers, for instance, Java uses Eclipse JDT.LS, Python uses JEDI-language-server, etc. Each of these language server binaries need to be installed from their respective sources, and configuration performed. the directory src/monitors4codegen/multilspy/language_servers organises the code for setting up different language servers.
For multilspy to work for a particular language on a platform, the server needs to be set up for the specific platform. For example, the file src/monitors4codegen/multilspy/language_servers/rust_analyzer/runtime_dependencies.json specifies the url from which the binaries for rust language server can be fetched for different supported platforms. To add a new platform, you can add the url for the binary for your platform by reviewing https://github.com/rust-lang/rust-analyzer/releases/ and making a new entry in the src/monitors4codegen/multilspy/language_servers/rust_analyzer/runtime_dependencies.json file. The runtime_dependencies file is used in the setup_runtime_dependencies method in file src/monitors4codegen/multilspy/language_servers/rust_analyzer/rust_analyzer.py, which downloads and extracts the binary, and returns the path to the executable file within the extracted directory.
The other language server directories are organised in a similar manner, having a json file specifying the url for fetching binaries, and a setup_runtime_dependencies method, to do the setup. Kindly let me know which language you would like support for, and I can help you set it up. The error message you are seeing is being raised by the following line: src/monitors4codegen/multilspy/language_servers/rust_analyzer/rust_analyzer.py#L52-L55, or equivalent line in other language server files, so once the support is added, this line can be removed.

It works! Thank you for your detailed response, it's super helpful.

hi, i'm trying to access support for macOS with Intel silicon, and I did simiar modification with pr#18.
As a result, I can successfully launch multispy, but there is something wrong when I tried to request completions from eclipse-jdtls via multispy.
When I request completions involving cross-module identifiers (e.g. accessing a member field of an object which belongs to other modules), multispy always returns an empty list.
But when I request in-file or in-module identifier completions, it works.
Meanwhile, I also implemented a simple lsp client myself, sending the same requests to it and the client can return appropriate responses; furthermore, I transferred the multispy code to run on linux and it also works.
I wonder whether @tonyfettes encountered the same situation?

@TsukimiRini , Thanks a lot for checking out multilspy. Kindly look into the following:

Please have a look at the allow_incomplete flag in the request_completions method: https://github.com/microsoft/monitors4codegen/blob/022c65efb19cf6046d0b67960ca232ae7a351af4/src/monitors4codegen/multilspy/language_server.py#L467-L469
Please check if setting it to True provides the expected results. If it does, I will work on improved documentation for the same.
If it does not work, could you please let me know how are you launching the server and requesting from your custom client? Maybe that will give me an idea about what changes to make to get this working in Apple Silicon.
Finally, I request you to kindly provide the scenario you tested as a (failing)-testcase similar to testcases in https://github.com/microsoft/monitors4codegen/blob/main/tests/multilspy/test_multilspy_java.py, so that I can reproduce the behavior on my end and try to fix the issue.

Hi @LakshyAAAgrawal , thank you for your detailed and timely reply!
I tried the first point you mentioned and sadly it still doesn't work, but I have something else to share with you to figure out whether I have made something wrong.
I printed out the multispy log and found that every time any request is sent, a bunch of errors keep being repeated, so the log appears to be:
INFO:multilspy:{"time": "2023-12-28 13:42:57", "level": "INFO", "caller_file": "eclipse_jdtls.py", "caller_name": "start_server", "caller_line": 368, "message": "Starting EclipseJDTLS server process"}
INFO:multilspy:{"time": "2023-12-28 13:42:57", "level": "INFO", "caller_file": "eclipse_jdtls.py", "caller_name": "start_server", "caller_line": 372, "message": "Sending initialize request from LSP client to LSP server and awaiting response"}
INFO:multilspy:{"time": "2023-12-28 13:43:00", "level": "INFO", "caller_file": "eclipse_jdtls.py", "caller_name": "window_log_message", "caller_line": 354, "message": "LSP: window/logMessage: {\"type\": 3, \"message\": \"2023\u5e7412\u670828\u65e5 \u4e0b\u53481:43:00 Main thread is waiting\"}"}
INFO:multilspy:{"time": "2023-12-28 13:43:00", "level": "INFO", "caller_file": "eclipse_jdtls.py", "caller_name": "window_log_message", "caller_line": 354, "message": "LSP: window/logMessage: {\"type\": 3, \"message\": \"2023\u5e7412\u670828\u65e5 \u4e0b\u53481:43:00 >> initialize\"}"}
...

INFO:multilspy:{"time": "2023-12-28 13:43:00", "level": "INFO", "caller_file": "eclipse_jdtls.py", "caller_name": "window_log_message", "caller_line": 354, "message": "LSP: window/logMessage: {\"type\": 3, \"message\": \"2023\u5e7412\u670828\u65e5 \u4e0b\u53481:43:00 Setting runtime JavaSE-17-[my_project_root]/monitors4codegen/src/monitors4codegen/multilspy/language_servers/eclipse_jdtls/static/vscode-java/extension/jre/<IP_ADDRESS>-macosx-x86_64 as default global VM\"}"}
INFO:multilspy:{"time": "2023-12-28 13:43:00", "level": "INFO", "caller_file": "eclipse_jdtls.py", "caller_name": "window_log_message", "caller_line": 354, "message": "LSP: window/logMessage: {\"type\": 1, \"message\": \"2023\u5e7412\u670828\u65e5 \u4e0b\u53481:43:00 Runtime at \"[my_project_root]/monitors4codegen/src/monitors4codegen/multilspy/language_servers/eclipse_jdtls/static/vscode-java/extension/jre/<IP_ADDRESS>-macosx-x86_64\" is not compatible with the \"JavaSE-17\" environment\"}"}
INFO:multilspy:{"time": "2023-12-28 13:43:00", "level": "INFO", "caller_file": "eclipse_jdtls.py", "caller_name": "window_log_message", "caller_line": 354, "message": "LSP: window/logMessage: {\"type\": 3, \"message\": \"2023\u5e7412\u670828\u65e5 \u4e0b\u53481:43:00 JVM Runtimes changed, saving new configuration\"}"}

I suppose that maybe my JAVA environment is broken, so I try to fix everything in the environment related to JAVA, e.g. /usr/libexec/java_home, $JAVA_HOME. However, this error still exists.
I'm not familiar with the vscode-java plugin. Please point it out if I made something wrong. Thank you!

As for my custom client, it's a primitive one which communicates with LS via socket. I run an LS and make it listen on a certain port. Then I launch a client sending requests to the server in the format of RPC JSON object.
I think there is no particular difference in the way of LS launching between this simple client and multispy. Maybe the critical part lies in that when I use my custom client, I set up the environment mannually to launch LS, by setting the $JAVA_HOME env variable.

Ohhh..Sorry to bother you guys. It turns out that though I have checked /usr/libexec/java_home and $JAVA_HOME, I have wrongly put my JDK path behind /usr/bin in $PATH, which only contains an old version of JAVA.
It's solved! I'm happy to find multispy can also adapts to darwin-x64 easily! Thank you for your help! @LakshyAAAgrawal

@TsukimiRini, I am glad that multilspy worked for your usecase.
Did supporting your usecase require any changes to multilspy? I will soon be reviewing the PR #18  by @tonyfettes. If your usecase required any changes beyond that, I would be glad if you could contribute the changes to multilspy!