Toolbar theme color corrections

Summary

Toolbar was originally released with incorrect colors for the bottom border in the Fusion theme and the Lowlight theme.
This resolves with correct colors.
Deployment Link

https://terra-core-toolbar-them-lpd3af.herokuapp.com/components/cerner-terra-core-docs/toolbar/toolbar

@chrismichalewicz
New values (will need to be updated in the requirements table):

Theme
What Changed
Previous
Changed to

Lowlight-theme
border-bottom-color
#181b8d
#181b1d

Fusion-theme
border-bottom-color
#64696c
#c8cacb

The requested requirement updates have been made.


feat: support SQLAlchemy 1.4

The first step in terms of supporting SQLAlchemy 1.4 is to prepare tests suite.
This PR splits the original test suite into two suites: 1.3 and 1.4. Though there were not much of a functionality changes between the versions, the tests suite changed significantly, thus, we need to support separate suites for the 1.3 and 1.4 versions for now.

@vi3k6i5, this better be processed in high priority, as it includes complex changes, which can affect (or be affected) by other changes.
It also requires some kokoro changes, as now there is no compliance_test session, but compliance_test_13 and compliance_test_14.

@vi3k6i5, all the checks passed except the old and unactual one (it should be dropped in the repo setting, I guess).
Can be merged now.

@vi3k6i5, please, merge it
I don't have admin access in the repo, so I can only merge it if all the checks passed. But we have this never executed compliance_tests, so I'm a bit helpless.

compliance_test_13 and compliance_test_14 are now enabled.


Shutdown animation

Is it possible to implement a global switch off of animation?
On slower computers lags occur during animation.
Thanks.

+1. need switch to turn off animation.

Thanks @isergey - Dupe of #240

As of the transition to javascript styling, the workaround in #240 does not work anymore. Is there an other way to disable animations?

Setting disableTouchRipple={true} appears to handle it for buttons at least.
e.g.: <FlatButton disableTouchRipple={true}>w00t</FlatButton>
note: only tested with FlatButton, but from grepping the source for that prop it looks like it should work with other buttons (including datepicker buttons), and switches.

disableTouchRipple={true} does not work with an icon in my experience.
Example sandbox:
https://codesandbox.io/s/3r82644prq
Inside CompareBar.js:
                                        {sku.length ? (
                                            <Badge
                                                data-sku={sku}
                                                badgeContent={<CancelIcon />}
                                                onClick={(event, checked) => {
                                                    props.dispatch(
                                                        actionRemoveProduct(sku)
                                                    );
                                                }}
                                            >
                                                <img
                                                    alt={sku}
                                                    src={product.image}
                                                    style={{
                                                        height: '50px',
                                                        width: '50px'
                                                    }}
                                                />
                                            </Badge>
                                        ) : (
                                            <AddBoxIcon
                                                disableTouchRipple={true}
                                                disableFocusRipple={true}
                                                style={{ fontSize: 50 }}
                                            />
                                        )}

Setting disableTouchRipple={true} appears to handle it for buttons at least.
e.g.: <FlatButton disableTouchRipple={true}>w00t</FlatButton>
note: only tested with FlatButton, but from grepping the source for that prop it looks like it should work with other buttons (including datepicker buttons), and switches.

This one is the best referenced answer after googling a lot of unsuccessfull answer, Thank you ( this is the cleanest way to do this, we can use css but I always search for the best solution provided )

As of Jan 3, 2021  seem to be working for almost all Material UI components.

As of Jan 3, 2021  seem to be working for almost all Material UI components.

Documented in https://next.material-ui.com/getting-started/faq/#how-can-i-disable-the-ripple-effect-globally

Documented in https://next.material-ui.com/getting-started/faq/#how-can-i-disable-the-ripple-effect-globally


Add beta tag to new methods & add setPassword description

Add beta tag to
getClothes
setClothes
isEntityInStreamRange
setPassword
Add description to
setPassword

The tags need to be alpha, not beta. They are still only in dev, not rc.

The tags need to be alpha, not beta. They are still only in dev, not rc.

Should be done

Should be done

Thanks for the contribution

Thanks for the contribution


Add Continuous Integration Checks GitHub workflow

Also:

added Maven wrapper to the project — https://maven.apache.org/wrapper/
bumped JUnit to the latest
bumped Maven plugins to the latest (except nexus-staging-maven-plugin and maven-release-plugin

Unfortunately we will not know if it worked until we merge it.
Only then you will see the result.


Hotfix/qj docker image add ca certificates

这个 PR 实现什么功能/修复什么问题:
改进：整理改进Dockerfile

增加make image 命令
统一Dockerfile的base layer为onecloud-base
统一增加ca-certificates

是否需要 backport 到之前的 release 分支:
NONE
/cc @zexi @yousong
/area util

Codecov Report

Merging #4312 into master will increase coverage by <.01%.
The diff coverage is n/a.

@@            Coverage Diff            @@
##           master   #4312      +/-   ##
=========================================
+ Coverage    6.85%   6.86%   +<.01%
=========================================
  Files         520     520
  Lines       88010   88008       -2
=========================================
+ Hits         6037    6039       +2
+ Misses      81471   81468       -3
+ Partials      502     501       -1

Flag
Coverage Δ

#aFlag
6.86% <ø> (ø)
:arrow_up:

Impacted Files
Coverage Δ

pkg/compute/models/cloudaccounts.go
0.87% <0%> (ø)
:arrow_up:

pkg/appsrv/response.go
69.23% <0%> (+3.07%)
:arrow_up:

Continue to review full report at Codecov.

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

/lgtm
/approve


feat: added read receipts functionality for notifications

This is temporary fast approach how we can achieve this. Later I would like to add Adapter wrapper and pass to adapter - connector which could be a localStorage, asynStorage or whatever based on abstract class getItem() & setItem()

@fsher fixed latest comments


Add conditions and proper cleanup to injection reconciler

Description
The dynakube conditions should show what happend in our operator.
We want to extend the conditions by the result of the injection reconciler.
In addition we can cleanup the created secrets when needed.
Jira Ticket
How can this be tested?

Run a dynakube with cloudnative and metrics ingest enabled => check if the 2 created conditions are there
Remove everathing from the dynakube => check if secrets in monitored namespaces are deleted

Codecov Report
Attention: Patch coverage is 71.21212% with 19 lines in your changes missing coverage. Please review.

Please upload report for BASE (main@b9f942f). Learn more about missing BASE report.

:exclamation: Current head 04c3357 differs from pull request most recent head b9fd9d0
Please upload reports for the commit b9fd9d0 to get more accurate results.

Files
Patch %
Lines

pkg/controllers/dynakube/injection/reconciler.go
64.28%
7 Missing and 3 partials :warning:

...jection/namespace/initgeneration/initgeneration.go
0.00%
6 Missing :warning:

pkg/util/kubeobjects/secret/secret.go
70.00%
2 Missing and 1 partial :warning:

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@           Coverage Diff           @@
##             main    #3274   +/-   ##
=======================================
  Coverage        ?   58.90%
=======================================
  Files           ?      326
  Lines           ?    18202
  Branches        ?        0
=======================================
  Hits            ?    10722
  Misses          ?     6279
  Partials        ?     1201

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Great,I have made ALVR  suport 6Dof VR，thank you so much!

Hei, @polygraphene
I have made ALVR suport 6Dof, and have a great experience. it is much better than Riftcat and Trinus.
My position tracker is nolo . and Hmd is Oculus Go.
Thank you so much, You are the greatest developer in the world!
Some small issue exist, I will try to solve that.

Mind to explain the steps for it?

@Tux0Topo  I‘v asked nolo for their controler driver and SDK，Alvr-client get hmd position and send hmd position to alvr driver. that will take effect.

hello, you can tell me how you run oculus go with nolo vr.

Nolo provide a SDK  that can run on android os,we can get nolo devcie data from it. Cnnect the nolo hmd tracker and Oculus GO with a usb cable.

so will this be in 1.4.1? When will this release?

Can you explain the steps clearly?

As far as I know, Nolo will publish the release At the beginning of August,may be earlier.

1.Get the nolo android sdk
2.In Alvr client, get Hmd position data using nolo sdk and send to Alvr server.
3.Register nolo controller driver to enable their controller


test: leverage module coverage

Description
Intended contents of PR:

Large additions to, and refactoring of, x/leverage/keeper/keeper_test.go and separation into multiple files
Type TestKeeper in internal_test.go which can be used to call un-exported methods on leverage keeper during tests, allowing for coverage of some hard-to-reach error branches.
Multiple method names of leverage keeper will be changed to lowercase, so that they are not exposed anymore outside of testing.

Author Checklist
All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.
I have...

[x] included the correct type prefix in the PR title
[x] added appropriate labels to the PR
[ ] added ! to the type prefix if API or client breaking change
[x] targeted the correct branch (see PR Targeting)
[ ] provided a link to the relevant issue or specification
[ ] added a changelog entry to CHANGELOG.md
[ ] included comments for documenting Go code
[ ] updated the relevant documentation or specification
[ ] reviewed "Files changed" and left comments if necessary
[ ] confirmed all CI checks have passed

Reviewers Checklist
All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.
I have...

[ ] confirmed the correct type prefix in the PR title
[ ] confirmed ! in the type prefix if API or client breaking change
[ ] confirmed all author checklist items have been addressed
[ ] reviewed state machine logic
[ ] reviewed API design and naming
[ ] reviewed documentation is accurate
[ ] reviewed tests and test coverage
[ ] manually tested (if applicable)

Codecov Report

Merging #499 (c00e9e8) into main (8369bfd) will increase coverage by 0.04%.
The diff coverage is 21.27%.

@@            Coverage Diff             @@
##             main     #499      +/-   ##
==========================================
+ Coverage   48.38%   48.43%   +0.04%
==========================================
  Files          63       63
  Lines        7824     7849      +25
==========================================
+ Hits         3786     3802      +16
- Misses       3790     3795       +5
- Partials      248      252       +4

Impacted Files
Coverage Δ

x/leverage/gov_handler.go
62.50% <0.00%> (-17.50%)
:arrow_down:

x/leverage/keeper/collateral.go
63.33% <0.00%> (-7.04%)
:arrow_down:

x/leverage/keeper/genesis.go
2.17% <0.00%> (-0.02%)
:arrow_down:

x/leverage/keeper/interest.go
82.08% <0.00%> (ø)

x/leverage/keeper/iter.go
59.49% <0.00%> (-1.66%)
:arrow_down:

x/leverage/keeper/keeper.go
49.73% <0.00%> (-0.14%)
:arrow_down:

x/leverage/keeper/reserves.go
75.94% <33.33%> (ø)

x/leverage/keeper/token.go
60.20% <33.33%> (-2.17%)
:arrow_down:

x/leverage/keeper/borrows.go
83.13% <40.00%> (+9.44%)
:arrow_up:

x/leverage/keeper/store.go
70.11% <42.85%> (-1.49%)
:arrow_down:

... and 7 more

To avoid clutter, I'm marking this PR as R4R at the current size.
It contains some new borrow tests, the leverage TestKeeper , some extra safeguards against invalid input on any function containing store.Set, and miscellaneous housekeeping.
Next PR or two will be more of the same: leverage tests and housekeeping.


Fix #516: Copy build files instead of move

Fix #516: Copy build files instead of move
@ia3andy Windows is really twitchy with file attributes and NIO etc. I have been burned by this before so I chose to make it a copy instead of a Move and not my Windows 11 builds are working again.

Also fixed one spot in the docs that said "Web Bundler" instead of "Quinoa"

@melloware I think we should keep moving files on Unix, also, if you copy you need to delete the source dir after copying (or before building) else you might have problem on the next build.

I definitely do not have any processes open.  Let me try and narrow down what has the process open.

OK I did a fresh reboot today and the error is not happening. Let me monitor it for a bit.


ReflectionTypeLoadException: Exception of type 'System.Reflection.ReflectionTypeLoadException' was thrown.

Describe the bug
I wan't to build an App for robot programming for HoloLens 2. To load my robot model, I have to add RosBridgeClient to my Unity3D Scene.
After adding Rossharp I get the following error message:
ReflectionTypeLoadException: Exception of type 'System.Reflection.ReflectionTypeLoadException' was thrown.
System.Reflection.Assembly.GetTypes () (at <567df3e0919241ba98db88bec4c6696f>:0)
Microsoft.MixedReality.Toolkit.Editor.SceneInfoUtils.RefreshCachedTypes () (at Assets/MRTK/Core/Inspectors/PropertyDrawers/SceneInfoUtils.cs:249)
Microsoft.MixedReality.Toolkit.Editor.SceneInfoUtils.InitializeOnLoad () (at Assets/MRTK/Core/Inspectors/PropertyDrawers/SceneInfoUtils.cs:229)
To reproduce
Steps to reproduce the behavior:

Create a new Unity3D Projekt
Add the MRTK
Clone https://github.com/siemens/ros-sharp and copy rossharp (ros-sharp/Unity3D/Assets/) into your projects assets
See error

Expected behavior
No ReflectionTypeLoadException: Exception of type 'System.Reflection.ReflectionTypeLoadException' error.
Screenshots

Your setup (please complete the following information)

Unity Version 2019.2.15f1
MRTK Version v2.4.0

Target platform (please complete the following information)

HoloLens 2

Additional context

It looks like there's a specific UWP version at https://github.com/EricVoll/ros-sharp#notes-on-this-fork, which you might need to use for HL2. I wonder if that also fixes this issue?

So this is one of the only places we have left where we use GetTypes() instead of GetLoadableTypes()

I've got a patch for this one!


Create new vcpkg

Create new vcpkg packages that references the monorepo as a dependency.

This will need to wait until we cut a release of -cpp. At that time I need to create a single PR to vcpkg that:

Updates g-c-cpp to the new version, make sure it installs the -common library (it should)
Makes g-c-cpp-common an empty package that just depends on g-c-cpp, this protects any customers that had vcpkg install google-cloud-cpp-common in their scripts.
Makes g-c-cpp-spanner depend on g-c-cpp.

Was this done? Or does it need to wait for the June release?

I needs to wait for the June release, as soon as we update the -common or -cpp packages we will break the -spanner package. In June I will prepare a PR to update all 3 packages at the same time.

Done.


Private API attachments

Currently only added for Mac OS 10 because that's all the OS's I have access to

Just now added ability to send multipart attachments + effects with attachments


Create New Podcasts Connect Account

Mo--I think you should create a Podcasts Connect account so you understand how it works.

Done


Added Determinant Calculator

This calculator can find the determinant for valid matrices of order 1 to 10.
Closes #226

@Spandan-Bhattacharya Please attach some screenshots or screen recording or deployed link from your branch.

how it looks in the home page

how it looks upon loading the page

After we give values and press submit

After changing the matrix order to 4

https://spandan-bhattacharya.github.io/fix-your-nums/
Deployed Link


gdscript syntax highlighter colors some typed variable names with the same color as the type

Tested versions
bb1006b2acc00aae09d906fed65396508649502c  (master branch from today.) I've noticed this since 4.3 dev began.
System information
Windows 10
Issue description
If strong typing is used in a list of parameters in a function definition, variable names past the first will be colored with the same color as the types.

In this screenshot, the coloration of another_argument by the syntax highlighter seems incorrect. In past versions of Godot, another_argument would have been the same color as an_argument.
Steps to reproduce
Create a gdscript function which accepts two or more parameters which are strongly typed.
Minimal reproduction project (MRP)
func my_func(an_argument:int, another_argument:Vector2):
	pass

Probably related to https://github.com/godotengine/godot/issues/85812 as well. Fixed by the same PR.


Unable to access Files Shares: Network timeout error: connect ETIMEDOUT

Storage Explorer Version: 1.13.1
Build Number: 20200515.1
Platform/OS:  Windows 10
Architecture: ia32
Regression From:  Worked in the same version
Bug Description
I am unable to access any of the File Shares folders in any of my Storage Accounts. When I click on a File Shares folder it attempts to load the child resources, then an error message appears.
Then I receive an error that states:
Unable to retrieve child resources.
Details:
Network timeout error: connect ETIMEDOUT
(Excluding because I am not too sure how sensitive this information is)
Steps to Reproduce

Select a Subscription
Select a Storage Account
Select a File Share within that Storage Account
--> Attempts to load child resources then errors

Expected Experience
Access to folders and data within my File Share
Actual Experience
Error message.

Do you have any firewalls setup with your file shares? Are you able to access other resource types, likes blobs, queues, or tables?

Closing due to lack of response from original issue opener. Please open a new issue if you are continuing to have problems.


GitHub Billing Exporter Refactoring

Implement usage metrics for individual workflows.
Divide application into smaller chunks

Hi @borisputerka ,
if you want to i would prepare this code to be mergable into your repository.
Otherwise i would maintain the application in my fork.
Please let me know if you would like these changes and eventually merge them and what changes should also be done.
Best regards,
raynigon


Network disconnects after a few minutes of normal usage

Windows Version
Microsoft Windows [Version 10.0.22631.3374]
WSL Version
<IP_ADDRESS>
Are you using WSL 1 or WSL 2?

[X] WSL 2
[ ] WSL 1

Kernel Version
<IP_ADDRESS>
Distro Version
Ubuntu 20.04 LTS
Other Software
WSL version: <IP_ADDRESS>
Kernel version: <IP_ADDRESS>-2
WSLg vesion: 1.0.60
MSRDC version: 1.2.5105
Direct3D version: 1.611.1-81528511
DXCore version: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows version: 10.0.22631.3374
My laptop has an ARM64-based CPU (Snapdragon 8cx Gen 2), all the configurations related to WSL has been set to default, while Ubuntu 20.04 distro is also a fresh copy downloaded from Microsoft store.
Repro Steps

Launch WSL2 Ubuntu 20.04
Run ping www.google.com
Wait and monitor network conditions

Expected Behavior
Ping produces continuous positive feedbacks while internet connection is good, such as 64 bytes from xxx.net (xxx.xxx.xxx.xxx): icmp_seq=154 ttl=117 time=3.53 ms
Actual Behavior
Ping reports sendmsg: Network is unreachable after a few minutes of running. While Windows host can use the internet as casual and internet connection can be confirmed as robust

Diagnostic Logs
WslNetworkingLogs-2024-03-28_01-29-37.zip
The above network diagnostic file should contain the faulty period where network inside ubuntu gets a problem. If there are any further investigations, additional log or descriptions that I need to provide, please let me know
Some updates to diag logs
I have added a second copy of network diagnostic file and a regular diagnostic file for debugging needs:
WslNetworkingLogs-2024-03-28_02-12-37.zip
WslLogs-2024-03-28_02-22-55.zip

Some updates to diag logs
I have added a second copy of network diagnostic file and a regular diagnostic file for debugging needs:
WslNetworkingLogs-2024-03-28_02-12-37.zip
WslLogs-2024-03-28_02-22-55.zip

Seems like this issue only occurs while there are multiple distros being installed (ip conflicts maybe?), even through only one single instance is running at the same time. I discovered it by unregistering other distros and keep only my daily driver ubuntu, running ping for 30 minutes is just fine without any network issues. Wonder if this problem only consists in arm64, since i never encounter similar ones on x64

hi @cxlanyagege. thanks for attaching the logs
from the logs, the Linux eth0 interface has an IPv4 address assigned before the repro, but the address is no longer present after the repro, leading to loss of Internet connectivity. This IP address is configured only when WSL starts and not changed afterwards.
This suggests something in Linux might be deleting the IP.
the logs indicate a tool called "Cloud-init v. 23.4.4-0ubuntu0~20.04.1" is running a "network service" in Linux and configuring networking - the tool could be the one deleting the IP. is the cloud-init tool something you are using? is it possible to uninstall it and see if the problem goes away?
we have also seen compat issues with the Linux Network Manager service. this might not be the issue you are hitting, but you can also try running the command below:
sudo systemctl disable network-manager.service

Thanks for checking my log @CatalinFetoiu
Actually, I didn't really remember when I had installed cloud-init. I download this fresh copy of ubuntu 20.04 from msstore hours before experiencing this issue, and all I had done is sudo apt update && sudo apt upgrade -y, then install ros noetic following the instructions on their official website. Maybe it comes with ros? Or preinstalled in the package
Anyway, the issue itself seems to be resolved after removing cloud-init, use it for about a day now and nothing abnormal has happened :)


Fix empty line

Ensure there is only 1 empty line between header and summary.

Draft because this needs a test, but the respective class was added here, so I am waiting to merge it first: https://github.com/microsoft/testfx/pull/3592/files#diff-0f65e83c9c9d402e30f4b60bbf4eeeaf5417a1b4b71b1102b4d961063662fef1


@ #2 | should add kubernetes-stack-cookbook

connect #2

@duc4nh see my comment here https://github.com/acme101/dev-setup/issues/2#issuecomment-322971790

json config updated

@duc4nh please update to use teracy/chefdk image instead of chef/chefdk

updated to use teracy/chefdk


Fix Content not showing w/ Angular 1.2+ | Long time getting Content

Hi everyone,
This Pull Request is about the bug a lot of people had (and so I did) with the new versions of AngularJS (from 1.2). The users of the directive couldn't get their contents when the response containing the information took too long to arrive.
The addition is one $watch allowing to prepare the instance of tinymce.
Hope this fix can help ! :smiley:
Maxoumime
PS: Sorry for my English, hope it wasn't too awful. :sweat_smile:

If you are still having issues, please post a Plunker or FIddle re-creating the issue.
Will close this in a few days if I haven't heard back.

Closing due to inactivity and no Plunker. Please ask any questions you may have using the angular-ui-tinymce tag on StackOverflow.
If you have any bugs please create a Plunker reproducing and open a new issue.


Does Swarm support nested objects and how ?

I would like to know if there is some any way to support nested objects.

Well by nested objects you mean what exactly ? As far I have understood you could create the Syncable Model for example Item and which is part of the ItemList objectType for the Vector or Set ?

In the 0.3 it is possible to manually keep object ids as strings and fetch referenced objects. Also, Model may have nested JSON values, but those will not be syncables (i.e. last write wins). Another possibility is to use collections that load all of the members at once.
Of course, it is way more convenient to have syncable objects graphs that load (semi) automatically so the developer does not bother with manual fetching and stuff. That comes in 0.4 with Syncable.Ref.

JSON nested Last-Write-Wins objects is another option...


Fix backup script

Starting in November 2015, the media tarball became too big and is rejected by Box's email relays.
Switch to an API-based solution, possibly with the password grant.

Removed email-based backup script in b288937e0708dd340682d24cb1e34f609f0578fa

Consider using the backup script almost as is and splitting the tar archive into multiple 30MB pieces using splittar

Filtering out the cache directory of thumbnails reduces the size of the tarball to 11MB. Email is still a feasible solution.
https://gist.github.com/lopopolo/460911697583f3037c2ecb0ce8ec4e8f#file-temp_django_backup-py-L58-61

hyperbola3 doesn't have an MTA installed. Rather than configure one, this script was converted to send emails via GMail's SMTP server. To do this, a gmail account was created for hyperbola backups.
See e53c92a.


Start of week support

Ability to determine which day is the start of the week

@cchestnut91 you'll want to work on the snippet involved for determining this over in the main project since we can't run this one on its own (unless you know of a way to).
Once determined, you can add a method to this module and add it to the exported dictionary

This has inconsistent support on iOS and will not be incorporated


Bootstrap not setup

Currently including bootstrap conflicts with the existing css - thus, overriding the styles and fonts.
Move existing css into bootstrap 4.

setup completed.


Compatibility with CentOS?

I've installed sensu-plugins-logs as a Sensu Go asset via Bonsai, and I've hit a bit of a snag with running checks on our CentOS systems, namely that they don't pick up the asset.
It looks like this is because the filter expression in the asset definition is checking entity.system.platform for the value 'rhel', but this key contains 'centos' on the systems in question. I've noticed that most of the other plugins we're using are checking entity.system.platform_family, which does contain 'rhel'.
Is this by design because of a compatibility issue, or is this something that could potentially be changed?
Versions of things: CentOS 7.7, Sensu Go 5.18.1, sensu-plugins-logs 4.0.0

The fix for using platform_family has already been made to the repo, we've just not rolled a new release/bonsai asset.  We will try to address that soon.

Awesome, thanks!


hard to move connected areas

If there are two connected areas, it is extremely hard to move them to a new location. The problem is that there is no way to select both areas at the same time, and if you select one area, moving it causes the other area to change shape. Either of the following could solve this:

allow selecting multiple areas at the same time
don't move the original area when dragging an area connected to it.

I'll try to find an example when I have time.

You should be able to shift-click on areas to select multiple at a time.  While holding down shift, clicking will add or remove the feature from the selection group.

Oh, I didn't know that. Thanks!


update fabricQc and lot color inspection

Coverage decreased (-0.02%) to 65.237% when pulling ddff5a2bec7ace09a9fffed06127a379c370ca1a on leslieaula:dev into bfcc2aaff71264e5fef8616945a4d98be3639a84 on danliris:dev.


Horizontal Pod Autoscaler doc issue

Near the bottom the page
https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/

To allow a final drop of 5 pods, another policy can be added and a selection strategy of minimum:

behavior:
  scaleDown:
    policies:
    - type: Percent
      value: 10
      periodSeconds: 60
    - type: Pods
      value: 5
      periodSeconds: 60
    selectPolicy: Max

Shouldn't the text replace 'minimum' with 'maximum', as specified by the yaml block?

/kind bug
/sig autoscaling
/language en
/priority backlog

/triage accepted

Problem wording is gone
/close


Use arrays instead of uint256s for traitModifiers, numericTraits, modifiedNumericTraits, slotPositions

Since we're on Matic we don't need to worry as much about gas optimization, so let's change these uint256s back into arrays for code legibility.

This was done.  Commit here: 50b32ad61d96ed1758b7dd3d106149b0cd476384

Great!


APT whitelist request for libsystemd-daemon-dev in TRUSTY

from #3882 now that #3590 is merged

in #4080


fix: Strip deprecation warning

Given the circular nature of all this, I am limiting the should use to documentation only.

This is a problem that has to be fixed upstream as this should be deprecated but realistically can't until webpack stops delegating to json-loader.
Closes #57

Maybe there could also be some loader option like ?suppressDeprecationWarning that webpack could pass.


[4.1][Relationship-fix] remove page loader, add button loading.

As we discussed, removed the full page loader in exchange for a button loading state.
Changed FA icons to LA icons.

Excellent! Zero comments - looks and works great. Good job @pxpm , I know it's a small thing but it's something that was bugging me, it didn't look professional 😁


Catch errors caused by expected-but-missing functions in user's code

In a typical exercise gist, the test code anticipates the existence of certain methods or classes in the user's code. If those are removed, the exercise can't run.
We need to communicate that state to the user in a way that's easily understandable. Right now, however, users see a compiler error referencing the call site, which would (from their perspective) be hidden in the test code tab.
It may not be possible to do this with cleverly test code snippets, though we ought to be able to do it with an additional call to the analyzer on the server asking about a particular function or class.

As part of the new, simplified version of the DartPad frontend, the exercise functionality this was related to was removed.
If anyone would like to see similar functionality brought back, please check out https://github.com/dart-lang/dart-pad/issues/2702 or open a new issue. Thanks so much!


Network unit

Are network units on lens using bytes or bits?

Bytes, we try and display all memory related using the multiple byte IEC binary format (IEC 60027-2). So bytes. I guess we should add B so it is not confusing.

Actually, I don't know if we can clear that up. It is whatever unit your Prometheus configuration is using.

We know that they are bytes because that is what the Prometheus queries state


UPDATION IN README FILE RREQUIRED

Hello @vivekvardhan2810
the current readme file lacks proper structure and does not contain the following :
-featured in section
-table of contents
-contributors
-forkers and stargazers section
-back to top button
kindly assign me the issue under gssoc-extd and hacktoberfest labels so my work counts under these events
Thankyou .

@soham0028 assigning this issue to you.
Make sure to complete this within a day.

will revert back asap thankyouu


copy the terraclimate recipe

Nothing to see here yet. This is just a terraclimate recipe copy.
Ping @rsignell-usgs
Closes #10

@ocefpaf and @rsignell-usgs if you want, you can merge master and work on this. The structure of the recipe/pipeline.py has changed a bit: see the new one in example/.
Some early docs are at https://pangeo-forge.readthedocs.io/en/latest/contribute.html.
We're still figuring a few things out (parametrization, testing), but for now if you're able to limit the job to a subset of variables / timespan.

Thanks @TomAugspurger! I'll try to get back to this ASAP. Lately I've been only putting out fires but soon I'll get some free time to work on fun stuff.

Let's close this one and re-do it with once the refactor lands.

Let's close this one and re-do it with once the refactor lands.


Change requests instead of direct changes

When detecting any potential breakage iD does only have two options currently:

prevent the contribution
accept the breakage

Both options are quite bad. In such cases iD should have a third option to store a change request without affecting the data which is considered as the current state of the database. The change request should be reviewed/improved by a more advanced user before applying it.
In order to reduce review requirements iD should separate independent, non-breaking parts of the changes into a direct changeset.
This issue is a hard one, but we should think about it, because the benefit could be big.
For example this can be a solution for the large feature issue #3681 .

Wouldn't other things need to be built into OSM to make this work?
If I'm understanding your suggestion, instead of "Save my changes to OSM" you want to add an option like "Submit these changes into a review queue".   Presumably OSM would have people who watch over this review queue and approve things quickly before the changes get stale and introduce version conflicts.

Presumably OSM would have people who watch over this review queue and approve things quickly before the changes get stale and introduce version conflicts.

This seems to be the simplest variant. We would need a database service for the review queue, but I don't see a requirement to integrate it into OSM. Loading from the queue server into a new JOSM Layer seems to be easy, just loading from Overpass Turbo. I don't believe in iD as a review and rework tool, especially due to focussing on changes including some breakage. An open question would be how to save the reviewed changeset. In case of saving to OSM directly from JOSM, it would be considered as a contribution of the reviewer. Maybe a little Plugin can change this behavior. Maybe the changes can be passed through the queue server, but occuring conflicts can be an issue in this case.

Second approch:

Separate critical and non-critical changes into different changesets and mark the critical one (use changeset tag) or the contained objects (use normal tag) as to be reviewed. The method using a changeset tag seems to be the prefered one, in case this doesn't generate major problems.
Set a slave database up, which is updated from the main database, but the critical changesets are not applied before review or a timeout. This will likely require to delay some dependent changesets too.
The breakage brought into the main database would be mostly filtered out this way, provided we have a sufficiently active community reviewing the changes. The slave database has to feed most OSM applications, while OSM maintainace tools are likely to be feed more directly from the main database.
For the review I see two different methods depending on how we mark the critical changes:

Using changeset tags the review process can be based on maproulette. The review status has also be tracked by maproulette and this status should be provided to the slave database update process, because we can't rewrite the changeset tag later, at least not without API change. Maybe adding a changeset comment with some specific content can also be used to indicate that the review has been done.
Using normal tags on the objects the review process can scheduled based on Overpass Turbo. A completed review has to be acknoledged by clearing the tags marking the objects as to be reviewed, which would be required anyway.

Ok, If you can get some momentum from the OSM community behind this, I'll implement it.  Until then, it's not clear that anybody actually wants this, so let's leave it closed.


net: config: fix checking for protocols being ready

Main issue this PR is solving is the 3s timeout that happens (but should not) when waiting in network initialization code for all services to be ready. Fixing it alone surfaced other issues within the codebase (https://app.shippable.com/github/zephyrproject-rtos/zephyr/runs/72975/5/console). Those unit tests failures were caused by improper project configuration (missing NET_CONFIG_NEED_IPV6) and worked so far only because of "3s timeout before launching application code" that this PR tries to solve. Last issue that has been discovered is that application code waits for configured number of network services, instead of exact types of services that user requested.
So here is the order of commits and reason behind it:

add missing NET_CONFIG_NEED_IPV6 in unit tests (so once 3s timeout is gone, unit tests still pass),
disable NET_IPV4 if not required (so unit test code will wait only for IPv6 only, instead of IPv4 if that is ready first - also needed when 3s timeout is gone),
fix 3s timeout, by checking how many services are to initialized yet when k_sem_take(&waiter) == 0,
wait for selected type of services instead of the number of them (so when IPv4 is configured first, but IPv6 is the one application code needs, then still wait for IPv6 setup to be completed).

Fixes: #25358

@jukkar This PR has grown a bit, basically because new issues have surfaced when solving #25358.


EL-704 temp CCQ UAT branch

https://dsdmoj.atlassian.net/browse/EL-704

Closing now EL-704 is merged


LookupSubjects API

The Lookup Watch API Proposal includes the addition of the "reachability" APIs, which allow a caller to query the data-driven shape of the permissions graph.
One of the APIs proposed is LookupSubjects which would act as a filtered, streaming form of ExpandPermission, but across an entire object type:
message LookupSubjectsRequest {
    Consistency consistency = 1;

    ObjectReference resource = 2;
    string optional_permission = 3;

    string optional_subject_type = 4;
    string optional_subject_relation = 5;
}

message LookupSubjectsResponse {
    Relationship found_relationship = 1;
    ZedToken found_at = 2;
}

All fields on the request besides consistency and resource would be optional, in which case all subjects (of all kinds) would be find for the specified resource.
Open Questions

Should the LookupSubjectsResponse contain the path of all relations/permissions that were traversed to reach a subject? This could be very useful in building permissions panels or auditing systems.
Should optional_subject_type (and relation) be repeated, to allow filtering to a set of allowed types, instead of a single type?
Should optional_permission be repeated, to allow filtering to a set of allowed permissions/relations?

Should the LookupSubjectsResponse contain the path of all relations/permissions that were traversed to reach a subject? This could be very useful in building permissions panels or auditing systems.

I think the client should be able to selectively choose to return the path of all relations/permissions. I like the idea of using a FieldMask here to allow the client to specify to include it or not.

Should optional_subject_type (and relation) be repeated, to allow filtering to a set of allowed types, instead of a single type?

I think so, yeah. This just gives the client more flexibility to be selective about what they want to lookup. This could be really useful if the client only cares about certain subject types or relations. It also doesn't restrict the ability to lookup all, we'll just want to make sure we account for that case. To me it makes sense that if you omit this repeated field then that indicates you want to lookup all subjects for any subject type (and relation).

Should optional_permission be repeated, to allow filtering to a set of allowed permissions/relations?

Yes, I believe this would be a good feature. A lot of permission aware external indexes only need to know about 'view' permission. Common cases for this include Reporting or Search features of a platform. Allowing the client to selectively choose what permission/relations they want to lookup the subjects for would be very valuable for that use case. It also doesn't restrict the user from being more generic instead of more specific, so in that regard it's more flexible IMO. If they don't provide a list of optional permissions then we just lookup assuming all permissions.

Updated proposal:
message LookupSubjectsRequest {
    Consistency consistency = 1;

    ObjectReference resource = 2;

    repeated string optional_permission = 3;
    repeated SubjectAndRelation optional_subject = 4;
}

message SubjectAndRelation {
   string subject_type = 1;
   string optional_subject_relation = 2;
}

message PathEntry {
  ObjectReference expanded_object = 1;
  string expanded_relation = 2;
}

message LookupSubjectsResponse {
    Relationship relationship = 1;
    repeated PathEntry reachability_path_entries = 2;
    ZedToken found_at = 3;
}

@josephschorr do we want the optional_permission and optional_subject to be plural?
message LookupSubjectsRequest {
    Consistency consistency = 1;

    ObjectReference resource = 2;

    repeated string optional_permissions = 3;
    repeated SubjectAndRelation optional_subjects = 4;
}

Yes, good point. Updated

Plan after a recent discussion:

LookupSubjects becomes the exact inverse of LookupResources in that it

Returns all of the subjects that match the subject type of the parent resource
Contains no context of how the subject was found

implementation details:

Expand dispatch becomes a streaming API
Expand dispatch gets a subject filter for only returning relevant items
LookupSubjects uses recursive streaming expand dispatch internally to compute subject set

Done in https://github.com/authzed/spicedb/pull/770


(Documentation) Forgot to add ’client.run(data_from_websocket=True)’

^^

@TimMcCool pls fix this otherwise people will get confused

data_from_websocket is True by default

Just to let you know that when this scratch cloud crisis stops its best to add it

added some info about it to the bottom of this section: https://github.com/TimMcCool/scratchattach/wiki/Cloud-Requests#advanced-features


Fix CryptoCoinInfo constructor.

This error can be triggered when network is null (because it is optional) and will throw a NullPointerException.
Also can happen with type, too.

Thank you so much for putting this together. Please consider merging this soon!

LGTM, thanks. I'll publish a 1.7.4 release with this change.


The suggested manual actions don't work in all cases

Specifically git worktree add .worktree/<branchname> <target> can fail, because the target can already be checked out in another worktree. That also fails when the main worktree has the branch checked out. The reason for this is that git does not allow you to have the same branch checked out twice.
The suggested manual actions to cherry-pick the commits should work in all cases.

We can work around the rule that a branch cannot be checked out twice, by passing in the -d flag to checkout the branch in DETACHED mode.

Example: https://github.com/zeebe-io/zeebe-cluster-testbench/pull/355


Add minimize-to-tray option / support 'running in background'

Description
I would like to be able to Click the X and have it minimize to the system tray
Specifications

Version of Nativefier (run $ nativefier --version): v7.0.1
Version of Node.js (run $ node --version): v6.9.2
OS: Win 10
Architecture X64

Any ideas on this ?

You can easily implement it by yourself.
just edit the app/src/components/mainWindow/mainWindow.js script so 'close' event will minimize the app instead of closing it:
mainWindow.webContents.minimize()

mainWindow.webContents.minimize()
This return TypeError, mainWindow.webContents.minimize is not a function
Still not sure how to hide create a tray icon and hide to tray..

you are right, my mistake, it is mainWindow.minimize().
if you want to minimize to tray (next to windows clock) here is an example:
https://github.com/hokein/electron-sample-apps/blob/master/tray/main.js

@ronjouch Any ETA as to when can this be added ?

"Any ETA as to when can this be added ?"

@leovarmak none! We (maintainers) are resuming maintenance since the original maintainer no longer has time for that. There's lots to do and we're far away from new features, as currently focusing on issue triaging, doing a big round of deps updates & testing, existing PRs, simplifying the build process, and bugfixes.
But the feature is clear and APIs are here, so anyone with the will and time for that can try giving it a stab, PRs will be much welcome :)

@ronjouch I haven't tested this but the tray option is finally added ?

@leovarmak the tray option is finally added
I just tested it.
Until a stable release, you have to use the latest code https://github.com/jiahaog/nativefier/blob/master/docs/development.md


Validation depending on fm-disabled true/false

If I set fm-disabled true, the validation is still active. If the the value are NULL or Empty and the picker is disabled, then I still get a validation error.

Well, fm-disabled is only supposed to make the input read-only. It's not really meant to disable validation. I'm not sure if this should be changed.

Sorry for late reply. Now I'm back from holidays.
We also use the UI Bootstrap DatePicker (https://angular-ui.github.io/bootstrap/). I'm not 100% sure but  I thought this DatePicker don't validate if ng-disabled is true.

Okay, maybe I can solve my problem if you add a option to allow empty value (Issue #9.


fix: add reference to worklet lib in doc

What

This PR fixes a missing reference to the react-native-worklets-core library.
Changes

Just minor change in the documentation.

Tested on

Tested on MacBook Pro M1

Related issues

Hey, sorry but this is wrong, Code Scanning API does not require Worklets at all.


Deforum not working/showing in A1111

Installed deforum extension and I cant see it, is it not working?


Add Bishkek State University

IT programs: https://bhu.kg/kafedry/kafedra-matematiki-i-informatiki/
Email confirm at the end of page: https://bhu.kg/#

@radmiry Thank you for your patience while waiting for a review and processing your request. Pull request merged.


[Question] - Offset ViroARPlane

Hi @achuvm,
Is it possible to offset the ViroARPlane?
In my app I get the ground surface via ViroARPlane. After that I do 4 a hit tests on a second surface to average the Y coordinate, which works very well.
As far as I understand the VIRO lib, objects can only be positioned on a ViroARPlane. Hence, I want to place a new ViroARPlane on the second surface so that I can position other elements on top of it.
Is there a way to accomplish that?
Thanks

Hi @dittmarconsulting,
If you have a position in 3D space that you want to use, you can use a ViroNode to anchor elements relative to that position.
Let me know if that's what you're looking for.
Andy

Hi Andy,
All I have is the Y position relative to the original ground plane. Something like that:

while the blue surface is the discovered surface and the pink surface is the hit-tested surface.
I want to further hit-test on the pink surface to position elements on it. Hence, I don't have the 3D points only the Y-coordinate.
I hope that makes sense.

Hi @dittmarconsulting,
This is essentially doing a ray-plane intersection calculation and its formula can be found here: https://www.cs.princeton.edu/courses/archive/fall00/cs426/lectures/raycast/sld017.htm
However, if you add a component to the pink surface (say a ViroSurface), if you add an onClick handler to that component, the function will be invoked like so: onClick(position, source) where position is the [x, y, z] intersection point. This point will be on the pink surface, if you don't want to add a surface, you can always add a ViroSurface with a diffuse color of #ffffff00, thus making an invisible surface (the alpha channel is set to 0).
Let me know if that makes sense,
Andy

Thanks Andy,
I will try that tomorrow and report back to you.
Cheers,
Thomas

That works great but I found the ray-plane intersection calculation interesting as well. I might need that later on.
Thanks Andy


Add BMP test suite

A quasi official BMP test suite can be found here. It would probably be a good idea to integrate this into our tests.
A PNG test suite is also available here

Done as of f8bf526a7e3c869b191c70dc0a5abbbb813800e0


Fixed problem with namespace not emitting properly for optimized name…

…space scenarios.

:white_check_mark: Build ExtendedXmlSerializer <IP_ADDRESS>-iwxpylot completed (commit https://github.com/ExtendedXmlSerializer/home/commit/c131fba026 by @Mike-E-angelo)
Install it by running the following command in Package Manager Console:
Install-Package ExtendedXmlSerializer -Version <IP_ADDRESS>-iwxpylot -Source https://ci.appveyor.com/nuget/extendedxmlserializer-preview

Problems with the above command?  You may be running into this known issue here:
https://github.com/NuGet/Home/issues/7189


[BUG] Memory overhead issue with Zero2

Describe the bug
In Zero Stage2, deepspeed will move all the parameters to cpu first, flatten the data, and then move back to GPU.  In some large model cases, this operation will use 2x memory and leads to OOMs.
Some Explanation
According to PyTorch memory management, when deepspeed move the parameters to cpu,
https://github.com/microsoft/DeepSpeed/blob/cda7c718954e22f22df222872400e29eaf5708c1/deepspeed/runtime/zero/stage2.py#L271
Pytorch reserves theses memory instead of release it. Then deepspeed move the parameters back to GPU here:
https://github.com/microsoft/DeepSpeed/blob/cda7c718954e22f22df222872400e29eaf5708c1/deepspeed/runtime/zero/stage2.py#L295
In some large model cases, pytorch will malloc new GPU memory instead of using the reserved memory in cache pool. This will lead to 2x gpu memory usage, which is improper，and face the risk of OOMs.
To Reproduce
This is a simple demo of pytorch memory management:
import torch
from deepspeed.ops.op_builder import UtilsBuilder

util_ops = UtilsBuilder().load()
flatten_func = util_ops.flatten
print("Finish utils load")

data_1 = torch.zeros(10000, 10000).cuda()
data_2 = torch.zeros(10000, 10000).cuda()
print(f"MA {round(torch.cuda.memory_allocated() / (1024 * 1024 * 1024),2 )} GB \
    Max_MA {round(torch.cuda.max_memory_allocated() / (1024 * 1024 * 1024),2)} GB \
    CA {round(torch.cuda.memory_reserved() / (1024 * 1024 * 1024),2)} GB \
    Max_CA {round(torch.cuda.max_memory_reserved() / (1024 * 1024 * 1024))} GB ")

data_1.data = data_1.data.cpu()
data_2.data = data_2.data.cpu()
print(f"MA {round(torch.cuda.memory_allocated() / (1024 * 1024 * 1024),2 )} GB \
    Max_MA {round(torch.cuda.max_memory_allocated() / (1024 * 1024 * 1024),2)} GB \
    CA {round(torch.cuda.memory_reserved() / (1024 * 1024 * 1024),2)} GB \
    Max_CA {round(torch.cuda.max_memory_reserved() / (1024 * 1024 * 1024))} GB ")
#data = torch.add(data,data_2)
result = flatten_func([data_1, data_2])
result = result.cuda()
print(f"MA {round(torch.cuda.memory_allocated() / (1024 * 1024 * 1024),2 )} GB \
    Max_MA {round(torch.cuda.max_memory_allocated() / (1024 * 1024 * 1024),2)} GB \
    CA {round(torch.cuda.memory_reserved() / (1024 * 1024 * 1024),2)} GB \
    Max_CA {round(torch.cuda.max_memory_reserved() / (1024 * 1024 * 1024))} GB ")

The output is:
MA 0.75 GB     Max_MA 0.75 GB     CA 0.75 GB     Max_CA 1 GB
MA 0.0 GB     Max_MA 0.75 GB     CA 0.75 GB     Max_CA 1 GB
MA 0.75 GB     Max_MA 0.75 GB     CA 1.49 GB     Max_CA 1 GB

After move data_1 and data_2 to cpu, the allocated memory is 0.0GB and these memory is reserved in memory cache. While move the flattened data back to gpu, pytorch malloc new memory and double the memory cache, leads to unnecessary memory allocation.
If the model is 15.9 G, here needs 15.9 *2 = 31.8G memory usage, pytorch won't trigger the OOMs. However, the following NCCL or cublas call will easily trigger the OOMs. However, if the model is 17G, the memory malloc of another 17G will fail. The pytorch will flash the cache by itself, the cached memory will down to 17G, and the OOMs won't happen.
Suggestion
Add torch.cuda.empty_cache() after move data to cpu, flashing the cache manually.
Additional context
According to the code, Zero3 seems meet the same problem.

@PeiqiWang, thanks for reporting this problem. Adapting to pytorch memory management is an ongoing challenge in deepspeed, so we definitely appreciate improvements like these. Do you mind providing a PR for this? Perhaps we could also add some unit tests to compare statistics of actual memory usage to expected memory usage? I think your test case is a great starting point. If you are able to work on this, I can help as much as needed.
One curious observation from your test case (in the last printout line) is that CA=1.49GB > Max_CA= 1GB. I find this confusing. Can you explain why it happens? Can you try these two things?

Reset statistics after each printout using torch.cuda.reset_peak_memory_stats.
Replace your prints with deepspeed's see_memory_usage, that does the same thing. You can access via from deepspeed.runtime.utils import see_memory_usage. You might also need to ensure torch.distributed is initialized.

Thanks!


chore(deps): upgrade dependencies

Upgrades project dependencies. See details in workflow run.

Automatically created by projen via the "upgrade" workflow

Codecov Report

Merging #119 (1674812) into main (2974dfe) will not change coverage.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##             main     #119   +/-   ##
=======================================
  Coverage   83.33%   83.33%
=======================================
  Files           2        2
  Lines         126      126
  Branches       31       31
=======================================
  Hits          105      105
  Misses         21       21

Impacted Files
Coverage Δ

example/src/main.ts
88.46% <100.00%> (ø)

src/index.ts
82.00% <100.00%> (ø)

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 0045676...1674812. Read the comment docs.


Context "/" always assumed

I had a similar problem to #2081  on tomcat using tomcat manager to deploy. I could not choose an application. The problem is that there are hardcoded URIs that assume a top level context ("/") deployment. Tomcat manager defaults context to the name of the war file i.e  trying /pinpoint-web-SNAPSHOT-1.6.0/application.pinpoint returned the applications whereas the drop down was asking for /application.pinpoint which could not be found. The workaround was to deploy to toplevel context /
Context should be configurable

You're right, it's been a known issue for quite a while :(
Still planning to do something about it.

This issue is fixed in the next version(1.6.1).


Proposal for choosing RSS vs. episode JSON

Building on my soapbox thread about how we name things, I want to propose something that could help us keep the RSS feed optimized while also guiding us for how to implement future features.
First, let's ditch the "chapters file" name. It's a file that can hold far more data about an episode than merely chapters. I think we should call it an "episode data file," or something similar.
So then to my point of this proposal: what should go in the episode data file, and what should go in the RSS feed?
I think we can make this easy: anything that's not required until opening/playing an episode should be in the episode data file.
For example, I don't think audiences need to see this information until they open or play an episode, and thus would be best in the episode data file:

Episode notes (#399)
Transcripts (although we have separate files for these)
Chapters
Image galleries and chapter text blocks (#400)
Soundbites

But the following information should be visible before someone opens or plays an episode, and thus would be best in the RSS feed:

Episode title
Episode description
Season numbers and titles
Episode numbers
Episode types (#398)
Episode length
Episode image

And here's information that could fit well in either RSS or episode JSON:

Person tags—Some podcast apps might want to show the people in the episode list, others might not show the people until the episode is opened/played, and others might use people for search.
Episode-level value tags—I actually don't see a need for this to be in the RSS feed except that it can be supported without having to upload a separate episode data file.

I think this starts to reveal a difference between the features, and thus guides where they go. Heavier, more involved features that might be added or edited later (notes, transcripts, chapters, and image galleries or chapter text blocks) are good for the episode data file, where updates can be released without triggering any RSS refreshes, and those updates will be loaded when the episode is played.
On the flip side, the shorter, simpler fields most likely exposed in podcast apps (through browsing, searching, and previewing) are good for the RSS feed and will most likely not be updated after publishing the episode for which these fields are used.
So if the data is needed before opening or playing an episode, it goes in the RSS feed. If it's not needed until opening or playing an episode, it goes in the episode data file (JSON).

This would give the added benefit of refreshing the RSS feed only when a new item (live or episode) or top-level information is updated.

Soundbites would be something else I think best suited for the episode data file.

I couldn't find where I've mentioned this previously, but another way to look at this is that the RSS feed should at least expose the existence of features a podcast app wants (thus keeping the <podcast:chapters> tag in the feed), but these deeper pieces of data can be deferred to the episode data file (like how <podcast:chapters> merely points to the file for chapters).
So stuff like <podcast:notes> would also contain a link to the episode data file that has both the chapters and the notes, and other deeper-experience features could also be exposed in the feed but given details from the episode data file.

First, let's ditch the "chapters file" name. It's a file that can hold far more data about an episode than merely chapters. I think we should call it an "episode data file," or something similar.

I agree that a good principle to follow is that data can go in the same file if it is always downloaded at the same time. But, another good principle to follow is that data can go in the same file if it is updated at the same time or by the same author.
When we consider the authoring tools, it is reasonable that we have different authoring tools for the podcast feed itself, for the transcripts, and for the chapters. The podcast author will likely author the episode title, description and also the show notes, and may leave chapters and transcripts to others, either to 3rd party service or to people in the listener community.
If you put unrelated things into the same file only because they are downloaded at the same time, it may make that data difficult to author and update.

I suspect that case of letting the audience create chapters is going to be extremely rare—maybe only NA-inspired podcasts.
Yes, there are team responsibilities, but I think anyone who creates chapters would also probably be involved in managing the other episode data.
Do we really want separate files for chapters, transcripts, notes, people, soundbites, etc.? Or can we simplify the management of these—both for developers and podcasters—by consolidating as much as possible?

Do we really want separate files for chapters, transcripts, notes, people, soundbites, etc.? Or can we simplify the management of these—both for developers and podcasters—by consolidating as much as possible?

You might be underestimating how much development work goes into just one of these tools that you think combining them into one would make things easier for developers. I have spent the better part of the last year developing a transcription tool, and that is surely taxing enough. There are many intricacies to transcription to make it work well, from the natural language processing, to the editing, and to the UI/UX design. I have no interest to spread myself thin by adding sound bites or podcast metadata or chapters to this. Transcripts are what I specialise in, and I don't have the resources to tackle anything else. Nor would all users necessarily want to be locked into one vendor that does everything.
What we need is the flexibility to allow different vendors to focus on one thing, and do one thing well, and to also develop better integrations between these different vendors so that different parts of the ecosystem can work together and provide consumer choice.
Separate files doesn't preclude someone from developing a monolithic authoring tool, it just makes it possible to choose either a monolithic or a specialised tool. It doesn't matter whether their are multiple files, authoring tools can manage multiple files just fine. I wouldn't put every single little thing in its own file, that's too extreme, but when you look at the authoring process, I think you can see that chapters has its own timeline of a certain type of media, while transcripts has its own timeline of a different kind of media. The authoring tools will be different, and the artifacts produced by these tools should more conveniently be in separate files for better flexibility.

@ryan-lp, for my context, can you please remind me which thing it is that you work on? I apologize that I can't remember.

There are many intricacies to transcription to make it work well, from the natural language processing, to the editing, and to the UI/UX design.

That's a good point, and I think transcripts still have a logical reason to be a separate file.

What we need is the flexibility to allow different vendors to focus on one thing, and do one thing well, and to also develop better integrations between these different vendors so that different parts of the ecosystem can work together and provide consumer choice.

If we consider things like chapters, notes, soundbites, and galleries for a single episode metadata file, I can foresee allowing multiple apps/services to add to that file just like multiple apps/services can already add to MP3s: audio processing, ID3 text and images, dynamic content-insertion, and such.

I can foresee allowing multiple apps/services to add to that file just like multiple apps/services can already add to MP3s: audio processing, ID3 text and images, dynamic content-insertion, and such.

This is an imperfect comparison. MP3s are published in one place, and these services are normally chained together upon publish. It's not possible for multiple services to independently hook into MP3s and reformat them.
Because a transcript is a different file, hosted in a different place, that means that I could have in my own RSS feed a link to a third-party provider of transcripts, and those could be directly provided by that one third party. That isn't possible - or, at least, much harder - with one file containing lots of bits of content.


fix: build errors, linting rules and prettier formatting

This pull request aims to fix the current bugs in the build process and improve the DX by enforcing new eslint & prettier rules.
To fix a bug with reactflow, we also migrated from bun to pnpm for now as this seems to resolve the issue.

Code looks good. Merged into a new branch called dev. From now on, we'll use dev for code changes and main for deployments / full releases.


Looks like app doesn't started

Version
spoof-dpi v0.10.8
Operating System
MacOS Sonoma 14.6.1 (23G93)
How are you running SpoofDPI?
I use spoof-dpi --enable-doh --window-size 0 and spoof-dpi, and it doesn't matter what i use
Description
Hello! I tried to run that app and i can't see next line, that describe "app has been launched successfully". How to fix that?

upd: I updated the app and now use spoofdpi v0.11.1

There was a conflict with antizapret extension


Using Kustomize only works on argo namespace

Summary
I'm not sure whether this is a problem with my approach, kustomize, or argo. I suspect the first, but posting here at least in case it's helpful for others — it took me a while to figure out what the problem was.
Diagnostics
Run this with kustomize, noting the resources are namespaced to argo-2:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: argo-2
# namespace: argo
resources:
- https://github.com/argoproj/argo/manifests/cluster-install?ref=v2.11.3

But this still produces some resources that are namespaced to argo, noting the last line:
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: argo-binding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: argo-cluster-role
subjects:
- kind: ServiceAccount
  name: argo
  namespace: argo  # <- here

Argo server then wouldn't start.

Message from the maintainers:
Impacted by this bug? Give it a 👍. We prioritise the issues with the most 👍.

This is a Kustomize issue yes?

I think you're right.
On reflection, I think kustomize doesn't understand it has to update the namespace in that field, and requires some sort of config like Evan suggested here — which works great for images: https://argoproj.slack.com/archives/C8J6SGN12/p1594134743122500

I think the easiest resolution is to note in the docs that these will only work in the argo namespace with kustomize. Does that sound reasonable? I can put the PR in if so.

Hi, @max-sixty !
Have you already solved this issue and how did you approach it?
I'm facing on the same page and what I've done is cut out ClusterRoleBinding as a resource file and put it to each namespace directory with fixing each namespace value.
I'm not sure my approach is the solution for this because ClusterRoleBinding is a role for the cluster itself and what I've thought is it should not be limited by namespace.
How do think?


OCI transport misinterprets tag

Manpage:
       oci:path:tag
         An image tag in a directory compliant with "Open Container Image Layout Specification" at path.

What I did:
$ skopeo copy docker-daemon:registry.access.redhat.com/rhscl/mariadb-101-rhel7:latest oci:$PWD:asdqwe
Getting image source signatures
Copying blob sha256:8049b1db64b59b9aba69acd631e179b5888f15c0ad4147eacc76edad6f688728
 200.88 MB / 200.88 MB [===================================================] 13s
Copying blob sha256:f2baec9aa44a1f08c82f7d8dd4c3792ef1f128d33a4b0b17621b701b8c4192c2
 10.00 KB / 10.00 KB [======================================================] 0s
Copying blob sha256:f57403cba83946b0b2806b3fc5acbca44037e8813a2cd8638db8bd4001469897
 23.60 MB / 23.60 MB [======================================================] 4s
Copying blob sha256:761d6e9e006befde6e86306cf1efdbe083705865e5c45ef9d53efda041064b4f
 221.79 MB / 221.79 MB [===================================================] 13s
Copying config sha256:bff95184a80e19db4c523922383c25e2a1d08f5d9d7adab2a380e2c170aebdf9
 3.42 KB / 3.42 KB [========================================================] 0s
Writing manifest to image destination
Storing signatures

I expected that the image will be present in $PWD:
$ ls -lha
total 0

But it's not. Instead path and tag were joined and that was the path skopeo used.
skopeo-0.1.31-5.git0144aa8.fc29.x86_64

Thanks for your report.
I’m afraid I can’t reproduce this.  What is the precise value of $PWD? (And in particular, does it contain any colons?)

It's indeed hard to reproduce. When I pick a different image or go to a different dir it works as expected.
$ skopeo copy docker-daemon:registry.access.redhat.com/rhscl/mariadb-101-rhel7:latest oci:$PWD:asdqwe
Getting image source signatures
Copying blob sha256:8049b1db64b59b9aba69acd631e179b5888f15c0ad4147eacc76edad6f688728
 200.88 MB / 200.88 MB [===================================================] 13s
Copying blob sha256:f2baec9aa44a1f08c82f7d8dd4c3792ef1f128d33a4b0b17621b701b8c4192c2
 10.00 KB / 10.00 KB [======================================================] 0s
Copying blob sha256:f57403cba83946b0b2806b3fc5acbca44037e8813a2cd8638db8bd4001469897
 23.60 MB / 23.60 MB [======================================================] 1s
Copying blob sha256:761d6e9e006befde6e86306cf1efdbe083705865e5c45ef9d53efda041064b4f
 221.79 MB / 221.79 MB [===================================================] 12s
Copying config sha256:bff95184a80e19db4c523922383c25e2a1d08f5d9d7adab2a380e2c170aebdf9
 3.42 KB / 3.42 KB [========================================================] 0s
Writing manifest to image destination
Storing signatures
$ ll
total 0
$ echo $PWD
/home/tt/t/skopeo
$ ll ../skopeosdqwe
total 8.0K
drwxr-xr-x. 3 tt tt  19 Jun 26 09:31 blobs
-rw-r--r--. 1 tt tt 235 Jun 26 09:31 index.json
-rw-r--r--. 1 tt tt  31 Jun 26 09:31 oci-layout

Are you using zsh by any chance?
bash# (FOO=/home/tt/t/skopeo; echo $FOO:abcde)
/home/tt/t/skopeo:abcde

zsh# (FOO=/home/tt/t/skopeo; echo $FOO:abcde)
/home/tt/t/skopeobcde
zsh# (FOO=/home/tt/t/skopeo; echo ${FOO}:abcde)
/home/tt/t/skopeo:abcde

Or just confirm the result of the parameter expansion by adding an echo␣ before the skopeo copy… command.

Damn, I would not expect zsh to be so tricky and having different syntax for $FOO. I learnt something today, thank you.

Also found this in the documentation if anyone runs into this:
Parameter Expansion
The braces are required if the expansion is to be followed by a letter, digit,
or underscore that is not to be interpreted as part of name. In addition, more
complicated forms of substitution usually require the braces to be present;
exceptions, which only apply if the option KSH_ARRAYS is not set, are a single
subscript or any colon modifiers appearing after the name, or any of the
characters ‘^’, ‘=’, ‘~’, ‘#’ or ‘+’ appearing before the name, all of which
work with or without braces.

Would it make sense to point to this problem in documentation?

I’m not sure; I don’t think that mentioning this in every place where we use colons as separators is reasonable, and mentioning it once somewhere at the top would probably not be that effective.


Improve Docker builds

Docker build speeds can be sped up significantly.

[x] Cache dependencies (e.g. cargo-chef)
[ ] Move binary to a slim Debian image (will need Diesel too)
[x] Eliminate cargo cache clearing commands.  This was done to reduce image sizes but won't be necessary with the above step.
[ ] Use pre-compiled binaries (e.g. Trunk):

wget -qO- https://github.com/thedodd/trunk/releases/download/v0.16.0/trunk-x86_64-unknown-linux-gnu.tar.gz | tar -xzf-
      chmod +x trunk
      cp trunk ~/.cargo/bin/

Separate Dockerfiles are not necessary either, especially once caching is properly utilized.

If using pre-compiled binaries don't forget to install wget:
RUN apt-get update && apt-get install -y wget && rm -rf /var/lib/apt/lists/*

Threw together a sample that doesn't cache cargo dependencies yet.
FROM rust:latest as base
RUN apt-get update && apt-get install -y wget && rm -rf /var/lib/apt/lists/*
RUN wget -qO- https://github.com/thedodd/trunk/releases/download/v0.16.0/trunk-x86_64-unknown-linux-gnu.tar.gz | tar -xzf- && chmod +x trunk && cp trunk /usr/local/cargo/bin/
RUN rustup target add wasm32-unknown-unknown
RUN wget -qO- https://github.com/rustwasm/wasm-bindgen/releases/download/0.2.84/wasm-bindgen-0.2.84-aarch64-unknown-linux-gnu.tar.gz | tar -xzf- && cp ./wasm-bindgen-0.2.84-aarch64-unknown-linux-gnu/wasm-bindgen /usr/local/cargo/bin/ && chmod +x /usr/local/cargo/bin/wasm-bindgen

FROM base as builder
WORKDIR /usr/src/sumi
COPY . .
RUN trunk build -d dist ./frontend/index.html --release
RUN cargo build --manifest-path ./backend/Cargo.toml --release

FROM rust:latest
WORKDIR /usr/src/sumi
RUN apt-get install -y libpq-dev
RUN cargo install diesel_cli --no-default-features --features postgres
COPY --from=builder /usr/src/sumi/target/release/sumi-backend ./sumi-backend

I'm not sure it is actually worth avoiding using cargo to install trunk and wasm-bindgen as that bit should be cached.

Sample with cargo-chef for caching project (so far only backend) dependencies:
FROM rust:latest as base
RUN cargo install cargo-chef
RUN cargo install trunk
RUN rustup target add wasm32-unknown-unknown

FROM base as planner
WORKDIR /usr/src/sumi
COPY . .
RUN cargo chef prepare --recipe-path recipe.json

FROM base as cacher
WORKDIR /usr/src/sumi
COPY --from=planner /usr/src/sumi/recipe.json recipe.json
RUN cargo chef cook --release --recipe-path recipe.json

FROM base as builder
WORKDIR /usr/src/sumi
COPY . .
COPY --from=cacher /usr/src/sumi/target target
RUN trunk build -d dist ./frontend/index.html --release
RUN cargo build --manifest-path ./backend/Cargo.toml --release

FROM rust:latest
WORKDIR /usr/src/sumi
RUN apt-get install -y libpq-dev
RUN cargo install diesel_cli --no-default-features --features postgres
COPY --from=builder /usr/src/sumi/backend/diesel.toml ./diesel.toml
COPY --from=builder /usr/src/sumi/target/release/sumi-backend ./sumi-backend

This builds trunk and wasm-bindgen as that stage will be cached anyways.  Only the backend dependencies are cached; not sure how to handle frontend yet.  Using the Rust image and building Diesel results in a 1.5GB image as there are no precompiled binaries readily available (https://github.com/diesel-rs/diesel/issues/2379).

Sample with cargo-chef for caching project (so far only backend) dependencies:
FROM rust:latest as base
RUN cargo install cargo-chef
RUN cargo install trunk
RUN rustup target add wasm32-unknown-unknown

FROM base as planner
WORKDIR /usr/src/sumi
COPY . .
RUN cargo chef prepare --recipe-path recipe.json

FROM base as cacher
WORKDIR /usr/src/sumi
COPY --from=planner /usr/src/sumi/recipe.json recipe.json
RUN cargo chef cook --release --recipe-path recipe.json

FROM base as builder
WORKDIR /usr/src/sumi
COPY . .
COPY --from=cacher /usr/src/sumi/target target
RUN trunk build -d dist ./frontend/index.html --release
RUN cargo build --manifest-path ./backend/Cargo.toml --release

FROM rust:latest
WORKDIR /usr/src/sumi
RUN apt-get install -y libpq-dev
RUN cargo install diesel_cli --no-default-features --features postgres
COPY --from=builder /usr/src/sumi/backend/diesel.toml ./diesel.toml
COPY --from=builder /usr/src/sumi/target/release/sumi-backend ./sumi-backend

This builds trunk and wasm-bindgen as that stage will be cached anyways.  Only the backend dependencies are cached; not sure how to handle frontend yet.  Using the Rust image and building Diesel results in a 1.5GB image as there are no precompiled binaries readily available (diesel 2379)

We only need the following folders for the last bit, but do we want to just copy the whole repository in the final image?
COPY ./backend/diesel.toml ./diesel.toml
COPY ./certificates ./certificates
COPY ./dist ./dist
COPY ./backend/migrations ./migrations

COPY --from=builder /usr/src/sumi/target/release/sumi-backend ./sumi doesn't appear to be working.

COPY --from=builder /usr/src/sumi/target/release/sumi-backend ./sumi doesn't appear to be working.

Dist folder wasn't being copied from the builder, need to change COPY ./dist ./dist to COPY --from=builder /usr/src/sumi/dist ./dist.
Need to fix up .dockerignore as well, and can just copy . . on final stage.  It'll copy unused source files but they use minimal space.

A related issue is that some .env variables are still required for building the frontend.

Merged 7ac1b16ec84829cfbeb219ad4bdbc6c387dd8594 which includes the new Dockerfile.  It currently only caches the backend.
Environment variables are now written to the index.html file when the backend is run.  I'll need to figure out a solution that allows de-coupling of the API and web server, though that is currently not possible at this point anyways.

The issue with caching the frontend has to do with Cargo workspace limitations.
We can tell the frontend to target wasm32-unknown-unknown by adding the following in .cargo/config.toml:
[build]
target = "wasm32-unknown-unknown"

However, when building from the root workspace folder, it does not look at this config file for members.  Alternatively, Cargo nightly allows us to force the package target in the member Cargo.toml: https://github.com/rust-lang/cargo/issues/9406.  I tested it and it works great, but I don't want to depend on nightly.
It appears that the only other option is to move frontend out of the workspace (would need to do an exclude or eliminate workspace altogether).

It looks like I might be able to build frontend deps using config.toml while building in the frontend folder.  Sample (not working) Dockerfile that might demonstrate how it could be done when building with Docker:
FROM rust:latest as base
RUN cargo install cargo-chef
RUN cargo install trunk
RUN rustup target add wasm32-unknown-unknown

FROM base as cacher
WORKDIR /usr/src/sumi
COPY ./Cargo.lock ./Cargo.lock
COPY ./frontend/Cargo.toml ./frontend/Cargo.toml
COPY ./backend/Cargo.toml ./backend/Cargo.toml
COPY ./frontend/.cargo ./frontend/.cargo
RUN mkdir ./backend/src && mkdir ./frontend/src && echo 'fn main() { println!("Dummy"); }' > ./backend/src/main.rs && echo 'fn main() { println!("Dummy"); } ' > ./frontend/src/lib.rs
RUN cargo build --release --manifest-path ./backend/Cargo.toml
WORKDIR /usr/src/sumi/frontend
RUN cargo build --release
WORKDIR /usr/src/sumi
RUN rm -rf ./backend/src && rm -rf ./frontend/src

FROM base as builder
WORKDIR /usr/src/sumi
COPY . .
COPY --from=cacher /usr/src/sumi/target target
RUN touch -a -m ./backend/src/main.rs && touch -a -m ./frontend/src/lib.rs
RUN trunk build -d dist ./frontend/index.html --release
RUN cargo build --manifest-path ./backend/Cargo.toml --release

FROM rust:latest
WORKDIR /usr/src/sumi
RUN apt-get install -y libpq-dev
RUN cargo install diesel_cli --no-default-features --features postgres
COPY . .
COPY --from=builder /usr/src/sumi/dist ./dist
COPY --from=builder /usr/src/sumi/target/release/sumi-backend ./sumi

Missed root Cargo.file in last comment.  The following works and built in less than 2 minutes with everything cached:
FROM rust:latest as base
RUN cargo install trunk
RUN rustup target add wasm32-unknown-unknown

FROM base as cacher
WORKDIR /usr/src/sumi
COPY ./Cargo.lock ./Cargo.lock
COPY ./Cargo.toml ./Cargo.toml
COPY ./frontend/Cargo.toml ./frontend/Cargo.toml
COPY ./backend/Cargo.toml ./backend/Cargo.toml
COPY ./frontend/.cargo ./frontend/.cargo
RUN mkdir ./backend/src && mkdir ./frontend/src && echo 'fn main() { println!("Dummy"); }' > ./backend/src/main.rs && echo 'fn main() { println!("Dummy"); } ' > ./frontend/src/lib.rs
RUN cargo build --release --manifest-path ./backend/Cargo.toml
WORKDIR /usr/src/sumi/frontend
RUN cargo build --release
WORKDIR /usr/src/sumi
RUN rm -rf ./backend/src && rm -rf ./frontend/src

FROM base as builder
WORKDIR /usr/src/sumi
COPY --from=cacher /usr/src/sumi/target target
COPY . .
RUN touch -a -m ./backend/src/main.rs && touch -a -m ./frontend/src/lib.rs
RUN trunk build -d dist ./frontend/index.html --release
RUN cargo build --manifest-path ./backend/Cargo.toml --release

FROM rust:latest
WORKDIR /usr/src/sumi
RUN apt-get install -y libpq-dev
RUN cargo install diesel_cli --no-default-features --features postgres
COPY . .
COPY --from=builder /usr/src/sumi/dist ./dist
COPY --from=builder /usr/src/sumi/target/release/sumi-backend ./sumi

I attempted to get it working the same way with cargo-chef without success.  I may try it again as it is a pretty clean solution.

Slightly cleaned up version without touch, as I don't think we need it:
FROM rust:latest as base
RUN cargo install cargo-chef
RUN cargo install trunk
RUN rustup target add wasm32-unknown-unknown

FROM base as cacher
WORKDIR /usr/src/sumi
COPY ./Cargo.lock ./
COPY ./Cargo.toml ./
COPY ./frontend/Cargo.toml ./frontend/Cargo.toml
COPY ./backend/Cargo.toml ./backend/Cargo.toml
COPY ./frontend/.cargo ./frontend/.cargo
RUN mkdir ./backend/src && mkdir ./frontend/src && echo 'fn main() { println!("Dummy"); }' > ./backend/src/main.rs && echo 'fn main() { println!("Dummy"); } ' > ./frontend/src/lib.rs
RUN cargo build --release --manifest-path ./backend/Cargo.toml
WORKDIR /usr/src/sumi/frontend
RUN cargo build --release

FROM base as builder
WORKDIR /usr/src/sumi
COPY --from=cacher /usr/src/sumi/target target
COPY . .
RUN trunk build -d dist ./frontend/index.html --release
RUN cargo build --manifest-path ./backend/Cargo.toml --release

FROM rust:latest
WORKDIR /usr/src/sumi
RUN apt-get install -y libpq-dev
RUN cargo install diesel_cli --no-default-features --features postgres
COPY . .
COPY --from=builder /usr/src/sumi/dist ./dist
COPY --from=builder /usr/src/sumi/target/release/sumi-backend ./sumi

It would be nice to not have to rebuild the both if only one was changed.  Is this because Docker ignores cache after change was detected at COPY . .?

Touch is indeed required, otherwise it will sometimes compile the dummy source from the cacher stage.  Also set Rust version rather than use latest to prevent unexpected build delays.  This would be having to periodically update and test the Docker file though so I may not stick with it.
FROM rust:1.67 as base
RUN cargo install trunk
RUN rustup target add wasm32-unknown-unknown

FROM base as cacher
WORKDIR /usr/src/sumi
COPY ./Cargo.lock ./
COPY ./Cargo.toml ./
COPY ./frontend/Cargo.toml ./frontend/Cargo.toml
COPY ./backend/Cargo.toml ./backend/Cargo.toml
COPY ./frontend/.cargo ./frontend/.cargo
RUN mkdir ./backend/src && mkdir ./frontend/src && echo 'fn main() { println!("Dummy"); }' > ./backend/src/main.rs && echo 'fn main() { println!("Dummy"); } ' > ./frontend/src/lib.rs
RUN cargo build --release --manifest-path ./backend/Cargo.toml
WORKDIR /usr/src/sumi/frontend
RUN cargo build --release

FROM base as builder
WORKDIR /usr/src/sumi
COPY . .
COPY --from=cacher /usr/src/sumi/target target
RUN touch -a -m ./backend/src/main.rs && touch -a -m ./frontend/src/lib.rs
RUN trunk build -d dist ./frontend/index.html --release
RUN cargo build --manifest-path ./backend/Cargo.toml --release

FROM rust:1.67
WORKDIR /usr/src/sumi
RUN apt-get install -y libpq-dev
RUN cargo install diesel_cli --no-default-features --features postgres
COPY . .
COPY --from=builder /usr/src/sumi/dist ./dist
COPY --from=builder /usr/src/sumi/target/release/sumi-backend ./sumi

Touch is needed otherwise it may use the builds made in the cacher stage.  Removed cargo-chef.
I'm pretty satisfied with the current state, but I still would like to get a smaller final image.  That would require building diesel_cli by ourselves.

Touch is needed otherwise it may use the builds made in the cacher stage. Removed cargo-chef.
I'm pretty satisfied with the current state, but I still would like to get a smaller final image. That would require building diesel_cli by ourselves.
FROM rust:latest as base
RUN cargo install trunk
RUN rustup target add wasm32-unknown-unknown
FROM base as cacher
WORKDIR /usr/src/sumi
COPY ./Cargo.lock ./
COPY ./Cargo.toml ./
COPY ./frontend/Cargo.toml ./frontend/Cargo.toml
COPY ./backend/Cargo.toml ./backend/Cargo.toml
COPY ./frontend/.cargo ./frontend/.cargo
RUN mkdir ./backend/src && mkdir ./frontend/src && echo 'fn main() { println!("Dummy"); }' > ./backend/src/main.rs && echo 'fn main() { println!("Dummy"); } ' > ./frontend/src/lib.rs
RUN cargo build --release --manifest-path ./backend/Cargo.toml
WORKDIR /usr/src/sumi/frontend
RUN cargo build --release
FROM base as builder
WORKDIR /usr/src/sumi
COPY . .
COPY --from=cacher /usr/src/sumi/target target
RUN touch -a -m ./backend/src/main.rs && touch -a -m ./frontend/src/lib.rs
RUN trunk build -d dist ./frontend/index.html --release
RUN cargo build --manifest-path ./backend/Cargo.toml --release
FROM rust:latest
WORKDIR /usr/src/sumi
RUN apt-get install -y libpq-dev
RUN cargo install diesel_cli --no-default-features --features postgres
COPY . .
COPY --from=builder /usr/src/sumi/dist ./dist
COPY --from=builder /usr/src/sumi/target/release/sumi-backend ./sumi

Addition of shared broke the Dockerbuild

https://docs.rs/diesel_migrations/latest/diesel_migrations/macro.embed_migrations.html can be used in lieu of diesel_cli.  It reads the migrations at compile time.

Dependency caching is not working very well.  I find myself rebuilding them most of the time without any changes to Cargo.toml or Cargo.lock.

In case I want to continue to use diesel_cli but build in builder stage:
In builder:
RUN cargo install diesel_cli --no-default-features --features postgres

In final image:
RUN apt-get -y update
RUN apt-get install -y libpq-dev
COPY --from=builder /usr/local/cargo/bin/diesel /usr/bin/diesel

libssl.so.1.1 doesn't exist in the bookworm image, but it does in the Rust, so we need to either move it or build it.  It might look like this:
RUN apt-get install -y wget
RUN wget https://www.openssl.org/source/openssl-1.1.1o.tar.gz && tar -zxvf openssl-1.1.1o.tar.gz
WORKDIR ./openssl-1.1.1o
RUN ./config && make && make test
RUN mv libcrypto.so.1.1 /usr/bin/ && mv libssl.so.1.1 /usr/bin/


Refactor ockam transport ... commands into ockam tcp-... commands

Create
We currently have
ockam transport create tcp-connector ...
ockam transport create tcp-listener ...

We want to change to:
ockam tcp-connection create ...
ockam tcp-listener create ...

Without changing their behavior.
List
We currently have
ockam transport list --node n1

This will list both tcp listeners and tcp connection.
We want to change it to
ockam tcp-connection list --node n1

to list connections, and
ockam tcp-listener list --node n1

to list listeners
Delete
We currently have
ockam transport delete --node n1 <TRANSPORT_ID>

which will delete either connections or listeners.
We want to change it to:
ockam tcp-listener delete --node n1 <TRANSPORT_ID>

and
ockam tcp-connection delete --node n1 <TRANSPORT_ID>

Code
The code for these commands is here:
https://github.com/build-trust/ockam/tree/develop/implementations/rust/ockam/ockam_command/src/transport

Related: #3077 #3078

@spacekookie what are your thoughts on the above?

@mrinalwadhwa @spacekookie
How about
ockam tcp connect ...
ockam tcp listen ...
ockam tcp create inlet ...
ockam tcp create outlet ...

This looks cleaner/simpler to me.

@mrinalwadhwa @spacekookie How about
ockam tcp connect ...
ockam tcp listen ...
ockam tcp create inlet ...
ockam tcp create outlet ...

I'd also add:
ockam tcp delete <id>  // (internally it could find out if it's a connector or a listener)

To list connectors and listeners we could either:
ockam tcp listeners
ockam tcp connectors

or to keep it more similar to what we have:
ockam tcp list listeners
ockam tcp list connectors

Just throwing a couple of ideas!

I think the structure we want to have is consistently ockam NOUN VERB otherwise discovery of sub commands becomes a challenging UX... for example in the suggestion from @SanjoDeundiak above the fact that create has sub commands becomes not so obvious

Is it better this way?
ockam tcp connect ...
ockam tcp listen ...
ockam tcp inlet create ...
ockam tcp outlet create ...

In that suggestion, how would we delete/stop connection/listener?

Ok, I see your point, what about
ockam tcp connection create/stop/list
ockam tcp listener create/stop/list
ockam tcp inlet create/stop/list
ockam tcp outlet create/stop/list

Both of these have pluses and minuses - ockam NOUN VERB or ockam NOUN_CATEGORY NOUN VERB.

ockam NOUN VERB is more verbose in the top level help. ockam NOUN_CATEGORY NOUN VERB is less verbose
ockam NOUN VERB is more intuitive/consistent in structure. So people would have to check help less often
Supporting ockam NOUN_CATEGORY NOUN VERB means we'll have some commands that are 1 level deep (ockam node create) and others that are 2 level deep (this could be okay but three levels would really unintuitive).
Adding a hyphen between NOUN_CATEGORY-NOUN can give us a consistent ockam NOUN VERB structure

ockam tcp-connection create/stop/list
ockam tcp-listener create/stop/list
ockam tcp-inlet create/stop/list
ockam tcp-outlet create/stop/list

or
ockam tcp connection create/stop/list
ockam tcp listener create/stop/list
ockam tcp inlet create/stop/list
ockam tcp outlet create/stop/list

@anuvratsingh as you look into this, please note this comment about structure
https://github.com/build-trust/ockam/issues/3077#issuecomment-1206568753

https://github.com/build-trust/ockam/issues/3077#issuecomment-1206568753
So we're going for:
ockam_command/
  src/
    tcp/
      mod.rs
      connection/
        mod.rs
        create.rs
        delete.rs
      listener/
        mod.rs
        create.rs
        delete.rs
      inlet/
        mod.rs
        create.rs
      outlet/
        mod.rs
        create.rs

Thanks @mrinalwadhwa. I will follow the give dir structure, and sorry for confusion. Also.

Can I get some test, as I'm not able to figure out what kind of address transport supports (like /ip4/<IP_ADDRESS>/tcp/6001/{w or w/o(service/api)} doesn't work).
IMO rather than using a bland error(example), it should specify what format it expects. If I do it should, I create a new PR for most of ockam_commands?
What should be done about  CreateTransport and DeleteTransport as it feel to me that both tcp-listener/connection would use the same function. So should I let it be or rename it to something for consistency?

Sure, give me 15 mins or so, I'll write some notes with example.

Here's an example that will currently work:
> ockam node create n1 --api-address "<IP_ADDRESS>:6001"
> ockam node create n2 --api-address "<IP_ADDRESS>:6002"
> ockam transport create tcp-listener "<IP_ADDRESS>:7001" --node n2
> ockam transport create tcp-connector "<IP_ADDRESS>:7001" --node n1
> ockam message send "hello" --to /dnsaddr/localhost/tcp/6001/ip4/<IP_ADDRESS>/tcp/7001/service/uppercase
HELLO

there is lot of improvements possible in this but let's start with getting this to work:
> ockam node create n1 --api-address "<IP_ADDRESS>:6001"
> ockam node create n2 --api-address "<IP_ADDRESS>:6002"
> ockam tcp-listener create "<IP_ADDRESS>:7001" --node n2
> ockam tcp-connection "<IP_ADDRESS>:7001" --node n1
> ockam message send "hello" --to /dnsaddr/localhost/tcp/6001/ip4/<IP_ADDRESS>/tcp/7001/service/uppercase
HELLO

IMO rather than using a bland error(example), it should specify what format it expects (where applicable). If I do it should?

That's a great idea. I think each command should have examples defined in a const and then we can show them on error and we can add them to the HELP_TEMPLATE. I'll create a new issue for it. In the issue we can collect some examples to add and then sure, would love a PR ❤

What should be done about CreateTransport and DeleteTransport as it feel to me that both tcp-listener/connection would use the same function. So should I let it be or rename it to something for consistency?.

We should rename them for consistency to be like the other commands
https://github.com/build-trust/ockam/blob/develop/implementations/rust/ockam/ockam_command/src/node/create.rs#L30
https://github.com/build-trust/ockam/blob/develop/implementations/rust/ockam/ockam_command/src/node/delete.rs#L26
Repetition here is okay as these will evolve to have somewhat separate implementations.

Can unwrap() be replaced with

let multiaddr = match route_to_multiaddr(&r) {
    Some(addr) => addr,
    None => {
        eprintln!("Couldn't convert given address into `MultiAddr`");
        std::process::exit(-1)
    }
};

Yes absolutely!!

We should rename them for consistency to be like the other commands
"""
Repetition here is okay as these will evolve to have somewhat separate implementations.

These are ockam_api's Create/Delete Transport, you might be confusing them with ockam_command's Create/Delete Transport
#[derive(Debug, Clone, Decode, Encode)]
#[rustfmt::skip]
#[cbor(map)]
pub struct CreateTransport<'a> {
    #[cfg(feature = "tag")]
    #[n(0)]
    tag: TypeTag<1407961>,
    /// The type of transport to create
    #[n(1)] pub tt: TransportType,
    /// The mode the transport should operate in
    #[n(2)] pub tm: TransportMode,
    /// The address payload for the transport
    #[n(3)] pub addr: Cow<'a, str>,
}

So tcp_listener/connection both uses this function. But Transport in the name will create confusion, having two functions with different names, but exact same functionality in the same file wouldn't cut it, so what it should be renamed into?

Ah yes, I did confuse them.
I think what you did here is okay for the time being 👍
https://github.com/build-trust/ockam/blob/a71ee8c3e930a056d4e6bf6f12167117baa6f0f6/implementations/rust/ockam/ockam_command/src/util/api.rs#L31-L86

@anuvratsingh I realized you were suggesting something different from what I was:

IMO rather than using a bland error(example), it should specify what format it expects (where applicable). If I do it should, I create a new PR for most of ockam_commands?

Please ahead and create PRs for errors like this one in all commands. That would be a great improvement in errors.
I'll separately think about how to make errors friendlier with examples.

Hey, I created #3143 to further discus this.

Awesome! Thank you for starting the discussion.
I'll leave some notes on it soon.


Remove eras older than Babbage support in transaction build and transaction build-estimate

Changelog
- description: |
    Remove eras older than Babbage support in `transaction build` and `transaction build-estimate`
# uncomment types applicable to the change:
  type:
  # - feature        # introduces a new feature
   - breaking       # the API has changed in a breaking way
  # - compatible     # the API has changed but is non-breaking
  # - optimisation   # measurable performance improvements
   - refactoring    # QoL changes
  # - bugfix         # fixes a defect
  # - test           # fixes/modifies tests
  # - maintenance    # not directly related to the code
  # - release        # related to a new release preparation
  # - documentation  # change in code docs, haddocks...

Context
Requires cardano-api with:

https://github.com/IntersectMBO/cardano-api/pull/625

Checklist

[x] Commit sequence broadly makes sense and commits have useful messages
[x] New tests are added if needed and existing tests are updated. See Running tests for more details
[x] Self-reviewed the diff

would this affect the build-raw command in any way? it should still be possible to do all things with build-raw imo.

@gitmachtl no it's only for build and build-estimate. You can see which commands are removed here: https://github.com/IntersectMBO/cardano-cli/pull/878/files?file-filters[]=.cli&show-deleted-files=true&show-viewed-files=true&w=1
build-raw stays the same as it was.

one question, so in the future if will not be possible to generate "shelley-era" style transactions anymore if you just wanna send lovelaces around, right?

one question, so in the future if will not be possible to generate "shelley-era" style transactions anymore if you just wanna send lovelaces around, right?

We will expose transaction building command that will be parameterized on the era. Currently it will only be able to spend tx inputs and accept update proposals. This is for our QA team to test hardforks from Byron -> $currentEra.


how to get

how to get   data

If you give the input a name, I think you'll get the data as a Multipart entry. It implements Stream<List<int>>, so you can read the file's content from there.


Message from custom validators doesn't take effect

nuxt.config.js
module.exports = {
///
  /*
   ** Plugins to load beforve mounting the App
   */
  plugins: ["~plugins/validate.js"],
///
}

Alright, but how do you add a validation message?

/plugins/validate

	app.validator.extend('date', {
		validate: (value) => /^\d{2}([./-])\d{2}\1\d{2}$/.test(value),
		message: 'The {_field_} should be a valid date',
	});
};```

Still outputs the default error message: "The Start Date value is not valid"

This module doesn't support Vee Validate 3.
Maybe it works that changing message to getMessage.
Vee Validate 2 documents
http://vee-validate.logaretm.com/v2/guide/custom-rules.html#using-the-custom-rule

This module doesn't support Vee Validate 3.
Maybe it works that changing message to getMessage.
Vee Validate 2 documents
http://vee-validate.logaretm.com/v2/guide/custom-rules.html#using-the-custom-rule

That worked! Thanks for the fast reply.
Could you update the docs so it shows this and how to actually create a custom validation?
The only way I was able to find it was by looking at the closed issues since there's no mention of that or my current issue anywhere in the docs.
refer to: https://github.com/lewyuburi/nuxt-validate/issues/18