Add Permissions to Client Certificates

[ ] Defect
[X] Feature Request or Change Proposal

Feature Request
Use Case:
When mutual TLS is enabled by specifying --tlsverify flag, in theory a client no longer needs to pass a username and password to authenticate, since that was already being taken care of when verifying the client certificate.
Looking at the code, we see that the username and password are still being used when mutual TLS is enabled; specifically to set the permissions for a client.
Proposed Change:
Allow the inclusion of a client permissions inside the client certificate itself. This way, each client is issued a cert with the permissions baked into its cert.
A X509 certificate can hold some metadata in itself (the RFC https://www.ietf.org/rfc/rfc5280.txt refers to that). The approach would be when creating a client certificate, add the permissions to the cert metadata itself, then after successfully authenticating the client gnatsd server can extract the permissions from the client certificate and injects these permissions into the user's session.
Who Benefits From The Change(s)?
With this approach we can technically add "users" dynamically to an already running server by creating a client certificate with the intended permissions.
Note: The client cert itself can also hold more info about the client (probably client name) for trace and audit purposes.

I'm not dismissing this idea as it's interesting and I think worth consideration, but I did want to point out that as of v1.0 you can dynamically add/remove users and change permissions on a running server through config reload: https://github.com/nats-io/gnatsd#process-signaling. This might provide an alternative solution?

Hi @tylertreat
The considerations of a certificate based solution vs. dynamically reloading config;
Pros
- NATs server is stateless
- Scales well in a clustered environment. It avoids the complex workflow of modifying nats.cfg file and signalling the NATs process, which is even more challenging in a clustered NATs setup
Cons
- Revoking individual certificates is harder. A CA would need to be removed from nats.cfg
- A new cert would have to be generated when an client's permissions would change

@derekcollison we ended up doing both authentication and authorization over Mutual TLS with a twist.
Each NATS client certificate has the client type and id embedded in the cert. So the certificate does not explicitly have the permissions.
Then when the server gets the client cert, it extracts the client ID and Type from it and applies it to a template of what it can publish/subscribe to.
For example: If client type is agent and  client id is 456, then we have a template defined for client types agent that allows that client to only publish to channel agent.456 and listen to agent.456.* .
Let us know if you're interested more into what we have implemented.

Interesting, thanks for the info. Do you allows updates to permissions after the fact? How do you deal with revocation? Thanks again.

@pivotal-jamil-shamy Interesting solution. I am assuming you applied this to a fork of gnatsd?
Per @derekcollison's question, my guess is that revocation isn't technically required since the indirection with the server templates are what ultimately dictate the permission? I could imagine a control plane layer that manages these template/permission mappings.
@derekcollison If you are looking for a more flexible solution beyond JWTs (which also suffer from the revocation issue), Open Policy Agent (OPA) may be good for this use case. It is also incubating in the CNCF. It is implemented in Go so can be embedded or it can be deployed as a sidecar.

@bruth yep, this was implemented into a fork of gnatsd. Open Policy Agent seems inetersting, will look into that.
@derekcollison in our system, we usually don't need to revoke individual clients permissions. What we end up doing is a periodic rotation of the whole system Certificate Authorities which will ensure no old client certs can be valid forever.

Agree with short lived permissions. We will encourage this in the JWT scheme we will deliver in Q3. We do feel a revocation system is needed and we are in the process of designing how that would work.

After doing a bit of research of who is who, I have a better understanding of everyone involved.
@pivotal-jamil-shamy - Thanks for sending that info over, however, I did not realize that it was in a forked repo. I appreciate your response anyhow.
@derekcollison - After spending a few hours researching, I think I found I was looking for like you mentioned and it is exactly what we need. I'm new to Go, so please let me know if I got this right.
In this config file there is an option verify_and_map :
https://github.com/nats-io/gnatsd/blob/f10020ed42b934b4fac7178b98c46ed4fa628cc4/test/configs/tls_cert_id.conf#L16
This sets tc.Map and then o.TLSMap to true:
https://github.com/nats-io/gnatsd/blob/8361155fb25cbe218958c59ce8f225abd5252f28/server/opts.go#L1841-L1847
https://github.com/nats-io/gnatsd/blob/8361155fb25cbe218958c59ce8f225abd5252f28/server/opts.go#L470
The eventually gets to the method isClientAuthorized were it picks up cert.EmailAddresses[0] from the Go TLS ConnectionState and Go x509 Certificate struct types and maps it to the user:
https://github.com/nats-io/gnatsd/blob/6b2b4d9bafe92a3e11bf434c8d860acf26766dd5/server/auth.go#L246
https://github.com/nats-io/gnatsd/blob/6b2b4d9bafe92a3e11bf434c8d860acf26766dd5/server/auth.go#L306
https://github.com/nats-io/gnatsd/blob/6b2b4d9bafe92a3e11bf434c8d860acf26766dd5/server/auth.go#L318
https://github.com/nats-io/gnatsd/blob/6b2b4d9bafe92a3e11bf434c8d860acf26766dd5/server/auth.go#L327-L328
One question I have, I saw that the user's password is still checked later in the method:
https://github.com/nats-io/gnatsd/blob/6b2b4d9bafe92a3e11bf434c8d860acf26766dd5/server/auth.go#L426-L427
Would I be correct to assume that user.Password and c.opts.Password are nil values with TLS map and would therefore match, then consider the user authenticated?

Yes that is correct. We have also added an additional mapping type that uses Go's Subject for x.509 certs. /cc @wallyqs

Yes that is correct. We have also added an additional mapping type that uses Go's Subject for x.509 certs. /cc @wallyqs

Awesome! While I cant make a commitment without getting permission from my company, I am going to ask about contributing a documentation PR to the docs repo according to the contribution guidelines.
It looks like add info to these two pages might be the right place:
https://github.com/nats-io/nats-site/blob/master/content/documentation/managing_the_server/security.md
https://github.com/nats-io/nats-site/blob/master/content/documentation/managing_the_server/authentication.md

We appreciate any and all PRs, so if you are able please send away, and thanks in advance.

Yes that is correct. We have also added an additional mapping type that uses Go's Subject for x.509 certs. /cc @wallyqs

Ah, I just noticed that this code is not yet in a release tag. I'm only allowed to use feature in an official release.
I saw this PR https://github.com/nats-io/gnatsd/pull/896 and the changes are approved. Are you able to share an ETA on when this feature will be release?

Hi @nerdoftech I just merged that branch so would be part of the next release which would happen sometime in the next few weeks I think.

Thanks, @wallyqs !

Can this be closed or should we wait for next release before closing?

Seems like 2.0.0-RCX has the functionality. We're trying it out in cloudfoundry/bosh

@h4xnoodle Great, ping us directly on Slack or email if you have any questions.

@h4xnoodle I wanted to check in with you. I wanted to make sure that using NATS inside of BOSH and other things at VMW was going well.
If not let's jump on a video call, I would like to understand the issues and anything we can do to make NATS better inside VMW.


Performance analysis for KubeArmor

Profiling KubeArmor
Currently KubeArmor is consuming high CPU and the memory usage is increasing with time. This alarms the requirement of creating a profiling tool to analyze these types of issues
Describe the solution you'd like

[x] Check CPU and memory usage of KubeArmor with and without visibility
[ ] pprof to be supported as part of kubearmor startup
[x] disable visibility and check CPU / mem
[ ] longrun tests
[ ] diagnostics as a part of CI
[ ] Auto test using NETNEXT=1

The memory usage of KubeArmor keeps on increasing with time, this suggests a possible memory leak
The CPU usage varies a lot (from 4% to 75%) and RAM usage keeps on increasing with time. But in general initial testing suggests that initial CPU usage is lower when KubeArmor is tested with visibility off.

Analysis data: https://tame-haddock-e70.notion.site/KubeArmor-Profiling-2b758b7091ce4eccacf3b2dd308105ca

3 calls seem to be really expensive and constitute most of the CPU Usage:

Loop to read perf buffer (Ref)
Readlink to get execpath while building logbase (Ref)
WriteFile while pushing log (Ref)

Here's a supporting profile for the same: https://pprof.me/8cab6cd/
Action items

Drop telemetry events in the kernel space
Optimise 1 & 2
Disable 3 by default

cc @daemon1024

I think we should take this for v0.6 and then plan how we can improve further for v0.7.
We have certain things in mind, primarily: absorbing kernel events in kernel space and sending out only summarized output for a interval in an event (this is a big task)

So I ran kubearmor with GKE microservices-demo and observed the log outputs. I took 3 logs, each of 5 minutes, and then filtered the logs based on Operation: File, to check which file is being accessed. I also counted how many times a file is accessed in a log..
LOG 1:

    170 "/"
    366 "/bin/grpc_health_probe"
    504 "/etc/group"
    298 "/etc/passwd"
      3 "/memory/memory.stat"
     79 "/sys/kernel/mm/hugepages"
    591 "/sys/kernel/mm/transparent_hugepage/hpage_pmd_size"
    192 "/usr/share/zoneinfo/Etc/UTC"

LOG 2:

    161 "/"
    391 "/bin/grpc_health_probe"
    521 "/etc/group"
    283 "/etc/passwd"
      3 "/memory/memory.stat"
     80 "/sys/kernel/mm/hugepages"
    606 "/sys/kernel/mm/transparent_hugepage/hpage_pmd_size"
    192 "/usr/share/zoneinfo/Etc/UTC"

LOG 3:

    165 "/"
    407 "/bin/grpc_health_probe"
    499 "/etc/group"
    290 "/etc/passwd"
      3 "/memory/memory.stat"
     65 "/sys/kernel/mm/hugepages"
    590 "/sys/kernel/mm/transparent_hugepage/hpage_pmd_size"
    202 "/usr/share/zoneinfo/Etc/UTC"

The numbers represent the number of times the file was accessed in a log. I think /sys can be filtered out just like how /proc is filtered, as mentioned by @nyrahul


calculate loss alarm based on send time of last retransmittable packet

Codecov Report

Merging #1255 into master will increase coverage by <.01%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master    #1255      +/-   ##
==========================================
+ Coverage   90.94%   90.94%   +<.01%
==========================================
  Files         117      117
  Lines        8022     8023       +1
==========================================
+ Hits         7295     7296       +1
  Misses        482      482
  Partials      245      245

Impacted Files
Coverage Δ

internal/ackhandler/sent_packet_handler.go
90.91% <100%> (+0.03%)
:arrow_up:

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 076e03a...46f8930. Read the comment docs.


Working with relations (translation bundle)

Hi, i using translation bundle https://github.com/a2lix/TranslationFormBundle
And Audit bundle don't create any schema for relation tables automatically.
Its work only if i prescribed in the manual as in example
    simple_things_entity_audit:
        audited_entities:
            - MyBundle\Entity\MyEntity
            - MyBundle\Entity\MyEntity2

Can you check this, please.
And how to show in SonataAdmin history page with translation field ?
May be have some examples ?

Hi,
I am facing the same issue. I actually can't see the history on admin page (empty), but the audited translation table contains data.
ps: only translation data was updated in this case and there is nothing changed on main entity (no revision created).
Have you found a solution to the issue?
Thanks in advance,
Jon


TEMP_CELSIUS used by robonect is a deprecated constant

Describe the bug
I get the following message in my HomeAssistant instance running robonect saying "TEMP_CELSIUS was used from robonect, this is a deprecated constant which will be removed in HA Core 2025.1. Use UnitOfTemperature.CELSIUS instead"
To Reproduce
Install robonect on actual release of HomeAssistant or update an existing instance of HomeAssistant that has this integration installed
Expected behavior
Use UnitOfTemperature.CELSIUS instead to keep robonect compatible to future versions of HomeAssistant

Thanks! Haven't upgraded yet myself, but will fix it

Should be fixed with https://github.com/geertmeersman/robonect/releases/tag/v1.5.4
Can you confirm?

Hi,
I don't want to hijack this issue and can open a separate one, but for me there is one more constant that is marked deprecated. Maybe you want to fix this in one go: HA version is 2024.01
ELECTRIC_POTENTIAL_VOLT was used from robonect, this is a deprecated constant which will be removed in HA Core 2025.1. Use UnitOfElectricPotential.VOLT instead, please create a bug report at https://github.com/geertmeersman/robonect/issues
TEMP_CELSIUS was used from robonect, this is a deprecated constant which will be removed in HA Core 2025.1. Use UnitOfTemperature.CELSIUS instead, please create a bug report at https://github.com/geertmeersman/robonect/issues

Hi @udochrist , this was also changed in v1.5.4: https://github.com/geertmeersman/robonect/commit/5d8e9193ea6f1ab59acd46cfe7cc263c8c03b781

Thx. I‘ll give it a try later today then.

Thanks and let me know if it was fixed, but I'm quite confident :-)

Working. The two deprecations are no longer logged-

jep - working, confirmed! :-)


[bug]zhipu sdk sse message cannot send uniform[BUG]

Describe the bug
I would like to ask, for Zhipu AI SDK, why is the message pushed after all messages are completely returned (although it is SSE message, all the messages are pushed at almost the same time). Can you check what the problem is here?
Log and Stack trace

To Reproduce
running dev.langchain4j.model.zhipu.ZhipuAiStreamingChatModelIT#should_stream_answer
Expected behavior

sse should return at a constant speed, not all at once
Please complete the following information:

LangChain4j version:0.28.0
LLM(s) used: zhipu sdk
Java version: 8
Spring Boot version (if applicable):

Additional context

cc @1402564807

i find the reason, after remove
 if (builder.logResponses) {             okHttpClientBuilder.addInterceptor(new ResponseLoggingInterceptor());         } sse can stream return otherwise the all response return simultaneously

我找到原因了，删除  if (builder.logResponses) { okHttpClientBuilder.addInterceptor(new ResponseLoggingInterceptor()); }sse 后可以流式返回，否则所有响应同时返回

Hello, I switched from the current client implementation to using the official SDK, and this problem has been solved.

我找到原因了，删除  if (builder.logResponses) { okHttpClientBuilder.addInterceptor(new ResponseLoggingInterceptor()); }sse 后可以流式返回，否则所有响应同时返回

Hello, I switched from the current client implementation to using the official SDK, and this problem has been solved.

but offical SDK impl is ugly


feat: Overwrite

add OVERWRITE keyword, which allows in-place changes using horizontal and vertical flip in OpenCV

@ashmitaraju Is it possible to combine this with the ANNOTATE command?

You can add a notebook to depict some of the UDFs like horizontal flip and adding frame ID, using the OVERWRITE command as well.

@AlexanderCui001228 Can you update the PR based on the suggestions?


bootstrap for raspberrypi 4B?

could we get a boostrap for raspberrypi 4B? that would be arm8. or is there another way to boostrap the raspberrypi 4B? i need these binaries badly!

I'm not that familiar with arm. GOARM=8 is not valid. Do the GOARM=7 binaries not work in a 32-bit plan9 install? Or are you running 64-bit plan9 (which requires GOARCH=arm64)?

that is correct the 32bit binaries won't work on a 64bit install. at least not for me.

arm64 is not supported. However, you can try out the WIP arm64 port: https://github.com/golang/go/issues/57540

thanks much!


⚠ Bofrost.at has degraded performance

In 8966465, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1673 ms

Resolved: Bofrost.at performance has improved in 23f42e5.


Delay updating GitHub after signing CLA

When someone signs the CLA, in some cases the PR is updated right away, in other cases there can be a delay for several minutes.
Any guidance on where I should focus my debugging would be appreciated. Thanks!

@SendGridDX since GitHub API doesn't respond reliably strait after creating a PR, we enforce CLA assistant to wait a minute before trying to update the PR status. You can find this setting in config.js (see server.github.enforceDelay) You can overwrite it by setting env. parameter "GITHUB_DELAY" to any other value
The implementation of this delay is in src/server/webhooks/pull_request.js


Boomerang Behaves Incorrectly when World is Loaded while it is in Flight

The issue has evolved from incorrect behavior to consistent crashing


010 - Login

it's just a first try. Dunno if you had another idea @evildmp
lemme know!

This looks great, thanks, merged.


Create backlog for /docs

Time to get some guides and content together. Just need to create a quick plan for the sequencing and priorities of the pages/content.

Will do this directly in the epic instead vs. spread it out


How to get depth information and IMU data at the same time on windows ?

Before opening a new issue, we wanted to provide you with some useful suggestions (Click "Preview" above for a better view):

Consider checking out SDK examples.
Have you looked in our documentations?
Is you question a frequently asked one?
Try searching our GitHub Issues (open and closed) for a similar issue.

All users are welcomed to report bugs, ask questions, suggest or request enhancements and generally feel free to open new issue, even if they haven't followed any of the suggestions above :)

Required Info

Camera Model
{  D435i }

Firmware Version
(Open RealSense Viewer --> Click info)

Operating System & Version
{Win (8.1/10)

Kernel Version (Linux Only)

Platform
PC.

SDK Version
sdk 2.6.5

Language
{C }

Segment
{Robot}

Issue Description
<>

In the enable_stream function, how should I configure it?

Can you share a call code?

Thank you very much for your guidance.

Happy to help.
To enable IMU explicitly, you can call config.enable_stream(RS2_STREAM_ACCEL); and config.enable_stream(RS2_STREAM_GYRO);.
You could also specify the frame-rate using config.enable_stream(RS2_STREAM_ACCEL, RS2_FORMAT_MOTION_XYZ32F, 250) (this will set the accelerometer rate at 250 Hz)
You can see the list of supported configurations here and in the device data-sheet.
We don't include explicit configuration details in the examples, because we want the same examples to work on all supported (and future) devices. So if you don't provide an explicit configuration, you will just get the default IMU from the D435i.
Once you do get a frameset with motion frames, you can cast them to rs2::motion_frame:
using namespace std;
using namespace rs2;
frameset fs = p.wait_for_frames();
for (auto& f : fs) {
   if (f.is<motion_frame>()) {
       motion_frame mf = f.as<motion_frame>();
       rs2_vector xyz = mf.get_motion_data();
       cout << f.get_profile().stream_type() << ": "
            << xyz.x << ", " << xyz.y << ", " << xyz.z << endl;
   }
}


Introduction of ordering breaks Zookeeper based consumers

Hi all, we've been using Burrow for a number of years and it's an awesome tool, thank you! We've recently upgraded from Kafka <IP_ADDRESS> to Kafka 2.2 and we have a mixture of "old style" (Zookeeper based offsets) and "new style" (Kafka based offsets) consumers. Using the most recent version of Burrow lag only seems to be reported correctly for the Kafka based consumers. For Zookeeper based consumers lag is displayed but just constantly increases over time.
I believe this is related to the introduction of ordering here - https://github.com/linkedin/Burrow/blob/46e352a3775717af7b5e2a8faa3a679f051995b6/core/internal/storage/inmemory.go#L443 For Zookeeper based consumers the Order field of the StorageRequest is never updated, it's always zero (from initialisation - https://github.com/linkedin/Burrow/blob/46e352a3775717af7b5e2a8faa3a679f051995b6/core/internal/consumer/kafka_zk_client.go#L456) which means findConsumerOffsetDestination() always returns nil after initial offsets are stored. So consumer offsets are read correctly from Zookeeper but never stored.
Let me know if I'm way off base, cheers ;)

Hopefully this helps. I've done a bit of testing today and our lag metrics now seem to be in line with what they were before the Burrow update - https://github.com/linkedin/Burrow/pull/574

Works for me ;)


Just a Typo

missing a ' at the end of dataset='stl10
What does this PR do?

missing a ' at the end of dataset='stl10
Fixes # (issue)
Before submitting

[ ] Was this discussed/approved via a Github issue? (no need for typos and docs improvements)
[ ] Did you read the contributor guideline, Pull Request section?
[ ] Did you make sure your PR does only one thing, instead of bundling different changes together? Otherwise, we ask you to create a separate PR for every change.
[ ] Did you make sure to update the documentation with your changes?
[ ] Did you write any new necessary tests?
[ ] Did you verify new and existing tests pass locally with your changes?
[ ] If you made a notable change (that affects users), did you update the CHANGELOG?

PR review

[ ] Is this pull request ready for review? (if not, please submit in draft mode)

Anyone in the community is free to review the PR once the tests have passed.
If we didn't discuss your PR in Github issues there's a high chance it will not be merged.
Did you have fun?
YES!🙃🙃🙃🙃
Make sure you had fun coding 🙃

@JonathanSum LGTM. Thank you for your contribution!


run visualize_result.py error( IndexError: invalid index to scalar variable)

enviroment
ubuntu16.04
cuda9.0
torch==1.1.0
torchvision==0.3.0
Cython
yacs
tensorboard
future
termcolor
sklearn
tqdm
opencv-python==<IP_ADDRESS>
matplotlib

I ran visualize_result.py and met this error.
python ./demo/visualize_result.py --config-file './configs/Market1501/AGW_R50.yml' --vis-label --dataset-name 'Market1501' --output 'logs/market1501/agw_R50/agw_market1501_vis' --opts MODEL.WEIGHTS "./logs/market1501/agw_R50/model_final.pth"

Traceback (most recent call last):
  File "./demo/visualize_result.py", line 139, in <module>
    args.rank_sort, args.label_sort, args.max_rank)
  File "./fastreid/utils/visualizer.py", line 157, in vis_rank_list
    self.save_rank_result(query_indices, output, max_rank, vis_label, label_sort, actmap)
  File "./fastreid/utils/visualizer.py", line 69, in save_rank_result
    ax.set_title('{}/{:.2f}/cam{}'.format(query_name, self.all_ap[q_idx], cam_id))
IndexError: invalid index to scalar variable.

Does anyone have this problem?

maybe this is because your dataset not put in the right place, please check here.

I check it.My dataset put in the right place.I can get the result but line 69 of visualizer.py.

I think this problem caused by the evaluation function. You can update the evaluation cython code and recompile it.

I solve this by modify:
修改/fast-reid-master/fastreid/evaluation/rank.py
line182:
use_cython=False```

I'll close it.so feel free to reopen it

I'll close it.so feel free to reopen it


Enable data team to access

User Story
As a GIS data team member
I want to have access to the current application form data & files
so that I can do my analyses.
Description
GIS team will need the KMZ files ASAP to populate their webmap of applications that NWBC leans on for assessment. They need key info from the applications such as project name, org name, household count, and more.
They would like to be able to read from our database using python and/or ArcGIS. Alec may remember their tech better.
Maybe we could parse KMZ & have them in our database then data team just needs api to access our database. Give them a rest API & a key then they can grab the data.
APIs are recommended by BC Gov Devhub
Data team would like to parse KMZ and could pull it from Sharepoint.

@elliottSlee @MarsRomer
The Data Team will be able to retrieve these pieces of information when we complete #747 (CSV) and #757 (Download individual attachments from the application page).

We should validate with the data team & @MarsRomer whether that process will suffice for the data team and our MVP analyst release. They wanted something more automated/not manual because the main pain point in the past has been lack of communication when files are updated.

De-prioritized for first release of analyst portal. #737 & #747 will work for MVP

as MVP I think we will only have time for the manual process but will continue to iterate and automate where there is value in the effort


Mostly Finished Puzzle Logic, Prefabs set up

All 5 puzzles are done and in working order, aside from some fine tuning. Code is notated for animation when it's ready. Puzzle doors and buttons all have audio. All the Prop prefabs have correct audio sources on them.

Looks good :)


[Select][joy-ui] Increase max-height

Duplicates

[X] I have searched the existing issues

Latest version

[X] I have tested the latest version

Steps to reproduce 🕹
Link to live example:
Steps:

Current behavior 😯
No response
Expected behavior 🤔
No response
Context 🔦
https://github.com/mui/material-ui/pull/36156/files#r1302777804
It also feels like on Material UI and Joy UI, we should have a min-width set, it can feel too narrow when all the values are short.

  Output from `npx @mui/envinfo` goes here.

@oliviertassinari we would like to pick this up

thanks

@oliviertassinari i would like to solve the issue .


lv_img_cache: fix buffer overrun

Reset the cache entry, not the pointer to the cache entry.

Nice catch! Merging.

I can't really claim credit; pc_simulator_sdl_eclipse complained:
In file included from /usr/include/string.h:494:0,
                 from /mnt/devel/external/lvgl-pc_simulator_sdl_eclipse/lvgl/src/lv_draw/../lv_misc/lv_area.h:16,
                 from /mnt/devel/external/lvgl-pc_simulator_sdl_eclipse/lvgl/src/lv_draw/lv_img_decoder.h:25,
                 from /mnt/devel/external/lvgl-pc_simulator_sdl_eclipse/lvgl/src/lv_draw/lv_img_cache.h:16,
                 from /mnt/devel/external/lvgl-pc_simulator_sdl_eclipse/lvgl/src/lv_draw/lv_img_cache.c:9:
In function ‘memset’,
    inlined from ‘lv_img_cache_open’ at /mnt/devel/external/lvgl-pc_simulator_sdl_eclipse/lvgl/src/lv_draw/lv_img_cache.c:121:13:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:71:10: warning: ‘__builtin___memset_chk’ writing 72 bytes into a region of size 8 overflows the destination [-Wstringop-overflow=]
   return __builtin___memset_chk (__dest, __ch, __len, __bos0 (__dest));
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

I'll have to add that warning to my collection. :wink: Seems like it could come in handy sometime.
Thank you for the tip!

You're welcome.  It probably came from -Wall; I built with the existing Makefile which seems to have some nice strictness to it---the only obvious thing to add would be -Werror so it couldn't scroll by and be missed.

Strange, I've already fixed it in 135c119
It seems it was somehow overwritten.
Anyway, thank you for the fix!


Update to nlbuild-autotools 1.6.5

Codecov Report

Merging #90 into master will decrease coverage by 12.98%.
The diff coverage is n/a.

@@             Coverage Diff             @@
##           master      #90       +/-   ##
===========================================
- Coverage   73.11%   60.13%   -12.99%
===========================================
  Files         431      306      -125
  Lines       73671    49367    -24304
===========================================
- Hits        53865    29685    -24180
+ Misses      19806    19682      -124

Impacted Files
Coverage Δ

src/lib/profiles/data-management/Current/Command.h
0% <0%> (-100%)
:arrow_down:

src/lib/core/WeaveStats.cpp
0% <0%> (-100%)
:arrow_down:

src/test-apps/MockSinkTraits.h
0% <0%> (-100%)
:arrow_down:

src/lib/core/HostPortList.h
0% <0%> (-100%)
:arrow_down:

src/lib/support/FibonacciUtils.cpp
0% <0%> (-100%)
:arrow_down:

src/lib/core/WeaveSecurityMgr.h
0% <0%> (-100%)
:arrow_down:

...b/profiles/security/ApplicationKeysTraitDataSink.h
0% <0%> (-100%)
:arrow_down:

...profiles/security/ApplicationKeysTraitDataSink.cpp
0% <0%> (-93.16%)
:arrow_down:

src/inet/InetLayerBasis.cpp
0% <0%> (-90%)
:arrow_down:

...files/bulk-data-transfer/Development/BDXMessages.h
0% <0%> (-86.67%)
:arrow_down:

... and 210 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 87621a3...a625682. Read the comment docs.


Problem with passing html text as 'data:text/html,' when html text contains #

Steps to reproduce
Tell us about your environment:

Puppeteer version: 2.1.0
Platform / OS version: Windows 10
URLs (if applicable):
Node.js version: v12.14.0

What steps will reproduce the problem?

Load an html file that contains a '#' with fs.readFileSync()
Pass it to page.goto with 'data:text/html,'
Notice that it only gets rendered until the '#'

NOTE: # are treated correctly when you pass the html as a file://
What is the expected result?
The expected result would be that the # which is included as text will be rendered as text
What happens instead?
If you console.log the page object and inspect the url it ends on the #

We faced the same issue.

You must encode the uri components before passing it into the data:text/html stream
let html = encodeUriComponent({your rendered html});
i.e page.goto(data:text/html;charset=UTF-8,${html}, {waitUntil : "networkidle0"});


determine multi-event sequence algorithms for RPOD

Determine which algorithms and functions are done similarly across multiple Event Sequences for RPOD. These can be implemented in the same function and just given different argument values. Create an issue for each algorithm to design each algorithm. Create an issue for each algorithm to program each algorithm.

Duplicate of #33


Refresh projects and project state in the UI

Now that the UI is not making as many API calls, it is difficult for the user to refresh state from the server.

Added two Refresh buttons so that users can refresh their state. One button to refresh all projects and one button just to refresh the current project.


Add --public/--private flags to specify which IP to return

Right now we only return the private_ip of each instance, but it would be useful to be able to return the public IP instead, or even to correlate instances with their DNS records if possible.

We now return the public IP if available, otherwise the private IP. Close enough.

@adammck how would you go about getting around networking requirements that prevent access from the public ip.   Is there anyway to force private only?

I'm afraid that there's currently no way to force a private IP when a public IP is available. I'd like to add a flag and/or ENV var to do it.

I like it! very useful for me. :-)
IMO, If the terraform-inventory returns both of public IPs and private IPs, It's more useful for me.
instance_private : ["<IP_ADDRESS>"] , instance : [ "52.3.x.x"]
What do you think?

We usually address instances by private ip (site to site vpn) even though they also have public IPs assigned usually.

You can force use of the private IP by setting TF_KEY_NAME. For example:
TF_KEY_NAME=private_ip ansible-playbook --inventory-file=`which terraform-inventory` ansible/consul.yml


Powershell: Can't get the correct profile path

Describe the bug
Try to run inshellisense bind in powershell on macOS and got following error:
$ inshellisense bind
Select your desired shell for keybinding creation
  bash
  zsh
  fish
> powershell
  pwsh
node:internal/process/promises:289
            triggerUncaughtException(err, true /* fromPromise */);
            ^

[Error: ENOENT: no such file or directory, open '/Users/username/Documents/WindowsPowershell/Microsoft.PowerShell_profile.ps1'] {
  errno: -2,
  code: 'ENOENT',
  syscall: 'open',
  path: '/Users/username/Documents/WindowsPowershell/Microsoft.PowerShell_profile.ps1'
}

To Reproduce
Steps to reproduce the behavior:

Open powershell  on macOS
Run inshellisense bind

Expected behavior
The correct profile path is ~/.config/powershell/Microsoft.PowerShell_profile.ps1
$ file $PROFILE
/Users/user/.config/powershell/Microsoft.PowerShell_profile.ps1: ASCII text

Environment

OS: macOS
Output of inshellisense --version: 0.0.1-rc.1
Nodejs Version: 21.1.0

Additional context
Add any other context about the problem here.

After manually insert the key-bindings into the profile,:
if(Test-Path '/Users/username/.inshellisense/key-bindings-pwsh.ps1' -PathType Leaf){. /Users/username/.inshellisense/key-bindings-pwsh.ps1}

I got another error:
node:internal/modules/cjs/loader:1147
  throw err;
  ^

Error: Cannot find module<EMAIL_ADDRESS>    at Module._resolveFilename (node:internal/modules/cjs/loader:1144:15)
    at Module._load (node:internal/modules/cjs/loader:985:27)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:135:12)
    at node:internal/main/run_main_module:28:49 {
  code: 'MODULE_NOT_FOUND',
  requireStack: []
}

It seems that there are some hard-code paths for windows...

Powershell and pwsh are completely different. Powershell is Windows only and pwsh is cross-platform


Elysia WebSocket API TypeScript Error: "Type instantiation is excessively deep and possibly infinite"

I created a new Elysia app using bun create elysia elysia-app, and when I go to add WebSocket support:
import { Elysia, ws } from "elysia";

const app = new Elysia()
	.use(ws())
	.ws('/ws', {
		message(ws) {
			console.log('New ws message!');
		}
	})
	.listen(3000);

console.log(
  `🦊 Elysia is running at ${app.server?.hostname}:${app.server?.port}`
);

I get the following error message that wraps from new Elysia() to before .listen(3000):
TS2589: Type instantiation is excessively deep and possibly infinite.

I could not reproduce it on my end.
Can you please provide your bun and dependency versions by running:

bun version: bun --version
dependencies: bun pm ls (inside your project's root)

I'm using bun v0.6.7 and:
├──<EMAIL_ADDRESS>└──<EMAIL_ADDRESS>

bun --version is 0.6.8, and bun pm ls outputs:
├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>└──<EMAIL_ADDRESS>
I should clarify I added TypeScript so I can run tsc to check for type errors.

That makes sense, it doesn't work for me with tsc either.
You can add the following line to disable the type error for now:
// @ts-ignore
const app = new Elysia()

@SaltyAom, the root cause seems to be here:
https://github.com/elysiajs/elysia/blob/3134e9e56bd5e2503ebf1bc260f744d6280788e5/src/ws/types.ts#L143-L147
Any idea how to fix it?

I'm sorry for not getting back to you sooner.
This issue is somewhat hard to solve, but it should get better in Elysia 0.5.19, try update to see if the issue gets better.

0.5.19 fixed the issue. Thank you!


#50 - improve list and list item; add list item test; #52 - improve nav-drawer tests

#50 Improve list items - remove duplicate code; Implement angular way event listener attachment in list; Add test for list items; #52 - improve nav-drawer tests to be compatible with RC4;

Coverage increased (+1.6%) to 75.273% when pulling 67315ef00ca2a05a97af9c248f25a72f5e8600c1 on petko5kov:master into c135ff59ea5fd50d476875806ee947a6a121f47b on Infragistics:master.


Gitlab example update

Issue #, if available:
Description of changes:
Updating the GitLab CI/CD example.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Closing PR as it's a duplicate of https://github.com/aws-samples/aws-eks-accelerator-for-terraform/pull/215


Incorrect platform in the image

The section talks about iOS onboarding of devices into MDE, however the image in the section below is a Windows 10 device. Can the image be altered to show an iOS device and be reflective of the content being discussed.

Upon successful onboarding, the device will start showing up on the Devices list in the Microsoft 365 Defender portal.

[!div class="mx-imgBorder"]
:::image type="content" source="images/device-inventory-screen.png" alt-text="The Device inventory page" lightbox="images/device-inventory-screen.png":::

@JohanFreelancer9

@msbemba

@yogkumgit  Do we know which document should be fixed? I'll be able to work on it once I have the document that needs the updated Image.

@sccmentor as guided, please open an issue and link it with the document name. We will look into that issue and implement your feedback after review. We proceed here to close this PR. Thanks.


fix: Don't throw when RN tries to poll

Motivation

React Native doesn't have addEventListener. Furthermore, it has it's own way of detecting online/offline.
Solution

For now we'll just not activate offline/online detection when addEventListener isn't available.
Open questions

How can we cleanly add online/offline detection for RN
We should figure out how to run the tests in a React Native environment so things like this never happen again.

There are other uses of addEventListener in this code which haven't been guarded, and calls to removeEventListener which I suspect will also throw.
Maybe further guarding would be appropriate.

ok looks like isOnline() will always return true for React Native, so the other add/removeEventListeners won't be hit.


Better support: Bitbucket server + Xcode server

While using DangerCI in my project setup I noticed a bunch of issues fixed with this PR:

BitBucket Server has issues with default emojis (I got HTTP 500 when tried to pos a comment with default emojis)
BitBucket Server was not listed as a supported source for XcodeServer
Different emojis was used without mapping with character_from_emoji
BitBucket Server disable inline HTML syntax support in comments. Current syntax is limited

p.s.: Ruby is not a language I know well so any advice about "how you shouldn't write in Ruby" could be helpful.

          1 Error

:no_entry_sign:
Please include a CHANGELOG entry.
You can find it at CHANGELOG.md.

          1 Warning

:warning:
Tests were not updated

          1 Message

:book:
@krin-san is not a contributor yet, would you like to join the Danger org?

  Generated by :no_entry_sign: danger

Thank you so much for this 🙏 . Looks good 😍  with few comments 👍

Cool - @JuanitoFatas wanna give this one more look over - seems good from me

@krin-san Would you like to be a danger contributor (join the danger organization)? 😊

@JuanitoFatas, sure, I'd like to. I could help with something in future =]

Added! Welcome!

Aw I invited you or @orta faster than me?

@JuanitoFatas you was first :)

It was a different invitations! 😂
@JuanitoFatas, you invited me to a repo contributors granting with a push action rights
@orta, you invited to the Danger github organization.
So I can't judge who was the first =)

@orta, you invited to the Danger github organization.
So I can't judge who was the first =)

Ah I guess @orta is right. Please ignore mine and accept his, thank you and have a lovely day.

:D

more is more


feat: enable same-chain Li.Fi swaps

Description
Does what it says on the box - effectively allows us to "unrug ZRX" while in the process of getting an enterprise key.
Ensures we have the same pairs (and potentially more) as before available, as well as giving us new pairs
e.g ETH on Optimism to Optimisk tokens, to help users do cross-chain swaps for the OP campaign.
Pull Request Type

[ ] :bug: Bug fix (Non-breaking Change: Fixes an issue)
[ ] :hammer_and_wrench: Chore (Non-breaking Change: Doc updates, pkg upgrades, typos, etc..)
[x] :nail_care: New Feature (Breaking/Non-breaking Change)

Issue (if applicable)

N/A
Risk

Current Li.Fi pairs could theoretically be borked, test accordingly

Testing

Curent Li.Fi pairs are happy
Li.Fi shows up for same-chain swaps when applicable (test against Jumper)

Engineering

^

Operations

^

Screenshots (if applicable)

Current dependencies on/for this PR:

develop

PR #4919   👈

This comment was auto-generated by Graphite.


Change proposed

If we could display unlimited sprites on a single scan line we wouldn't care about hidden sprites and their priorities (we would just display them all). However we can only display the ten sprites with the highest priorities. Thus the real problem is not their priorities, but the fact that these hidden sprites count towards the limit of ten.

Not needed any more because I just included this change here: #126


Black splotches in terminal background

[x] I am on the latest Hyper.app version
[x] I have searched the issues of this repo and believe that this is not a duplicate

OS version and name: Mac OS Mojave 10.14.3
Hyper.app version: 2.1.2
Link of a Gist with the contents of your .hyper.js: https://gist.github.com/kufii/ae5eaae04d793e633eaaa565c77a724b
Relevant information from devtools (CMD+ALT+I on macOS, CTRL+SHIFT+I elsewhere): N/A
The issue is reproducible in vanilla Hyper.app: Yes, just change the background color

Issue
When using a non-black background color, I have issues with black splotches bleeding through. This is especially noticeable when resizing

this seems to not be occurring as of some recent update


Fix the build for the lts branch

When i run the build locally, then i see the same error like in the appveyor build.
Therefore i tried to fix it.

At first issue i found an missing dependency in the pom.xml.
After that the build works, but not the testsuite.
But an running test-suite are important for the “package” task of maven.
For an quick and dirty solution, just ignore the failing tests.

After that changes, the build runs locally.
Not sure if you want this changes, but it's hopefuly helpful for you.

Oops, the build on appveyor is still failing. Sorry for disruption with non working patches :-)

No problem, help is always appreciated :-)
I think "latest" is not working because the plugin originally is based on SonarQube 4.5.2. "Latest" tests plugin integration with the latest SonarQube version (currently 6.4). They dropped some old parts (to my understanding, SonarQube policy is to mark things that get dropped "deprecated" for one major version (which would be 5.x) and remove them with the next major version. They deprecated some parts in 5.x (current LTS) and dropped them in latest.
Purpose of this LTS branch is to migrate the plugin from 4.5 to 5.6.6 (current LTS), so the compile log shows what "deprecated" warnings, then fix these "deprecated" warnings t get "latest" working.
And in the future, this LTS branch will move along with LTS releases of SonarQube.


Coverage Output File Needs to exist?

I have this in pipeline.yml file:
- name: Run Unit Tests
  uses<EMAIL_ADDRESS>    with:
      testProject: ${{ env.UT_PROJECTDIR }}
      output: 'opencover.info'
      outputFormat: 'opencover'
      excludes: '[program]*,[UnitTests]Tests.*,[Merlin]*'

env.UT_PROJECTDIR is defined as:
UT_PROJECTDIR: UnitTests\\                      # unit test directory
The output I get is:

Run<EMAIL_ADDRESS>create coverlet args
found exclusions [program],[UnitTests]Tests.,[Merlin]*
coverlet args -p:coverletOutput=opencover.info -p:CollectCoverage=true -p:CoverletOutputFormat=opencover -p:Exclude="[program],[UnitTests]Tests.,[Merlin]*" UnitTests\
run dotnet test
Determining projects to restore...
All projects are up-to-date for restore.
Saucery -> /home/runner/work/Saucery/Saucery/Saucery/bin/Debug/net5.0/Saucery.dll
UnitTests -> /home/runner/work/Saucery/Saucery/UnitTests/bin/Debug/net5.0/UnitTests.dll
Test run for /home/runner/work/Saucery/Saucery/UnitTests/bin/Debug/net5.0/UnitTests.dll (.NETCoreApp,Version=v5.0)
Microsoft (R) Test Execution Command Line Tool Version 16.11.0
Copyright (c) Microsoft Corporation.  All rights reserved.

Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
Skipped FlowControlTest [< 1 ms]

Passed!  - Failed:     0, Passed:    41, Skipped:     1, Total:    42, Duration: 829 ms - /home/runner/work/Saucery/Saucery/UnitTests/bin/Debug/net5.0/UnitTests.dll (net5.0)

Error: error occured : coverage file not found at ./opencover.info
[1]covergae file not found at ./opencover.info
setting output coverageFile : >>./opencover.info<<
coverlet test done.

I interpret the error message as requiring the output file to exist !?  I would have expected this output file to be WRITTEN by the action and it SHOULDN'T exist.
This doesn't seem right.  What am I missing? Must be something silly on my part.
Thanks in advance.

hello @agray , output file is not required to exist. I think the problem is witn the testprohect arg of the action. it needs to be the path to the unit test csproj file. in your case it only contains the directory name.
it should be somethin like
-testproject: UnitTests/UnitTests.csproj

hopes this will help

Thank you.  I found I also made the mistake of thinking the agent was windows rather than unix.  Once the directory separator was corrected to '/' it executed the unit tests and emitted the coverage output file.
Question: Does the action currently support making a quality decision on the level of coverage and fail the build if deemed too low?

Unfortunately it still fails:
- name: Run Unit Tests
  uses<EMAIL_ADDRESS>    with:
      testProject: ${{ env.UT_PROJECT }}
      output: 'opencover.info'
      outputFormat: 'opencover'
      excludes: '[program]*,[UnitTests]Tests.*,[Merlin]*'

env.UT_PROJECT is defined as:
UT_PROJECT: UnitTests/UnitTests.csproj # unit test directory
And my output is:

Run<EMAIL_ADDRESS>create coverlet args
found exclusions [program],[UnitTests]Tests.,[Merlin]*
coverlet args -p:coverletOutput=opencover.info -p:CollectCoverage=true -p:CoverletOutputFormat=opencover -p:Exclude="[program],[UnitTests]Tests.,[Merlin]*" UnitTests/UnitTests.csproj
run dotnet test
Determining projects to restore...
All projects are up-to-date for restore.
Saucery -> /home/runner/work/Saucery/Saucery/Saucery/bin/Debug/net5.0/Saucery.dll
UnitTests -> /home/runner/work/Saucery/Saucery/UnitTests/bin/Debug/net5.0/UnitTests.dll
Test run for /home/runner/work/Saucery/Saucery/UnitTests/bin/Debug/net5.0/UnitTests.dll (.NETCoreApp,Version=v5.0)
Microsoft (R) Test Execution Command Line Tool Version 16.11.0
Copyright (c) Microsoft Corporation.  All rights reserved.
Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
Skipped FlowControlTest [< 1 ms]
Passed!  - Failed:     0, Passed:    41, Skipped:     1, Total:    42, Duration: 818 ms - /home/runner/work/Saucery/Saucery/UnitTests/bin/Debug/net5.0/UnitTests.dll (net5.0)
Error: error occured : coverage file not found at UnitTests/opencover.info
[1]covergae file not found at UnitTests/opencover.info
setting output coverageFile : >>UnitTests/opencover.info<<
coverlet test done.

Can we please have this reopened.

@agray i' ve reopened the issue. could you point me to you repo so i can look  closer at your workflow

Thank you @b3b00
https://github.com/Sauceforge/Saucery/actions

@agray I've published a new release of coverlet-action (<IP_ADDRESS>) with debug information. Could you try it (I've tried on a fork but I miss some  secrets)

Finally igot my own saucage api user and keys.
And I've found your issue. You miss a  coverlet package reference in the unittests.csproj

You can check it at this commit : https://github.com/b3b00/Saucery/commit/72838716ed658a735f1fa2b3aeff0982218ee536
And matching pipeline run : https://github.com/b3b00/Saucery/actions/runs/1277666968

Thank you @b3b00
Here is my run (still in progress at time of writing):
https://github.com/Sauceforge/Saucery/runs/3718732765?check_suite_focus=true

Cancelled and reran build.  Worked that time.
https://github.com/Sauceforge/Saucery/runs/3718847744?check_suite_focus=true
Thank you @b3b00, I was clearly the PEBCAK ;)
Question: Does the action support failing the build if the coverage is too low?

i ve just added a threshold param to set a minimal coverage. i ve not test it though you can have a try with last release. check readme for documentation.

Have look at this:
https://github.com/Sauceforge/Saucery/runs/3718980448?check_suite_focus=true
Specifically:

treshold, should be threshold I think.

@agray thank you for testing. it should be fixed with release 1.1.3

Is this what I'm supposed to see?
https://github.com/Sauceforge/Saucery/runs/3719548987?check_suite_focus=true

Error message is not really explicit but lowering threshold to 10 make the build pass.
I've used the default coverlet  threshold mechnism and error message seems to "disappear". For now it's working but I will later look at a way to make a clear error message or return a output variable stating that there is a coverage threshold error.

Thank you @b3b00 for your assistance.
The exception threw me (no pun intended).  Was expecting a "clean" error message to indicated build failure.
https://github.com/Sauceforge/Saucery/runs/3719660453?check_suite_focus=true  (I need more unit tests :/)

I guess that the issue comes from github actions runner that does not display standard error stream. coverlet display an error message like this :
error : The minimum line coverage is below the specified 80

on standard error output so we don't see it :( I am trying to find a way to redirect stderr to stdout. If I can not do it I will look at a way to manage myself the threshold not relying on coverlet own mechanism


Digital Ocean Apps can't locate chromium directory for puppeteer

I've been wrestling with this all day. I get the below error whenever I try to run my puppeteer script on Digital Ocean Apps.
/workspace/node_modules/puppeteer/.local-chromium/linux-818858/chrome-linux/chrome: error while loading shared libraries: libnss3.so: cannot open shared object file: No such file or directory
I did some research and found this helpful link below that seems to be the accepted solution.
https://github.com/puppeteer/puppeteer/issues/5661
However since I'm using digital ocean apps instead of the standard digital ocean droplets it seems I can't use sudo commands in the command line so I can't actually run these in the command line.
Does anyone know of anyway around this?
I'm using node.js by the way.
Thank you!!!!

were you able to find a fix to this issue? I encountered the same thing while deploying to heroku @cneisen234

Add these mock ENV variable. Im using node 16 and it works.
this one as long as it matches node 10, 12, 14, I think, I just mock set those variables to get it deployed
AWS_EXECUTION_ENV = "AWS_Lambda_nodejs14.1"
the ones below can be anything
AWS_LAMBDA_FUNCTION_NAME = "server"
FUNCTION_NAME = 'badge'
FUNCTION_TARGET = 'server'
FUNCTIONS_EMULATOR = 'server'

Um commented in the wrong repo that was meant for chrome-aws-lambda. I had this same issue which I ran to install deps.
 sudo apt install libnss3-dev libgdk-pixbuf2.0-dev libgtk-3-dev libxss-dev

Any way how to fix this other than deploying on a Droplet by defining our own Dockerfile?


Rails debugging - byebug starts on production environment

If I forget a "byebug" command in the code and it gets deployed to production, byebug stops on the breakpoint.
When I used debugger gem it used to skip "debugger" commands.
I tried Byebug.stop() in config/environments/production.rb - didn't work.
Is there any way I can make byebug disabled for production?
Thanks.

The truth is I don't feel like spending time now on babysitting developers. Maybe you can override byebug's method and check for the environment there...

Just came here to point the magnificent reply you posted here.
I have no words for that comment. You must be a true gent.


Kibana to Elasticsearch authentication failure (opendistro debian packages).

Hi,
First of all, thank you for providing debian packages...
I have used them to install the Opendistro Elasticsearch and Kibana flavors, but I am failing to make my them communicate (the operating system is Ubuntu 18.04).
In the elasticsearch security plugin config I had at first setup the basic_internal_auth_domain and saml_auth_domain authentication then reverted to simply using the basic_internal_auth_domain but with no better luck..
When starting the Kibana server, I end up with error messages like this one in the elasticsearch logs:
 Authentication finally failed for kibana from <IP_ADDRESS>:39354

Which makes me think that the Kibana server is trying to connect as user kibana instead of kibanaserver as stated in the /etc/kibana/kibana.yml.
If that's the case, the failure makes sense as only kibanauser is set up in internal_users.yml.
I have confirmed that the configuration file is loaded as stating a faulty elasticsearch server there triggers errors.
I had added the Kibana configuration for SAML as I was trying to setup that authentication as it is explained in the documentation.
Removing them didn't seem to have any effect.
Making curl requests as kibanaserver to list the installed plugins succeeds...
Making curl requests with a wrong password prevents from receiving the answer and pops a message indicating that the authentication did fail for kibanaserver
I am out of easy tricks...
Where can I set the user that shall be used or which password should be associated a kibana user to be created ?
Thanks and kind regards.

Hi @chaami,
Can you clarify if you were never able to make them communicate or did it stop working once you set up basic_internal_auth_domain?
Here're some default config for kibana.yml that should work:
opendistro_security.auth.type: "basicauth"
opendistro_security.basicauth.enabled: false
opendistro_security.multitenancy.enabled: true
opendistro_security.multitenancy.show_roles: true
opendistro_security.multitenancy.enable_filter: true
opendistro_security.multitenancy.tenants.enable_global: true
opendistro_security.multitenancy.tenants.enable_private: true

elasticsearch.hosts: ["https://localhost:9200"]
elasticsearch.username: "kibanaserver"
elasticsearch.password: "kibanaserver"
elasticsearch.ssl.verificationMode: none

If using the above didn't resolve your problem, can you please share your kibana.yml and elasticsearch.yml?
To answer your questions, internal_users.yml is where you set up users and their passwords.

Hi @allenyin96 ,
Thank you for posting !
I had failed to make Kibana and Elasticsearch actually communicate.
After long and tedious debugging sessions I managed to find the explanation...
A kibana.keystore was hanging in the Kibana directory from a previous installation that hadn't been cleaned-up properly...
The elasticssearch.username and elasticsearch.password were just being silently discarded by Kibana when trying to contact the Elasticsearch cluster during the healthcheck.
I had managed to reverse engineer the user and password in use and was going to report progress... and thanks to your post I went a little further and finally understood the origin of all this mess !
Jeez... this has been really painful !
Thanks again and sorry for the noise.
Kind regards.


external downloaders with youtube dl gui

Is it possible to properly configure an external downloader, such as aria2c with y-dl-gui? The same cl argument --external-downloader aria2c  is functioning normally with the cl version. For instance, using the following arg in gui version:  aria2c --external-downloader     "download" is "completed" with status finished in main window. In this case, nothing is downloading. The same thing happens with following args:
--external-downloader aria2c
youtube-dl --external-downloader aria2c
youtube-dl-gui --external-downloader aria2c

Have you tried adding --external-downloader aria2c to the commands tab in the options window of youtube-dl-gui?

I just tried adding --external-downloader aria2c to the command tab of youtube-dl-gui and it worked fine (aside from throw a WARNING: Requested formats are incompatible for merge and will be merged into mkv.)


Sot 31: Write 3 chapters of Why and how zk snark works

[ ] Did you check your grammar / reader proof your document using ChatGPT?
[ ] Don't forget to squash commits into meaningful chunks before merging
[ ] After merging this, please update your task status!

Check file_naming convention

Missing attributes for the article


Axon Server event scheduler is never started

Basic information

Axon Framework version: 4.6.0+
JDK version:  11
Complete executable reproducer if available (e.g. GitHub Repo): https://github.com/raphael-jungers/axon-eventscheduler-sample

Steps to reproduce

Use the Axon Server event scheduler with version 4.6.0+
Expected behaviour

The Axon Server Event Scheduler should be automatically started.
Actual behaviour

The Axon Server Event Scheduler is not started, and calls to the schedule() method cause this Exception :
org.axonframework.commandhandling.CommandExecutionException: Cannot dispatch new events as this scheduler is being shutdown 	at org.axonframework.axonserver.connector.ErrorCode.lambda$static$11(ErrorCode.java:91) ~[axon-server-connector-4.6.1.jar:4.6.1] 	at org.axonframework.axonserver.connector.ErrorCode$$Lambda$1156.0000000000000000.buildException(Unknown Source) ~[na:na] 	at org.axonframework.axonserver.connector.ErrorCode.convert(ErrorCode.java:201) ~[axon-server-connector-4.6.1.jar:4.6.1] 	at org.axonframework.axonserver.connector.command.CommandSerializer.deserialize(CommandSerializer.java:164) ~[axon-server-connector-4.6.1.jar:4.6.1] 	at org.axonframework.axonserver.connector.command.AxonServerCommandBus.lambda$doDispatch$2(AxonServerCommandBus.java:181) ~[axon-server-connector-4.6.1.jar:4.6.1] 	at org.axonframework.axonserver.connector.command.AxonServerCommandBus$$Lambda$981.00000000C8919C80.apply(Unknown Source) ~[na:na] 	at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:642) ~[na:na] 	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506) ~[na:na] 	at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2073) ~[na:na] 	at io.axoniq.axonserver.connector.command.impl.CommandChannelImpl$CommandResponseHandler.onNext(CommandChannelImpl.java:372) ~[axonserver-connector-java-4.6.2.jar:4.6.2] 	at io.axoniq.axonserver.connector.command.impl.CommandChannelImpl$CommandResponseHandler.onNext(CommandChannelImpl.java:359) ~[axonserver-connector-java-4.6.2.jar:4.6.2] 	at io.grpc.stub.ClientCalls$StreamObserverToCallListenerAdapter.onMessage(ClientCalls.java:474) ~[grpc-stub-1.49.0.jar:1.49.0] 	at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1MessagesAvailable.runInternal(ClientCallImpl.java:662) ~[grpc-core-1.49.0.jar:1.49.0] 	at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1MessagesAvailable.runInContext(ClientCallImpl.java:647) ~[grpc-core-1.49.0.jar:1.49.0] 	at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37) ~[grpc-core-1.49.0.jar:1.49.0] 	at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:133) ~[grpc-core-1.49.0.jar:1.49.0] 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na] 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na] 	at java.base/java.lang.Thread.run(Thread.java:831) ~[na:na] Caused by: org.axonframework.axonserver.connector.command.AxonServerRemoteCommandHandlingException: An exception was thrown by the remote message handling component: Cannot dispatch new events as this scheduler is being shutdown 	at org.axonframework.axonserver.connector.ErrorCode.lambda$static$11(ErrorCode.java:89) ~[axon-server-connector-4.6.1.jar:4.6.1] 	... 18 common frames omitted
Workaround
At the moment, we have to call the start() method ourselves :
`
@Configuration
public class EventSchedulerConfig {
@Bean
public AxonServerEventScheduler axonServerEventScheduler(AxonServerConnectionManager axonServerConnectionManager, Serializer serializer) {

    AxonServerEventScheduler eventScheduler = AxonServerEventScheduler.builder()
            .connectionManager(axonServerConnectionManager)
            .eventSerializer(serializer)
            .build();

    eventScheduler.start();

    return eventScheduler;
}

}
`

Thanks for filing this issue with us, @raphael-jungers.
This is most definitely another concern we introduced with the adjustments around Spring wiring.
In this case, specifically around our registration of lifecycle handlers.
We have some ideas in mind to fix this; these should be rather straightforward.
You can expect a pull request to resolve this relatively soon.

Closing this issue as it has been resolved in pull request #2474.


Any reason why json_encode() is not supported?

Syntactic sugar I know, but there are many instances where objects are put through jason_encode() to serialise them. Once example is Laravel or Lumen, where you can return an object and it will be encoded as a JSON payload, for example:
return response()->json($problem);

It would be great if that were simply handled without converting to JSON first. The above example returns the payload as [] instead of an RFC7807 object.
These work for Laravel at present as the return from a controller:
return response($problem->asJson(), $statusCode, ['Content-Type' => 'application/json']);

return response()->json($problem->asArray(), $statusCode);

I will look at the PSR-7 generation too, as that makes sense for other frameworks and simple apps.
Is this something that you prefer not to support, or just something nobody has got around to?

I am not entirely clear on what you're describing.  $problem->asJson() gives you a JSON string, which can then be put into any response body you want.  It uses json_encode() internally already.

$problem->asJson() returns a JSON string {"title":"...etc"}
json_encode($problem) returns an empty JSON string {}
It is handy in some frameworks to pass the object out of the controller for the framework to encode.
Like I say, it's just syntactic sugar, but mildly useful in some circumstances.

That's because ApiProblem has no public properties, so json_encode() has nothing to encode.
I think what you're asking for is to implement JsonSerializable on the object, which would return $this->compile(), which is an array, which json_encode() would then be able to work with.
I'd accept a PR that does that.

Yes, exactly. I'll be happy to submit a PR. It's a busy week, but I'll aim to squeeze in. Thanks :-)


Twitter account

Typo in the twitter bio: "We're here to give you information~s~ about and help you with ..."
https://avatars3.githubusercontent.com/u/30417857?s=800&v=4 is a higher quality image

good catch, updated


Run flutter application into iOS virtual device on virtualized OSX

Hi I have some performance problems running my application inside iOS simulator installed inside a VirtualBox OSx machine. The simulator run and the application is deployed without any problem. But there is lag when the draw has to be redrawed. For example when I click on a button which open a modal sheet, the image is stucked, I can unlock it simply dragging the IOs bottom bar of a few pixel. It's difficult test the application since every time I have to move that bar a few pixel in order to update the phone image. Any suggestion?

Visualized OSX might not have the hardware GPU acceleration.  Sounds not a flutter issue.

But the strange thing is that this problem occurs only with the flutter app, not with the native app pre installed into ios emulator.
See these two images which show you the problem:
Example with an original app
https://imgur.com/e5UN6fL
Example with a flutter app
https://imgur.com/qeN7ImX

This is a duplicate of https://github.com/flutter/flutter/issues/36839. The proposed fix for that is a switch the Metal on iOS simulators. But it is unclear how that will work on virtualized environments.


New/planned tools

Container tools #5229

Security tools #5230

Dev tools #5231

Ops tools #5232

Helper tools #5233

Developer tools for Kubernetes #2684

Flux #4281

Service meshes #3477

WebAssembly #3476

AWS IAM #3448

Prometheus #3447

Grafana #3446

pass #3059

Migrated to https://github.com/uniget-org/tools/issues/57


Load/Unload Commands

Once we are done with the core, I would like us to have this feature. We will need to have a feature where we can load and unload specific commands. This way, we have more control of the bot (specifically the Supreme Gurkan and his trusted cucumbers). The command will look like .ext load <command/Cog> or .ext unload <command/Cog>. I think @Xithrius have made this kind of feature. However, I do not want him to take responsibility for this feature, I want others to take part and use this chance to learn new things. If you have any suggestions, proposals, rebuttals, and comments, feel free to do it here.

I think this is a great idea and will prove to be useful.

I think this is a great idea, and will most likely prove to be useful.

.ext load <command/Cog> or .ext unload <command/Cog>

@ReneganRonin I'm not sure what you mean by unloading a command, but I can for sure unload/load/reload a Cog or extension.

Maybe we could implement something to activate or deactivate individual commands later on, but for now the cogs will do. That's the most important part.

I'm not sure if enabling/disabling a command on the fly is actually possible without hardcoding it.

Maybe we could add some dark magic in the command processing that checks if some "is_active" item is true in a dict. That's the only way I can think of really.

Maybe we could add some dark magic in the command processing that checks if some "is_active" item is true in a dict. That's the only way I can think of really.

Hmmm, yeah! we could put that case, like if it is not active, we could display some message and if it active it would run normally

Xith was able to figure out a way with the .update method for commands.

That would be quite simple to manage in the error handler. Also, @Xithrius has managed to figure out how a disable command could work. It would be possible.

Edit 2: Yes, it is possible with that feature. You need a object of command type, and then you can use the .update method. To enable/disable the command the method can be called by command_to_change.update(enabled=False)

@Shivansh-007 here's what I figured out.

Edit 2: Yes, it is possible with that feature. You need a object of command type, and then you can use the .update method. To enable/disable the command the method can be called by command_to_change.update(enabled=False)

@Shivansh-007 here's what I figured out.

Ah ok, didn't see that 😅

It's anyone interested in giving this a shot? It's very convenient — especially during development.

If no one takes it, I will.

@Xithrius alright. dunno why no one wants to take it. i am mostly busy so i cant do that as well

Hey @Xithrius, do we have any progress on this?
If you want something to base this on, the PyDis ext commands are pretty good. I personally migrated it from Python to
Sir Lancelot (SeasonalBot) a while back, and it shouldn't be a nightmare to migrate to this bot, if you want to use it as a base.

Hey @Xithrius, do we have any progress on this?
If you want something to base this on, the PyDis ext commands are pretty good. I personally migrated it from Python to
Sir Lancelot (SeasonalBot) a while back, and it shouldn't be a nightmare to migrate to this bot, if you want to use it as a base.

@gustavwilliam I'll probably use a variant of the one that I have in my own bot. The command can be seen here.
Will most likely change it once error logging and any other PRs are merged.

@gustavwilliam I'll probably use a variant of the one that I have in my own bot. The command can be seen here.
Will most likely change it once error logging and any other PRs are merged.

Ah, perfect. For the record, I've put this as a high priority issue, since it's really important during development of basically all features.

Ah, perfect. For the record, I've put this as a high priority issue, since it's really important during development of basically all features.

umm do u mean commands or cog?

umm do u mean commands or cog?

Cogs

Cogs

Is anyone interested in working on this issue? Xithrius doesn’t have time for it at the time being.

Is anyone interested in working on this issue? Xithrius doesn’t have time for it at the time being.

i guess i will start working on this over the weekend. i will review the docs.

i guess i will start working on this over the weekend. i will review the docs.

I don't think anyone is ever going to implement this.

I was a bit bored.


Theme variety collection

when we are started using adonisUI, we have to Install two assembly, one of them is AdonisUI.ClassicTheme. that bring me a lot of
I think you need to explain about that stuff, such as

will there will be any theme based on adonis?
If it's true maybe there will be more contributors, willing to collaborate (Metro, Fluent, etc).

how much dependent the adonis UI with the theme?
this will measure the breaking changes if there's other theme.

how to create new one or manipulating the existing?
if you provide guide for that, other will understand more and will use more.

how about the style naming conventions??
just like mahapps, will you provide naming convention like AdonisUI.Styles.Button or AdonisUI.Brushes.Accent

thank you for your great library

Good questions. Let me try to answer them:

will there will be any theme based on adonis?
If it's true maybe there will be more contributors, willing to collaborate (Metro, Fluent, etc).

The idea with splitting the library into two assemblies was to separate the core definition (AdonisUI) from the actual implementation (AdonisUI.ClassicTheme). This way someone could create a different theme with totally different looking controls for the same behavior. In theory, a theme could be replaced by a different theme by only changing the one import line in the App.xaml and the whole application would still work like before, just look totally different.
Personally, I am not planning on creating another theme though. At least not currently. Creating another theme would mean to recreate almost all styles which is a lot of work. And once another theme is introduced, every change to the base library would require changes in both themes, of course.
But yeah, you are right, at least in theory someone could create a metro / fluent theme or something like that for Adonis UI.

how much dependent the adonis UI with the theme?
this will measure the breaking changes if there's other theme.

AdonisUI.ClassicTheme is dependent on AdonisUI. AdonisUI contains the whole public API like names of colors, brushes, styles, templates, converters, dimensions, etc. This way an application depends only on AdonisUI and never on the concrete theme.
An application could use only AdonisUI without any theme as well. But then it misses all styles and templates and can use only some core features that are independent of the theme, like converters, colors, some attached properties that work without styles and AdonisWindow.

how to create new one or manipulating the existing?
if you provide guide for that, other will understand more and will use more.

Creating a new theme could be done from scratch or by duplicating AdonisUI.ClassicTheme and using it as a base. All styles could be changed to look like desired. It should be tested whether all the custom functionality of Adonis UI works like expected (layers, watermarks, ripples, etc).
I can try to create a guide for that in the future. Although this is not completely thought out by myself. As I tried to convey, this architecture is based on thoughts I had at the beginning of this project. I might have missed things that would raise issues if someone really tried to create another theme. So it might require some cooperation in order to successfully do that. And let me say this again: It would mean a lot of work (depending on how the theme should look exactly, of course)! For my limited time at afternoons and weekends it would be multiple months - and slowing down future development as well. Just look at the source code of AdonisUI.ClassicTheme and imagine to reimplement everything. You could copy and paste some stuff of course, but still.
Maybe even this repository would not be the best place for another theme because the readme would need to show off both themes without being confusing to newcomers. Splitting the repo might be a better idea then.

how about the style naming conventions??
just like mahapps, will you provide naming convention like AdonisUI.Styles.Button or AdonisUI.Brushes.Accent

Could you please clarify what you mean here? Adonis UI already has resources like AdonisUI.Brushes.AccentBrush or AdonisUI.Styles.AccentButton. Is this what you mean?

Thank you for your great answer,

Could you please clarify what you mean here? Adonis UI already has resources like AdonisUI.Brushes.AccentBrush or AdonisUI.Styles.AccentButton. Is this what you mean?

oh right, I missed that point, what I intended to ask is the resource collection, like this

I like the idea of a list showing all available colors in the demo app, so I started working on this.

I am still a bit confused regarding your last question thought. At first, you asked for naming conventions which you did not mention later again. I hope this new view in the demo app is what you requested.

Great, that's what I meant
about the naming, I thought it wasn't there yet.

Closing this because

the color reference view has been added to the demo app successfully
info about creating new themes has been given
actually creating a new theme is not in the scope of this issue and currently not planned as well


Only read possible

Hello.
is Tesla custom integration available for highland model 3? Is possible to have problems due this new model?
I´ve installed V3.19.3 and i would say only have access to read the car, not possible to "write", Any script requesting a change, i´m receiving an error, but for example for "wake_up" example i´m receiving an answer by car, also i can see all the values from Car, charge, status, etc
Example, script:

service: tesla_custom.api
data:
command: CHANGE_CHARGE_LIMIT
parameters:
percent: "56"
path_vars:
vehicle_id: "***************"
wake_if_asleep: true

I´m receiving this error after some seconds "No se pudo llamar al servicio tesla_custom.api. Unknown error" --> Couldn´t call the service........
Can i get some help? I want to do some automations changing the "charge Options"
Many thanls in advance

You are possibly affected by https://github.com/alandtse/tesla/issues/743 as new cars won't use the unofficial API we currently use.

Cool, in which case I'll close this as a duplicate for now but feel free to re-open it if it turns out not to be


Initialize docs before creating tern server instance

This PR initialize docs before creating tern server instance, because in some case, tern server creation call getFile which use docs.
I have this case by using requirejs tern plugin + custom plugin which defines requirejs modules :
{
    "!name": "delite",
    "!define": {
      "!requirejs": {
        "delite/register": {
          "!type": "fn(tag: string, superclasses: [], props: ?) -> fn()",
      }
    }
  }

Good point. Merged as 61e27f0

Thanks!


[TASK] workflow update to handle multiple runs

Description

Workflow can handle multiple runs within a drilldown.
This update extends the WorkflowPort to keep track of multiple runs
utility functions to change which run is visible, and how to change the state of the operator.

The util function may be better served under "services/workflow.ts", that is where the majority of workflow related functions live. This util.ts file is very much simulate/calibrate specific and should get rolled up into something else in my opinin.

The util function may be better served under "services/workflow.ts", that is where the majority of workflow related functions live. This util.ts file is very much simulate/calibrate specific and should get rolled up into something else in my opinin.

@mwdchang the function has been moved per your recommendation, which makes sense.


docs: update teaser for core packages

Instead of --save use --save-dev to align with other examples in the README.md.
If this was intended then just ignore this.
Motivation and Context
Alignment with other things only. Not an issue.

Thanks! I just realised the docs were confusing, let's remove the install command. The idea was that @commitlint/core would only be installed in projects wrapping commitlint functionality, so --save made sense.


📎 noRestrictedGlobals: add an option for a custom message

Description
From #4721.
Currently, the noRestrictedGlobals rule in Biome does not provide the ability to include a custom message explaining why a global variable is restricted. Users should be able to optionally specify a custom message for violations of this rule. Something like:
// biome.jsonc
{
    "options": {
        "deniedGlobals": [
            {
                "ident": "$",
                "message": "jQuery is not allowed. Use native DOM manipulation instead."
            },
            {
                "ident": "someGlobal",
                "message": "someGlobal shouldn't be used because..."
            }
        ]
    }
}

Once we decide on the config ergonomics, this could easily earn a good first issue label.

I have two other suggestions:

align the option to this option https://biomejs.dev/linter/rules/no-restricted-imports/#_top (which is unfortunate because the current opinion is an array...)
use the proposed suggestion, but change ident to variable/variableName/globalName. ident is a non-beginner term

use the proposed suggestion, but change ident to variable/variableName/globalName. ident is a non-beginner term

I could opt for globalName or just name because this also covers type names.
Anyway, if we align top the other we don't even need a name because it is already called deniedGlobals :)
// biome.jsonc
{
    "options": {
        "deniedGlobals": {
            "$": "jQuery is not allowed. Use native DOM manipulation instead.",
            "someGlobal": "someGlobal shouldn't be used because..."
        }
    }
}

Question: should we deprecate arrays for deniedGlobals?


[EventHub] Deploy test resources failing in nightly runs

EventHub nightly test runs are failing with:

VERBOSE: Running registered exit actions
VERBOSE: Logging out of service principal ''
VERBOSE: Performing the operation "New-TestResources.ps1" on target "".
Write-Error: /mnt/vss/_work/1/s/eng/common/TestResources/New-TestResources.ps1:732
Line |
732 |          $deployment = Retry {
|                        ~~~~~~~
| Exception calling "Invoke" with "0" argument(s): "The running
| command stopped because the preference variable
| "ErrorActionPreference" or common parameter is set to Stop:
| 20:43:24 - The deployment 't59743865b5e14c63' failed with
| error(s). Showing 1 out of 1 error(s). Status Message:
| Namespace status can only be changed to Active Or Disabled.
| (Code:BadRequest)  CorrelationId:
| a1efffa0-24c0-46a4-a7c0-4c6cb2ccd88f"
##[error]PowerShell exited with code '1'.

For more details check here:

https://dev.azure.com/azure-sdk/internal/_build/results?buildId=1374880&view=results
https://dev.azure.com/azure-sdk/internal/_build/results?buildId=1371624&view=results

@jsquire for notification.

There is a service deployment issue in the Canary environment.   This is not under our control; we can only wait for a new deployment from the service team.  Closing this out.


Vietnam transcript only records: gone, and maybe never were there

http://openvault.wgbh.org/collections/vietnam-the-vietnam-collection lists a number of transcript only records. These are all 404 right now, on the old site.

Astor Rogers (transcript only)
Daniel Ellsberg (transcript only)
David Ross (transcript only)
Don Luce (transcript only)
Douglas Hostetter (transcript only)
James N. Rowe (transcript only)
John T. McAllister (transcript only)
Mark Smith (transcript only) [2]
Orrin DeForest (transcript only)
Ted Danielsen (transcript only)
Tran Ngoc Chau (transcript only)
William D. Ehrhart (transcript only) [2]

Should we have anything for these on the new site?
Do we even know where they are?
Would we have any obligation to funders to make these available going forward?

@caseyedavis12 or @Muraszko ?

Looking into this.

Weird, I'm able to find the records, so I will create new xml and ingest it.
@mccalluc It looks like these files have a thumbnail and a transcript, but no proxy.  Do you think it will throw the display of the transcript off because it has nothing to sync to?
Wait and see until ingest?

@caseyedavis12 @mccalluc
Just did one:
http://ov-qa1.wgbh-mla-test.org/catalog/V_24DE6CA361564377B38500FF1CFF8A8C
Looks ok to me using the default video, no thumb image.

@muraszko: looks good to me. Thanks!

All uploaded and verified.


WIP: Partial placeholders

Starting on . placeholder for partial function application.

Very cool! Looking at the last example, I wonder if f ., . should in fact mean (a, b) => f(a, b) instead of (a) => f(a, a). I could be wrong, but I feel like the multiple arguments is a more common/useful interpretation of a partial. Originally I had thought we could use .0 and .1 (by analogy to $0 and $1) but I realize those already have a meaning (number literal).


Extend operator API and introduce the ExtraMounts structure

This change aligns the operator with the lib-common work that provides the ability to mount extraVolumes to the operator. The extravolumes can be anything (Secrets, ConfigMaps, etc), and they can be used by the playbook and propagated to the external compute nodes.
Depends-On: https://github.com/openstack-k8s-operators/lib-common/pull/88
Signed-off-by: Francesco Pantano<EMAIL_ADDRESS>

Moving this change as "Draft" to make sure it lands after https://github.com/openstack-k8s-operators/lib-common/pull/88 is merged.

@jlarriba the patch is now rebased and the lib-common/modules/storage dependencies are updated!


Change: The basic transition to newer version of DataTables (1.10+)

For backward compatibility (for DataTables 1.9- API) we should provide:

[ ] More complex method to map request arguments name in according to specified DT version
[ ] Method to auto determine using version based on received request arguments
We may or may not code them at all - it's just a mantainer decision cause the main difference of the versions is just renamed variables.

Close due to new branch 0.2 and PR #26


[native_assets_cli] iOS/MacOS privacy manifest

When using something like the camera on iOS/MacOS, the dylib needs to be bundled with a privacy manifest about why the permission is needed.
We need some way to communicate a privacy manifest from build.dart to Flutter.
This could possibly be a new asset type.
We need to check if we need a privacy manifest per dylib or just per Dart package.

https://github.com/flutter/flutter/issues/140966

Discussing with @mosuem we have multiple options that we can pursue with adding new asset types that are connected to existing asset types:
API options
1. NativeCodeAsset.privacyManifest Uri?` field
Introduce a NativeCodeAsset.privacyManifest Uri? field
output.addAssets([
  NativeCodeAsset(
    package: 'native_add',
    name: 'native_add',
    linkMode: DynamicLoadingBundled(),
    os: OS.current,
    architecture: Architecture.current,
    file: builtDylibUri,
    privacyManifestFile:
      (OS.current == OS.macOS || OS.current == OS.iOS) ?
      config.packageRoot.resolve('assets/PrivacyInfo.xcprivacy') :
      null,
  ),
]);

Pro: concise
Con: doesn't communicate that privacy manifests are not supported on various embedders. (We have BuildConfig.supportedAssetTypes, but it's not used this way.)
Con: pollutes the NativeCodeAsset API for other OSes that don't have privacy manifests.

2. PrivacyManifestAsset with dylib field
Introduce a PrivacyManifestAsset which implements Asset and has a field dylib which points to a NativeCodeAsset.
(Note the class should not implement/extend DataAsset because the bytes should not be bundled in Dart/Flutter apps and accessible with data assets at runtime.)
output.addAssets([
  NativeCodeAsset(
    package: 'native_add',
    name: 'native_add',
    linkMode: DynamicLoadingBundled(),
    os: OS.current,
    architecture: Architecture.current,
    file: builtDylibUri,
  ),
  if (OS.current == OS.macOS || OS.current == OS.iOS)
    PrivacyManifestAsset(
      // Asset IDs are mandatory, and required to be unique at the moment.
      package: 'native_add',
      name: 'native_add/PrivacyInfo.xcprivacy',
      // Together with `package` defines the asset ID that this privacy manifest belongs to.
      nativeCodeAssetName: 'native_add',
      file: config.packageRoot.resolve('assets/PrivacyInfo.xcprivacy'),
    ),
]);

pro: completely separate from NativeCodeAsset, no API pollution.
pro: whether it's supported can be expressed with BuildConfig.supportedAssetTypes.
con: Embedders need to first scan all assets for bundling for PrivacyManifest and NativeCodeAssets to connect the ones that belong together.
con: verbose in the API because the PrivacyManifest needs to repeat the NativeCodeAsset asset name/id.

3. Asset.metadata
Introduce Asset.metadata List<Asset> field. (Name to be discussed)
This avoids the need for a PrivacyManifestAsset.dylib field as the PrivacyManifestAsset can be nested in the dylib
output.addAssets([
  NativeCodeAsset(
    package: 'native_add',
    name: 'native_add',
    linkMode: DynamicLoadingBundled(),
    os: OS.current,
    architecture: Architecture.current,
    file: builtDylibUri,
    metadata: [
      if (OS.current == OS.macOS || OS.current == OS.iOS)
        PrivacyManifestAsset(
          // Asset IDs are mandatory, and required to be unique at the moment.
          package: 'native_add',
          name: 'native_add/PrivacyInfo.xcprivacy',
          file: config.packageRoot.resolve('assets/native_add/PrivacyInfo.xcprivacy'),
        ),
    ],
  ),
]);

Pro: connection between dylib and privacy manifest is more obvious.
Pro: can still be controlled by BuildConfig.supportedAssetTypes.

Con: more complexity in the API and concepts.

@mosuem I think I'm leaning towards option 2 now as well.
Class location
We could opt to not specify this asset type in package:hook/package:native_assets_cli. It would enable us to battle-test the extensibility of the protocol.
However, I would also be weary of introducing a new package for every new asset type. It would create churn specifying all the imports for users. (We can't be putting it in package:hook_flutter because once we start supporting it in Dart or another embedder it would have to be moved, and moving classes between packages is a real pain, I tried it once.)

cc @HosseinYousefi as well for discussion on how to deal with "assets-that-belong-to-other-assets" or "assets-that-augment-other-assets".

I would try to keep things simple, and have a new asset type for the PrivacyManifestAsset defined in package:privacy_manifest_asset, which also exposes helper methods for creating the asset. Then all that has to be done is implement support for PrivacyManifestAsset in Flutter.
class PrivacyManifestAsset implements Asset{
  final Sting nativeCodeAssetId;
  ...
}

Asset buildPrivacyManifest(NativeCodeAsset library, PrivacyManifestOptions options) { ... }

It would create churn specifying all the imports for users.

What do you mean?

Note from discussion with @mkustermann

Privacy manifests belong to a NativeCodeAssets. So that leans towards option 1. This not only important for embedders consuming assets, but also for if you're writing a link hook helper package that links native code static libs together.

Deprioritizing because the list of required reason APIs is quite small.


Upload improvement

After uploading binaries from drishti (via hunter extensions) the drishti <-> drishti-upload roles can be reversed.  drishti will resume control over the config.cmake file, drishti-upload will become optional (for one touch cache updates), and it will maintain drishti as a submodule.

Fixed: https://github.com/ruslo/hunter/issues/1097


Added ZulipStatusBar to AppNavigator and configured Reactotron for dev configuration.

In this PR two things have been considered:-

Integrage Reactotron with Dev configuration
2)Moving ZulipStatusBar to AppNavigator

Motivation:-
For 1)- Current integration of Reactotron is not tied to dev evironment. I have configured it in a way that it is only active for dev evironment and has no affect in production. I guess that one is the correct one.
For 2)- Right Now MainScreenWithTabs.js is placing ZulipStatusBar over MainTabs component. But actually it should be there in AppNavigator since a Status bar is a core component of a screen and needs to render regardless of the navigator currently active or on which screen we are. Even in React Native docs it's suggested to render StatusBar outside of navigator, if we are using a custom StatusBar(like we are doing here). https://facebook.github.io/react-native/docs/statusbar.html
Implementation:
For 1)- Encapsulated related reactotron functionality within __DEV__ blocks.
For 2)- Moved ZulipStatusBar rendering to AppNavigator by importing it in AppNavigator and placing ZulipStatusBar above navigator.

Can you give some details of this PR? What issues is this closing? Or the enhancements made. Before and after screenshots would be helpful if this is a UI based change.

Thanks @HarshulSharma000 !

I'm going to look at these commits one at a time, since they're doing pretty much unrelated things. First, I'll look at the ZulipStatusBar / navigation change (the second commit.)

If you can send the Reactotron change as a separate PR, that'd help organize the discussion. Like I said in chat, it's not a real problem including the Reactotron change in this navigation PR, because we can easily merge one commit without the other; but because it looks like a little bit of an involved change that may require some discussion, it'll just be easier for all of us to keep the discussions straight if it's a separate PR.

Like @pulkonet said above. :) We've been discussing a lot of this in chat, so I have some background on it; but it's important to put that explanation in the commit message too, for everyone reading both now and in the future.

Specifically, one question I'm not sure of that would be important to answer in the commit message: does this change have any visible effect in the UI? Or is it a pure refactor? I think ideally this change would be a pure refactor; if so it's very helpful to say so in the commit message, so the reader knows they're trying to confirm that rather than the opposite. Or if it does have an effect on the UI, definitely describe that in the commit message (and include before/after screenshots in the PR) so we can discuss.

One problem, I do follow this habbit of initializing stuff with null so as to prevent any by mistaken references. But flow seems to have a problem with that checkout CI failure.

@HarshulSharma000 once you split this in different PRs, do not forget to provide motivation for your changes.
For example, the basis for the PR - why did you device to move the StatusBar to AppNavigator?

But flow seems to have a problem with that checkout CI failure.

You should definitely run Flow locally to make sure you have no errors, and to make it easy for you to fix them.

If you're having any trouble, please ask in #mobile -- we'll debug and then whatever the issue is, we can make the instructions better for the next person.

Ah, thanks @jainkuniya for those screenshots :), and the detailed review in general.
So this change as is does have an effect on the UI, and not one we want. You'll (@HarshulSharma000) need to find a way for the status bar's effect to only happen on the screens where we actually want it.

@borisyankov @gnprice Do I need to split it into two different PR's or current one will be enough?

@HarshulSharma000 if you have to ask if you should split, usually the answer is 'Yes'.
Do not only thing as a single PR with several commits, but as separate PRs too.

Right Now MainScreenWithTabs.js is placing ZulipStatusBar over MainTabs component. But actually it should be there in AppNavigator since a Status bar is a core component of a screen and needs to render regardless of the navigator currently active or on which screen we are. Even in React Native docs it's suggested to render StatusBar outside of navigator, if we are using a custom StatusBar(like we are doing here). https://facebook.github.io/react-native/docs/statusbar.html

This is helpful explanation and a helpful link -- thanks!
If you can successfully move the ZulipStatusBar out of MainScreenWithTabs, that will be a very useful change. To do that, it's important to do it cleanly without breaking things in the app.

Why flex: 1? That's new -- what's the purpose of it? If there isn't a clear reason we need this extra complication, best to leave it out.
Note that ZulipStatusBar is not just a StatusBar -- it has a View with a definite height and backgroundColor in its style. That might be related to why your change broke some screens.
Note that ZulipStatusBar appears in several other places. Take a look at git grep ZulipStatusBar. Probably you can replace some of those with the new one at the top in AppWithNavigationState.

Also

Even in React Native docs it's suggested to render StatusBar outside of navigator, if we are using a custom StatusBar(like we are doing here). https://facebook.github.io/react-native/docs/statusbar.html

Take another look at that example -- it shows a StatusBar both outside the navigator and inside. The one inside overrides the one outside. For the LightboxScreen case where we're passing some different props to the ZulipStatusBar, maybe that will be helpful.

That is an incorrect understanding of how ZulipStatusBar and StatusBar works.
It is used to change the statusbar's settings but is not required for rendering or the functioning of a status bar.
They say explicitly `It is possible to have multiple StatusBar components mounted at the same time.'
They also say One use case is to specify status bar styles per route using Navigator. - they talk about a completely different Navigator component and also say that it is one option not that you have to use one per route.
@HarshulSharma000 I would encourage you to think more of terms of what do we need to do and how to do it, than a refactor that may or may not have any purpose. I suspect this one does not have any.

@borisyankov The purpose of moving the ZulipStatusBar out of MainScreenWithTabs isn't made clear in this PR yet, but it's been discussed in chat: it's the main step required to eliminate the intermediate non-navigator component MainScreenWithTabs that sits between two navigators, i.e. the root AppNavigator and the MainTabs.
As discussed in chat, the React Navigation docs are quite clear that that is a pattern to avoid. Given that our current navigation has been fairly buggy, I'd like us to move toward patterns that the docs recommend instead of ones they specifically say not to do. :)

On my reading the documentation does not say any such thing.
I am looking here:
https://reactnavigation.org/docs/status-bar.html#docsNav
They show two cases - you want to change the statusbar depending on a route inside a stack navigator and you want to change it depending on tabs.
We want to change only depending on stack route change! For that they say:

This is a simple task when using the StackNavigator or DrawerNavigator. You can simply render the StatusBar component, which is exposed by React Native, and set your config.

Indeed that is what we are doing.

I want to point out that we have one single bug:
Our handleBackButtonPress function calls navigateBack action sometimes on the Tab navigator.
Limiting our fix to this will resolve anything we need to resolve.
A refactor of how navigation works and where the statusbar is, are completely different separate tasks.
The first is reasonable but good to wait considering React Navigation devs are reworking it right now.
The second seems unnecessary and not helpful.

@borisyankov Thanks I revisited the StatusBar flow and suggested reads. Earlier in the nested navigators discussion I thought to handle StatusBar related configuration  into root navigator's file (AppWithNavigationState) for two reasons:-

As it will bring the control of Status bar at a single place. So based on the current screen an action can be fired to trigger change in status bar configuration which is rendered only at the AppNavigator level(at starting of app) to reduce confusion and possible conflicts.

I will also eliminate the need to Screens such as MainScreenWithTabs.js which exist to provide correctly configured ZulipStatusBar. By doing so we don't have to maintain another screen and can simply pass direct TabNavigator to parent Navigator. It also simplifies our code.

Yes the nested navigation isolation issue did start because our backpress event handling mechanism was not working appropriately. But another fact to consider is currently our navigation state is not maintaining the states of child navigators properly. I also agree that it's in best for all of us to wait for next release and then fix those issues. But the least we can do is unify all those different ZulipStatusBar component renders that are designed to work on the basis of stack navigator. I don't think its a bad design either.

On my reading the documentation does not say any such thing.
I am looking here:
https://reactnavigation.org/docs/status-bar.html#docsNav

@borisyankov Are you replying to my comment above? My concern has nothing to do with StatusBar specifically, and that page doesn't say anything about it. Again, I'm concerned with how we're misusing nested navigators:

... the intermediate non-navigator component MainScreenWithTabs that sits between two navigators, i.e. the root AppNavigator and the MainTabs.
As discussed in chat, the React Navigation docs are quite clear that that is a pattern to avoid.

We've gone over this two or three times in #mobile already. Here's the original discussion (I @-mentioned you); and later we found an even more direct explanation of this in a recently-added Common mistakes page of the docs. There is just one "common mistake" on that page, and what we're doing matches the example exactly.