Global Excludes for E1029

Issue #, if available: Addressing @PatMyron 's comments in #1788.
Description of changes: Added a GlobalPropertyTypes field in the specs file, allowing commonly-occuring properties such as UserData and PolicyDocument to be matched globally, rather than on a per-resource type basis.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

@Tro95 does this replace #1795 ?

@Tro95 does this replace #1795 ?

Yes, it does now. The GlobalPropetyTypes succeeds all the UserData additions you added, along with the ones that were originally there, and I've since merged in the fixes you did to the specs file and added the test you did.

@kddejong had an idea I like that I think we should consider:
"instead of looking for ${anything}, we look for things we know need Sub, like a resource name or parameter name"

I was getting kind of close to this code over the weekend.  I started by looking into some better logic around Ref/GetAtt.  We already have functions that build the valid REFs and GetAtts (GetAtts have wild cards because of custom or stack resources).  I do think this would allow us to remove most of the exceptions we have today (we still may need one for TemplateBody?).  We would lose a Ref or GetAtt typo but I don't think we should worry about that.  Basically we would be looking for a double error (missing Sub and a resource Ref/GetAtt typo).

I've updated the specs file to address some of your comments, but it seems there's a broader concern of regressions here, as well as this PR (+ #1788) not really improving anything.
I see a few options:

Once you're satisfied, we can merge this PR. I am hopeful that there are no regressions, but without 100% test coverage of the entire CloudFormation resource space we cannot guarantee this. I have added to the test coverage along the way, but there's still every chance of missing something.
I can move all the existing exclusion critera in the ResourceTypes block into the global blocks, which will be equivalent to the existing behaviour prior to #1788. This will mean there are no regressions, at the cost of a small chance for false-negatives. Should false-negatives be discovered, we can easily modify the offending exclusion criteria back to the ResourceTypes block to handle it appropriately. This is perhaps the best option if we wish to merge this PR.
We unmerge #1788 and explore a completely different way of doing this rule, such as being smarter about what a property's value should be. It sounds like both of you are leaning more towards this option, although I'm not clear on how the rule should work.

Do you think this is a fair assessment of the options, and do you see any additional options?
On a personal level, I'm happy to work towards Option 1 and 2, and if we can get alignment on a clear technical direction then also Option 3.
Let me know what your thoughts are.

I think that summarizes it well.  I am a little bit concerned about some regression but going through this I'm starting to feel comfortable that there shouldn't be any with these changes merged in. I think the other concern is will this make it easier to manage going forward.
That being said this rule has been one of our more noisy rules so I'm leaning more towards option 3. I don't think that should prevent us from merging this and moving forward until option 3 is ready. I'm open to feedback if option 3 would even make sense.

@tro95 apologize here.  Based on some the flux I reverted the original PR.  I have it backed up so we can resubmit it but we are working to get a release out the door and got a little nervous on this one.  Lets circle back later today or tomorrow.  #1802

@Tro95 apologize here. Based on some the flux I reverted the original PR. I have it backed up so we can resubmit it but we are working to get a release out the door and got a little nervous on this one. Lets circle back later today or tomorrow. #1802

That's fine, I fully understand and would do the same in your place. This PR contains all the commits in #1788 as well, so once I've fixed the conflicts we can just work on this. I wanted @PatMyron to review #1788 before merging, but only people with write permissions on the repository can request specific people for review, so in future I'll ask in the PR description if I think it needs a deeper review.

replaced by https://github.com/aws-cloudformation/cfn-lint/pull/2031


Update the schema for the add/update workflow to use field_array

Update the schema for the add/update workflow to use a field array, and allow a dynamic number of stages to be added.
Add - select stages:

Summary

List with the added stages:

Edit Workflow:

Codecov Report

Merging #43 into master will decrease coverage by 0.09%.
The diff coverage is 0%.

@@            Coverage Diff            @@
##           master      #43     +/-   ##
=========================================
- Coverage   42.95%   42.85%   -0.1%
=========================================
  Files          48       48
  Lines         433      434      +1
  Branches       46       46
=========================================
  Hits          186      186
- Misses        214      215      +1
  Partials       33       33

Impacted Files
Coverage Δ

src/forms/workflow-form.schema.js
100% <ø> (ø)
:arrow_up:

...rc/smart-components/workflow/add-workflow-modal.js
17.24% <0%> (-0.62%)
:arrow_down:

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 ad6c95b...0bb6d25. Read the comment docs.

@lgalis do we have any mocks for the dynamic fields? Current PF4 implementation has just placeholders.

@Hyperkid123  - the only mocks I have seen with dynamic fields are the ones for this modal:
https://redhat.invisionapp.com/share/T2PQRHIS534#/screens/339848080

@Hyperkid123 - the only mocks I have seen with dynamic fields are the ones for this modal:
https://redhat.invisionapp.com/share/T2PQRHIS534#/screens/339848080

Ok i will get touch with some PF guys and update the forms accordingly

@lgalis @Hyperkid123 Do we still need this PR or can it be closed?

@gmcculloug i think this can be closed it was already done in other PRs


v4 - Responsive images non-functional when flexbox enabled

Responsive images don't work when using the flexbox grid. They still work fine with the traditional grid.

@xeno Have an example handy?

Update: I couldn't reproduce this when testing. Must have been an error on my part.


Add files via upload

File added for Abuja School of Pension and Retirement Planning (APS)
This is a New Institution in Nigeria Capital Territory.

@str33tBishop First stage of verification passed, official domain is aps.edu.ng as far as I verified. This is just an informational note. Pull request is still in the review. I appreciate your patience while waiting for the final decision.

@str33tBishop The website of the school looks pretty outdated. Regrettably, this request has signs of fraud. I have to close it without merging.
Please apply for free educational license with an official document which proves that you are a student. You can do it using "OFFICIAL DOCUMENT" tab at https://www.jetbrains.com/shop/eform/students.
Thank you for your understanding!


Allow relaying for specified IP ranges.

It would be nice if we could configure the mynetworks setting in postfix.
This would allow us, for example, to allow relaying from docker containers (which mostly are on local, non-internet-routable) IP addresses.
http://www.postfix.org/postconf.5.html#mynetworks

Thanks, This make sense to me.
PR merged.


Team 1

Task 1 Prediction - Density
Mean Absolute Error: 0.056
R2: 0.938
Normalised Mean Absolute Error (Assessed): 0.037
Points: 22
Task 2 Prediction - Centrosymmetric
No results submitted for task 2
Task 3 Prediction - Mean Distances
No results submitted for task 3
Task 4 Prediction - Van der Waals Contacts
No results submitted for task 4
Bonus Task 1 Prediction - Packing Coefficient
No results submitted for bonus task 1
Bonus Task 2 Prediction - Cell Volume
No results submitted for bonus task 2
Bonus Task 3 Prediction - Space Group Symbol
No results submitted for bonus task 3
Total Points
22/130

Task 1 Prediction - Density
Mean Absolute Error: 0.056
R2: 0.938
Normalised Mean Absolute Error (Assessed): 0.037
Points: 22
Task 2 Prediction - Centrosymmetric
No results submitted for task 2
Task 3 Prediction - Mean Distances
Mean Absolute Error: 0.24
R2: 0.864
Normalised Mean Absolute Error (Assessed): 0.033
Points: 22
Task 4 Prediction - Van der Waals Contacts
No results submitted for task 4
Bonus Task 1 Prediction - Packing Coefficient
No results submitted for bonus task 1
Bonus Task 2 Prediction - Cell Volume
No results submitted for bonus task 2
Bonus Task 3 Prediction - Space Group Symbol
No results submitted for bonus task 3
Total Points
44/130

Task 1 Prediction - Density
Mean Absolute Error: 0.056
R2: 0.938
Normalised Mean Absolute Error (Assessed): 0.037
Points: 22
Task 2 Prediction - Centrosymmetric
Accuracy: 0.798
Macro F1-score (Assessed): 0.62
Weighted F1-score: 0.771
Points: 5
Task 3 Prediction - Mean Distances
Mean Absolute Error: 0.24
R2: 0.864
Normalised Mean Absolute Error (Assessed): 0.033
Points: 22
Task 4 Prediction - Van der Waals Contacts
No results submitted for task 4
Bonus Task 1 Prediction - Packing Coefficient
No results submitted for bonus task 1
Bonus Task 2 Prediction - Cell Volume
No results submitted for bonus task 2
Bonus Task 3 Prediction - Space Group Symbol
No results submitted for bonus task 3
Total Points
49/130

Task 1 Prediction - Density
Mean Absolute Error: 0.056
R2: 0.938
Normalised Mean Absolute Error (Assessed): 0.037
Points: 22
Task 2 Prediction - Centrosymmetric
Accuracy: 0.798
Macro F1-score (Assessed): 0.62
Weighted F1-score: 0.771
Points: 5
Task 3 Prediction - Mean Distances
Mean Absolute Error: 0.24
R2: 0.864
Normalised Mean Absolute Error (Assessed): 0.033
Points: 22
Task 4 Prediction - Van der Waals Contacts
No results submitted for task 4
Bonus Task 1 Prediction - Packing Coefficient
No results submitted for bonus task 1
Bonus Task 2 Prediction - Cell Volume
No results submitted for bonus task 2
Bonus Task 3 Prediction - Space Group Symbol
No results submitted for bonus task 3
Total Points
49/130

Task 1 Prediction - Density
Mean Absolute Error: 0.056
R2: 0.938
Normalised Mean Absolute Error (Assessed): 0.037
Points: 22
Task 2 Prediction - Centrosymmetric
Accuracy: 0.798
Macro F1-score (Assessed): 0.62
Weighted F1-score: 0.771
Points: 5
Task 3 Prediction - Mean Distances
Mean Absolute Error: 0.24
R2: 0.864
Normalised Mean Absolute Error (Assessed): 0.033
Points: 22
Task 4 Prediction - Van der Waals Contacts
No results submitted for task 4
Bonus Task 1 Prediction - Packing Coefficient
No results submitted for bonus task 1
Bonus Task 2 Prediction - Cell Volume
No results submitted for bonus task 2
Bonus Task 3 Prediction - Space Group Symbol
No results submitted for bonus task 3
Total Points
49/130


bumping versions

Bumped the bitcoind, litd and go versions to the latest.  Also made a small change in the go instructions to prevent the command not found error.

There's an incompatibility problem in LND 0.17 that will cause certain onchain operations to fail with Bitcoin Core 27. There's a fix coming, so let's keep this pull request up and merge it in then, instead of figuring out an interim solution


fix(bch/getStats()): Adding names to service provider IDs

:tada: This PR is included in version 1.2.3 :tada:
Your semantic-release bot :package::rocket:


Update Semantics for SingleChildScrollViews

For the other scroll views updating the semantics is a side effect of layout. However, the SingleChildScrollView is not re-layouted after a scroll action and therefore its semantics weren't updated. This caused two issues:

After scrolling the semantics tree still had the semantic information of the state before the scroll.
The available semantic scroll actions were not updated after the scroll.

This PR makes updating those two points explicit for the SingleChildScrollView. An alternative approach would have been to make those updates a side-effect of painting (similarly to how they are a side-effect of layout for the other scrollviews).
Fixes https://github.com/flutter/flutter/issues/12275.

Refactored this a little. PTAL.

Re-added an appropriate assert and updated doc comments. PTAL.

 modulo some doc nits


Feature request: NIP-06 mnemonic support

NIP-06
For example: cryptocurrency wallet apps generally strongly dissuade users from just copy-pasting the private key as it's prone to data leak (like, a rogue app which monitors the clipboard and automatically upload its content). Instead these apps guide users to write a mnemonic down on paper.

Let's see how can we integrate this on the login page @FrontendCrypto

Oh yes, that will be a nice thing to design. Going for it in a moment.

Do you think something like that would make sense?

I created a simple prototype, just hit "Create account" and interact.
https://www.figma.com/proto/ZY2QeasyxpDbqzLyHj8zpu/NostrOS?page-id=20%3A59080&node-id=1096%3A75413&viewport=-5458%2C-6620%2C0.34&scaling=scale-down&starting-point-node-id=1096%3A75413&show-proto-sidebar=1

I think that's not possible

First iteration released with https://github.com/KoalaSat/nostros/releases/tag/v<IP_ADDRESS>-alpha

Please let us know your feedback @andronoob


Add funding tags

Also, update to the new linter, github CI and any subsequent work that entails form this.

Done, package re published at version 2.1.0


reset zoom button broken

scroll and zoom, then it is in the wrong place

Not window scrollbar; container scrollbar

this will go away as part of the toolbar rework

will be released in v1.0.0

Fixed with 1.0.0 release


added serverless configuration to cosmosdb.tf

Added lines to ./infra/core/db/cosmosdb.tf to allow for CosmosDB deployment to be Serverless instead of Provisioned.

We will be accepting this change, but it will be included in another PR. Thank you @WookieeOnTheRun for the recommendation.


Limit listed Contexts

Summary
Is there a way to hide a Context from the clientConfig selection Dropdown? or define the listed contexts?
Step to reproduce
Having multiple Context but i like only 2 available for the editor in clientConfig.

Using MODX ACLs to limit access to the contexts will also hide them from ClientConfig.


Compile dart to Android aar or iOS framework without using Flutter

Is it possible to compile dart to native Android and iOS without using flutter dependency.
Currently I can create Flutter Module and compile it to an aar or ios framework. But this also bundles some Flutter dependency.
Can it be done with pure dart like how kotlin native does it.
Use Case:

Sharing the business logic between existing Android and iOS application.

The same AOT compiler that flutter uses is also available as a standalone tool, which can compile non-Flutter apps.  We do have a command line AOT runtime (Dart SDKs ship with dart2native and dartaotruntime).
Though right now we don't provide a custom, non-flutter embedder that can be loaded dynamically into Android/iOS apps (i.e. the analogue of libflutter.so). Though it would be possible to build such an embedder using the Dart VM's embedder API.
We don't have plans atm to provide it, maybe that will change in the Future.
/cc @mit-mit @mraleph @a-siva

Hi @mkustermann
Thanks for the information.
Hope to see this feature implemented sometime in future :)

As @mkustermann notes, there is nothing stopping someone else from doing this via the same mechanisms Flutter uses.  :-)

Given that this is not planned for short term, I am just going to close this issue.


Add another output format

A cool feature it would be awesome to see is output the results into files/xml to allow visualization in other tools.
What do you say?

+1

JSON output would be a good way to achieve this, as it's easily parsable in most languages.


How to?

How to build this? Looks neat!

Figured out. It would be nice if no IP is entered, it would use the REMOTE_ADDR instead.

Perhaps will do that tomorrow morning ~
On 27 September 2015 01:11:20 CEST, Fastidious<EMAIL_ADDRESS>wrote:

Figured out. It would be nice if no IP is entered, it would use the
REMOTE_ADDR instead.

Reply to this email directly or view it on GitHub:
https://github.com/TheHowl/ip.zxq.co/issues/1#issuecomment-143503669

--
Sent from my Android device with K-9 Mail. Please excuse my brevity.

👍🏻

Done as of f4ac205468ad3cb3c323315faf1148f7f17a42c9

(still not live yet, as I want to fix #2 first, but it will be hopefully soon)

(now live)

Excellent! Will check as soon as I get home.


Separate into client and server crates

Generally, you either want one or the other. The client and server sides should be separated into their own crates (but potentially still under this repo).
multipart can remain as a shell crate that reexports the client and server crates as modules, so its usage doesn't change for existing projects.

Turns out this just adds more complexity, especially when handling features.


iOS 8.3 Crash in supportedInterfaceOrientations

I am using iOS SDK 8.3 and running on devices with iOS 8.3 and it keep crashing whenever i want to dismiss a modal view when JDStatusBar is shown.
Seems like Apple has changed the
supportedInterfaceOrientations

implementation. Is there any work around i can solve this exception?
Thanks

I can confirm this happens to me as well. App crashes when I try to present UIAlertView while the status bar is shown.

Happens to me as well. Working on fix now, will keep you informed :)

I can confirm that using version pulled from top of master is NOT crashing,
pod 'JDStatusBarNotification', :head

Phew, not lets hope for fast review.

Version 1.5.1 from Pods also works. So normal
pod update
should be enough.

I do have 1.5.1 but I keep seeing crashes in supportedInterfaceOrientations

@bartg I have pulled the latest version from master and it solved the crash. Thanks!
Btw, i am developing iPad applications and my device orientation is fixed to landscape only.

@kokhong20 Could you ack that it works for you also not on master but also on 1.5.1? I am also developing iPad app with fixed landscape orientation and it stopped crashing at 1.5.1.
I dont want to use :head for my pods, because every pod install it is being updated.

added 1.5.2 pod, hope that helps.

@bartg I have tried 1.5.1 and it works. I will close this issue.


⚠ Bofrost.at has degraded performance

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

HTTP code: 200
Response time: 1501 ms

Resolved: Bofrost.at performance has improved in 064f6af.


Don't create Kube services when there's no ports

This was causing a failure when creating Components with no ports.

Changes Unknown when pulling 2c75dafa440a4fc9a9c5ee1375098d1c8b54367a on empty_svc_hotfix into ** on master**.


Add a repository description when cloning

containing:

the tfs path that is cloned
the command line used (as a memo!)

:heart: this.

done ;)

:confetti_ball: :ship:


OSX M1, M2 support?

Hello,
I am wondering if fdtd-z works on Mac OSX M1 or M2 computers running the ARM64 processor?
The CUDA toolkit is required, and it sounds like it is not completely supported: link.  Namely, there is no NVIDIA GPU in the AMD apple computers...
Mac has Metal for ML tasks, and supports Jax.  I wonder if that could be used?
https://developer.apple.com/metal/jax/

Hi Lukas!
Unfortunately, the implementation of fdtd-z is very intimately tied to the
architecture of Nvidia GPUs. Even if fdtd-z could somehow run on other
platforms, there would be virtually no chance that it would be performant.
On Thu, Oct 12, 2023 at 10:16 PM Lukas Chrostowski @.***>
wrote:

Hello,
I am wondering if fdtd-z works on Mac OSX M1 or M2 computers running the
ARM64 processor?
The CUDA toolkit is required, and it sounds like it is not completely
supported: link
https://developer.nvidia.com/nvidia-cuda-toolkit-11_6_0-developer-tools-mac-hosts.
Namely, there is no NVIDIA GPU in the AMD apple computers...
Mac has Metal for ML tasks, and supports Jax. I wonder if that could be
used?
https://developer.apple.com/metal/jax/
—
Reply to this email directly, view it on GitHub
https://github.com/spinsphotonics/fdtdz/issues/22, or unsubscribe
https://github.com/notifications/unsubscribe-auth/A3VGPQMGG72UAN7H4FNRIIDX7DFCZAVCNFSM6AAAAAA56S7B2CVHI2DSMVQWIX3LMV43ASLTON2WKOZRHE2DCMRVGQZDSMY
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

Thanks Jesse,
I came across a Mac Metal implementation of FDTD.  It looks like this CPU/GPU is quite promising in terms of performance: https://github.com/ProteusMRIgHIFU/BabelViscoFDTD https://github.com/ProteusMRIgHIFU/BabelViscoFDTD


Include number of executors per node in cluster information

Fixes #1117.  Currently for cluster information, we calculate the number of nodes correctly but do not track the number of executors per node. This can generate wrong GPU cluster recommendations because there can be multiple executors per node.
This PR adds numExecsPerNode in the cluster information output file.
Changes:
Core/Java:

Calculate numExecsPerNode as maximum number of executors in any host
Update ClusterInfo and related methods.
Add Num Executor Per Node as new field in cluster information output CSV file.
Update unit test to include case with multiple executors on single node.

Output
Cluster Information Generated from Core:
File: rapids_4_spark_qualification_output_cluster_information.json
Previously:
[ {
  "appName" : "NDS - Power Run",
  "appId" : "application_169685947xxxxx",
  "eventLogPath" : "file:/Users/psarthi/Work/event-logs/xxxxxx",
  "clusterInfo" : {
    "vendor" : "dataproc",
    "coresPerExecutor" : 16,
    "numExecutorNodes" : 4,
    "driverHost" : "xxxx-dataproc-cpu-m.c.xxxx.internal"
  }
} ]

After this fix:
[ {
  "appName" : "NDS - Power Run",
  "appId" : "application_169685947xxxxx",
  "eventLogPath" : "file:/Users/psarthi/Work/event-logs/xxxxxx",
  "clusterInfo" : {
    "vendor" : "dataproc",
    "coresPerExecutor" : 16,
    "numExecsPerNode" : 6,
    "numExecutorNodes" : 4,
    "driverHost" : "xxxx-dataproc-cpu-m.c.xxxx.internal"
  }
} ]

Follow Up

Need to investigate heuristics for calculating total CPU cores of the node.
We cannot perform coresPerNode = numExecsPerNode * coresPerExecutor since a node maybe oversubscribed.
Original issue: #1109

do we have any tests with the dynamic allocation test you had in the description?

Added unit test for dynamic allocation with comment

We cannot perform coresPerNode = numExecsPerNode * coresPerExecutor since a node maybe oversubscribed.

There is no way for us to know this on some platforms like yarn where they select what it schedules by. We will for now just have to make an assumption that it isn't but document and warn user


"Error: did not find expected authorization request details in session" occurring with two tabs open

Hello,
First of all, thank you for this repository as it is a valuable help to migrate from the deprecated Keycloak Node.js adapter.
I used your code in my project, and it works well with Keycloak 20.0.2. However, I had an issue and I was able to reproduce it in this repository.
It occurs with the following steps :

Click on "Test" and log in via the Keycloak login page, then open a second tab,
Logout form the second tab,
Refresh the first tab (either by pressing F5 or by clicking on "Test") : it redirects us to the Keycloak login page,
In the second tab, navigate to "Test" and log in again,
(a) Refresh the first tab => the error occurs,
(b) Instead of refreshing the page, log in. Keycloak notify you that you are already logged-in. If you press the browser back arrow button => the same error occurs,

Error: did not find expected authorization request details in session, req.session["oidc:<IP_ADDRESS>"] is undefined
    at /home/user/keycloak-express-openid-client/node_modules/openid-client/lib/passport_strategy.js:121:13
    at OpenIDConnectStrategy.authenticate (/home/user/keycloak-express-openid-client/node_modules/openid-client/lib/passport_strategy.js:180:5)b
    at attempt (/home/user/keycloak-express-openid-client/node_modules/passport/lib/middleware/authenticate.js:369:16)
    at authenticate (/home/user/keycloak-express-openid-client/node_modules/passport/lib/middleware/authenticate.js:370:7)
    at file:///home/user/keycloak-express-openid-client/index.js:70:7
    at Layer.handle [as handle_request] (/home/user/keycloak-express-openid-client/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/user/keycloak-express-openid-client/node_modules/express/lib/router/route.js:144:13)
    at Route.dispatch (/home/user/keycloak-express-openid-client/node_modules/express/lib/router/route.js:114:3)
    at Layer.handle [as handle_request] (/home/user/keycloak-express-openid-client/node_modules/express/lib/router/layer.js:95:5)
    at /home/user/keycloak-express-openid-client/node_modules/express/lib/router/index.js:284:15

I am new to Keycloak and I don't really know where to start to try to solve this. I searched a solution on the net to no avail.
I am using Keycloak 20.0.2, and it also happens with Keycloak 17.0.0. I am using the exact code of this repository, without any modifications.
Thanks you in advance for your help.

Update: I migrated from openid-client and passport to express-openid-connect as I encountered other non-related issues.
But even with express-openid-connect, logging in in two different tabs would raise an error: checks.state argument is missing. I think that the two errors are related as express-openid-connect uses internally openid-client.
The best way to handle the checks.state argument is missing error for express-openid-connect is explained in this issue.
I think that the same can be done with openid-client to mitigate the did not find expected authorization request details in session.


reapp run options conflict with options in config/run.config.js

reapp run allows you to explicitly specify settings like the port number and webpack devtool as command line options. That's a good feature, but even if you don't specify these options, the default values override whatever settings you have in config/run.config.js. This behavior is quite confusing and makes some settings in the config file useless.
I think that at least for some settings, the real default value should be not the hard-coded command-line default, but the value defined in the configuration file.

Why would you want the config to override? Could you provide a situation?

I want it to override only if no option value is specified on command-line. If I specify an option in the command itself, it's obvious I want this right now more than whatever is written in any config file. But if I just write 'reapp run web' and don't specify a port number and devtool directly, but I've got {devtool: 'source-map', port: 9999 } set in the config, then it's very confusing when these settings just get ignored.

Hm, yea that should work definitely. If it's not there's a bug somewhere. Thanks for reporting.

I already checked the file, so I wasn't sure if this was by design.
You could probably pass null as the default value of Program.option() and then in
var config = findConfig({
// ...
devtool: Program.tool || 'eval'
});


Migrate Carto 3 templates to Mui5 and styled API

[x] Migrate from Mui4 to Mui5
[x] Adapt to the new design system
[x] Migrate from makeStyles to styled API
[x] CARTO 2 templates removal
[x] Migration to latest deck.gl 8.9.6
[x] Node 18 test
[x] cra 4 to 5
[x] react-script move to craco

Failed tests on React 18, so staying on React 17 (WIP for a next release, after removing makeStyles in C4R)

Issue detected in BarWidget and HistogramWidget... the bug was introduced on jun 22: https://github.com/CartoDB/carto-react-template/pull/342


Support CloudKit error CKLimitExceeded by default in CloudKitOperation

See the discussion in #288.

Hey @swiftlyfalling - this is an initial start at providing built in support for Cloud Kit Limit Exceeded error. We were discussing this previously in #288.
Since that discussion, I have also merged #304 which made it possible for the operation type to define its own type for the errors, and so enables passing back full information to the error handler (as the error parameter).
This PR builds on that by automatically adding a suitable handler for .LimitExceeded. This method in turn receives another handler from the user, where it gives the error, log and a suggested response, returning a response. The response is how the remaining modifications should be sent, with a left and right pair.
Currently, this is supported by any CKModify* operation. So, for example, lets assume we have the following operation:
let operation = CloudKitOperation { CKModifySubscriptionsOperation() }

operation.addCondition(AuthorizedFor(Capability.Cloud()))

// Configure the container & database
operation.container = container
operation.database = container.privateCloudDatabase

operation.subscriptionsToSave = toSave
operation.subscriptionIDsToDelete = toDelete

we can add the default error handler for limit exceeded like this:
operation.setErrorHandlerForLimitExceeded()

This will basically figure out what is left to save or delete from the original operation, bisect those into left and right sets. Create a new operation for the left hand side which it will add as a child operation to the group, and set this as a dependency of the right hand side. This should respect the ordering of the arrays. The right hand becomes the next attempt when performing the retry.
Thoughts? I'm sure I'm missing 2nd level retry/error behaviour.

To perform the bisection manually, you can provide your own handler. The signature is like this:
operation.setErrorHandlerForLimitExceeded { error, log, suggested in
    // the suggested argument is a tuple like this
    let leftHandSideToSave = suggested.left.toSave
    let leftHandSideToDelete = suggested.left.toDelete
    let rightHandSideToSave = suggested.right.toSave
    let rightHandSideToDelete = suggested.right.toDelete
    return ((leftHandSideToSave, leftHandSideToDelete), (rightHandSideToSave, rightHandSideToDelete))
}

I think I'll make it so that the response is optional though, which would allow for not attempting a retry.

In the event of a bisection, the current implementation would result in the CKOperation's specialized completion block getting called multiple times, correct? (Once for each child operation.)
(For example: the modifyRecordsCompletionBlock in CKModifyRecordsOperation)
If so, I would suggest that this is confusing behavior. According to the docs (modifyRecordsCompletionBlock):

This block is executed only once and represents your last chance to process the operation results. It is executed after all individual progress blocks have completed but before the operation’s completion block.

So it should either be heavily stressed in the documentation that the CKOperation's specialized completion block may be called more than once if you use .setErrorHandlerForLimitExceeded(), or the CloudKitOperation should accumulate:
savedRecords
deletedRecordIDs
operationError*
And pass them up to the user-set modifyRecordsCompletionBlock once. (When the last child operation's modifyRecordsCompletionBlock is called.)
*operationError must accumulate errors for items. To match the documentation, this would need to be set as CKErrorPartialFailure if some fail but some succeed, and:

The userInfo dictionary of the error contains a CKPartialErrorsByItemIDKey key whose value is an NSDictionary object. The keys of that dictionary are the IDs of the records that were not saved or deleted, and the corresponding values are error objects containing information about what happened.

And actually, I just came across evidence that a simple bisection may not be a safe default:

If you're doing a batch save and you've got a jumble of records in this graph, and they have delete self references between them, CloudKit is going to do an automatic topological sort for you.

We're going to upload the records in order so that all the records that are referenced will be up there by the time the record reference in them is uploaded.

This is really great in the public database where you don't have atomic commits but you still want to be able to upload data that looks consistent at any point when a client downloads it.

Source: WWDC 2014 Session 231 - Advanced CloudKit (transcript)
So, according to Apple, CKModifyRecordsOperation does a topological sort in the event of CKReferences, to ensure the CKRecords in a single operation are uploaded in the right order. A simple bisection of the original, unsorted data could break this.

Hi @swiftlyfalling - really fantastic feedback. 😁

Great points about accumulating the results and only sending the specialised completion handler once.

Might be okay on this point though? We take the original unsorted items, and we remove any that were actually sent (which we get from the error object), then we bisect the result of that. And then CKModifyRecordsOperation does its thing?

@danthorpe:

To clarify on the userInfo[CKPartialErrorsByItemIDKey] dictionary - this is different for each different type of operation.
(CKModifyRecordsOperation has it as [CKRecordID : NSError], CKModifySubscriptionsOperation has it as "Subscription ID" -> NSError - i.e. [String : NSError] - etc.)

We're splitting up the operation into multiple operations, and CloudKit can only do its topological sort within a single CKModifyRecordsOperation. If any members of a dependency graph end up on different sides of the split (i.e. in different CKModifyRecordsOperations), we've potentially introduced an error caused by the simple split (depending on the order). There's nothing CloudKit can do to fix it - it only has part of the dependency graph in each new operation.

Unfortunately, the only safe way to do this is to handle CKReference dependency graphs, cycles, and topological sorting in the framework itself. And even then, there are edge cases from which the framework can't safely recover. (i.e. If an operation fails with CKErrorLimitExceeded, and the attempt to do a topological sort results in a directed cycle containing all the original records, no smaller attempt can be made - those records cannot be automatically split into sub-operations - and the framework consumer would need to figure out if/how they can split up the records.)
I acknowledge that a simple split works in several simple cases:

If the CKRecords in recordsToSave contain no CKReferences
If the CKRecords in recordsToSave contain only CKReferences to records already in CloudKit
If the order of records in recordsToSave happens to be such that the split places dependencies before the records that contain CKReferences to them, and there are no directed cycles spanning the split.
etc.

But I am concerned that while trying to solve an error case, the simple split is brittle in ways that may not be obvious to framework consumers.
(On the plus side of all of this, the changes made in #304 make it possible to handle this - and other - error cases properly.)
The current side project in which I'm testing this framework + CloudKit doesn't currently utilize CKReferences, so I have a working implementation using the simple split model for that project. Posts on Stackoverflow would seem to indicate that lots of people use CKReferences, though.

@swiftlyfalling yeah, totally agree with everything you've addd here. The default "simple" split is almost certainly too naive - but it helps get stuff going.
The API here supports an (optional) block argument which has an optional return type for the left and right sides. So, totally possibly for framework consumers to override the default split.
But yes, it does make sense that the framework performs it's own topological sorting of the arguments and divides the remaining items accordingly. Quite a bit still to do here I think.
Thanks for your feedback, and great that #304 is working out well.
FYI - currently in Europe following Radiohead around, so not doing much code on this right now.

@danthorpe Thanks for this wonderful framework. I've been trying it out and contemplating switching over from PSOperations. The API is just so much cleaner and more readable.
@swiftlyfalling Thanks for all the work and thinking on this branch.
Even though the default "simple" split may not work on more complex cases, I think it'll certainly help clean up a lot of boiler plate. For my case, I do use some CKReferences, single directionally, and what I do is make sure I push the referenced items first, then on up the chain.
Anyhow, I've been trying to toy around with this branch, but keep running into the following crash:
fatal error: 'try!' expression unexpectedly raised an error: Operations.Reachability.Error.FailedToSetDispatchQueue

Any ideas? Thanks!

@leotumwattana thanks! 😍
That error is from deep inside the Reachability stuff. I'm not immediately sure what the cause, more than likely trying to set a dispatch queue from a queue which doesn't have a run loop (or something equally weird).
One thing which I am going to do for CloudKitOperation before v3 is done is remove the reachability stuff - as it's not really how  says this sort of stuff should be done. Instead, we'll have a default timeout observer.
So, if you are already on a fork - feel free to rip out all that reachability stuff anyway?

@danthorpe thanks for the quick reply. 👏
I've ripped out the Reachability stuff. Ran the tests, seems like nothing relating to CloudKit operation is failing.
Now the crash is at adding an operation after the group operation has finished. Any pointers for where I should look? 😄
*** -[Operations.OperationQueue addOperation:]: operation is finished and cannot be enqueued

@leotumwattana hmm, well that is a more fundamental issue. Sounds like the operation is finishing before the retry handler is properly invoked.
Can you turn .Verbose logging on? You can do this by...
let operation = CloudKitOperation { CKModifySubscriptionsOperation() } // etc
operation.log.severity = .Verbose

And then you should see what is going on in terms of lifecycle.

Of course. Turned on .Verbose. It's as it says. We're trying to add the operation after the Group Operation: Did finish with errors:. I'll continue digging into this for a bit. 😉
Group Operation: Aggregated error: ModifyRecordsError<CKRecord, CKRecordID>(underlyingError: <CKError 0x15888ec00: "Limit Exceeded" (27/1020); "Your request contains 1363 items which is more than the maximum number of items in a single request (400)">, saved: Optional([]), deleted: Optional([]))
******** <CKModifyRecordsOperation: 0x158d60d40; operationID=014E9BC5-12F6-45F1-8FD3-E16491FE9262, stateFlags=finished, metrics=<CKOperationMetrics: 0x158df0480; cloudKitMetrics=<CKMetric: 0x1575f0070; startDate=2016-06-01 16:50:40 +0000, duration=0.232, queueing=0.082, executing=0.246, bytesUploaded=0, bytesDownloaded=0, connections=1, connectionsCreated=0>>, requestIDs=(6B8A1C6F-EF20-4416-82F9-AEE5D51C9D39)>
Group Operation: Will finish with 1 errors.
OPRCKOperation<CKModifyRecordsOperation>: Will finish with 1 errors.
PushOperation for ORReminder: Received CloudKit Limit Exceeded error: ModifyRecordsError<CKRecord, CKRecordID>(underlyingError: <CKError 0x15888ec00: "Limit Exceeded" (27/1020); "Your request contains 1363 items which is more than the maximum number of items in a single request (400)">, saved: Optional([]), deleted: Optional([]))
OPRCKOperation<CKModifyRecordsOperation>: Did finish with errors: [Operations.ModifyRecordsError<CKRecord, CKRecordID>(underlyingError: <CKError 0x15888ec00: "Limit Exceeded" (27/1020); "Your request contains 1363 items which is more than the maximum number of items in a single request (400)">, saved: Optional([]), deleted: Optional([]))].
Group Operation: Did finish with errors: [Operations.ModifyRecordsError<CKRecord, CKRecordID>(underlyingError: <CKError 0x15888ec00: "Limit Exceeded" (27/1020); "Your request contains 1363 items which is more than the maximum number of items in a single request (400)">, saved: Optional([]), deleted: Optional([]))].
*** -[Operations.OperationQueue addOperation:]: operation is finished and cannot be enqueued

@leotumwattana - hmm, interesting - I didn't know that there was actually an internal limit of 400.
Well, one of the reasons why this isn't merged yet, is because I've not finished all the unit testing, and I want to trigger it in an app against CloudKit - so, I guess it's still not quite right. If you find any more info, please feedback to me. I'll hopefully get it finished off soon - but can't promise that it'll be that soon.
Also, I have a Slack team for discussion, DM me on Twitter your email I can invite you, and we can have a more free flowing discussion.

@danthorpe As discussed, here's a sample project: OperationCloudKit that will crash with [Operations.OperationQueue addOperation:]: operation is finished and cannot be enqueued
Thanks!

@danthorpe I've updated the sample project. I think right now any retry of any CloudKitOperation will cause the same operation is finished and cannot be enqueued crash.
You mentioned something about a possible regression from changes to Will/DidFinishObservers? Which commit(s) might you be referring to?

@leotumwattana well, we've had willFinish and didFinish for a while. But I added willCancel, and renamed didStart to willExecute in https://github.com/danthorpe/Operations/pull/293.
I'm going to step through your samples now. One question that I do have is why you've added the CloudKitOperation into another GroupOperation? What is the logic/reason for this?

@danthorpe Adding the CloudKitOperation into another GroupOperation is probably not necessary for the sample project. I was just modelling it based on the more complex operation chains from my other projects. Such as doing some other operation after the CloudKitOperation is done.
In the case of a CloudKitOperation<CKModifyRecordsOperation> I might push certain CKReferenced records up first, then push other records up to avoid issues as discussed with @swiftlyfalling.
GroupOperation seems like a good way to package up such higher level operations, but I'm all ears if you have a better suggestion?

I can reproduce this crash with the sample project, with both this branch and the development branch.
I can also reproduce it if I simplify CreateRecordOperation's setErrorHandlerForCode(.LimitExceeded) to:
createRecordOperation.setErrorHandlerForCode(.LimitExceeded) { (error, log, suggested) -> (delay: Delay?, configure: OPRCKOperation<CKModifyRecordsOperation> -> Void)? in
    //return (Delay.By(1), suggested.configure)   // also fails
    return (suggested.delay, suggested.configure)
}

@leotumwattana:
This code in your OperationCloudKit example seems like it might be part of the problem:
let op = CKModifyRecordsOperation(
            recordsToSave: records,
            recordIDsToDelete: nil)

        op.savePolicy = .ChangedKeys
        op.qualityOfService = .UserInitiated

        let createRecordOperation = CloudKitOperation { op }
        createRecordOperation.name = "CreateRecordCloudKitOperation"
        createRecordOperation.container = CloudKit.container
        createRecordOperation.database = CloudKit.database

If I replace it with:
let createRecordOperation = CloudKitOperation { CKModifyRecordsOperation() }
        createRecordOperation.name = "CreateRecordCloudKitOperation"
        createRecordOperation.container = CloudKit.container
        createRecordOperation.database = CloudKit.database
        createRecordOperation.recordsToSave = records
        createRecordOperation.recordIDsToDelete = nil
        createRecordOperation.savePolicy = .ChangedKeys
        createRecordOperation.qualityOfService = .UserInitiated

I can't reproduce the crash.

@swiftlyfalling @leotumwattana of course! Sorry, I should have picked up on this earlier.
The closure { op } is going to try to re-run the same operation, but NSOperation is a "one shot" class. Once it is run, it cannot be run again. This is why RepeatedOperation (superclass of CloudKitOperation) takes a generator of an operation.
So, the replacement from @swiftlyfalling is the "nicest" way to write it. But you could also do this:
let createRecordOperation = CloudKitOperation {
    let op = CKModifyRecordsOperation(recordsToSave: records, recordIDsToDelete: .None)
    op.savePolicy = .ChangedKeys
    op.qualityOfService = .UserInitiated
    return op
 }

createRecordOperation.name = "CreateRecordCloudKitOperation"
createRecordOperation.container = CloudKit.container
createRecordOperation.database = CloudKit.database

queue.addOperation(createRecordOperation)

and it should work okay.
I will definitely update the documentation/wiki to make this clear, as it's such an easy mistake to make!

On the topic of this PR:
I tested it with CloudKit, and some funky things are going on.

bisect() wasn't working (see code comments above on the filter conditional, but there are other problems depending on the type of Save)

Even with bisect() fixed, it executes endlessly with the error.

I tried with CKModifyOperation with 500 recordsToSave (just like the OperationCloudKit example code). It fails with CKErrorLimitExceeded as expected, bisects (with the fixes) to 250/250, sets lhs.toSave, and rhs.toSave....
and then the left operation succeeds, and the right operation fails trying to save the original 500 records. (Or so it seems?)

Thanks so much for all the testing and support on doing this! I will get back to it tomorrow (need to write this talk over the weekend)...
I suspect what is happening is that the configure block is not getting applied correctly.

Actually, it looks like the configure block is being applied correctly. The settings are just being overwritten by the original configure block in RepeatedOperation.swift : line 278:
public func addNextOperation(@autoclosure shouldAddNext: () -> Bool = true) {
    if let (delay, op) = next() {
        if shouldAddNext() {
👉           configure(op)

The execution flow seems to be as follows (starting at the return of recoverWithInfo):
CloudKitOperation.Swift:
let handler: Handler = { [weak _recovery] info, payload in
➡  guard let _recovery = _recovery, (delay, configure) = _recovery.recoverWithInfo(info, payload: payload) else { return .None } // this works, and returns the proper configure block
    let (_, operation) = payload
✅  configure(operation) // values of operation are properly set by this configure block (retrieved ultimately from the errorLimitExceeded handler)
    return (delay, operation) ⤵
}

RetryOperation.swift:
class RetryGenerator<T: NSOperation>: GeneratorType {
    typealias Payload = RetryOperation<T>.Payload
    typealias Handler = RetryOperation<T>.Handler

    internal let retry: Handler
    internal var info: RetryFailureInfo<T>? = .None
    private var generator: AnyGenerator<(Delay?, T)>

    init(generator: AnyGenerator<Payload>, retry: Handler) {
        self.generator = generator
        self.retry = retry
    }

    func next() -> Payload? {
        guard let payload = generator.next() else { return nil }
        guard let info = info else { return payload }
➡        return retry(info, payload) ⤵
    }
}

RepeatedOperation.swift:
public func addNextOperation(@autoclosure shouldAddNext: () -> Bool = true) {
➡    if let (delay, op) = next() {
        if shouldAddNext() {
💥            configure(op)

It occurs to me that it might be useful for the RepeatedOperation's generator to be able to return that it's already configured the next operation. (And that because it doesn't (?) this might affect other cases?)

@swiftlyfalling Ah, nice catch 👏 and my bad 😅. I updated the sample project with the corrected code.

@leotumwattana:
See @danthorpe's related message in Issue #326 :

Just a quick update on this - after further discussions in the CloudKitOperation work that is being done at the moment. So, will definitely make some changes so that GroupOperation subclasses can indicate whether the error was handled successfully or not.

Haven't figured out the details, will evolve it further in a PR.

(Simply erasing the error may not be ideal.)
And just to clarify:
Initializing a CreateRecordCloudKitOperation with this code:
let createRecord = CreateRecordOperation()
queue.addOperations([createRecord])

ultimately finishes successfully, albeit with an error of CKErrorLimitExceeded (despite the child CloudKitOperation having handled it properly internally).
The endless retrying comes into play with the RetryOperation<CreateRecordCloudKitOperation>.

As far as I can tell, after some additional testing, what's left to get this all working is:

[ ] "Make some changes so that GroupOperation subclasses can indicate whether the error was handled successfully or not"

So that CloudKitOperation error handlers can optionally mark errors as handled.
Random musings:
Maybe a separate handledErrors array/accessor so that subclasses (or, say, CloudKitOperation error handlers) can review what's already been "handled", in case it matters?
Certainly, RetryFailureInfo.aggregateErrors should also contain information on non-handled / "handled" errors?
Presumably, handled errors shouldn't be considered in the places that normally check for errors to determine success/failure and such, but should still be accessible.

[ ] Fix RepeatedOperation executing the original configure block on the possibly-already-configured operation.

(What level should this be fixed at? RepeatedOperation / RetryOperation / CloudKitOperation? Does this affect other things?)

[ ] Add comparator functions / blocks / etc. for T.Save / T.Delete ?

[ ] Integrate fix for bisect() filter conditionals.

Having done some (admittedly horrible and temporary) workarounds to test this, the rest seems to be working great. So, it's close! 😎

I've made a start with #326, to address the top item here. I'm thinking an Errors type in Operation instead of an array. And then it can support the concept of "handled" errors.

@swiftlyfalling A little off topic, but I gotta ❤  your comment formatting on Github. 😀
Noted on #326. Can't wait to swap out my PSOperation code in my project. I have a mostly completed branch waiting to be committed once .LimitExceeded is ready, but no pressure! 😁

@swiftlyfalling - agreed! 😍 @swiftlyfalling comments!
We will hopefully get all this sorted out in the next few days. I'd be working on it now, but I've got to write this presentation for CocoaHeads Stockholm which is on Tuesday.... 😁

@danthorpe No worries. Good luck on the presentation. I'm sure you don't need it, but have it anyway! 😉

Woot. Looks like things are moving along. Wasn't expecting it during WWDC week. Thanks @danthorpe and @swiftlyfalling.

I'm actually currently in the iCloud labs - going to go through this with the  CloudKit engineers now...

Ah. Nice. I so want to be at WWDC. Have fun!

To be honest @leotumwattana - the stuff from  has been a little underwhelming, but meeting people has been brilliant!

Well. Probably hard for Apple to keep the breakneck pace. Let's see if they are saving anything for next year. Fingers crossed.

@swiftlyfalling @leotumwattana okay, there is still quite a lot to do for a bullet proof CloudKitOperation wrapper than can handle CKLimitExceeded and similar errors, but I think we've reached a good place here. This branch has been going on a long time, and it offers some significant improvements which support handling these kinds of errors.
Ultimately, there are still the rather tricky issues:

Ensuring that the "completion block" set on the original CloudKitOperation is not executed multiple times when bisecting the result.
Sorting the object/reference graph correctly so that bisecting does not save incomplete graphs

Recommendation from Apple is not even attempt to handle this sort of thing automatically, and it should be left to the application developer, as they will always understand their object graph more accurately then this framework can. The best that we can do, is to provide convenience hooks.
So - with that, going to merge this now and will continue look into point 1 above after v3.0.


BatteryManager giving wrong values for some devices.

BatteryManager giving wrong values for some devices.
i have an app called Electron on the play store, it has over 100k downloads, its an app that gives you information about the device's battery, the current capacity and current now values show correct for some devices, and they incorrect large values for some other devices, i use a package called battery_info to get the info, but i dont think the probem is from the packages code, i tried my own implementation using platform channels, but i still got the same results, i really need a solution to this asap, my app is getting huge and it still has this issue.

Flutter has no control over what values an OS API reports.
Closing, as this does not appear to describe a bug in Flutter.

well it may be a bug with flutter's platform channel, we dont have enough info to close the issue yet.

You have a device-specific issue that has only been seen with reading battery values--an inherently device-specific process. Sending numbers over platform channels, on the other hand, is a simple process that has no device-specific aspects. So while it's theoretically possible for it to be a platform channel bug, it's extremely unlikely, and there's no evidence here for it.
If you believe that's the issue, however, you can easily determine that by comparing the values on the native side and the Dart site. In the event that you find that that's the problem, you'll have a simple reproducible test case that you can report.

You have a device-specific issue that has only been seen with reading battery values--an inherently device-specific process. Sending numbers over platform channels, on the other hand, is a simple process that has no device-specific aspects. And unlike reading battery voltage, platform channels are very widely used, and we have no other reports of numbers randomly changing to wildly different values. So while it's theoretically possible for it to be a platform channel bug, it's extremely unlikely, and there's no evidence here for it.
If you believe that's the issue, however, you can easily determine that by comparing the values on the native side and the Dart site. In the event that you find that that's the problem, you'll have a simple reproducible test case that you can report.

i tried comparing the values from the native and flutter side, it seems that the values are incorrect from the native side, i searched everywhere but cant solve this bug


[10.x] Fix deprecations for embedded images in symfony mailer

Fixes #46462
It seems like Symfony has deprecated the old way of embedding images in Mails since 6.2:
https://symfony.com/doc/current/mailer.html#embedding-images
This PR implements the new way of embedding images.

@Jubeki have you tried out a few scenarios with Helo or something similar?

I tried using Mailpint with the following code example (and an image stored in storage/app/profile.jpg) and it showed the image inline. I did not try it with any other email provider, but can try it out with ses if wanted.
// app\Mail\TestMail.php

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Attachment;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;

class TestMail extends Mailable
{
    use Queueable, SerializesModels;

    /**
     * Create a new message instance.
     */
    public function __construct()
    {
        //
    }

    /**
     * Get the message envelope.
     */
    public function envelope(): Envelope
    {
        return new Envelope(
            subject: 'Test Mail',
        );
    }

    /**
     * Get the message content definition.
     */
    public function content(): Content
    {
        return new Content(
            view: 'test',
        );
    }

    /**
     * Get the attachments for the message.
     *
     * @return array<int, \Illuminate\Mail\Mailables\Attachment>
     */
    public function attachments(): array
    {
        return [];
    }
}

{{-- resources/views/test.blade.php --}}
<!DOCTYPE html>

    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>

TEST E-Mail

    embed(storage_path('app/profile.jpg')) }}" alt="" style="height: 100px; width: 100px;" />

perhaps best indeed that we try it out with ses as well. Also maybe try a data attachment?

@driesvints
I updated the above example to also test the embedData method.
Both work with Mailhog and SES.

Thanks


How does it look now ?

Hello
This is what I get after following the wiki instructions manually, but this doesn't look like the video, does it look like this now ? if so is there any way to get the version you see in the video ?
thanks

Sorry for the late response. Yes, that's how it appears; If you prefer the previous statusbar design, I've added an option in the widget settings for separated statusbar style.

Here's a video of how things look so far. If you have any suggestions, I'm open to hearing them.
https://github.com/user-attachments/assets/224c3da0-a9f4-4433-af41-1efd1f6a97b3

Thanks, I love the design


Improve name of the "Events per day" chart

Improve name of the "Events per day" chart

idea: "Your Daily Usage History" or "Daily Usage History"
rename y-axis to Skill Events Reported"

PR: https://github.com/NationalSecurityAgency/skills-service/pull/505

:+1:


add VP9 and VP8 boxes

@sunfish-shogi
Another day, another codec! these are the boxes used by VP9 and VP8. Tested with Chrome and Firefox.
(i'm discovering that browsers are way more advanced than FFmpeg and Gstreamer regarding codec capabilities).
Standard: https://www.webmproject.org/vp9/mp4

Thank you!


Feature request : Finer connection control

Case 1 : znc automatically connects to networks with IRCConnectEnabled=true in znc.conf, and IRCConnectEnabled is changed to "true" in several cases.
Even if you set IRCConnectEnabled to false, IRCConnectEnabled could be set to true again in znc.conf for currently connected networks when

you execute /znc saveconfig, shutdown, or restart.

you save settings in webadmin.

znc receives SIGUSR1 signal.

If there was a setting like "AutoConnectOnBoot" which, if set to true, makes znc connect automatically during startup,
users don't have to constantly keep an eye on IRCConnectEnable.
Case 2: znc can disconnect from or connect to networks unexpectedly when you make znc rehash.
If IRCConnectEnabled was false for freenode network in znc.conf and you executed "/znc connect" for freenode network,
when you rehash znc, znc would disconnect you from freenode since IRCConnectEnabled is set to false again by rehash.
If rehashes make znc disconnect or connect, users can be easily led to confusions.
Discussion :
The current design can easily confuse users.
If the role of IRCConnectEnabled was restricted and new settings were made for finer control,
users wouldn't experience inconvenience or confusions.

Just don't rehash. Most stuff is configurable through admin/webadmin. Settings that aren't configurable through them, don't need to be changed often.
And do you really need to repeat again and again that incomplete list of situations when ZNC saves its config?
Anyway, this is duplicate of #110. No need to open hundreds of new bugs about the same issue, crocket.


Master not present in UI

Gorse version - latest(0.4.0)
Describe the bug

{"level":"warn","ts":1649756079.9660664,"caller":"master/rest.go:495","msg":"failed to get user neighbor index recall","error":"global_meta/user_neighbor_index_recall: object not found","errorVerbose":"/go/gorse/storage/cache/database.go:98: object not found\n/go/gorse/storage/cache/redis.go:58: global_meta/user_neighbor_index_recall"}
{"level":"warn","ts":1649756079.9662116,"caller":"master/rest.go:503","msg":"failed to get item neighbor index recall","error":"global_meta/item_neighbor_index_recall: object not found","errorVerbose":"/go/gorse/storage/cache/database.go:98: object not found\n/go/gorse/storage/cache/redis.go:58: global_meta/item_neighbor_index_recall"}
{"level":"warn","ts":1649756079.9663732,"caller":"master/rest.go:511","msg":"failed to get matching index recall","error":"global_meta/matching_index_recall: object not found","errorVerbose":"/go/gorse/storage/cache/database.go:98: object not found\n/go/gorse/storage/cache/redis.go:58: global_meta/matching_index_recall"}
To Reproduce
docker-compose up -d
Master is not present in the cluster section of UI .Please have a check on it and kindly revert back.

This is the expected behavior. The dashboard is host by the master node. It seems meaningless to list the master node there.

Please find the below logs for server and worker
Server log
{"level":"error","ts":1649753837.6369083,"caller":"server/server.go:70","msg":"failed to connect local store","error":"stat /var/lib/gorse/server_cache.data: no such file or directory","path":"/var/lib/gorse/server_cache.data","stacktrace":"github.com/zhenghaoz/gorse/server.(*Server).Serve\n\t/go/gorse/server/server.go:70\nmain.glob..func1\n\t/go/gorse/cmd/gorse-server/main.go:55\ngithub.com/spf13/cobra.(*Command).execute\n\t/go/pkg/mod/github.com/spf13/cobra@v0.0.7/command.go:842\ngithub.com/spf13/cobra.(*Command).ExecuteC\n\t/go/pkg/mod/github.com/spf13/cobra@v0.0.7/command.go:943\ngithub.com/spf13/cobra.(*Command).Execute\n\t/go/pkg/mod/github.com/spf13/cobra@v0.0.7/command.go:883\nmain.main\n\t/go/gorse/cmd/gorse-server/main.go:71\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:250"}
{"level":"info","ts":1649753837.6370528,"caller":"server/server.go:81","msg":"start server","server_name":"affectionate_wright","server_host":"<IP_ADDRESS>","server_port":8087,"master_host":"master","master_port":8086}
{"level":"info","ts":1649753837.6375937,"caller":"server/server.go:102","msg":"start meta sync","meta_timeout":10}
{"level":"info","ts":1649753837.639144,"caller":"server/rest.go:69","msg":"start http server","url":"http://<IP_ADDRESS>:8087"}
{"level":"error","ts":1649753839.7180114,"caller":"server/server.go:112","msg":"failed to get meta","error":"rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing dial tcp: lookup master on <IP_ADDRESS>:53: no such host"","stacktrace":"github.com/zhenghaoz/gorse/server.(*Server).Sync\n\t/go/gorse/server/server.go:112"}
Worker
{"level":"error","ts":1649753838.8061168,"caller":"worker/worker.go:265","msg":"failed to load persist state","error":"stat /var/lib/gorse/worker_cache.data: no such file or directory","path":"/var/lib/gorse/worker_cache.data","stacktrace":"github.com/zhenghaoz/gorse/worker.(*Worker).Serve\n\t/go/gorse/worker/worker.go:265\nmain.glob..func1\n\t/go/gorse/cmd/gorse-worker/main.go:56\ngithub.com/spf13/cobra.(*Command).execute\n\t/go/pkg/mod/github.com/spf13/cobra@v0.0.7/command.go:842\ngithub.com/spf13/cobra.(*Command).ExecuteC\n\t/go/pkg/mod/github.com/spf13/cobra@v0.0.7/command.go:943\ngithub.com/spf13/cobra.(*Command).Execute\n\t/go/pkg/mod/github.com/spf13/cobra@v0.0.7/command.go:883\nmain.main\n\t/go/gorse/cmd/gorse-worker/main.go:73\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:250"}
{"level":"info","ts":1649753838.8062544,"caller":"worker/worker.go:276","msg":"start worker","n_jobs":1,"worker_name":"great_burnell"}
{"level":"info","ts":1649753838.8081915,"caller":"worker/worker.go:115","msg":"start meta sync","meta_timeout":10}
{"level":"error","ts":1649753840.8587012,"caller":"worker/worker.go:125","msg":"failed to get meta","error":"rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing dial tcp <IP_ADDRESS>:8086: connect: connection refused"","stacktrace":"github.com/zhenghaoz/gorse/worker.(*Worker).Sync\n\t/go/gorse/worker/worker.go:125"}

The first error is a expected behavior for first time execution. And the second error will disappear if the master node connected.

I think the log "ailed to connect local store" is misleading and it should be turned to warning level.


Edited autoEmail regex

Fixed Issues
https://github.com/Expensify/App/issues/13073
Tests
The email should always be<EMAIL_ADDRESS>except for 4th case it should be<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>
QA

Login to any Expensify account
Go to any chat
Send<EMAIL_ADDRESS>Verify that the email is sent correctly
Send<EMAIL_ADDRESS>Verify that the email is sent correctly in bold format
Send<EMAIL_ADDRESS>Verify that the email is sent correctly in italic format
Send<EMAIL_ADDRESS>Verify that the email is sent correctly in bold and italic format

Screenshots/Videos

Web
https://user-images.githubusercontent.com/16493223/205886380-ababe16a-9d93-4630-b1d8-40b7778b6501.mp4

Mobile Web - Chrome
https://user-images.githubusercontent.com/16493223/205886773-71ac1fb7-6a45-436f-9c67-802c5d012e8b.mp4

Mobile Web - Safari
https://user-images.githubusercontent.com/16493223/205887556-4acc9f0a-1f0b-4135-bafe-29c71dd64c27.mp4

Desktop
https://user-images.githubusercontent.com/16493223/205887953-14465d52-3c37-476f-aa9e-80e379e8aa9f.mp4

iOS
This video has been compressed, it may not work on browsers, download it first and use a video player.
https://user-images.githubusercontent.com/16493223/205889210-0cb41521-6e5d-42f7-aa34-ec5da4015ed9.mp4

Android
This video has been compressed, it may not work on browsers, download it first and use a video player.
https://user-images.githubusercontent.com/16493223/205889556-6988514e-3cfd-4fe8-8428-4fcde7062559.mp4

I have read the CLA Document and I hereby sign the CLA

@s77rt, please add the screenshots for all platforms.

@thesahindia Updated

Hey @s77rt ! Thanks for the PR. I just updated the Fixed issues section here to mark the issue as partially fixed (by removing the $ in front of the issue link). It will be completely fixed when the new expensify-common version will be added to the App.
I'll test your PR asap. In the meantime, could you please fix the failed checks?

@cristipaval FIxed please accept to run the checks again...

These 3 cases are failing -
<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>

I think I found the root cause: *_*_*

We do apply italic rule first, so this will become: ***
Then we apply bold rule: *

The results is an invalid html and therefor we get a different value on the edit mode as htmlToMarkdownRules does not know how to handle such an invalid html

This issue seems to exists before this PR. Should we fix it? It may be fixed by checking if the surrounded text is a valid html, if it's do nothing, if not escape the text.
What do you think? to be fixed or this is an edge case and can be ignored?

cc @thesahindia @cristipaval ^

Setting this back to open and ready for review since I don't think we have to cover the failing cases on edit as explained above.

This issue seems to exists before this PR. Should we fix it? It may be fixed by checking if the surrounded text is a valid html, if it's do nothing, if not escape the text.

That makes sense to me. We should open a new issue for it. Given that it's an edge case maybe we can leave it as it is.

Reviewer Checklist

[x] I have verified the author checklist is complete (all boxes are checked off).
[x] I verified the correct issue is linked in the ### Fixed Issues section above
[x] I verified testing steps are clear and they cover the changes made in this PR

[x] I verified the steps for local testing are in the Tests section
[x] I verified the steps for Staging and/or Production testing are in the QA steps section
[x] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[x] I checked that screenshots or videos are included for tests on all platforms
[x] I included screenshots or videos for tests on all platforms
[x] I verified tests pass on all platforms & I tested again on:

[x] iOS / native
[x] Android / native
[x] iOS / Safari
[x] Android / Chrome
[x] MacOS / Chrome
[x] MacOS / Desktop

[x] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[x] I verified proper code patterns were followed (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product was added in all src/languages/* files
[x] I verified any copy / text that was added to the app is correct English and approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I verified that this PR follows the guidelines as stated in the Review Guidelines
[x] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG)

[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Web

Mobile Web - Chrome

Mobile Web - Safari

Desktop

iOS

Android

@cristipaval, by looking at the previous PRs I think the version needs to be updated by Expensify engineers.

Done ✅  --> https://github.com/Expensify/App/pull/13394


Looping through map function

Hi there!
The repeater in my case has a lots of elements. I don't want to repeat through all elements as my protractor spec timesout while looping through so many elements. How can I just restrict the loop to run only for 1st 10 elements of the repeater? I have tried many things but I am just not able to get this working. How to loop only through first 10 elements of a repeater when using map()?
Anticipating a prompt response.
Thanks.
Monalisa

Hi there!
Your question is better suited for StackOverflow or Gitter. Please ask a question there with the 'protractor' tag or post in the Gitter Channel to get help.
From the the getting help section of the README:

Please ask usage and debugging questions on StackOverflow (use the "protractor" tag) or in the Angular discussion group. (Please do not ask support questions here on Github.)

Thanks!


Fix feature flag of sgx_crypto_helper

In many places we simply import the sgx_crypto_helper like this:
sgx_crypto_helper = { default-features = false, version = "1.1.5", git = "https://github.com/apache/incubator-teaclave-sgx-sdk", tag = "v1.1.5"}

However, when this is compiled to sgx, we need to enable the "mesalock_sgx" feature otherwise there are some features missing.
This has not been noticed so far because the feature was leaked into the crates compilation 99% of the time, this only became apparent, when I started compiling crates standalone in the hunt of an std leak.

I think @mullefel has solved this in one of his PRs as a side-effect.


vite + react  plugin dont work

Hello, plugin dont work with vite + react. There is no sprite in dist after prod build, there is no sprite after dev build. Could you help pls with example please?

@slemvs Of course you could not see any sprite file (the bundled *.svg) in dist, they are all compiled to .js files.
After the js executed in browser, it will inject a big <svg> to <body>, and that is the sprite.

BTW I think this plugin is unrelated to react / vue, or ant other frameworks.

If you can not see any icon in your page, you can provide your source code (as simple as possible) through .zip file or a new repo.

Hi, indeed the sprite is not working in react-vite, but it was working in my old project
vite-pr.zip

@smoliymaryan89 I see you put all your icons into assets/sprite.svg, is is not encouraged. You should split it to multiple files: one file on icon.
// arrow.svg
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
   <path d="M5.333 14.667v2.667h16L14 24.667l1.893 1.893L26.453 16 15.893 5.44 14 7.333l7.333 7.333h-16z"/>
</svg>

// arrow-down
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
    <path stroke-width="7.111" d="m3.556 3.556 21.333 21.333L46.222 3.556"/>
</svg>

This should be more maintainable.
If you prefer to manual maintenance all your icon in one file, I think you probably do not need this plugin: What you need is just embedding this file to html, you can use https://github.com/vbenjs/vite-plugin-html or some other way.

@meowtec  thanks for the answer, I just know that a sprite is when you keep all the icons in one file and get them by id

@meowtec thanks for the answer, in my understanding sprite is when you keep all the icons in one file and get them by id

This is what vite-plugin-svg-sprite does for you

hi there! @meowtec got a question related to this issue, i'm using a Remix app, which has SSR embedded, i'm getting a ton of hydration errors and the icons are flashing, at a first start the icons are shown correctly, but then all turns white and they disappear. Did some lookup in all my svg files and did't find anything broken but a few unclosed tags, not a big deal.

hi there! @meowtec got a question related to this issue, i'm using a Remix app, which has SSR embedded, i'm getting a ton of hydration errors and the icons are flashing, at a first start the icons are shown correctly, but then all turns white and they disappear. Did some lookup in all my svg files and did't find anything broken but a few unclosed tags, not a big deal.
Could you provide a minimal reproducible example?


Fixtures can be viewed

Fixture data and styling is still missing

@fxedel you can view the production state by clicking on View deployment above. The current stable state remains untouched until we merge.

What do you mean by data handling?


Added version number to fatsort

Website monitor.nixos.org reported it as out of date when in reality it
just had no version number.

Pushed along with a simplification of mine.


TS02-LoggingSystem

Coverage decreased (-0.2%) to 94.666% when pulling 54d7de247ba684bc4be646df9fc95e4cf07c8b67 on devel into 2de95083e5ae711c19057d348157e9a3c63dc96c on master.


Black screen with no photo as well as no thumb nail.

So...  was working great and then it wasn’t.  Lol.  I had a number of pics on an account that I display photos on tv and delete some and added others.  Has the name of the photo and 5he number of picture but black screen of death and no photo.  Uninstalled Roku app and reinstalled relinked 2 times and turn everything off and did it all again..  nothing worked help please have temp fix using different Roku app but I really like this one (photo viewer) that is..  would appreciate any help ideas from anyone.  Thank you in advance
Bev

Google Photos itself was having issues yesterday. It’s working today


Make double backprop support optional

This PR makes the double backprop support of Variable.backward() optional so that existing code does not suffer from increasing memory consumption and possible slow down. It replaces #3271 because this PR automatically stops creating computational graph in backward called from GradientMethod.update().

I think the name enable_backprop might be confusing, because backward() itself is backpropagation.
I don't have particularly good alternative, though.
Some random ideas:

enable_further_backprop
enable_double_backprop
enable_higher_order_backprop
enable_grad_backprop

OK, I will use enable_double_backprop.

LGTM!


Rich Nav - incorporate updates to RichNav's GitHub Action

We've updated the action to be dependent on .NET Core 3.1 instead of 2.2, and no longer require an explicit installation of said sdk.

@joaomoreno -- as mentioned last week, this incorporates the changes to remove the dependency on .NET Core 2.2 and the need for a separate task to perform the rich nav indexing task.


Quiet Mode

I've made a simple bash script to take my voice, transcribe it, feed that to a LLM and then output the result through Piper. The script itself works great, but I'm looking to clean up my command line while suing it. All the other tools I'm using have logging modes to suppress terminal output, or I can just send outputs to /dev/null. As far as I can tell based on the documentation Piper either doesn't have this option or it isn't documented in any way. Trying the same >/dev/null 2>&1 trick just ends up sending the audio, effectively muting Piper.
Any assistance would be great!

Sorry, should have included the output I'm looking ti suppress.
Playing raw data 'stdin' : Signed 16 bit Little Endian, Rate 22050 Hz, Mono
[2024-04-13 01:00:32.861] [piper] [info] Loaded voice in 0.510618259 second(s)
[2024-04-13 01:00:32.865] [piper] [info] Initialized piper
[2024-04-13 01:00:44.554] [piper] [info] Waiting for audio to finish playing...
[2024-04-13 01:00:58.918] [piper] [info] Real-time factor: 0.17720824387626397 (infer=3.0901903070000003 sec, audio=17.438185941043084 sec)
[2024-04-13 01:01:01.388] [piper] [info] Waiting for audio to finish playing...

The bash script I made looks like this.
#!/bin/sh

ffmpeg -y -f alsa -i default -acodec pcm_s16le -ac 1 -ar 44100 -t 4 -f wav ~/.cache/audio.wav >/dev/null 2>&1

vosk-transcriber -m ~/.config/speechmodels/vosk/vosk-model-small-en-us-0.15 -i ~/.cache/audio.wav -o ~/.cache/transcript.txt >/dev/null 2>&1

PROMPT=$(cat ~/.cache/transcript.txt)

tgpt -w "${PROMPT}" | ~/.config/speechmodels/piper/piper --model ~/.config/speechmodels/piper/en_GB-cori-high.onnx --output-raw | aplay -D "default" -r 22050 -f S16_LE -t raw -

Ahh, okay. I was trying this and it was still not working, but I realized it was because I downloaded the version linked in the readme for 64 bit desktop linux, which would seem to be an older version that does not include the quiet option. I went to the releases page, downloaded the appropriate version, and everything is working fine. Thanks so much for the help, though unless there is some specific reason to keep the old version there it might be worth updating those links. Marking as closed.


Doubling cluster procedure?

Hi there,
It seems that the wiki page for doubling cluster is empty.
Could you please provide a steps how to do it?
Also, is it possible to reduce cluster size with Priam?
Thanks!

Here are the steps:

Run Priam's doublling REST API and this will populate entries onto your database.
Bring up a new instance one by one and each of them will own a new row in Priam's database. Wait and verify each of those new nodes to make sure they are fully joined the ring before bringing in a new instance.


New features coming soon!

These are the features that I am currently working on! If you want other features then leave a comment.

[x] Adding audit log to the website

[ ] Adding a permission system

[ ] Making a registration system

Moved to https://github.com/Mohagames205/flowpanel/projects/1 . If you want to see a new feature, open an issue


generate favicon dir when upgrading.

currently there's the misleading error message saying it's not writeable.
When upgrading from stable to dev.

The folder is created automatically now.


install ginkgo but don't edit the go.mod file

If ginkgo binary is not found on the system when running the functest,
we were installing ginkgo using go get. The downside to that is that it
updates the go.mod and go.sum file. It is not the intention.
Go has install command which helps us to only install the binary without
updating go.mod and go.sum. This commit updates the hack script to only
install ginkgo.
Signed-off-by: Raghavendra Talur<EMAIL_ADDRESS>

cc @iamniting


Fixed bug in calculate_ip_detect_public_contents().

High Level Description
Previously, the calculate_ip_detect_public_contents() function would
throw away the value of calculate_ip_detect_contents() in the case where
ip_detect_public_filename is passed in. Now it doesn't.
Related Issues

DCOS_OSS-847 Cannot customize ip_detect_public_filename in config.yaml as expected.

Checklist for all PR's

[ ] Included a test which will fail if code is reverted but test is not. If there is no test please explain here: It's unclear how best to write a test for this at the moment. If someone gives me some guidance, I am happy to add one.
[x] Read the DC/OS contributing guidelines
[x] Followed relevant code rules Rules for Packages and Systemd

Checklist for component/package updates:
If you are changing components or packages in DC/OS (e.g. you are bumping the sha or ref of anything underneath packages), then in addition to the above please also include:

[ ] Change log from the last version integrated (this should be a link to commits for easy verification and review): example
[ ] Test Results: [link to CI job test results for component]
[ ] Code Coverage (if available): [link to code coverage report]

@mesosphere-mergebot bump-ee

@mesosphere-mergebot label [Ready For Review]

@orsenthil I can't seem to add reviewers to this myself.

@klueska - we usually at-mention them because we don't write privileges to this repo.
@branden  / @orsenthil are good reviews for this change.

@mesosphere-mergebot bump-ee

@mesosphere-mergebot bump-ee

I'm thinking we don't need to override non-required test jobs.


Setup Netflix Dynomite Manager sidecar + UI for Dynomite/Redis management similar to Cassandra Priam

https://github.com/Netflix/dynomite-manager/wiki

related to https://github.com/fluxcapacitor/pipeline/issues/56

defer for now.


Remove run_codegen.py from python example

Referencing issue: https://github.com/grpc/grpc.github.io/pull/386
Since we no longer reference run_codegen.py in the Quick Start or Basic tutorial for Python, remove it from the repository to avoid confusion.
-- To be honest, I'm not 100% sold on the removal of these files, since it's handy that you can write generating code in python directly, and I don't see the harm in leaving them there. But I figured that this PR would at least produce the discussion about whether they should still be there.
@nathanielmanistaatgoogle

Thanks for your pull request. The automated tests will run as soon as one of the admins verifies this change is ok for us to run on our infrastructure.

Thanks for your pull request. The automated tests will run as soon as one of the admins verifies this change is ok for us to run on our infrastructure.

Thanks for your pull request. The automated tests will run as soon as one of the admins verifies this change is ok for us to run on our infrastructure.

Thanks for your pull request. The automated tests will run as soon as one of the admins verifies this change is ok for us to run on our infrastructure.

Thanks for your pull request. The automated tests will run as soon as one of the admins verifies this change is ok for us to run on our infrastructure.

Thanks for your pull request. The automated tests will run as soon as one of the admins verifies this change is ok for us to run on our infrastructure.

Thanks for your pull request. The automated tests will run as soon as one of the admins verifies this change is ok for us to run on our infrastructure.

Thanks for your pull request. The automated tests will run as soon as one of the admins verifies this change is ok for us to run on our infrastructure.

I am certain about removing helloworld/run_codegen.py; I think we should leave the other two. The audience of the Tutorial content is "developers who have been through the quick start and still want to learn more" so I'm less bothered by there being content in the code that is not described by the text.

@nathanielmanistaatgoogle Updated to only remove from the helloworld example. PTAL.


SetIntervals proc: Wrap Delete/Insert in a Tran to avoid momentarily empty

When SQLTzLoader is running the [Intervals] table is momentarily empty for a given ZoneID which breaks the conversion functions. (Argument data type void type is invalid for argument 2 of dateadd function.)  Recommend wrap DELETE/INSERT in a transaction

Thanks.  I'll consider it further.


refactor: allow node to scan for bin folder

node will automically walk up the file tree looking for node_modules/.bin folders and checking if a given bin is located in that folder.
Caveat: the scan prefers the folder closest to where the script is being called. If a local folder has a version of wtc that differs from the project wide one, the local (package specific one) would take precedence.

I'm not sure why but I feel like at one point in time windows was unworkable without this direct reference. I've never direct referenced in any other repo I've made before this one so I'm wondering why we put that in if not some odd cross platform thing..

I'm not sure why but I feel like at one point in time windows was unworkable without this direct reference

Hmm, that could be, I tested this on Linux, not Windows.
This may be blocked until Windows CI is passing again on master to allow this to be verified.

FWIW the build on windows seems to pass with this change https://github.com/elmsln/lrnwebcomponents/pull/454/checks
That doesn't exclude the possibility that something could break on a non-CI windows environment, but it does seem to work on one windows machine :man_shrugging:

Thank you for the contribution, good enough for me :)


upgrade needed to our X509 related salt code

Type of Request
infra task
Infrastructure Environment
devicelab
What is happening?
See https://github.com/flutter/flutter/issues/142627 for context.
We need to update our code and move to the new X509 v2 modules in salt.
This issue is meant to track the work for the upgrades.
Steps to reproduce
Step 1:
Step 2:
..
Step n:
Expected results
I expect to see X when Y is finished.

cc @bdero @cbracken

This would be necessary if/when migrating to a later version of salt.

This would be necessary if/when migrating to a later version of salt.

That day is now upon us: https://github.com/flutter/flutter/issues/157963

I don't think we're being forced to upgrade this yet. Our minions are currently running 3006.3, and the migration guide says:

Salt Project is dropping all packages older than Salt v3006. This means that Salt 3005, 3004, etc. and older will no longer be available for installation.

For the linux bots we're on 3006.3, but the macos bots are on 3002.7:
flutter@flutter-devicelab-mac-41 ~ % salt-call --version
salt-call 3002.7

@christopherfujino noted that @kentnguyen99 is going to try running the provision script with a later version for macOS to see what failures arise.

@bdero, Can you let me know which Hostname of MacOS want to run provision script?

@bdero, Can you let me know which Hostname of MacOS want to run provision script?

Let's discuss this on https://github.com/flutter/flutter/issues/157963


Collaborate with KIWI?

I've recently stumbled over this project thanks to @Conan-Kudo and it has quite the overlap with KIWI: https://github.com/OSInside/kiwi/, which is a operating system image builder.
KIWI has support for a lot of different image types, from installation ISOs, over netboot images and VMs, to OCI containers. It is mostly used to build the images for the openSUSE und SLE operating systems in the open build service (https://build.opensuse.org), but it is also available on Fedora and CentOS.
I was wondering if you would be interested in collaborating with KIWI? KIWI is written in Python and exposes most of its functionality via a Python API, so you'd be able to reuse parts of it.
CC the main KIWI maintainers: @schaefi @davidcassany @Conan-Kudo

Thanks Dan
As a followup on the idea to combine our efforts; here would be a simple example how you could use the loop code from kiwi:
import logging

from kiwi.storage.loop_device import LoopDevice
from kiwi.filesystem import FileSystem

loop_provider = LoopDevice(
    '/tmp/mydata.ext4', 100
)
loop_provider.create()

filesystem = FileSystem(
    'ext4', loop_provider, '/tmp/__some_data'
)

filesystem.create_on_device('LABEL')
filesystem.sync_data()

For reference, the integration test build matrix:

https://build.opensuse.org/project/show/Virtualization:Appliances:Images:Testing_x86
https://build.opensuse.org/project/show/Virtualization:Appliances:Images:Testing_arm
(s390 and ppc in the loop)

If you see overlap in your goals it would be great to collaborate.
Thanks much

Hey!
Sorry that there isn't any high-level documentation yet. Here's the gist: osbuild tries to build images in a way that is

comprehensible: It should be easy to see what happened during each step of the image building process. This is why osbuild has stages that encapsulate some modification of a filesystem tree. Their only input is a JSON record that fully describes configuration. The idea is that it’s easy to inspect which files a stage added, removed or modified by diffing it with the tree from the previous stage.This allows us to find out easily what various tools we’re using to build images are actually doing.
reproducible: While we probably won’t get to bit-by-bit reproducibility for a long time to come, our aim is for a pipeline to specify the build process in such detail that the same pipeline will always produce a functionally equivalent image. We’re running stages and assemblers in a container that shares nothing with the host. This includes /dev, which is why we have that elaborate loopback API.
extendable: We think there’s a lot of room for experimentation in this space (immutable images, new kinds of package sources, keeping built tools off the target image, getting rid of rpm scriptlets, etc). We hope that osbuild enables this kind of experimentation by allowing to plug stages together in different ways or insert new ones into existing pipelines.

I have looked at kiwi before and found that it isn’t as focussed on isolation and encodes knowledge about the full build process in code. I agree that there’s quite some overlap, probably mostly in the tools and libraries we’re using. There’s definitely potential to discuss and collaborate :)

Thanks for the details. I agree to what you are saying. In kiwi we are focused on implementing full processes as tasks, e.g "build me this image" or "create me this new image root". The implementation of the process is based on api's e.g for handling filesystems, storage devices, image formats, bootloaders, etc etc.. which are all written as loosely coupled interface classes that can be used in a different scope. That's what I tried to express in the little code example above
Your approach and logic sounds interesting to me. However I think in order to implement your logic you would also need much of the core functionality to build an image. Things like dealing with loop devices, create and manage partition tables, setup bootloaders, handling of containers, etc etc will come to your hand and needs to be implemented. At that level there will be a lot of code duplication and I thought you might be interested in letting this done by an api class of kiwi.
I agree you would create a dependency to another project but maybe it is worth the effort as you could concentrate more on your logic being comprehensible/reproducible/extendable instead of adding all the ground work in addition.
I think there is a great chance to work together :)

From my perspective, I think it might be worth considering if we can look at breaking out common classes that would be reusable across both tools into a common module so that we're not rewriting everything, even if the final image construction philosophy is somewhat different.
KIWI's "tasks" feel a lot like osbuild's "stages" in that they are aspects of a build that are composable and can be used in theoretically any order.
As the developer for livecd-tools, I'd also like to see if there's something I can contribute to this to make better, more unified, and reliable tooling.

This is not really an issue, in the sense that we can do anything to fix it. More discussion is needed, but probably in a forum with higher bandwidth.

This is not really an issue, in the sense that we can do anything to fix it. More discussion is needed, but probably in a forum with higher bandwidth.

Do we have a forum with higher bandwidth? For kiwi, we have kiwi:matrix.org... You're free to join us there to discuss if you want...

@Conan-Kudo @schaefi @larskarlitski @dcermak Is there any following update for this purpose?

sorry for the late reply

KIWI's "tasks" feel a lot like osbuild's "stages" in that they are aspects of a build that are composable and can be used in theoretically any order.

tasks vs. stages have different responsibilities between the tools but yes from a design perspective I think osbuild shares the same ideas we have with kiwi. In the kiwi case the idea on the second attempt (kiwi-ng) was also to provide a python API such that everybody can use the parts of the implementation that matters for the project. So if there are projects that uses python and need parts of an imaging process, e.g filesystem creation, partition setup, loop management, etc etc the idea was that those people can just use "from kiwi import ..." and don't need to re-implement things again. From an API perspective this is documented here: https://osinside.github.io/kiwi/api.html
The implementation of the tasks in an image build process in kiwi are done using these interfaces. I guess on that API osbuild and kiwi already have some duplication. I can imagine that it will be not so easy from either side to perform any changes here because the best result you can get is the same as you had before ;) a working system
Maybe we can think of a collaboration for a common library that combines the best parts out of both projects into kind of a "libimage" project. Both, osbuild and kiwi could then in their own pace think about using/refactoring.
The biggest hurdle I see is as usual time and manpower. My time is currently very limited due to job tasks that keeps me busy. I won't have an issue to motivate myself though and would also enjoy to work together with the osbuild people
Just my2cents
Thanks


Is it maintained?

Last commit was 3 years ago. This means that there are many vulnerable NPM dependencies that needs to be updated.
I advise everyone to not use the official hosted instance at airform.io until the deps are updated as it probably has been hacked long ago.
Edit: it seems like this repo only contains the various front-end framework components. The service source code is not here, so the service is not open source. But given that the front-end has not been updated for 3 years, I don't think the backend have been.

Hi @notramo. I hope you are well.
Airform sends your encrypted HTML form data using the quality of the best security services. In other words, safe ship mode full time.
The Airform packages are optional tools. In fact, HTML forms only and nothing else. Build apps with standardized web technologies that will work for decades.
Besides, Airform is open source (MIT) and maintained by the community on GitHub. Please, help us keep this project open and inclusive.
Let me know if you have another question.
Have a nice day!

@cjpatoilo Where is the backend “open source” code? This repo does not contain it. See #48