jq: error (at <stdin>:1): Cannot iterate over null (null)

From a Hotel Wifi I get:
$ git log --oneline --no-decorate -1
6cb4456 improved subnet detection, introduced ROU element in report. - many ISPs allocate small blocks for PtP networks (or customers allocations), and take the time to define them in RIPE. But Cymru/Pwhois don't index these blocks (since they're not routed directly but aggregated in larger routes). Now `asn` will try to identify these subnets even if they're routed within larger prefixes. - NET element refers now to the smaller inetnum, while ROU reports the target IP's route. - Examples:   - asn -n <IP_ADDRESS>   - asn -n <IP_ADDRESS>   - asn -n <IP_ADDRESS>   - asn -n <IP_ADDRESS>
$ ./asn -v www.molgen.mpg.de

────────────────────────────────────────────────────────────
			WARNING

No IPQualityScore token found, so disabling in-depth threat
analysis and IP reputation lookups. Please visit
https://github.com/nitefood/asn#ip-reputation-api-token
for instructions on how to enable it.
────────────────────────────────────────────────────────────

╭──────────────────────────────────╮
│ ASN lookup for www.molgen.mpg.de │
╰──────────────────────────────────╯

- Resolving "www.molgen.mpg.de"... 1 IP address found:

[2022-11-10 19:58:14]   DEBUG   curl -s api64.ipify.org
[2022-11-10 19:58:16]   DEBUG   curl -m5 -s https://stat.ripe.net/data/abuse-contact-finder/data.json?resource=<IP_ADDRESS>&sourceapp=nitefood-asn
[2022-11-10 19:58:17]   DEBUG   curl -m4 -s https://ipmap.ripe.net/api/v1/locate/<IP_ADDRESS>/best
[2022-11-10 19:58:18]   DEBUG   curl -m4 -s http://ip-api.com/json/<IP_ADDRESS>?fields=status,message,country,countryCode,regionName,city,mobile,proxy,hosting
[2022-11-10 19:58:18]   DEBUG   curl -m2 -s https://api.incolumitas.com/datacenter?ip=<IP_ADDRESS>
[2022-11-10 19:58:18]   DEBUG   curl -m4 -s http://api.stopforumspam.org/api?json&ip=<IP_ADDRESS>
[2022-11-10 19:58:19]   DEBUG   curl -m5 -s https://api.greynoise.io/v3/community/<IP_ADDRESS>
[2022-11-10 19:58:20]   DEBUG   curl -m5 -s https://internetdb.shodan.io/<IP_ADDRESS>
[2022-11-10 19:58:21]   DEBUG   curl -s https://stat.ripe.net/data/rpki-validation/data.json?resource=680&prefix=<IP_ADDRESS>/16&sourceapp=nitefood-asn

 <IP_ADDRESS> ┌PTR npsw-www.mpg.de
               ├ASN 680 (DFN Verein zur Foerderung eines Deutschen Forschungsnetzes e.V., DE)
               ├ORG GWD Goettingen
               ├NET <IP_ADDRESS>/16 (GWDG)
               ├ABU<EMAIL_ADDRESS>/<EMAIL_ADDRESS>               ├ROA ✓ VALID (2 ROAs found)
               ├TYP  Mobile network IP
               ├GEO Göttingen, Lower Saxony (DE)
               ├CPE [APP: apache:http_server] [APP: rubyonrails:rails] [APP: ruby-lang:ruby]
               ├POR Open ports: 80, 443
               └REP ✓ NONE

╭────────────────────────────╮
│ Trace to www.molgen.mpg.de │
╰────────────────────────────╯

[2022-11-10 19:58:22]   DEBUG   mtr -> <IP_ADDRESS> (5 rounds)
 Hop IP Address                                                                               Loss%      Ping avg     AS Information
  1. _gateway (<IP_ADDRESS>)                                                                     0%        1.5 ms    BOGON  rfc1918 (Private Space)
  2. host18523696-201.telnaptelecom.pl (<IP_ADDRESS>)                                          0%        1.4 ms   [AS43372] TELNAP, PL
  3. ???                                                                                100%             *   (No reply)
  4. host185186152-40.telnaptelecom.pl (<IP_ADDRESS>)                                          0%        7.9 ms   [AS43372] TELNAP, PL
  5. <IP_ADDRESS>                                                                              0%        2.1 ms   [AS20804] ASN-TELENERGO ul. PERKUNA 47, WARSZAWA, PL
[2022-11-10 19:58:36]   DEBUG   curl -s https://www.peeringdb.com/api/ixpfx?prefix__startswith=88.220&protocol__in=IPv4
  6. <IP_ADDRESS>                                                                              0%       21.5 ms   (EXATEL-NET)
[2022-11-10 19:58:38]   DEBUG   curl -s https://www.peeringdb.com/api/ixpfx?prefix__startswith=88.220&protocol__in=IPv4
  7. <IP_ADDRESS>                                                                              0%       18.0 ms   (EXATEL-NET)
[2022-11-10 19:58:39]   DEBUG   curl -s https://www.peeringdb.com/api/ixpfx?prefix__startswith=88.220&protocol__in=IPv4
  8. <IP_ADDRESS>                                                                               0%       18.1 ms   (EXATEL-NET / Connected by EXATEL S.A.)
[2022-11-10 19:58:41]   DEBUG   curl -s https://www.peeringdb.com/api/ixpfx?prefix__startswith=88.220&protocol__in=IPv4
jq: error (at <stdin>:1): Cannot iterate over null (null)
  9. <IP_ADDRESS>                                                                               0%       16.3 ms   (EXATEL-NET / Connected by EXATEL S.A.)
 10. ???                                                                                100%             *   (No reply)
 11. cr-han2-be6.x-win.dfn.de (<IP_ADDRESS>)                                                    0%       25.1 ms   [AS680] DFN Verein zur Foerderung eines Deutschen Forschungsnetzes e.V., DE
 12. kr-goe12-13.x-win.dfn.de (<IP_ADDRESS>)                                                    0%       27.9 ms   [AS680] DFN Verein zur Foerderung eines Deutschen Forschungsnetzes e.V., DE
C 13. gv-GWDGIR-gwdg.net.gwdg.de (<IP_ADDRESS>)                                                 0%       27.8 ms   [AS680] DFN Verein zur Foerderung eines Deutschen Forschungsnetzes e.V., DE
 14. npsw-www.mpg.de (<IP_ADDRESS>)                                                             0%       26.2 ms   [AS680] DFN Verein zur Foerderung eines Deutschen Forschungsnetzes e.V., DE

Trace completed in 22 seconds on 2022-11-10 19:58:44 CET

╭──────────────────────────────╮
│ AS path to www.molgen.mpg.de │
╰──────────────────────────────╯

  43372  TELNAP (Local AS)
 ╭╯
 ╰20804  ASN-TELENERGO ul. PERKUNA 47
 ╭╯
 ╰680    DFN Verein zur Foerderung eines Deutschen Forschungsnetzes e.V.

Hey @paulmenzel!
here's a run down of what I think is happening:

the path to your target crosses a bunch of hops (the 88.220.x.x ones) which belong to unannounced prefixes (likely used internally for a PNI/internal network handover between the "main" ASN-TELENERGO network and the EXATEL-NET one - which I assume is some subdivision of the former - not really familiar with Polish ISPs). Therefore Team Cymru has no data about the 80.220.x.x IPs.
Since 80.220.x.x is unannounced and unknown, asn tries to detect if it's an IXP prefix, by querying PeeringDB
PeeringDB has recently introduced throttling if you query them without an API key (which I honestly deem overkill), so while this should not happen very often during daily use (it's rare to find more unannounced subsequent IPs in a traceroute, they're more likely private IPs than unannounced public ones), in your scenario we're querying PeeringDB continuously.
After two/three queries in rapid succession, PeeringDB will fail on you with a "throttled" error - you can quickly verify this by running this command in a shell and repeating it for 3/4 times : curl -s "https://www.peeringdb.com/api/ixpfx?prefix__startswith=88.220&protocol__in=IPv4"

I think it's not worth it to introduce the burden of yet another API key just for PeeringDB (I strive to focus on free, public APIs that require no key - that's why I added shodan only after I found out about their "no API key" service aka InternetDB)
Nevertheless, it's an error and it has to be handled. I could either cache the previous queries so as to not run them more than once on the same subnet (i.e. it would query 88.220.x.x only once, and thus not get throttled), or simply choose to ignore the "throttled" json response, and get a clean output even though under the hood it's not really getting anything from PeeringDB anymore and can potentially miss a real IXP later in the trace. It's an edge case from what I can tell, so it may not be worth it, but I'm open for suggestions in case you had this happen on you more often.
Thanks for reporting!


e2e: Add VMLiveUpdateFeaturesGate label to hotplug affinity tests

What this PR does / why we need it:
Hotplug affinity tests should be labelled by the proper label.
Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes #
Special notes for your reviewer:
Checklist
This checklist is not enforcing, but it's a reminder of items that could be relevant to every PR.
Approvers are expected to review this list.

[ ] Design: A design document was considered and is present (link) or not required
[ ] PR: The PR description is expressive enough and will help future contributors
[ ] Code: Write code that humans can understand and Keep it simple
[ ] Refactor: You have left the code cleaner than you found it (Boy Scout Rule)
[ ] Upgrade: Impact of this change on upgrade flows was considered and addressed if required
[ ] Testing: New code requires new unit tests. New features and bug fixes require at least on e2e test
[ ] Documentation: A user-guide update was considered and is present (link) or not required. You want a user-guide update if it's a user facing feature / API change.
[ ] Community: Announcement to kubevirt-dev was considered

Release note:

NONE

/cc @vladikr @xpivarc

/approve @fossedihelm Thanks for the fix! can you please update the PR title and description that its VM node affinity tests rather than CPU hotplug tests?

@enp0s3 Thanks you! Done


New Pull request and some cleaning

@embee8 @sdamasoc @jandersonhill
I added 6 PR. Is there anything else I need to do? Could someone take a look?
I also think you can close:
#77 - outdated and without answer
#74 - outdated , think that solved, and I added PR to help in future
#73 - added PR to solve this
#69 - solved and I added PR to help in future
#31 - added PR to solve this

I clearly need to figure out notifications on here as I missed these requests and it looks like you've been very busy resolving them!
77 - agreed, I'm not sure what was being asked for here
74 - this approach makes sense
73 - thanks
69 - good thinking
31 - thanks
It looks like one of us needs to merge the PRs. I can test the changes on my own system at the beginning of the week, with the exception of eco mode (which I don't seem to have either).

@jandersonhill I will be very grateful for testing and further action.
As for this ecoMode, unfortunately I do not have it either. I wrote this at the user's request and he tested.
I strongly recommend to release the beta before the official release - surely a group of loyal enthusiastic users (including me) will be willing to test the beta.

@jandersonhill When you release the beta, I will test it on my AC.

Thanks, @mkz212. It's been a busier start to the week than expected - I'll aim to get this sorted in the next 48 hours.

@jandersonhill
I improved all the PR (fine touches).
By the way, I have a small suggestion - tests of new PR could start automatically (in the sense immediately after adding a new PR / code editing).

@jandersonhill I also suggest making a separate branch and merge PRs to it and release a beta from this branch.

@mkz212 That was my thinking too :-)

@jandersonhill
I suggest that in this order merge and release beta:

#88 and #90
#85 and #86
#87
#89

Can you run these PR tests? And maybe already create a branch for tests, merge the first and release the beta?

@jandersonhill I also suggest making a separate branch and merge PRs to it and release a beta from this branch.

@mkz212 Have you got a preferred version number for the new beta?

@jandersonhill 1.7.0 will be ok.

@jandersonhill So what's your plan? When the first beta?

Look at this this evening, once the children are in bed

@jandersonhill branch name is 1.7a ?

That's right. I thought we could test #88, #90, #85, #86 in 1.7a, #87 in 1.7b, and #89 in 1.7c (unless you feel differently)?
In the meantime, I've moved your PR requests to the beta branch.

@jandersonhill
Beta released for the test should be 1.7.0-beta.1 , 1.7.0-beta.2 etc. So it won't be better to name branch 1.7.0 to maintain consistency? Alternatively 1.7.0a, 1.7.0b, etc.?
Thank you for moving.
Ready for testing.

Yes, that makes sense, I've renamed it. I see the pull requests workflows from outside collaborators has already been changed to 'require approval for first-time contributors'.

@jandersonhill ok so can you merge this first 4 PRs and release first beta?

@jandersonhill I updated another #86 - forgot to add the default value for maxAttempts in case config has never been saved yet.

Yes, I'll merge these and release beta 1 shortly.
PS Just seen your other message about #86, understood.

Can you see the published changes in the beta branch?

@jandersonhill
No.

Did You publish it via NPM?

I didn't publish to NPM just yet in case there were issues we picked up on tomorrow. Shiny, shiny and all that!

@jandersonhill I meant you to post to NPM but AS BETA. Otherwise it can not be installed.

Are you comfortable enough to publish on NPM over a manual install first?

@jandersonhill
It's not about me because I have had these files at my place for a long time. More tests are needed because, I for example, do not have AC with Eco mode and my AC has a temperature sensor in the internal unit and some do not have and this also needs to be tested. Therefore, please release the beta through npm.

@mkz212 Good to know. I'm not familiar with publishing to npm and will need to look at the workflow in the morning

@jandersonhill In the plugin settings, I have the official version 1.7.0 came out.

When it comes to publishing to npm, I don't know about it. But here is a good example of the difference between latest and beta: https://coderwall.com/p/l_7acq/publish-beta-versions-of-npm-modules

@jandersonhill Skoro już wyszło to zainstalowałem.

logs work (But I had to restart HB to start working):

no errors in the logs

the AC itself also works without a problem

config looks ok

After special introduction of incorrect login details everything works as expected (after a small correction - I did PR).

@jandersonhill second PR fix

@jandersonhill
Since you've already released it as public and not beta, I propose:

leave this edition as is
merge two PR that I have now added and release 1.7.1 also as public

in both versions changelog will be:

a new way to manage errors in logging, in the settings you can select the maximum number of incorrect login attempts (or no limit)
minor corrections and improvements

Next:

Create a new branch called 1.8.0-beta
Merge another PR - #87
Release version 1.8.0 beta 1 (as beta!)

@jandersonhill I close this Issue because it does not have to be so public, but we can write here further in a closed thread.

When it comes to publishing to npm, I don't know about it. But here is a good example of the difference between latest and beta: https://coderwall.com/p/l_7acq/publish-beta-versions-of-npm-modules

I'm also new to publishing to NPM - there's a workflow to publish to NPM, but not one to publish a beta which may be what's needed. I'll look at the article above. Later today, I'll publish a new public release with the additional PR's and then look at creating a beta release for 1.8.0.

@jandersonhill Since it came out, I installed it.

logs work (But I had to restart HB to start working - i have it running as child bridge so mayby that is the case):

Of course, there are so many lines here because I tested.

no errors in the logs
the AC itself also works without a problem
config looks ok

Appears to work fine in my environment too. No reboot was required in my case, but I'm not using a child bridge.

@jandersonhill Remember to improve the version to 1.7.1 because I did not change it in package.json

@jandersonhill I think you can duplicate this workflow and only change npm publish to npm publish --tag beta ?

Would you like me to update package.json?

@jandersonhill

Would you like me to update package.json?

I don't know how you manage the version. is there a suitable command for this workflow? Yes, do it so that it is the right version. Thanks!

@jandersonhill I think you can duplicate this workflow and only change npm publish to npm publish --tag beta ?

Yes, I saw that was the only difference between what I did last night and the link you sent over earlier today – I tagged it with the version number '1.7.0beta1', rather than simply 'beta'.

@jandersonhill

Would you like me to update package.json?

I don't know how you manage the version. is there a suitable command for this workflow? Yes, do it so that it is the right version. Thanks!

If package.json is updated, I believe package-lock.json should automatically be updated by the npm workflow

@jandersonhill  I know that there are several methods, e.g. change in package.json or the appropriate command in the npm terminal but I have never published myself so I will not help in this matter

@jandersonhill 1.7.1 seems to be ok - no problems that was in 1.7.0 👍
We can merge next PR to next beta (1.8.0) and release as beta.

Yes, I saw that was the only difference between what I did last night and the link you sent over earlier today – I tagged it with the version number '1.7.0beta1', rather than simply 'beta'. You live and learn!

Ok, I've tested this. If you set the package as a pre-release and tag it 'beta' within the npm workflow, it will publish the release as a pre-release, but remain invisible in the NPM repository (unless you use the format npm install -g homebridge-panasonic-ac-platform@beta).
That said, if I look at the workflow for last night, the release is clearly marked as pre-release, so I'm a bit confused as to why it was flagged as the latest production version on npm.

@jandersonhill What you fill on github only serves as a changelog. It is the npm that manages the versions and releases. Can you paste me a screenshot or code of this workflow?

npm install -g homebridge-panasonic-ac-platform@beta

Yes. Each branch can be installed using the appropriate command in the terminal. But only when you publish via npm it will be visible in plugin - update or plugin install alternate version.

@jandersonhill When you publish beta with #87 I suggest you search Issues for people who have problems because they don't have internal temp and invite them to beta test and get feedback. My AC have internal temp sensor so i cannot test this.

npm install -g homebridge-panasonic-ac-platform@beta

Yes. Each branch can be installed using the appropriate command in the terminal. But only when you publish via npm it will be visible in plugin - update or plugin install alternate version.

That was after publishing to npm (pre-release versions appear to be invisible unless you use the command above to install manually). It does not show up on HomeBridge. If you change it to a production-ready release and re-publish, it will appear as available on HomeBridge.
This has implications for this evening's 1.8.0-beta release and it might be that we have to uncheck the 'Set as the latest release' option instead.

@jandersonhill can you show me this workflow for publishing to npm?

@jandersonhill can you show me this workflow for publishing to npm? (Of course, without well-groomed sensitive data like tokens, etc.)

@mkz212 Sure, here it is:
# See: https://help.github.com/actions/language-and-framework-guides/publishing-nodejs-packages

name: Publish package to npm

on:
  release:
    types: [created]

jobs:
  # The prepublishOnly script lints and builds the project (see package.json)
  publish-npm:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        with:
          node-version: 16
          registry-url: https://registry.npmjs.org/
      - run: npm ci
      - run: npm publish
        env:
          NODE_AUTH_TOKEN: ${{secrets.npm_token}}

@jandersonhill I thin that if you duplicate it and in second workflow you change - run: npm publish to - run: npm publish --tag beta it should allow you to publish beta ?

Thanks, I'd overlooked this late last night.

@jandersonhill I wonder if I should merge both PRs : #87 and #89. Both of these PR must be tested by people who have specific AC. So mayby merge both?
But first I would test if beta publishing works. Even if you are to let the current version as 1.8.0 beta 1, nothing wrong will happen.

@mkz212 I think it depends on the risk of an issue in one of the PR's creating problems. It certainly simplifies things to test both at the same time. As we plan to mark it as a beta, people should be aware of this.
Your call...

@jandersonhill I would merge both. My AC not have these functions and the code did not create errors - just functions that I do not have did not activate. But a few people confirmed to me that it works for them. And as you say - it will be beta.

@jandersonhill I see that @embee8 spoke in a different thread. Mayby he will advise you on how to release a beta?

@mkz212 Yes, it looks like he's going to get back to us on this :-)
In the meantime, I may just modify the workflow temporarily. I'm likely to be offline for the next three hours and will look at this when I get back. Once I've successfully tested that part of the process, I'll release the 1.8.0beta.
Let me know if you want to merge both #87 and #89 into this release.

@jandersonhill Yes - merge both.

@jandersonhill Ok, done! You can merge!

@Jandersonhill
I wonder if with such news not make this version 2.0.0? What do you think?
I think that after releasing the beta, you could start a new Issue, stick it to the top. Generally Issue for beta testers.
New functions:

choice of what to control Oscilate switch: swing, nanoe, eco navi, inside cleaning)
choice what value should be at each AC start for: swing, nanoe, eco navi, inside cleaning
when the internal unit does not have a temperature sensor, the temperature of the external unit is display, and when there are no both, it is automatically depending on the mode (heating / cooling).

What do we need?

What of these functions does your AC have: swing, nanoe, eco navi, inside cleaning
Does your AC have a temperature sensor in the internal and external unit? How does it work for you?
Enable Debug in plugin settings and in the Homebridge settings and paste the response from your AC (it will be in logs) and write what is the status of a given function (swing, nanoe, eco navi, inside cleaning) for this response.

@jandersonhill @embee8 Ahhh, Sunday! What a beautiful day (not at all, it's snowing), birds sing (not either)... Perfect day for the first beta version 1.8.0 and start testing.😉

@jandersonhill @embee8 One thing I want to mark regarding this function with setting the value (nanoe, eco navi, swing, inside cleaning) when starting AC. Apple Home even after changing Rotation Speed sends also command On. So, we will either leave it as it is and it will be values set at startup and actually every AC setting change in Apple Home? Or we will add some if device on to this function? What do you think? I think that if someone sets that he wants to have such a value, that always.

@jandersonhill @embee8 Ahhh, Sunday! What a beautiful day (not at all, it's snowing), birds sing (not either)... Perfect day for the first beta version 1.8.0 and start testing.😉

@mkz212 If we make a decision on whether to treat 1.8.0 as a beta or roll it into the master, I can look at this when I get home (or @embee8 can merge accordingly). Unfortunately, I will be out in London for much of the day. No snow here!

@jandersonhill @embee8 One thing I want to mark regarding this function with setting the value (nanoe, eco navi, swing, inside cleaning) when starting AC. Apple Home even after changing Rotation Speed sends also command On. So, we will either leave it as it is and it will be values set at startup and actually every AC setting change in Apple Home? Or we will add some if device on to this function? What do you think? I think that if someone sets that he wants to have such a value, that always.

If I've understood correctly, I'd have an option in the config screen to ask whether to always start in the following mode or to keep the last mode chosen.

@jandersonhill @embee8 Ahhh, Sunday! What a beautiful day (not at all, it's snowing), birds sing (not either)... Perfect day for the first beta version 1.8.0 and start testing.😉

@mkz212 If we make a decision on whether to treat 1.8.0 as a beta or roll it into the master, I can look at this when I get home (or @embee8 can merge accordingly). Unfortunately, I will be out in London for much of the day. No snow here!

No rush. You can remain on standby until I merged everything properly and then I'll clarify the new release workflow to clear our any remaining questions or problems.

No rush. You can remain on standby until I merged everything properly and then I'll clarify the new release workflow to clear our any remaining questions or problems.

Cool, thanks :-) Don't forget to enjoy your Sunday!

@jandersonhill @embee8 One thing I want to mark regarding this function with setting the value (nanoe, eco navi, swing, inside cleaning) when starting AC. Apple Home even after changing Rotation Speed sends also command On. So, we will either leave it as it is and it will be values set at startup and actually every AC setting change in Apple Home? Or we will add some if device on to this function? What do you think? I think that if someone sets that he wants to have such a value, that always.

If I've understood correctly, I'd have an option on the config screen to ask whether to always start in a certain mode or to keep the last mode chosen. I'd certainly like to choose the fan speed so most rooms default to Quiet mode.

@jandersonhill
You probably didn't understand. I will try to be more accurate.

We have 4 new options : nanoe, eco navi (it's not eco mode responsible for quiet and powerful - the rotation speed slider is responsible for this), inside cleaning and swing mode.
in the settings we have a choice for each of these options: forcing it to be turned on, forcing it to be turned off, do nothing (so what was set will be)
the code is written in such a way that each time you send the ON command is additionally sent a given options. The only problem is that always when you change something for this device in Apple Home, e.g. you change the rotation speed, Apple Home does not send only a command regarding the speed, but also turn on command. So my function then also starts.

And now we have two options:

leave this as it is now - and these options will be sent when AC is on and with every change in device (and I think I prefer this option)
Adding a function to check if AC is turned off and only when you turn on trigger these options.

Its current behaviour seems to make sense to me, we could always ask the question, though.
As an aside, I've been meaning to check the code to see if it will accept verbal commands for changing the fan speed, but do you happen to know if they're in there and I simply haven't hit on the right combination of words?!
I'd also been wondering about adding the abbreviation 'aircon' in addition to 'ac' for those of us based in the UK...

@jandersonhill
What short do you talk about AC and Aircon? About field descriptions?
As for Siri commands, I know that in iOS 17 they changed something. Example: earlier I could say: Hey Siri + device name. And, for example, the lamp turned on. Now I have to combine in the style of Hey Siri + Room name + command + device name.

Hi @mkz212
I mean we can currently say:

'Siri, turn air conditioning on' or

'Siri, turn ac on'

but not 'Siri, turn aircon on'.

With iOS 17, we generally haven't had to worry about the room name in the sentence as we have a Homepod in most rooms and it assumes you are talking about the device in that room. For the children's room (as they can't be trusted with a HomePod!), we say something like 'Siri, turn children's nursery lights off' or 'Siri, turn children's nursery air conditioning on'.
I'm just not sure there is a voice command to change the fan speed, or is there?

@jandersonhill  I'm afraid Apple is responsible for the commands. You can give them suggestions. Alternatively, you can create a scene with AC settings and ask Siri to start the scene.
How is beta 1.8.0 and this new pinned Issue for beta testers? 🤔😉

@mkz212 Ok, I'll look into the Siri side of things; I'm sure I can fix the 'aircon' bit, though :-) It looks like @embee8 is still fixing things and (in any event) I think I should hold off doing anything until I've had some sleep.
@embee8 I see you've been doing a lot of work on this! We currently have two additional branches, both with commits ahead and behind the master, but wasn't sure which was which.

@mkz212 Ok, I'll look into the Siri side of things

I realise this is veering slightly off-topic, but to close my question off - I looked it up and found you can use 'Siri, set fan speed to quiet' (previously, I had tried, 'Hey Siri, set ac fan speed to quiet').

@embee8 @jandersonhill
In one of the open Issue, the user confirmed to me that everything works as it should (eco navi, etc. ). You can close open Issues (Either they are outdated or problems have already been solved). I also think that you can release stable version.

Thanks, @embee8. I'd been meaning to check on this, but have been tied up (with family matters). I'm planning to look at this again at some point tomorrow and will look at releasing the beta as a stable version.

@mkz212 @embee8 I haven't overlooked this, but I'm still dealing with some family issues and will be until at least Thursday this week. It would be helpful to have a private thread for such occasions :-)

@embee8 @jandersonhill

Do you have Discord? Maybe we will continue writing there?
I think you can release a stable version, a user who has AC with these functions confirmed that it works as it should. I don't see any mistakes either.
You can close all open errors.
See on this plugin: https://github.com/kongkx/homebridge-gree-air-conditioner . It offers that for each air conditioning you can choose which switches should be additionally displayed. In the case of Panasonic plugin you could give such to nanoe, eco navi, etc.

As it's been tested, I think you're right.
I'm not using Discord at this point in time, I mostly use Teams and WhatsApp for chats. Do you use either of these?
I'll see if I can release the latest version tonight. Do the package.json etc files have the correct version numbers?

@jandersonhill
I don't have, they persuaded me to discord because there are various discussions about Homebridge, UI and plugins.
I don't remember if there is a version, please correct it if needed.

@jandersonhill please merge my PR. There is version 1.8.1. After that you can release stable version 1.8.1

@mkz212 I've created a server 'Homebridge Panasonic AC Platform' on discord for private contributor conversations!

@mkz212 I've created a discord server 'Homebridge Panasonic AC Platform (For code contributors)' for private conversations :-)

@mkz212 I've created a discord server 'Homebridge Panasonic AC Platform (For code contributors)' for private conversations :-)

Can you give me link?

Try the server nickname 'HomebridgePanasonicAC'

@jandersonhill i need link with invitation.

Sure, this link will work for the next 12 hours: https://discord.gg/dzMp3gp


Sentry not logging issues on Laravel Vapor / AWS

Environment
How do you use Sentry?
sentry.io
Which SDK and version?
sentry/sentry 3.3.2
sentry/sentry-laravel 2.8.0
Laravel Vapor
Laravel 7
Steps to Reproduce

Followed the guide to configure Sentry as a log channel
Set the default log channel to stack
Have the stock log channel configured to log to single and sentry
Have a dedicated endpoint to call that throws a simple RuntimeException

Expected Result
It logs the exception.
Actual Result
It doesn't log the exception, only creates a performance tab entry.
I have no idea what's going on, but when I do not specifically define a LOG_CHANNEL env variable (and it falls back to sentry or stack), it will never log an error to the issues page in Sentry. The weird thing is, it will create a performance event for it, but won't treat it as a failed response 👀
Performance entry for a failed response without an issue associated:

How it should look:

It's possible this issue occurs because Vapor sets LOG_CHANNEL=stderr when you don't define a channel yourself, sending everything to CloudWatch instead. The fallback isn't used either.

Are you setting the LOG_CHANNEL in your Vapor env vars yourself too or not? Bit unclear from the issue but important because the default log channel you define in your config is overridden by Vapor to make sure the log output works for CloudWatch so if you don't set it Vapor will do it for you.
Why are you using log channels and not using the recommended setup in the exception handler: https://docs.sentry.io/platforms/php/guides/laravel/other-versions/laravel5-6/#install?

So yeah you figured it out while I was writing my reply 😅
But if you want to be sure do not use the log channels way of setting up error logging if you only care for exceptions.

Are you setting the LOG_CHANNEL in your Vapor env vars yourself too or not?

I didn't, so yeah, that was the whole issue 😅  It's not mentioned anywhere in their documentation or elsewhere though. And assumed it would use the fallback defined in the config file.

But if you want to be sure do not use the log channels way of setting up error logging if you only care for exceptions.

Just find a log channel easier to set up (wish it was the default in the guides too). No need to override a method, you just define a a new log entry. Plus it allows you to send debug traces and info messages to Sentry.
Thanks for the fast reply btw. If I hadn't stumbled upon the solution, your reply would've saved me a lot of time!

No worries. Glad you figured it out 👍
Good tip if you encounter something strange in Vapor is to go to the Lambda in the AWS console and see the env vars it's setting since it overrides a few things that you might not expect like this one 😅


FileHelper.h:8:62: error: ‘size_t’ has not been declared

hello,
When I tried to compile https://github.com/pcwalton/gltf-ibl-sampler-egui , it kept failing on FileHelper.h:8:62: error: ‘size_t’ has not been declared. All I did is clone this repo.
I'm not knowledgeable about cpp, so this is all I can provide. Probably I'm doing something wrong, would be nice to know what.
djkato@djkato-vfx ~/C/g/glTF-IBL-Sampler (master)> cmake .
-- The C compiler identification is GNU 11.4.1
-- The CXX compiler identification is GNU 11.4.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- 'IBLSAMPLER_EXPORT_SHADERS' is FALSE
volk: using VULKAN_HEADERS_INSTALL_DIR option
--
-- Configuring done (0.2s)
-- Generating done (0.0s)
-- Build files have been written to: /home/djkato/Code/gltf-ibl-sampler-egui/glTF-IBL-Sampler

djkato@djkato-vfx ~/C/g/glTF-IBL-Sampler (master)> make
[  9%] Building C object thirdparty/volk/CMakeFiles/volk.dir/volk.c.o
[ 18%] Linking C static library libvolk.a
[ 18%] Built target volk
[ 27%] Building CXX object CMakeFiles/GltfIblSampler.dir/lib/source/FileHelper.cpp.o
In file included from /home/djkato/Code/gltf-ibl-sampler-egui/glTF-IBL-Sampler/lib/source/FileHelper.cpp:1:
/home/djkato/Code/gltf-ibl-sampler-egui/glTF-IBL-Sampler/lib/source/FileHelper.h:8:62: error: ‘size_t’ has not been declared
    8 |         bool writeFile(const char* _path, const char* _data, size_t _bytes);
      |                                                              ^~~~~~
/home/djkato/Code/gltf-ibl-sampler-egui/glTF-IBL-Sampler/lib/source/FileHelper.cpp:28:75: error: ‘bool IBLLib::writeFile(const char*, const char*, size_t)’ should have been declared inside ‘IBLLib’
   28 | bool IBLLib::writeFile(const char* _path, const char* _data, size_t _bytes)
      |                                                                           ^
make[2]: *** [CMakeFiles/GltfIblSampler.dir/build.make:76: CMakeFiles/GltfIblSampler.dir/lib/source/FileHelper.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:102: CMakeFiles/GltfIblSampler.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

When trying to fix like:
lib/source/FileHelper.h
-bool writeFile(const char *_path, const char *_data, size_t _bytes);
+bool writeFile(const char *_path, const char *_data, std::size_t _bytes);

It spewed more errors, and also found some missing files... This is beyond me, shame I can't use this tool.
djkato@djkato-vfx ~/C/g/glTF-IBL-Sampler (lite) [2]> make
[ 18%] Built target volk
[ 27%] Building CXX object CMakeFiles/GltfIblSampler.dir/lib/source/FileHelper.cpp.o
[ 36%] Building CXX object CMakeFiles/GltfIblSampler.dir/lib/source/STBImage.cpp.o
[ 45%] Building CXX object CMakeFiles/GltfIblSampler.dir/lib/source/format.cpp.o
[ 54%] Building CXX object CMakeFiles/GltfIblSampler.dir/lib/source/ktxImage.cpp.o
[ 63%] Building CXX object CMakeFiles/GltfIblSampler.dir/lib/source/lib.cpp.o
/home/djkato/Code/gltf-ibl-sampler-egui/glTF-IBL-Sampler/lib/source/lib.cpp: In function ‘void IBLLib::convertImageOnCPU(std::vector<unsigned char>&, const std::vector<unsigned char>&, VkFormat, VkFormat)’:
/home/djkato/Code/gltf-ibl-sampler-egui/glTF-IBL-Sampler/lib/source/lib.cpp:288:42: error: ‘fminf’ was not declared in this scope
  288 |                 float redC = fmaxf(0.0f, fminf(sharedexpMax, r));
      |                                          ^~~~~
/home/djkato/Code/gltf-ibl-sampler-egui/glTF-IBL-Sampler/lib/source/lib.cpp:288:30: error: ‘fmaxf’ was not declared in this scope
  288 |                 float redC = fmaxf(0.0f, fminf(sharedexpMax, r));
      |                              ^~~~~
/home/djkato/Code/gltf-ibl-sampler-egui/glTF-IBL-Sampler/lib/source/lib.cpp:294:57: error: ‘log2f’ was not declared in this scope
  294 |                 float expSharedP = fmaxf(-16.0f, floorf(log2f(maxC))) + 16.0f;
      |                                                         ^~~~~
/home/djkato/Code/gltf-ibl-sampler-egui/glTF-IBL-Sampler/lib/source/lib.cpp:294:50: error: ‘floorf’ was not declared in this scope
  294 |                 float expSharedP = fmaxf(-16.0f, floorf(log2f(maxC))) + 16.0f;
      |                                                  ^~~~~~
/home/djkato/Code/gltf-ibl-sampler-egui/glTF-IBL-Sampler/lib/source/lib.cpp:296:44: error: ‘powf’ was not declared in this scope
  296 |                 float maxS = floorf(maxC / powf(2.0f, expSharedP - B - N) + 0.5f);
      |                                            ^~~~
/home/djkato/Code/gltf-ibl-sampler-egui/glTF-IBL-Sampler/lib/source/lib.cpp: In function ‘IBLLib::Result IBLLib::sample(const char*, const char*, const char*, IBLLib::Distribution, unsigned int, unsigned int, unsigned int, IBLLib::OutputFormat, float, bool)’:
/home/djkato/Code/gltf-ibl-sampler-egui/glTF-IBL-Sampler/lib/source/lib.cpp:871:87: error: ‘log2’ was not declared in this scope
  871 |         _mipmapCount = _mipmapCount != 0 ? _mipmapCount : static_cast<uint32_t>(floor(log2(_cubemapResolution)));
      |                                                                                ^~~~
/home/djkato/Code/gltf-ibl-sampler-egui/glTF-IBL-Sampler/lib/source/lib.cpp:871:81: error: ‘floor’ was not declared in this scope
  871 |         _mipmapCount = _mipmapCount != 0 ? _mipmapCount : static_cast<uint32_t>(floor(log2(_cubemapResolution)));
      |                                                                                ^~~~~
/home/djkato/Code/gltf-ibl-sampler-egui/glTF-IBL-Sampler/lib/source/lib.cpp:1092:25: warning: comparison between ‘enum IBLLib::Result’ and ‘enum VkResult’ [-Wenum-compare]
 1092 |                 if (res != VK_SUCCESS)
      |                     ~~~~^~~~~~~~~~~~~
/home/djkato/Code/gltf-ibl-sampler-egui/glTF-IBL-Sampler/lib/source/lib.cpp:1234:140: warning: comparison between ‘enum IBLLib::Result’ and ‘enum VkResult’ [-Wenum-compare]
 1234 |         if (downloadCubemap(vulkan, convertedCubeMap, _outputPathCubeMap, static_cast<VkFormat>(_targetFormat), currentCubeMapImageLayout) != VK_SUCCESS)
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
/home/djkato/Code/gltf-ibl-sampler-egui/glTF-IBL-Sampler/lib/source/lib.cpp:1242:114: warning: comparison between ‘enum IBLLib::Result’ and ‘enum VkResult’ [-Wenum-compare]
 1242 |                 if (download2DImage(vulkan, outputLUT, _outputPathLUT, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL) != VK_SUCCESS)
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
make[2]: *** [CMakeFiles/GltfIblSampler.dir/build.make:132: CMakeFiles/GltfIblSampler.dir/lib/source/lib.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:102: CMakeFiles/GltfIblSampler.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

I applied this patch, but it still doesn't compile. I wouldn't say this is artist-friendly at all, unless the artist has a developer friend who can fix the issues with the build.


Add Configurable Reporting on Method and Status

@ChristopherDavenport can you let me know when this is released and published for all versions of http4s?  I first need it for 0.18.x but then will need it for 0.20.x next.


swipe without pushing label out of view

@kurabi  pls show me where i can find this in the example code?
i posted previously and you suggested i check the example, but i cant find it!

Please see:
https://github.com/SwipeCellKit/SwipeCellKit/blob/develop/Source/SwipeTableViewCell%2BDisplay.swift


Using local UI with api.fnservice.io doesn't work

Here's a record of an investigation I made on 5th Feb 2018
If I have two command windows,
First window runs the fn ui locally: PORT=4000 FN_API_URL=http://api.fnservice.io npm start
Second window does while true; do curl http://api.fnservice.io/v1/apps;sleep 1; done to use a different part of the API every second
In a third window I start a browser on localhost:4000, which repeatedly polls the UI server, which in turn polls the Fn server on /stats.
I then see the UI server poll the Fn server successfully for a few seconds before failing as you reprt above.
Meanwhile, at the moment when the UI server starts reporting errors, my second window (with bash polling /v1/apps) also starts reporting errors as well
curl: (56) Recv failure: Connection reset by peer
curl: (52) Empty reply from server

If I close the browser, this stops the UI server in the first window polling /stats, and after a few seconds the second window recommences polling /v1/apps successfully.
Very curious.
This works just fine, indefinitely.
So there's something peculiar about the way that the UI server invokes /stats that is causing the Fn server to stop responding.

In an attempt to track down the cause of the issue, I made a guess at what the cause might be and made some changes (currently in PR https://github.com/fnproject/ui/pull/45) which allowed the number of sockets used by the UI to be configured. I discovered that with maxSockets set to 1 (instead of the default), the problem went away. That doesn't fix the problem, but may help uncover the underlying issue (which may be in UI, in Fn, or in the particular way that `fnservice.io" is deployed.

Closing this as this seems like an env/deployment issue with api.fnservice.io.


Release 1.1.0

Codecov Report

Merging #28 into master will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff          @@
##           master    #28   +/-   ##
=====================================
  Coverage     100%   100%
=====================================
  Files           3      3
  Lines          48     48
  Branches       12     12
=====================================
  Hits           48     48

Continue to review full report at Codecov.

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


Overriding index signatures

I'm sure this has been discussed but I can't find it.
The Index signature is a very useful feature but the current implementation runs into the power of JavaScript objects in being able to have exceptions. I'm using a file generated by EXIFTOOL which is a JSON dump of meta information from images. So it makes sense to declare a string indexer. But when it comes to linking I want to add extra fields but indexers are fighting me. Why?
interface exentry {
    [key: string]: string,
    SourceFile: string;
    FileName: string;
    Directory: string;
    byProp: any;    // Really { [prop: string]: byProperty }
    nearby: any; //  exentry[];
}

There are complex work-arounds but why impose old school rigidity on the structures? At very least there should be an allow exceptions option in the config since this is a style issue and some of see the ability to add extra bags of goodies to an object as a feature not a bug.
Note that I explicitly declare some entries for clarify. I would like to have a way to say I must use [] for indexers rather than just the . notation so as to protect myself from typos by listing the common cases.
At least indexers aren't as bad as C# dynamic types which require everything have an override.

This issue was moved to Microsoft/TypeScript#27228


disable form submit while invalid

missing required fields or some validation failed

this already done (although with a bug #164). closing this one.


Questions: difference between sitemap.toXML and sitemap.toString()?

Apologize for posting question on the Issues tab
(will delete and move if there is a community / forum)
Also is there a way to generate sitemap with line breaks between the nested tags/nodes? I am getting a xml file that is one continuous stream of tags/nodes.
Thank you 😀

Hey,
Nope, there's no such method.
But you can do it pretty easy with yourself:

https://stackoverflow.com/a/16090892

Thank you for the super fast reply.
I am using sitemap in aws lamda so I will try some pretty print npm modules.
Also is there a difference between the sitemap.toXML and sitemap.toString() methods?


WIP: signPetition action tests

I want to write tests where:

[x] successfully submit to amazon sqs

[x] network is down

[x] sqs returns error

[ ] API_WRITABLE is false (dev mode)

[ ] API_WRITEABLE is 'fake' (other dev mode)

Obviously, nothing should (or ever will :-) go wrong, but as an example of what /api-v1-signatures might return with an error, here's something that came back before I fully configured it correctly:
{"Error":{"Code":"InvalidMessageContents","Message":"Invalid binary character '#x1B' was found in the message body, the set of allowed characters is #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF].","Type":"Sender"},"RequestId":"d3b71e62-6c83-5f8b-b2de-4cba1399ffe3"}

This is probably even have a 200 response

@schuyler1d Looks like it would actually return 400 for that one https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html#API_SendMessage_Errors
Though I can check for the error key too if you want


Add support for Android, closes #1

I forgot to mention that NsdManager requires Android API level 16 (Android 4.1) or higher. Not sure if that's worth listing anywhere.

@Apercu I just updated the commit. Please check again.

Very nice work, thank you!


naming-convention rule FieldDefinition.ignorePattern config still checking underscores _

Issue workflow progress

Progress of the issue based on the
Contributor Workflow

[ ] 1. The issue provides a reproduction available on GitHub, Stackblitz or CodeSandbox

For example, you can start off by editng the
'basic' example on Stackblitz.

Please make sure the graphql-eslint version under package.json matches yours.

[ ] 2. A failing test has been provided

[ ] 3. A local solution has been provided

[ ] 4. A pull request is pending review

Describe the bug

To Reproduce
With a schema like this:
# src/schema.graphql

type SomeType {
  _someField_: Boolean!
}

type Query {
  someType: SomeType
}

type Mutation {
  mutType: SomeType
}

And a .eslintrc like this:
module.exports = {
   [...]
    parserOptions: {
        schema: "src/schema.graphql"
    },
    rules: {
        '@graphql-eslint/naming-convention': [
            'error', {
                'FieldDefinition[parent.name.value=SomeType]': {
                    ignorePattern: ".*someField.*"
                }
            }
        ],
    }
}

I'm still receiving this errors:
<dir>/src/schema.graphql
  4:3  error  Leading underscores are not allowed   @graphql-eslint/naming-convention
  4:3  error  Trailing underscores are not allowed  @graphql-eslint/naming-convention

Expected behavior
It should ignore underscores if it matches the pattern, as described in the docs

Environment:

OS: macOs Ventura 13.4.1
@graphql-eslint/eslint-plugin: 3.19.1
Node.js: v18.16.0

Additional context

this is tricky to fix because allowLeadingUnderscore and allowLeadingUnderscore are global options that match Name nodes https://github.com/B2o5T/graphql-eslint/blob/819c046c2a459d2e601a7c58823b3fc4862ece0e/packages/plugin/src/rules/naming-convention.ts#L426-L435


gnomeExtensions: make buildShellExtension visible

Motivation for this change
buildShellExtension is not visible from the outside as all-packages.nix explicitly inherits only gnomeExtensions and gnome*Extensions from the gnome/extensions/default.nix . Due to the generic name I've refrained from simply inheriting buildShellExtension as well in all-packages.nix and instead added it to gnomeExtensions, so e.g. overlays/flakes can use that function.
An alternative solution could be to give it a proper name like buildGnomeShellExtension and place it in all-packages.nix
Things done

Built on platform(s)

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

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

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

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

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

[ ] Fits CONTRIBUTING.md.

@piegamesde seems to have written most of that.

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/prs-ready-for-review/3032/637


Do not export CollectiveType from collective-sections

In https://github.com/opencollective/opencollective-frontend/blob/5bab53a12749b6c640aea637510a1ca2b49d866f/lib/collective-sections.js#L407, we're exporting CollectiveType. It's wrong because:

The same variable was already exported from constants/collectives
We don't want most files to depend on collective-sections

Todo:

[ ] Move the imports to use constants/collectives instead

https://github.com/opencollective/opencollective-frontend/pull/7649


all vuex modules need to track loading in the state

before:
const state = {
    blockMetaInfo: { block_id: {} },
    blockHeight: null, // we remember the height so we can requery the block, if querying failed
    subscription: false,
    syncing: true,
    blockMetas: {},
    subscribedRPC: null
}

after:
const state = {
    blockMetaInfo: { block_id: {} },
    blockHeight: null, // we remember the height so we can requery the block, if querying failed
    subscription: false,
    syncing: true,
    blockMetas: {},
    subscribedRPC: null,
    loading: false
}

this should then be reflected in the components that use these vuex modules.

as of @jbibla proposal let's also track the error message if loading failed

yes! every try needs a catch!

You mean sth like https://eslint.org/docs/rules/no-empty ?


All the logical test cases under "Staples" are failing

About You:
Name: Piraisudan M.
Company: Guidanz.
Your question:
All the logical test cases under "Staples" are failing with the following error without generating any query,

Please find the attached TDVT test results.
test_results_combined.zip
Please let us know how to get past this issue.

Hi Team,
Hope you are doing well.
Did you get a chance to look into this issue?

This is usually caused by dialect not implemented correctly. Please refer to this document to check your dialect definition.

As suggested by the Tableau TDVT team, we started with "full_dialect.tdd" and modifying query patterns based on our requirements in the "dialect.tdd". Also, we have had referred to the mentioned article and made the changes appropriately.
Currently, we have 728 test cases (87%) getting passed out of the total 839 test cases.
Under the logical tests, the "Calcs" tests are running. The issue is only with the "Staples" and "LOD" tests where all the logical test cases are failing without generating any query (as mentioned in the earlier screenshot).
Note: The data has been added properly for both "Calcs" and "Staples" tables. The connection test also successfully passed as shown in the below screenshot.

Can you please provide some insights on the changes required to be done to get past this issue?

Hi Team,
Any update on this?

Hi Team,
Any update on this?

Thank you for confirming via email that the data type was incorrect for a few columns in Staples, and that changing them from string to date in the database resolved the issue.


Remove test database from repository

followup from
https://github.com/django-import-export/django-import-export/pull/625

Hi @bmihelac, the idea is to provide some fixtures as example data?

Yes, if possible fixtures, would be better, than distributing database.

@bmihelac @manelclos Factories (from factory-boy) are better.


There is no helm chart

There is no helm chart to install where there should be one, at least according to docs: https://github.com/docker-mailserver/docker-mailserver-helm/tree/master/charts/docker-mailserver
installing is not possible:
Release "docker-mailserver" does not exist. Installing it now.
Error: non-absolute URLs should be in form of repo_name/path_to_chart, got: docker-mailserver

You need to first tell Helm about the repo:
helm repo add docker-mailserver https://docker-mailserver.github.io/docker-mailserver-helm

Will need to update documentation (or feel free to create a PR and I'll apply it).

Thx, fixed docs with: #108


how to setup ssh credentials and setup servers?

please give a how-to-use guide.
I have complished installation and login into the website, but I have not idea how to setup basic parameters, for example, how to setup servers, what's the fuction of users and groups,ssh credentials...etc, thank you for your greate work, but I have met problems above, I hope you can help me, Thanks!

Hi, thanks )
How setup servers and other stuff you can see in the video https://youtu.be/4IJuRrxcxcg?t=108

Or here has full descriptions https://haproxy-wi.org/description.py


Text for hover description over syntax highlighting item

Currently, the hover text for the syntax highlighting is "Set programming language". It should be changed to "Change text editor syntax highlighting"

Closed by #101


Gulp task sassdoc

In the bootstrap there is no reference/mentioning of the gulp task css-sassdoc.
A missed chance, because it does add's value to the bootstrap.
"A Documentation system to build pretty and powerful docs in the blink of an eye"
On the one hand I think it should be included in the the  gulp task css-watch.
But on the other hand sassdoc is not a task/tool/requirement for every developer.
So my suggestion is mentioning the gulp task css-sassdoc in the readme.md.
What do you guys think?

We should include this within de dist task. It might be ok to mention it within the readme file

I'm not sure if we want this in a watcher at all, but we certainly don't want it in the css-watch task. If in the future there'll be a docs-compile and docs-watch task (in docs.js), that's where it belongs.
For now I agree with @awolkers, let's add this to the dist task.

I don't think the dist task is the right place to add the css-sassdoc task.
Because this way you as a developer don't have a (up to date) sassdoc available.
@branneman In my current project I did add it to the css-watch, for the reason is mentioned above. And then I added a /index.html file to the root of the project, with a path/link to the sassdoc page.
I like the idea moving it from the css.js to a docs.js, because it is documentation.
So my (new) suggestion would be add a docs flow to the bootstrap and transfering sassdoc to this.
optional: create a index.html in the root of the bootstrap with a path to this sassdoc page?

I think the docs tasks mentioned by @branneman would be the logic place for this. Why not just add it? It will - for now - contain only the sassdoc, but will be extended with the other docs functionality.

Agreed with @lpullersma.

Okaj, shall I make a PR to transfer sassdoc to a docs task?
Just 1 question: Should the sassdoc, in the gulp docs task, use the css-watch as a dependecy to update itself. This way keeping itself up-to-date with the scss changes OR just only generate sassdoc when running gulp docs?

Fixed by #25


Die command?

For some reason the bot seems to crash when given the command: "die".
Is this intended behavior?

Not sure what you mean by 'crash', but DIE is a valid command in the ping script.

Of course. I looked all other places than that script XD
What is the purpose of the command?
I can't seem to imagine any scenario where you would want to kill the bot in that way.

I guess in case something was added which makes him go on a rampage. Following the @github principle of "Hubot allows us to do everything from our campfire room", even shutting himself down apparently. :)

Yeah, that makes sense.
If someone managed to get him stuck in an infinite loop or something.


Merge branch-23.10 into branch-23.12 and fix devcontainer CI workflow.

Closes #291 by fixing the forward merge.
Closes #290 by fixing the CI for devcontainers.

/merge


Please tag a new release

The only real change is the logging output, which is actually a nice change :)

Hi! Sure happy to :-)
For most buildpacks the tag is created at the time they are pushed to the buildpack registry, but since this buildpack isn't on the registry, that didn't occur. (Most people using the GitHub URLs on the platform will use the default branch.)
I've tagged current master as v1.0.1, given (a) the previous tag was v1.0.0 (most other buildpacks use integer versioning instead), (b) with the various reverts the only change is logging/readme/licence, so a patch bump only seems appropriate semver wise:
https://github.com/heroku/heroku-buildpack-multi/compare/v1.0.0...v1.0.1

Hi! Sure happy to :-)
For most buildpacks the tag is created at the time they are pushed to the buildpack registry, but since this buildpack isn't on the registry, that didn't occur. (Most people using the GitHub URLs on the platform will use the default branch.)
I've tagged current master as v1.0.1, given (a) the previous tag was v1.0.0 (most other buildpacks use integer versioning instead), (b) with the various reverts the only change is logging/readme/licence, so a patch bump only seems appropriate semver wise:
https://github.com/heroku/heroku-buildpack-multi/compare/v1.0.0...v1.0.1

<3 Thanks it is definitely appreciated :)

<3 Thanks it is definitely appreciated :)


What is required in order to light up Web Access?

I'm merging public repos on GitHub and repos from an internal deployment of Azure DevOps Server 2020, and I'd like Web Access to show up for both. How is it done for https://source.dot.net and http://sourceroslyn.io?

I think you can pass serverPath for each solution: https://github.com/KirillOsenkov/SourceBrowser/blob/37624c45a2832b7e6948c7463537177e8719899d/src/HtmlGenerator/Program.cs#L46

I'm also noticing it's not mentioned in the help:
https://github.com/KirillOsenkov/SourceBrowser/blob/37624c45a2832b7e6948c7463537177e8719899d/src/HtmlGenerator/Program.cs#L278

Okay, I'm going to need it to be something that can be passed to the /in file.

System.ComponentModel.Win32Exception: 'The filename or extension is too long.'

That can't be right. I forgot to search for .sln files within each repo instead of searching for .sln files in all repos once per repo.

please make yourself at home

I think you can pass serverPath for each solution:

No 'Web Access' link is showing up, but now I'm thinking this is because I'm supposed to pass the server path to each repo root rather than to each solution file.

Got it working mostly, but the argument parsing can't handle there being an = character in the URL:

Invalid Server Path: C:\Some\Path\SomeRepo=http://someserver/somecollection/someproject/_git/somerepo?version=GCb1b459ab951bdf44e7f9e77f2005620b1e4ab3f6&path=

@KirillOsenkov What do you think about allowing any number of = characters to follow the = separator? Or, maybe require both sides to be quoted: /serverPath:"C:\PathWith=InIt\Abc"="https://abc/def?version=x&path="
I could also replace = with %3D but the browser preserves that in the address bar when you navigate there, so it's a very tiny irritation.

Never mind, %3D prevents the URL from working. It's got to be =.

anything is fine I guess. We could escape and then unescape after parsing, or use quotes? I think I have a helper somewhere to parse a string ignoring quotes parts (I think it’s in TextUtilities.cs in the MSBuildStructuredLog repo). Sorry on the phone now.

The unescaping thing seems more complicated to get right than the quotes and it also requires the user to do more work than simply slapping quotes around a path and a URL (neither of which should need to permit quote characters).
I think I'll say if there's more than one = character, the side/sides meant to contain it/them must be quoted.

sounds good

@KirillOsenkov What's your feeling on backwards compatibility, preserve it?
// Allowed forms:
// /serverPath:a=b
// /serverPath:"a=b" (for backwards compatibility)
// /serverPath:"a=1"="b=2"
// /serverPath:"a"="b" (for consistency to make it easy to produce a safe form)

It's up to you, I'd probably write something manually to properly handle all four cases, something along these lines:
https://github.com/KirillOsenkov/MSBuildStructuredLog/blob/fddecd7fcd9c95dc4b65aaa77b50cd95bb668838/src/StructuredLogger/TextUtilities.cs#L142-L188

or maybe write a regex?


fix fireproofing failure

Task/Issue URL: https://app.asana.com/0/414235014887631/1206427825259047/f
Tech Design URL:
CC:
Description:
Persists and updates fire proofed cookies independent of the containers (which don't appear to flush their data to disk properly).


How do I get a query definition as a string?

How do I get access to the query like it is requested to the server.
module TodosQuery = %graphql(`
  query TodosQuery {
    todos: allTodos {
      id
      text
      completed
    }
  }
`)

Js.log(TodoQuery.queryString)

expected output:
"query TodosQuery {\n todos: allTodos {\n id \n text \n completed \n } \n }"

Found away to print the query operation with the print function from graphql
Here are the bindings:
@bs.module "graphql/language/printer"
external print: ApolloClient.GraphQL_PPX.templateTagReturnType => string = "print"


Added comments to context_generator.py and exceptions.py

I have added comments to the context_generator.py and exceptions.py files for additional clarification.

@Surani02 Thank you for the thought.
I have deliberately left the code uncommented for now. Even before LLMs my general default was to keep non-executable documentation to the minimum. Post LLMs, I prefer to keep that as close to zero as possible, since LLMs do a great job of explaining what code is doing.
But I appreciate your effort. Thanks again.


Bindings for split windows

Hi, I like the ssh automatic reconnection but not all the time, so I've added these to my .tux.conf.local:
# Split panes
bind-key v split-window -h -c '#{pane_current_path}'
bind-key s split-window -v -c '#{pane_current_path}'
# Duplicate panes (including SSH connection)
bind V run "cut -c3- ~/.tmux.conf | sh -s _split_window #{pane_tty} -h -c '#{pane_current_path}'"
bind S run "cut -c3- ~/.tmux.conf | sh -s _split_window #{pane_tty} -v -c '#{pane_current_path}'"

But the ssh reconnection is not working. Am I doing something wrong here?

Hello @luisdavim,
Are you sure you sourced your ~/.tmux.conf file after having made the change?

Yes, the key bindings work, the pane does get split but the ssh connections are never replicated.

Can you please paste the output of
$ tmux list-keys | grep split

this is what I get:
$ tmux list-keys | grep split
bind-key    -T prefix       "                 split-window -c "#{pane_current_path}"
bind-key    -T prefix       %                 split-window -h -c "#{pane_current_path}"
bind-key    -T prefix       -                 split-window -v -c "#{pane_current_path}"
bind-key    -T prefix       S                 split-window -v -c "\"#{pane_current_path}\""
bind-key    -T prefix       V                 split-window -h -c "\"#{pane_current_path}\""
bind-key    -T prefix       _                 split-window -h -c "#{pane_current_path}"
bind-key    -T prefix       s                 split-window -v -c "#{pane_current_path}"
bind-key    -T prefix       v                 split-window -h -c "#{pane_current_path}"

if I enable tmux_conf_new_pane_reconnect_ssh
I get:
$ tmux list-keys | grep split
bind-key    -T prefix       "                 run-shell "cut -c3- ~/.tmux.conf | sh -s _split_window #{pane_tty} -c \"#{pane_current_path}\""
bind-key    -T prefix       %                 run-shell "cut -c3- ~/.tmux.conf | sh -s _split_window #{pane_tty} -h -c \"#{pane_current_path}\""
bind-key    -T prefix       -                 run-shell "cut -c3- ~/.tmux.conf | sh -s _split_window #{pane_tty} -v -c \"#{pane_current_path}\""
bind-key    -T prefix       S                 run-shell "cut -c3- ~/.tmux.conf | sh -s _split_window #{pane_tty} -v -c '#{pane_current_path}'"
bind-key    -T prefix       V                 run-shell "cut -c3- ~/.tmux.conf | sh -s _split_window #{pane_tty} -h -c '#{pane_current_path}'"
bind-key    -T prefix       _                 run-shell "cut -c3- ~/.tmux.conf | sh -s _split_window #{pane_tty} -h -c \"#{pane_current_path}\""
bind-key    -T prefix       s                 run-shell "cut -c3- ~/.tmux.conf | sh -s _split_window #{pane_tty} -v -c \"#{pane_current_path}\""
bind-key    -T prefix       v                 run-shell "cut -c3- ~/.tmux.conf | sh -s _split_window #{pane_tty} -h -c \"#{pane_current_path}\""

so my key bindings are always overwritten, but I would like to have a way to choose if I want to reconnect to ssh or not by using different key bindings. Any suggestions?

Oh yeah you're right. At that point I have no solution to offer you. Will think about it.

Hey @luisdavim 👋
Can you try the gh-164 branch?

Hey @luisdavim 👋
I realize I didn't really explain how to use the gh-164 branch.
In your ~/.tmux.conf.local copy, add
bind V split-window -h ssh
bind S split-window -v ssh

Hi, I only had a chance to try it now. It works perfectly, thanks :)


4_EI_ProcessEnergyIntensity

The dataset refers to the process energy demand of primary material production. In the case of steel, it is said to be modelled as constant until 2030 and then linear decline/decrease from current values. However, values are 0 until 2030 and then they increase.
How can one compute the energy demand for primary production?
Update: the documentation states that the parameter is not used in RECC 2.4.
However, while it is true that emissions are computed via ProcessExtensions, SysVar_EnergyDemand_PrimaryProd still depends on the parameter, and hence SysVar_TotalEnergyDemand and EnergyCons_total do as well.
In the end, EnergyCons_total is reported in the results sheet, even though the energy intensity for primary production is incomplete.

Hi @CarrerF, during the database development, we started with data on the total GHG impact of primary material production, and these are stored in 4_PE_ProcessExtensions See the log sheet of this parameter file for further details.
We had very little capacity to disentangle process from energy carrier emissions, and only managed to do so for a few metals and energy carriers, like H2-based steel production.
Hence, 4_PE_ProcessExtensions and 4_PE_ProcessEnergyIntensity need to be seen together!
Together, and via the energy demand from 4_PE_ProcessEnergyIntensity, they give the full GHG picture.
The intermediate result SysVar_EnergyDemand_PrimaryProd is incomplete, that is true!
Disentangling all this will require a larger effort, with process models of material production to separate all the energy carriers from process emissions... Ideally, we can directly use other peoples research to do so in the future...

Thanks! I see that the parameters works together with the others.
However, I'm still puzzled. According to the log sheet,

" RCP 2.6 and baseline were added", but in the values sheet there is RCP only
"Modelled as constant until 2030 and then linear decline/decrease from current values", but values increase from 0 MJ/kg in 2015 to 9 MJ/kg in 2070.

I'm referring to V2.2, available online.


Thumbnail scaling in popover

On iPad pickers should generally be shown in a popover. However with this lib the thumbnail size does not scale when shown in a popover. Consequently I can only see 1 1/2 pictures per row.
I should have some kind of setting for number of thumbnails per row and then they should scale appropriately to accommodate that number.

check pullrequest #48
you can find feature on master branch


Encrypt password in the Redis store

One security flaw in SnapPass is that currently, all the passwords are saved in plain text in the Redis store. So maintainers must restrict the access to the Redis store, otherwise all passwords can be compromised.
A solution to this would be to send not only the Redis storage key in the response,
but some information to decrypt the password/secret when requested.
The implementation could be quite simple: when a user calls the set password endpoint,
we generate both a key (for Redis storage), and an encryption key. We then encrypt the password/secret with the encryption key, and store the cypher text in redis as the value. In the end, what we send back to the user is a string that contains both the storage key and encryption key.
We can split the result using substring length, or a separator like "@" , ".", "/" or whatever.
(This can also be checked conditionally to ensure old keys still work after an upgrade).
The API can remain unchanged, it's just that "keys" we send will be longer, and it won't be possible to list all passwords.
I'm willing to work on that, just wanted to discuss the idea and see the interest (or lack thereof.)

This is very interesting. Here are a few thoughts:

This is slightly related to https://github.com/pinterest/snappass/issues/32, which also deals with a security by adding a prefix
This is indeed a security flaw, but REDIS is designed "to be accessed by trusted clients inside trusted environments", and implementing this adds complexity to this project, which maybe should be implemented somewhere else
If we decide to encrypt the values, I think your solution has a good design. <secret><seperator><key> is a good way of making the store values ciphered, and the secret shouldn't be available in the store.

Overall, I think this is a good idea. I especially like that we can implement this without breaking API backwards compatibility, and essentially making it transparent to users.
If you were to make a PR, I will gladly review and consult.
I will also ask a member of our security team to take a look at this design

I'm not sure I understand. Let's call secret what the user wants to share, and key the proposed encryption key.
Current solution is to store secret.
Proposed solution is to store key<separator>secret.
Am I understanding correctly?
If so, then I don't think the solution will add much in terms of security because anyone accessing key<separator>secret can separate, get key and use it to decrypt secret. (when reasoning about security, you need to assume the attacker knows the algorithms used, in particular here that the code is opensource).
The solution would be good if we could transmit key from userA to userB without storing it into Redis. This said, if we had such a channel, we could just use it to share secret in the first place.

As @nichochar pointed out, this was probably excluded from the original threat model of snappass, but it seems like an overall improvement.
Given the security architecture of redis, read access generally means write access (unless we are referring to backups). So we should also think about threats against availability and integrity. Not much we can do against an availability attack, but for integrity we could make it AEAD (with AES-GCM or something similar) and include the redis key id in the associated data. Not sure what a realistic attack would look like in the integrity arena and confidentiality is the most serious threat for this kind of system, but its still probably a good idea.
We should also note that attackers with access to browsing history of a targeted user and redis will be able to decrypt secrets (query parameters are stored in history). We can only enforce the exactly once nature of the system in the scenario where redis is compromised if there is a server side secret that we can assume is not compromised and is used in the encryption process and we are using authenticated encryption with the redis key in the associated data. The server side secret would need to be combined with the client side secret to derive a key using some sort of secure key derivation algorithm like shamir's secret sharing (probably not the ideal choice but a popular one).
We should make sure AEAD keys are generated using a secure random number generator (/dev/urandom or the like) and AEAD keys are never sent to the redis server.

Thanks for the input @0x0ece, @devinlundberg
So to sum up:

if we assume the attacker knows the algorithm, this really doesn't protect the password
if we assume they don't, or people are "looking into the values of the REDIS DB" by accident, then it adds a slight layer of obfuscation.

The question now is: do we think this is a tradeoff that is worth doing?
From what I can tell, there are no downsides, but the upsides are very slight. Does anybody have a strong opinion on whether this should be implemented, or not?

We had a separated chat.
One possible solution is the following.
Generate a key which is never stored in Redis, but only passed between users. This can be an arbitrarily long random bit string.
Encrypt secret with key, e.g. using xor (one-time pad).
Store enc(secret) in Redis. In this way, an attacker accessing the db can't read any secret.
Transmit key to the other party, e.g. make it a param in the shared url. Note that an attacker reading the key could access the secret. The "protection" here comes from the fact that secret will be deleted after 1 consumption, so only one between the user and the attacker will get the secret, whoever arrives first.
In short, we're assuming that the channel between users is trusted enough to pass a short-lived key, but not longterm to transmit a secret that may be valid for more time. Think for instance to Slack, you trust it to share the key via chat, but you don't know what happens to their servers in the long term, so you don't want your actual secret to be stored there indefinitely.
Also, implementation caveat. If we expire the secret after 1 consumption, we need to make sure that the "channel" doesn't offer (or isn't allowed) to do url preview (again, think to Slack), for example via robots.txt or assuming snappass is on a private network.

Thanks all for the quick and thorough feedback!
I like the idea of server and client-side encryption, I had never thought of that...
@0x0ece  I think you misunderstood my idea, it's probably because of my terminology.
Let me extend on your approach, and get some definitions in here :)
Sender - user that wants to share a secret/password;
Receiver - user Sender shares the link with;
secret - What Sender wants to share;
secret ID - Unique identifier of the secret;
encryption key - Key used to encrypt the secret, and decrypt the encrypted secret;
encrypted secret - Secret encrypted with the encryption key (also referred to as "cypher text");
Currently, the algorithm is:

Sender sends the secret in a POST request to SnapPass;
SnapPass randomly generates a unique secret ID;
SnapPass stores the secret in plain text in Redis, with the secret ID as the key (key as in key-value!);
SnapPass responds to Sender with a link containing the secret ID;
Sender sends the link to Receiver;
Receiver sends a GET request with the secret ID to SnapPass;
SnapPass looks up the secret ID in Redis, retrieves the secret;
SnapPass sends the secret to Receiver.

What is stored: secret
What is given back to Sender: secret ID
Contrast with my suggested implementation:

Sender sends the secret in a POST request to SnapPass;
SnapPass randomly generates a unique encryption key;
SnapPass encrypts the secret with the encryption key, generating the encrypted secret
SnapPass stores the encrypted secret in in Redis, with the secret ID as the key (key as in key-value!);
SnapPass responds to Sender with a link containing both the secret ID and the encryption key;
(That's where the separator comes in, as a way to have both in the link)
Sender sends the link to Receiver;
Receiver sends a GET request with the secret ID and encryption key to SnapPass;
SnapPass lookup the secret ID in Redis, to retrieve the encrypted secret;
SnapPass uses the encryption key to decrypt the encrypted secret, recovering the secret.
SnapPass sends the secret to Receiver.

What is stored: encrypted secret
What is given to back Sender: secret ID + encryption key
This means people can know the algorithm, but they wouldn't be able to retrieve the value just from Redis.
What they need is the key, which SnapPass doesn't have.
An attacker would need to have both access to Redis and the link that was generated,
in order to get the password without expiring the link.
So it's not mere obfuscation, it's really encryption!
@devinlundberg  I think this also addresses the browser history part (?), since the encryption key is unique for every request.
The link never makes it to Sender's browser history, and when it makes it into Receiver's browser history,
it has already been consumed and so it's too late!
It would however be possible for the attacker to hijack the browser and intercept the link,
but at this point there won't be any chance of securely sharing anything for poor Sender...
The value I saw to the addition, initially:

If an attacker breaks on my servers, a Redis dump won't reveal any data;
I don't have to rely on the fact that my sysadmin/public cloud employees/K8s cluster maintainers/etc. won't peep inside Redis;

@0x0ece I read your last message after posting mine, sigh. I think we are converging on a solution.
Some notes:

Passing an arbitrary long key in a URL might not work for all usages, because the length has an upper bound.
Consumption by URL preview and bots is indeed problematic, and was partially addressed in a previous PR (https://github.com/pinterest/snappass/pull/46) for a number of known User-Agents. robots.txt is a pretty interesting addition though, since it protects more consistently for well-behaved robots. Another option is to use the app/API distinction I know is also being worked on. If you use a channel with URL preview, you can send a link to a page that will have a "reveal" button to show the secret after calling the API.

@samueldg All you added LGTM.


Update docs for release v0.7.1

Part of https://github.com/kubernetes-sigs/jobset/issues/707

/lgtm
/approve


Resource sub-widget views (e.g., update, extra actions) not re-rendering/displaying after page change

Try browsing forms, opening the update interface of a form, and then navigate to a different page. When you return to the forms browse page the update widget of the form you just used will not be visible and there will be no way to make it visible...

This seems to be resolved now. The update interface is closed when you return, but you can re-open it just fine.


Initial commit for adding nested process cards as a result section

test by following https://github.com/CybercentreCanada/assemblyline4_docs/blob/dev_setup_infra/docs/developer_manual/infrastructure/remote_development.md as well as pulling the other PRs for AL-248 from the other repos (v4-service, ui)

Codecov Report

Merging #14 into master will decrease coverage by 0.04%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master      #14      +/-   ##
==========================================
- Coverage   61.21%   61.17%   -0.05%
==========================================
  Files         115      115
  Lines        9662     9653       -9
==========================================
- Hits         5915     5905      -10
- Misses       3747     3748       +1

Impacted Files
Coverage Δ

assemblyline/odm/models/result.py
97.43% <100.00%> (ø)

assemblyline/datasource/alert.py
88.46% <0.00%> (-3.85%)
:arrow_down:

assemblyline/odm/randomizer.py
93.59% <0.00%> (-1.98%)
:arrow_down:

assemblyline/remote/datatypes/__init__.py
69.49% <0.00%> (-0.51%)
:arrow_down:

assemblyline/remote/datatypes/queues/comms.py
77.77% <0.00%> (-0.49%)
:arrow_down:

assemblyline/odm/random_data/__init__.py
90.04% <0.00%> (-0.42%)
:arrow_down:

assemblyline/filestore/transport/azure.py
61.61% <0.00%> (-0.39%)
:arrow_down:

assemblyline/datastore/stores/es_store.py
71.40% <0.00%> (-0.05%)
:arrow_down:

assemblyline/run/pubsub_reader.py
0.00% <0.00%> (ø)

assemblyline/run/cli.py
24.54% <0.00%> (+0.04%)
:arrow_up:

... and 3 more

Continue to review full report at Codecov.

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


[HIVEMALL-188] Avoid KryoException: java.lang.NullPointerException

What changes were proposed in this pull request?
Fix a bug in tokenize_ja that occasionally raises KryoException: java.lang.NullPointerException
What type of PR is it?
Bug Fix
What is the Jira issue?
https://issues.apache.org/jira/browse/HIVEMALL-188
How was this patch tested?
Manual tests
Checklist
(Please remove this section if not needed; check x for YES, blank for NO)

[x] Did you apply source code formatter, i.e., mvn formatter:format, for your commit?

LGTM.


Update DG with ListRecordCommand implementation details

Add implementation details of ListRecordCommand to DG.
Add UML Sequence Diagram showing execution path of ListRecordCommand to DG.

Codecov Report

Merging #90 (d1d37b4) into master (fd5b111) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master      #90   +/-   ##
=========================================
  Coverage     71.27%   71.27%
  Complexity      594      594
=========================================
  Files           100      100
  Lines          1908     1908
  Branches        212      212
=========================================
  Hits           1360     1360
  Misses          470      470
  Partials         78       78

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Communication error receive

I receive communication error every time from stack
Could you give any guidance for it ? and I attach log file for your reference
Uploading Test_1540_26-07-2022_0002.log…
26.07.22 : 15:47:14.042 : Test CAN    : CAN1  606 Tx SD  8  40 01 10 00 00 00 00 00
26.07.22 : 15:47:14.106 : Test CAN    : CAN1  586 Rx SD  8  4F 01 10 00 10 00 00 00
26.07.22 : 15:47:14.106 : Test Error  : OD 02: Accessing object 1001h:00h - Response value: 0x10, EDS default value: 0x00 failed.
26.07.22 : 15:47:14.106 : Test Notice : OD 02: Accessing object 1001h:00h - Response value: 0x10, EDS default value: 0x00 failed.

Your log file didn't attach properly (it's just a link to this issue).
Index 0x1001 is the error register. It looks like bit 7 is set, indicating a manufacturer specific error

Interestingly CiA 301 specifies that bit 0 (generic error) should also be set when any of the other bits are set (my guess is that behavior isn't implemented by CANopenNode)

you could try reading from index 0x1003 and see if there's additional info in the error fields:

TEST_1730_26-07-2022_0001.log
I attached the least file


Tap gestures

This PR adds:

a delegate method that detects double taps on the pdf view.
a new variable pdfContentView (I'm not very happy with this name) that allows to retrieve the contentView of the pdf as UIView (keeping its inner actual type hidden). This is needed if the developer needs to capture events or interact only with the view that contains the actual pdf content, not the whole view.

@danielmorandini not exactly following why pdfContentView should be a part of the framework instead of just making contentView public. The user can perform the cast themselves or frankly just leave it as is since it's a subclass of UIView and will have the same methods available as it would after a cast.

@pushchris PDFPageContent is marked as an internal class. The straight solution would we to contentView into an open var and make PDFPageContent a normal class. I just didn't want to mess up with your visibility policies :) This way PDFPageContentc stays an internal class and you can access the contentView UIView's properties. Hope I cleared out my point


Azure registrations not receiving confirmation email

Attempted Debugging

[X] I have read the debugging page

Searched GitHub Issues

[X] I have searched GitHub for the issue.

Describe the Scenario
When a new user signs up with an azure account they do not receive the email to validate their account.  When I run a test email in settings it is received.
User is created in the users section of settings when azure registration done
Exact BookStack Version
23.05.2
Log Content
[2023-05-25 09:50:18] production.ERROR: Unable to read file from location: 2021-12-Dec/aVXvxeZ5tEOBsCYV-pdf. {"userId":56,"exception":"[object] (League\Flysystem\UnableToReadFile(code: 0): Unable to read file>
[stacktrace]
No other errors except [2023-05-25 09:53:22] production.ERROR: This azure account is already in use, Try logging in via the azure option. {"exception":"[object] (BookStack\Exceptions\UserRegistrationException(code: 0): This azure a>
[stacktrace]
But this is someone registering when they already exist.
PHP Version
8.1.2
Hosting Environment
Ubuntu 22.04.2 LTS VM
NGINX Proxy Manager redirects 443 to the KB

Forgot to say, azure details in settings are fine.  Client secret hasnt expired.

Hi @davecowley, Do you have a QUEUE_CONNECTION setting defined in your .env at all?

Hi, @ssddanbrown no mate it isnt mentioned.

Ive just sent an invite to my personal account with gmail, nothing has hit.

so I signed up with https://imitate.email and ran a test using their details.  Same behaviour,  test emails received but new user setups failed.

Can you run the following from your BookStack install directory and confirm the output?:

php artisan tinker --execute="echo DB::table('jobs')->count();"

Can you confirm the exact route taken (including URL paths) by users to get to the email confirmation page?

(There are multiple, just want to ensure I emulate the scenario in the same way)

Assuming you have standard auth active, Do you get emails when using the password reset flow from the login screen for an existing user?

Sure, I'll have to come back to you on Tuesday though. I'm in leave til then with the bank holiday and tomorrow off too. Have a good Bank holiday

The result of that command is "6"

Alright, based upon that emails are being put in the queue but there's likely no queue worker running to process those jobs. By default the queue should not be used though.
Can you double check there's no QUEUE_CONNECTION option defined, in the .env or any other level?
This is the primary way that the job queue is activated.
Otherwise does running echo $QUEUE_CONNECTION  in the terminal return anything, just in case there's a global environment value at play.
Additionally, what's the output of running ls -al bootstrap/cache from your BookStack install directory?

I have just double checked the .env and its clear of that option.
I have just added it in though, saved, gone back in and removed it and that previous command is now saying 10.
php artisan tinker --execute="echo DB::table('jobs')->count();"
10
running echo $QUEUE_CONNECTION doesnt return anything.
drwxr-xr-x 2 www-data www-data  4096 Apr 17 13:20 .
drwxr-xr-x 3 asmadmin www-data  4096 Apr 17 13:18 ..
-rwxr-xr-x 1 www-data www-data    14 Mar  7 10:26 .gitignore
-rwxr-xr-x 1 www-data www-data  1590 Apr 17 13:20 packages.php
-rwxr-xr-x 1 www-data www-data 19929 Apr 17 13:20 services.php
xxxadmin@servername:/var/www/bookstack$

@ssddanbrown you'll never believe it but it is now working.
promise you it wasnt in there before so i dont know whats going on.
I'll test a few more times before closing.

yep, looks ok to me now.
sorry for the random unexplained issue.

sorry, randomly it is no longer working now.  I tested with 2 people yesterday and it worked fine.  had a new user today and it has failed.
However I noticed that an email came from the knowledge base at the time we should have got the email but it was missing the send as name and other bits so it was rejected. check out the screenshots.  the one with lots of info is an ok one vs the other.
https://imgur.com/a/2nu0Pko
Ive double checked the end users Active directory account and it seems ok to me.  no info is missing.

However I noticed that an email came from the knowledge base at the time we should have got the email but it was missing the send as name and other bits so it was rejected.

Hi @davecowley,
It would be very strange for BookStack to change its sender details, or change the existence of a subject line, without external influence. From the above, you did have some strange behaviour in relation to the QUEUE_CONNECTION which may possibly (although not something I've ever seen) could also apply to sender name/email, but the subject line is handled different.
I'm wondering of the details just don't show since the shown email system does maybe not store those details for rejected emails.
From the screenshots, I traced the software to be "Hornet Security".
Looking into the software manual for the "Rejected" status:

Our email server rejects these emails directly during the SMTP dialog because of external characteristics, such as the identity of the sender, and the emails are not analyzed further.

This line makes it seem like it's an early rejected, and the "the emails are not analyzed further" part makes me think it might not continue to the point of storing extra details like subject (and maybe other details) in this scenario.
Looking into the manual (Page 518 of the manual I'm reading) for the 554 5.7.1 reason observed on the rejected mail:

554 5.7.1 Domain / User unknown
The email has been rejected because the specified domain is not available in the Control Panel.

I'm not sure what "domain" is refereed to here, but it sounds like maybe either the sender or receiver domain needs to be configured in the control panel of the software?
Is there a change in receiver domains for this latest send compared to those sent yesterday?

Ive got this idea in my head that its something wrong with the accounts not the product.  I have just signed up an older account using the azure button without issue and the email was received.  Tested again with a known account with the issue again and it failed.  I have just gone through the known working and known failed on in Azure and cant see any differences.
I'll keep investigating but im pretty sure its not bookstack at fault, do you agree?

I'll keep investigating but im pretty sure its not bookstack at fault, do you agree?

I would say that's probable.
I used to work in the email marketing world, and from my experience there's likely to be way more variability and complexity in how email systems (Especially security layers in the chain) receive and deal with email than in how BookStack is sending email in this scenario. Apart from the sender details, nothing should really be changing on the BookStack side of things.

Yep has to be.
I just setup a new user on AD and synched up and its all worked perfectly fine.  I had duplicated an account for the other accounts so must be an issue with the accounts cloned the accounts from.
Sorry to waste your time with this.  I'll close it all down again.


Do not force the use of FQDN in replica set configuration

In the replica set definition function, after it creates the replica set, if you do a consecutive run of chef-client in the instance, the script then tries to convert the mongo IPs into FQDNs, which in my case destroys the replica set.
To reproduce the error, just run a the sc-mongo::replicaset recipe with node['mongodb']['use_ip_address'] twice and check rs.conf() in mongo, and the hosts will be changed.

I proposed a change in #165


fetchNextPage from useInfiniteQuery doesn't work if has been fired before the first query returned data

Describe the bug
fetchNextPage from useInfiniteQuery doesn't send a request if was fired before the first request returned data.
If you open the codesandbox example, you will see that query results looks like we had just one call. However, if you check line 61 (or check logs in console) you will see that there were two requests - first ran with timeout 0ms, the second one - with timeout 1ms. Also, if you check line 30, you can see, that every request takes 100ms to resolve.
Now, if on line 61 you change the delay multiplier from 1 to 1000 (so fetchNextPage will be called when we already have the first page), you will see that both requests were fired (as expected).
Unfortunately, I wasn't able to attach screenshots, because github throws an error when I'm trying to do so.
Your minimal, reproducible example
https://codesandbox.io/p/sandbox/snowy-feather-xzqyy9?embed=1&file=%2Fsrc%2Findex.jsx%3A1%2C1
Steps to reproduce

Open the codesandbox example

Expected behavior
As a user, I expect that if I call fetchNextPage while the very first request is still loading, the second request will be sent as well.
How often does this bug happen?
Every time
Screenshots or Videos
No response
Platform

OS: MacOS
Browser: Google Chrome
Version 114.0.5735.106 (Official Build) (arm64)

Tanstack Query adapter
react-query
TanStack Query version
4.19.0
TypeScript version
4.9.5
Additional context
The problem I'm trying to solve is that I need to fetch a dynamic amount of pages on demand (and also every page has specific params - so it's impossible to calculate the next page params from the existing ones). It works perfect if I fetch page by page, but sometimes I need to fetch few pages as the app loaded (so I do something like pagesArray.forEach(fetchPage), where fetchPage is a function that sets first page params if we didn't fetch anything at all - otherwise it calls fetchNextPage). And once I do this, only the first request is fired.

I don't fully understand the use-case, but here are some constraints:

there can always only be one fetch going on for an InfiniteQuery. There is only one cache entry, split up into multiple pages. You can't fetch two pages at the same time, they would likely overwrite each other.
That's why fetchNextPage has an option cancelRefetch, that defaults to true. When you call fetchNextPage, it will cancel a currently running request for that query so that it can append the next page at the end.
If you call fetchNextPage in a loop without awaiting each fetch, it will not work. They have to run in serial. A setTimeout is not good enough.
You can set cancelRefetch: false as a param to fetchNextPage, but then it will just pick up any running promises and not cancel the ongoing one.

So, basically, this:

As a user, I expect that if I call fetchNextPage while the very first request is still loading, the second request will be sent as well.

is not possible.

I see. Would you like to make a PR to the docs?

if you want to improve the docs, please go ahead.


Add bioconda/conda-forge support

I'm using and adding spotiflow as an NF-core module. I have already created a docker container for it and expanded the CLI.
nf-core best practices require the tool to be available via bioconda (ideally) or conda-forge + container. Do you have a timeline/plans to add spotiflow as a bioconda/conda-forge package.
Thanks, :)

Hi Miguel,
I actually thought of putting up a conda package at some point rather soon :)
Didn't have a specific channel in mind (thought of conda-forge mostly, but could be bioconda too). I'll check it out when I'm a bit more free, but I think I'll be able to do it in the following weeks. I'll let you know here when that happens :)

Hi Albert,
Thank you very much for the response! I'm very much looking forward to it. Plese let me know how/if I can assist with this in any way! ;)

Hi Albert,
Thanks a lot for pushing this forward! I also just did the PR for the extended CLI and added the Workflow for Docker.

Hi Miguel,
The package was just merged to conda-forge, can be installed with
conda install -c conda-forge spotiflow.
Closing this for now, but please let me know if you find any incidence with the package!

Fantastic news!


Updated WG Logos.

Commit the WG Logos that match the AMP Project's new branding.

cc @mrjoro not sure if you get notifications for this. :)

Thanks!