TinyNURBS and IFC - CoordinateSystems

I’ve been trying to implement IfcBsplineSurface, IfcBsplineSurfaceWithKnots and IfcRationalBSplineSurfaceWithKnots using this library in c++ / emscripten / WabAssembly and I having some issues which are probably caused by me doing something wrong.
One thing is that axes direction don’t seem to match, and I’m not sure in which space TinyNURBS operate.
X right, y up, z to viewer ?
IFC allows defining custom coords, which additionally complicates things.
On the upside, tinynurbs perfectly matches the IfcAdvancdFace use case, and seems to work quite fast, solving a decades long problem entire BIM community was facing when rendering detailed toilet bowls and doorknobs in a browser.
There’s a huge community and even some bounties involved. See https://github.com/tomvandig/web-ifc for more details.

Hi @dlabz, sorry for the delayed response. Thanks for your interest. tinynurbs doesn't have any inherent coordinate system. The only format currently supported is the Wavefront OBJ format which also doesn't define coordinate systems as far I know. So the up-direction is a convention that you have to define and perhaps use a world matrix to transform things the right way in your viewer.


ion-virtual-scroll use ion-item-divider but cant sticky~

Bug Report
Ionic version:

[x] 4.3.0
Current behavior:

I tried the following code in docs:
<ion-virtual-scroll [items]="items" [headerFn]="myHeaderFn">
<ion-item-divider *virtualHeader="let header">
{{ header }}

<ion-item *virtualItem="let item">
Item: {{ item }}

but divider cant sticky ,
i try <ion-item-divider sticky  *virtualHeader="let header">
but not work ~!
Expected behavior:

Can make the sticky work?

Hi there,
Thanks for the issue! Items in ion-virtual-scroll are given position: absolute values, which override the position: sticky value. ion-virtual-scroll currently relies on the assumption that all items have position: absolute set.
I am going to close this as this is not something we currently support. If you feel this functionality is important, please fill out Feature Request, and we can take a look.
Thanks!


Support Symantec VIP as a multifactor provider

We have an existing integration based on the great work @scalding has done that can be adapted to the CAS model. Working on a deployment that might require that feature, and might be able to enhance it further.

Spoke to @scalding about this feature. Tying to secure a test environment before moving forward, etc. Stand by for the time being.

Still trying to secure a test environment before moving forward, etc. Stand by for the time being.

Failed to secure test environment; potential waned. Can revisit later per demand, etc


Thunks

It might be possible to make use of thunk in the .update process.

Not sure it is possible, I will think on this later once I've got it stable.

I think this should actually be fairly easy to do.
Maybe expose the thunk method of snabbdom directly?
import html from 'snabby'

function numberView (n) {
    return html`<div>Number is ${n}</div>`
}

function render (state) {
    return html.thunk('num', numberView, [state.number])
}

re-opening and assigning to the committee of me myself and I.


Number Plate Prediction

ML-Crate Repository (Proposing new issue)
:red_circle: Project Title : Number Plate Prediction
:red_circle: Aim : To get the number plate of the vehicle which is on a quiet high speed and breaking the traffic.
:red_circle: Dataset :https://www.kaggle.com/dataturks/vehicle-number-plate-detection/download
:red_circle: Approach :Try to use 3-4 algorithms to implement the models and compare all the algorithms to find out the best fitted algorithm for the model by checking the accuracy scores. Also do not forget to do a exploratory data analysis before creating any model.
Hello, ML-Crate contributors, this issue is only for the contribution purposes and allocated only to the participants of SWOC 2.0 Open Source Program.

📍 Follow the Guidelines to Contribute in the Project :

You need to create a separate folder named as the Project Title.
Inside that folder, there will be four main components.

Images - To store the required images.
Dataset - To store the dataset or, information/source about the dataset.
Model - To store the machine learning model you've created using the dataset.
requirements.txt - This file will contain the required packages/libraries to run the project in other machines.

Inside the Model folder, the README.md file must be filled up properly, with proper visualizations and conclusions.
A Demo Project has been created to guide you about the whole structure of presenting the Project in this repository. Here's the link of the Demo Project - https://github.com/abhisheks008/ML-Crate/tree/main/Project-Demo-Folder

:red_circle::yellow_circle: Points to Note :

The issues will be assigned on a first come first serve basis, 1 Issue == 1 PR.
"Issue Title" and "PR Title should be the same. Include issue number along with it.
Follow Contributing Guidelines & Code of Conduct before start Contributing.
This issue is only for 'SWOC' contributors of 'ML-Crate' project.

:white_check_mark: To be Mentioned while taking the issue :

Full name :
GitHub Profile Link :
Participant ID :
Approach for this Project :
Are you a participant of SWOC 2.0?

[ ] YES
[ ]  No

Happy Contributing 🚀
All the best. Enjoy your open source journey ahead. 😎

Full name : Deepthi M
GitHub Profile Link : https://github.com/deepthi1107
Participant ID : 294
Approach for this Project: EDA, SVM, random forest, decision tree
Are you a participant of SWOC 2.0?
YES


feat(plugins) convert more plugins away from deprecated functions

This converts a number of plugins reducing their dependence on deprecated kong.tools.* functions and raw ngx.* calls, switching those to PDK calls as much as possible.
Covered in this PR:

aws-lambda
bot-detection
cors
key-auth
ip-restriction
oauth2
request-size-limiting
response-ratelimiting

this one includes a couple of fixes: improved test suite (still flaky but more usable); an update to perform a pg 9.5+ upsert on increment (which fixes a race-condition in the old implementation); fixed inverted arguments in the base migration.

Changes to the PDK:

kong.request.get_body decodes JSON using the array metatable
kong.response.exit respects enabled_headers
add kong.table.merge
add admin_api phase, to indincate which PDK functions are usable from a plugin's api.lua file
minor doc fix in kong.request.get_header

Just waiting for CI :)


Question

https://gyazo.com/126e721ee50aaa2352c6a2de343764c3
how do i make the bot send messages looking like that?
what is it called/where is the docs?

Look into the EmbedBuilder class. Also, these questions are better suited for our channel in the Discord API guild.

https://discord.foxbot.me/docs/api/Discord.EmbedBuilder.html

I think this can be closed

yea i got it whats all 👍


Added missing  header

VS2017 failed to compile due to missing #include <array>

Thanks for contributing!


table does`nt work properly with vuetify

I am trying to use the table with project which has vuetify installed in it.
I used the tutorial template and have 2 problems.
A.First the background color is for some reason blue.
B. At part 6 of the tutorial, When its shows how its able to use HTML code as the value i tried using v-button and it does now shows as it should:
The relevant fields within the fields array:
`{
name: 'PassedTestsCount',
title:"Passed Tests",
titleClass: 'center aligned',
dataClass: 'center aligned'
},
{
name: 'Status',
title:"Status",
titleClass: 'center aligned',
dataClass: 'center aligned',
callback: 'statusLabel'
}
The callback functionstatusLabel (value) {
return  ''+ value +''
}`
the actual result (I have only took the 2 columns as example, But the all table has the same background)

same problem

Try this  in style section

assign it as table classes again in the component.
Example: :css="{tableClass: 'vuetable ui  selectable unstackable celled table fixed'}"
<vuetable ref="vuetable"
               api-url="/admin/pricequotes"
               :fields="['number', 'title','date', 'client.company_name']"
               data-path=""
               pagination-path=""
               :css="{tableClass: 'vuetable ui  selectable unstackable celled table fixed'}"
     />


[FEATURE] Add configuration option for retrieval type

Describe the solution you'd like
There should be an option to choose between 3 retrieval types:

ON_BREAK
ON_RIGHTCLICK
ON_SHIFT

I'd need to figure out an all-inclusive option (ON_ALL?) while allowing for a mixture of the 3 retrieval types as well.

Commit a5e7a4d implements this:

Players should now be able to choose between 3 break options:

ON_BREAK
ON_USE
ON_BOTH (default) - provides usage of both ON_BREAK and ON_USE

Closing this.


Add link to GitHub repository

I want to propose adding a link to this GitHub repository on the Google Play and App Store pages to encourage people to report bugs here.

@huaracheguarache Thanks for your input!
We will discuss this suggestion with FHI.

@huaracheguarache Thanks for your input!
We will discuss this suggestion with FHI.

The link has been added to App Store page today with version 3.0 of Smittestopp, and will be added to Google Play soon.

That's good news! However, I have noticed that the link on the Google Play page of Smittestopp to the Helsenorge information page on Smittestopp doesn't work on my smartphone. The problem appears to be due to the full stop at the end of the link:
Smittestopp is developed by the Norwegian Institute of Public Health. Read more about the app on www.helsenorge.no/en/smittestopp.
The full stop is included in the link when I tap it to open the webpage, which results in a 500 error code:

@huaracheguarache Thanks for the input, you are right about the full stop, we will remove that from the English description

The link has now been added to the Google Play page, and the full stop has been removed from the English description link.


fix: incorrect prefix/suffix range handling in /edit command

maxStartLine should be minus 1
curEndLine should be plus 1
Description
[ fix the bug that prefix and suffix range error when constructor /edit command prompt ]
Checklist

[*] The base branch of this PR is dev, rather than main
[*] The relevant docs, if any, have been updated or created

Screenshots

Testing
[ For new or modified features, provide step-by-step testing instructions to validate the intended behavior of the change. ]

Great catch!


Fill row / fill to right not working in safari

Support guidelines

[X] I've read the FAQs

Description
The fill row and fill right does not work in my browser Safari
Environment

Browser : Safari 17.5
OS : Mac Monterey 12.7.5
Docker compose release 1.2 (image 1.4)

Expected behaviour
Data flow into columns as expected
Steps to reproduce
No response
Additional info
No response

I did later try firefox and had the same problem.
Maybe it's my browser settings (JS disabled ?) or something.

Nah, I always forget about other browser when working on a personal project - bad habit of mine haha :D Should be easy to fix, I allocated some time this weekend to take a look at all the new things that came up in this repo, it's been a few tough weeks for me hence the longe period of zero contributions haha


Enabled Parquet Support

Enable support for parquet file in azure store

Dear @yakshup, thank you for your contribution and apologies for the delayed response

Closed this PR because the original commit by @yakshup is added to PR #12.


UF-223 - Hide text overflow and include ellipsis for table columns he…

…ader

+1 to merge

Thanks!
master: efd3409774d33221080b9f9230e01ed7e51914d8


Error when updating for the first time.

[Error] Downloading stash for SSF Standard and just said to report here with attached DebugInfo.log
If you need further information or help just let me know.
Thanks!
DebugInfo.log

I see there are some 404 errors when attempting to fetch stash tabs, but they don't look wrong.  I've seen this error a few times, but haven't been able to track down the cause.  If you log out and back in on the website and get a new SessionID, does that fix the issue?

One of the things that dawned on me is that I had changed some of my stash
tab names and wonder if that's where the 404's come from. Let me try what
you suggested and get back to you.
On Fri, Oct 9, 2020 at 11:41 AM Charles Macanka<EMAIL_ADDRESS>wrote:

I see there are some 404 errors when attempting to fetch stash tabs, but
they don't look wrong. I've seen this error a few times, but haven't been
able to track down the cause. If you log out and back in on the website and
get a new SessionID, does that fix the issue?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/Stickymaddness/Procurement/issues/1120#issuecomment-706285312,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AOYMBSPW5KWJF5VULOV6QATSJ44MHANCNFSM4SJAQYMA
.

Ok I got it fixed. I had a character in the SSF Standard that hadn't been
migrated. I didn't even know it was there. Once I deleted the character and
reran Procurement everything went through with no errors. I hope this helps.
On Fri, Oct 9, 2020 at 11:41 AM Charles Macanka<EMAIL_ADDRESS>wrote:

I see there are some 404 errors when attempting to fetch stash tabs, but
they don't look wrong. I've seen this error a few times, but haven't been
able to track down the cause. If you log out and back in on the website and
get a new SessionID, does that fix the issue?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/Stickymaddness/Procurement/issues/1120#issuecomment-706285312,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AOYMBSPW5KWJF5VULOV6QATSJ44MHANCNFSM4SJAQYMA
.


[Multisig] Implement multisig wallet

example implementation in Vyper repo

https://github.com/0xProject/0x-monorepo/blob/development/contracts/multisig/contracts/multisig/MultiSigWallet.sol

assigned @yudetamago

gnosis safe
https://github.com/gnosis/safe-contracts/blob/development/contracts/GnosisSafe.sol


jsonnet: fix default empty groups for k8s PrometheusRule

Description
Expect type array for groups in k8s PrometheusRule, but object when there are no prometheusRules or prometheusAlerts .
Type of change

[ ] CHANGE (fix or feature that would cause existing functionality to not work as expected)
[ ] FEATURE (non-breaking change which adds functionality)
[x] BUGFIX (non-breaking change which fixes an issue)
[ ] ENHANCEMENT (non-breaking change which improves existing functionality)
[ ] NONE (if none of the other choices apply. Example, tooling, build system, CI, docs, etc.)

Changelog entry
Fix default empty groups for k8s PrometheusRule

Thanks!


Demo instance has been K-Lined from Freenode

Our demo was just K-Lined on Freenode due to abuse.  Lesson learned (although we kind of knew it was bound to happen eventually, but hoped to officially finish #181 before requesting more official support).
That being said, I just E-Mailed the Freenode staff for a possible resolution of the issue. Here's a copy of the E-Mail for transparency purposes:

Hi,
I am one of the maintainers of The Lounge web IRC client project, hosted at https://github.com/thelounge/lounge (see https://github.com/orgs/thelounge/people for the proof/other members) and our IRC channel at #thelounge. I am writing to you because our demo instance (hosted at http://avatar.playat.ch:1000/ on IP <IP_ADDRESS>) was just K-Lined, as well as one of our GitHub bot and one of the maintainers' bouncer (Giraffe_, or @MaxLeiter  on GitHub).
I understand our instance was probably used to spam channels, resulting in the K-Line, so I would like to see about the possibility of discussing what measures could be taken from our side to prevent future issues like this from happening. Since this is a public instance it is not really possible for us to provide an identd (who are we going to ID as?), but we have a (currently non-public) patch to enable WEBIRC. If possible we would like to request gateway access so we can properly report the source of all of our demo users so we can prevent future abuse. Additional measures such as throttling connection rate and using a blocklist are also possible at your convenience (we might move to my own server as needed).
The demo is currently taken down and won't be brought back up until we hear back from you. Would it possible to at least remove the K-Line from our IP in the meantime under the promise we won't run the public demo again without further approval?
Thank you for your time and sorry for the inconvenience.

The server has just been unbanned.

Hi,
A public instance is easily abused (and was), I've gone ahead and removed the
ban. I recommend taking measures to curb any abuse to mitigate any further
collateral damage.
-charitwo

Still waiting for news of the gateway access for the demo. We might want to host the demo on a closed server in the meantime. I can look into that a bit later in the week, as I'll likely have to shield my own server from abuse if we go that route.

Closing at the request of @MaxLeiter. We'll open a separate issue when we're tired of the relay bot.


Upgrade Dependencies

Is your feature request related to a problem? Please describe.
It is about time we upgrade our dependencies again.
Describe the solution you'd like
Update all dependencies that only need a reasonable amount of work and create issues for upgrading other dependencies.
Describe alternatives you've considered
Not updating.
Additional context
Checkout https://github.com/digitalfabrik/integreat-app/issues/2290 if there are problems. They might be resolved there

I realized that I didn't work on this ticket for more than a month and honestly also feel like I don't have the capacity to do this. I think the major blocker was react-native-camera. Therefore, I'll unassign myself.

react-native-camera is deprecated/archived and react-native-vision-camera is recommended instead.


Multiple functionalities are broken on iOS 17

Apple has developed a new device connectivity stack to target devices running iOS 17 and later, which has affected many third-party iOS device controlling tools (e.g. libimobiledevice).
I have tried following Tidevice functionalities and found some of them are broken:

tool
Does it support iOS 17

xcuitest
❌

screenshot
❌

launch
❌

kill
❌

ps
❌

relay
? (no error raised)

fsync(ls, rm, push, pull, stat)
✅

applist
✅

install
✅

uninstall
✅

syslog
✅

Recording some information that might be helpful:

Looks like iOS 17 is using a new device connectivity stack (named CoreDevice), changes involves:

communication protocol
A github PR in pymobiledevice3 to support mounting "new" developer images on iOS 17.

A libimobiledevice issue that records some investigation. Looks like this comment has fixed a part of controlling features in pymobiledevice3
go-ios issue
appium issues

lanuch: xcrun devicectl device process launch

Yes, Apple released the new tool devicectl to support some of the functionalities. But we still expect that tidevice can support them because:

We need to use them on Linux.
We are using tidevice now and it would be good if we could use one tool for all functionalities instead of depending on multiple tools...

ios 17没有device support这个问题，perfdog貌似已经解决了，现在用perfdog可以采集ios17得性能，哪位老师/同学，知道perfdog大概是通过什么思路解决得这个问题么？

这是来自QQ邮箱的假期自动回复邮件。

您好，我最近正在休假中，无法亲自回复您的邮件。我将在假期结束后，尽快给您回复。

iOS17 support will be continue in repo https://github.com/codeskyblue/tidevice3


Support other kind of SPI NOR flash in spi_nor.c

Is your enhancement proposal related to a problem? Please describe.
spi_nor.c currently expect spi_nor_data.spi_config.operation to be SPI_WORD_SET(8).  How should we go by supporting other kind of SPI Flash like 16 bits or transfering MSB first?
Describe the solution you'd like
These properties are device dependent.  So they should be in DTS?
BTW, I have set the parameter operation to
+	data->spi_cfg.operation = SPI_OP_MODE_MASTER |
+				  SPI_TRANSFER_MSB | SPI_WORD_SET(16) |
+				  SPI_LINES_SINGLE | SPI_LOCK_ON;

And my device is working.

I don't understand why byte ordering is an issue: doesn't the flash present as a sequence of bytes, and the order depends on what's written?  What specific flash device are you using?

It's S25FL256LAGMFM000

I think byte ordering is more likely to be a controller issue.
I have the S25FL512S flagged as a problematic device, but that's because it requires a 4-byte address.  I believe S25FL256 will as well, in order to use the whole memory.  We don't currently support that, but if that's the problem please open an issue and I will take a look, or you can prepare a PR.    "Other kind of SPI NOR" is too generic for an enhancement.

I'll close this for now.  I'll create a new PR when I need to support a new deivice.


Remove duplicate query check in FRI

The analysis of FRI doesn't require the FRI query indices to not include duplicates i.e. it only requires that they are sampled randomly but doesn't require the sampling to be without replacement.
Thus it makes sense to simplify the FRI query generation by removing the duplicate check.

Makes sense! This would mean removing these lines, right?

Yes! I would say even starting with line 215 but we would need to change a few extra things in addition.


Appstudio update test-component-pac-oyhv

Pipelines as Code configuration proposal

Pipelines as Code CI/test-component-pac-oyhv-on-pull-request has successfully validated your commit.

StatusDurationName

✅ Succeeded
10 seconds
init

✅ Succeeded
14 seconds
clone-repository

✅ Succeeded
1 minute
build-container

✅ Succeeded
19 seconds
sanity-inspect-image

✅ Succeeded
20 seconds
deprecated-base-image-check

✅ Succeeded
3 minutes
clair-scan

✅ Succeeded
50 seconds
clamav-scan

✅ Succeeded
15 seconds
sbom-json-check

✅ Succeeded
19 seconds
sanity-optional-label-check

✅ Succeeded
17 seconds
sanity-label-check

✅ Succeeded
8 seconds
show-summary

Pipelines as Code CI/test-component-pac-oyhv-on-pull-request has successfully validated your commit.

StatusDurationName

✅ Succeeded
10 seconds
init

✅ Succeeded
14 seconds
clone-repository

✅ Succeeded
1 minute
build-container

✅ Succeeded
20 seconds
deprecated-base-image-check

✅ Succeeded
19 seconds
sanity-inspect-image

✅ Succeeded
3 minutes
clair-scan

✅ Succeeded
50 seconds
clamav-scan

✅ Succeeded
15 seconds
sbom-json-check

✅ Succeeded
19 seconds
sanity-optional-label-check

✅ Succeeded
17 seconds
sanity-label-check

✅ Succeeded
8 seconds
show-summary

Pipelines as Code CI/test-component-pac-oyhv-on-pull-request has successfully validated your commit.

StatusDurationName

✅ Succeeded
6 seconds
init

✅ Succeeded
19 seconds
clone-repository

✅ Succeeded
39 seconds
build-container

✅ Succeeded
16 seconds
sanity-inspect-image

✅ Succeeded
16 seconds
deprecated-base-image-check

✅ Succeeded
8 seconds
clair-scan

✅ Succeeded
32 seconds
clamav-scan

✅ Succeeded
8 seconds
sbom-json-check

✅ Succeeded
16 seconds
sanity-optional-label-check

✅ Succeeded
15 seconds
sanity-label-check

✅ Succeeded
5 seconds
show-summary


truffle test does not work

Running truffle test on a fresh checkout of cheshire ea232aa9e157404cc3f6a8d2122069dece4432fc results in the following output.
Compiling ./contracts/GeneScience.sol...
Compiling ./contracts/KittyCore.sol...
Compiling ./contracts/SaleClockAuction.sol...
Compiling ./contracts/SiringClockAuction.sol...

Compilation warnings encountered:

/home/piers/projects/testchesh/cheshire/contracts/KittyCore.sol:17:3: Warning: Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
  function Ownable() {
  ^ (Relevant source part starts here and spans across multiple lines).
,/home/piers/projects/testchesh/cheshire/contracts/KittyCore.sol:703:9: Warning: Use of the "var" keyword is deprecated.
        var outputString = new string(_stringLength);
        ^--------------^
,/home/piers/projects/testchesh/cheshire/contracts/KittyCore.sol:1383:5: Warning: Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
    function ClockAuction(address _nftAddress, uint256 _cut) public {
    ^ (Relevant source part starts here and spans across multiple lines).
,/home/piers/projects/testchesh/cheshire/contracts/KittyCore.sol:1532:5: Warning: Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
    function SiringClockAuction(address _nftAddr, uint256 _cut) public
    ^ (Relevant source part starts here and spans across multiple lines).
,/home/piers/projects/testchesh/cheshire/contracts/KittyCore.sol:1605:5: Warning: Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
    function SaleClockAuction(address _nftAddr, uint256 _cut) public
    ^ (Relevant source part starts here and spans across multiple lines).
,/home/piers/projects/testchesh/cheshire/contracts/KittyCore.sol:1916:5: Warning: Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
    function KittyCore() public {
    ^ (Relevant source part starts here and spans across multiple lines).
,/home/piers/projects/testchesh/cheshire/contracts/SaleClockAuction.sol:17:3: Warning: Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
  function Ownable() {
  ^ (Relevant source part starts here and spans across multiple lines).
,/home/piers/projects/testchesh/cheshire/contracts/SaleClockAuction.sol:386:5: Warning: Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
    function ClockAuction(address _nftAddress, uint256 _cut) public {
    ^ (Relevant source part starts here and spans across multiple lines).
,/home/piers/projects/testchesh/cheshire/contracts/SaleClockAuction.sol:539:5: Warning: Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
    function SaleClockAuction(address _nftAddr, uint256 _cut) public
    ^ (Relevant source part starts here and spans across multiple lines).
,/home/piers/projects/testchesh/cheshire/contracts/SiringClockAuction.sol:17:3: Warning: Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
  function Ownable() {
  ^ (Relevant source part starts here and spans across multiple lines).
,/home/piers/projects/testchesh/cheshire/contracts/SiringClockAuction.sol:386:5: Warning: Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
    function ClockAuction(address _nftAddress, uint256 _cut) public {
    ^ (Relevant source part starts here and spans across multiple lines).
,/home/piers/projects/testchesh/cheshire/contracts/SiringClockAuction.sol:535:5: Warning: Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
    function SiringClockAuction(address _nftAddr, uint256 _cut) public
    ^ (Relevant source part starts here and spans across multiple lines).
,/home/piers/projects/testchesh/cheshire/contracts/KittyCore.sol:362:9: Warning: Invoking events without "emit" prefix is deprecated.
        Transfer(_from, _to, _tokenId);
        ^----------------------------^
,/home/piers/projects/testchesh/cheshire/contracts/KittyCore.sol:415:9: Warning: Invoking events without "emit" prefix is deprecated.
        Birth(
        ^ (Relevant source part starts here and spans across multiple lines).
,/home/piers/projects/testchesh/cheshire/contracts/KittyCore.sol:595:9: Warning: Invoking events without "emit" prefix is deprecated.
        Approval(msg.sender, _to, _tokenId);
        ^---------------------------------^
,/home/piers/projects/testchesh/cheshire/contracts/KittyCore.sol:953:9: Warning: Invoking events without "emit" prefix is deprecated.
        Pregnant(kittyIndexToOwner[_matronId], _matronId, _sireId, matron.cooldownEndBlock);
        ^---------------------------------------------------------------------------------^
,/home/piers/projects/testchesh/cheshire/contracts/KittyCore.sol:1059:9: Warning: Failure condition of 'send' ignored. Consider using 'transfer' instead.
        msg.sender.send(autoBirthFee);
        ^---------------------------^
,/home/piers/projects/testchesh/cheshire/contracts/KittyCore.sol:1145:9: Warning: Invoking events without "emit" prefix is deprecated.
        AuctionCreated(
        ^ (Relevant source part starts here and spans across multiple lines).
,/home/piers/projects/testchesh/cheshire/contracts/KittyCore.sol:1157:9: Warning: Invoking events without "emit" prefix is deprecated.
        AuctionCancelled(_tokenId);
        ^------------------------^
,/home/piers/projects/testchesh/cheshire/contracts/KittyCore.sol:1218:9: Warning: Invoking events without "emit" prefix is deprecated.
        AuctionSuccessful(_tokenId, price, msg.sender);
        ^--------------------------------------------^
,/home/piers/projects/testchesh/cheshire/contracts/KittyCore.sol:1353:5: Warning: Invoking events without "emit" prefix is deprecated.
    Pause();
    ^-----^
,/home/piers/projects/testchesh/cheshire/contracts/KittyCore.sol:1362:5: Warning: Invoking events without "emit" prefix is deprecated.
    Unpause();
    ^-------^
,/home/piers/projects/testchesh/cheshire/contracts/KittyCore.sol:1404:36: Warning: Using contract member "balance" inherited from the address type is deprecated. Convert the contract to "address" type to access the member, for example use "address(contract).balance" instead.
        bool res = nftAddress.send(this.balance);
                                   ^----------^
,/home/piers/projects/testchesh/cheshire/contracts/KittyCore.sol:1939:9: Warning: Invoking events without "emit" prefix is deprecated.
        ContractUpgrade(_v2Address);
        ^-------------------------^
,/home/piers/projects/testchesh/cheshire/contracts/KittyCore.sol:2001:27: Warning: Using contract member "balance" inherited from the address type is deprecated. Convert the contract to "address" type to access the member, for example use "address(contract).balance" instead.
        uint256 balance = this.balance;
                          ^----------^
,/home/piers/projects/testchesh/cheshire/contracts/KittyCore.sol:2006:13: Warning: Failure condition of 'send' ignored. Consider using 'transfer' instead.
            cfoAddress.send(balance - subtractFees);
            ^-------------------------------------^
,/home/piers/projects/testchesh/cheshire/contracts/SaleClockAuction.sol:148:9: Warning: Invoking events without "emit" prefix is deprecated.
        AuctionCreated(
        ^ (Relevant source part starts here and spans across multiple lines).
,/home/piers/projects/testchesh/cheshire/contracts/SaleClockAuction.sol:160:9: Warning: Invoking events without "emit" prefix is deprecated.
        AuctionCancelled(_tokenId);
        ^------------------------^
,/home/piers/projects/testchesh/cheshire/contracts/SaleClockAuction.sol:221:9: Warning: Invoking events without "emit" prefix is deprecated.
        AuctionSuccessful(_tokenId, price, msg.sender);
        ^--------------------------------------------^
,/home/piers/projects/testchesh/cheshire/contracts/SaleClockAuction.sol:356:5: Warning: Invoking events without "emit" prefix is deprecated.
    Pause();
    ^-----^
,/home/piers/projects/testchesh/cheshire/contracts/SaleClockAuction.sol:365:5: Warning: Invoking events without "emit" prefix is deprecated.
    Unpause();
    ^-------^
,/home/piers/projects/testchesh/cheshire/contracts/SaleClockAuction.sol:407:36: Warning: Using contract member "balance" inherited from the address type is deprecated. Convert the contract to "address" type to access the member, for example use "address(contract).balance" instead.
        bool res = nftAddress.send(this.balance);
                                   ^----------^
,/home/piers/projects/testchesh/cheshire/contracts/SiringClockAuction.sol:148:9: Warning: Invoking events without "emit" prefix is deprecated.
        AuctionCreated(
        ^ (Relevant source part starts here and spans across multiple lines).
,/home/piers/projects/testchesh/cheshire/contracts/SiringClockAuction.sol:160:9: Warning: Invoking events without "emit" prefix is deprecated.
        AuctionCancelled(_tokenId);
        ^------------------------^
,/home/piers/projects/testchesh/cheshire/contracts/SiringClockAuction.sol:221:9: Warning: Invoking events without "emit" prefix is deprecated.
        AuctionSuccessful(_tokenId, price, msg.sender);
        ^--------------------------------------------^
,/home/piers/projects/testchesh/cheshire/contracts/SiringClockAuction.sol:356:5: Warning: Invoking events without "emit" prefix is deprecated.
    Pause();
    ^-----^
,/home/piers/projects/testchesh/cheshire/contracts/SiringClockAuction.sol:365:5: Warning: Invoking events without "emit" prefix is deprecated.
    Unpause();
    ^-------^
,/home/piers/projects/testchesh/cheshire/contracts/SiringClockAuction.sol:407:36: Warning: Using contract member "balance" inherited from the address type is deprecated. Convert the contract to "address" type to access the member, for example use "address(contract).balance" instead.
        bool res = nftAddress.send(this.balance);
                                   ^----------^
,/home/piers/projects/testchesh/cheshire/contracts/GeneScience.sol:13:39: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.
    function mixGenes(uint256 genes1, uint256 genes2, uint256 targetBlock) public returns (uint256) {
                                      ^------------^
,/home/piers/projects/testchesh/cheshire/contracts/GeneScience.sol:13:55: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.
    function mixGenes(uint256 genes1, uint256 genes2, uint256 targetBlock) public returns (uint256) {
                                                      ^-----------------^
,/home/piers/projects/testchesh/cheshire/contracts/KittyCore.sol:17:3: Warning: No visibility specified. Defaulting to "public".
  function Ownable() {
  ^ (Relevant source part starts here and spans across multiple lines).
,/home/piers/projects/testchesh/cheshire/contracts/KittyCore.sol:35:3: Warning: No visibility specified. Defaulting to "public".
  function transferOwnership(address newOwner) onlyOwner {
  ^ (Relevant source part starts here and spans across multiple lines).
,/home/piers/projects/testchesh/cheshire/contracts/KittyCore.sol:1351:3: Warning: No visibility specified. Defaulting to "public".
  function pause() onlyOwner whenNotPaused returns (bool) {
  ^ (Relevant source part starts here and spans across multiple lines).
,/home/piers/projects/testchesh/cheshire/contracts/KittyCore.sol:1360:3: Warning: No visibility specified. Defaulting to "public".
  function unpause() onlyOwner whenPaused returns (bool) {
  ^ (Relevant source part starts here and spans across multiple lines).
,/home/piers/projects/testchesh/cheshire/contracts/KittyCore.sol:1404:9: Warning: Unused local variable.
        bool res = nftAddress.send(this.balance);
        ^------^
,/home/piers/projects/testchesh/cheshire/contracts/SaleClockAuction.sol:17:3: Warning: No visibility specified. Defaulting to "public".
  function Ownable() {
  ^ (Relevant source part starts here and spans across multiple lines).
,/home/piers/projects/testchesh/cheshire/contracts/SaleClockAuction.sol:35:3: Warning: No visibility specified. Defaulting to "public".
  function transferOwnership(address newOwner) onlyOwner {
  ^ (Relevant source part starts here and spans across multiple lines).
,/home/piers/projects/testchesh/cheshire/contracts/SaleClockAuction.sol:354:3: Warning: No visibility specified. Defaulting to "public".
  function pause() onlyOwner whenNotPaused returns (bool) {
  ^ (Relevant source part starts here and spans across multiple lines).
,/home/piers/projects/testchesh/cheshire/contracts/SaleClockAuction.sol:363:3: Warning: No visibility specified. Defaulting to "public".
  function unpause() onlyOwner whenPaused returns (bool) {
  ^ (Relevant source part starts here and spans across multiple lines).
,/home/piers/projects/testchesh/cheshire/contracts/SaleClockAuction.sol:407:9: Warning: Unused local variable.
        bool res = nftAddress.send(this.balance);
        ^------^
,/home/piers/projects/testchesh/cheshire/contracts/SiringClockAuction.sol:17:3: Warning: No visibility specified. Defaulting to "public".
  function Ownable() {
  ^ (Relevant source part starts here and spans across multiple lines).
,/home/piers/projects/testchesh/cheshire/contracts/SiringClockAuction.sol:35:3: Warning: No visibility specified. Defaulting to "public".
  function transferOwnership(address newOwner) onlyOwner {
  ^ (Relevant source part starts here and spans across multiple lines).
,/home/piers/projects/testchesh/cheshire/contracts/SiringClockAuction.sol:354:3: Warning: No visibility specified. Defaulting to "public".
  function pause() onlyOwner whenNotPaused returns (bool) {
  ^ (Relevant source part starts here and spans across multiple lines).
,/home/piers/projects/testchesh/cheshire/contracts/SiringClockAuction.sol:363:3: Warning: No visibility specified. Defaulting to "public".
  function unpause() onlyOwner whenPaused returns (bool) {
  ^ (Relevant source part starts here and spans across multiple lines).
,/home/piers/projects/testchesh/cheshire/contracts/SiringClockAuction.sol:407:9: Warning: Unused local variable.
        bool res = nftAddress.send(this.balance);
        ^------^
,/home/piers/projects/testchesh/cheshire/contracts/GeneScience.sol:13:5: Warning: Function state mutability can be restricted to pure
    function mixGenes(uint256 genes1, uint256 genes2, uint256 targetBlock) public returns (uint256) {
    ^ (Relevant source part starts here and spans across multiple lines).
,/home/piers/projects/testchesh/cheshire/contracts/KittyCore.sol:445:5: Warning: Function state mutability can be restricted to pure
    function getMetadata(uint256 _tokenId, string) public view returns (bytes32[4] buffer, uint256 count) {
    ^ (Relevant source part starts here and spans across multiple lines).
,/home/piers/projects/testchesh/cheshire/contracts/KittyCore.sol:680:5: Warning: Function state mutability can be restricted to pure
    function _memcpy(uint _dest, uint _src, uint _len) private view {
    ^ (Relevant source part starts here and spans across multiple lines).

kittyCore deployed at 0x8cdaf0cd259887258bc13a92c0a6da92698644c0
SaleClockAuction deployed at 0xf12b5dd4ead5f743c6baa640b0216200e89b60da
SiringClockAuction deployed at 0x345ca3e014aaf5dca488057592ee47305d9b3e10
geneScience deployed at 0xf25186b5081ff5ce73482ad761db0eb0d25abfbf
KittyCore unpaused
Error: Could not find artifacts for ./Migrations from any sources
    at Resolver.require (/home/piers/programs/node-v8.9.4-linux-x64/lib/node_modules/truffle/build/webpack:/~/truffle-resolver/index.js:37:1)
    at TestResolver.require (/home/piers/programs/node-v8.9.4-linux-x64/lib/node_modules/truffle/build/webpack:/~/truffle-core/lib/testing/testresolver.js:17:1)
    at Object.require (/home/piers/programs/node-v8.9.4-linux-x64/lib/node_modules/truffle/build/webpack:/~/truffle-migrate/index.js:234:1)
    at ResolverIntercept.require (/home/piers/programs/node-v8.9.4-linux-x64/lib/node_modules/truffle/build/webpack:/~/truffle-migrate/resolverintercept.js:20:1)
    at /home/piers/programs/node-v8.9.4-linux-x64/lib/node_modules/truffle/build/webpack:/~/truffle-migrate/index.js:49:1
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:188:7)

Thanks for the report @piersy! Didn't catch this when I removed the Migrations.sol contract because I still had a compiled copy sitting in my build/ dir.
Here's the fix: https://github.com/endless-nameless-inc/cheshire/pull/5


Ag grid Countries symbol looks bigger in HD Compact in ag grid theme v2

Package name(s)
AG Grid Theme (@salt-ds/ag-grid-theme)
Package version(s)
v2
Description
Countries symbol in HD Compact grid looks large
in 1.14.0, it used to be smaller
https://github.com/jpmorganchase/salt-ds/blob/7c6437c9de3e0c2f4fc0e1004fda2dcf677b180e/packages/ag-grid-theme/css/salt-ag-theme.scss#L33
Steps to reproduce
No response
Expected behavior
No response
Operating system

[X] macOS
[ ] Windows
[ ] Linux
[ ] iOS
[ ] Android

Browser

[X] Chrome
[ ] Safari
[ ] Firefox
[ ] Edge

Are you a JPMorgan Chase & Co. employee?

[X] I am an employee of JPMorgan Chase & Co.

Jul 17 - Snapshot release in #3822 confirmed the fix. Will do more regression test.

To be released in next release


Not compatible with the Umbraco Content Delivery API

Which exact Umbraco version are you using? For example: 8.7.0 - don't just write v8 or v9
13.5.2
Bug summary
Your implementation of PropertyValueConverterBase doesn't also implement IDeliveryApiPropertyValueConverter. I had to deregister yours in a composer and register a custom one.
Therefore UmbNav out of the box is incompatible with the Umbraco Content Delivery API.
Specifics
The value converter I used after I deregistered yours (I could have just extended yours if we used Serilogger but we don't so this made more sense for us):
public class CustomUmbNavValueConverter : PropertyValueConverterBase, IDeliveryApiPropertyValueConverter
{
    private readonly IPublishedSnapshotAccessor _publishedSnapshotAccessor;
    private readonly IApiContentRouteBuilder _apiContentRouteBuilder;
    private readonly ILogger<CustomUmbNavValueConverter> _logger;
    private readonly IUmbNavMenuBuilderService _umbNavMenuBuilderService;

    public CustomUmbNavValueConverter(
        IPublishedSnapshotAccessor publishedSnapshotAccessor,
        IApiContentRouteBuilder apiContentRouteBuilder,
        ILogger<CustomUmbNavValueConverter> logger,
        IUmbNavMenuBuilderService umbNavMenuBuilderService)
    {
        _publishedSnapshotAccessor = publishedSnapshotAccessor;
        _apiContentRouteBuilder = apiContentRouteBuilder;
        _logger = logger;
        _umbNavMenuBuilderService = umbNavMenuBuilderService;
    }

    public override bool IsConverter(IPublishedPropertyType propertyType)
        => propertyType.EditorAlias.Equals("AaronSadler.UmbNav");

    public override Type GetPropertyValueType(IPublishedPropertyType propertyType)
        => typeof(IEnumerable<UmbNavItem>);

    public PropertyCacheLevel GetDeliveryApiPropertyCacheLevel(IPublishedPropertyType propertyType)
        => PropertyCacheLevel.Elements;

    public PropertyCacheLevel GetDeliveryApiPropertyCacheLevelForExpansion(IPublishedPropertyType propertyType)
        => PropertyCacheLevel.Snapshot;

    public Type GetDeliveryApiPropertyValueType(IPublishedPropertyType propertyType)
        => typeof(IEnumerable<UmbNavItem>);

    public override object? ConvertIntermediateToObject(
        IPublishedElement owner,
        IPublishedPropertyType propertyType,
        PropertyCacheLevel referenceCacheLevel,
        object? inter,
        bool preview)
    {
        if (inter is null)
        {
            _logger.LogWarning("No intermediate value found for property {PropertyAlias}.", propertyType.Alias);
            return Enumerable.Empty<UmbNavItem>();
        }

        try
        {
            var items = JsonConvert.DeserializeObject<IEnumerable<UmbNavItem>>(inter.ToString() ?? string.Empty);
            if (items == null)
            {
                _logger.LogWarning("Failed to deserialize UmbNav items for property {PropertyAlias}.", propertyType.Alias);
                return Enumerable.Empty<UmbNavItem>();
            }

            // Build the menu using the UmbNavMenuBuilderService
            var configuration = propertyType.DataType.ConfigurationAs<UmbNavConfiguration>();
            if (configuration != null)
            {
                return _umbNavMenuBuilderService.BuildMenu(
                    items,
                    0,
                    configuration.RemoveNaviHideItems,
                    configuration.HideNoopener,
                    configuration.HideNoreferrer,
                    configuration.HideIncludeChildren,
                    configuration.AllowMenuItemDescriptions);
            }

            return items;
        }
        catch (Exception ex)
        {
            _logger.LogError(ex, "Error converting UmbNav intermediate value for property {PropertyAlias}.", propertyType.Alias);
            return Enumerable.Empty<UmbNavItem>();
        }
    }

    public object? ConvertIntermediateToDeliveryApiObject(
        IPublishedElement owner,
        IPublishedPropertyType propertyType,
        PropertyCacheLevel referenceCacheLevel,
        object? inter,
        bool preview,
        bool expanding)
    {
        if (inter is null)
        {
            _logger.LogWarning("No intermediate value found for Delivery API conversion on property {PropertyAlias}.", propertyType.Alias);
            return null;
        }

        try
        {
            var items = JsonConvert.DeserializeObject<IEnumerable<UmbNavItem>>(inter.ToString() ?? string.Empty);
            if (items == null)
            {
                _logger.LogWarning("Failed to deserialize UmbNav items for Delivery API on property {PropertyAlias}.", propertyType.Alias);
                return null;
            }

            return items;
        }
        catch (Exception ex)
        {
            _logger.LogError(ex, "Error converting UmbNav intermediate value for Delivery API on property {PropertyAlias}.", propertyType.Alias);
            return null;
        }
    }
}

Steps to reproduce
Set up the umbraco content delivery api
Create a Doc Type that uses navigation
Create content using that doc type
Try to return that content via the content delivery api
Expected result / actual result
I expected to receive usable content
What I got instead was an alternating experience between a 500 error and content stuck in a recursive loop (the json ignore attribute on content in class UmbNavItem is not recognized by the content delivery api because your class, UmbNavValueConverter only extends PropertyValueConverterBase but does not also implement IDeliveryApiPropertyValueConverter)
I do not know why sometimes I got the 500 error and sometimes I got the content stuck in a recursive loop but here's an example of one of the times I got content:
"headerNavigation":[{"udi":{"guid":"4edaad94-029e-43d3-ba74-75cffea28c7a","isRoot":false,"uriValue":"umb://document/4edaad94029e43d3ba7475cffea28c7a","entityType":"document"},"key":"4edaad94-029e-43d3-ba74-75cffea28c7a","name":"Home","title":"Home","description":null,"target":null,"noopener":null,"noreferrer":null,"anchor":null,"children":[],"parent":null,"content":{"id":1128,"name":"Home","urlSegment":"home","sortOrder":0,"level":1,"path":"-1,1128","templateId":null,"creatorId":1,"createDate":"2024-11-05T19:37:14.247Z","writerId":1,"updateDate":"2024-11-25T10:55:56.04Z","cultures":{"":{"culture":"","name":"Home","urlSegment":"home","date":"2024-11-05T19:37:14.247Z"}},"itemType":"Content","parent":null,"children":[{"id":1145,"name":"Test Page","urlSegment":"test-page","sortOrder":0,"level":2,"path":"-1,1128,1145","templateId":null,"creatorId":1,"createDate":"2024-11-25T10:39:20.907Z","writerId":1,"updateDate":"2024-11-25T10:39:20.907Z","cultures":{"":{"culture":"","name":"Test Page","urlSegment":"test-page","date":"2024-11-25T10:39:20.907Z"}},"itemType":"Content","parent":{"id":1128,"name":"Home","urlSegment":"home","sortOrder":0,"level":1,"path":"-1,1128","templateId":null,"creatorId":1,"createDate":"2024-11-05T19:37:14.247Z","writerId":1,"updateDate":"2024-11-25T10:55:56.04Z","cultures":{"":{"culture":"","name":"Home","urlSegment":"home","date":"2024-11-05T19:37:14.247Z"}},"itemType":"Content","parent":null,"children":[{"id":1145,"name":"Test Page","urlSegment":"test-page","sortOrder":0,"level":2,"path":"-1,1128,1145","templateId":null,"creatorId":1,"createDate":"2024-11-25T10:39:20.907Z","writerId":1,"updateDate":"2024-11-25T10:39:20.907Z","cultures":{"":{"culture":"","name":"Test Page","urlSegment":"test-page","date":"2024-11-25T10:39:20.907Z"}},"itemType":"Content","parent":{"id":1128,"name":"Home","urlSegment":"home","sortOrder":0,"level":1,"path":"-1,1128","templateId":null,"creatorId":1,"createDate":"2024-11-05T19:37:14.247Z","writerId":1,"updateDate":"2024-11-25T10:55:56.04Z","cultures":{"":{"culture":"","name":"Home","urlSegment":"home","date":"2024-11-05T19:37:14.247Z"}},"itemType":"Content","parent":null,"children":[{"id":1145,"name":"Test Page","urlSegment":"test-page","sortOrder":0,"level":2,"path":"-1,1128,1145","templateId":null,"creatorId":1,"createDate":"2024-11-25T10:39:20.907Z","writerId":1,"updateDate":"2024-11-25T10:39:20.907Z","cultures":{"":{"culture":"","name":"Test Page","urlSegment":"test-page","date":"2024-11-25T10:39:20.907Z"}},"itemType":"Content","parent":{"id":1128,"name":"Home","urlSegment":"home","sortOrder":0,"level":1,"path":"-1,1128","templateId":null,"creatorId":1,"createDate":"2024-11-05T19:37:14.247Z","writerId":1,"updateDate":"2024-11-25T10:55:56.04Z","cultures":{"":{"culture":"","name":"Home","urlSegment":"home","date":"2024-11-05T19:37:14.247Z"}},"itemType":"Content","parent":null,"children":[{"id":1145,"name":"Test Page","urlSegment":"test-page","sortOrder":0,"level":2,"path":"-1,1128,1145","templateId":null,"creatorId":1,"createDate":"2024-11-25T10:39:20.907Z","writerId":1,"updateDate":"2024-11-25T10:39:20.907Z","cultures":{"":{"culture":"","name":"Test Page","urlSegment":"test-page","date":"2024-11-25T10:39:20.907Z"}},"itemType":"Content","parent":{"id":1128,"name":"Home","urlSegment":"home","sortOrder":0,"level":1,"path":"-1,1128","templateId":null,"creatorId":1,"createDate":"2024-11-05T19:37:14.247Z","writerId":1,"updateDate":"2024-11-25T10:55:56.04Z","cultures":{"":{"culture":"","name":"Home","urlSegment":"home","date":"2024-11-05T19:37:14.247Z"}},"itemType":"Content","parent":null,"children":[{"id":1145,"name":"Test Page","urlSegment":"test-page","sortOrder":0,"level":2,"path":"-1,1128,1145","templateId":null,"creatorId":1,"createDate":"2024-11-25T10:39:20.907Z","writerId":1,"updateDate":"2024-11-25T10:39:20.907Z","cultures":{"":{"culture":"","name":"Test Page","urlSegment":"test-page","date":"2024-11-25T10:39:20.907Z"}},"itemType":"Content","parent":{"id":1128,"name":"Home","urlSegment":"home","sortOrder":0,"level":1,"path":"-1,1128","templateId":null,"creatorId":1,"createDate":"2024-11-05T19:37:14.247Z","writerId":1,"updateDate":"2024-11-25T10:55:56.04Z","cultures":{"":{"culture":"","name":"Home","urlSegment":"home","date":"2024-11-05T19:37:14.247Z"}},"itemType":"Content","parent":null,"children":[{"id":1145,"name":"Test Page","urlSegment":"test-page","sortOrder":0,"level":2,"path":"-1,1128,1145","templateId":null,"creatorId":1,"createDate":"2024-11-25T10:39:20.907Z","writerId":1,"updateDate":"2024-11-25T10:39:20.907Z","cultures":{"":{"culture":"","name":"Test Page","urlSegment":"test-page","date":"2024-11-25T10:39:20.907Z"}},"itemType":"Content","parent":{"id":1128,"name":"Home","urlSegment":"home","sortOrder":0,"level":1,"path":"-1,1128","templateId":null,"creatorId":1,"createDate":"2024-11-05T19:37:14.247Z","writerId":1,"updateDate":"2024-11-25T10:55:56.04Z","cultures":{"":{"culture":"","name":"Home","urlSegment":"home","date":"2024-11-05T19:37:14.247Z"}},"itemType":"Content","parent":null,"children":[{"id":1145,"name":"Test Page","urlSegment":"test-page","sortOrder":0,"level":2,"path":"-1,1128,1145","templateId":null,"creatorId":1,"createDate":"2024-11-25T10:39:20.907Z","writerId":1,"updateDate":"2024-11-25T10:39:20.907Z","cultures":{"":{"culture":"","name":"Test Page","urlSegment":"test-page","date":"2024-11-25T10:39:20.907Z"}},"itemType":"Content","parent":{"id":1128,"name":"Home","urlSegment":"home","sortOrder":0,"level":1,"path":"-1,1128","templateId":null,"creatorId":1,"createDate":"2024-11-05T19:37:14.247Z","writerId":1,"updateDate":"2024-11-25T10:55:56.04Z","cultures":{"":{"culture":"","name":"Home","urlSegment":"home","date":"2024-11-05T19:37:14.247Z"}},"itemType":"Content","parent":null,"children":[{"id":1145,"name":"Test Page","urlSegment":"test-page","sortOrder":0,"level":2,"path":"-1,1128,1145","templateId":null,"creatorId":1,"createDate":"2024-11-25T10:39:20.907Z","writerId":1,"updateDate":"2024-11-25T10:39:20.907Z","cultures":{"":{"culture":"","name":"Test Page","urlSegment":"test-page","date":"2024-11-25T10:39:20.907Z"}}

There's no end to this because it was stuck in a recursive loop

Hi @jessicaw-iology
I have not used the delivery API yet.
Did the code you provided work?
Would you be able to provide a PR and I'll test when I get a chance, I'm currently in the process of moving house so I'm not sure when that will be.

Hi Aaron,
The code I provided is working for us, yes. I would be willing to provide a
PR. Thank you for asking me to do so!
Warmly,
Jessica
Jessica R. Williams
Full Stack Developer
480.850.2800
@.***
I-ology.com https://i-ology.com/
[image: facebook]
https://f032472a.streaklinks.com/CNnHMvbQ0OeGUdZYFwyT51X4/https%3A%2F%2Fwww.facebook.com%2Fiology
[image: twitter]
https://f032472a.streaklinks.com/CNnHMvfubqxUnN8i3wQrBbeb/https%3A%2F%2Fwww.twitter.com%2Fiology
[image: linkedin]
https://f032472a.streaklinks.com/CNnHMvb7ezK7gUjZHwPmZz8z/https%3A%2F%2Fwww.linkedin.com%2Fcompany-beta%2F49058%2F
[image: instagram]
https://f032472a.streaklinks.com/CNnHMvbEBFhjej2njARvomA7/https%3A%2F%2Fwww.instagram.com%2Fiology%2F
ᐧ
On Tue, Nov 26, 2024 at 12:54 PM Aaron @.***> wrote:

Hi @jessicaw-iology https://github.com/jessicaw-iology
I have not used the delivery API yet.
Did the code you provided work?
Would you be able to provide a PR and I'll test when I get a chance, I'm
currently in the process of moving house so I'm not sure when that will be.
—
Reply to this email directly, view it on GitHub
https://github.com/AaronSadlerUK/Our.Umbraco.UmbNav/issues/96#issuecomment-2501915455,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AYOJR3MWHGTC2HF7DTLZB2D2CTNYLAVCNFSM6AAAAABSRHFMWOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKMBRHEYTKNBVGU
.
You are receiving this because you were mentioned.Message ID:
@.***>


Q# allows null values

Describe the bug
Q# array initializers allow creating an array of non-zero size without specifying a value with which to initialize each array cell. The array cells contain a "default" value for the type. For callable and qubit types, this default value is null.
To Reproduce
let f = (new (Int -> Int)[1])[0];
let _ = f(7);

Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object.
---> Example.Main on C:\Users\samarsha\Desktop\QSharpProject\Program.qs:line 8

let q = (new Qubit[1])[0];
X(q);

Unhandled exception. System.ArgumentNullException: Trying to perform a primitive operation on a null Qubit (Parameter 'q1')
---> Microsoft.Quantum.Intrinsic.X on :line 0
at Example.Main on C:\Users\samarsha\Desktop\QSharpProject\Program.qs:line 8

Expected behavior

Arrays should require a value with which to initialize each cell.
function Default () : 'T should be removed from the standard library.
Q# should avoid making the billion-dollar mistake.

Number 2 is especially dangerous, as Default allows you to create null qubits or null results pretty trivially:
    let q = Default<Qubit>();
    let r = Default<Result>();
    Message($"Values: [{q}] , [{r}]");

This code will output Values: [] , [], showing that both the variables are null.

It turns out, null Result variables allow for some very odd uses. They work in comparisons, but are neither One nor Zero, effectively making Result a ternary value instead of binary:
let r = Default<Result>();
if (r == Zero) {
    Message("Zero");
}
elif (r == One) {
    Message("One");
}
else {
    Message("Two?!?");
}

That code will output "Two?!?" which is both hilarious and ripe for abuse.

Thanks for the great examples @swernli! It’s good to show that null is so dangerous because it’s useful for control flow, people will be tempted to use it, and it can spread throughout a code base and libraries, encouraging more people to use null or defensively check for null.
We should fix this and provide the type-safe alternative: an option type (#406).

Items (1) and (2) are actually identical, of course:
function Default<'T>() : 'T {
    let array = new 'T[1];
    return array[0];
}

I think the notion of default values is incredibly useful in some contexts, but I agree it doesn't make any sense for some types (e.g.: Qubit). That could probably be rectified by having a concept indicating that a type supports default:
concept HasDefault when {
    function Default<'Self>() : 'Self;
}
example Int of HasDefault { ... }
example <'T> 'T[] of HasDefault {
    function Default() : 'T[] {
        return 'T[0];
    }
}
example <'T1, 'T2 where 'T1 is HasDefault, 'T2 is HasDefault> of HasDefault { ... }

Items (1) and (2) are actually identical, of course:

Yes - the implementation of Default is how I discovered this bug. :)

I think the notion of default values is incredibly useful in some contexts, but I agree it doesn't make any sense for some types (e.g.: Qubit). That could probably be rectified by having a concept indicating that a type supports default:

In some contexts, yes, but I'm not sure that a universal default can be applied to a type without knowing that context. Array initializers think that the default Int is 0, but IndexOf would say that the default Int is -1. In other cases, there is no reasonable default and you should use None from Option<'T> instead. I feel like default-ness depends too much on context to be a universal function.

@cgranade Pointed out to me that the documented default of Result is Zero which this behavior of returning null does not agree with. So for at least that case, the underlying implementation of the type should always construct a valid Zero result.
https://docs.microsoft.com/en-us/quantum/user-guide/language/expressions#array-creation

Thanks for pointing out the default value table. There are several types which don't match that table:

Default<String>() is null but should be ""
Default<Result>() is null but should be Zero
Default<Range>() is 0..1..0 but should be 1..1..0
Default<'T[]>() is null but should be new 'T[0]

One way to fix the immediate issue is to update these defaults to match the table. But I think we should revisit the idea of having an "invalid" qubit or "invalid" callable at all.
With proper qubit lifetime management, we can make it impossible to obtain an invalid qubit (e.g. by preventing at compile-time putting a qubit into an array that outlives the using block). At that point uninitialized arrays will be the one remaining way to create a qubit that will crash the program, which would make using qubits in Q# unnecessarily unsafe.
Invalid callables are unavoidable as long as we have fail - but I still think you should have to opt in to creating a callable that will throw instead of opting out.

I have created microsoft/qsharp-runtime#359 for the null/incorrect defaults issue, and repurposed this issue for discussing whether qubits and callables should have defaults (and in general whether every type needs to have a default, or if it should be opt-in like @cgranade mentioned).

A random thought, but if every type needs a default value, then every type has at least one value, which means the void type cannot be represented in Q#. It's not used that often, but void can be useful for proving at compile time that something will never happen.

I think modifying the "new" operator to take an initial value would be a good thing, and actually useful -- it makes it easier to create, say, an array of PailiZs instead of an array of PauliIs. That way, we don't have to require a default value for every type, should we ever want to have a type with no values...
This would be a breaking change, though.

I think modifying the "new" operator to take an initial value would be a good thing, and actually useful -- it makes it easier to create, say, an array of PailiZs instead of an array of PauliIs. That way, we don't have to require a default value for every type, should we ever want to have a type with no values...
This would be a breaking change, though.

Odd idea: remove the new keyword, and make Microsoft.Quantum.Arrays.ConstantArray intrinsic.

I think modifying the "new" operator to take an initial value would be a good thing, and actually useful -- it makes it easier to create, say, an array of PailiZs instead of an array of PauliIs. That way, we don't have to require a default value for every type, should we ever want to have a type with no values...
This would be a breaking change, though.

Odd idea: remove the new keyword, and make Microsoft.Quantum.Arrays.ConstantArray intrinsic.

Actually, I kind of like that...

I like it too. :) The new keyword feels out of place in Q# since it's only used for arrays, but new is typically associated with constructing objects in OOP languages.

// tired:
mutable emptyArray = new 'T[0];
// wired:
mutable emptyArray = EmptyArray<'T>();

I agree, down with new! I really like @cgranade's EmptyArray suggestion.

Out with the new, in with the... er... not new?
Anyway, all joking aside, getting rid of new takes a few more characters, but it's a lot more consistent with how we have expressed things elsewhere Q#. In particular, we can use intrinsic functions in Microsoft.Quantum.Arrays to include all existing functionality except for the functionality that we would like to exclude.
Concretely, I'd start by proposing the following:

Deprecate the new keyword.
Introduce a new EmptyArray<'T>() : 'T[] function in Microsoft.Quantum.Arrays.
Introduce a new function (not sure of best name) of type (Range, (Int -> 'T)) -> 'T[], and perhaps of type (Int, (Int -> 'T)) -> 'T[] to prepopulate arrays from functions without needing another array to map from.
Add a code action to suggest replacing new 'T[0] with EmptyArray<'T>().
Port samples and documentation examples which construct arrays with mutable foo = new 'T[n]; for (idx in 0.. n - 1) { set foo[idx] w/= idx <- expr(); } to use Microsoft.Quantum.Arrays.DrawMany(n, expr, ()).

Is there anything that I'm missing?

How about EmptyArray<'T> for a zero-length array and ConstantArray<'T>(size : Int, element : 'T) for bigger arrays.

Out with the new, in with the... er... not new?
Anyway, all joking aside, getting rid of new takes a few more characters, but it's a lot more consistent with how we have expressed things elsewhere Q#. In particular, we can use intrinsic functions in Microsoft.Quantum.Arrays to include all existing functionality except for the functionality that we would like to exclude.
Concretely, I'd start by proposing the following:

Deprecate the new keyword.
Introduce a new EmptyArray<'T>() : 'T[] function in Microsoft.Quantum.Arrays.
Introduce a new function (not sure of best name) of type (Range, (Int -> 'T)) -> 'T[], and perhaps of type (Int, (Int -> 'T)) -> 'T[] to prepopulate arrays from functions without needing another array to map from.
Add a code action to suggest replacing new 'T[0] with EmptyArray<'T>().
Port samples and documentation examples which construct arrays with mutable foo = new 'T[n]; for (idx in 0.. n - 1) { set foo[idx] w/= idx <- expr(); } to use Microsoft.Quantum.Arrays.DrawMany(n, expr, ()).

Is there anything that I'm missing?

I think we still need ConstantArray to become intrinsic -- perhaps "guaranteed" is better than "intrinsic" -- as you said above, Chris.
We also need to figure out what to do with Default<'T>.

How about EmptyArray<'T> for a zero-length array and ConstantArray<'T>(size : Int, element : 'T) for bigger arrays.
I think we still need ConstantArray to become intrinsic -- perhaps "guaranteed" is better than "intrinsic" -- as you said above, Chris.

ConstantArray already exists, so the change to make it intrinsic can be done without affecting the Q# API. EmptyArray should complement it nicely. We couldn't write EmptyArray in pure Q# using ConstantArray, though, without Default<'T>, such that it would need to be intrinsic as well.

We also need to figure out what to do with Default<'T>.

Sounds like deprecate-and-drop, so that we can close the loophole where Qubit can be effectively null? If we want nullability, explicit DUs and type-parameterized UDTs are the way to go, I think:
newtype Maybe<'T> = Some(Value : 'T) | None();

How about EmptyArray<'T> for a zero-length array and ConstantArray<'T>(size : Int, element : 'T) for bigger arrays.
I think we still need ConstantArray to become intrinsic -- perhaps "guaranteed" is better than "intrinsic" -- as you said above, Chris.

ConstantArray already exists, so the change to make it intrinsic can be done without affecting the Q# API. EmptyArray should complement it nicely. We couldn't write EmptyArray in pure Q# using ConstantArray, though, without Default<'T>, such that it would need to be intrinsic as well.

Yup.

We also need to figure out what to do with Default<'T>.

Sounds like deprecate-and-drop, so that we can close the loophole where Qubit can be effectively null? If we want nullability, explicit DUs and type-parameterized UDTs are the way to go, I think:
newtype Maybe<'T> = Some(Value : 'T) | None();

Dropping Default would be a lovely thing to do. I think everything is simple if we drop it and new at the same time.

One thought with dropping new 'T[length] that we may want to consider: creating default arrays of that form is sometimes used in functions like Mapped or Interleaved (the latter in progress at https://github.com/microsoft/QuantumLibraries/pull/320), where the length of the output array is known exactly. From rough and informal testing, "pre-allocating" in that way can result in an approximately 4× speedup over accumulating the output elements onto an empty array. That's definitely not a huge factor given that in practice the actual function being mapped will still overwhelm that, but I wanted to raise it for awareness nonetheless.

One thought with dropping new 'T[length] that we may want to consider: creating default arrays of that form is sometimes used in functions like Mapped or Interleaved (the latter in progress at microsoft/QuantumLibraries#320), where the length of the output array is known exactly. From rough and informal testing, "pre-allocating" in that way can result in an approximately 4× speedup over accumulating the output elements onto an empty array. That's definitely not a huge factor given that in practice the actual function being mapped will still overwhelm that, but I wanted to raise it for awareness nonetheless.

I guess the problem with using ConstantArray in this situation is that you don't know what the initial value should be. For the long term, it might be interesting to have some way to allocate an uninitialized array with some sort of (compiler-checked) commitment that every element is initialized before the array is either returned from the callable or passed as a parameter to another callable.

I guess the problem with using ConstantArray in this situation is that you don't know what the initial value should be. For the long term, it might be interesting to have some way to allocate an uninitialized array with some sort of (compiler-checked) commitment that every element is initialized before the array is either returned from the callable or passed as a parameter to another callable.

In many cases, we could kind of work around by doing something like using the first element of the output as the input to ConstantArray. In any case, I don't think this is a huge problem such that it should block deprecating new, so much as another usecase that might point to other features such as the one that you suggest.

Can't we make ArrayInit<'a>(initializer : (Int -> 'a), count : Int) instead, which can be implemented as an intrinsic and handle the uninitialized array internally?
function Mapped<'a, 'b>(mapper : ('a -> 'b), array : 'a[]) : 'b[] {
    return ArrayInit(i -> mapper(array[i]), Length(array));
}

That's effectively what the MappedOverRange function does, with the slight modification that it acts on Range instead of Int. Using Composed(mapper, ElementAt(_, array)) as the first input would also do it, even without lambdas. I think my main concern, though, would be with making sure we've carefully identified which functions and operations need to be intrinsic for a minimal working implementation of the Q# standard libraries; we should document somewhere that EmptyArray<'T> and MappedOverRange<'T> are part of that contract, perhaps?

I think it would be nice if Q# could have built-in syntax for empty arrays, even without type inference necessarily - e.g. by allowing type annotations on expressions, so that
function EmptyArray<'a>() : 'a[] {
    return [] : 'a[];
}

I think MappedOverRange being intrinsic or not is a performance issue, which is important, but not necessary for a minimal working implementation, right?

I created microsoft/qsharp-language#46 so that we can move forward with a proposal to remove new from the language. I think we can keep tracking this issue there instead.


MeowBit's acceleration (mg) Y not consistent with PyGamer

Describe the bug
On real hardware, the PyGamer and MeowBit return values with opposite signs.  On simulator their behaviour is consistent.
To Reproduce
Steps to reproduce the behaviour:

Play https://learn.adafruit.com/pygamer-marble-labyrinth-in-makecode-arcade/code-marble-madness-in-makecode-arcade
On simulator (either PyGamer or MeowBit) ball rolls in direction of mouse.  For instance move mouse to top and ball rolls to top.  Move mouse to right and ball rolls to right.
(at this point you'll notice simulator y-tilt animation reversed #1743, but I digress)
try PyGamer hardware - for both X and Y, ball rolls towards edge tilted down
try MeowBit hardware - for X ball rolls towards edge tilted down but for Y ball acts more like a bubble and rises away from edge tilted down (which, it is worth pointing out, is consistent with the simulators visual effect)
Work around is to, on the MeowBit, negate the value returned by "acceleration (mb) Y"

Expected behaviour
Games run, unmodified on all hardware.  Here, hardware vendors and makecode agree on how to interpret "acceleration (mb) Y"
Screenshots
Add screenshots to help explain your problem. You can copy paste the screenshot in the github report. The .gif screen recording is very useful as well.
Desktop (please complete the following information):

OS: [e.g. iOS]
Browser [e.g. chrome, safari]
Version [e.g. 22]

Smartphone (please complete the following information):

Device: [e.g. iPhone6]
OS: [e.g. iOS8.1]
Browser [e.g. stock browser, safari]
Version [e.g. 22]

Additional context
Add any other context about the problem here.

I think the PyGamer is the right behavior - if you set speed to x/y of acceleration, the ball moves downslope (or towards the mouse). So I think this https://github.com/microsoft/pxt-common-packages/pull/1028 needs to be reverted, and the simulator needs to be updated (y swapped). @pelikhan comments?

@pelikhan ?


Portals break controlled inputs

Problem
When using a controlled input in a portal, after typing each letter input focus is lost.
Steps To Reproduce
use this minimal reproducible example: https://github.com/voidpumpkin/yew-playground/tree/portals-focus-lose
try typing more than one letter
Expected behavior
all letters land in the input
Screenshots
https://user-images.githubusercontent.com/32368314/192533617-5bfe4a6a-1b65-4b1f-97cb-7fa88c2e3d0c.mov
Environment:

Yew version: [master]
Rust version: [1.63.0]

Questionnaire

[x] I'm interested in fixing this myself but don't know where to start
[ ] I would like to fix and I have a solution
[ ] I don't have time to fix this right now, but maybe later

React equivalent works: https://stackblitz.com/edit/react-ts-m4ae3x?file=App.tsx


Add tile spacing property to tileMap

Adds a tile_spacing option to tileMaps, which defaults to matching the tile_size in the attached tileSet, but can be used to override it.

Production edit: This closes https://github.com/godotengine/godot-proposals/issues/8187.

Hi, thanks for the contribution !
To be honest I don't understand what kind of issue this solves. I have read the linked proposal but I don't really understand why what you want cannot be achieved with a wider atlas size (like, set atlas's texture region size to 32x32 on an 8x8 grid). From what I understand the main reason is that it gets a bit more complex to edit physics, but that's pretty much it right ?
If that's the case, this could be made an editor settings somewhere or something, but I don't think it makes sense to add that to the TileMap itself.

Hi, thanks for the contribution !
To be honest I don't understand what kind of issue this solves. I have read the linked proposal but I don't really understand why what you want cannot be achieved with a wider atlas size (like, set atlas's texture region size to 32x32 on an 8x8 grid). From what I understand the main reason is that it gets a bit more complex to edit physics, but that's pretty much it right ?
If that's the case, this could be made an editor settings somewhere or something, but I don't think it makes sense to add that to the TileMap itself.

In theory you can define the entire thing as a single 8x8 tileset and just use one tilemap, the problem is that this breaks a ton of godot's tools (such as autotiling/terrains and the box tile system), as each 8x8 grid space now tries to place a 32x32 tile

I'm probably not explaining this very well, so let me try with screenshots.
This two-pass mapping technique puts everything that needs to be grid aligned on a 32x32 tileMap

this allows for things like autotiles and the normal placement tools to work.  However, it doesn't really handle the finer details - I can stick a chair against a wall, but I can't scootch it up to the desk.
Using a second 8x8 tileMap, I can place objects with finer spacing.  So I can do things like arrange objects on the desk, or tuck in the teddy bear.

This workflow works fairly well, but the big issue is that in the current version of Godot, tileSets control how tiles are spaced, so I cannot share the same tileSet across both tileMaps.  I need to duplicate the tileSet and set the 'tile size' property in the resource to 32x32 in one copy, and 8x8 in the second copy.  As they are not automatically synched, that means that any changes (whether it's adding new tiles, moving tiles around on the atlas, tweaking properties like y-offset or physics, etc) need to be done manually.
As you can imagine, this manual syncing adds a lot of annoying overhead when working (as well as providing the bloat of having 100% redundant data in two objects).
This PR detaches the tileset's hardcoded size from the tilemap's tile spacing, which means that I can use only a single tileset, and there's no need for manual synchronization.

Also, got some feedback on discord saying it would look better in the editor if it used the tile spacing instead of the tile size for the grid, and after testing I agreed, so I added that tweak as well.

That sounds like this should be a property of TileMap layer, not the TileMap itself, as the new system is designed for using layers instead of stacking TileMaps.

That sounds like this should be a property of TileMap layer, not the TileMap itself, as the new system is designed for using layers instead of stacking TileMaps.

I thought about that, but it seemed like it would be very confusing to be looking at the same point on the screen and changing layers within a tilemap, and having the x and y tile coordinates change depending on what layer you were on.


Theorycraft "Compare vs. equipped" shows incorrect weapon diff

For example:

Keqing has R4 Lion's Roar equipped
the theorycraft page is using R1 The Black Sword

When using "Compare vs. equipped," the diff should display a Normal/Charged Attack DMG Bonus of "0 + 20%," but it incorrectly shows "35% - 15%":

Presumably, it's comparing against an imaginary R4 The Black Sword instead of the R4 Lion's Roar.
Changing Keqing's current weapon to R5 updates the diff to show "40% - 20%" instead.
The values on the rest of the page don't seem to be affected; it's just a display issue on the weapon section.

The TC Tab appears to be using the refinement level of the weapon you currently have equipped when 'comparing' a new weapon.
For example; If you have a R1 Dull Blade on and swap to a R5 PJC within the TC Tab - it will compare to a R1 PJC.
And if you have a a R5 Catch on and swap to a R1 Deathmatch - it will compare to a R5 Deathmatch


Feature request: Generate comprehensive unit tests for generated code...?

Is your feature request related to a problem? Please describe.
In order to detect any regression when translating low level code into high level code, Spice86 is very valuable.
However, more subtle changes in gameplay logic (for example) might get unnoticed (ie. it doesn't crash or generate a graphical or audio glitch, but the Emperor does not ask for the usual amount of Spice by a off-by-one margin, for example)
Describe the solution you'd like
A comprehensive set of unit test. Possibly, auto-generated
Describe alternatives you've considered
Any open-source alternative, including writing our own for our own needs (that is, DUNE).
But there is none at the moment.
Additional context
The DUNE code is a mess, so a good safety net seems appropriate.
Also, IntelliTest is locked behind the very high price of VS Enterprise Edition, is not open-source, only works with the old .NET Framework for Windows, and might be not very valuable in the end. Unless, maybe, if it is guided towards a good solution via attributes :
https://devblogs.microsoft.com/visualstudio/intellitest-for-net-test-more-with-less-effort/
https://learn.microsoft.com/fr-fr/previous-versions/visualstudio/visual-studio-2015/test/generate-unit-tests-for-your-code-with-intellitest?view=vs-2015&redirectedfrom=MSDN
https://devblogs.microsoft.com/devops/intellitest-one-test-to-rule-them-all/
https://devblogs.microsoft.com/devops/smart-unit-tests-test-to-code-binding-test-case-management/
https://www.reddit.com/r/dotnet/comments/3nmq1o/automatically_generate_unit_tests_for_your_code/
It is based on this research project:
https://www.microsoft.com/en-us/research/publication/pex-white-box-test-generation-for-net/

Maybe you could do unit tests based on saved states?

Although IDK if your save states are compatible after replacing instructions.
Maybe you could tell the unit test to override certain values in the starting save state (like current instruction address) and similarly ignore or override certain values in the resulting save state.


NotoColorEmoji.ttf is not a valid font on Mac

Double-clicking on the .ttf file opens FontBook but FontBook will not display the font.
The font cannot be used in any mac application even if installed in the Library/Fonts folder.
NotoEmoji-Regular.ttf works fine though.

MacOS does not support the color font format used in NotoColorEmoji, unfortunately, and currently we do not build a font in the format it supports.

I just tried importing the fonts into Font Book and there are two errors: 'sfnt' required and System Validaton have the red X. Maybe someone will find that useful. I'm on OS X 10.11.6 (El Capitan).

@HiPhish Same on MacOS Sierra

Should this issue really be titled something like Provide an Apple-compatible font file using the sbix Opentype table?
I tried to find another project that already did that, but so far without success. Emojione provides fonts in several formats. I couldn't find one for Twemoji either. On the other hand, the community provides several emoji font builds for Android.

Are there any plans to make this font compatible with iOS and macOS?

We have no plans to do that at this time.

@vXBaKeRXv makes various .deb packages with alternative sbix emoji fonts to be installed with Cydia on jailbroken iOS devices. This includes Noto as found on Android Nougat and Oreo.

This font uses https://docs.microsoft.com/en-us/typography/opentype/spec/cbdt; it will only work in environments that support that format. Until something like https://github.com/googlefonts/colr-gradients-spec/blob/master/colr-gradients-spec.md is broadly supported this will remain the case.

Following @Crissov's response, someone wrote a Medium article how to do it: https://medium.com/@77belac77/how-to-get-googles-emoji-on-your-macbook-f99da72cf126, for others like me who still want this, quoting from the Medium article:

The Step-by-Step

Head over to this Github repo and download the .deb archive that contains your emoji set of choice.
Extract/open the .deb archive. Once inside, extract the archive named data.tar.gz. You’ll now see a folder called var. Inside that is a folder called mobile. Keep on going deeper and you’ll eventually reach your destination: a font file named<EMAIL_ADDRESS>Rename<EMAIL_ADDRESS>by putting spaces between each word and removing the ending, so that the new file name is Apple Color Emoji.ttf.
Keeping that Finder window open, start up Font Book (the built-in app where you can manage all the fonts installed on your device). In the left side panel at the top, select the ‘Computer’ option to show all the fonts you’ve installed as well as the default system fonts. If you scroll down the list of fonts, you should see an entry called Apple Color Emoji close to the bottom. This is the font file you’ll be overwriting, but don’t worry, this process is easily reversible!
Drag the Apple Color Emoji.ttf from the Finder window into Font Book. You’ll be prompted to install the font. It may warn you about it being a duplicate, but we already know that, so keep on going. Once you finish installing the new emoji font, you’re good to go! Try out your new emoji set by opening up your browser of choice, selecting a text field, and press CTRL+CMD+SPACEBAR to quickly bring up the emoji picker.

@canada11 Any way to get the latest version working?

Does this help?: https://apple.stackexchange.com/questions/248027/can-i-use-google-emoji-on-mac/409205#409205

@canada11 Not really — the emoji font recommended there is proprietary (the answer makes it sound as if it's open-source, but it actually isn't). I'm working on an open-source Flutter app and thus can't use this font there.
Thanks anyway, though.


Page “Installing Kubernetes with KRIB” not suitable according to content guide

This is a Bug Report

Problem:
The page Installing Kubernetes with KRIB does not fit with the website content guide and the criteria for permitted content.
Proposed Solution:
Remove the page https://kubernetes.io/docs/setup/production-environment/tools/krib/
Netlify does not support 410 Gone as a response status, so remove the page outright (no redirect etc).
This removal should happen before the Kubernetes v1.19 release.
Page to Remove:
https://kubernetes.io/docs/setup/production-environment/tools/krib/
Additional Information:
Part of issue #20232
/kind cleanup

/assign

I'm a beginner at programming.
Is this issue difficult for beginner?

@Nishikoh you can find beginner-friendly issues: https://github.com/kubernetes/website/contribute/
and you can also read https://kubernetes.io/docs/contribute/start/
You might need to learn MarkDown to work out how to make changes.

@sftim Thank you for your reply.
I will try next chance :D

This would make a good first issue, though.
/good-first-issue

"good first issue"
In that case, I want to retry this issue.
Could I tackle this issue?

@Nishikoh Absolutely!

/close
Addressed in #20515


corridor-init-forwarding.service use Before=shutdown.target Conflicts=shutdown.target

When using DefaultDependencies=No, also
Before=shutdown.target
Conflicts=shutdown.target

should be used. (I learned that from you, @rustybird, I think.)
https://github.com/rustybird/corridor/blob/master/systemd/corridor-init-forwarding.service.in

Should we really remove the CORRIDOR_FILTER chain on shutdown? Doing so seems harmless (corridor-stop-forwarding sets net.ipv4.ip_forward=0 first), still looks a little weird though.

Oh I think I remember what you're referring to. My understanding is that DefaultDependencies=no does not mean you should necessarily use these directives, however, if you want such a service to be stopped on shutdown, then you should use both Before= and Conflicts= (not just one of the two).

netfilter-persistent solves this by not unloading iptables rules by
making a difference between:

service netfilter-persistent stop (does not flush iptables rules)
service netfilter-persistent flush (does flush iptables rules)

(Should not be an issue anyhow since networking would be systemd stopped
before the firewall.)
It's rather minor. What does systemd do if services are still running
after shutdown.target was reached? Does it force stop them? Does that
slow down shutdown (waiting for timeouts) or otherwise have adverse effects?
Using Before=shutdown.target Conflicts=shutdown.target seems more
correct, since it avoids the above.

What does systemd do if services are still running after shutdown.target was reached? Does it force stop them?

It sounds like the services remain active. Not sure if leftover child processes get killed, but that's not an issue with oneshot services.
Closing this, but please reopen if you find that not having {Conflicts,Before}=shutdown.target causes slowdowns or other problems.


disallowQuotedKeysInObjects:allButReserved no longer includes ES3 future reserved words

For example https://gerrit.wikimedia.org/r/#/c/235864/4/resources/src/mediawiki/mediawiki.jqueryMsg.js required an inline // jscs: disable disallowQuotedKeysInObjects to pass properly for code containing an object literal with an "int" key.
This used to work I believe, but regressed in v2.x.
I suspect 91e9a38c45bb41e54feccb6d004be73d54c024c4 ("introduce reservedWords instead of utils.isES3") to be the cause:
                     if (mode === 'allButReserved' &&
-                        (utils.isEs3Keyword(key.value) || utils.isEs3FutureReservedWord(key.value))
+                        (reservedWords.check(key.value, file.getDialect()), true)
                     ) {

It used to always check both ES3 keywords and future reserved keywords. Now it uses an abstraction layer that takes the "file dialect" as argument (ES3 or ES5?). I don't know where that comes from or how to control it but I guess it's set to ES5, thus causing int to no longer be in the effective list of reserved words.
How do I enable ES3 mode?

---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/26508901-disallowquotedkeysinobjects-allbutreserved-no-longer-includes-es3-future-reserved-words?utm_campaign=plugin&utm_content=tracker%2F281640&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F281640&utm_medium=issues&utm_source=github).

Ah, found it.
Changelog -> "es3" -> "Docs: add es3 option to OVERVIEW.md"


Benchmark lazy regridding

Similar to #98 except for cubes with lazy data.

@jamesp anything left before this can be merged?

Seems good to me, go for it!


[fix] Fix chunks function not working on certain iterables

When called with a set, the chunks function gave back as many chunks, as the length of the list.

Should I fix this on all of the calling sites?


Database layer is not compiling sql properly

see thread http://forum.codeigniter.com/thread-646-post-3402.html#pid3402
problem description for one problem and a solution for another.

The query builder is made for simple things, not to be fed with lines of raw SQL ... that's what query() is for.

Let me make it easier for you.
SELECT ProductName, ROUND(Price,2) AS RoundedPrice FROM Products;
This select is easy and will fail too.

Yes it will, because we handle field names, not functions. And you can optionally disable quoting because of that.

The original bug in that particular post only exists in CI 2, not in CI 3. In CI 2, using a mixture of select() and select_sum/min/max/avg functions in which one or more select() calls comes after one of the other methods causes it to ignore the $escape value passed to one or more of the later select() calls. This is because DB_active_rec's _max_min_avg_sum() method doesn't set $this->ar_cache_no_escape[], causing the later select() calls' $escape values to be assigned to the wrong portion of the select statement in the final output.
DB_query_builder's _max_min_avg_sum() method sets $this->qb_no_escape[] = NULL; so any similar issue in CI 3 is actually a different problem with a similar result.
Given the complexity of the select statement in that post, though, we could probably all find different bugs in the output while trying variations of the original input.
It might be useful to have a function like _max_min_avg_sum() to handle numeric/math functions, as a large number of the common functions are very well supported cross-platform.


Getting failure everytime I'm trying to add it

Hello
I am trying to add this and every time I'm getting a failure. Could this be due to the move to PAT over the deprecated API keys?
I have given the key all the Domain permissions yet it still fails.

Hum, unfortunately, Gandi is no longer my registrar. So it's impossible for me to investigate this problem.
Nevertheless, I can accept any PR, or even give collaborator access to the repo.

Hi
this PR #4 should fix the problem.


[test] Modernize hashing throughout the test suite

(This PR was split out of #20685.)
SE-0206 deprecated hashValue as a Hashable requirement, replacing it with hash(into:), which is the new primary hashing interface.
This PR updates types throughout the test suite to implement hash(into:) instead of (or in addition to) hashValue.
rdar://problem/46344811

@swift-ci please test


Why just discard text encoder  and representation enhancement module?

If I want a ultimate performace, it is better to reserve the text encoder  and representation enhancement module, isn't it?
I do not see the discussion in the ablation studies.
Thanks

@XiaogangYin No, it is no need to reserve the text encoder to get an ultimate performance. Our model aims to utilize multi-modal solutions for logo embedding training where image embedding queries learn supplementary knowledge from textual embeddings automatically. We believe such a training method results in a powerful image encoder which is different from and superior than traditional method. Also, we remove text encoder in inference stage to ensure fairness under comparison with traditional methods and ensure efficiency to make it a practical model that can be used directly. We believe it is one of the advantages of our work that removing the text encoder branch in the inference stage.


Hope that there is a way to type chinese in Textinput

Please make a way to type chinese in Textinput, thanks a lot.

I comment the line: videodata->ime_uilesss = UILess_SetupSinks(videodata);
in function IME_Init of SDL_windowskeyboard.c. and use buildozer to generate a apk.
But still not work, anyone can help?

after i change to another chinese input method in system settings, it solved. I will close it.


Missing docs for creating custom fixers

In documentation, there are no information about creating custom fixers whatsoever. We had a really tough time figuring out what is wrong with our custom fixers after upgrading from 1.* to 2.*. I have created new pull request for adding information about configuration changes in UPGRADE.md but I believe that basic tutorial for creating custom fixers in documentation could be very useful.

There is already doc/COOKBOOK-FIXERS.md file that explains how to develop a new fixer but it focuses on creating internal fixers.
The documentation currently lacks two points:

How to register and enable a custom fixer
The convention for return value of getName() method of custom fixers - see FixerNameValidator which says that custom fixer name must be in format: FirstPart/second_part but comment in FixerInterface says just that the name should be all lowercase.

Hi ;)
Looks like some valid points,
could you please send a PR ?

Hi, I believe so, but it will probably take a while :)

Documentation was updated in #3475 (see https://github.com/FriendsOfPHP/PHP-CS-Fixer/blob/master/doc/custom_rules.rst).


not able to run watson sample

Hi,
I am using testmybot package to demonstrate chatbots testing. I am trying to execute watson sample. But somehow I am not able to make it up and running. Below are the steps followed:

Downloaded the project testmybot
Modified botium capaabilities in testmybot.json file located in watson folder
Modified "restaurant.convo.txt" under "testmybot\samples\watson\spec\convo" folder
inside watson directory i gave "npm install" followed by "npm test"
I am getting error. please find the attached error report.

Please let me know if I have missed out anything.

This is an NPM-related problem, not testmybot.
Please try to remove the "package-lock.json" file and the "node_modules" directory and run "npm install" again.

I have watsonconversationservice bot.. for that I am using testmybot. To test my bot I have done the following changes

changed the .convo.txt file located at "testmybot\samples\watson\spec\convo\restaurant.convo.txt" with my conversations
added my watsonconversation details in testmybot.json file located at "testmybot\samples\watson\testmybot.json"
Is it sufficient or do I need to make any changes inorder to run the sample. Please correct me if I am wrong.
Also could you please tell me the steps to test the watson sample.
Thanks in advance

to run the sample you don't have to do anything else. just "npm install" / "npm test".
to use it with your own bot, of course you will have to change it.

I am able to run the program after changing .convo.txt file with tescases specific to my bot. also I have changed testmybot.json with configurations specific to my watson bot. after changing all these i have done npm install followed by npm test. Below is the output that i got

It is showing 0 failures. If i want to see the test results where can I find them. Is there a way to see the execution of the test cases step by step.

Well, that actually looks like it worked. When enabling debug mode, you will see more output:
https://github.com/codeforequity-at/botium-core/wiki/Troubleshooting

it is working perfectly fine. Tested multiple scenarios. But why is not displaying the testcases in the console if all the test cases pass. only for failure cases it is displaying the messages.

well, testmybot itself is not a test runner. showing output is the job of a test runner like jasmine and mocha. most samples use jasmine. with command line parameters the output type can be configured. they can generate test output reports to be processed by a build server. and much more.

Botium is comparable to what Selenium/Appium are doing (unified API and "Page Object Model").
TestMyBot is a layer above Botium to integrate Botium with CI/CD pipelines and test runners like Mocha and Jasmine.
https://github.com/codeforequity-at/botium-core/wiki/What-is-Botium-%3F

Does testmybot provides support for testing bots developed using kore.ai
Can you please provide some inputs on this.

Currently supporting Watson and Dialogflow. Would be happy to get contact to someone from kore.ai to talk about integration.

Hi could you please provide your email id so that we will help you in getting contact with the kore.ai team. We can have an email communication on this.

hello "at" testmybot.com

ok thank you.. we will communicate with you over email.


Package request: Komorebi

Project description
Komorebi is an awesome animated wallpapers manager for all Linux platforms

Komorebi is an awesome animated wallpapers manager for all Linux platforms
Metadata

homepage URL:
source URL:https://github.com/cheesecakeufo/komorebi
license: mit, bsd, gpl2+ , ...
platforms: unix, linux, darwin, ...

duplicate of https://github.com/NixOS/nixpkgs/issues/190814


2.2.0

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 98.427%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
1827

Relevant Lines:
1846

💛  - Coveralls